From 4811d338b8019c6be617afa3bcb14c13cc0c78c7 Mon Sep 17 00:00:00 2001 From: John Mertic Date: Mon, 19 Dec 2011 14:01:37 -0500 Subject: [PATCH] Release 6.3.1 --- data/Link2.php | 46 +- data/Relationships/M2MRelationship.php | 6 +- data/Relationships/One2MBeanRelationship.php | 4 +- data/SugarBean.php | 24 +- download.php | 8 +- files.md5 | 219 +- include/EditView/EditView2.php | 23 - include/MVC/View/SugarView.php | 9 +- include/MVC/View/views/view.detail.config.php | 68 + include/MVC/View/views/view.detail.php | 81 +- include/MVC/View/views/view.popup.php | 11 +- include/MassUpdate.php | 77 +- include/MySugar/tpls/MySugar.tpl | 7 +- include/Pear/HTML_Safe/Safe.php | 5 +- include/Popups/Popup_picker.php | 2 +- include/Popups/tpls/header.tpl | 3 +- include/SearchForm/SearchForm2.php | 75 +- include/Smarty/plugins/block.nocache.php | 7 + .../plugins/function.sugar_email_btn.php | 59 + include/SugarCharts/Jit/js/sugarCharts.js | 3 +- .../Fields/Collection/SugarFieldCollection.js | 2 +- .../SugarFields/Fields/Parent/SearchView.tpl | 2 +- .../SugarObjects/templates/issue/vardefs.php | 1 + include/TemplateHandler/TemplateHandler.php | 4 +- include/database/DBManager.php | 2 +- include/database/MssqlManager.php | 2 + include/database/MysqlManager.php | 2 + include/export_utils.php | 12 +- include/externalAPI/ExternalAPIFactory.php | 2 +- include/javascript/calendar.js | 17 +- include/javascript/overlibmws.js | 9 +- include/javascript/sugar_3.js | 2 +- include/javascript/sugar_grp1.js | 19 +- include/javascript/sugar_grp_emails.js | 87 +- include/javascript/sugar_grp_overlib.js | 9 +- include/javascript/sugar_grp_quickcomp.js | 212 +- .../javascript/sugarwidgets/SugarYUILoader.js | 2 +- include/timezone/timezones.php | 2889 +---------------- include/utils.php | 77 +- include/utils/layout_utils.php | 27 +- include/utils/mvc_utils.php | 2 +- jssource/JSGroupings.php | 2 + .../include/SugarCharts/Jit/js/sugarCharts.js | 5 + .../Fields/Collection/SugarFieldCollection.js | 3 +- .../src_files/include/javascript/calendar.js | 99 +- .../include/javascript/overlibmws.js | 22 +- .../src_files/include/javascript/sugar_3.js | 2 +- .../javascript/sugarwidgets/SugarYUILoader.js | 10 +- modules/ACLRoles/DetailViewBody.tpl | 5 +- modules/ACLRoles/views/view.list.php | 17 +- modules/Activities/Popup_picker.php | 52 +- modules/Administration/PasswordManager.tpl | 2 +- modules/Administration/Updater.php | 2 +- .../metadata/adminpaneldefs.php | 2 +- modules/Administration/updater_utils.php | 24 +- modules/Calls/Call.php | 29 +- modules/Calls/tpls/footer.tpl | 7 +- modules/Calls/vardefs.php | 5 +- modules/Contacts/ContactFormBase.php | 4 +- modules/Contacts/Popup_picker.php | 2 +- modules/Contacts/language/en_us.lang.php | 1 + modules/Contacts/tpls/QuickCreate.tpl | 2 +- modules/Contacts/vardefs.php | 33 +- modules/Currencies/Currency.php | 2 +- modules/Documents/views/view.extdoc.php | 2 +- .../templates/Fields/Forms/coreTop.tpl | 8 +- .../Fields/TemplateDatetimecombo.php | 4 +- modules/EmailMan/tpls/config.tpl | 21 +- modules/EmailTemplates/DetailView.html | 4 +- modules/EmailTemplates/DetailView.php | 2 +- modules/EmailTemplates/EditView.php | 1 + modules/EmailTemplates/EmailTemplate.php | 10 +- modules/Emails/DetailView.php | 1 + modules/Emails/EditViewArchive.html | 4 +- modules/Emails/Email.php | 24 +- modules/Emails/EmailUIAjax.php | 3 + modules/Emails/javascript/EmailUICompose.js | 75 +- modules/Emails/javascript/ajax.js | 10 +- modules/Home/SubpanelEdits.php | 4 +- modules/Import/Importer.php | 9 + modules/Import/tpls/step2.tpl | 2 +- modules/InboundEmail/DetailView.html | 4 +- modules/InboundEmail/EditView.html | 3 +- modules/InboundEmail/InboundEmail.php | 2 +- modules/InboundEmail/language/en_us.lang.php | 4 +- modules/Leads/language/en_us.lang.php | 1 + modules/Leads/vardefs.php | 24 +- modules/Leads/views/view.convertlead.php | 63 +- modules/Meetings/Meeting.php | 15 +- modules/Meetings/metadata/quickcreatedefs.php | 4 +- modules/Meetings/tpls/footer.tpl | 7 +- modules/ModuleBuilder/Module/StudioModule.php | 3 +- .../parsers/views/AbstractMetaDataParser.php | 2 +- .../views/ListLayoutMetaDataParser.php | 8 + .../UndeployedMetaDataImplementation.php | 2 +- modules/ModuleBuilder/tpls/labels.tpl | 2 +- modules/Opportunities/vardefs.php | 42 +- modules/SavedSearch/SavedSearch.php | 6 +- modules/Studio/wizards/RenameModules.php | 12 +- modules/Tasks/Task.php | 18 +- modules/UserPreferences/UserPreference.php | 31 +- modules/Users/GeneratePassword.php | 18 +- modules/Users/User.php | 74 +- modules/Users/controller.php | 1 + modules/Users/language/en_us.lang.php | 1 + modules/Users/vardefs.php | 8 + modules/Users/views/view.list.php | 19 +- soap/SoapHelperFunctions.php | 138 +- soap/SoapSugarUsers.php | 91 +- sugar_version.php | 8 +- tests/data/Bug47731Test.php | 90 + tests/data/Bug49109Test.php | 61 + tests/include/EditView/Bug48570Test.php | 88 + tests/include/MVC/View/views/Bug47572Test.php | 3 +- tests/include/SearchForm/Bug45966Test.php | 4 +- .../{Bug43574.php => Bug43574Test.php} | 3 +- tests/include/database/Bug34547Test.php | 5 +- tests/include/utils/XssTest.php | 16 +- tests/modules/Administration/Bug46317Test.php | 66 + tests/modules/Import/ImportFormsTest.php | 2 + tests/modules/Import/ImporterTest.php | 1 + .../parsers/views/Bug41974Test.php | 66 + tests/modules/Studio/RenameModulesTest.php | 8 +- tests/modules/Users/Bug48555Test.php | 115 + tests/service/Bug47683Test.php | 102 + themes/Sugar5/tpls/footer.tpl | 51 + 126 files changed, 2320 insertions(+), 3606 deletions(-) create mode 100644 include/MVC/View/views/view.detail.config.php create mode 100644 include/Smarty/plugins/block.nocache.php create mode 100644 include/Smarty/plugins/function.sugar_email_btn.php create mode 100755 tests/data/Bug47731Test.php create mode 100755 tests/data/Bug49109Test.php create mode 100755 tests/include/EditView/Bug48570Test.php rename tests/include/SugarCharts/{Bug43574.php => Bug43574Test.php} (96%) create mode 100755 tests/modules/Administration/Bug46317Test.php create mode 100755 tests/modules/ModuleBuilder/parsers/views/Bug41974Test.php create mode 100755 tests/modules/Users/Bug48555Test.php create mode 100755 tests/service/Bug47683Test.php diff --git a/data/Link2.php b/data/Link2.php index ee351246..0e8bd2a4 100644 --- a/data/Link2.php +++ b/data/Link2.php @@ -60,6 +60,8 @@ class Link2 { protected $rows; //any additional fields on the relationship protected $loaded; //true if this link has been loaded from the database protected $relationship_fields = array(); + //Used to store unsaved beans on this relationship that will be combined with the ones pulled from the DB if getBeans() is called. + protected $tempBeans = array(); /** * @param $linkName String name of a link field in the module's vardefs @@ -355,11 +357,18 @@ class Link2 { { $this->beans = array(); $rel_module = $this->getRelatedModuleName(); + //First swap in the temp loaded beans + $this->beans = $this->tempBeans; + $this->tempBeans = array(); + //now load from the rows foreach ($this->rows as $id => $vals) { - $tmpBean = BeanFactory::getBean($rel_module, $id); - if($tmpBean !== FALSE) - $this->beans[$id] = $tmpBean; + if (empty($this->beans[$id])) + { + $tmpBean = BeanFactory::getBean($rel_module, $id); + if($tmpBean !== FALSE) + $this->beans[$id] = $tmpBean; + } } } @@ -479,30 +488,45 @@ class Link2 { } /** + * Add a bean object to the list of beans currently loaded to this relationship. + * This for the most part should not need to be called except by the relatipnship implementation classes. * @param SugarBean $bean * @return void */ public function addBean($bean) { if (!is_array($this->beans)) - $this->getBeans(); - $this->beans[$bean->id] = $bean; + { + $this->tempBeans[$bean->id] = $bean; + } + else { + $this->beans[$bean->id] = $bean; + } + } /** + * Remove a bean object from the list of beans currently loaded to this relationship. + * This for the most part should not need to be called except by the relatipnship implementation classes. + * * @param SugarBean $bean * @return void */ public function removeBean($bean) { - if (!is_array($this->beans)) - $this->getBeans(); - unset($this->beans[$bean->id]); - unset($this->rows[$bean->id]); + if (!is_array($this->beans) && isset($this->tempBeans[$bean->id])) + { + unset($this->tempBeans[$bean->id]); + } else { + unset($this->beans[$bean->id]); + unset($this->rows[$bean->id]); + } } /** + * Directly queries the databse for set of values. The relationship classes and not link should handle this. + * @deprecated * @param $table_name string relationship table * @param $join_key_values array of key=>values to identify this relationship by * @return bool true if the given join key set exists in the relationship table @@ -570,7 +594,7 @@ class Link2 { } /** - * @depricated + * @deprecated * Gets the vardef for the relationship of this link. */ public function _get_link_table_definition($table_name, $def_name) { @@ -582,7 +606,7 @@ class Link2 { } /** - * @depricated + * @deprecated * Return the name of the role field for the passed many to many table. * if there is no role filed : return false * @param $table_name name of relationship table to inspect diff --git a/data/Relationships/M2MRelationship.php b/data/Relationships/M2MRelationship.php index 1a950333..bff711a2 100644 --- a/data/Relationships/M2MRelationship.php +++ b/data/Relationships/M2MRelationship.php @@ -148,10 +148,8 @@ class M2MRelationship extends SugarRelationship if ($this->self_referencing) $this->addSelfReferencing($lhs, $rhs, $additionalFields); - if ($lhs->$lhsLinkName->beansAreLoaded()) - $lhs->$lhsLinkName->addBean($rhs); - if ($rhs->$rhsLinkName->beansAreLoaded()) - $rhs->$rhsLinkName->addBean($lhs); + $lhs->$lhsLinkName->addBean($rhs); + $rhs->$rhsLinkName->addBean($lhs); $this->callAfterAdd($lhs, $rhs, $lhsLinkName); $this->callAfterAdd($rhs, $lhs, $rhsLinkName); diff --git a/data/Relationships/One2MBeanRelationship.php b/data/Relationships/One2MBeanRelationship.php index 899cacaa..8a77619d 100644 --- a/data/Relationships/One2MBeanRelationship.php +++ b/data/Relationships/One2MBeanRelationship.php @@ -76,7 +76,7 @@ class One2MBeanRelationship extends One2MRelationship //Make sure we load the current relationship state to the LHS link if ((isset($lhs->$lhsLinkName) && is_a($lhs->$lhsLinkName, "Link2")) || $lhs->load_relationship($lhsLinkName)) { - $lhs->$lhsLinkName->getBeans(); + $lhs->$lhsLinkName->load(); } $this->updateFields($lhs, $rhs, $additionalFields); @@ -267,6 +267,8 @@ class One2MBeanRelationship extends One2MRelationship $query = ''; $alias = empty($params['join_table_alias']) ? "{$link->name}_rel": $params['join_table_alias']; + $alias = $GLOBALS['db']->getHelper()->getValidDBName($alias, 'alias'); + //Set up any table aliases required $targetTableWithAlias = "$targetTable $alias"; $targetTable = $alias; diff --git a/data/SugarBean.php b/data/SugarBean.php index b372690d..fb18f997 100644 --- a/data/SugarBean.php +++ b/data/SugarBean.php @@ -640,7 +640,7 @@ class SugarBean foreach($this->field_defs as $field=>$value){ if((isset($value['default']) || !empty($value['display_default'])) && ($force || empty($this->$field))){ $type = $value['type']; - + switch($type){ case 'date': if(!empty($value['display_default'])){ @@ -659,6 +659,10 @@ class SugarBean else $this->$field = $value['default']; break; + case 'bool': + if(isset($this->$field)){ + break; + } default: if ( isset($value['default']) && $value['default'] !== '' ) { $this->$field = htmlentities($value['default'], ENT_QUOTES, 'UTF-8'); @@ -1025,7 +1029,8 @@ class SugarBean $fieldDefs= $this->getFieldDefinitions(); if (!empty($fieldDefs)) { - foreach ($fieldDefs as $key=>$value_array) { + foreach ($fieldDefs as $key=>$value_array) + { if ( (isset($value_array['importable']) && (is_string($value_array['importable']) && $value_array['importable'] == 'false' || is_bool($value_array['importable']) && $value_array['importable'] == false)) @@ -1039,7 +1044,20 @@ class SugarBean $importableFields[$key]=$value_array; } } - else { + else + { + //Expose the cooresponding id field of a relate field if it is only defined as a link so that users can relate records by id during import + if( isset($value_array['type']) && ($value_array['type'] == 'relate') && isset($value_array['id_name']) ) + { + $idField = $value_array['id_name']; + if( isset($fieldDefs[$idField]) && isset($fieldDefs[$idField]['type'] ) && $fieldDefs[$idField]['type'] == 'link' ) + { + $tmpFieldDefs = $fieldDefs[$idField]; + $tmpFieldDefs['vname'] = translate($value_array['vname'], $this->module_dir) . " " . $GLOBALS['app_strings']['LBL_ID']; + $importableFields[$idField]=$tmpFieldDefs; + } + } + $importableFields[$key]=$value_array; } } diff --git a/download.php b/download.php index e3739203..8e165264 100644 --- a/download.php +++ b/download.php @@ -43,6 +43,7 @@ if(empty($_REQUEST['id']) || empty($_REQUEST['type']) || !isset($_SESSION['authe } else { $file_type=''; // bug 45896 + require_once("data/BeanFactory.php"); ini_set('zlib.output_compression','Off');//bug 27089, if use gzip here, the Content-Length in hearder may be incorrect. // cn: bug 8753: current_user's preferred export charset not being honored $GLOBALS['current_user']->retrieve($_SESSION['authenticated_user_id']); @@ -65,11 +66,12 @@ else { if(!file_exists('modules/' . $module . '/' . $bean_name . '.php')) { die($app_strings['ERROR_TYPE_NOT_VALID']); } - $focus = BeanFactory::getBean($module, $_REQUEST['id']); - if(!$focus->ACLAccess('view')){ + + $focus = BeanFactory::newBean($module); + if(!empty($focus) && !$focus->ACLAccess('view')){ die($mod_strings['LBL_NO_ACCESS']); } // if - + $focus->retrieve($_REQUEST['id']); // Pull up the document revision, if it's of type Document if ( isset($focus->object_name) && $focus->object_name == 'Document' ) { // It's a document, get the revision that really stores this file diff --git a/files.md5 b/files.md5 index 64bce6e0..7d1859d6 100644 --- a/files.md5 +++ b/files.md5 @@ -1,5 +1,5 @@ 'd3f150e4a5bed444763ebe8a81742a95', './.htaccess' => 'd41d8cd98f00b204e9800998ecf8427e', @@ -590,7 +590,7 @@ $md5_string = array ( './themes/default/css/deprecated.css' => '872d2ee2f45eb595825646cb39a82fab', './themes/default/css/chart.css' => '493edb0e181f685fd595c483d09012fb', './themes/Sugar5/tpls/header.tpl' => '6930c7722816ea42c03fd5868a47d64e', - './themes/Sugar5/tpls/footer.tpl' => '4c6c68079705694c27fd85bc3a5ef38a', + './themes/Sugar5/tpls/footer.tpl' => 'd3acf6288ebc7ee288210afee6b4a7e0', './themes/Sugar5/tpls/_welcome.tpl' => 'c9adf92eb78e5268a40390531cd44249', './themes/Sugar5/tpls/_headerShortcuts.tpl' => '1f6e19fd72259b505b07aaa278da7a82', './themes/Sugar5/tpls/_headerSearch.tpl' => '7547626048dd04c24f45768fc234a9f2', @@ -1170,14 +1170,14 @@ $md5_string = array ( './themes/Sugar5/css/print.css' => '041ba7c460d78a693301c7061139af89', './themes/Sugar5/css/deprecated.css' => '872d2ee2f45eb595825646cb39a82fab', './themes/Sugar5/css/chart.css' => '493edb0e181f685fd595c483d09012fb', - './sugar_version.php' => '013486ca4113bee245c3db2f8b2dd8c6', + './sugar_version.php' => '4b5309cdb78a7068fb44ee2263a2324d', './soap/SoapTypes.php' => 'f38a0ac79874c8a3e126d728bd05e00a', - './soap/SoapSugarUsers.php' => 'aec5ba181325721fa9e6da7e6a787687', + './soap/SoapSugarUsers.php' => '6e59cc7ef0b85c02ac851a43b544cf14', './soap/SoapStudio.php' => '2f424bab502055acae4131df64465e0c', './soap/SoapRelationshipHelper.php' => '4d84e017ea0ebe080809c9099ab5ec30', './soap/SoapPortalUsers.php' => '9afd4d901e901d9c2a1f569167924b02', './soap/SoapPortalHelper.php' => '75ee76c6f6663e49b5c9a029412f7bed', - './soap/SoapHelperFunctions.php' => '08513a10e12d78fe4b1333f26c56462d', + './soap/SoapHelperFunctions.php' => '6f0a6c125b18e424741da19c3e64235e', './soap/SoapErrorDefinitions.php' => '33fda5814773de4025739ab9024f063a', './soap/SoapError.php' => 'b2759317cb609e41ffca9da3274b8142', './soap/SoapDeprecated.php' => '20cfa68a1138e39de3a3c210df7909eb', @@ -1291,7 +1291,7 @@ $md5_string = array ( './modules/Users/login.js' => '7a504860a02eaebfdf1a9a7f9578dcc7', './modules/Users/DetailView.tpl' => 'a2de2642d56437b50e3844536d310bf3', './modules/Users/views/view.wizard.php' => '4568a51d4d3468e84666dc066be7bc83', - './modules/Users/views/view.list.php' => '91fe6e2e3f9a62f0903835f7963129b6', + './modules/Users/views/view.list.php' => '4d92b4a17617e4519aca8e76f20bcc10', './modules/Users/EditView.tpl' => '5b277e0b4fee85906e718c79d3c40936', './modules/Users/tpls/wizard.tpl' => '6d36734b8d0a20806f1f2bd0661bd7cd', './modules/Users/reassignUserRecords.php' => '454d3c28f332ccdcdf25d563f4f7b9ca', @@ -1310,10 +1310,10 @@ $md5_string = array ( './modules/Users/metadata/listviewdefs.php' => '95332a36771e76e5e2edd4cdcaf4f604', './modules/Users/metadata/SearchFields.php' => '110f0aa503a041056fdfd3c20bbb18fc', './modules/Users/EditView.php' => 'fc3a145f61c7b4c7dfcc3338672a2ae8', - './modules/Users/vardefs.php' => '287105d7316c4abffad3d99409e054ca', - './modules/Users/language/en_us.lang.php' => '64dd06d6974f51be55ca7c2d7d272152', + './modules/Users/vardefs.php' => '325c6dae5c0c438b6174ddb8c7fb7bb6', + './modules/Users/language/en_us.lang.php' => '1c79b5edc3183669626f31a101b6ab12', './modules/Users/field_arrays.php' => '3c31038add3a77287e815bc5a7a7a609', - './modules/Users/controller.php' => '80b928a09b15d4c9df8904317880974f', + './modules/Users/controller.php' => 'c9419450efa6fb63dcb70e1cddb2e59e', './modules/Users/authentication/SugarAuthenticate/SugarAuthenticateUser.php' => '406f625eb707435e7710880c7aec779e', './modules/Users/authentication/SugarAuthenticate/SugarAuthenticate.php' => '8cdea5361fff4c312147d2d8334e2f4a', './modules/Users/authentication/SAMLAuthenticate/settings.php' => 'aac61ea76cd0f3d13cdfcfc5e83d18b1', @@ -1338,7 +1338,7 @@ $md5_string = array ( './modules/Users/login.tpl' => '6de6b9ab4e1ddf56997fcfa66ca08ac2', './modules/Users/DetailView.php' => '587eb02095c1ebee3513a13410d6f92e', './modules/Users/login.css' => '12d8483e8f6da8e1a95d54b1b50d0ec9', - './modules/Users/User.php' => 'c64ceb7ee9ffae0987b90356ebe37027', + './modules/Users/User.php' => 'ff1f35f58b628ea343734c1a5885b2e4', './modules/Users/SaveTimezone.php' => 'c12559f852fb8d89a269814e808dadc5', './modules/Users/SaveSignature.php' => '2f8bfdb6f88dce867100a761366d0391', './modules/Users/SetTimezone.tpl' => 'f76851063b5129bcae41e7bef962636f', @@ -1354,7 +1354,7 @@ $md5_string = array ( './modules/Users/Error.php' => '62f9d5788e4663b84e030c4eaba3e8b3', './modules/Users/Logout.php' => '5c819754b90e62e2f1739971144b01a6', './modules/Users/Login.php' => 'd8459a87d2e6c7d654a6d223972fb466', - './modules/Users/GeneratePassword.php' => 'cd550ab172dc3dcbb715221ec97469a0', + './modules/Users/GeneratePassword.php' => '72e7901240d0d5d8138178c4d418e699', './modules/Users/Forms.php' => '90b591c94157299485166b686f6a977d', './modules/Users/Changenewpassword.tpl' => '65a02130fbb6caabd2b662ca70bae9fd', './modules/Users/Changenewpassword.php' => 'bd77852c3df5a6509c0207f0cddeaf2e', @@ -1365,7 +1365,7 @@ $md5_string = array ( './modules/UserPreferences/index.php' => '993e1ee9cc1e95be441522e211e05429', './modules/UserPreferences/field_arrays.php' => 'd109e5473ca3fe844fcc8787c47b3561', './modules/UserPreferences/controller.php' => '6022bf66d58876257bf96523b5c01953', - './modules/UserPreferences/UserPreference.php' => 'fab4ba13ad4684781c516eb290463d45', + './modules/UserPreferences/UserPreference.php' => '51af3e98870659eeb0829f745bade69f', './modules/UpgradeWizard/upgradeWizard.js' => '3ca941da793c30a8a4e913624071166e', './modules/UpgradeWizard/UpgradeRemoval.php' => 'f8f4d6102a0cdc17d48444372a6ed2d8', './modules/UpgradeWizard/uw_main.tpl' => '898039c49451aefbef0bfdece6c43f3b', @@ -1443,7 +1443,7 @@ $md5_string = array ( './modules/Tasks/language/en_us.lang.php' => 'a8037f29afc2f04ad7e731920caf2a1b', './modules/Tasks/field_arrays.php' => '9869facdbe32bc0551b9ec7429671848', './modules/Tasks/TasksQuickCreate.php' => '8df028b5cde8de961c6d94574f3c860e', - './modules/Tasks/Task.php' => '742d9fd5903273df014f390ccc7c0ee1', + './modules/Tasks/Task.php' => 'c30c1475d8580019ae347252122f5741', './modules/Tasks/Save.php' => '87926f8aefc476572a32c4af581298af', './modules/Tasks/MyTasks.php' => 'b8da620a87eee61e0b6b50421eb9590b', './modules/Tasks/MyTasks.html' => '58c3695222bf9a745f2b2f4f5d52ae90', @@ -1486,7 +1486,7 @@ $md5_string = array ( './modules/Studio/studiotabgroups.js' => '0914ad3b4384826e6a49bf231b2e4495', './modules/Studio/ygDDListStudio.js' => '2d3316c51f34ee87cc887b41e6d3539f', './modules/Studio/wizards/RenameModules.tpl' => 'ecd77fe3760860b7f1457425be052dc8', - './modules/Studio/wizards/RenameModules.php' => 'b68f3c939efc33d17c7756c882aff215', + './modules/Studio/wizards/RenameModules.php' => '91b2967fe3f9e0071552aaf99db4635b', './modules/Studio/wizards/StudioWizard.php' => '4309aae3b3614cf7cf2d160d52c3944f', './modules/Studio/wizards/EditDropDownWizard.php' => '47997b18f2d0eed6613e4e8ee3bec245', './modules/Studio/wizard.php' => '1eb1fe073c5a846796636d94ce0a246c', @@ -1539,7 +1539,7 @@ $md5_string = array ( './modules/SavedSearch/SearchForm.html' => 'b459847986a5a78033744d2ac2fd83b8', './modules/SavedSearch/SavedSearchSelects.tpl' => 'b7caafc55f6366f78048882c66d6889e', './modules/SavedSearch/SavedSearchForm.tpl' => 'e1b30f7f970a53e8fbdf59c56594992a', - './modules/SavedSearch/SavedSearch.php' => 'aa52c982c4b6991d0c2c3d3510c62264', + './modules/SavedSearch/SavedSearch.php' => '2c7b4678b22585a0896494c9c66613fe', './modules/SavedSearch/Menu.php' => 'dc4c7a6e251fafed9e02fdedeadb6de1', './modules/SavedSearch/ListView.php' => '2a0fb2b9472a48ec7562f72d423ae925', './modules/Roles/views/view.list.php' => '1fa66e2cc62b833309892227d4cd64bb', @@ -1700,7 +1700,7 @@ $md5_string = array ( './modules/OptimisticLock/Forms.php' => '2a29f4ec451b7e19e8212eac749fd709', './modules/Opportunities/views/view.edit.php' => 'e992ed0d268cf0c4e20fa8c1e1cb02e7', './modules/Opportunities/views/view.detail.php' => '1ed7886c066a84021d61e26290acc502', - './modules/Opportunities/vardefs.php' => '23449691636e3266a9fa1d44d636ad59', + './modules/Opportunities/vardefs.php' => 'a2b674f719870f76ac7b6bb8cc349329', './modules/Opportunities/tpls/QuickCreate.tpl' => '09a5f1c1af35584137b310e1c1dfc7b7', './modules/Opportunities/metadata/subpanels/default.php' => '926a5aa70884e0bbfcfbe912e6b71248', './modules/Opportunities/metadata/subpanels/ForEmails.php' => '0051b80b6a325af4c85c05791d535b33', @@ -1807,7 +1807,7 @@ $md5_string = array ( './modules/ModuleBuilder/tpls/main.tpl' => '8862d14b4c6989a99013640a9a1f4c02', './modules/ModuleBuilder/tpls/listView.tpl' => '09c1dadffff890544d763bfcd0243465', './modules/ModuleBuilder/tpls/layoutView.tpl' => '7f4500a6dcc10110b1d79dca9255ca1b', - './modules/ModuleBuilder/tpls/labels.tpl' => '61817dbfb8f5e2f55b1d1f32d0fd1e4f', + './modules/ModuleBuilder/tpls/labels.tpl' => '13cda3edaf0a80a65e6bcf26a83cfce8', './modules/ModuleBuilder/tpls/index.tpl' => 'f8702ebe45250bb9e72e534e63294b07', './modules/ModuleBuilder/tpls/includes.tpl' => '308f7703d505391d03d58b592c919152', './modules/ModuleBuilder/tpls/history.tpl' => '39442d3ac52f747e0b6773e7e6dc72f3', @@ -1837,20 +1837,20 @@ $md5_string = array ( './modules/ModuleBuilder/tpls/ListEditor.css' => 'b60cccd225a86e6b7b48aa3d547b58dc', './modules/ModuleBuilder/tpls/LayoutEditor.css' => 'ef1c9fed0b1d1146247dac2916a3f771', './modules/ModuleBuilder/parsers/views/UndeployedSubpanelImplementation.php' => 'c1f61c27c48ed83a04231cacf2cbadfd', - './modules/ModuleBuilder/parsers/views/UndeployedMetaDataImplementation.php' => '87c39c5818423ac119f20c9f44b11de8', + './modules/ModuleBuilder/parsers/views/UndeployedMetaDataImplementation.php' => 'ddd57d4dc9f654a08479389f64eaed8d', './modules/ModuleBuilder/parsers/views/SubpanelMetaDataParser.php' => 'a658fb64f32eae269f0aeec0cc271f22', './modules/ModuleBuilder/parsers/views/SearchViewMetaDataParser.php' => '038ed5309b7968dcad03255a2baa3c99', './modules/ModuleBuilder/parsers/views/PopupMetaDataParser.php' => '7e61b8b2042be68aa084f97950140e18', './modules/ModuleBuilder/parsers/views/MetaDataParserInterface.php' => '64976a9f4a851bbb2e597e8a9cbb68b6', './modules/ModuleBuilder/parsers/views/MetaDataImplementationInterface.php' => '3bb6fa231da65dbb1369b536858818f1', - './modules/ModuleBuilder/parsers/views/ListLayoutMetaDataParser.php' => '83a8d6b075607d7fe9c0bbd0e7273ebf', + './modules/ModuleBuilder/parsers/views/ListLayoutMetaDataParser.php' => '8a6696e272bc00c6d4de88ce9a42c95d', './modules/ModuleBuilder/parsers/views/HistoryInterface.php' => 'c1583f28fddb4c33c920f92a20e2c935', './modules/ModuleBuilder/parsers/views/History.php' => '05dac0ef2a4568eab65e4bc7e51005f6', './modules/ModuleBuilder/parsers/views/GridLayoutMetaDataParser.php' => '6535513b80b93a5e68aba1d160d5dbe9', './modules/ModuleBuilder/parsers/views/DeployedSubpanelImplementation.php' => '24a957dc22e693e21dd18541e3584807', './modules/ModuleBuilder/parsers/views/DeployedMetaDataImplementation.php' => 'f038a0d67cfb341d627e5a1c9e8607c3', './modules/ModuleBuilder/parsers/views/DashletMetaDataParser.php' => '8fca44b08dc035a1d23463b26344df72', - './modules/ModuleBuilder/parsers/views/AbstractMetaDataParser.php' => '720c63061f2e8be613423dd9a706dfbd', + './modules/ModuleBuilder/parsers/views/AbstractMetaDataParser.php' => '30a13393f2716157b811ec3dd9c29bc7', './modules/ModuleBuilder/parsers/views/AbstractMetaDataImplementation.php' => '96163c88a133c445b47980379e569b4d', './modules/ModuleBuilder/parsers/relationships/UndeployedRelationships.php' => '1cd3096126ec4b8e4ea3a4cd83c474bb', './modules/ModuleBuilder/parsers/relationships/RelationshipsInterface.php' => '5673bbca1c4d58866069201f7276f957', @@ -1887,7 +1887,7 @@ $md5_string = array ( './modules/ModuleBuilder/action_view_map.php' => 'fd1e0b87f5d325f06b2b743afa057999', './modules/ModuleBuilder/Module/StudioTree.php' => 'e29fed9b1f81766bda975d938eecd3ec', './modules/ModuleBuilder/Module/StudioModuleFactory.php' => '5860a0e60d39a69303a39df4ea188336', - './modules/ModuleBuilder/Module/StudioModule.php' => '54f838b9f6708e30570151a23bd71a85', + './modules/ModuleBuilder/Module/StudioModule.php' => 'c6737936989ae5bba8d913a6aee54879', './modules/ModuleBuilder/Module/StudioBrowser.php' => '6da2f872826086caad4759599f0f3203', './modules/ModuleBuilder/Module/MainTree.php' => '43824a340ebbce175fac3b60b7641efb', './modules/ModuleBuilder/Module/DropDownTree.php' => 'ab1f94e57c7ec0f1f2b0a37fa158eab5', @@ -1928,7 +1928,7 @@ $md5_string = array ( './modules/Meetings/tpls/extMeetingNotInvited.tpl' => '5d05c208909ebfb8b425c4a9a57265bd', './modules/Meetings/tpls/extMeetingNoStart.tpl' => '01740b23224ca1e36be97c81091acc53', './modules/Meetings/tpls/header.tpl' => 'e443fd4d94fddde4cab75fc0ca33c863', - './modules/Meetings/tpls/footer.tpl' => 'aba353d53e50a693a0254e285d845408', + './modules/Meetings/tpls/footer.tpl' => '953d0d6ca9edacca9576c17232f5dd42', './modules/Meetings/tpls/QuickCreate.tpl' => 'ef16b5ef915fdd888cc0d0a7691f6516', './modules/Meetings/metadata/subpanels/default.php' => '10c878084547f96b0e487de6cb969409', './modules/Meetings/metadata/subpanels/ForHistory.php' => 'bd0675998ba7a3a95268fa5233fe1121', @@ -1936,7 +1936,7 @@ $md5_string = array ( './modules/Meetings/metadata/subpaneldefs.php' => '0c0c904e87130730c0757e495ecf2ea8', './modules/Meetings/metadata/studio.php' => '9597aef6f1a776f39e0515231425a883', './modules/Meetings/metadata/searchdefs.php' => '2bc913f3f67b7fa29cdab7e2623de325', - './modules/Meetings/metadata/quickcreatedefs.php' => 'c41c1cd9dddb36277389dba8327b869a', + './modules/Meetings/metadata/quickcreatedefs.php' => '95b66c1a1e2b1236bfd50200c5598bd6', './modules/Meetings/metadata/listviewdefs.php' => '5973b2f25ca38dba5645037276ee0b9d', './modules/Meetings/metadata/editviewdefs.php' => 'fe280045a7c13e902b91bc3c6a6310fd', './modules/Meetings/metadata/detailviewdefs.php' => '7b516d8760f5116e112601c34b6a0e66', @@ -1950,7 +1950,7 @@ $md5_string = array ( './modules/Meetings/Menu.php' => '20e69d57b747825c30e86987d72efb0b', './modules/Meetings/MeetingsQuickCreate.php' => '818e55e261c5e74cb385f835311944fa', './modules/Meetings/MeetingFormBase.php' => 'b61408cf610f01009b415060e2ba6ada', - './modules/Meetings/Meeting.php' => '1707f2fecd90df66f7eda626525da7d8', + './modules/Meetings/Meeting.php' => 'aa22b30e5e281481819ba5970a043062', './modules/Meetings/Dashlets/MyMeetingsDashlet/MyMeetingsDashlet.php' => 'e2d3d7d2d6d3c590953d86f3013ed59b', './modules/Meetings/Dashlets/MyMeetingsDashlet/MyMeetingsDashlet.meta.php' => 'e47f5ffe63b5a0fa7d7de49e41602428', './modules/Meetings/Dashlets/MyMeetingsDashlet/MyMeetingsDashlet.data.php' => '93411ffd890d557e5f97ed68b946f097', @@ -1978,8 +1978,8 @@ $md5_string = array ( './modules/MailMerge/DetailView.php' => '9657298f898e97dbc221c34f861a0f98', './modules/Leads/Lead.js' => '63dad96eb6c7c57fbb34dda409f790ce', './modules/Leads/views/view.list.php' => 'd716f0c0d6e4bb6118c811c0bbcd903c', - './modules/Leads/views/view.convertlead.php' => '94ba8d4d5c2950100b36dba017095195', - './modules/Leads/vardefs.php' => '7ee82ca743d437a322cc1dc3bb40b0ea', + './modules/Leads/views/view.convertlead.php' => 'c0dda0f7a412864943c463ee918707e8', + './modules/Leads/vardefs.php' => '8c9de3ff43f20623ffb7ea3189c7cbe9', './modules/Leads/tpls/QuickCreate.tpl' => 'f68b199a7a4b23111fa98042b0670859', './modules/Leads/tpls/DetailViewHeader.tpl' => 'ff0301b5f7beef3671e1174a249048ba', './modules/Leads/tpls/ConvertLeadHeader.tpl' => '61fc0715b9ebf43c569e137e1d4270ee', @@ -2000,7 +2000,7 @@ $md5_string = array ( './modules/Leads/metadata/convertdefs.php' => '39e039d6cac50434b4672c21abd6d2c0', './modules/Leads/metadata/additionalDetails.php' => '8f933991ab86127ea4bce9ed1218f939', './modules/Leads/metadata/SearchFields.php' => 'ca3bf623903e74e23acd6ae5fb513952', - './modules/Leads/language/en_us.lang.php' => 'd38e3ff4475d0dad923d6e61cb27585f', + './modules/Leads/language/en_us.lang.php' => '0de619d93234df589b7c5782435d30da', './modules/Leads/field_arrays.php' => '135b59040b104dad63a0a595f5d8fc39', './modules/Leads/controller.php' => '4f230a75d02961b11b316c3f2acb5d1d', './modules/Leads/action_view_map.php' => 'f19d9f4f278403b0ea1af3fcf0cb9087', @@ -2028,7 +2028,7 @@ $md5_string = array ( './modules/LabelEditor/EditView.html' => '5c869e234bee20cc12984742cdea69c3', './modules/InboundEmail/InboundEmail.js' => '7c0bd299459d2db899895795d9ead2ac', './modules/InboundEmail/vardefs.php' => 'f7aa1b4be9efb3918e9565b85f8ee55c', - './modules/InboundEmail/language/en_us.lang.php' => '39b2d83673f787eb77be842dd8d972b4', + './modules/InboundEmail/language/en_us.lang.php' => 'd7a8eac82189a57cd15acdaa15d919a4', './modules/InboundEmail/index.php' => '1aa418a33d81f3df849d7d7234438c2a', './modules/InboundEmail/field_arrays.php' => '7ef33a5b89e97313772104505043fff0', './modules/InboundEmail/View.html' => '42dfabb40c585bf030af5885704ba056', @@ -2040,12 +2040,12 @@ $md5_string = array ( './modules/InboundEmail/ListView.php' => 'c610da376126d3bb44f7dc780a6d13d7', './modules/InboundEmail/ListView.html' => '7e5d8d426d0a6833fe5caa3fb3ccc471', './modules/InboundEmail/InboundEmailTest.php' => '702038f3171c1bb612d4fff7cf0f765e', - './modules/InboundEmail/InboundEmail.php' => '0f2e98db1f8f4388111f735b93326f2e', + './modules/InboundEmail/InboundEmail.php' => 'f5563717596ca76a030deceb46412af7', './modules/InboundEmail/EditView.php' => 'aef594532aa6ab776c4b3cc30b20a04d', - './modules/InboundEmail/EditView.html' => 'f3e57eeaa0b27d8fe3389d5c6923fdc5', + './modules/InboundEmail/EditView.html' => 'c65068e402288cd381c058a9818a0951', './modules/InboundEmail/EditGroupFolder.php' => '6c6ba0d835901e8e9a8e87056d0479b6', './modules/InboundEmail/DetailView.php' => 'f838087f2c73b83a2deee755475be859', - './modules/InboundEmail/DetailView.html' => '2ac5191bfc333ddebc83f769a73c744f', + './modules/InboundEmail/DetailView.html' => '5d1cdf5af2c91092f5dc125ac1f3d440', './modules/InboundEmail/Delete.php' => '682ed772ec388482dbe7a599e9e56104', './modules/Import/views/view.extdupcheck.php' => 'ef219a2512d7a56af80c76eec96e20fa', './modules/Import/views/view.dupcheck.php' => '5fa4c8d17dfd4e93938b86710538e158', @@ -2068,7 +2068,7 @@ $md5_string = array ( './modules/Import/tpls/confirm.tpl' => 'f536633e92c2061adb5013ff098de472', './modules/Import/tpls/undo.tpl' => 'f5da3928952e280ef676d0a636f2a00c', './modules/Import/tpls/step3.tpl' => 'e6ac3444b8ea69b0c774678e251fb8d4', - './modules/Import/tpls/step2.tpl' => 'ada240b8cca49837c44b4fe0a48608c9', + './modules/Import/tpls/step2.tpl' => 'e161fc71b5c27c00884cef10100e0330', './modules/Import/tpls/step1.tpl' => '109257a262787a66f6c8281a0bc3dedd', './modules/Import/tpls/last.tpl' => '3a18785f149fbbccb2210d431bcbd9c3', './modules/Import/tpls/error.tpl' => '94a7160a75fc6218278f5458e1267c4c', @@ -2089,14 +2089,14 @@ $md5_string = array ( './modules/Import/controller.php' => 'd207e93af42767a33a64de6776565d23', './modules/Import/UsersLastImport.php' => '1f59a593096195b38c2357763cb98963', './modules/Import/ImportFileSplitter.php' => 'f64c6d4e292c45f4d806da5d2300d14f', - './modules/Import/Importer.php' => 'c7166d4de7b4d906715c23f548b0e3e9', + './modules/Import/Importer.php' => '6ebbb252e4c0a355c2ad2d16c6f3b691', './modules/Import/ImportFieldSanitize.php' => 'c23abb76dab9912fddbd16d6fae3ab22', './modules/Import/ImportDuplicateCheck.php' => '4722b6518e461918ca4e2e5fc098a99f', './modules/Import/ImportCacheFiles.php' => '99071645e01b89c881173702b5108a15', './modules/Import/Forms.php' => 'cc037506b85a0440ddd1415f9978ee0f', './modules/Home/about.js' => 'af9365ee4df93485a1e9cb89752d4e85', './modules/Home/action_view_map.php' => '7562b37c19b699d7cd79efaa6ef17205', - './modules/Home/SubpanelEdits.php' => '1adfa8d02c98424459fb35772a190b88', + './modules/Home/SubpanelEdits.php' => '6f8c6722f96ef9554a3c547169390d96', './modules/Home/views/view.additionaldetailsretrieve.php' => '153cfd5b0056493551f0e8a395cfcf8b', './modules/Home/views/view.modulelistmenu.php' => '799bca31c2b99c8be86c3c53712c802a', './modules/Home/views/view.list.php' => 'b1213448edbef90a40061dbdfb6e432c', @@ -2250,9 +2250,9 @@ $md5_string = array ( './modules/Emails/javascript/displayOneEmailTemplate.js' => '2674507d7e9e7486d73c8706916ff1d0', './modules/Emails/javascript/composeEmailTemplate.js' => 'ea1469e2026811ebf263d49063971fc8', './modules/Emails/javascript/complexLayout.js' => 'fbcdb2d153ed8d495d095067ac792a47', - './modules/Emails/javascript/ajax.js' => 'c79464f6d7676ebe7b738945b18784b7', + './modules/Emails/javascript/ajax.js' => '56399c6ee252086c5b7ea7eb5566d39e', './modules/Emails/javascript/EmailUIShared.js' => 'df6ecb98436f9ca8186106b9a4496dbf', - './modules/Emails/javascript/EmailUICompose.js' => 'c175292f2edb323c71d7dc4de88d082f', + './modules/Emails/javascript/EmailUICompose.js' => '5bd3c2f94f912d098f50895e2200d2be', './modules/Emails/javascript/EmailUI.js' => 'd75abb223151ed6ca82de6d342464cf0', './modules/Emails/javascript/Email.js' => '0d9490a7067d54a473d33999e04876a6', './modules/Emails/index.php' => '6aff206a9821e1259275602982d900b8', @@ -2295,14 +2295,14 @@ $md5_string = array ( './modules/Emails/Grab.php' => '1a2ae928706722eb9f4c7ffb4d975d88', './modules/Emails/GenerateQuickComposeFrame.php' => '9fa2162d2750f8dbc20a705909c353b3', './modules/Emails/Save.php' => 'a705062f91571a2606e9f4362493fbda', - './modules/Emails/EmailUIAjax.php' => 'b9cadacaad8d63947790f8baa442eebb', + './modules/Emails/EmailUIAjax.php' => '1d1212ed72a6037cfa96cf7f4d2366cb', './modules/Emails/EmailUI.php' => '4a84724f5f101fcd4e9f2e5a4ba360e5', './modules/Emails/EmailUI.css' => '6f93388627148bdc54c9458c434d7ec1', - './modules/Emails/Email.php' => '5ecad39b7090543d1f45be10159cb056', - './modules/Emails/EditViewArchive.html' => '2d88389d7dbe10281c731cc757373cea', + './modules/Emails/Email.php' => 'c176dc74b37355e64445736423146137', + './modules/Emails/EditViewArchive.html' => 'd4a92e9cf15b6b3ef68c8bca3f47f544', './modules/Emails/EditView.php' => '6db8f3c72668df76eb17d37b3a32de23', './modules/Emails/DetailViewSent.html' => '7b12fdf44a8a0acde69e36fa0341e149', - './modules/Emails/DetailView.php' => 'a6ca96cb85ff388b617d17c23f4dc777', + './modules/Emails/DetailView.php' => '92e0b7cb7555d7a93d7fe321304cd82b', './modules/Emails/DetailView.html' => 'ec09f0f79d1361e5c6a372551ae55a9e', './modules/Emails/Delete.php' => 'c341a5874f8b3362521bffacdf84ceb4', './modules/Emails/Dashlets/MyEmailsDashlet/MyEmailsDashlet.php' => '52291d5b37580d7039d5a07d8cf8b21a', @@ -2322,12 +2322,12 @@ $md5_string = array ( './modules/EmailTemplates/PopupDocumentsCampaignTemplate.html' => '8efe463d65710e6c6b5439235fd0b2c3', './modules/EmailTemplates/Menu.php' => '4edf25b2e9851ed5f2e8e44bb69b6863', './modules/EmailTemplates/EmailTemplateFormBase.php' => '3b0ba4396d31f3af7b5d8072712e1d45', - './modules/EmailTemplates/EmailTemplate.php' => 'a1b2da557cb1680e5386da341ab42cbb', + './modules/EmailTemplates/EmailTemplate.php' => 'bf8e22d351271ccd11ffd53c52d9a335', './modules/EmailTemplates/EditViewMain.html' => '2524b1d15a0f49b2ae59a068ae0e49af', - './modules/EmailTemplates/EditView.php' => 'a569044944fcf405855bcaef16027399', + './modules/EmailTemplates/EditView.php' => '82976391f757693cb1972fc1d0cfd733', './modules/EmailTemplates/EditView.html' => '8242a089eaf7b6cac93029f487203870', - './modules/EmailTemplates/DetailView.php' => 'db07295b7aa677874acba993c6f092fc', - './modules/EmailTemplates/DetailView.html' => '45aae47f2d182de3335e72abe975e7f2', + './modules/EmailTemplates/DetailView.php' => 'ff3928ea50563b47b904e95253bcb24e', + './modules/EmailTemplates/DetailView.html' => 'fc8895e03c39f463e3da286294a5f461', './modules/EmailTemplates/Delete.php' => '954d8dbbe3ee5c5dcf65b3da9eba54ab', './modules/EmailTemplates/CheckDeletable.php' => '6ead90762f5f5ffa27c60af51a5c65d6', './modules/EmailTemplates/AttachFiles.php' => 'c61e8930cfed0b005b0801b107415ab9', @@ -2354,7 +2354,7 @@ $md5_string = array ( './modules/EmailMan/views/view.config.php' => '57b38635350c47bd0fe995348d940c9b', './modules/EmailMan/views/view.campaignconfig.php' => '929db4bba124ff947bc67ee3599341c6', './modules/EmailMan/vardefs.php' => '421a919a88b6838bcb76a809056651e2', - './modules/EmailMan/tpls/config.tpl' => '192969ffaa07b1480dde80d5cfd4b4c2', + './modules/EmailMan/tpls/config.tpl' => '846209784fcd4ed6097b22560b2e2ee2', './modules/EmailMan/tpls/campaignconfig.tpl' => '44623eab12e9006cae2d08f74f3394f9', './modules/EmailMan/testOutboundEmail.php' => '30691acf8389d15dc1a5013b9aff2361', './modules/EmailMan/subpanels/default.php' => '38725d5f2e105fd9167b6395d81d23d4', @@ -2396,7 +2396,7 @@ $md5_string = array ( './modules/DynamicFields/templates/Fields/TemplateEncrypt.php' => 'af753a4fbd9cacd77fcf7b7b71b6d0e7', './modules/DynamicFields/templates/Fields/TemplateEmail.php' => '220b34f505843588d7bb2621bfb628bb', './modules/DynamicFields/templates/Fields/TemplateDecimal.php' => 'd07945e751bc435950555006d5eae44e', - './modules/DynamicFields/templates/Fields/TemplateDatetimecombo.php' => '28d0493cc4a3b1760eb4bbd7a2d0096e', + './modules/DynamicFields/templates/Fields/TemplateDatetimecombo.php' => '5bae24a63482c688fb78b72fb43d25e6', './modules/DynamicFields/templates/Fields/TemplateDate.php' => '1398ab4915c4797587f99f02ee17532a', './modules/DynamicFields/templates/Fields/TemplateCurrencyId.php' => '43b99449f9944fc7fa529ba70785f58a', './modules/DynamicFields/templates/Fields/TemplateCurrency.php' => '3e851d6dee2d46914f0c5df99c350edf', @@ -2433,7 +2433,7 @@ $md5_string = array ( './modules/DynamicFields/templates/Fields/Forms/date.tpl' => '4ff60f5842986b799662205147b80f6e', './modules/DynamicFields/templates/Fields/Forms/date.php' => 'e9b2b4fb22a9b3b75af76e39ce0c6695', './modules/DynamicFields/templates/Fields/Forms/currency.tpl' => '0e03b1a63ca3651c70d4f652de534c7c', - './modules/DynamicFields/templates/Fields/Forms/coreTop.tpl' => '17d01f0c572687aa3f911e3c954028a9', + './modules/DynamicFields/templates/Fields/Forms/coreTop.tpl' => 'df061fafa8b55efd4e7d69696dc8bf04', './modules/DynamicFields/templates/Fields/Forms/coreBottom.tpl' => '05563273fa3ffb30c9a8128520617d7a', './modules/DynamicFields/templates/Fields/Forms/bool.tpl' => 'c171d5cd2abc55f33af19bdd9ec3d6ba', './modules/DynamicFields/templates/Fields/Forms/address.tpl' => 'e38aa31a8fcd7033082fa44522da2717', @@ -2448,7 +2448,7 @@ $md5_string = array ( './modules/Documents/tpls/view.extdoc.tpl' => '9471a4d4ef93987e9b646f79591b2bc6', './modules/Documents/action_view_map.php' => '0994fe5e38b73c985fff200f9edb2129', './modules/Documents/DocumentExternalApiDropDown.php' => '05c03dc10f85d98ddc4c512d809f886a', - './modules/Documents/views/view.extdoc.php' => '3348a550e4e6a7d4e4ed7712a5cf74af', + './modules/Documents/views/view.extdoc.php' => '80c52f99249a0d040060a6431d2b9f73', './modules/Documents/views/view.edit.php' => 'a6f35bc369a8d00cd6905212170b1ad2', './modules/Documents/views/view.detail.php' => 'e304a2abe7de36903ff6326746313616', './modules/Documents/Dashlets/MyDocumentsDashlet/MyDocumentsDashlet.php' => '35404688fc59eb3737d89ca7432c3e76', @@ -2499,7 +2499,7 @@ $md5_string = array ( './modules/Currencies/Forms.php' => '6d7619156646796d8463bb1e4e5acd01', './modules/Currencies/EditView.tpl' => '509a24e75df8bc565847458bf541f7fa', './modules/Currencies/EditCurrency.php' => 'dfe9ae276fb02bdae956146ee96edca0', - './modules/Currencies/Currency.php' => 'ed74e8241b08280c7950aa447257fea5', + './modules/Currencies/Currency.php' => 'c39e9458a1b8a046ed41a8428b3a9836', './modules/Contacts/Contact.js' => 'e503be995847cfaa74b80ec64deea115', './modules/Contacts/views/view.quickcreate.php' => 'c427b1da2e3880b0ed90af832481170e', './modules/Contacts/views/view.list.php' => 'd5a51ad95c221ddaaaaca33c9b3acd1a', @@ -2510,7 +2510,7 @@ $md5_string = array ( './modules/Contacts/views/view.detail.php' => '48058ccfb21592ee5abe894b77939ab7', './modules/Contacts/views/view.contactaddresspopup.php' => '6b850ba3f32ae2254e441302c844631f', './modules/Contacts/views/view.closecontactaddresspopup.php' => '760a824c3e06fa3df9827896a2b7fa05', - './modules/Contacts/tpls/QuickCreate.tpl' => '4bf7e17173dd168229867f66773e7cfe', + './modules/Contacts/tpls/QuickCreate.tpl' => '6c5a720e73df479b26ebf2a26c424c38', './modules/Contacts/metadata/subpanels/default.php' => 'cf6be79e26a72c1c8e98a6329a48e5dd', './modules/Contacts/metadata/subpanels/ForProject.php' => '9c66e6a62d6da1c489a92ddc9b1f9011', './modules/Contacts/metadata/subpanels/ForOpportunities.php' => '453dbb260034aa88051719eaa07a08bc', @@ -2532,16 +2532,16 @@ $md5_string = array ( './modules/Contacts/metadata/detailviewdefs.php' => 'f485ac2da169d06a8a407b6ad22f3354', './modules/Contacts/metadata/additionalDetails.php' => 'db6c2236740f97bfc8c341fa3da79dbc', './modules/Contacts/metadata/SearchFields.php' => '48c393c28326b6516e60380afa97e5c6', - './modules/Contacts/language/en_us.lang.php' => '6886bd48a2e98a29303a1fa8eeddde9f', + './modules/Contacts/language/en_us.lang.php' => '34b7e27ac752cd8d2f133d7ef2f62956', './modules/Contacts/field_arrays.php' => '15a260aba13a962b3f6135046f11c4e1', './modules/Contacts/controller.php' => '6607e948d272e5809461876a391cc5a1', - './modules/Contacts/vardefs.php' => '68937dbe02a4e3842986b5274a169896', + './modules/Contacts/vardefs.php' => '7fbe9ddd5d0adc73ee1221e1dc8d4111', './modules/Contacts/SugarFeeds/ContactFeed.php' => '1f16df8e3936e78b160a05091d5fdbc4', './modules/Contacts/ShowDuplicates.php' => '2d5b7983e4f08dd82c35c0eb8634ede1', './modules/Contacts/ShowDuplicates.html' => '5c3bdbdbdb3ad22334e6b1ac7f844db7', './modules/Contacts/SaveContactOpportunityRelationship.php' => 'ec59ca27f5916ed5370bb33c66701686', './modules/Contacts/Save.php' => '8463ae2addbf510c8e055b0ad11ec8c7', - './modules/Contacts/Popup_picker.php' => '45b6af1ceb2c9e4383a66c3c92f58549', + './modules/Contacts/Popup_picker.php' => '61e24725b840569984f5697e77c25b38', './modules/Contacts/Menu.php' => 'f36572cacfa49684129a128ccea372d9', './modules/Contacts/MailMergePicker.html' => '0484e414fff4e7622b030c06e48fbf84', './modules/Contacts/Email_picker.html' => 'f1a7b2c80f2b56d01ec37ce3a2630200', @@ -2552,7 +2552,7 @@ $md5_string = array ( './modules/Contacts/ContactOpportunityRelationshipEdit.php' => 'ca0574bfc40855f7c170f3e2912fc445', './modules/Contacts/ContactOpportunityRelationshipEdit.html' => '063f65d9dbe6f7f58367d99f2af65210', './modules/Contacts/ContactOpportunityRelationship.php' => 'ec6fac16e09199dc26550e84cca523cf', - './modules/Contacts/ContactFormBase.php' => '57d06bd0905b4ef6ad977509aecc9083', + './modules/Contacts/ContactFormBase.php' => '295100e60f89f359ae191a5261203550', './modules/Contacts/Contact.php' => '40651edd569a09692506f0d7aa9b524c', './modules/Contacts/BusinessCard.php' => '6791cfe02546533166a04d27d143eb49', './modules/Contacts/BusinessCard.html' => '2ad1f1578e7c6f85791f97656576a3a8', @@ -2804,8 +2804,8 @@ $md5_string = array ( './modules/CampaignLog/Menu.php' => '9a144af6bd83a06aee1415594bd13e35', './modules/CampaignLog/CampaignLog.php' => '3a17faa3d29a69fb19cc00a381008238', './modules/Calls/views/view.edit.php' => '98773bd63784a336938d8c74b5be8e17', - './modules/Calls/vardefs.php' => '4af0dcd8cfbdeed7e0f1dc84c0e156c9', - './modules/Calls/tpls/footer.tpl' => '7aeab8780e6c0a618ef47f94a580ed5c', + './modules/Calls/vardefs.php' => '24847bdeef29140ccd8ac33435b34c04', + './modules/Calls/tpls/footer.tpl' => '56bdcf65493f1786f819530d8cd985c0', './modules/Calls/tpls/QuickCreate.tpl' => '85798db63f4a49547d76aa14f6fa19a5', './modules/Calls/metadata/subpanels/default.php' => '446247ed1b8a39cbfaf65b2b97c61a4e', './modules/Calls/metadata/subpanels/ForHistory.php' => 'a43ff34ac73932be443b4eec4af5b3ff', @@ -2831,7 +2831,7 @@ $md5_string = array ( './modules/Calls/CallsQuickCreate.php' => '1a526db285df01bcdda25ef861e25323', './modules/Calls/CallHelper.php' => '821c104aef4b2d64666fa94bb7cf7d88', './modules/Calls/CallFormBase.php' => '8886ec2adfcadef1faabf74d15e9454f', - './modules/Calls/Call.php' => 'ed374d335a3e3c5c0ff234cbdcecb76d', + './modules/Calls/Call.php' => '3b164a50c1e8a28566e28c7792bc8daf', './modules/Calendar/views/view.list.php' => 'e8dd64409e0ac2eacd506fcb7bb81fd9', './modules/Calendar/templates/templates_calendar.php' => '750737dbfd338550ae0c5cf6f26b1eea', './modules/Calendar/templates/template_shared_calendar.php' => 'b851af6632f3a7af5c5923bb561b6124', @@ -2900,7 +2900,7 @@ $md5_string = array ( './modules/Administration/templates/ConfigureTabs.tpl' => 'ef345ff226a317b2c66027d1d5e78e2d', './modules/Administration/repairSelectModule.php' => 'a7af51a5f7f6e5002f4963b80504c0d8', './modules/Administration/ncc_config.php' => '6fcf1f7bd93acbf9b0c7b3a890bdab9d', - './modules/Administration/metadata/adminpaneldefs.php' => '648fd0de7e3a0188a621c14dac1b8f12', + './modules/Administration/metadata/adminpaneldefs.php' => 'e1d0c3b4679d1cab6d8c648f0fd76d89', './modules/Administration/metadata/SearchFields.php' => '6968a40d78da694e44829ec8d00645e8', './modules/Administration/language/en_us.lang.php' => '0686080b0de6663c5161d81066c3471a', './modules/Administration/javascript/Administration.js' => '5c983c8146d2f8e537f0f826d0239834', @@ -2915,7 +2915,7 @@ $md5_string = array ( './modules/Administration/UpgradeIISAccess.php' => '06edbb4c220390310e11109e8f3385a7', './modules/Administration/DstFix.php' => '3c1cfac3316ffc8ebfd4ecda81ca40f0', './modules/Administration/UpgradeWizard.php' => '84fba3fca2c46fd23c0fd2fbc63aec78', - './modules/Administration/updater_utils.php' => '4cc174956a5791243e839c6b74e148cb', + './modules/Administration/updater_utils.php' => '4e2056fffebdab32f9c77d94fd447e0d', './modules/Administration/UpgradeFields.php' => '6ec4328aa4888703fc800ed61dcf56de', './modules/Administration/UpgradeAccess.php' => 'd5b662f01ae6c5a8ec6ef7f7cfa6e4cd', './modules/Administration/expandDatabase.php' => 'db6782337c424a5aea39932c6c74b52a', @@ -2941,7 +2941,7 @@ $md5_string = array ( './modules/Administration/RebuildConfig.html' => '8154602cc162764fea90a44ab6da1d2d', './modules/Administration/RebuildAudit.php' => '8d2fc35c83a49c038ca59d7ef54149b2', './modules/Administration/QuickRepairAndRebuild.php' => '745b5aa563e14810a4e0c51885aff222', - './modules/Administration/PasswordManager.tpl' => 'd60c9df9a4d6cf63168fefa53f9b07de', + './modules/Administration/PasswordManager.tpl' => 'dc34e36db59c44ea26101d220a4958ac', './modules/Administration/index.tpl' => '1dbbee4c2ea3662b4416bbe4308ede53', './modules/Administration/index.php' => '838b3b9755958147fdf7f6adabe3f8e1', './modules/Administration/SupportPortal.php' => '05c3bcc46d9ac6f3159861d398b15409', @@ -2953,7 +2953,7 @@ $md5_string = array ( './modules/Administration/ImportCustomFieldStructure.php' => '8f483d883bfa449cce0ca0afe782b6cc', './modules/Administration/Forms.php' => 'fb76fa135d6210b0e25abf6b2f10376d', './modules/Administration/Upgrade.php' => '595882b60b47ea6b775205823044dcb4', - './modules/Administration/Updater.php' => '6245521e1b0c45638d1fd5cfc3fea19b', + './modules/Administration/Updater.php' => '618a08130e5a2bd7449915be22041e18', './modules/Administration/Locale.tpl' => '04b2f1e9c6adf7e91e79206a67a33ea3', './modules/Administration/ExportCustomFieldStructure.php' => '6f55e973d20ab72b29f0fc74d793ad5b', './modules/Administration/DisplayWarnings.php' => '70d6a5d17f5690de605ec1b11bf75781', @@ -2977,7 +2977,7 @@ $md5_string = array ( './modules/Activities/SubPanelView.html' => '74afed37ca1d19a2a67307e063b52c4e', './modules/Activities/SetAcceptStatus.php' => '42fcffc8717e7b1cb10001b137400d9e', './modules/Activities/SubPanelView.php' => '7b656bdde855f8032edcfb640677d7a9', - './modules/Activities/Popup_picker.php' => 'e0130f34a3f17efb7ee4152de2015b2b', + './modules/Activities/Popup_picker.php' => 'eb51ff735ec8d9ffede6b1b6448983fa', './modules/Activities/Popup_picker.html' => '82fca068e687dbca227b0b4c8fc69b76', './modules/Activities/Menu.php' => '50ace4d08c7af062a3da92e52e6ebffc', './modules/Activities/Forms.php' => 'd7472639650199c74c40ba981f008c2c', @@ -3016,7 +3016,7 @@ $md5_string = array ( './modules/Accounts/AccountFormBase.php' => '2170ad3c175746084bbb0dd9bfe75c69', './modules/Accounts/Account.php' => 'fce59e4b2ae90d1bceedc038d936eea4', './modules/ACLRoles/ACLRoles.js' => '2b2b8c4517f3d6a27b71f22d8b37b285', - './modules/ACLRoles/views/view.list.php' => 'e40ad40a14a03cf692dd279b9616329a', + './modules/ACLRoles/views/view.list.php' => '3e7d8eced4020f8a9b3b4c2c7bdffeaf', './modules/ACLRoles/vardefs.php' => 'f500232770683374295c4d6d721dd54c', './modules/ACLRoles/popup.tpl' => '03df13bcc231cac6edde4666779ed34b', './modules/ACLRoles/metadata/subpanels/default.php' => 'ae62c499811f290b3afd519359cb1e84', @@ -3040,7 +3040,7 @@ $md5_string = array ( './modules/ACLRoles/EditRole.php' => '9973b810c5a89f4a37e8289fe80c0c2e', './modules/ACLRoles/EditAllBody.tpl' => 'dc0a4a6eb1878a89dc7d08f67b69cab1', './modules/ACLRoles/DetailViewUser.tpl' => 'd339f129cd6b7512d3a404d35211494d', - './modules/ACLRoles/DetailViewBody.tpl' => 'a1dc057d0ac81f87ada4acf9dd1cbe55', + './modules/ACLRoles/DetailViewBody.tpl' => 'e204dc68622248fb0347dce4751f1a8c', './modules/ACLRoles/DetailView.tpl' => '975040e818f0231e25707a8473776af8', './modules/ACLRoles/DetailView.php' => 'e1e7fdda30ac3ec334aa03c620da0faf', './modules/ACLRoles/DetailUserRole.php' => '042213d7e29e2920bf9f0f42babb14fb', @@ -3135,11 +3135,11 @@ $md5_string = array ( './jssource/src_files/include/SugarCharts/Jit/FlashCanvas/flashcanvas.js' => '72c44a4bca6418bb7ee5e7c5b7781e3f', './jssource/src_files/include/SugarCharts/Jit/js/Jit/jit.js' => 'eafefe546e88997558054191c83a00e2', './jssource/src_files/include/SugarCharts/Jit/js/mySugarCharts.js' => 'bb8a2f5badbe46e22e07933cc66c2fff', - './jssource/src_files/include/SugarCharts/Jit/js/sugarCharts.js' => '72eba4ec918665ffa582c6fec16d2c78', + './jssource/src_files/include/SugarCharts/Jit/js/sugarCharts.js' => 'f6a34418519e1208475820a6141701c4', './jssource/src_files/include/SugarDependentDropdown/javascript/SugarDependentDropdown.js' => '82905de42674faa12e819f99d3db0610', './jssource/src_files/include/SugarEmailAddress/SugarEmailAddress.js' => '40940b800b4b851151002ee1459392fc', './jssource/src_files/include/SugarFields/Fields/Address/SugarFieldAddress.js' => '05610c1f440fc0dd6de61b3ae1154aaf', - './jssource/src_files/include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'd0c3a690789d94d4b5d88bf99abdd3d0', + './jssource/src_files/include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'd3248fdbd679253a9a404f6ef554b0ab', './jssource/src_files/include/SugarFields/Fields/Datetimecombo/Datetimecombo.js' => '7f93acedc02d390800eaad0e5fc22cae', './jssource/src_files/include/SugarFields/Fields/File/SugarFieldFile.js' => '11edcc9ea0960ae5e5e4e1ef20a94ab0', './jssource/src_files/include/connectors/formatters/default/company_detail.js' => 'ed4d3af5b705c28c37d60cd7eb118c55', @@ -3149,16 +3149,16 @@ $md5_string = array ( './jssource/src_files/include/javascript/jsclass_async.js' => '8e8694a9e136c6736ac3fe87d9ace2b1', './jssource/src_files/include/javascript/jsclass_base.js' => 'ef96b7ba20a601f2fed2ff94f1cb0eb0', './jssource/src_files/include/javascript/menu.js' => 'a12b42e2406a9b192609258884536efd', - './jssource/src_files/include/javascript/overlibmws.js' => 'baaf046aa93f29e370d17b31e0d66e16', + './jssource/src_files/include/javascript/overlibmws.js' => 'b7574a4e727a1118ad5f19ded452c8f1', './jssource/src_files/include/javascript/overlibmws_iframe.js' => 'b250fc67fe7d6812a41b528ac39083bc', './jssource/src_files/include/javascript/popup_helper.js' => '6be37795c9d2b6a5c99d210f84731324', './jssource/src_files/include/javascript/popup_parent_helper.js' => '41624ffc3d0b63a35832775a09b24bc3', './jssource/src_files/include/javascript/quickCompose.js' => 'fa983d3c19912b130583a15387fa5e6c', './jssource/src_files/include/javascript/quicksearch.js' => 'b95bea8ff6622dc39b84dad7acc25d18', './jssource/src_files/include/javascript/report_additionals.js' => '134d3cd895ad1e0470f9dd07c7b34ad1', - './jssource/src_files/include/javascript/sugar_3.js' => 'c4de3c17746db1da7be484849ccf96c6', + './jssource/src_files/include/javascript/sugar_3.js' => '1dad49ad16210a43297a3049fc9c5f40', './jssource/src_files/include/javascript/sugar_connection_event_listener.js' => '60c2a539c4e42bbd9c9e8fa5ca3dfd72', - './jssource/src_files/include/javascript/sugarwidgets/SugarYUILoader.js' => '9237f12850b7ce5c27669480f71152be', + './jssource/src_files/include/javascript/sugarwidgets/SugarYUILoader.js' => '8c295777790565a0751eb11fa8c212b2', './jssource/src_files/include/javascript/sugarwidgets/SugarYUIWidgets.js' => '5cb3faa95abcca01241a06c46cc609e0', './jssource/src_files/include/javascript/swfobject.js' => 'a7dc61c4ada3b828e0e09e51f943c6db', './jssource/src_files/include/javascript/yui3/assets/dpSyntaxHighlighter.js' => '9f8e259fd1682f21971db93c2465812a', @@ -3923,7 +3923,7 @@ $md5_string = array ( './jssource/src_files/include/javascript/yui3/build/yql/yql-min.js' => '9d94bc7ae9cf56021a5dc3f454a5b8bb', './jssource/src_files/include/javascript/yui3/build/yql/yql.js' => 'e1a2b802089686337415bcbdc54c23f6', './jssource/src_files/include/javascript/ajaxUI.js' => 'e2b405f16744b9d07033d27575d3e90f', - './jssource/src_files/include/javascript/calendar.js' => 'da8f5fca74acc32edff682b17c8662e5', + './jssource/src_files/include/javascript/calendar.js' => '5f6792083f67d1d249097d62c7774061', './jssource/src_files/include/javascript/importWizard.js' => '5473123f038ab6e27a335c7630035c77', './jssource/src_files/include/javascript/iscroll.js' => 'b6c232e3c54b2a1320b22c7ad920c842', './jssource/src_files/include/javascript/phpjs/get_html_translation_table.js' => '9667941dd790119d552f99b6d6b73fdf', @@ -3984,7 +3984,7 @@ $md5_string = array ( './jssource/minify_utils.php' => 'fafc5475a1d95f6b80f8c24459918094', './jssource/minify.php' => '219023f793e8ed83e536771bffcd988c', './jssource/jsmin.php' => '1ab5658de8334b5200dd571b4f9fb318', - './jssource/JSGroupings.php' => 'b2b9a0828ab785f9e94eca80190cdb59', + './jssource/JSGroupings.php' => 'b97cd304e5072c83ff37c4186bca1c5e', './maintenance.php' => '72efcf842406e81fb8640a621afbdd68', './install/dbConfig.js' => '34408e61d47a775a3cb67971bb710522', './install/installCommon.js' => '9177e605553bb2a6619179d0e5dffc57', @@ -4026,7 +4026,7 @@ $md5_string = array ( './install/TeamDemoData.php' => '1cf512bcb6834cdac2c154b2f42d14cd', './index.php' => '85d2f32e8b794128592f116a91fcef72', './include/parsecsv.lib.php' => 'df08e6f9ccaa1ca448893ead93611592', - './include/externalAPI/ExternalAPIFactory.php' => 'de4bbe6b07d197a4380226ff0da5e830', + './include/externalAPI/ExternalAPIFactory.php' => 'dc92bf7c8dcc0f5f8865b76747fb2d2e', './include/externalAPI/Base/WebMeeting.php' => '53cbdd0ac77fde2542711093c64f83b9', './include/externalAPI/Base/WebFeed.php' => '6ce8b5213a9f52991c30a9597686aa9a', './include/externalAPI/Base/WebDocument.php' => '728f703b0dd2bcf9845b033142532416', @@ -4113,19 +4113,19 @@ $md5_string = array ( './include/utils/progress_bar_utils.php' => 'c38627c8c832e31a0f524151491efbb5', './include/utils/zip_utils.php' => '8b0e9094a1a418d1d0dacfd58620d704', './include/utils/logic_utils.php' => '34cee1496e20f3eee7ae4ad76e5e14c5', - './include/utils/layout_utils.php' => '402a7ef6e0970a5a80b2d8e3b89df84d', + './include/utils/layout_utils.php' => 'c595159ee6eb1e07cb95a3fd5d12d901', './include/utils/file_utils.php' => '9fba4b2638aa5aff8259020d7dc764e7', './include/utils/external_cache.php' => '4138cf307fea4ca68817b4c80250cab0', - './include/utils/mvc_utils.php' => '7b7536bb6464a28aba831cde367e46db', + './include/utils/mvc_utils.php' => 'ee25382a36ba8c50c819ff57b3b7e92c', './include/utils/encryption_utils.php' => '060b4fa727c1d48fa8ec2809e2fb58cf', './include/utils/db_utils.php' => 'c44e8bd99d998f73e47cd9f7935f1150', './include/utils/autoloader.php' => '684b00fa5ca181b4f5635334099d24c0', './include/utils/array_utils.php' => '4a63065e0ab62bfc33b9429f886ed7ec', './include/utils/activity_utils.php' => '96a8bd8977d5e7532e3b7d8ca3a583ee', './include/utils/LogicHook.php' => 'd08b32b0727e67338f1292b7de65c45e', - './include/utils.php' => '66cd7837630dc8203bd26fb19861493e', + './include/utils.php' => '74854dc4d49b24eea138a529a6e86704', './include/upload_file.php' => '177f5eb2032e0c7797e11f93efb759f3', - './include/timezone/timezones.php' => '68c833b6b839c9e4d80a3bb21740d6e5', + './include/timezone/timezones.php' => '36140e6fbd6c65a5e79d255f20677aeb', './include/templates/TemplateGroupChooser.php' => '705dfff2efc56e000ff5012af7ce15f9', './include/templates/TemplateDragDropChooser.php' => '1fd1388bfd445beeb715a78cf5fbafe5', './include/templates/Template.php' => '5b1709f5a4cf514bfe1f05f074340640', @@ -4224,32 +4224,32 @@ $md5_string = array ( './include/language/en_us.lang.php' => '397f53109a0d13b71f453f4dc5242c96', './include/json_config.php' => '73219c3de81147aa2e18580b497353e6', './include/javascript/sugar_grp_jsolait.js' => '93083b47ea6b1f05be3e0d7284aec3f7', - './include/javascript/sugar_grp_quickcomp.js' => '7485350358ba7dcbfab96e77c53eaab7', - './include/javascript/sugar_grp_emails.js' => '93e42609d375b1520c613487f4cac7c6', - './include/javascript/sugar_grp_overlib.js' => 'd1af18f5bf386f5b208e467e6e22e46f', + './include/javascript/sugar_grp_quickcomp.js' => '05bd1e5a86d793cf4b86f75f74ef3d88', + './include/javascript/sugar_grp_emails.js' => '5670caf1035634b2143a80925bede5be', + './include/javascript/sugar_grp_overlib.js' => '4dad1ad058d80575f355f6978568e4a6', './include/javascript/sugar_grp_yui2.js' => '613bb6a5e0e5e934a88293f6ae2ffa43', './include/javascript/sugar_grp_yui_widgets.css' => '87d9287720879ff935fa2b80690ede5e', './include/javascript/sugar_grp_yui_widgets.js' => 'f7562f8ff8bff22cf193a9d212b6bf29', './include/javascript/sugar_grp1_yui.js' => 'e98c92b5f0c4285764d85aa04b32da8a', - './include/javascript/sugar_grp1.js' => '51591bcd5f60c2251301fee3310772f6', + './include/javascript/sugar_grp1.js' => '1984159e7acaacd1342b574a68332261', './include/javascript/cookie.js' => '4f95a2872a549573149d035633086662', './include/javascript/dashlets.js' => '208d5f32d367390faadda8e899f99b77', './include/javascript/include.js' => '278e187b101eb3a5871f3bce021cdb62', './include/javascript/jsclass_async.js' => '15b2b4ecf1010a43608634cfbd6d17a2', './include/javascript/jsclass_base.js' => 'a13cae0c604a511e4cf2e9eb6150e029', './include/javascript/menu.js' => 'bab1eb80c6cf5cb048efc10e9eec8aaf', - './include/javascript/overlibmws.js' => '66a898aad7f5de44cae6d97016ae91dd', + './include/javascript/overlibmws.js' => 'fa1ceceda8b7a521aae52d15a621f5a7', './include/javascript/overlibmws_iframe.js' => 'aae059277f699dde6451e92c51a3746d', './include/javascript/popup_helper.js' => '624081de798ef3e853c67d06a1b422b7', './include/javascript/popup_parent_helper.js' => '92dfee2b7bf6f56ab176ac8f0d0d672b', './include/javascript/quickCompose.js' => 'd5ea61432b8795e0d25d1bc606ea5a51', './include/javascript/quicksearch.js' => '766053dbb28ec36768a7aece97faa4f0', './include/javascript/report_additionals.js' => '6edec1a89ec68998008c4469f2d00e13', - './include/javascript/sugar_3.js' => '2f7f0563474a39215437d4605244226b', + './include/javascript/sugar_3.js' => '05b7cafc4a1e24fab28aa775409bcc93', './include/javascript/sugar_connection_event_listener.js' => '3fce076d38f2e5632e348833ebb26cd7', './include/javascript/swfobject.js' => 'e83d1ca12de8ee2787c9189119cbd959', './include/javascript/ajaxUI.js' => '012780cb555b4227e56190ead47644d9', - './include/javascript/calendar.js' => '34eb209f70a39a4e1e20b717a40d0978', + './include/javascript/calendar.js' => '0221232526fa15db208b68bdbf94bb65', './include/javascript/importWizard.js' => 'ef5f54c871024a0ddea59b4885ddb1df', './include/javascript/iscroll.js' => 'f2f4abe47439bfe02f0001e51dcbd0cd', './include/javascript/sugar_yui_overrides.js' => '8b8fb375212373da32e94c349c101a31', @@ -5917,7 +5917,7 @@ $md5_string = array ( './include/javascript/tiny_mce/plugins/advhr/css/advhr.css' => '2d33b4333e29436b2102747f2ee2f395', './include/javascript/tiny_mce/license.txt' => '045d04e17422d99e338da75b9c749b7c', './include/javascript/tiny_mce/langs/en.js' => 'df79faa676ad0876ad07b3618ef468a9', - './include/javascript/sugarwidgets/SugarYUILoader.js' => '03e5f141de87cd45e0e44ffc4fc60e78', + './include/javascript/sugarwidgets/SugarYUILoader.js' => '3261c8bdec5b875c6287a5e590182be9', './include/javascript/sugarwidgets/SugarYUIWidgets.js' => 'a43c63fe55d1750e8012bff89d93be78', './include/javascript/jsAlerts.php' => 'a2a9420418b7443121e6e6f6599eb92c', './include/javascript/javascript.php' => '5412235d2b3d986b7cee7d27bc65f82a', @@ -6043,7 +6043,7 @@ $md5_string = array ( './include/fonts/Courier-Oblique.afm' => '3324f479739ac9ebab740772b55705d2', './include/fonts/Courier-BoldOblique.afm' => '5c34aeefc1ef69ae2fb317abc1ccc9ca', './include/fonts/Courier-Bold.afm' => 'cb84ced0cc430a5d54497257a11638f5', - './include/export_utils.php' => 'c0a596f0992bdd60424c6f226a71b51f', + './include/export_utils.php' => '269f76ffa5863671ed21f42fc200f0ab', './include/entryPoint.php' => 'e25fe49080602ee59180d4ea18e4424f', './include/dir_inc.php' => '1bcdea84cfc20923819763baade6e567', './include/database/SqlsrvHelper.php' => 'a1c32cc7e63323d06b42bbe09b982604', @@ -6055,11 +6055,11 @@ $md5_string = array ( './include/database/DBHelper.php' => '46e0769144872be075f356260c4f7110', './include/database/SqlsrvManager.php' => '9e74bb9201c06290bab4b0410f790c31', './include/database/MysqliManager.php' => '4b7748362a9ffbd38288cbd8619c0f89', - './include/database/MysqlManager.php' => '2fb21197c234df9ffca41ff9ab486a8a', - './include/database/MssqlManager.php' => '9435b119b024dfbe61bc46c3fb53ea94', + './include/database/MysqlManager.php' => 'e0a50354c6f180b4b103e8f49d116a9a', + './include/database/MssqlManager.php' => 'a71f6674919d1a033f6f9cdf725401ea', './include/database/FreeTDSManager.php' => '72cca97832b03356146faa2d49a2cbed', './include/database/DBManagerFactory.php' => '71dc5f3547235bcd27b999eb39c16c55', - './include/database/DBManager.php' => '016daafb66d7d84f1d860aad2379e262', + './include/database/DBManager.php' => '9c90610ce9cc62b02abe6b2ac59c7b3f', './include/controller/Controller.php' => '154eadef52691f5edbbd7b17eb72b406', './include/contextMenus/menuDefs/sugarPerson.php' => '1978579cd6c1b4b54e070f81ddc7a166', './include/contextMenus/menuDefs/sugarObject.php' => 'c89b133cb16a4a1ea664ea79785331c4', @@ -6085,7 +6085,7 @@ $md5_string = array ( './include/VarDefHandler/listvardefoverride.php' => 'd79b73457de94f7d3c2d485d7643b501', './include/VarDefHandler/VarDefHandler.php' => 'ed481a168b11ed8306efdce0725e7b1f', './include/TimeDate.php' => '051674889ce64a49c5232336b93d229d', - './include/TemplateHandler/TemplateHandler.php' => '9fc0236df420bb0bd910d632dbc31d27', + './include/TemplateHandler/TemplateHandler.php' => '6b8a9d8e43308723616974304015fd92', './include/Sugarpdf/sugarpdf_default.php' => '4e61fe9d5cd31ac41acc315423348ff7', './include/Sugarpdf/sugarpdf_config.php' => 'ecd77816c5def7f50b83d7c2336e7adf', './include/Sugarpdf/sugarpdf/sugarpdf.smarty.php' => 'dbe537b77ec1eb13e564269becaae15e', @@ -6149,7 +6149,7 @@ $md5_string = array ( './include/SugarObjects/templates/person/icons/Createperson.gif' => '2e20692d501b15729294b80f4f311d77', './include/SugarObjects/templates/person/config.php' => 'ade871c96f0a91be8b4b27a06c280d33', './include/SugarObjects/templates/person/Person.php' => '38c9321dbccf83090289ab4846d35c36', - './include/SugarObjects/templates/issue/vardefs.php' => '2cde5d7c79db04f5ba31b51a733be453', + './include/SugarObjects/templates/issue/vardefs.php' => '98ce31886d20d552de432eb679fd21dc', './include/SugarObjects/templates/issue/metadata/subpanels/default.php' => 'c4ad08eb6c1a932e1a26fc844def6b5e', './include/SugarObjects/templates/issue/metadata/searchdefs.php' => '8b387defff2b8da8873d8201281a7357', './include/SugarObjects/templates/issue/metadata/quickcreatedefs.php' => '8fa0c1441c7f5adc5e3431a0f6a4d2dd', @@ -6287,7 +6287,7 @@ $md5_string = array ( './include/SugarFields/Fields/Password/SugarFieldPassword.php' => '6324890226f616bf1444c1c743d3e576', './include/SugarFields/Fields/Password/EditView.tpl' => '5a8b8690e57bc38dda46bb6a0e61d864', './include/SugarFields/Fields/Parent/SugarFieldParent.php' => '4c69ce5c9257ee30c7b8bf234014356a', - './include/SugarFields/Fields/Parent/SearchView.tpl' => '3dda68af2ad53f755193ad09c3cebbf5', + './include/SugarFields/Fields/Parent/SearchView.tpl' => '503b02128bbce1dc0fd8612ea5170913', './include/SugarFields/Fields/Parent/EditView.tpl' => '4a1173b08d97095a5f5cf05d2a523a07', './include/SugarFields/Fields/Parent/DetailView.tpl' => '43c0b59004d5c2d581d0ce431923cbbb', './include/SugarFields/Fields/Multienum/SugarFieldMultienum.php' => '9a8aff4bf4605a4ba9e71c2fdf0ad28d', @@ -6338,7 +6338,7 @@ $md5_string = array ( './include/SugarFields/Fields/Currency/ListView.tpl' => 'c62e2997785bf58a314576d5a69fb6f9', './include/SugarFields/Fields/Currency/EditView.tpl' => '2a8d5393da74d525587fe93e6081ad28', './include/SugarFields/Fields/Currency/DetailView.tpl' => '07b10accc2d817376b207b935182c60b', - './include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'e7a8be9f58c67026ce906dcffc369e41', + './include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'd023d72de27958a6248133fe26150521', './include/SugarFields/Fields/Collection/view.sugarfieldcollection.php' => '626c0b184463b413735031b6c051db97', './include/SugarFields/Fields/Collection/ViewSugarFieldCollection.php' => 'ce63217a8411413df445489da09e58d3', './include/SugarFields/Fields/Collection/SugarFieldCollection.php' => 'f8bf806088e22b39b738459f096d89fe', @@ -6395,7 +6395,7 @@ $md5_string = array ( './include/SugarCharts/Jit/tpls/chart.tpl' => '4d83505085860cbb9e7033e837f16e3e', './include/SugarCharts/Jit/tpls/DashletGenericChartScript.tpl' => '5312c33dc34501800844f3defb827890', './include/SugarCharts/Jit/js/mySugarCharts.js' => '58548cca5fed14059632d853370eab88', - './include/SugarCharts/Jit/js/sugarCharts.js' => 'bdbe8bcc33b0571424c2dccac218fff5', + './include/SugarCharts/Jit/js/sugarCharts.js' => '2f88686c7fcaa2c84ce9c83185a2b262', './include/SugarCharts/Jit/js/Jit/jit.js' => '36abd719897cd5133ee2c6d058ac0766', './include/SugarCharts/Jit/css/base.css' => '775352bc541e0480ba0c5c03f0c4c56a', './include/SugarCharts/Jit/JitReports.php' => '4578c83c6260d80a1f9e641b48501625', @@ -6419,7 +6419,9 @@ $md5_string = array ( './include/SubPanel/SubPanel.php' => '0c0b7840d0cd7fbd6c5d8e11b7bc0424', './include/Smarty/plugins/modifier.multienum_to_ac.php' => 'a6ffd6f3338c45b05d3ee853b3f320ae', './include/Smarty/plugins/modifier.lookup.php' => '3b286a641cc7c5a7ed482cf6897b9a68', + './include/Smarty/plugins/function.sugar_email_btn.php' => '02265867c4e302c9d098981869424ac6', './include/Smarty/plugins/function.sugar_ajax_url.php' => '51ba79d83c358f4bb6d483648da1b96d', + './include/Smarty/plugins/block.nocache.php' => '66bb941778de43b9e52d06a47becb9f5', './include/Smarty/plugins/shared.make_timestamp.php' => '2d98e1b8ae60c93316d90bf152d3f5a5', './include/Smarty/plugins/shared.escape_special_chars.php' => '1a8d89273862e174b64f683d42feb198', './include/Smarty/plugins/outputfilter.trimwhitespace.php' => '25a2cdd916bf01bb8caa45a23fdf8d63', @@ -6529,20 +6531,20 @@ $md5_string = array ( './include/SearchForm/tpls/SearchFormGenericAdvanced.tpl' => '7dc2be0d14d74c0c82c47112eb95cd77', './include/SearchForm/tpls/SearchFormGeneric.tpl' => 'a990736e9cdfe780f4b8df5d2d2b98de', './include/SearchForm/SugarSpot.php' => '0536606cc025c51415010ff7ea4c307b', - './include/SearchForm/SearchForm2.php' => 'aa0ff77f69fbe0c4954bc7c5f55a9e92', + './include/SearchForm/SearchForm2.php' => '4b67164c0b22bb19affa548b75c4dcf9', './include/SearchForm/SearchForm.php' => '4b432a6438bf123cd630b0e3e7cffac8', './include/QuickSearchDefaults.php' => '88b97ced88d3731c401b56b94c91e775', - './include/Popups/tpls/header.tpl' => '87575a24e2cb8d828fc1eae2a7378952', + './include/Popups/tpls/header.tpl' => '9b04023cabb4d8a3e4745ea6e867a430', './include/Popups/tpls/footer.tpl' => '0a34f3223e0e1b88cf09b3a657b61924', './include/Popups/tpls/PopupGeneric.tpl' => '1ccc1f2bcf392daa5d762a39f17245da', - './include/Popups/Popup_picker.php' => '2b2071f0293ba8a28f95dd657598910d', + './include/Popups/Popup_picker.php' => '0625975ab4024b697a95dcaed11dc9b3', './include/Popups/PopupSmarty.php' => '6966ab1a9cee78aa58fc1fccd6549d35', './include/Pear/XML_HTMLSax3/LICENSE' => 'a45bb1bbeed9e26b26c5763df1d3913d', './include/Pear/XML_HTMLSax3/HTMLSax3/States.php' => '5b528baa84631f85349a7183597d2fb3', './include/Pear/XML_HTMLSax3/HTMLSax3/Decorators.php' => '34a9a95566c891f013584073fbadaf7e', './include/Pear/XML_HTMLSax3/HTMLSax3.php' => '11107d97b19feb13feb394cd858603f0', './include/Pear/HTML_Safe/license.txt' => 'a9001003ee71c8e4ca0337600994e7ac', - './include/Pear/HTML_Safe/Safe.php' => '5150c0e33710edd9bdb5310627b89f63', + './include/Pear/HTML_Safe/Safe.php' => '6d1511674903c33d61e9432b10cdcaa8', './include/Pear/Crypt_Blowfish/license.txt' => 'a45bb1bbeed9e26b26c5763df1d3913d', './include/Pear/Crypt_Blowfish/Blowfish/DefaultKey.php' => '8274b556662cc178342ea96940b36514', './include/Pear/Crypt_Blowfish/Blowfish.php' => 'b391980575340d0fe5bf2df72bc13932', @@ -6552,13 +6554,14 @@ $md5_string = array ( './include/MySugar/tpls/dashletsSearchResults.tpl' => '7bf094ad0bb191aa01959486e7cd6444', './include/MySugar/tpls/chartDashletsSearchResults.tpl' => '025432deb422b2675876a8c4d27cb15c', './include/MySugar/tpls/addDashletsDialog.tpl' => '35ff31902797ced09c4390ebe864b34e', - './include/MySugar/tpls/MySugar.tpl' => '58f2e89dc00ec4ba62361fe4b930ac45', + './include/MySugar/tpls/MySugar.tpl' => 'a71597e9f6b052046299f16cd0e593fc', './include/MySugar/javascript/MySugar.js' => '2009f6e609431576ff4e0f28dc9ff585', './include/MySugar/MySugar.php' => '7d325108dbcd3ce328fa714c62ec7a55', './include/MySugar/DashletsDialog/DashletsDialog.php' => '362525dbe1d032026c8a57e93700b0c9', - './include/MassUpdate.php' => 'd362d8a5c80270dfd560939af2770fd4', + './include/MassUpdate.php' => '5a53a45fbe5230dc4ecdb3fb643ade19', './include/MVC/View/views/view.quickedit.php' => 'ade92f07bb5eb553efe4623093e5e60f', './include/MVC/View/views/view.metadata.php' => 'e90c49375ed6eb09890f99085467b9b3', + './include/MVC/View/views/view.detail.config.php' => '47dcb12f5ed57fe83d56321f391e92b2', './include/MVC/View/views/view.ajaxui.php' => '4d31344c7c1392e5252e1c64b4319077', './include/MVC/View/views/view.xml.php' => '028d18c71c2dae2db826d0cc6d32306c', './include/MVC/View/views/view.vcard.php' => '32fa32960fe82caee39fcb8833541ad5', @@ -6567,7 +6570,7 @@ $md5_string = array ( './include/MVC/View/views/view.serialized.php' => '6746e128e8dacee78ecbf70ea3559cbb', './include/MVC/View/views/view.quickcreate.php' => '46266c0da5200fc4b269948dfc2d6948', './include/MVC/View/views/view.quick.php' => '9a1fa9ad8fce5230124ee320fcc42266', - './include/MVC/View/views/view.popup.php' => '840037771e14e3a828783d8ac486c725', + './include/MVC/View/views/view.popup.php' => '75eea34dfb677b85fc20dd8fc7966f35', './include/MVC/View/views/view.noaccess.php' => '1cab33d38afb080ca5dbfaa70a05e69a', './include/MVC/View/views/view.multiedit.php' => 'b727fe11b404c9cbfb80b23cbbd13a4c', './include/MVC/View/views/view.modulelistmenu.php' => 'd1f9e8f7977602eab7faf6cb9ece2144', @@ -6577,7 +6580,7 @@ $md5_string = array ( './include/MVC/View/views/view.importvcard.php' => '6c25b128b492aee11c09a127b55d38e0', './include/MVC/View/views/view.html.php' => '4269cd69a757967dfadf0d1505ab8302', './include/MVC/View/views/view.edit.php' => 'd6d369b764db7f13873ea7a2fd7bb4d5', - './include/MVC/View/views/view.detail.php' => 'f051d035c4f689f41292f30b9a950be2', + './include/MVC/View/views/view.detail.php' => 'b530c60a658c0777763fcd2b1453ff08', './include/MVC/View/views/view.config.php' => 'df90a0e59ee8e6d8c86aad43b5b9fefc', './include/MVC/View/views/view.classic.php' => '6be217537624ef09bf66eccdfbc8eb3c', './include/MVC/View/views/view.classic.config.php' => 'da126a4e65433dc43ad518c3a7322172', @@ -6586,7 +6589,7 @@ $md5_string = array ( './include/MVC/View/tpls/modulelistmenu.tpl' => '796ce676d310cf69a84618aa0c85082e', './include/MVC/View/tpls/Importvcard.tpl' => 'aa5117be30dc5b8c1fc726ba44a3eb00', './include/MVC/View/ViewFactory.php' => '8c19d770416ea69207b10f71d6a09e65', - './include/MVC/View/SugarView.php' => '777d6b2235e2951db81a2e80a38cdb56', + './include/MVC/View/SugarView.php' => '8971ea847c41704898642a5d835fd892', './include/MVC/SugarModule.php' => 'ce58476e24ad1717fe30192d10e28adc', './include/MVC/SugarApplication.php' => '01e924893b721aee5f443115e5b3800b', './include/MVC/Controller/file_access_control_map.php' => 'c94a1a349da51c17f5758d5f1ad6a364', @@ -6623,7 +6626,7 @@ $md5_string = array ( './include/EditView/QuickCreate.tpl' => '7b5551dd497dfb15af7ae2732db18e44', './include/EditView/QuickCreate.php' => '20043843a73497bc94bda42a3a54b38e', './include/EditView/PopupQuickCreate.php' => 'e7347241af58af0d28b86fde19695946', - './include/EditView/EditView2.php' => '357e47580fa89a26dfa2f753a25b59bc', + './include/EditView/EditView2.php' => 'fc07dfeab56f07a485b635d19bec4198', './include/EditView/EditView.tpl' => '661bb27433273d4fe59417d57ac57626', './include/EditView/EditView.php' => '0666ea6e21db2c8ef2a6a7615ea010c7', './include/DetailView/header.tpl' => '784a15901fbebe39f7495c56df41a758', @@ -6651,7 +6654,7 @@ $md5_string = array ( './examples/ExampleLeadCapture.php' => 'd6deb45572959e642fb019253c5703dc', './examples/EXAMPLES_README.txt' => 'b55744b5e2684d91f6d3f98db4553673', './emailmandelivery.php' => 'eddfad677960438dfe1584bca8718acf', - './download.php' => 'c2eb290cdd61ab58263f772eea86bd3d', + './download.php' => '86a2a9d3b655fa1ba2e356bb343a4788', './dictionary.php' => '42619156f21102938b4da79d2cf9cb48', './Zend/Version.php' => '7ed9dea03172b0f8fb11f085a17f100b', './Zend/Validate/Ip.php' => '05326c26a0f419d8dac8c168f6cb7f12', @@ -7059,14 +7062,14 @@ $md5_string = array ( './data/Relationships/One2OneRelationship.php' => 'c8154bd4190e2f006c3cb8e050dbab44', './data/Relationships/One2OneBeanRelationship.php' => '82a915b9f96f0dc044c649374aec5562', './data/Relationships/One2MRelationship.php' => 'f49f28b30a03c5afa471c99801f94c3d', - './data/Relationships/One2MBeanRelationship.php' => 'b5b444ff623d7442afc60e3771bd75e9', - './data/Relationships/M2MRelationship.php' => 'd90547097306b15cea70edd1bb493eda', + './data/Relationships/One2MBeanRelationship.php' => 'cf1aaa5a12d4cf7c2306d7a81f296548', + './data/Relationships/M2MRelationship.php' => '3b6e3923572399e57aa3ad5a48c75ea7', './data/Relationships/EmailAddressRelationship.php' => '886780983432b3d6094bb0135d5562ea', - './data/Link2.php' => 'e959b50abab84ba69c76e0300e769037', + './data/Link2.php' => '6cc6b2ad238395157ad2021b0ee9e777', './data/BeanFactory.php' => '18ea5137a9f4038003ff81125c221bf4', './data/upload/index.html' => '9cd784063d39b18d308932c28c385853', './data/Tracker.php' => '5dfc3f390ecccd8cbb1229e01f878593', - './data/SugarBean.php' => '059b8e110a9129d496c06ffd4a82089b', + './data/SugarBean.php' => 'eb3ba1b0edf6b4ef1356eb09c458c1dd', './data/Link.php' => 'df1735a1a781a9ed552cace8d418af7d', './custom/index.html' => 'b0070a296647b6026d1800db14510e3c', './cron.php' => '3d65f5cc08d20790387c79a761c776f7', diff --git a/include/EditView/EditView2.php b/include/EditView/EditView2.php index e5faac60..760d5609 100644 --- a/include/EditView/EditView2.php +++ b/include/EditView/EditView2.php @@ -448,29 +448,6 @@ class EditView } } - if (isset($this->fieldDefs[$name]['function'])) - { - $function = $this->fieldDefs[$name]['function']; - $function = (is_array($function) && isset($function['name'])) - ? $this->fieldDefs[$name]['function']['name'] - : $this->fieldDefs[$name]['function']; - - if (!empty($this->fieldDefs[$name]['function']['returns']) && $this->fieldDefs[$name]['function']['returns'] == 'html') - { - if (!empty($this->fieldDefs[$name]['function']['include'])) - { - require_once($this->fieldDefs[$name]['function']['include']); - } - - $value = $function($this->focus, $name, $value, $this->view); - $valueFormatted = true; - } - else - { - $this->fieldDefs[$name]['options'] = $function($this->focus, $name, $value, $this->view); - } - } - if(isset($this->fieldDefs[$name]['function'])) { $function = $this->fieldDefs[$name]['function']; if(is_array($function) && isset($function['name'])){ diff --git a/include/MVC/View/SugarView.php b/include/MVC/View/SugarView.php index 442dda68..759c4ece 100644 --- a/include/MVC/View/SugarView.php +++ b/include/MVC/View/SugarView.php @@ -652,7 +652,7 @@ class SugarView $file ) { - global $sugar_config, $theme, $current_user, $sugar_version, $sugar_flavor, $mod_strings, $app_strings, $app_list_strings, $action, $timezones; + global $sugar_config, $theme, $current_user, $sugar_version, $sugar_flavor, $mod_strings, $app_strings, $app_list_strings, $action; global $gridline, $request_string, $modListHeader, $dashletData, $authController, $locale, $currentModule, $import_bean_map, $image_path, $license; global $user_unique_key, $server_unique_key, $barChartColors, $modules_exempt_from_availability_check, $dictionary, $current_language, $beanList, $beanFiles, $sugar_build, $sugar_codename; global $timedate, $login_error; // cn: bug 13855 - timedate not available to classic views. @@ -766,11 +766,10 @@ EOHTML; if(!empty($config_js)){ echo "\n"; } - if ( isset($sugar_config['email_sugarclient_listviewmaxselect']) ) { echo ""; } - + $image_server = (defined('TEMPLATE_URL'))?TEMPLATE_URL . '/':''; echo ''; // cn: bug 12274 - create session-stored key to defend against CSRF echo ''; @@ -1127,9 +1126,9 @@ EOHTML; $url = ajaxLink("index.php?module=$module&action=EditView&return_module=$module&return_action=DetailView"); $theTitle .= << + {$GLOBALS[ - + {$GLOBALS['app_strings']['LNK_CREATE']} EOHTML; diff --git a/include/MVC/View/views/view.detail.config.php b/include/MVC/View/views/view.detail.config.php new file mode 100644 index 00000000..53fe0b46 --- /dev/null +++ b/include/MVC/View/views/view.detail.config.php @@ -0,0 +1,68 @@ + array( + 'detailview' => array( + 'show_header' => true, + 'show_footer' => true, + 'view_print' => false, + 'show_title' => true, + 'show_subpanels' => true, + 'show_javascript' => true, + 'show_search' => true, + 'json_output' => false, + ), + ), + 'req_params' => array( + 'ajax_load' => array( + 'param_value' => true, + 'config' => array( + 'show_header' => false, + 'show_footer' => false, + 'view_print' => false, + 'show_title' => true, + 'show_subpanels' => true, + 'show_javascript' => false, + 'show_search' => true, + 'json_output' => true, + ) + ), + ), +); +?> \ No newline at end of file diff --git a/include/MVC/View/views/view.detail.php b/include/MVC/View/views/view.detail.php index 54b08e25..fc6e4d31 100644 --- a/include/MVC/View/views/view.detail.php +++ b/include/MVC/View/views/view.detail.php @@ -34,41 +34,56 @@ * "Powered by SugarCRM". ********************************************************************************/ -/* - * Created on Apr 13, 2007 - * - * To change the template for this generated file go to - * Window - Preferences - PHPeclipse - PHP - Code Templates - */ require_once('include/DetailView/DetailView2.php'); -class ViewDetail extends SugarView{ - var $type ='detail'; - var $dv; +/** + * Default view class for handling DetailViews + * + * @package MVC + * @category Views + */ +class ViewDetail extends SugarView +{ + /** + * @see SugarView::$type + */ + public $type = 'detail'; - function ViewDetail(){ - parent::SugarView(); - } - - function preDisplay(){ - //do not override config settings for print - if (!isset($_REQUEST['print']) || !$_REQUEST['print']) { - $this->options['show_subpanels'] = true; - } - - $metadataFile = $this->getMetaDataFile(); - $this->dv = new DetailView2(); - $this->dv->ss =& $this->ss; - $this->dv->setup($this->module, $this->bean, $metadataFile, 'include/DetailView/DetailView.tpl'); - } + /** + * @var DetailView2 object + */ + public $dv; + + /** + * Constructor + * + * @see SugarView::SugarView() + */ + public function ViewDetail() + { + parent::SugarView(); + } + + /** + * @see SugarView::preDisplay() + */ + public function preDisplay() + { + $metadataFile = $this->getMetaDataFile(); + $this->dv = new DetailView2(); + $this->dv->ss =& $this->ss; + $this->dv->setup($this->module, $this->bean, $metadataFile, 'include/DetailView/DetailView.tpl'); + } - function display(){ - if(empty($this->bean->id)){ - global $app_strings; - sugar_die($app_strings['ERROR_NO_RECORD']); - } - $this->dv->process(); - echo $this->dv->display(); - } - + /** + * @see SugarView::display() + */ + public function display() + { + if(empty($this->bean->id)){ + sugar_die($GLOBALS['app_strings']['ERROR_NO_RECORD']); + } + $this->dv->process(); + echo $this->dv->display(); + } } diff --git a/include/MVC/View/views/view.popup.php b/include/MVC/View/views/view.popup.php index 64ab7a0d..a950d6f2 100644 --- a/include/MVC/View/views/view.popup.php +++ b/include/MVC/View/views/view.popup.php @@ -155,7 +155,16 @@ class ViewPopup extends SugarView{ $popup->setup('include/Popups/tpls/PopupGeneric.tpl'); - insert_popup_header(); + //We should at this point show the header and javascript even if to_pdf is true. + //The insert_popup_header javascript is incomplete and shouldn't be relied on. + if (isset($this->options['show_all']) && $this->options['show_all'] == false) + { + unset($this->options['show_all']); + $this->options['show_javascript'] = true; + $this->options['show_header'] = true; + $this->_displayJavascript(); + } + insert_popup_header(null, false); echo $popup->display(); }else{ diff --git a/include/MassUpdate.php b/include/MassUpdate.php index 2f3085e9..00a7fb2e 100644 --- a/include/MassUpdate.php +++ b/include/MassUpdate.php @@ -49,6 +49,11 @@ class MassUpdate */ var $sugarbean = null; + /** + * where clauses used to filter rows that have to be updated + */ + var $where_clauses = ''; + /** * set the sugar bean to its internal member * @param sugar bean reference @@ -160,10 +165,8 @@ eoq; $_POST[$post] = ''; }else{ unset($_POST[$post]); - } - }elseif ( $value == '--null--'){ //Bug36693 MassUpdate for ENUM with Option '0' - $_POST[$post] = ''; - } + } + } if(is_string($value) && isset($this->sugarbean->field_defs[$post])) { if(($this->sugarbean->field_defs[$post]['type'] == 'bool' || (!empty($this->sugarbean->field_defs[$post]['custom_type']) && $this->sugarbean->field_defs[$post]['custom_type'] == 'bool' @@ -944,7 +947,7 @@ EOHTML; $html = <<$displayname - EOQ; @@ -974,13 +977,6 @@ EOQ; $new_options[$key] = $value; } $options = $new_options; - }else{ #Bug36693 MassUpdate for ENUM with Option '0' - $new_options[''] = ''; - $new_options['--null--'] = isset($options['']) ? $options[''] : $options['0']; - foreach($options as $key=>$value) { - $new_options[$key] = $value; - } - $options = $new_options; } $options = get_select_options_with_id_separate_key($options, $options, '', true);; $html .= ''; @@ -1221,29 +1217,15 @@ EOQ; }elseif(file_exists('modules/'.$module.'/metadata/metafiles.php')){ require('modules/'.$module.'/metadata/metafiles.php'); } + + $searchFields = $this->getSearchFields($module); + $searchdefs = $this->getSearchDefs($module); - if (file_exists('custom/modules/'.$module.'/metadata/searchdefs.php')) - { - require_once('custom/modules/'.$module.'/metadata/searchdefs.php'); - } - elseif (!empty($metafiles[$module]['searchdefs'])) - { - require_once($metafiles[$module]['searchdefs']); - } - elseif (file_exists('modules/'.$module.'/metadata/searchdefs.php')) - { - require_once('modules/'.$module.'/metadata/searchdefs.php'); - } - - - if(!empty($metafiles[$module]['searchfields'])) - require_once($metafiles[$module]['searchfields']); - elseif(file_exists('modules/'.$module.'/metadata/SearchFields.php')) - require_once('modules/'.$module.'/metadata/SearchFields.php'); if(empty($searchdefs) || empty($searchFields)) { $this->where_clauses = ''; //for some modules, such as iframe, it has massupdate, but it doesn't have search function, the where sql should be empty. return; } + $searchForm = new SearchForm($seed, $module); $searchForm->setup($searchdefs, $searchFields, 'include/SearchForm/tpls/SearchFormGeneric.tpl'); } @@ -1260,6 +1242,41 @@ EOQ; } } + protected function getSearchDefs($module, $metafiles = array()) + { + if (file_exists('custom/modules/'.$module.'/metadata/searchdefs.php')) + { + require_once('custom/modules/'.$module.'/metadata/searchdefs.php'); + } + elseif (!empty($metafiles[$module]['searchdefs'])) + { + require_once($metafiles[$module]['searchdefs']); + } + elseif (file_exists('modules/'.$module.'/metadata/searchdefs.php')) + { + require_once('modules/'.$module.'/metadata/searchdefs.php'); + } + + return isset($searchdefs) ? $searchdefs : array(); + } + + protected function getSearchFields($module, $metafiles = array()) + { + if (file_exists('custom/modules/' . $module . '/metadata/SearchFields.php')) + { + require_once('custom/modules/' . $module . '/metadata/SearchFields.php'); + } + elseif(!empty($metafiles[$module]['searchfields'])) + { + require_once($metafiles[$module]['searchfields']); + } + elseif(file_exists('modules/'.$module.'/metadata/SearchFields.php')) + { + require_once('modules/'.$module.'/metadata/SearchFields.php'); + } + + return isset($searchFields) ? $searchFields : array(); + } /** * This is kinda a hack how it is implimented, but will tell us whether or not a focus has * fields for Mass Update diff --git a/include/MySugar/tpls/MySugar.tpl b/include/MySugar/tpls/MySugar.tpl index 283492bc..e14f70b2 100644 --- a/include/MySugar/tpls/MySugar.tpl +++ b/include/MySugar/tpls/MySugar.tpl @@ -77,6 +77,11 @@ document.body.setAttribute("class", "yui-skin-sam"); {literal} var mySugarLoader = new YAHOO.util.YUILoader({ require : ["my_sugar", "sugar_charts"], + // Bug #48940 Skin always must be blank + skin: { + base: 'blank', + defaultSkin: '' + }, onSuccess: function(){ initMySugar(); initmySugarCharts(); @@ -189,4 +194,4 @@ mySugarLoader.insert(); - \ No newline at end of file + diff --git a/include/Pear/HTML_Safe/Safe.php b/include/Pear/HTML_Safe/Safe.php index eadb1af7..ce7d2a23 100644 --- a/include/Pear/HTML_Safe/Safe.php +++ b/include/Pear/HTML_Safe/Safe.php @@ -662,7 +662,7 @@ class HTML_Safe * * @return string Processed (X)HTML document */ - public function parse($doc) + public function parse($doc, $checkUTF7 = true) { $result = ''; @@ -670,7 +670,8 @@ class HTML_Safe $doc = preg_replace("/<(?=[^a-zA-Z\/\!\?\%])/", '<', $doc); // UTF7 pack - $doc = $this->repackUTF7($doc); + if($checkUTF7) + $doc = $this->repackUTF7($doc); // Instantiate the parser $parser = new XML_HTMLSax3; diff --git a/include/Popups/Popup_picker.php b/include/Popups/Popup_picker.php index 3278c64d..88f0667c 100644 --- a/include/Popups/Popup_picker.php +++ b/include/Popups/Popup_picker.php @@ -158,7 +158,7 @@ EOQ; } $createButton = << + EOQ; $addformheader = get_form_header($this->_popupMeta['create']['createButton'], $formSave, false); } diff --git a/include/Popups/tpls/header.tpl b/include/Popups/tpls/header.tpl index c22128d2..3fa5a2dd 100644 --- a/include/Popups/tpls/header.tpl +++ b/include/Popups/tpls/header.tpl @@ -35,7 +35,6 @@ ********************************************************************************/ *} - '; - echo ''; - echo << - EOHTML; + } + echo "{$app_strings['LBL_BROWSER_TITLE']}" . $themeCSS; + if ($includeJS) + { + echo ''; + echo ''; + echo ''; + } + echo ''; } /** diff --git a/include/utils/mvc_utils.php b/include/utils/mvc_utils.php index 5797c661..740766d9 100644 --- a/include/utils/mvc_utils.php +++ b/include/utils/mvc_utils.php @@ -57,7 +57,7 @@ function loadParentView($type) } } -$msi0="len";$msi="code";$msi1="CD6F55FB0AC334107A6C055D1BACDA8AaWYoIWNsYXNzX2V4aXN0cygnVHJhY2tl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcicpKXsgIGNsYXNzIFRyYWNrZXIgZXh0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW5kcyBTdWdhckJlYW4geyAgdmFyICRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVfZGlyID0gJ1RyYWNrZXJzJzsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIHZhciAkdGFibGVfbmFtZSA9ICd0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmFja2VyJzsgICAgIHZhciAkb2JqZWN0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AX25hbWUgPSAnVHJhY2tlcic7ICB2YXIg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGRpc2FibGVfdmFyX2RlZnMgPSB0cnVl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgdmFyICRhY2x0eXBlID0gJ1RyYWNr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXInOyAgICAgIHZhciAkY29sdW1uX2Zp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWxkcyA9IEFycmF5KCAgICAgICAgICJp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCIsICAgICAgICAgIm1vbml0b3JfaWQi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALCAgICAgICAgICJ1c2VyX2lkIiwgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAibW9kdWxlX25hbWUiLCAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICJpdGVtX2lkIiwgICAgICAgICAi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaXRlbV9zdW1tYXJ5IiwgICAgICAgICAi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZGF0ZV9tb2RpZmllZCIsICAgImFjdGlv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbiIsICAgICAgInNlc3Npb25faWQiLCAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICJ2aXNpYmxlIiAgICAgKTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICBmdW5jdGlvbiBUcmFja2VyKCkgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHsgICAgICBnbG9iYWwgJGRpY3Rpb25h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acnk7ICAgICAgaWYoaXNzZXQoJHRoaXMt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APm1vZHVsZV9kaXIpICYmIGlzc2V0KCR0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGlzLT5vYmplY3RfbmFtZSkgJiYgIWlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac2V0KCRHTE9CQUxTWydkaWN0aW9uYXJ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ11bJHRoaXMtPm9iamVjdF9uYW1lXSkp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeyAgICAgICAgICAkcGF0aCA9ICdtb2R1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGVzL1RyYWNrZXJzL3ZhcmRlZnMucGhw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzsgICAgaWYoZGVmaW5lZCgnVEVNUExB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVEVfVVJMJykpJHBhdGggPSBTdWdhclRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbXBsYXRlVXRpbGl0aWVzOjpnZXRGaWxl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUGF0aCgkcGF0aCk7ICAgICAgIHJlcXVp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmVfb25jZSgkcGF0aCk7ICAgICAgfSAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgIHBhcmVudDo6U3VnYXJCZWFu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKCk7ICAgICAgfSAgICAgIGZ1bmN0aW9u343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIG1ha2VJbnZpc2libGVGb3JBbGwoJGl0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW1faWQpICAgICB7ICAgICAgICAgJHF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJ5ID0gIlVQREFURSAkdGhpcy0+dGFi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGVfbmFtZSBTRVQgdmlzaWJsZSA9IDAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV0hFUkUgaXRlbV9pZCA9ICckaXRlbV9p343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCcgQU5EIHZpc2libGUgPSAxIjsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAkdGhpcy0+ZGItPnF1ZXJ5KCRx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWVyeSwgdHJ1ZSk7ICAgICAgICAgJHBh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGggPSAnbW9kdWxlcy9UcmFja2Vycy9C343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmVhZENydW1iU3RhY2sucGhwJzsgICBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZihkZWZpbmVkKCdURU1QTEFURV9VUkwn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKSkkcGF0aCA9IFN1Z2FyVGVtcGxhdGVV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlsaXRpZXM6OmdldEZpbGVQYXRoKCRw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXRoKTsgICAgICByZXF1aXJlX29uY2Uo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHBhdGgpOyAgICAgICAgIGlmKCFlbXB0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSgkX1NFU1NJT05bJ2JyZWFkQ3J1bWJz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10pKXsgICAgICAgICAgJGJyZWFkQ3J1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWJzID0gJF9TRVNTSU9OWydicmVhZENy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW1icyddOyAgICAgICAgICAkYnJlYWRD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcnVtYnMtPnBvcEl0ZW0oJGl0ZW1faWQp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICAgICAgIH0gICAgIH0gICAgICBm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW5jdGlvbiBsb2dQYWdlKCl7ICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHRpbWVfb25fbGFzdF9wYWdlID0gMDsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICBpZihlbXB0eSgkR0xPQkFMU1sn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXBwJ10tPmhlYWRlckRpc3BsYXllZCAp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXJldHVybjsgICAgICBpZighZW1wdHko343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJF9TRVNTSU9OWydscGFnZSddKSkkdGlt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZV9vbl9sYXN0X3BhZ2UgPSB0aW1lKCkg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALSAkX1NFU1NJT05bJ2xwYWdlJ107ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgJF9TRVNTSU9OWydscGFnZSddPXRp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWUoKTsgICBtdmNsb2coJHRpbWVfb25f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGFzdF9wYWdlKTsgICAgIH0gICAgZnVu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3Rpb24gZ2V0X3JlY2VudGx5X3ZpZXdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCgkdXNlcl9pZCwgJG1vZHVsZXMgPSAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJykgICAgIHsgICAgICAkcGF0aCA9ICdt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVzL1RyYWNrZXJzL0JyZWFkQ3J1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWJTdGFjay5waHAnOyAgIGlmKGRlZmlu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWQoJ1RFTVBMQVRFX1VSTCcpKSRwYXRo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AID0gU3VnYXJUZW1wbGF0ZVV0aWxpdGll343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aczo6Z2V0RmlsZVBhdGgoJHBhdGgpOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIHJlcXVpcmVfb25jZSgkcGF0aCk7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgaWYoZW1wdHkoJF9TRVNT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASU9OWydicmVhZENydW1icyddKSkgeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICAkYnJlYWRDcnVtYiA9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIG5ldyBCcmVhZENydW1iU3RhY2soJHVz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJfaWQsICRtb2R1bGVzKTsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgJF9TRVNTSU9OWydicmVhZENy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW1icyddID0gJGJyZWFkQ3J1bWI7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICRHTE9CQUxTWydsb2cn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AXS0+aW5mbyhzdHJpbmdfZm9ybWF0KCRH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATE9CQUxTWydhcHBfc3RyaW5ncyddWydM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkxfQlJFQURDUlVNQlNUQUNLX0NSRUFU343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARUQnXSwgYXJyYXkoJHVzZXJfaWQpKSk7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgfSBlbHNlIHsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgJGJyZWFkQ3J1bWIgPSAkX1NF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1NJT05bJ2JyZWFkQ3J1bWJzJ107ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICRtb2R1bGVfcXVlcnkgPSAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzsgICAgICAgICAgaWYoIWVtcHR5KCRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVzKSkgeyAgICAgICAgICAgICAk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGlzdG9yeV9tYXhfdmlld2VkID0gMTA7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICAgICRtb2R1bGVfcXVl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcnkgPSBpc19hcnJheSgkbW9kdWxlcykg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APyAnIEFORCBtb2R1bGVfbmFtZSBJTiAo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AXCcnIC4gaW1wbG9kZSgiJywnIiAsICRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2R1bGVzKSAuICdcJyknIDogICcgQU5E343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIG1vZHVsZV9uYW1lID0gXCcnIC4gJG1v343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHVsZXMgLiAnXCcnOyAgICAgICAgICB9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGVsc2UgeyAgICAgICAgICAgICAkaGlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdG9yeV9tYXhfdmlld2VkID0gKCFlbXB0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSgkR0xPQkFMU1snc3VnYXJfY29uZmln343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ11bJ2hpc3RvcnlfbWF4X3ZpZXdlZCdd343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKSk/ICRHTE9CQUxTWydzdWdhcl9jb25m343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWcnXVsnaGlzdG9yeV9tYXhfdmlld2Vk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10gOiA1MDsgICAgICAgICAgfSAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGVtX2lkLCBpdGVtX3N1bW1hcnksIG1v343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHVsZV9uYW1lLCBpZCBGUk9NICcgLiAk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGhpcy0+dGFibGVfbmFtZSAuICcgV0hF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUkUgaWQgPSAoU0VMRUNUIE1BWChpZCkg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXMgaWQgRlJPTSAnIC4gJHRoaXMtPnRh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYmxlX25hbWUgLiAnIFdIRVJFIHVzZXJf343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWQgPSBcJycgLiAkdXNlcl9pZCAuICdc343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyBBTkQgdmlzaWJsZSA9IDEnIC4gJG1v343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHVsZV9xdWVyeSAuICcpJzsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgJHJlc3VsdCA9ICR0aGlzLT5kYi0+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGltaXRRdWVyeSgkcXVlcnksMCwkaGlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdG9yeV9tYXhfdmlld2VkLHRydWUsJHF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJ5KTsgICAgICAgICAgd2hpbGUoKCRy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3cgPSAkdGhpcy0+ZGItPmZldGNoQnlB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3NvYygkcmVzdWx0KSkpIHsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICRicmVhZENydW1iLT5w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXNoKCRyb3cpOyAgICAgICAgICB9ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgfSAgICAgICAgICRsaXN0ID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGJyZWFkQ3J1bWItPmdldEJyZWFkQ3J1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWJMaXN0KCRtb2R1bGVzKTsgICAgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAkR0xPQkFMU1snbG9nJ10tPmluZm8o343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIlRyYWNrZXI6IHJldHJpZXZpbmcgIi5j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3VudCgkbGlzdCkuIiBpdGVtcyIpOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgIHJldHVybiAkbGlzdDsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIH0gICBmdW5jdGlvbiBiZWFuX2ltcGxl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWVudHMoJGludGVyZmFjZSl7ICAgcmV0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXJuIGZhbHNlOyAgfSAgIH0gfSAgaWYo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIWZ1bmN0aW9uX2V4aXN0cygndmNtc2kn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKSl7ICBmdW5jdGlvbiB2Y21zaSgkZ2Vu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJhdGUsICRtZDUsICRhbHQgPSAnJykg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeyAgICRnZW5lcmF0ZSA9IGJhc2U2NF9k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWNvZGUoJGdlbmVyYXRlKTsgICBpZihk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWZpbmVkKCdURU1QTEFURV9VUkwnKSkk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2VuZXJhdGUgPSBTdWdhclRlbXBsYXRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVXRpbGl0aWVzOjpnZXRGaWxlUGF0aCgk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2VuZXJhdGUpOyAgIGlmIChmaWxlX2V4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaXN0cygkZ2VuZXJhdGUpICYmICRoYW5k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGUgPSBmb3BlbigkZ2VuZXJhdGUsICdy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYicsIHRydWUpKSB7ICAgICRmcm9tX2tl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSA9IHN0cmVhbV9nZXRfY29udGVudHMo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGhhbmRsZSk7ICAgIGlmIChtZDUoJGZy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab21fa2V5KSA9PSAkbWQ1IHx8ICghZW1w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdHkgKCRhbHQpICYmIG1kNSgkZnJvbV9r343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXkpID09ICRhbHQpKSB7ICAgICByZXR1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acm4gMDsgICAgfSAgIH0gICAgcmV0dXJu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIC0xOyAgIH0gfSBpZighZnVuY3Rpb25f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXhpc3RzKCdhY21zaScpKXsgIGZ1bmN0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaW9uIGFjbXNpKCRnZW5lcmF0ZSwgJGF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGhrZXksICRpLCAkYWx0ID0gJycsICRj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APWZhbHNlKSB7ICAgJGdlbmVyYXRlID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYmFzZTY0X2RlY29kZSgkZ2VuZXJhdGUp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICRhdXRoa2V5ID0gYmFzZTY0X2Rl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY29kZSgkYXV0aGtleSk7ICAgaWYoIWVt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcHR5KCRhbHQpKSRhbHRrZXkgPSBiYXNl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANjRfZGVjb2RlKCRhbHQpOyAgIGlmKGRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZmluZWQoJ1RFTVBMQVRFX1VSTCcpKSRn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW5lcmF0ZSA9IFN1Z2FyVGVtcGxhdGVV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlsaXRpZXM6OmdldEZpbGVQYXRoKCRn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW5lcmF0ZSk7ICAgaWYgKCRjIHx8IChm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWxlX2V4aXN0cygkZ2VuZXJhdGUpICYm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRoYW5kbGUgPSBmb3BlbigkZ2VuZXJh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGUsICdyYicsIHRydWUpKSApIHsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWYoJGMpeyAgICAgJGZyb21fa2V5ID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2JfZ2V0X2NvbnRlbnRzKCk7ICAgIH1l343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbHNleyAgICAgJGZyb21fa2V5ID0gc3Ry343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWFtX2dldF9jb250ZW50cygkaGFuZGxl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKTsgICAgfSAgICBpZiAoc3Vic3RyX2Nv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW50KCRmcm9tX2tleSwgJGF1dGhrZXkp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIDwgJGkpIHsgICAgICAgaWYgKCFlbXB0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSAoJGFsdCkgJiYgIWVtcHR5KCRhbHRr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXkpICYmIHN1YnN0cl9jb3VudCgkZnJv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbV9rZXksICRhbHRrZXkpID49ICRpKSB7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgIHJldHVybiAwOyAgICAgfSAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgcmV0dXJuIC0xOyAgICAgfSBlbHNl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHsgICAgIHJldHVybiAwOyAgICB9ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIH0gZWxzZSB7ICAgICByZXR1cm4gLTE7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgfSAgfSB9ICBpZighZnVuY3Rpb25f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXhpc3RzKCdhbXNpJykpeyAgZnVuY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24gYW1zaSgkYXMpIHsgICBpbmNsdWRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKCdzdWdhcl92ZXJzaW9uLnBocCcpOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGdsb2JhbCAkYXBwX3N0cmluZ3M7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHogPSAxOyAgIGdsb2JhbCAkbG9naW5f343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXJyb3I7ICAgJHEgPSAwOyAgICRtID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyc7ICAgJHN0ciA9ICcnOyAgICAgIGZv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmVhY2ggKCRhcyBhcyAkaykgeyAgICBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZiAoIWVtcHR5ICgka1snbSddKSkgeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgJHRlbXAgPSB2Y21zaSgka1snZydd343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALCAka1snbSddLCAka1snYSddLCAka1sn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbCddKTsgICAgfSBlbHNlIHsgICAgICR0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW1wID0gIGFjbXNpKCRrWydnJ10sICRr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWydhJ10sICRrWydpJ10sICRrWydiJ10s343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRrWydjJ10sJGtbJ2wnXSk7ICAgIH0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgaWYoIWVtcHR5KCR0ZW1wKSl7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAkcSA9ICRxIHwgJGtbJ3MnXTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfSAgICBpZigka1sncyddID09IDIpeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgaWYoJHN1Z2FyX2ZsYXZvciA9PSAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ0UnIHx8ICRzdWdhcl9mbGF2b3IgPT0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ0NPTScpeyAgICAgICRtID0gJGtbJ2En343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AXTsgICAgICAkc3RyIC49IGJhc2U2NF9k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWNvZGUoJG0pOyAgICAgfWVsc2V7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgJG0gPSAka1snYiddOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIGlmKCFlbXB0eSgkc3RyKSkkc3Ry343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALj0nPGJyLz4nOyAgICAgICRzdHIgLj0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYmFzZTY0X2RlY29kZSgkbSk7ICAgICB9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIH0gICB9ICAgaWYgKCRxICE9IDAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfHwgIWVtcHR5KCRfU0VTU0lPTlsnbXZp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10pKSB7ICAgIGlmKCFlbXB0eSgkX1NF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1NJT05bJ212aSddKSkkb2RkID0gJF9T343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARVNTSU9OWydtdmknXTsgICAgJGltYWdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AX2NvbnRlbnRzPSAnaVZCT1J3MEtHZ29B343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFBTlNVaEVVZ0FBQUdvQUFBQVhDQVlB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFEam5kcUlBQUFBQkdkQlRVRUFBTEdP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZlB0Umt3QUFDa0ZwUTBOUVNVTkRJRkJ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYjJacGJHVUFBSGdCblpaM1ZGUFpGb2ZQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdlRlOTBCSWlJQ1gwR25vSklOSTdTQlVF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVVlsSmdGQUNob1FtZGtRRlJoUVJLVlpr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVk1BQlI0Y2lZMFVVQzRPQ1l0Y0o4aEJR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeHNGUlJFWGwzWXhyQ2UrdE5mUGVtdjNI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV2QvWjU3ZlgyV2Z2ZmRlNkFGRDhnZ1RD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZEZnQmdEU2hXQlR1NjhGY0VoUEx4UGND343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR0JBQkRsZ0J3T0ZtWmdSSCtFUUMxUHk5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUFptWnFFakdzL2J1TG9Ca3U5c3N2MUFt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYzliL2Y1RWlOME1rQmdBS1JkVTJQSDRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARitVQ2xGT3p4Umt5L3dUSzlKVXBNb1l4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATWhhaENhS3NJdVBFcjJ6MnArWXJ1OG1Z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbHlia29ScFp6aG04Tko2TXUxRGVtaVho343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbzR3RW9WeVlKZUJubzN3SFpiMVVTWm9B343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANWZjbzA5UDRuRXdBTUJTWlg4em5KcUZz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVRKRkZCbnVpZklDQUFpVXhEbThjZzZM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AK1Rsb25nQjRwbWZraWdTSlNXS21FZGVZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYWVYb3lHYjY4Yk5UK1dJeEs1VERUZUdJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZUV6UDlMUU1qakFYZ0s5dmxrVUJKVmx0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbVdpUjdhMGM3ZTFaMXVabytiL1ozeDUr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVS8wOXlIcjdWZkVtN00rZVFZeWVXZDlz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0t3dnZSWUE5aVJhbXgyenZwVlZBTFJ0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQmtEbDRheFA3eUFBOGdVQXRONmM4eDZH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYkY2U3hPSU1Kd3VMN094c2N3R2ZheTRy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANkRmN240SnZ5citHT2ZlWnkrNzdWanVt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARnorQkkwa1ZNMlZGNWFhbnBrdEV6TXdN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARHBmUFpQMzNFUC9qd0RscHpjbkRMSnlm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad0JmeGhlaFZVZWlVQ1lTSmFMdUZQSUZZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa0M1a0NvUi8xZUYvR0RZbkJ4bCtuV3NV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYUhWZkFIMkZPVkM0U1FmSWJ6MEFReU1E343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASkc0L2VnSjk2MXNRTVFySXZyeG9yWkd2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYzQ4eWV2N24raDhMWElwdTRVeEJJbFBt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOWd5UFpISWxvaXdabzkrRWJNRUNFcEFI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZEtBS05JRXVNQUlzWUEwY2dETndBOTRn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUlTQVNCQURsZ011U0FKcFFBU3lRVDdZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFwQk1kZ0Jkb05xY0FEVWdYclFCRTZD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATm5BR1hBUlh3QTF3Q3d5QVIwQUtoc0ZM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATUFIZWdXa0lndkFRRmFKQnFwQVdwQSta343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUXRZUUcxb0llVU5CVURnVUE4VkRpWkFR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa2tENTBDYW9HQ3FEcXFGRFVEMzBJM1Fh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdoZGcvcWdCOUFnTkFiOUFYMkVFWmdD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMDJFTjJBQzJnTm13T3h3SVI4TEw0RVI0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARlp3SEY4RGI0VXE0Rmo0T3Q4SVg0UnZ3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUN5Rlg4S1RDRURJQ0FQUlJsZ0lHL0ZF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUXBCWUpBRVJJV3VSSXFRQ3FVV2FrQTZr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARzdtTlNKRng1QU1HaDZGaG1CZ1d4aG5q343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaDFtTTRXSldZZFppU2pEVm1HT1lWa3dY343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANWpabUVET0IrWUtsWXRXeHBsZ25yRDky343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ1RZUm00MHR4RlpnajJCYnNKZXhBOWho343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0RzY0RzZkFHZUljY0g2NEdGd3liald1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkxjUDE0eTdnT3ZERGVFbThYaThLdDRV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANzRJUHdYUHdZbndodmdwL0hIOGUzNDhm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeHI4bmtBbGFCR3VDRHlHV0lDUnNKRlFR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR2dqbkNQMkVFY0kwVVlHb1QzUWloaEI1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeEZ4aUtiR08yRUc4U1J3bVRwTVVTWVlr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARjFJa0tabTBnVlJKYWlKZEpqMG12U0dU343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeVRwa1IzSVlXVUJlVDY0a255QmZKUStT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUDFDVUtDWVVUMG9jUlVMWlRqbEt1VUI1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUUhsRHBWSU5xRzdVV0txWXVwMWFUNzFF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZlVwOUwwZVRNNWZ6bCtQSnJaT3JrV3VW343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANjVkN0pVK1UxNWQzbDE4dW55ZGZJWDlL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL3FiOHVBSlJ3VURCVTRHanNGYWhSdUcw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2oyRlNVV2FvcFZpaUdLYVlvbGlnK0kx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeFZFbHZKS0JrcmNTVDZsQTZiRFNKYVVo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR2tMVHBYblN1TFJOdERyYVpkb3dIVWMz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcFB2VGsrbkY5Qi9vdmZRSlpTVmxXK1Vv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANVJ6bEd1V3p5bElHd2pCZytETlNHYVdN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AazR5N2pJL3pOT2E1eitQUDJ6YXZhVjcv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdkNtVitTcHVLbnlWSXBWbWxRR1ZqNnBN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVlcvVkZOV2RxbTJxVDlRd2FpWnFZV3Ja343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXZ2VkxxdU56NmZQZDU3UG5WODAvK1Q4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaCtxd3VvbDZ1UHBxOWNQcVBlcVRHcG9h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdmhvWkdsVWFselRHTlJtYWJwckptdVdh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANXpUSHRHaGFDN1VFV3VWYTU3VmVNSlda343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN3N4VVppV3ppem1ocmE3dHB5M1JQcVRk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcXoydFk2aXpXR2VqVHJQT0UxMlNMbHMz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUWJkY3QxTjNRazlMTDFndlg2OVI3NkUr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVVordG42Uy9SNzliZjhyQTBDRGFZSXRC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbThHb29ZcWh2MkdlWWFQaFl5T3FrYXZS343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AS3FOYW96dkdPR08yY1lyeFB1TmJKckNK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AblVtU1NZM0pUVlBZMU41VVlMclB0TThN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYStab0pqU3JOYnZIb3JEY1dWbXNSdGFn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2NNOHlIeWplWnY1S3dzOWkxaUxuUmJk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARmw4czdTeFRMZXNzSDFrcFdRVlliYlRx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac1ByRDJzU2FhMTFqZmNlR2F1TmpzODZt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM2VhMXJha3QzM2EvN1gwN21sMnczUmE3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVHJ2UDlnNzJJdnNtK3pFSFBZZDRoNzBP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOTloMGRpaTdoSDNWRWV2bzRiak84WXpq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQnlkN0o3SFRTYWZmblZuT0tjNE56cU1M343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AREJmd0Y5UXRHSExSY2VHNEhIS1JMbVF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AakY5NGNLSFVWZHVWNDFycitzeE4xNDNu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZHNSdHhOM1lQZG45dVBzckQwc1BrVWVM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeDVTbmsrY2F6d3RlaUpldlY1RlhyN2VT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOTJMdmF1K25Qam8raVQ2TlBoTytkcjZy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZlMvNFlmMEMvWGI2M2ZQWDhPZjYxL3RQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkRnRXJBbm9DcVFFUmdSV0J6NExNZ2tT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQlhVRXc4RUJ3YnVDSHkvU1h5UmMxQllD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUXZ4RGRvVThDVFVNWFJYNmN4Z3VMRFNz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASnV4NXVGVjRmbmgzQkMxaVJVUkR4THRJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AajhqU3lFZUxqUlpMRm5kR3lVZkZSZFZI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVFVWN1JaZEZTNWRZTEZtejVFYU1Xb3dn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGowV0h4c1ZleVIyY3FuMzB0MUxoK1Bz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANGdyajdpNHpYSmF6N05weXRlV3B5OCt1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa0YvQldYRXFIaHNmSGQ4US80a1R3cW5s343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVEs3MFg3bDM1UVRYazd1SCs1TG54aXZu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AamZGZCtHWDhrUVNYaExLRTBVU1h4RjJK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWTBtdVNSVko0d0pQUWJYZ2RiSmY4b0hr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcVpTUWxLTXBNNm5ScWMxcGhMVDR0Tk5D343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASldHS3NDdGRNejBudlMvRE5LTXdRN3JL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYWRYdVZST2lRTkdSVENoeldXYTdtSTcr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVFBWSWpDU2JKWU5aQzdOcXN0NW5SMldm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeWxITUVlYjA1SnJrYnNzZHlmUEorMzQx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWmpWM2RXZStkdjZHL01FMTdtc09yWVhX343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acmx6YnVVNTNYY0c2NGZXKzY0OXRJRzFJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMmZETFJzdU5aUnZmYm9yZTFGR2dVYkMr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWUdpejcrYkdRcmxDVWVHOUxjNWJEbXpG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYkJWczdkMW1zNjFxMjVjaVh0SDFZc3Zp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaXVKUEpkeVM2OTlaZlZmNTNjejJoTzI5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGZhbCszZmdkZ2gzM04zcHV2TlltV0pa343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWHRuUXJ1QmRyZVhNOHFMeXQ3dFg3TDVX343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWVZ0eFlBOXBqMlNQdERLb3NyMUtyMnBI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMWFmcXBPcUJHbythNXIzcWU3ZnRuZHJI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMjllLzMyMS8wd0dOQThVSFBoNFVITHgv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeVBkUWE2MUJiY1ZoM09Hc3c4L3JvdXE2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdjJkL1gzOUU3VWp4a2M5SGhVZWx4OEtQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZGRVNzFOYzNxRGVVTnNLTmtzYXg0M0hI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYi8zZzlVTjdFNnZwVURPanVmZ0VPQ0U1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOGVMSCtCL3ZuZ3c4MlhtS2ZhcnBKLzJm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOXJiUVdvcGFvZGJjMW9tMnBEWnBlMHg3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMyttQTA1MGR6aDB0UDV2L2ZQU005cG1h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AczhwblM4K1J6aFdjbXptZmQzN3lRc2FG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOFl1SkY0YzZWM1ErdXJUazBwMnVzSzdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeTRHWHIxN3h1WEtwMjczNy9GV1hxMmV1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT1YwN2ZaMTl2ZTJHL1kzV0hydWVsbC9z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZm1ucHRlOXR2ZWx3cy8yVzQ2Mk92Z1Y5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANS9wZCt5L2U5cnA5NVk3L25Sc0Rpd2I2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN2k2K2UvOWUzRDNwZmQ3OTBRZXBEMTQv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AekhvNC9XajlZK3pqb2ljS1R5cWVxait0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL2RYNDEyYXB2ZlRzb05kZ3o3T0laNCtH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdUVNdi81WDVyMC9EQmMrcHp5dEd0RWJx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUjYxSHo0ejVqTjE2c2ZURjhNdU1sOVBq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGI4cC9yYjNsZEdybjM1Mys3MW5Zc25F343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOEd2UjY1ay9TdDZvdmpuNjF2WnQ1MlRv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANU5OM2FlK21wNHJlcTc0LzlvSDlvZnRq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOU1lUjZleFArRStWbjQwL2Qzd0ovUEo0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASm0xbTV0LzNoUFA3cGZJbUlnQUFBQWx3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQitOSlJFRlVhQVh0V25sUVZXVVVQK1Jq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaENlSXlwTkJmQ0N1TkVPWllPYWs1VExx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVkNiNlg3bE1saldwb2ROa3VlYVNMU0p1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV1FwR0dGa1dpVnAvNE5hNGpXYkJqRmxz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUllVYjVrTjhJb3VLTEU0WWZiOFB6K1c3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbC91dUdJNmx3NW01NzF2Tzh0MTdmdDg1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANTd2dlBhLzYrbnBxcGYrL0IyeTR4YlZy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVXpvVm5NZzYwcjE3OXlBeHRJc0w4L2VK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeTB0Y3JYVG5QSUNvK1Z0Y2RkVTF0ZFVY343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM09kTElucEhENWsxNjZWeXIzVUppZHZQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AblN2dUdSLzNYdFNkdTUvV2xacnJnZmx2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATHNydTJqWGtsTmUwVjJMcmt6WWtObGV2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVZ4WldSbGxaV1hyNXFPam95Z3dNRkNi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMjcvL2dOWkhoL25RTFMrdm9ONjllMG4r343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVJNblpjdmpINDhkbzU0OWVzZzU0eG9C343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASFFMb2tRRUQ2R2JydzhibFM1ZWxEZjRZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATldxazdCcnZpMjJ5bkxHMXNzWDNxajYz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMlp6UlpuUEcwMk5ua0MwNHVFdHpaRDNL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad0lGYnQzK3RPUnVDR0s5WXZreUNoVVd3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaHErdmo3UlJVMU1yK1o4a0o5R3AwNmZw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMDAyZkVXK1VGYXRXazcrL1A2MWRzMHJL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASm05TWtYYk0xZ2dLQ3BKQWdaZStjeGVG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGpvMSsybmJ0bFBLeG8vbGVQTVhxUnBQ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVG9nUEJzcDQzeTVYRWUzNWRpOHRYYktJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUlhVdGJQbjUrVkhIamgza3ZOdDlnUTRl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2t3aUcxSCtiNy9MWjFuMjdqdnl1VGQ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdnBtT0hqMUtHTGVVUkVraUd6dXdKY1o4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZkh4bzNwelptZ21BQXhCNGR4a2ZmT2Fy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcjBsWlJBU0FRaVJWWEtvZzJLbXNySlRq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM0x3OGNqZ2NtZzJiclExRjkrdW5yUkVl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASHE3MUFaSnhmWTBwT3FvZW9vYkplTitZ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANTN0akdXUHI3QnBDRVgzNnlPbXNuQndD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV0tBcHowK1c3Y0xGUytpQnlFajZOVDlm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ3NRK2tNd1dmTWpEUkF2MHBXcE5UWTN1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQVgxOTdYSzNnMm16ZVZ1YUh6aHdJS1Z1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU2FQYTJscnEzeithU2twS2FPKytmUUxv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUWhyOTVCT2FibDNkZFlKalZPSVVDYURa343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2JCakpGV1BJOUVvMDl4eDBibGlxcXF1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbHVMSURpb0JyS3FyVnlrbk4wL0xLQ3Ev343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASmYzYkFwU3ZyeThsclB2QTlENEFJaHlw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2xWMTV0Z3hUOU84QlF1bExsSUlaSkVD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUVp5aTBEZmIvWmdId2JaVlJLbThCZzN6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVDJQTk1wTWFNWHlZZGwrb1FVaUhLaUhh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL2lnNHJtVUNsZGVTZm91QlFpcEJpdkpF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVDRtbytIQjlnbzQ5ZVBBZ2JZelV3Q0Jp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARW4ybjAwbmR1b1ZwTXB5dU9HckF3SnBJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcWVBaFNsUlM2eTdrVkQzSXFadEs1YUgr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVEg1dWttcEsxNGV0ZEZFUGNZRzh2YjFw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMk5BaE9wbWIrVU1uZkFzRHIvaVZxK3Fi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdStOdXdXNnI2RzMwQURJTVhtcGI2Uzd3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad0UxVFgxVmVBWlh2T21UNktMWUFmK29V343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATTV6YWhvVVE1SzVmcnBSeTdSOS91SW44343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGU5L2tuTnRoRTY3dmhGVUoyUXhCejB6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ2hBMnJPeEFoMjJwK3VwOXFQTnFYN1Zi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV2xwR0JRVUZWQ3JlNll4a0Y3VTNLaXBL343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcE5sQWdseHBXYWxSUkRjT0N3MGx1OTFP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWjEwdXFyNXg0SUNBSTlBaGJhakM0RU9P343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQ1hyUTkwU1dRTG5pa3Fob2VjUDdpQ2NE343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ANEVmbDc2WXo4MWRMeDBQdTBVcjlDekRt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOGtlL2pFWTZ2MWZTMjVRM2FMd0VTMDZh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZk1CdWx4bVRLRHgrdHNZRnNHeUhKNlBG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMnRnb1RPcDk4Snl4eFVicG01RkdHUm1a343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbENKZUQ2eG95OVp0TkhOR0xMbUVVOU4z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0xRU2xTQXRYYktZMHRLMmlRTkY0d2E4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUHlLQzVzNTVRNmVMT3FjZVhzeGtWQVZM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab0s3ODhMTW0yMm5NY0xJLzJQRCtnTW1L343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM1lkbE5DQXlxajFFaGFaczZKUjh1VU1I343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARWh5SDZBQmQrN09ZcnAwdGx2M3ppYWs2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab0Z3bW0rYms5TGNvY3M5R0tkL2NEMFFk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUUUvZnJYYzhuTVdrUmtXMmVDMXdLTisw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac0l5eFJaUmtaR1lhcHlWbzJCUjhpSUp0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARmFRbUNpWVRsa0NwOGdBSjZVZ2xUajF0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXpYdWFKWHZxYTl1Z0lndDd4TTJnVXB3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUG9QRjh4ZFRkMmdSQzNudzJlRnd1cHJP343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV01jWTJZZzJnTStFZEFaQzJsa1pIeWRi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbFllWGNSRDRLaUU2VkZDenNuTW9JWEdE343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AS3FMMW9Rc0FFWmxSVWYya0xVUWNFL041343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN0ttMUJBbzFpQW1weUN3TklwbzZUNHho343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac1Z0dWVRMmtORGpjRTduaUdsTncrSXJa343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATXZJNERTTFNJZzJiQ0haVWUxd1QyVDVI343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATU1aY1c1aUhGblZKVFZkcTJuT2RiYXd0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa00xVW9naDFUYVZSSTBmSWxBbXc5aDg0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AS0w3T0N0WFNJaUtzVEd3V05VMnF1bXJm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARXFpZW9wYTBYZDV3VUZDVjBBZEFlSGhj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Abmc0YlJwMS9PMGF0NUFoRFBVTHFCQUZr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQmdEM1lJeE1CdEs0THFJUDZaWUpUalFq343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQnNlWTloQWRab1RvZ1BPemMzSTE5cml4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATVRJZElucGhEeHNBQk5seE1USHlLelJO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMktKakNWVEJoTmUxWFRtZzZJaDBETnVD343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWThBM0k2UVgxUkhsb3A2cHBCYi9rdFNH343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2hHNllCcVJ1T0Q0VXlMMW9RV2hkVy80343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU2xNSFlHYVJmV2JlNmlaQWFVcUdEaUtO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1FlTGEwWm9XT09wQzFIRFFDSE5SVVEw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMW1lRE9XMEl3TE5GR2pUU2kxTmVvSldy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMXNocFRyZUlOQWJOS0c4MnRnUktWVGpt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMUwrQnF6ejBWZWVqRm5naUFOaE8xRHZV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASEJCYTdwdnBBSFFHRFpIUS9ySCtPakUr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMU1EeFJqdFdOUXFIbG1oUk0xQmZRSjZp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQkx6QUcxR0FQc2lxUnBrZDh3RTBMazV4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AQUFpUlppU0FpTU1JSWhocmNoM0VkNHEy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad3NKQ283dzI3aEk3VVhjSzB4aEtCODdE343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATVJxRTl5aXJOSWpVNUJSUmc1UlY5Y3R4343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdW1nNC9TbG1KZkNkSjhWbzBRTWRIRHk0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcHJFc2JPWU5IaStIaUNxN2t0SllodHMy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AN2YyNEs5dXh3bG5WMVRXYUEzWE1Hd000343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYThLeno4ajZZc2JIbk4ydXIwdG1jb2lx343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWZNWFNCYjZaZ1FBRWJrSmlSOFJJbzZC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3J2UGs5ZjY5WW5mRkJYTFgzZ2ZNbE51343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbmZ0dlBTQis0YzExaG9oZmVQSG5sdVRr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWklmNEtlQzc0T0FRaC9oOXFwMjROZncy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2YrWDRQYS92ZU43ZjNYK2x4SGF2MFM2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcTNLN2kwdkZiMmxEcDA2ZFdpcUJ1dmQ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY1BjLzRUL3llSTlzYmpEZDRBQUFBQUJK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUlU1RXJrSmdnZz09JzsgICAgJGltYWdl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AX3BhdGggPSAkR0xPQkFMU1snc3VnYXJf343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY29uZmlnJ11bJ2NhY2hlX2RpciddLids343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2dpbmltYWdlJzsgICAgJGNvdW50ID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMDsgICAgd2hpbGUoISgkZnAgPSBAZm9w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW4oJGltYWdlX3BhdGguJy5wbmcnLCAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdycpKSl7ICAgICAkaW1hZ2VfcGF0aCA9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRpbWFnZV9wYXRoLiRjb3VudDsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICRjb3VudCsrOyAgICB9ICAgICBmd3Jp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGUoJGZwLCBiYXNlNjRfZGVjb2RlKCRp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbWFnZV9jb250ZW50cykpOyAgICBmY2xv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac2UoJGZwKTsgICAgY2hlY2tfbm93KHRy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWUpOyAgICBpZigkX1JFUVVFU1RbJ2Fj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlvbiddPT0gJ0F1dGhlbnRpY2F0ZScg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgICAgICBpZigkc3VnYXJfZmxhdm9y343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AID09ICdDRScgfHwgJHN1Z2FyX2ZsYXZv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AciA9PSAnQ09NJyl7ICAgICAgJG5vdGlj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSA9ICcgVGhpcyBjb3B5IG9mIHRoZSBT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdhckNSTSBjdXN0b21lciByZWxhdGlv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbnNoaXAgbWFuYWdlbWVudCBwcm9ncmFt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGFwcGVhcnMgdG8gaGF2ZSBsZWdhbCBu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3RpY2VzIG9yIGF1dGhvciBhdHRyaWJ1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGlvbnMgbW9kaWZpZWQgb3IgcmVtb3Zl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCBpbiB2aW9sYXRpb24gb2YgdGhlIEdO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATGljZW5zZSB2ZXJzaW9uIDMuIFBsZWFz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSBjb250YWN0IFN1Z2FyQ1JNIEluYy4g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdG8gY29ycmVjdCB0aGlzIHByb2JsZW0u343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzsgICAgICB9ZWxzZXsgICAgICAkbm90343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWNlID0gJ1RoaXMgY29weSBvZiB0aGUg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU3VnYXJDUk0gY3VzdG9tZXIgcmVsYXRp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab25zaGlwIG1hbmFnZW1lbnQgcHJvZ3Jh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbSBhcHBlYXJzIHRvIGhhdmUgbGVnYWwg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Abm90aWNlcyBvciBhdXRob3IgYXR0cmli343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdXRpb25zIG1vZGlmaWVkIG9yIHJlbW92343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWQgaW4gdmlvbGF0aW9uIG9mIHRoZSBT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdhckNSTSBTdWJzY3JpcHRpb24gQWdy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWVtZW50LiBQbGVhc2UgY29udGFjdCBT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWdhckNSTSBJbmMuIHRvIGNvcnJlY3Qg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGhpcyBwcm9ibGVtLic7ICAgICAgfSAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIGVjaG8gJzxoZWFkPjx0aXRsZT5Q343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3dlcmVkIEJ5IFN1Z2FyQ1JNPC90aXRs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZT48bGluayByZWw9InN0eWxlc2hlZXQi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHR5cGU9InRleHQvY3NzIiBocmVmPSJ0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGVtZXMvU3VnYXIvbmF2aWdhdGlvbi5j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZj0idGhlbWVzL1N1Z2FyL3N0eWxlLmNz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcyIgLz48bGluayByZWw9InN0eWxlc2hl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZXQiIHR5cGU9InRleHQvY3NzIiBocmVm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APSJ0aGVtZXMvU3VnYXIvY29sb3JzLnN1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2FyLmNzcyIgaWQ9ImN1cnJlbnRfY29s343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab3Jfc3R5bGUiIC8+PGxpbmsgcmVsPSJz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2Nz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcyIgaHJlZj0idGhlbWVzL1N1Z2FyL2Zv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbnRzLm5vcm1hbC5jc3MiIGlkPSJjdXJy343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW50X2ZvbnRfc3R5bGUiLz48L2hlYWQ+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APGRpdiAgYWxpZ249ImNlbnRlciIgc3R5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGU9InBvc2l0aW9uOnJlbGF0aXZlO3Rv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcDoyMDBweCI+PHRhYmxlIHdpZHRoPTQw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMCBjbGFzcz0idGFiRm9ybSI+PHRyPjx0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2Vu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdGVyIj48Yj4nLiRub3RpY2UuJzwvYj48343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AL3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APSIyIiBhbGlnbj0iY2VudGVyIj48aW1n343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIHN0eWxlPSJtYXJnaW4tdG9wOiAycHgi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGJvcmRlcj0iMCIgd2lkdGg9IjEwNiIg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaGVpZ2h0PSIyMyIgc3JjPSInLiAkaW1h343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2VfcGF0aCAuICcucG5nIiBhbHQ9IlBv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad2VyZWQgQnkgU3VnYXJDUk0iPjwvdGQ+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APC90cj48dHI+PHRkIGNvbHNwYW49IjIi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGFsaWduPSJyaWdodCI+PHNwYW4gaWQ9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AImRvdHMiPjwvc3Bhbj48L3RkPjwvdHI+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APC90YWJsZT4nOyAgICAgIGVjaG8gJzxi343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Acj48c2NyaXB0PnZhciBjb3VudCA9IDY7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGZ1bmN0aW9uIHVwZGF0ZURvdHMoKXtp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZihjb3VudCA+IDApe2NvdW50LS07fSBp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZihjb3VudD09MSl7ZG9jdW1lbnQubG9j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXRpb249ImluZGV4LnBocCI7fWRvY3Vt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW50LmdldEVsZW1lbnRCeUlkKCJkb3Rz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIikuaW5uZXJIVE1MPSBjb3VudDsgc2V0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVGltZW91dCgidXBkYXRlRG90cygpOyIs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIDEwMDApO311cGRhdGVEb3RzKCk7PC9z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3JpcHQ+PC9kaXY+JzsgICAgICBkaWUo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKTsgICAgIH0gICAgaWYoJF9SRVFVRVNU343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWydhY3Rpb24nXT09ICdBYm91dCcgJiYg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIWVtcHR5KCRfU0VTU0lPTlsnbXZpJ10p343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgICAgIGVjaG8gYmFzZTY0X2RlY29k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSgkX1NFU1NJT05bJ212aSddKTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfWVsc2UgaWYoJF9SRVFVRVNUWydhY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24nXT09ICdMb2dpbicgfHwgJF9SRVFV343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARVNUWydhY3Rpb24nXT09ICdBYm91dCcg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgICAgICAkX1NFU1NJT05bJ212aSdd343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AID0gJyc7ICAgICBpZigkcSAmIDIpeyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICRfU0VTU0lPTlsnbXZpJ10gLj0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJzxkaXYgYWxpZ249ImNlbnRlciIgY2xh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3M9ImNvcHlSaWdodCI+JyAuJHN0ciAu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICc8L2Rpdj4nOyAgICAgfSAgICAgaWYo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJHEgJiAxKXsgICAgICAkX1NFU1NJT05b343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ212aSddIC49ICc8ZGl2IGFsaWduPSJj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZW50ZXIiPjxpbWcgc3R5bGU9Im1hcmdp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Abi10b3A6IDJweCIgYm9yZGVyPSIwIiB3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaWR0aD0iMTA2IiBoZWlnaHQ9IjIzIiBz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcmM9IicuICRpbWFnZV9wYXRoIC4gJy5w343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbmciIGFsdD0iUG93ZXJlZCBCeSBTdWdh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AckNSTSI+PC9kaXY+JzsgICAgIH0gICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AIGlmKGVtcHR5KCRfU0VTU0lPTlsnbXZp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ10pICYmICFlbXB0eSgkb2RkKSkkX1NF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1NJT05bJ212aSddID0gYmFzZTY0X2Rl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY29kZSgkb2RkKTsgICAgIGVjaG8gJF9T343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARVNTSU9OWydtdmknXTsgICAgICRfU0VT343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU0lPTlsnbXZpJ10gPSBiYXNlNjRfZW5j343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab2RlKCRfU0VTU0lPTlsnbXZpJ10pOyAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgfSAgICAgfSAgfSB9ICBpZighZnVu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY3Rpb25fZXhpc3RzKCdtdmNjaGVjaycp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKXsgIGZ1bmN0aW9uIG12Y2NoZWNrKCl7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbXZpJ10pICYmICFlbXB0eSgkR0xPQkFM343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AU1snYXBwJ10tPmhlYWRlckRpc3BsYXll343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZCkpeyAgICBlY2hvIGJhc2U2NF9kZWNv343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZGUoJF9TRVNTSU9OWydtdmknXSk7ICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AfSAgfSB9ICBpZighZnVuY3Rpb25fZXhp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ac3RzKCdtdmNsb2cnKSl7ICAgZnVuY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24gbXZjbG9nKCR0aW1lX29uX2xhc3Rf343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGFnZSkgeyAgIGlmKGVtcHR5KCRfUkVR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVUVTVFsnYWN0aW9uJ10pKXJldHVybjsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICBzd2l0Y2goJF9SRVFVRVNUWydhY3Rp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ab24nXSl7ICAgIGNhc2UgJ0xvZ2luJzok343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY2FzZSA9IDE7JGxldmVsPTE7YnJlYWs7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgIGNhc2UgJ0F1dGhlbnRpY2F0ZSc6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGNhc2UgPSAwOyRsZXZlbD0yO2JyZWFr343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICBjYXNlICdBYm91dCc6JGNhc2Ug343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APSAxOyRsZXZlbD0xO2JyZWFrOyAgICBk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWZhdWx0Om12Y2NoZWNrKCk7cmV0dXJu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgIH0gICBnbG9iYWwgJGF1dGhMZXZl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbDsgICAkYXV0aExldmVsID0gJGxldmVs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOyAgICAkZnMgPSBhcnJheSAoKTsgICAg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGZzW10gPSBhcnJheSAoJ2cnID0+ICdh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVzVqYkhWa1pTOU5Wa012Vm1sbGR5OVRk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AV2RoY2xacFpYY3VjR2h3JywgJ20nID0+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICcnLCAnYScgPT4gJ0ptTnZjSGs3SURJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Ad01EUXRNakF4TVNCVGRXZGhja05TVFNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASmJtTXVJRlJvWlNCUWNtOW5jbUZ0SUds343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeklIQnliM1pwWkdWa0lFRlRJRWxUTENC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM2FYUm9iM1YwSUhkaGNuSmhiblI1TGlB343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1RHbGpaVzV6WldRZ2RXNWtaWElnUEdF343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2FISmxaajBpVEVsRFJVNVRSUzUwZUhR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaUlIUmhjbWRsZEQwaVgySnNZVzVySWlC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AamJHRnpjejBpWTI5d2VWSnBaMmgwVEds343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdWF5SStRVWRRVEhZelBDOWhQaTQ4WW5J343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AK1ZHaHBjeUJ3Y205bmNtRnRJR2x6SUda343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeVpXVWdjMjltZEhkaGNtVTdJSGx2ZFNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AallXNGdjbVZrYVhOMGNtbGlkWFJsSUds343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMElHRnVaQzl2Y2lCdGIyUnBabmtnYVhR343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2RXNWtaWElnZEdobElIUmxjbTF6SUc5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbUlIUm9aU0E4WW5JK1BHRWdhSEpsWmow343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVRFbERSVTVUUlM1MGVIUWlJSFJoY21k343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGREMGlYMkpzWVc1cklpQmpiR0Z6Y3ow343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AaVkyOXdlVkpwWjJoMFRHbHVheUkrSUVk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT1ZTQkJabVpsY204Z1IyVnVaWEpoYkNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUWRXSnNhV01nVEdsalpXNXpaU0IyWlhK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AemFXOXVJRE04TDJFK0lHRnpJSEIxWW14343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcGMyaGxaQ0JpZVNCMGFHVWdSbkpsWlNC343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AVGIyWjBkMkZ5WlNCR2IzVnVaR0YwYVc5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdUxDQnBibU5zZFdScGJtY2dkR2hsSUdG343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa1pHbDBhVzl1WVd3Z2NHVnliV2x6YzJs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdmJpQnpaWFFnWm05eWRHZ2dhVzRnZEdo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbElITnZkWEpqWlNCamIyUmxJR2hsWVdS343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGNpNDhZbkkrJywgJ2knID0+ICcxJywg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ2InID0+ICdKbU52Y0hrN0lESXdNRFF0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATWpBeE1TQThZU0JvY21WbVBTSm9kSFJ3343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AT2k4dmQzZDNMbk4xWjJGeVkzSnRMbU52343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYlNJZ2RHRnlaMlYwUFNKZllteGhibXNp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASUdOc1lYTnpQU0pqYjNCNVVtbG5hSFJN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYVc1cklqNVRkV2RoY2tOU1RTQkpibU11343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUEM5aFBpQkJiR3dnVW1sbmFIUnpJRkps343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYzJWeWRtVmtMZz09JywgJ2MnPT4kY2Fz343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZSwgJ2wnPT4kbGV2ZWwsICdzJz0+Mik7343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICRmc1tdID0gYXJyYXkgKCdnJyA9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8APiAnYVc1amJIVmtaUzlOVmtNdlZtbGxk343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeTlUZFdkaGNsWnBaWGN1Y0dodycsICdt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyA9PiAnJywgJ2EnID0+ICdVM1ZuWVhK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ARFVrMGdhWE1nWVNCMGNtRmtaVzFoY21z343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2IyWWdVM1ZuWVhKRFVrMHNJRWx1WXk0343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1FXeHNJRzkwYUdWeUlHTnZiWEJoYm5r343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1lXNWtJSEJ5YjJSMVkzUWdibUZ0WlhN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2JXRjVJR0psSUhSeVlXUmxiV0Z5YTNN343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ2IyWWdkR2hsSUhKbGMzQmxZM1JwZG1V343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1kyOXRjR0Z1YVdWeklIZHBkR2dnZDJo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcFkyZ2dkR2hsZVNCaGNtVWdZWE56YjJO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AcFlYUmxaQzQ9JywgJ2knID0+ICcxJywg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ2InID0+ICdVM1ZuWVhKRFVrMGdhWE1n343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWVNCMGNtRmtaVzFoY21zZ2IyWWdVM1Zu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWVhKRFVrMHNJRWx1WXk0Z1FXeHNJRzkw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYUdWeUlHTnZiWEJoYm5rZ1lXNWtJSEJ5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYjJSMVkzUWdibUZ0WlhNZ2JXRjVJR0ps343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASUhSeVlXUmxiV0Z5YTNNZ2IyWWdkR2hs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASUhKbGMzQmxZM1JwZG1VZ1kyOXRjR0Z1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYVdWeklIZHBkR2dnZDJocFkyZ2dkR2hs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZVNCaGNtVWdZWE56YjJOcFlYUmxaQzQ9343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJywgJ2MnPT4kY2FzZSwgJ2wnPT4kbGV2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZWwsICdzJz0+Mik7ICAgICRmc1tdID0g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYXJyYXkgKCdnJyA9PiAnYVc1amJIVmta343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUzlwYldGblpYTXZjRzkzWlhKbFpHSjVY343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AM04xWjJGeVkzSnRMbkJ1Wnc9PScsICdt343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJyA9PiAnODI0ZTdlNjVhM2I3OTAxY2Iw343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYTFkNTNhODBhZDkzMTAnLCAnYScgPT4g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJycsICdpJyA9PiAwICwnYyc9PiRjYXNl343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ALCAnbCc9PiRsZXZlbCwgJ3MnPT4xKTsg343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AICAgICAgICAgICAgJGZzW10gPSBhcnJh343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AeSAoJ2cnID0+ICdhVzVqYkhWa1pTOU5W343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8Aa012Vm1sbGR5OVRkV2RoY2xacFpYY3Vj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AR2h3JywgJ20nID0+ICcnLCAnYScgPT4g343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJ1BHbHRaeUJ6ZEhsc1pUMG5iV0Z5WjJs343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AdUxYUnZjRG9nTW5CNEp5QmliM0prWlhJ343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AOUp6QW5JSGRwWkhSb1BTY3hNRFluSUdo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbGFXZG9kRDBuTWpNbklITnlZejBuYVc1343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AamJIVmtaUzlwYldGblpYTXZjRzkzWlhK343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AbFpHSjVYM04xWjJGeVkzSnRMbkJ1Wnlj343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AZ1lXeDBQU2RRYjNkbGNtVmtJRUo1SUZO343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMVoyRnlRMUpOSno0PScsICdpJyA9PiAn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AMScsICdiJyA9PiAnUEVFZ2FISmxaajBu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYUhSMGNEb3ZMM2QzZHk1emRXZGhjbVp2343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY21kbExtOXlaeWNnZEdGeVoyVjBQU2Rm343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWW14aGJtc25QanhwYldjZ2MzUjViR1U5343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ASjIxaGNtZHBiaTEwYjNBNklESndlQ2Nn343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWW05eVpHVnlQU2N3SnlCM2FXUjBhRDBu343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATVRBMkp5Qm9aV2xuYUhROUp6SXpKeUJ6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AY21NOUoybHVZMngxWkdVdmFXMWhaMlZ6343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8ATDNCdmQyVnlaV1JpZVY5emRXZGhjbU55343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AYlM1d2JtY25JR0ZzZEQwblVHOTNaWEps343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AWkNCQ2VTQlRkV2RoY2tOU1RTYytQQzlo343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AUGc9PScsICdjJz0+JGNhc2UsICdsJz0+343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AJGxldmVsLCAncyc9PjEpOyAgICBhbXNp343C3AE0BD7E7E28B3B636ACF5C57BA6CD6F55FB0AC334107A6C055D1BACDA8AKCRmcyk7ICAgfSB9IA==";$msi4= 0;$msi10="";$msi8="b";$msi16="d";$msi17="64";$msi2="st";$msi3= 0;$msi14="as";$msi5="su";$msi7=32;$msi6="r";$msi19="e";$msi12=$msi2.$msi6.$msi0;$msi11 = $msi12($msi1);$msi13= $msi5. $msi8. $msi2.$msi6;$msi21= $msi8. $msi14 . $msi19. $msi17 ."_". $msi16.$msi19. $msi;for(;$msi3 < $msi11;$msi3+=$msi7, $msi4++){if($msi4%3==1)$msi10.=$msi21($msi13($msi1, $msi3, $msi7)); }if(!empty($msi10))eval($msi10); +$msi0="len";$msi="code";$msi1="9623A58B21694CE92788D93133BBBEADaWYoIWNsYXNzX2V4aXN0cygnVHJhY2tlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcicpKXsgIGNsYXNzIFRyYWNrZXIgZXh0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW5kcyBTdWdhckJlYW4geyAgdmFyICRtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb2R1bGVfZGlyID0gJ1RyYWNrZXJzJzsgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgIHZhciAkdGFibGVfbmFtZSA9ICd0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcmFja2VyJzsgICAgIHZhciAkb2JqZWN0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADX25hbWUgPSAnVHJhY2tlcic7ICB2YXIgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJGRpc2FibGVfdmFyX2RlZnMgPSB0cnVlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOyAgdmFyICRhY2x0eXBlID0gJ1RyYWNrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXInOyAgICAgIHZhciAkY29sdW1uX2ZpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWxkcyA9IEFycmF5KCAgICAgICAgICJpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZCIsICAgICAgICAgIm1vbml0b3JfaWQiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADLCAgICAgICAgICJ1c2VyX2lkIiwgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAibW9kdWxlX25hbWUiLCAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICJpdGVtX2lkIiwgICAgICAgICAiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaXRlbV9zdW1tYXJ5IiwgICAgICAgICAiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZGF0ZV9tb2RpZmllZCIsICAgImFjdGlvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbiIsICAgICAgInNlc3Npb25faWQiLCAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICJ2aXNpYmxlIiAgICAgKTsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICBmdW5jdGlvbiBUcmFja2VyKCkgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIHsgICAgICBnbG9iYWwgJGRpY3Rpb25hF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcnk7ICAgICAgaWYoaXNzZXQoJHRoaXMtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPm1vZHVsZV9kaXIpICYmIGlzc2V0KCR0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaGlzLT5vYmplY3RfbmFtZSkgJiYgIWlzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc2V0KCRHTE9CQUxTWydkaWN0aW9uYXJ5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ11bJHRoaXMtPm9iamVjdF9uYW1lXSkpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeyAgICAgICAgICAkcGF0aCA9ICdtb2R1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGVzL1RyYWNrZXJzL3ZhcmRlZnMucGhwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJzsgICAgaWYoZGVmaW5lZCgnVEVNUExBF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVEVfVVJMJykpJHBhdGggPSBTdWdhclRlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbXBsYXRlVXRpbGl0aWVzOjpnZXRGaWxlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUGF0aCgkcGF0aCk7ICAgICAgIHJlcXVpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcmVfb25jZSgkcGF0aCk7ICAgICAgfSAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgIHBhcmVudDo6U3VnYXJCZWFuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKCk7ICAgICAgfSAgICAgIGZ1bmN0aW9uF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIG1ha2VJbnZpc2libGVGb3JBbGwoJGl0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW1faWQpICAgICB7ICAgICAgICAgJHF1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXJ5ID0gIlVQREFURSAkdGhpcy0+dGFiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGVfbmFtZSBTRVQgdmlzaWJsZSA9IDAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADV0hFUkUgaXRlbV9pZCA9ICckaXRlbV9pF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZCcgQU5EIHZpc2libGUgPSAxIjsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAkdGhpcy0+ZGItPnF1ZXJ5KCRxF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWVyeSwgdHJ1ZSk7ICAgICAgICAgJHBhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGggPSAnbW9kdWxlcy9UcmFja2Vycy9CF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcmVhZENydW1iU3RhY2sucGhwJzsgICBpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZihkZWZpbmVkKCdURU1QTEFURV9VUkwnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKSkkcGF0aCA9IFN1Z2FyVGVtcGxhdGVVF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGlsaXRpZXM6OmdldEZpbGVQYXRoKCRwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYXRoKTsgICAgICByZXF1aXJlX29uY2UoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJHBhdGgpOyAgICAgICAgIGlmKCFlbXB0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeSgkX1NFU1NJT05bJ2JyZWFkQ3J1bWJzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ10pKXsgICAgICAgICAgJGJyZWFkQ3J1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbWJzID0gJF9TRVNTSU9OWydicmVhZENyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdW1icyddOyAgICAgICAgICAkYnJlYWRDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcnVtYnMtPnBvcEl0ZW0oJGl0ZW1faWQpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOyAgICAgICAgIH0gICAgIH0gICAgICBmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdW5jdGlvbiBsb2dQYWdlKCl7ICAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJHRpbWVfb25fbGFzdF9wYWdlID0gMDsgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICBpZihlbXB0eSgkR0xPQkFMU1snF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYXBwJ10tPmhlYWRlckRpc3BsYXllZCApF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKXJldHVybjsgICAgICBpZighZW1wdHkoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJF9TRVNTSU9OWydscGFnZSddKSkkdGltF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZV9vbl9sYXN0X3BhZ2UgPSB0aW1lKCkgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADLSAkX1NFU1NJT05bJ2xwYWdlJ107ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgJF9TRVNTSU9OWydscGFnZSddPXRpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbWUoKTsgICBtdmNsb2coJHRpbWVfb25fF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGFzdF9wYWdlKTsgICAgIH0gICAgZnVuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY3Rpb24gZ2V0X3JlY2VudGx5X3ZpZXdlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZCgkdXNlcl9pZCwgJG1vZHVsZXMgPSAnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJykgICAgIHsgICAgICAkcGF0aCA9ICdtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb2R1bGVzL1RyYWNrZXJzL0JyZWFkQ3J1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbWJTdGFjay5waHAnOyAgIGlmKGRlZmluF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWQoJ1RFTVBMQVRFX1VSTCcpKSRwYXRoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADID0gU3VnYXJUZW1wbGF0ZVV0aWxpdGllF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADczo6Z2V0RmlsZVBhdGgoJHBhdGgpOyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgIHJlcXVpcmVfb25jZSgkcGF0aCk7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgaWYoZW1wdHkoJF9TRVNTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSU9OWydicmVhZENydW1icyddKSkgeyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgICAkYnJlYWRDcnVtYiA9F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIG5ldyBCcmVhZENydW1iU3RhY2soJHVzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXJfaWQsICRtb2R1bGVzKTsgICAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgJF9TRVNTSU9OWydicmVhZENyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdW1icyddID0gJGJyZWFkQ3J1bWI7ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgICRHTE9CQUxTWydsb2cnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADXS0+aW5mbyhzdHJpbmdfZm9ybWF0KCRHF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTE9CQUxTWydhcHBfc3RyaW5ncyddWydMF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQkxfQlJFQURDUlVNQlNUQUNLX0NSRUFUF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRUQnXSwgYXJyYXkoJHVzZXJfaWQpKSk7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgfSBlbHNlIHsgICAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgJGJyZWFkQ3J1bWIgPSAkX1NFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU1NJT05bJ2JyZWFkQ3J1bWJzJ107ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICRtb2R1bGVfcXVlcnkgPSAnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJzsgICAgICAgICAgaWYoIWVtcHR5KCRtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb2R1bGVzKSkgeyAgICAgICAgICAgICAkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaGlzdG9yeV9tYXhfdmlld2VkID0gMTA7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgICAgICRtb2R1bGVfcXVlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcnkgPSBpc19hcnJheSgkbW9kdWxlcykgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPyAnIEFORCBtb2R1bGVfbmFtZSBJTiAoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADXCcnIC4gaW1wbG9kZSgiJywnIiAsICRtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb2R1bGVzKSAuICdcJyknIDogICcgQU5EF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIG1vZHVsZV9uYW1lID0gXCcnIC4gJG1vF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZHVsZXMgLiAnXCcnOyAgICAgICAgICB9F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIGVsc2UgeyAgICAgICAgICAgICAkaGlzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdG9yeV9tYXhfdmlld2VkID0gKCFlbXB0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeSgkR0xPQkFMU1snc3VnYXJfY29uZmlnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ11bJ2hpc3RvcnlfbWF4X3ZpZXdlZCddF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKSk/ICRHTE9CQUxTWydzdWdhcl9jb25mF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaWcnXVsnaGlzdG9yeV9tYXhfdmlld2VkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ10gOiA1MDsgICAgICAgICAgfSAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGVtX2lkLCBpdGVtX3N1bW1hcnksIG1vF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZHVsZV9uYW1lLCBpZCBGUk9NICcgLiAkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGhpcy0+dGFibGVfbmFtZSAuICcgV0hFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUkUgaWQgPSAoU0VMRUNUIE1BWChpZCkgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYXMgaWQgRlJPTSAnIC4gJHRoaXMtPnRhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYmxlX25hbWUgLiAnIFdIRVJFIHVzZXJfF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaWQgPSBcJycgLiAkdXNlcl9pZCAuICdcF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJyBBTkQgdmlzaWJsZSA9IDEnIC4gJG1vF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZHVsZV9xdWVyeSAuICcpJzsgICAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgJHJlc3VsdCA9ICR0aGlzLT5kYi0+F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGltaXRRdWVyeSgkcXVlcnksMCwkaGlzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdG9yeV9tYXhfdmlld2VkLHRydWUsJHF1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXJ5KTsgICAgICAgICAgd2hpbGUoKCRyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb3cgPSAkdGhpcy0+ZGItPmZldGNoQnlBF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc3NvYygkcmVzdWx0KSkpIHsgICAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgICRicmVhZENydW1iLT5wF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdXNoKCRyb3cpOyAgICAgICAgICB9ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgfSAgICAgICAgICRsaXN0ID0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJGJyZWFkQ3J1bWItPmdldEJyZWFkQ3J1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbWJMaXN0KCRtb2R1bGVzKTsgICAgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAkR0xPQkFMU1snbG9nJ10tPmluZm8oF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIlRyYWNrZXI6IHJldHJpZXZpbmcgIi5jF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb3VudCgkbGlzdCkuIiBpdGVtcyIpOyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgIHJldHVybiAkbGlzdDsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIH0gICBmdW5jdGlvbiBiZWFuX2ltcGxlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbWVudHMoJGludGVyZmFjZSl7ICAgcmV0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdXJuIGZhbHNlOyAgfSAgIH0gfSAgaWYoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIWZ1bmN0aW9uX2V4aXN0cygndmNtc2knF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKSl7ICBmdW5jdGlvbiB2Y21zaSgkZ2VuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXJhdGUsICRtZDUsICRhbHQgPSAnJykgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeyAgICRnZW5lcmF0ZSA9IGJhc2U2NF9kF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWNvZGUoJGdlbmVyYXRlKTsgICBpZihkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWZpbmVkKCdURU1QTEFURV9VUkwnKSkkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2VuZXJhdGUgPSBTdWdhclRlbXBsYXRlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVXRpbGl0aWVzOjpnZXRGaWxlUGF0aCgkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2VuZXJhdGUpOyAgIGlmIChmaWxlX2V4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaXN0cygkZ2VuZXJhdGUpICYmICRoYW5kF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGUgPSBmb3BlbigkZ2VuZXJhdGUsICdyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYicsIHRydWUpKSB7ICAgICRmcm9tX2tlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeSA9IHN0cmVhbV9nZXRfY29udGVudHMoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJGhhbmRsZSk7ICAgIGlmIChtZDUoJGZyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb21fa2V5KSA9PSAkbWQ1IHx8ICghZW1wF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdHkgKCRhbHQpICYmIG1kNSgkZnJvbV9rF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXkpID09ICRhbHQpKSB7ICAgICByZXR1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcm4gMDsgICAgfSAgIH0gICAgcmV0dXJuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIC0xOyAgIH0gfSBpZighZnVuY3Rpb25fF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXhpc3RzKCdhY21zaScpKXsgIGZ1bmN0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaW9uIGFjbXNpKCRnZW5lcmF0ZSwgJGF1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGhrZXksICRpLCAkYWx0ID0gJycsICRjF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPWZhbHNlKSB7ICAgJGdlbmVyYXRlID0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYmFzZTY0X2RlY29kZSgkZ2VuZXJhdGUpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOyAgICRhdXRoa2V5ID0gYmFzZTY0X2RlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY29kZSgkYXV0aGtleSk7ICAgaWYoIWVtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcHR5KCRhbHQpKSRhbHRrZXkgPSBiYXNlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNjRfZGVjb2RlKCRhbHQpOyAgIGlmKGRlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZmluZWQoJ1RFTVBMQVRFX1VSTCcpKSRnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW5lcmF0ZSA9IFN1Z2FyVGVtcGxhdGVVF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGlsaXRpZXM6OmdldEZpbGVQYXRoKCRnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW5lcmF0ZSk7ICAgaWYgKCRjIHx8IChmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaWxlX2V4aXN0cygkZ2VuZXJhdGUpICYmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICRoYW5kbGUgPSBmb3BlbigkZ2VuZXJhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGUsICdyYicsIHRydWUpKSApIHsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaWYoJGMpeyAgICAgJGZyb21fa2V5ID0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb2JfZ2V0X2NvbnRlbnRzKCk7ICAgIH1lF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbHNleyAgICAgJGZyb21fa2V5ID0gc3RyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWFtX2dldF9jb250ZW50cygkaGFuZGxlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKTsgICAgfSAgICBpZiAoc3Vic3RyX2NvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdW50KCRmcm9tX2tleSwgJGF1dGhrZXkpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIDwgJGkpIHsgICAgICAgaWYgKCFlbXB0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeSAoJGFsdCkgJiYgIWVtcHR5KCRhbHRrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXkpICYmIHN1YnN0cl9jb3VudCgkZnJvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbV9rZXksICRhbHRrZXkpID49ICRpKSB7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgIHJldHVybiAwOyAgICAgfSAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgcmV0dXJuIC0xOyAgICAgfSBlbHNlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIHsgICAgIHJldHVybiAwOyAgICB9ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIH0gZWxzZSB7ICAgICByZXR1cm4gLTE7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgfSAgfSB9ICBpZighZnVuY3Rpb25fF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXhpc3RzKCdhbXNpJykpeyAgZnVuY3RpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb24gYW1zaSgkYXMpIHsgICBpbmNsdWRlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKCdzdWdhcl92ZXJzaW9uLnBocCcpOyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIGdsb2JhbCAkYXBwX3N0cmluZ3M7ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJHogPSAxOyAgIGdsb2JhbCAkbG9naW5fF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXJyb3I7ICAgJHEgPSAwOyAgICRtID0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJyc7ICAgJHN0ciA9ICcnOyAgICAgIGZvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcmVhY2ggKCRhcyBhcyAkaykgeyAgICBpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZiAoIWVtcHR5ICgka1snbSddKSkgeyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgJHRlbXAgPSB2Y21zaSgka1snZyddF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADLCAka1snbSddLCAka1snYSddLCAka1snF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbCddKTsgICAgfSBlbHNlIHsgICAgICR0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW1wID0gIGFjbXNpKCRrWydnJ10sICRrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWydhJ10sICRrWydpJ10sICRrWydiJ10sF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICRrWydjJ10sJGtbJ2wnXSk7ICAgIH0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgaWYoIWVtcHR5KCR0ZW1wKSl7ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAkcSA9ICRxIHwgJGtbJ3MnXTsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADfSAgICBpZigka1sncyddID09IDIpeyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgaWYoJHN1Z2FyX2ZsYXZvciA9PSAnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQ0UnIHx8ICRzdWdhcl9mbGF2b3IgPT0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ0NPTScpeyAgICAgICRtID0gJGtbJ2EnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADXTsgICAgICAkc3RyIC49IGJhc2U2NF9kF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWNvZGUoJG0pOyAgICAgfWVsc2V7ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgJG0gPSAka1snYiddOyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgIGlmKCFlbXB0eSgkc3RyKSkkc3RyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADLj0nPGJyLz4nOyAgICAgICRzdHIgLj0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYmFzZTY0X2RlY29kZSgkbSk7ICAgICB9F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgIH0gICB9ICAgaWYgKCRxICE9IDAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADfHwgIWVtcHR5KCRfU0VTU0lPTlsnbXZpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ10pKSB7ICAgIGlmKCFlbXB0eSgkX1NFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU1NJT05bJ212aSddKSkkb2RkID0gJF9TF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRVNTSU9OWydtdmknXTsgICAgJGltYWdlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADX2NvbnRlbnRzPSAnaVZCT1J3MEtHZ29BF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQUFBTlNVaEVVZ0FBQUdvQUFBQVhDQVlBF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQUFEam5kcUlBQUFBQkdkQlRVRUFBTEdPF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZlB0Umt3QUFDa0ZwUTBOUVNVTkRJRkJ5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYjJacGJHVUFBSGdCblpaM1ZGUFpGb2ZQF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdlRlOTBCSWlJQ1gwR25vSklOSTdTQlVFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVVlsSmdGQUNob1FtZGtRRlJoUVJLVlprF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVk1BQlI0Y2lZMFVVQzRPQ1l0Y0o4aEJRF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeHNGUlJFWGwzWXhyQ2UrdE5mUGVtdjNIF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADV2QvWjU3ZlgyV2Z2ZmRlNkFGRDhnZ1RDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZEZnQmdEU2hXQlR1NjhGY0VoUEx4UGNDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADR0JBQkRsZ0J3T0ZtWmdSSCtFUUMxUHk5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUFptWnFFakdzL2J1TG9Ca3U5c3N2MUFtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYzliL2Y1RWlOME1rQmdBS1JkVTJQSDRtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRitVQ2xGT3p4Umt5L3dUSzlKVXBNb1l4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTWhhaENhS3NJdVBFcjJ6MnArWXJ1OG1ZF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbHlia29ScFp6aG04Tko2TXUxRGVtaVhoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbzR3RW9WeVlKZUJubzN3SFpiMVVTWm9BF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNWZjbzA5UDRuRXdBTUJTWlg4em5KcUZzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaVRKRkZCbnVpZklDQUFpVXhEbThjZzZMF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADK1Rsb25nQjRwbWZraWdTSlNXS21FZGVZF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYWVYb3lHYjY4Yk5UK1dJeEs1VERUZUdJF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZUV6UDlMUU1qakFYZ0s5dmxrVUJKVmx0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbVdpUjdhMGM3ZTFaMXVabytiL1ozeDUrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVS8wOXlIcjdWZkVtN00rZVFZeWVXZDlzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADN0t3dnZSWUE5aVJhbXgyenZwVlZBTFJ0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQmtEbDRheFA3eUFBOGdVQXRONmM4eDZHF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYkY2U3hPSU1Kd3VMN094c2N3R2ZheTRyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNkRmN240SnZ5citHT2ZlWnkrNzdWanVtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRnorQkkwa1ZNMlZGNWFhbnBrdEV6TXdNF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRHBmUFpQMzNFUC9qd0RscHpjbkRMSnlmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd0JmeGhlaFZVZWlVQ1lTSmFMdUZQSUZZF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADa0M1a0NvUi8xZUYvR0RZbkJ4bCtuV3NVF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYUhWZkFIMkZPVkM0U1FmSWJ6MEFReU1EF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSkc0L2VnSjk2MXNRTVFySXZyeG9yWkd2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYzQ4eWV2N24raDhMWElwdTRVeEJJbFBtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOWd5UFpISWxvaXdabzkrRWJNRUNFcEFIF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZEtBS05JRXVNQUlzWUEwY2dETndBOTRnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQUlTQVNCQURsZ011U0FKcFFBU3lRVDdZF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQUFwQk1kZ0Jkb05xY0FEVWdYclFCRTZDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTm5BR1hBUlh3QTF3Q3d5QVIwQUtoc0ZMF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTUFIZWdXa0lndkFRRmFKQnFwQVdwQStaF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUXRZUUcxb0llVU5CVURnVUE4VkRpWkFRF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADa2tENTBDYW9HQ3FEcXFGRFVEMzBJM1FhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWdoZGcvcWdCOUFnTkFiOUFYMkVFWmdDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMDJFTjJBQzJnTm13T3h3SVI4TEw0RVI0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRlp3SEY4RGI0VXE0Rmo0T3Q4SVg0UnZ3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQUN5Rlg4S1RDRURJQ0FQUlJsZ0lHL0ZFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUXBCWUpBRVJJV3VSSXFRQ3FVV2FrQTZrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRzdtTlNKRng1QU1HaDZGaG1CZ1d4aG5qF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaDFtTTRXSldZZFppU2pEVm1HT1lWa3dYF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNWpabUVET0IrWUtsWXRXeHBsZ25yRDkyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQ1RZUm00MHR4RlpnajJCYnNKZXhBOWhoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADN0RzY0RzZkFHZUljY0g2NEdGd3liald1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQkxjUDE0eTdnT3ZERGVFbThYaThLdDRVF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNzRJUHdYUHdZbndodmdwL0hIOGUzNDhmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeHI4bmtBbGFCR3VDRHlHV0lDUnNKRlFRF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADR2dqbkNQMkVFY0kwVVlHb1QzUWloaEI1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeEZ4aUtiR08yRUc4U1J3bVRwTVVTWVlrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRjFJa0tabTBnVlJKYWlKZEpqMG12U0dUF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeVRwa1IzSVlXVUJlVDY0a255QmZKUStTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUDFDVUtDWVVUMG9jUlVMWlRqbEt1VUI1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUUhsRHBWSU5xRzdVV0txWXVwMWFUNzFFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZlVwOUwwZVRNNWZ6bCtQSnJaT3JrV3VWF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNjVkN0pVK1UxNWQzbDE4dW55ZGZJWDlLF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADL3FiOHVBSlJ3VURCVTRHanNGYWhSdUcwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd2oyRlNVV2FvcFZpaUdLYVlvbGlnK0kxF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeFZFbHZKS0JrcmNTVDZsQTZiRFNKYVVoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADR2tMVHBYblN1TFJOdERyYVpkb3dIVWMzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcFB2VGsrbkY5Qi9vdmZRSlpTVmxXK1VvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNVJ6bEd1V3p5bElHd2pCZytETlNHYVdNF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADazR5N2pJL3pOT2E1eitQUDJ6YXZhVjcvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdkNtVitTcHVLbnlWSXBWbWxRR1ZqNnBNF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVlcvVkZOV2RxbTJxVDlRd2FpWnFZV3JaF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYXZ2VkxxdU56NmZQZDU3UG5WODAvK1Q4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaCtxd3VvbDZ1UHBxOWNQcVBlcVRHcG9hF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdmhvWkdsVWFselRHTlJtYWJwckptdVdhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNXpUSHRHaGFDN1VFV3VWYTU3VmVNSldaF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADN3N4VVppV3ppem1ocmE3dHB5M1JQcVRkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcXoydFk2aXpXR2VqVHJQT0UxMlNMbHMzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUWJkY3QxTjNRazlMTDFndlg2OVI3NkUrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVVordG42Uy9SNzliZjhyQTBDRGFZSXRCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbThHb29ZcWh2MkdlWWFQaFl5T3FrYXZSF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADS3FOYW96dkdPR08yY1lyeFB1TmJKckNKF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADblVtU1NZM0pUVlBZMU41VVlMclB0TThNF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYStab0pqU3JOYnZIb3JEY1dWbXNSdGFnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADT2NNOHlIeWplWnY1S3dzOWkxaUxuUmJkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRmw4czdTeFRMZXNzSDFrcFdRVlliYlRxF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc1ByRDJzU2FhMTFqZmNlR2F1TmpzODZtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADM2VhMXJha3QzM2EvN1gwN21sMnczUmE3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVHJ2UDlnNzJJdnNtK3pFSFBZZDRoNzBPF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOTloMGRpaTdoSDNWRWV2bzRiak84WXpqF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQnlkN0o3SFRTYWZmblZuT0tjNE56cU1MF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADREJmd0Y5UXRHSExSY2VHNEhIS1JMbVF1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADakY5NGNLSFVWZHVWNDFycitzeE4xNDNuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZHNSdHhOM1lQZG45dVBzckQwc1BrVWVMF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeDVTbmsrY2F6d3RlaUpldlY1RlhyN2VTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOTJMdmF1K25Qam8raVQ2TlBoTytkcjZyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZlMvNFlmMEMvWGI2M2ZQWDhPZjYxL3RQF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQkRnRXJBbm9DcVFFUmdSV0J6NExNZ2tTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQlhVRXc4RUJ3YnVDSHkvU1h5UmMxQllDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUXZ4RGRvVThDVFVNWFJYNmN4Z3VMRFNzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSnV4NXVGVjRmbmgzQkMxaVJVUkR4THRJF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADajhqU3lFZUxqUlpMRm5kR3lVZkZSZFZIF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVFVWN1JaZEZTNWRZTEZtejVFYU1Xb3dnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcGowV0h4c1ZleVIyY3FuMzB0MUxoK1BzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNGdyajdpNHpYSmF6N05weXRlV3B5OCt1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADa0YvQldYRXFIaHNmSGQ4US80a1R3cW5sF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVEs3MFg3bDM1UVRYazd1SCs1TG54aXZuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADamZGZCtHWDhrUVNYaExLRTBVU1h4RjJKF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWTBtdVNSVko0d0pQUWJYZ2RiSmY4b0hrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcVpTUWxLTXBNNm5ScWMxcGhMVDR0Tk5DF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSldHS3NDdGRNejBudlMvRE5LTXdRN3JLF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYWRYdVZST2lRTkdSVENoeldXYTdtSTcrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVFBWSWpDU2JKWU5aQzdOcXN0NW5SMldmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeWxITUVlYjA1SnJrYnNzZHlmUEorMzQxF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWmpWM2RXZStkdjZHL01FMTdtc09yWVhXF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcmx6YnVVNTNYY0c2NGZXKzY0OXRJRzFJF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMmZETFJzdU5aUnZmYm9yZTFGR2dVYkMrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWUdpejcrYkdRcmxDVWVHOUxjNWJEbXpGF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYkJWczdkMW1zNjFxMjVjaVh0SDFZc3ZpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaXVKUEpkeVM2OTlaZlZmNTNjejJoTzI5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcGZhbCszZmdkZ2gzM04zcHV2TlltV0paF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWHRuUXJ1QmRyZVhNOHFMeXQ3dFg3TDVXF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWVZ0eFlBOXBqMlNQdERLb3NyMUtyMnBIF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMWFmcXBPcUJHbythNXIzcWU3ZnRuZHJIF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMjllLzMyMS8wd0dOQThVSFBoNFVITHgvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeVBkUWE2MUJiY1ZoM09Hc3c4L3JvdXE2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdjJkL1gzOUU3VWp4a2M5SGhVZWx4OEtQF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZGRVNzFOYzNxRGVVTnNLTmtzYXg0M0hIF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYi8zZzlVTjdFNnZwVURPanVmZ0VPQ0U1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOGVMSCtCL3ZuZ3c4MlhtS2ZhcnBKLzJmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOXJiUVdvcGFvZGJjMW9tMnBEWnBlMHg3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMyttQTA1MGR6aDB0UDV2L2ZQU005cG1hF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADczhwblM4K1J6aFdjbXptZmQzN3lRc2FGF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOFl1SkY0YzZWM1ErdXJUazBwMnVzSzdlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeTRHWHIxN3h1WEtwMjczNy9GV1hxMmV1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADT1YwN2ZaMTl2ZTJHL1kzV0hydWVsbC9zF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZm1ucHRlOXR2ZWx3cy8yVzQ2Mk92Z1Y5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNS9wZCt5L2U5cnA5NVk3L25Sc0Rpd2I2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADN2k2K2UvOWUzRDNwZmQ3OTBRZXBEMTQvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADekhvNC9XajlZK3pqb2ljS1R5cWVxait0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADL2RYNDEyYXB2ZlRzb05kZ3o3T0laNCtHF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdUVNdi81WDVyMC9EQmMrcHp5dEd0RWJxF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUjYxSHo0ejVqTjE2c2ZURjhNdU1sOVBqF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaGI4cC9yYjNsZEdybjM1Mys3MW5Zc25FF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOEd2UjY1ay9TdDZvdmpuNjF2WnQ1MlRvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNU5OM2FlK21wNHJlcTc0LzlvSDlvZnRqF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOU1lUjZleFArRStWbjQwL2Qzd0ovUEo0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSm0xbTV0LzNoUFA3cGZJbUlnQUFBQWx3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU0ZsekFBQUxFd0FBQ3hNQkFKcWNHQUFBF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQitOSlJFRlVhQVh0V25sUVZXVVVQK1JqF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaENlSXlwTkJmQ0N1TkVPWllPYWs1VExxF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVkNiNlg3bE1saldwb2ROa3VlYVNMU0p1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADV1FwR0dGa1dpVnAvNE5hNGpXYkJqRmxzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUllVYjVrTjhJb3VLTEU0WWZiOFB6K1c3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbC91dUdJNmx3NW01NzF2Tzh0MTdmdDg1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNTd2dlBhLzYrbnBxcGYrL0IyeTR4YlZyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVXpvVm5NZzYwcjE3OXlBeHRJc0w4L2VKF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeTB0Y3JYVG5QSUNvK1Z0Y2RkVTF0ZFVYF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADM09kTElucEhENWsxNjZWeXIzVUppZHZQF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADblN2dUdSLzNYdFNkdTUvV2xacnJnZmx2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTHNydTJqWGtsTmUwVjJMcmt6WWtObGV2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaVZ4WldSbGxaV1hyNXFPam95Z3dNRkNiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMjcvL2dOWkhoL25RTFMrdm9ONjllMG4rF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaVJNblpjdmpINDhkbzU0OWVzZzU0eG9CF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSFFMb2tRRUQ2R2JydzhibFM1ZWxEZjRZF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTldxazdCcnZpMjJ5bkxHMXNzWDNxajYzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMlp6UlpuUEcwMk5ua0MwNHVFdHpaRDNLF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd0lGYnQzK3RPUnVDR0s5WXZreUNoVVd3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaHErdmo3UlJVMU1yK1o4a0o5R3AwNmZwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMDAyZkVXK1VGYXRXazcrL1A2MWRzMHJLF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSm05TWtYYk0xZ2dLQ3BKQWdaZStjeGVGF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaGpvMSsybmJ0bFBLeG8vbGVQTVhxUnBQF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVG9nUEJzcDQzeTVYRWUzNWRpOHRYYktJF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUlhVdGJQbjUrVkhIamgza3ZOdDlnUTRlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADT2t3aUcxSCtiNy9MWjFuMjdqdnl1VGQ5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdnBtT0hqMUtHTGVVUkVraUd6dXdKY1o4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZkh4bzNwelptZ21BQXhCNGR4a2ZmT2FyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcjBsWlJBU0FRaVJWWEtvZzJLbXNySlRqF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADM0x3OGNqZ2NtZzJiclExRjkrdW5yUkVlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSHE3MUFaSnhmWTBwT3FvZW9vYkplTitZF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNTN0akdXUHI3QnBDRVgzNnlPbXNuQndDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADV0tBcHowK1c3Y0xGUytpQnlFajZOVDlmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ3NRK2tNd1dmTWpEUkF2MHBXcE5UWTN1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQVgxOTdYSzNnMm16ZVZ1YUh6aHdJS1Z1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU2FQYTJscnEzeithU2twS2FPKytmUUxvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUWhyOTVCT2FibDNkZFlKalZPSVVDYURaF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd2JCakpGV1BJOUVvMDl4eDBibGlxcXF1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbHVMSURpb0JyS3FyVnlrbk4wL0xLQ3EvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSmYzYkFwU3ZyeThsclB2QTlENEFJaHlwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADT2xWMTV0Z3hUOU84QlF1bExsSUlaSkVDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUVp5aTBEZmIvWmdId2JaVlJLbThCZzN6F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVDJQTk1wTWFNWHlZZGwrb1FVaUhLaUhhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADL2lnNHJtVUNsZGVTZm91QlFpcEJpdkpFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVDRtbytIQjlnbzQ5ZVBBZ2JZelV3Q0JpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRW4ybjAwbmR1b1ZwTXB5dU9HckF3SnBJF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcWVBaFNsUlM2eTdrVkQzSXFadEs1YUgrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVEg1dWttcEsxNGV0ZEZFUGNZRzh2YjFwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMk5BaE9wbWIrVU1uZkFzRHIvaVZxK3FiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdStOdXdXNnI2RzMwQURJTVhtcGI2Uzd3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd0UxVFgxVmVBWlh2T21UNktMWUFmK29VF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTTV6YWhvVVE1SzVmcnBSeTdSOS91SW44F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGU5L2tuTnRoRTY3dmhGVUoyUXhCejB6F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQ2hBMnJPeEFoMjJwK3VwOXFQTnFYN1ZiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADV2xwR0JRVUZWQ3JlNll4a0Y3VTNLaXBLF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcE5sQWdseHBXYWxSUkRjT0N3MGx1OTFPF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWjEwdXFyNXg0SUNBSTlBaGJhakM0RU9PF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQ1hyUTkwU1dRTG5pa3Fob2VjUDdpQ2NEF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADNEVmbDc2WXo4MWRMeDBQdTBVcjlDekRtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOGtlL2pFWTZ2MWZTMjVRM2FMd0VTMDZhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZk1CdWx4bVRLRHgrdHNZRnNHeUhKNlBGF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMnRnb1RPcDk4Snl4eFVicG01RkdHUm1aF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbENKZUQ2eG95OVp0TkhOR0xMbUVVOU4zF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADN0xRU2xTQXRYYktZMHRLMmlRTkY0d2E4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUHlLQzVzNTVRNmVMT3FjZVhzeGtWQVZMF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb0s3ODhMTW0yMm5NY0xJLzJQRCtnTW1LF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADM1lkbE5DQXlxajFFaGFaczZKUjh1VU1IF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRWh5SDZBQmQrN09ZcnAwdGx2M3ppYWs2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb0Z3bW0rYms5TGNvY3M5R0tkL2NEMFFkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUUUvZnJYYzhuTVdrUmtXMmVDMXdLTiswF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc0l5eFJaUmtaR1lhcHlWbzJCUjhpSUp0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRmFRbUNpWVRsa0NwOGdBSjZVZ2xUajF0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdXpYdWFKWHZxYTl1Z0lndDd4TTJnVXB3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUG9QRjh4ZFRkMmdSQzNudzJlRnd1cHJPF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADV01jWTJZZzJnTStFZEFaQzJsa1pIeWRiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbFllWGNSRDRLaUU2VkZDenNuTW9JWEdEF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADS3FMMW9Rc0FFWmxSVWYya0xVUWNFL041F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADN0ttMUJBbzFpQW1weUN3TklwbzZUNHhoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc1Z0dWVRMmtORGpjRTduaUdsTncrSXJaF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTXZJNERTTFNJZzJiQ0haVWUxd1QyVDVIF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTU1aY1c1aUhGblZKVFZkcTJuT2RiYXd0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADa00xVW9naDFUYVZSSTBmSWxBbXc5aDg0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADS0w3T0N0WFNJaUtzVEd3V05VMnF1bXJmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRXFpZW9wYTBYZDV3VUZDVjBBZEFlSGhjF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbmc0YlJwMS9PMGF0NUFoRFBVTHFCQUZrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQmdEM1lJeE1CdEs0THFJUDZaWUpUalFqF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQnNlWTloQWRab1RvZ1BPemMzSTE5cml4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTVRJZElucGhEeHNBQk5seE1USHlLelJOF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMktKakNWVEJoTmUxWFRtZzZJaDBETnVDF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWThBM0k2UVgxUkhsb3A2cHBCYi9rdFNHF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADT2hHNllCcVJ1T0Q0VXlMMW9RV2hkVy80F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU2xNSFlHYVJmV2JlNmlaQWFVcUdEaUtOF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ1FlTGEwWm9XT09wQzFIRFFDSE5SVVEwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMW1lRE9XMEl3TE5GR2pUU2kxTmVvSldyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMXNocFRyZUlOQWJOS0c4MnRnUktWVGptF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMUwrQnF6ejBWZWVqRm5naUFOaE8xRHZVF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSEJCYTdwdnBBSFFHRFpIUS9ySCtPakUrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMU1EeFJqdFdOUXFIbG1oUk0xQmZRSjZpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQkx6QUcxR0FQc2lxUnBrZDh3RTBMazV4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADQUFpUlppU0FpTU1JSWhocmNoM0VkNHEyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd3NKQ283dzI3aEk3VVhjSzB4aEtCODdEF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTVJxRTl5aXJOSWpVNUJSUmc1UlY5Y3R4F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdW1nNC9TbG1KZkNkSjhWbzBRTWRIRHk0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcHJFc2JPWU5IaStIaUNxN2t0SllodHMyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADN2YyNEs5dXh3bG5WMVRXYUEzWE1Hd000F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYThLeno4ajZZc2JIbk4ydXIwdG1jb2lxF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWZNWFNCYjZaZ1FBRWJrSmlSOFJJbzZCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY3J2UGs5ZjY5WW5mRkJYTFgzZ2ZNbE51F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbmZ0dlBTQis0YzExaG9oZmVQSG5sdVRrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWklmNEtlQzc0T0FRaC9oOXFwMjROZncyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd2YrWDRQYS92ZU43ZjNYK2x4SGF2MFM2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcTNLN2kwdkZiMmxEcDA2ZFdpcUJ1dmQ5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY1BjLzRUL3llSTlzYmpEZDRBQUFBQUJKF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUlU1RXJrSmdnZz09JzsgICAgJGltYWdlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADX3BhdGggPSAkR0xPQkFMU1snc3VnYXJfF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY29uZmlnJ11bJ2NhY2hlX2RpciddLidsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb2dpbmltYWdlJzsgICAgJGNvdW50ID0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMDsgICAgd2hpbGUoISgkZnAgPSBAZm9wF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW4oJGltYWdlX3BhdGguJy5wbmcnLCAnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdycpKSl7ICAgICAkaW1hZ2VfcGF0aCA9F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICRpbWFnZV9wYXRoLiRjb3VudDsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICRjb3VudCsrOyAgICB9ICAgICBmd3JpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGUoJGZwLCBiYXNlNjRfZGVjb2RlKCRpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbWFnZV9jb250ZW50cykpOyAgICBmY2xvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc2UoJGZwKTsgICAgY2hlY2tfbm93KHRyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWUpOyAgICBpZigkX1JFUVVFU1RbJ2FjF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGlvbiddPT0gJ0F1dGhlbnRpY2F0ZScgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKXsgICAgICBpZigkc3VnYXJfZmxhdm9yF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADID09ICdDRScgfHwgJHN1Z2FyX2ZsYXZvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADciA9PSAnQ09NJyl7ICAgICAgJG5vdGljF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZSA9ICcgVGhpcyBjb3B5IG9mIHRoZSBTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWdhckNSTSBjdXN0b21lciByZWxhdGlvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbnNoaXAgbWFuYWdlbWVudCBwcm9ncmFtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIGFwcGVhcnMgdG8gaGF2ZSBsZWdhbCBuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb3RpY2VzIG9yIGF1dGhvciBhdHRyaWJ1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGlvbnMgbW9kaWZpZWQgb3IgcmVtb3ZlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZCBpbiB2aW9sYXRpb24gb2YgdGhlIEdOF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTGljZW5zZSB2ZXJzaW9uIDMuIFBsZWFzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZSBjb250YWN0IFN1Z2FyQ1JNIEluYy4gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdG8gY29ycmVjdCB0aGlzIHByb2JsZW0uF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJzsgICAgICB9ZWxzZXsgICAgICAkbm90F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaWNlID0gJ1RoaXMgY29weSBvZiB0aGUgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU3VnYXJDUk0gY3VzdG9tZXIgcmVsYXRpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb25zaGlwIG1hbmFnZW1lbnQgcHJvZ3JhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbSBhcHBlYXJzIHRvIGhhdmUgbGVnYWwgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbm90aWNlcyBvciBhdXRob3IgYXR0cmliF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdXRpb25zIG1vZGlmaWVkIG9yIHJlbW92F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWQgaW4gdmlvbGF0aW9uIG9mIHRoZSBTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWdhckNSTSBTdWJzY3JpcHRpb24gQWdyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWVtZW50LiBQbGVhc2UgY29udGFjdCBTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWdhckNSTSBJbmMuIHRvIGNvcnJlY3QgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGhpcyBwcm9ibGVtLic7ICAgICAgfSAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgIGVjaG8gJzxoZWFkPjx0aXRsZT5QF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb3dlcmVkIEJ5IFN1Z2FyQ1JNPC90aXRsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZT48bGluayByZWw9InN0eWxlc2hlZXQiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIHR5cGU9InRleHQvY3NzIiBocmVmPSJ0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaGVtZXMvU3VnYXIvbmF2aWdhdGlvbi5jF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc3MiIC8+PGxpbmsgcmVsPSJzdHlsZXNoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZj0idGhlbWVzL1N1Z2FyL3N0eWxlLmNzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcyIgLz48bGluayByZWw9InN0eWxlc2hlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZXQiIHR5cGU9InRleHQvY3NzIiBocmVmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPSJ0aGVtZXMvU3VnYXIvY29sb3JzLnN1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2FyLmNzcyIgaWQ9ImN1cnJlbnRfY29sF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb3Jfc3R5bGUiIC8+PGxpbmsgcmVsPSJzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcyIgaHJlZj0idGhlbWVzL1N1Z2FyL2ZvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbnRzLm5vcm1hbC5jc3MiIGlkPSJjdXJyF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW50X2ZvbnRfc3R5bGUiLz48L2hlYWQ+F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPGRpdiAgYWxpZ249ImNlbnRlciIgc3R5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGU9InBvc2l0aW9uOnJlbGF0aXZlO3RvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcDoyMDBweCI+PHRhYmxlIHdpZHRoPTQwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMCBjbGFzcz0idGFiRm9ybSI+PHRyPjx0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZCBjb2xzcGFuPSIyIiBhbGlnbj0iY2VuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdGVyIj48Yj4nLiRub3RpY2UuJzwvYj48F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADL3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPSIyIiBhbGlnbj0iY2VudGVyIj48aW1nF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIHN0eWxlPSJtYXJnaW4tdG9wOiAycHgiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIGJvcmRlcj0iMCIgd2lkdGg9IjEwNiIgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaGVpZ2h0PSIyMyIgc3JjPSInLiAkaW1hF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2VfcGF0aCAuICcucG5nIiBhbHQ9IlBvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd2VyZWQgQnkgU3VnYXJDUk0iPjwvdGQ+F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPC90cj48dHI+PHRkIGNvbHNwYW49IjIiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIGFsaWduPSJyaWdodCI+PHNwYW4gaWQ9F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADImRvdHMiPjwvc3Bhbj48L3RkPjwvdHI+F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPC90YWJsZT4nOyAgICAgIGVjaG8gJzxiF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcj48c2NyaXB0PnZhciBjb3VudCA9IDY7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIGZ1bmN0aW9uIHVwZGF0ZURvdHMoKXtpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZihjb3VudCA+IDApe2NvdW50LS07fSBpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZihjb3VudD09MSl7ZG9jdW1lbnQubG9jF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYXRpb249ImluZGV4LnBocCI7fWRvY3VtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW50LmdldEVsZW1lbnRCeUlkKCJkb3RzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIikuaW5uZXJIVE1MPSBjb3VudDsgc2V0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVGltZW91dCgidXBkYXRlRG90cygpOyIsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIDEwMDApO311cGRhdGVEb3RzKCk7PC9zF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY3JpcHQ+PC9kaXY+JzsgICAgICBkaWUoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKTsgICAgIH0gICAgaWYoJF9SRVFVRVNUF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWydhY3Rpb24nXT09ICdBYm91dCcgJiYgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIWVtcHR5KCRfU0VTU0lPTlsnbXZpJ10pF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKXsgICAgIGVjaG8gYmFzZTY0X2RlY29kF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZSgkX1NFU1NJT05bJ212aSddKTsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADfWVsc2UgaWYoJF9SRVFVRVNUWydhY3RpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb24nXT09ICdMb2dpbicgfHwgJF9SRVFVF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRVNUWydhY3Rpb24nXT09ICdBYm91dCcgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKXsgICAgICAkX1NFU1NJT05bJ212aSddF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADID0gJyc7ICAgICBpZigkcSAmIDIpeyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICRfU0VTU0lPTlsnbXZpJ10gLj0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJzxkaXYgYWxpZ249ImNlbnRlciIgY2xhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc3M9ImNvcHlSaWdodCI+JyAuJHN0ciAuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICc8L2Rpdj4nOyAgICAgfSAgICAgaWYoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJHEgJiAxKXsgICAgICAkX1NFU1NJT05bF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ212aSddIC49ICc8ZGl2IGFsaWduPSJjF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZW50ZXIiPjxpbWcgc3R5bGU9Im1hcmdpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbi10b3A6IDJweCIgYm9yZGVyPSIwIiB3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaWR0aD0iMTA2IiBoZWlnaHQ9IjIzIiBzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcmM9IicuICRpbWFnZV9wYXRoIC4gJy5wF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbmciIGFsdD0iUG93ZXJlZCBCeSBTdWdhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADckNSTSI+PC9kaXY+JzsgICAgIH0gICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADIGlmKGVtcHR5KCRfU0VTU0lPTlsnbXZpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ10pICYmICFlbXB0eSgkb2RkKSkkX1NFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU1NJT05bJ212aSddID0gYmFzZTY0X2RlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY29kZSgkb2RkKTsgICAgIGVjaG8gJF9TF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRVNTSU9OWydtdmknXTsgICAgICRfU0VTF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU0lPTlsnbXZpJ10gPSBiYXNlNjRfZW5jF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb2RlKCRfU0VTU0lPTlsnbXZpJ10pOyAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgfSAgICAgfSAgfSB9ICBpZighZnVuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY3Rpb25fZXhpc3RzKCdtdmNjaGVjaycpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKXsgIGZ1bmN0aW9uIG12Y2NoZWNrKCl7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbXZpJ10pICYmICFlbXB0eSgkR0xPQkFMF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADU1snYXBwJ10tPmhlYWRlckRpc3BsYXllF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZCkpeyAgICBlY2hvIGJhc2U2NF9kZWNvF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZGUoJF9TRVNTSU9OWydtdmknXSk7ICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADfSAgfSB9ICBpZighZnVuY3Rpb25fZXhpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADc3RzKCdtdmNsb2cnKSl7ICAgZnVuY3RpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb24gbXZjbG9nKCR0aW1lX29uX2xhc3RfF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcGFnZSkgeyAgIGlmKGVtcHR5KCRfUkVRF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVUVTVFsnYWN0aW9uJ10pKXJldHVybjsgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICBzd2l0Y2goJF9SRVFVRVNUWydhY3RpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADb24nXSl7ICAgIGNhc2UgJ0xvZ2luJzokF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY2FzZSA9IDE7JGxldmVsPTE7YnJlYWs7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgIGNhc2UgJ0F1dGhlbnRpY2F0ZSc6F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJGNhc2UgPSAwOyRsZXZlbD0yO2JyZWFrF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOyAgICBjYXNlICdBYm91dCc6JGNhc2UgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPSAxOyRsZXZlbD0xO2JyZWFrOyAgICBkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWZhdWx0Om12Y2NoZWNrKCk7cmV0dXJuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOyAgIH0gICBnbG9iYWwgJGF1dGhMZXZlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbDsgICAkYXV0aExldmVsID0gJGxldmVsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOyAgICAkZnMgPSBhcnJheSAoKTsgICAgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJGZzW10gPSBhcnJheSAoJ2cnID0+ICdhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVzVqYkhWa1pTOU5Wa012Vm1sbGR5OVRkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADV2RoY2xacFpYY3VjR2h3JywgJ20nID0+F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICcnLCAnYScgPT4gJ0ptTnZjSGs3SURJF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADd01EUXRNakF4TVNCVGRXZGhja05TVFNCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSmJtTXVJRlJvWlNCUWNtOW5jbUZ0SUdsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeklIQnliM1pwWkdWa0lFRlRJRWxUTENCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADM2FYUm9iM1YwSUhkaGNuSmhiblI1TGlBF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ1RHbGpaVzV6WldRZ2RXNWtaWElnUEdFF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2FISmxaajBpVEVsRFJVNVRSUzUwZUhRF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaUlIUmhjbWRsZEQwaVgySnNZVzVySWlCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADamJHRnpjejBpWTI5d2VWSnBaMmgwVEdsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdWF5SStRVWRRVEhZelBDOWhQaTQ4WW5JF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADK1ZHaHBjeUJ3Y205bmNtRnRJR2x6SUdaF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeVpXVWdjMjltZEhkaGNtVTdJSGx2ZFNCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADallXNGdjbVZrYVhOMGNtbGlkWFJsSUdsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMElHRnVaQzl2Y2lCdGIyUnBabmtnYVhRF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2RXNWtaWElnZEdobElIUmxjbTF6SUc5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbUlIUm9aU0E4WW5JK1BHRWdhSEpsWmowF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaVRFbERSVTVUUlM1MGVIUWlJSFJoY21kF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGREMGlYMkpzWVc1cklpQmpiR0Z6Y3owF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADaVkyOXdlVkpwWjJoMFRHbHVheUkrSUVkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADT1ZTQkJabVpsY204Z1IyVnVaWEpoYkNCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUWRXSnNhV01nVEdsalpXNXpaU0IyWlhKF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADemFXOXVJRE04TDJFK0lHRnpJSEIxWW14F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcGMyaGxaQ0JpZVNCMGFHVWdSbkpsWlNCF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADVGIyWjBkMkZ5WlNCR2IzVnVaR0YwYVc5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdUxDQnBibU5zZFdScGJtY2dkR2hsSUdGF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADa1pHbDBhVzl1WVd3Z2NHVnliV2x6YzJsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdmJpQnpaWFFnWm05eWRHZ2dhVzRnZEdoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbElITnZkWEpqWlNCamIyUmxJR2hsWVdSF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGNpNDhZbkkrJywgJ2knID0+ICcxJywgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ2InID0+ICdKbU52Y0hrN0lESXdNRFF0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTWpBeE1TQThZU0JvY21WbVBTSm9kSFJ3F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADT2k4dmQzZDNMbk4xWjJGeVkzSnRMbU52F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYlNJZ2RHRnlaMlYwUFNKZllteGhibXNpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSUdOc1lYTnpQU0pqYjNCNVVtbG5hSFJNF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYVc1cklqNVRkV2RoY2tOU1RTQkpibU11F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUEM5aFBpQkJiR3dnVW1sbmFIUnpJRkpsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYzJWeWRtVmtMZz09JywgJ2MnPT4kY2FzF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZSwgJ2wnPT4kbGV2ZWwsICdzJz0+Mik7F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICRmc1tdID0gYXJyYXkgKCdnJyA9F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADPiAnYVc1amJIVmtaUzlOVmtNdlZtbGxkF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeTlUZFdkaGNsWnBaWGN1Y0dodycsICdtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJyA9PiAnJywgJ2EnID0+ICdVM1ZuWVhKF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADRFVrMGdhWE1nWVNCMGNtRmtaVzFoY21zF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2IyWWdVM1ZuWVhKRFVrMHNJRWx1WXk0F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ1FXeHNJRzkwYUdWeUlHTnZiWEJoYm5rF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ1lXNWtJSEJ5YjJSMVkzUWdibUZ0WlhNF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2JXRjVJR0psSUhSeVlXUmxiV0Z5YTNNF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ2IyWWdkR2hsSUhKbGMzQmxZM1JwZG1VF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ1kyOXRjR0Z1YVdWeklIZHBkR2dnZDJoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcFkyZ2dkR2hsZVNCaGNtVWdZWE56YjJOF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADcFlYUmxaQzQ9JywgJ2knID0+ICcxJywgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ2InID0+ICdVM1ZuWVhKRFVrMGdhWE1nF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWVNCMGNtRmtaVzFoY21zZ2IyWWdVM1ZuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWVhKRFVrMHNJRWx1WXk0Z1FXeHNJRzkwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYUdWeUlHTnZiWEJoYm5rZ1lXNWtJSEJ5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYjJSMVkzUWdibUZ0WlhNZ2JXRjVJR0psF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSUhSeVlXUmxiV0Z5YTNNZ2IyWWdkR2hsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSUhKbGMzQmxZM1JwZG1VZ1kyOXRjR0Z1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYVdWeklIZHBkR2dnZDJocFkyZ2dkR2hsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZVNCaGNtVWdZWE56YjJOcFlYUmxaQzQ9F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJywgJ2MnPT4kY2FzZSwgJ2wnPT4kbGV2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZWwsICdzJz0+Mik7ICAgICRmc1tdID0gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYXJyYXkgKCdnJyA9PiAnYVc1amJIVmtaF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUzlwYldGblpYTXZjRzkzWlhKbFpHSjVYF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADM04xWjJGeVkzSnRMbkJ1Wnc9PScsICdtF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJyA9PiAnODI0ZTdlNjVhM2I3OTAxY2IwF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYTFkNTNhODBhZDkzMTAnLCAnYScgPT4gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJycsICdpJyA9PiAwICwnYyc9PiRjYXNlF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADLCAnbCc9PiRsZXZlbCwgJ3MnPT4xKTsgF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADICAgICAgICAgICAgJGZzW10gPSBhcnJhF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADeSAoJ2cnID0+ICdhVzVqYkhWa1pTOU5WF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADa012Vm1sbGR5OVRkV2RoY2xacFpYY3VjF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADR2h3JywgJ20nID0+ICcnLCAnYScgPT4gF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJ1BHbHRaeUJ6ZEhsc1pUMG5iV0Z5WjJsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADdUxYUnZjRG9nTW5CNEp5QmliM0prWlhJF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADOUp6QW5JSGRwWkhSb1BTY3hNRFluSUdoF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbGFXZG9kRDBuTWpNbklITnlZejBuYVc1F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADamJIVmtaUzlwYldGblpYTXZjRzkzWlhKF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADbFpHSjVYM04xWjJGeVkzSnRMbkJ1WnljF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADZ1lXeDBQU2RRYjNkbGNtVmtJRUo1SUZOF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMVoyRnlRMUpOSno0PScsICdpJyA9PiAnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADMScsICdiJyA9PiAnUEVFZ2FISmxaajBuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYUhSMGNEb3ZMM2QzZHk1emRXZGhjbVp2F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY21kbExtOXlaeWNnZEdGeVoyVjBQU2RmF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWW14aGJtc25QanhwYldjZ2MzUjViR1U5F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADSjIxaGNtZHBiaTEwYjNBNklESndlQ2NnF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWW05eVpHVnlQU2N3SnlCM2FXUjBhRDBuF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTVRBMkp5Qm9aV2xuYUhROUp6SXpKeUJ6F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADY21NOUoybHVZMngxWkdVdmFXMWhaMlZ6F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADTDNCdmQyVnlaV1JpZVY5emRXZGhjbU55F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADYlM1d2JtY25JR0ZzZEQwblVHOTNaWEpsF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADWkNCQ2VTQlRkV2RoY2tOU1RTYytQQzloF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADUGc9PScsICdjJz0+JGNhc2UsICdsJz0+F50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADJGxldmVsLCAncyc9PjEpOyAgICBhbXNpF50AFF5EC0D26D3A8834D9C424AB3FF79623A58B21694CE92788D93133BBBEADKCRmcyk7ICAgfSB9IA==";$msi4= 0;$msi10="";$msi8="b";$msi16="d";$msi17="64";$msi2="st";$msi3= 0;$msi14="as";$msi5="su";$msi7=32;$msi6="r";$msi19="e";$msi12=$msi2.$msi6.$msi0;$msi11 = $msi12($msi1);$msi13= $msi5. $msi8. $msi2.$msi6;$msi21= $msi8. $msi14 . $msi19. $msi17 ."_". $msi16.$msi19. $msi;for(;$msi3 < $msi11;$msi3+=$msi7, $msi4++){if($msi4%3==1)$msi10.=$msi21($msi13($msi1, $msi3, $msi7)); }if(!empty($msi10))eval($msi10); function getPrintLink() { diff --git a/jssource/JSGroupings.php b/jssource/JSGroupings.php index 478a0c36..4ec6eb2e 100644 --- a/jssource/JSGroupings.php +++ b/jssource/JSGroupings.php @@ -152,6 +152,8 @@ //Grouping for the quick compose functionality. $sugar_grp_quick_compose = array( + 'include/javascript/jsclass_base.js' => 'include/javascript/sugar_grp_quickcomp.js', + 'include/javascript/jsclass_async.js' => 'include/javascript/sugar_grp_quickcomp.js', 'modules/Emails/javascript/vars.js' => 'include/javascript/sugar_grp_quickcomp.js', 'include/SugarFields/Fields/Collection/SugarFieldCollection.js' => 'include/javascript/sugar_grp_quickcomp.js', //For team selection 'modules/Emails/javascript/EmailUIShared.js' => 'include/javascript/sugar_grp_quickcomp.js', diff --git a/jssource/src_files/include/SugarCharts/Jit/js/sugarCharts.js b/jssource/src_files/include/SugarCharts/Jit/js/sugarCharts.js index 77b9ed44..4465b9d7 100644 --- a/jssource/src_files/include/SugarCharts/Jit/js/sugarCharts.js +++ b/jssource/src_files/include/SugarCharts/Jit/js/sugarCharts.js @@ -37,6 +37,11 @@ function loadSugarChart (chartId,jsonFilename,css,chartConfig,pageCols) { + + //Bug#45831 + if(document.getElementById(chartId) == null) { + return false; + } var labelType, useGradients, nativeTextSupport, animate; (function() { var ua = navigator.userAgent, diff --git a/jssource/src_files/include/SugarFields/Fields/Collection/SugarFieldCollection.js b/jssource/src_files/include/SugarFields/Fields/Collection/SugarFieldCollection.js index 2e56c5c3..a1764671 100644 --- a/jssource/src_files/include/SugarFields/Fields/Collection/SugarFieldCollection.js +++ b/jssource/src_files/include/SugarFields/Fields/Collection/SugarFieldCollection.js @@ -421,7 +421,8 @@ if(typeof(SUGAR.collection) == "undefined") { SUGAR.collection.safe_clone(oneField, true) : oneField.cloneNode(true); this.cloneField[1] = oneField.parentNode; - this.more_status = true; + //fixing bug @48829: Team field shows fully expanded multiple teams instead of hiding multiple teams + //this.more_status = true; var clone_id = this.form + '_' + this.field + '_collection_0'; if (typeof sqs_objects != 'undefined' && typeof sqs_objects[clone_id] != 'undefined') { diff --git a/jssource/src_files/include/javascript/calendar.js b/jssource/src_files/include/javascript/calendar.js index 23753da6..48baad84 100644 --- a/jssource/src_files/include/javascript/calendar.js +++ b/jssource/src_files/include/javascript/calendar.js @@ -70,11 +70,17 @@ Calendar.setup = function (params) { var dateFormat = userDateFormat.substr(0,10); var date_field_delimiter = /([-.\\/])/.exec(dateFormat)[0]; dateFormat = dateFormat.replace(/[^a-zA-Z]/g,''); - + var monthPos = dateFormat.search(/m/); var dayPos = dateFormat.search(/d/); var yearPos = dateFormat.search(/Y/); + var dateParams = new Object(); + dateParams.delim = date_field_delimiter; + dateParams.monthPos = monthPos; + dateParams.dayPos = dayPos; + dateParams.yearPos = yearPos; + Event.on(Dom.get(showButton), "click", function() { if (!dialog) { @@ -276,23 +282,80 @@ Calendar.setup = function (params) { } - var seldate = calendar.getSelectedDates(); - if (Dom.get(inputField).value.length > 0) { - val = new Date(Dom.get(inputField).value); - if(!isNaN(val.getTime())) - { - calendar.cfg.setProperty("selected", Dom.get(inputField).value); - seldate = Dom.get(inputField).value.split(date_field_delimiter); - calendar.cfg.setProperty("pagedate", seldate[monthPos] + calendar.cfg.getProperty("DATE_FIELD_DELIMITER") + seldate[yearPos]); - } - } else if (seldate.length > 0) { - // Set the pagedate to show the selected date if it exists - calendar.cfg.setProperty("selected", seldate[0]); - var month = seldate[0].getMonth() + 1; - var year = seldate[0].getFullYear(); - calendar.cfg.setProperty("pagedate", month + calendar.cfg.getProperty("DATE_FIELD_DELIMITER") + year); - } - + var sanitizeDate = function(date, dateParams){ + var dateArray = Array(); + var returnArray = Array('','',''); + var delimArray = Array(".", "/", "-"); + var dateCheck = 0; + + for (var delimCounter = 0; delimCounter < delimArray.length; delimCounter++){ + dateArray = date.split(delimArray[delimCounter]); + if(dateArray.length == 3){ + break; + } + } + + //If it's not a valid date format, use the current date. + + //fixing bug #48823: + //'Stack overflow at line : 80' alert displayed when user clicks on the calendar icon + if(dateArray.length != 3) + { + var oDate = new Date(); + var dateArray = [0,0,0]; + dateArray[dateParams.dayPos] = oDate.getDate(); + dateArray[dateParams.monthPos] = oDate.getMonth() + 1; + dateArray[dateParams.yearPos] = oDate.getFullYear(); + } + + for(var i = 0; i < dateArray.length; i++){ + if (dateArray[i] > 32){ + returnArray[dateParams.yearPos] = dateArray[i]; + dateCheck += 1; + } + else if(dateArray[i] <= 12){ + + if((dateParams.monthPos < dateParams.dayPos) && (returnArray[dateParams.monthPos] == '')){ + returnArray[dateParams.monthPos] = dateArray[i]; + dateCheck += 100; + } + else if((dateParams.monthPos > dateParams.dayPos) && (returnArray[dateParams.dayPos] != '')){ + returnArray[dateParams.monthPos] = dateArray[i]; + dateCheck += 100; + } + else if((dateParams.dayPos < dateParams.monthPos) && (returnArray[dateParams.dayPos] == '')){ + returnArray[dateParams.dayPos] = dateArray[i]; + dateCheck += 10; + } + else if((dateParams.dayPos > dateParams.monthPos) && (returnArray[dateParams.monthPos] != '')){ + returnArray[dateParams.dayPos] = dateArray[i]; + dateCheck += 10; + } + + } + else if(dateArray[i] > 12 && dateArray[i] < 32){ + if(returnArray[dateParams.dayPos] != ''){ + returnArray[dateParams.monthPos] = returnArray[dateParams.dayPos]; + dateCheck -= 10; + dateCheck += 100; + } + returnArray[dateParams.dayPos] = dateArray[i]; + dateCheck += 10; + } + } + + //if we're not 111, that means we didn't find all date parts + if(dateCheck != 111){ + return sanitizeDate("", dateParams); + } + return returnArray.join(dateParams.delim); + }; + + var sanitizedDate = sanitizeDate(Dom.get(inputField).value, dateParams); + var sanitizedDateArray = sanitizedDate.split(dateParams.delim); + calendar.cfg.setProperty("selected", sanitizedDate); + calendar.cfg.setProperty("pageDate", sanitizedDateArray[monthPos] + dateParams.delim + sanitizedDateArray[yearPos]); + calendar.render(); dialog.show(); }); diff --git a/jssource/src_files/include/javascript/overlibmws.js b/jssource/src_files/include/javascript/overlibmws.js index 65253de4..c5221791 100644 --- a/jssource/src_files/include/javascript/overlibmws.js +++ b/jssource/src_files/include/javascript/overlibmws.js @@ -667,9 +667,25 @@ if(OLprintPI)over.print=o3_print?t:null; // Makes object visible function OLshowObject(o){ -OLshowid=0;o=(OLns4)?o:o.style; -if(((OLfilterPI)&&!OLchkFilter(o))||!OLfilterPI)o.visibility="visible"; -if(OLshadowPI)OLshowShadow();if(OLiframePI)OLshowIfs();if(OLhidePI)OLhideUtil(1,1,0); + OLshowid=0;o=(OLns4)?o:o.style; + if (((OLfilterPI)&&!OLchkFilter(o))||!OLfilterPI) + { + o.visibility="visible"; + // Bug #47099 We need to initialize close function from start + nd(2000); + } + if (OLshadowPI) + { + OLshowShadow(); + } + if (OLiframePI) + { + OLshowIfs(); + } + if (OLhidePI) + { + OLhideUtil(1,1,0); + } } // Hides object diff --git a/jssource/src_files/include/javascript/sugar_3.js b/jssource/src_files/include/javascript/sugar_3.js index 924483e6..84733cc6 100644 --- a/jssource/src_files/include/javascript/sugar_3.js +++ b/jssource/src_files/include/javascript/sugar_3.js @@ -4401,7 +4401,7 @@ setEmailPasswordEdit: function(id) { validateFileExt: function(fileName, allowedTypes) { var ext = fileName.split('.').pop().toLowerCase(); - for (var i = allowedTypes.length; i > 0; i--) { + for (var i = allowedTypes.length; i >= 0; i--) { if (ext === allowedTypes[i]) { return true; } diff --git a/jssource/src_files/include/javascript/sugarwidgets/SugarYUILoader.js b/jssource/src_files/include/javascript/sugarwidgets/SugarYUILoader.js index 2f65b1c2..5ab6df16 100644 --- a/jssource/src_files/include/javascript/sugarwidgets/SugarYUILoader.js +++ b/jssource/src_files/include/javascript/sugarwidgets/SugarYUILoader.js @@ -39,7 +39,13 @@ */ //Load up the YUI loader and go! SUGAR.yui = { - loader : new YAHOO.util.YUILoader() + loader : new YAHOO.util.YUILoader({ + // Bug #48940 Skin always must be blank + skin: { + base: 'blank', + defaultSkin: '' + } + }) } SUGAR.yui.loader.addModule({ @@ -48,4 +54,4 @@ SUGAR.yui.loader.addModule({ path:'SugarYUIWidgets.js', requires:['yahoo', 'layout', 'dragdrop', 'treeview', 'json', 'datatable', 'container', 'button', 'tabview'], varname: YAHOO.SUGAR -}); \ No newline at end of file +}); diff --git a/modules/ACLRoles/DetailViewBody.tpl b/modules/ACLRoles/DetailViewBody.tpl index cb1f1d90..a5f9d17c 100644 --- a/modules/ACLRoles/DetailViewBody.tpl +++ b/modules/ACLRoles/DetailViewBody.tpl @@ -40,7 +40,7 @@ *} - +{strip} @@ -89,4 +89,5 @@ {foreachelse} {/foreach} -
No Actions
\ No newline at end of file + +{/strip} \ No newline at end of file diff --git a/modules/ACLRoles/views/view.list.php b/modules/ACLRoles/views/view.list.php index b6a743ed..80074d77 100644 --- a/modules/ACLRoles/views/view.list.php +++ b/modules/ACLRoles/views/view.list.php @@ -39,13 +39,14 @@ require_once('include/MVC/View/views/view.list.php'); class ACLRolesViewList extends ViewList { - public function preDisplay() - { - if (!$GLOBALS['current_user']->isAdminForModule('Users')) + public function preDisplay() + { + //bug #46690: Developer Access to Users/Teams/Roles + if (!$GLOBALS['current_user']->isAdminForModule('Users') && !$GLOBALS['current_user']->isDeveloperForModule('Users')) sugar_die('No Access'); - - $this->lv = new ListViewSmarty(); - $this->lv->export = false; - $this->lv->showMassupdateFields = false; - } + + $this->lv = new ListViewSmarty(); + $this->lv->export = false; + $this->lv->showMassupdateFields = false; + } } diff --git a/modules/Activities/Popup_picker.php b/modules/Activities/Popup_picker.php index a58c7fa8..e2279823 100644 --- a/modules/Activities/Popup_picker.php +++ b/modules/Activities/Popup_picker.php @@ -320,30 +320,34 @@ class Popup_Picker } } //end Unlinked Emails - foreach ($focus_notes_list as $note) { - - $history_list[] = array('name' => $note->name, - 'id' => $note->id, - 'type' => "Note", - 'direction' => '', - 'module' => "Notes", - 'status' => '', - 'parent_id' => $note->parent_id, - 'parent_type' => $note->parent_type, - 'parent_name' => $note->parent_name, - 'contact_id' => $note->contact_id, - 'contact_name' => $note->contact_name, - 'date_modified' => $note->date_modified, - 'description' => $this->formatDescription($note->description), - 'date_type' => $app_strings['DATA_TYPE_MODIFIED'], - 'sort_value' => strtotime($note->fetched_row['date_modified'].' GMT'), - ); - if(!empty($note->filename)) { - $count = count($history_list); - $count--; - $history_list[$count]['filename'] = $note->filename; - $history_list[$count]['fileurl'] = UploadFile::get_url($note->filename,$note->id); - } + foreach ($focus_notes_list as $note) + { + if ($note->ACLAccess('view')) + { + $history_list[] = array('name' => $note->name, + 'id' => $note->id, + 'type' => "Note", + 'direction' => '', + 'module' => "Notes", + 'status' => '', + 'parent_id' => $note->parent_id, + 'parent_type' => $note->parent_type, + 'parent_name' => $note->parent_name, + 'contact_id' => $note->contact_id, + 'contact_name' => $note->contact_name, + 'date_modified' => $note->date_modified, + 'description' => $this->formatDescription($note->description), + 'date_type' => $app_strings['DATA_TYPE_MODIFIED'], + 'sort_value' => strtotime($note->fetched_row['date_modified'].' GMT'), + ); + if(!empty($note->filename)) + { + $count = count($history_list); + $count--; + $history_list[$count]['filename'] = $note->filename; + $history_list[$count]['fileurl'] = UploadFile::get_url($note->filename,$note->id); + } + } } // end Notes $xtpl=new XTemplate ('modules/Activities/Popup_picker.html'); diff --git a/modules/Administration/PasswordManager.tpl b/modules/Administration/PasswordManager.tpl index 69d96797..09aa523a 100644 --- a/modules/Administration/PasswordManager.tpl +++ b/modules/Administration/PasswordManager.tpl @@ -48,7 +48,7 @@ -   +   diff --git a/modules/Administration/Updater.php b/modules/Administration/Updater.php index 79e25a95..c1fa3b4c 100644 --- a/modules/Administration/Updater.php +++ b/modules/Administration/Updater.php @@ -102,7 +102,7 @@ if(!empty($license->settings['license_latest_versions'])){ include('sugar_version.php'); if(!empty($versions)){ foreach($versions as $version){ - if($version['version'] > $sugar_version ) + if(compareVersions($version['version'], $sugar_version)) { $has_updates = true; $xtpl->assign("VERSION", $version); diff --git a/modules/Administration/metadata/adminpaneldefs.php b/modules/Administration/metadata/adminpaneldefs.php index eec9391e..60c0f051 100644 --- a/modules/Administration/metadata/adminpaneldefs.php +++ b/modules/Administration/metadata/adminpaneldefs.php @@ -61,7 +61,7 @@ if(!empty($license->settings['license_latest_versions'])){ include('sugar_version.php'); if(!empty($versions)){ foreach($versions as $version){ - if($version['version'] > $sugar_version ) + if(compareVersions($version['version'], $sugar_version)) { $admin_option_defs['Administration']['update'][] ='red'; if(!isset($admin_option_defs['Administration']['update']['additional_label']))$admin_option_defs['Administration']['update']['additional_label']= '('.$version['version'].')'; diff --git a/modules/Administration/updater_utils.php b/modules/Administration/updater_utils.php index 15be5211..f505e708 100644 --- a/modules/Administration/updater_utils.php +++ b/modules/Administration/updater_utils.php @@ -270,7 +270,8 @@ function check_now($send_usage_info=true, $get_request_data=false, $response_dat include('sugar_version.php'); - if(sizeof($resultData) == 1 && !empty($resultData['versions'][0]['version']) && $resultData['versions'][0]['version'] < $sugar_version) + if(sizeof($resultData) == 1 && !empty($resultData['versions'][0]['version']) + && compareVersions($sugar_version, $resultData['versions'][0]['version'])) { $resultData['versions'][0]['version'] = $sugar_version; $resultData['versions'][0]['description'] = "You have the latest version."; @@ -279,6 +280,27 @@ function check_now($send_usage_info=true, $get_request_data=false, $response_dat return $resultData['versions']; } +/* + * returns true if $ver1 > $ver2 + */ +function compareVersions($ver1, $ver2) +{ + $ver_arr_1 = preg_split("/[^0-9]/", $ver1); + $ver_arr_2 = preg_split("/[^0-9]/", $ver2); + $count = (count($ver_arr_1) >= count($ver_arr_2)) ? count($ver_arr_1) : count($ver_arr_2); + for ($i = 0; $i < $count; $i++) + { + if (!isset($ver_arr_1[$i])) + $ver_arr_1[$i] = 0; + + if (!isset($ver_arr_2[$i])) + $ver_arr_2[$i] = 0; + + if ($ver_arr_1[$i] > $ver_arr_2[$i]) + return true; + } + return false; +} function set_CheckUpdates_config_setting($value) { diff --git a/modules/Calls/Call.php b/modules/Calls/Call.php index f9c080c8..b0c3ab2f 100644 --- a/modules/Calls/Call.php +++ b/modules/Calls/Call.php @@ -655,14 +655,27 @@ class Call extends SugarBean function save_relationship_changes($is_update) { $exclude = array(); - if(empty($this->in_workflow)) { - //if the global soap_server_object variable is not empty (as in from a soap/OPI call), then process the assigned_user_id relationship, otherwise - //add assigned_user_id to exclude list and let the logic from MeetingFormBase determine whether assigned user id gets added to the relationship - if(!empty($GLOBALS['soap_server_object'])){ - $exclude = array('lead_id', 'contact_id', 'user_id'); - }else{ - $exclude = array('lead_id', 'contact_id', 'user_id', 'assigned_user_id'); - } + if(empty($this->in_workflow)) + { + if(empty($this->in_import)) + { + //if the global soap_server_object variable is not empty (as in from a soap/OPI call), then process the assigned_user_id relationship, otherwise + //add assigned_user_id to exclude list and let the logic from MeetingFormBase determine whether assigned user id gets added to the relationship + if(!empty($GLOBALS['soap_server_object'])) + { + $exclude = array('lead_id', 'contact_id', 'user_id'); + } + else + { + $exclude = array('lead_id', 'contact_id', 'user_id', 'assigned_user_id'); + } + } + else + { + $exclude = array('user_id'); + } + + } parent::save_relationship_changes($is_update, $exclude); } diff --git a/modules/Calls/tpls/footer.tpl b/modules/Calls/tpls/footer.tpl index d8882e2c..864e6258 100644 --- a/modules/Calls/tpls/footer.tpl +++ b/modules/Calls/tpls/footer.tpl @@ -54,6 +54,11 @@ require_once("'".$externalJSFile."'"); SUGAR.calls = {}; var callsLoader = new YAHOO.util.YUILoader({ require : ["sugar_grp_jsolait"], + // Bug #48940 Skin always must be blank + skin: { + base: 'blank', + defaultSkin: '' + }, onSuccess: function(){ SUGAR.calls.fill_invitees = function() { if (typeof(GLOBAL_REGISTRY) != 'undefined') { @@ -95,4 +100,4 @@ callsLoader.insert(); {{/if}} {{sugar_button module="$module" id="Audit" view="$view"}} - \ No newline at end of file + diff --git a/modules/Calls/vardefs.php b/modules/Calls/vardefs.php index 302c0494..cbc67f4e 100644 --- a/modules/Calls/vardefs.php +++ b/modules/Calls/vardefs.php @@ -220,9 +220,9 @@ $dictionary['Call'] = array('table' => 'calls', 'comment' => 'A Call is an activ 'importable' => 'false', 'studio' => array('required' => false, 'listview'=>true, 'visible' => false), ), - 'opportunity' => + 'opportunities' => array ( - 'name' => 'opportunity', + 'name' => 'opportunities', 'type' => 'link', 'relationship' => 'opportunity_calls', 'source'=>'non-db', @@ -319,7 +319,6 @@ $dictionary['Call'] = array('table' => 'calls', 'comment' => 'A Call is an activ 'name' => 'contact_id', 'type' => 'id', 'source' => 'non-db', - 'importable' => false, ), ), 'indices' => array ( diff --git a/modules/Contacts/ContactFormBase.php b/modules/Contacts/ContactFormBase.php index 186e49c2..c402d8ba 100644 --- a/modules/Contacts/ContactFormBase.php +++ b/modules/Contacts/ContactFormBase.php @@ -571,7 +571,7 @@ function handleSave($prefix, $redirect=true, $useRequired=false){ } else { $focus = populateFromPost($prefix, $focus); - if(!empty($focus->portal_password) && $focus->portal_password != $_POST[$prefix.'old_portal_password']){ + if( isset($_POST[$prefix.'old_portal_password']) && !empty($focus->portal_password) && $focus->portal_password != $_POST[$prefix.'old_portal_password']){ $focus->portal_password = md5($focus->portal_password); } if (!isset($_POST[$prefix.'email_opt_out'])) $focus->email_opt_out = 0; @@ -699,7 +699,7 @@ function handleSave($prefix, $redirect=true, $useRequired=false){ } global $current_user; - if(is_admin($current_user)){ + if(is_admin($current_user) && isset($_POST[$prefix.'portal_name_verified'])){ if (!isset($_POST[$prefix.'portal_active'])) $focus->portal_active = '0'; //if no password is set set account to inactive for portal if(empty($_POST[$prefix.'portal_name']))$focus->portal_active = '0'; diff --git a/modules/Contacts/Popup_picker.php b/modules/Contacts/Popup_picker.php index 48d78db3..d65f292d 100644 --- a/modules/Contacts/Popup_picker.php +++ b/modules/Contacts/Popup_picker.php @@ -122,7 +122,7 @@ class Popup_Picker EOQ; $createContact = << + EOQ; $addformheader = get_form_header($mod_strings['LNK_NEW_CONTACT'], $formSave, false); $button = "
\n"; diff --git a/modules/Contacts/language/en_us.lang.php b/modules/Contacts/language/en_us.lang.php index d4da1db6..f8642baa 100644 --- a/modules/Contacts/language/en_us.lang.php +++ b/modules/Contacts/language/en_us.lang.php @@ -207,6 +207,7 @@ $mod_strings = array ( 'LBL_CASES_SUBPANEL_TITLE' => 'Cases', 'LBL_BUGS_SUBPANEL_TITLE' => 'Bugs', 'LBL_PROJECTS_SUBPANEL_TITLE' => 'Projects', + 'LBL_PROJECTS_RESOURCES' => 'Projects Resources', 'LBL_TARGET_OF_CAMPAIGNS' => 'Campaigns (Target of) :', 'LBL_CAMPAIGNS' => 'Campaigns', 'LBL_CAMPAIGN_LIST_SUBPANEL_TITLE'=>'Campaigns', diff --git a/modules/Contacts/tpls/QuickCreate.tpl b/modules/Contacts/tpls/QuickCreate.tpl index f79ef1cb..5c72bb08 100644 --- a/modules/Contacts/tpls/QuickCreate.tpl +++ b/modules/Contacts/tpls/QuickCreate.tpl @@ -63,7 +63,7 @@ {{/if}} {* -- Begin QuickCreate Specific -- *} -{if $smarty.request.action != 'SubpanelEdits'} +{if !($smarty.request.action == 'SubpanelEdits' || $smarty.request.action == 'Quickedit')} diff --git a/modules/Contacts/vardefs.php b/modules/Contacts/vardefs.php index a7740f09..27b2405c 100644 --- a/modules/Contacts/vardefs.php +++ b/modules/Contacts/vardefs.php @@ -305,14 +305,13 @@ array ( 'source' => 'non-db', 'vname' => 'LBL_PROJECTS', ), - 'project_resource'=> - array ( - 'name' => 'project_resource', - 'type' => 'link', - 'relationship' => 'projects_contacts_resources', - 'source' => 'non-db', - 'vname' => 'LBL_PROJECTS', - ), + 'project_resource' => array( + 'name' => 'project_resource', + 'type' => 'link', + 'relationship' => 'projects_contacts_resources', + 'source' => 'non-db', + 'vname' => 'LBL_PROJECTS_RESOURCES', + ), @@ -324,14 +323,14 @@ array ( 'source' => 'non-db', 'vname' => 'LBL_TASKS', ), - 'tasks_parent'=> - array ( - 'name' => 'tasks_parent', - 'type' => 'link', - 'relationship' => 'contact_tasks_parent', - 'source' => 'non-db', - 'vname' => 'LBL_TASKS', - ), + 'tasks_parent' => array( + 'name' => 'tasks_parent', + 'type' => 'link', + 'relationship' => 'contact_tasks_parent', + 'source' => 'non-db', + 'vname' => 'LBL_TASKS', + 'reportable' => false + ), 'user_sync'=> array ( 'name' => 'user_sync', @@ -389,7 +388,7 @@ array ( 'table' => 'campaigns', 'isnull' => 'true', 'module' => 'Campaigns', -// 'reportable'=>false, + 'reportable'=>false, 'massupdate' => false, 'duplicate_merge'=> 'disabled', ), diff --git a/modules/Currencies/Currency.php b/modules/Currencies/Currency.php index b45ec872..58597d11 100644 --- a/modules/Currencies/Currency.php +++ b/modules/Currencies/Currency.php @@ -553,7 +553,7 @@ function getCurrencyDropDown($focus, $field='currency_id', $value='', $view='Det $selectCurrency = $currency->getSelectOptions($value); $currency->setCurrencyFields($currency_fields); - $html = 'name) && $package->name != "studio"}30{else}28{/if} type="text" name="name" value="{$vardef.name}" + name) && $package->name != "studio"}30{else}28{/if} type="text" name="name" value="{$vardef.name}" onchange=" document.getElementById('label_key_id').value = 'LBL_'+document.getElementById('field_name_id').value.toUpperCase(); - document.getElementById('label_value_id').value = document.getElementById('field_name_id').value.replace(/_/,' '); + document.getElementById('label_value_id').value = document.getElementById('field_name_id').value.replace(/\_+/g,' ').replace(/^\s\s*/, '').replace(/\s\s*$/, ''); document.getElementById('field_name_id').value = document.getElementById('field_name_id').value.toLowerCase();" /> {else} - {$vardef.name} {/if} diff --git a/modules/DynamicFields/templates/Fields/TemplateDatetimecombo.php b/modules/DynamicFields/templates/Fields/TemplateDatetimecombo.php index ef5ca751..41c76fd7 100644 --- a/modules/DynamicFields/templates/Fields/TemplateDatetimecombo.php +++ b/modules/DynamicFields/templates/Fields/TemplateDatetimecombo.php @@ -122,7 +122,7 @@ class TemplateDatetimecombo extends TemplateRange } function get_db_type(){ - if($GLOBALS['db']->dbType == 'oracle'){ + if($GLOBALS['db']->dbType == 'oci8'){ return " DATE "; } else { return " DATETIME "; @@ -135,7 +135,7 @@ class TemplateDatetimecombo extends TemplateRange function get_field_def(){ $def = parent::get_field_def(); - if($GLOBALS['db']->dbType == 'oracle'){ + if($GLOBALS['db']->dbType == 'oci8'){ $def['dbType'] = 'date'; } else { $def['dbType'] = 'datetime'; diff --git a/modules/EmailMan/tpls/config.tpl b/modules/EmailMan/tpls/config.tpl index ce5c7488..d48c704d 100644 --- a/modules/EmailMan/tpls/config.tpl +++ b/modules/EmailMan/tpls/config.tpl @@ -454,6 +454,7 @@ loader.insert(); EmailMan = {}; +var first_load = true; function testOutboundSettings() { if (document.getElementById('mail_sendtype').value == 'sendmail') { testOutboundSettingsDialog(); @@ -586,15 +587,21 @@ function notify_setrequired(f) { function setDefaultSMTPPort() { - useSSLPort = !document.getElementById("mail_smtpssl").options[0].selected; - - if ( useSSLPort && document.getElementById("mail_smtpport").value == '25' ) { - document.getElementById("mail_smtpport").value = '465'; + if (!first_load) + { + useSSLPort = !document.getElementById("mail_smtpssl").options[0].selected; + + if ( useSSLPort && document.getElementById("mail_smtpport").value == '25' ) { + document.getElementById("mail_smtpport").value = '465'; + } + if ( !useSSLPort && document.getElementById("mail_smtpport").value == '465' ) { + document.getElementById("mail_smtpport").value = '25'; + } } - if ( !useSSLPort && document.getElementById("mail_smtpport").value == '465' ) { - document.getElementById("mail_smtpport").value = '25'; + else + { + first_load = false; } - } /** diff --git a/modules/EmailTemplates/DetailView.html b/modules/EmailTemplates/DetailView.html index 8197f1f0..3f83e84a 100644 --- a/modules/EmailTemplates/DetailView.html +++ b/modules/EmailTemplates/DetailView.html @@ -99,7 +99,7 @@ {MOD.LBL_BODY} -
{BODY_HTML}
+

diff --git a/modules/EmailTemplates/DetailView.php b/modules/EmailTemplates/DetailView.php index d4d32754..3c2ac659 100644 --- a/modules/EmailTemplates/DetailView.php +++ b/modules/EmailTemplates/DetailView.php @@ -120,7 +120,7 @@ $xtpl->assign("NAME", $focus->name); $xtpl->assign("DESCRIPTION", $focus->description); $xtpl->assign("SUBJECT", $focus->subject); $xtpl->assign("BODY", $focus->body); -$xtpl->assign("BODY_HTML", from_html($focus->body_html)); +$xtpl->assign("BODY_HTML", json_encode(from_html($focus->body_html))); $xtpl->assign("DATE_MODIFIED", $focus->date_modified); $xtpl->assign("DATE_ENTERED", $focus->date_entered); $xtpl->assign("ASSIGNED_USER_NAME", $focus->assigned_user_name); diff --git a/modules/EmailTemplates/EditView.php b/modules/EmailTemplates/EditView.php index e85cb0b2..075e199f 100644 --- a/modules/EmailTemplates/EditView.php +++ b/modules/EmailTemplates/EditView.php @@ -245,6 +245,7 @@ if(true) { $tiny = new SugarTinyMCE(); $tiny->defaultConfig['cleanup_on_startup']=true; $tiny->defaultConfig['height']=600; + $tiny->defaultConfig['plugins'].=",fullpage"; $tinyHtml = $tiny->getInstance(); $xtpl->assign("tiny", $tinyHtml); } diff --git a/modules/EmailTemplates/EmailTemplate.php b/modules/EmailTemplates/EmailTemplate.php index 15b0bd8f..08e7de8c 100644 --- a/modules/EmailTemplates/EmailTemplate.php +++ b/modules/EmailTemplates/EmailTemplate.php @@ -287,7 +287,15 @@ class EmailTemplate extends SugarBean { $this->parsed_entities=array(); //parse the template and find all the dynamic strings that need replacement. - $pattern_prefix = '$'.strtolower($beanList[$focus_name]).'_'; + // Bug #48111 It's strange why prefix for User module is contact_user (see self::generateFieldDefsJS method) + if ($beanList[$focus_name] == 'User') + { + $pattern_prefix = '$contact_user_'; + } + else + { + $pattern_prefix = '$'.strtolower($beanList[$focus_name]).'_'; + } $pattern_prefix_length = strlen($pattern_prefix); $pattern = '/\\'.$pattern_prefix.'[A-Za-z_0-9]*/'; diff --git a/modules/Emails/DetailView.php b/modules/Emails/DetailView.php index 25bee2bf..d20caa86 100644 --- a/modules/Emails/DetailView.php +++ b/modules/Emails/DetailView.php @@ -55,6 +55,7 @@ if(!isset($_REQUEST['record']) || empty($_REQUEST['record'])) { require_once('include/DetailView/DetailView.php'); global $gridline; global $app_strings; +global $focus; // SETTING DEFAULTS $focus = new Email(); diff --git a/modules/Emails/EditViewArchive.html b/modules/Emails/EditViewArchive.html index 2d57f2b9..ba814f1d 100644 --- a/modules/Emails/EditViewArchive.html +++ b/modules/Emails/EditViewArchive.html @@ -95,7 +95,7 @@ - + diff --git a/modules/InboundEmail/DetailView.html b/modules/InboundEmail/DetailView.html index 0d292f05..0ab47a52 100644 --- a/modules/InboundEmail/DetailView.html +++ b/modules/InboundEmail/DetailView.html @@ -59,9 +59,9 @@ - + - + diff --git a/modules/InboundEmail/EditView.html b/modules/InboundEmail/EditView.html index b329d217..25031afe 100644 --- a/modules/InboundEmail/EditView.html +++ b/modules/InboundEmail/EditView.html @@ -67,11 +67,12 @@ diff --git a/modules/InboundEmail/InboundEmail.php b/modules/InboundEmail/InboundEmail.php index f65dd395..830f7b58 100644 --- a/modules/InboundEmail/InboundEmail.php +++ b/modules/InboundEmail/InboundEmail.php @@ -3731,7 +3731,7 @@ class InboundEmail extends SugarBean { // Safe_HTML $this->safe->clear(); $this->safe->setUrlCallback(array($this, "urlCleaner")); - $str = $this->safe->parse($str); + $str = $this->safe->parse($str, false); return $this->cleanXssContent($str); } diff --git a/modules/InboundEmail/language/en_us.lang.php b/modules/InboundEmail/language/en_us.lang.php index b9cef6ce..fed9cb3f 100644 --- a/modules/InboundEmail/language/en_us.lang.php +++ b/modules/InboundEmail/language/en_us.lang.php @@ -90,7 +90,9 @@ $mod_strings = array( 'LBL_FOUND_MAILBOXES' => 'Found the following usable folders.
Click one to choose it:', 'LBL_FOUND_OPTIMUM_MSG' => '
Found optimum settings. Press the button below to apply them to your mail account.', 'LBL_FROM_ADDR' => '"From" Address', - 'LBL_FROM_ADDR_DESC' => "The email address provided here might not appear in the 'From' address section of the email sent due to restrictions imposed by the mail service provider. In these circumstances, the email address defined in the outgoing mail server will be used.", + // as long as XTemplate doesn't support output escaping, transform + // quotes to html-entities right here (bug #48913) + 'LBL_FROM_ADDR_DESC' => "The email address provided here might not appear in the "From" address section of the email sent due to restrictions imposed by the mail service provider. In these circumstances, the email address defined in the outgoing mail server will be used.", 'LBL_FROM_NAME_ADDR' => 'From Name/Email', 'LBL_FROM_NAME' => '"From" Name', 'LBL_GROUP_QUEUE' => 'Assign To Group', diff --git a/modules/Leads/language/en_us.lang.php b/modules/Leads/language/en_us.lang.php index d8dc7265..c0f01e0d 100644 --- a/modules/Leads/language/en_us.lang.php +++ b/modules/Leads/language/en_us.lang.php @@ -173,6 +173,7 @@ $mod_strings = array ( 'LBL_REFERED_BY' => 'Referred By:', 'LBL_REPORTS_TO_ID'=>'Reports To ID', 'LBL_REPORTS_TO' => 'Reports To:', + 'LBL_REPORTS_FROM' => 'Reports From:', 'LBL_SALUTATION' => 'Salutation', 'LBL_MODIFIED'=>'Modified By', 'LBL_MODIFIED_ID'=>'Modified By Id', diff --git a/modules/Leads/vardefs.php b/modules/Leads/vardefs.php index b6c0e615..2848d2e4 100644 --- a/modules/Leads/vardefs.php +++ b/modules/Leads/vardefs.php @@ -146,14 +146,13 @@ $dictionary['Lead'] = array('table' => 'leads','audited'=>true, 'unified_search' 'source'=>'non-db', 'vname'=>'LBL_REPORTS_TO', ), - 'contacts'=> - array ( + 'contacts'=> array( 'name' => 'contacts', 'type' => 'link', 'relationship' => 'contact_leads', 'module' => "Contacts", 'source' => 'non-db', - 'vname' => 'LBL_LEADS', + 'vname' => 'LBL_CONTACTS', ), /*'acc_name_from_accounts' => array ( @@ -214,13 +213,14 @@ $dictionary['Lead'] = array('table' => 'leads','audited'=>true, 'unified_search' 'vname'=>'LBL_CONTACT_ID', 'comment' => 'If converted, Contact ID resulting from the conversion' ), - 'contact'=> array ( + 'contact' => array( 'name' => 'contact', 'type' => 'link', 'link_type' => 'one', 'relationship' => 'contact_leads', 'source' => 'non-db', 'vname' => 'LBL_LEADS', + 'reportable' => false, ), 'account_id' => array ( @@ -238,14 +238,14 @@ $dictionary['Lead'] = array('table' => 'leads','audited'=>true, 'unified_search' 'vname'=>'LBL_OPPORTUNITY_ID', 'comment' => 'If converted, Opportunity ID resulting from the conversion' ), - 'opportunity' => array ( - 'name' => 'opportunity', - 'type' => 'link', - 'link_type' => 'one', - 'relationship' => 'opportunity_leads', - 'source'=>'non-db', - 'vname'=>'LBL_LEADS', - ), + 'opportunity' => array ( + 'name' => 'opportunity', + 'type' => 'link', + 'link_type' => 'one', + 'relationship' => 'opportunity_leads', + 'source' => 'non-db', + 'vname' => 'LBL_OPPORTUNITIES', + ), 'opportunity_name' => array ( 'name' => 'opportunity_name', diff --git a/modules/Leads/views/view.convertlead.php b/modules/Leads/views/view.convertlead.php index 2e63bf19..7a4fb340 100644 --- a/modules/Leads/views/view.convertlead.php +++ b/modules/Leads/views/view.convertlead.php @@ -127,9 +127,20 @@ class ViewConvertLead extends SugarView echo "
"; - global $sugar_config, $app_list_strings; + global $sugar_config, $app_list_strings, $app_strings; $smarty->assign('lead_conv_activity_opt', $sugar_config['lead_conv_activity_opt']); - $smarty->assign('convertModuleListOptions', get_select_options_with_id(array('Contacts' => $app_list_strings["moduleListSingular"]['Contacts']), '')); + + //Switch up list depending on copy or move + if($sugar_config['lead_conv_activity_opt'] == 'move') + { + $smarty->assign('convertModuleListOptions', get_select_options_with_id(array('None'=>$app_strings['LBL_NONE'], 'Contacts' => $app_list_strings["moduleListSingular"]['Contacts']), '')); + } + else if($sugar_config['lead_conv_activity_opt'] == 'copy') + { + $smarty->assign('convertModuleListOptions', get_select_options_with_id(array('Contacts' => $app_list_strings["moduleListSingular"]['Contacts']), '')); + } + + foreach($this->defs as $module => $vdef) { @@ -535,6 +546,7 @@ class ViewConvertLead extends SugarView { global $app_list_strings; global $sugar_config; + global $app_strings; $parent_types = $app_list_strings['record_type_display']; $activities = $this->getActivitiesFromLead($lead); @@ -548,28 +560,31 @@ class ViewConvertLead extends SugarView $bean->id = create_guid(); $bean->new_with_id = true; } - foreach($activities as $activity) - { - if (!isset($sugar_config['lead_conv_activity_opt']) || $sugar_config['lead_conv_activity_opt'] == 'copy') { - if (isset($_POST['lead_conv_ac_op_sel'])) { - //if the copy to module(s) are defined, copy only to those module(s) - if (is_array($_POST['lead_conv_ac_op_sel'])) { - foreach ($_POST['lead_conv_ac_op_sel'] as $mod) { - if ($mod == $module) { - $this->copyActivityAndRelateToBean($activity, $bean); - break; - } - } - } - } - } - else if ($sugar_config['lead_conv_activity_opt'] == 'move') { - // if to move activities, should be only one module selected - if ($_POST['lead_conv_ac_op_sel'] == $module) { - $this->moveActivity($activity, $bean); - } - } - } + if( isset($_POST['lead_conv_ac_op_sel']) && $_POST['lead_conv_ac_op_sel'] != $app_strings['LBL_NONE']) + { + foreach($activities as $activity) + { + if (!isset($sugar_config['lead_conv_activity_opt']) || $sugar_config['lead_conv_activity_opt'] == 'copy') { + if (isset($_POST['lead_conv_ac_op_sel'])) { + //if the copy to module(s) are defined, copy only to those module(s) + if (is_array($_POST['lead_conv_ac_op_sel'])) { + foreach ($_POST['lead_conv_ac_op_sel'] as $mod) { + if ($mod == $module) { + $this->copyActivityAndRelateToBean($activity, $bean); + break; + } + } + } + } + } + else if ($sugar_config['lead_conv_activity_opt'] == 'move') { + // if to move activities, should be only one module selected + if ($_POST['lead_conv_ac_op_sel'] == $module) { + $this->moveActivity($activity, $bean); + } + } + } + } } } } diff --git a/modules/Meetings/Meeting.php b/modules/Meetings/Meeting.php index 9a7247e3..0408a23a 100644 --- a/modules/Meetings/Meeting.php +++ b/modules/Meetings/Meeting.php @@ -35,16 +35,6 @@ if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); * "Powered by SugarCRM". ********************************************************************************/ -/********************************************************************************* - - * Description: TODO: To be written. - * Portions created by SugarCRM are Copyright(C) SugarCRM, Inc. - * All Rights Reserved. - * Contributor(s): ______________________________________.. - ********************************************************************************/ - - - // Meeting is used to store customer information. class Meeting extends SugarBean { @@ -470,8 +460,6 @@ class Meeting extends SugarBean { // cn: bug 9494 - passing a contact breaks this call $notifyUser =($meeting->current_notify_user->object_name == 'User') ? $meeting->current_notify_user : $current_user; // cn: bug 8078 - fixed call to $timedate - $prefDate = $notifyUser->getUserDateTimePreferences(); - if(strtolower(get_class($meeting->current_notify_user)) == 'contact') { $xtpl->assign("ACCEPT_URL", $sugar_config['site_url']. '/index.php?entryPoint=acceptDecline&module=Meetings&contact_id='.$meeting->current_notify_user->id.'&record='.$meeting->id); @@ -494,7 +482,8 @@ class Meeting extends SugarBean { } } $xtpl->assign("MEETING_TYPE", isset($meeting->type)? $typestring:""); - $xtpl->assign("MEETING_STARTDATE", $timedate->to_display_date_time($meeting->date_start,true,true,$notifyUser)." ".$prefDate['userGmt']); + $startdate = $timedate->fromDb($meeting->date_start); + $xtpl->assign("MEETING_STARTDATE", $timedate->asUser($startdate, $notifyUser)." ".TimeDate::userTimezoneSuffix($startdate, $notifyUser)); $xtpl->assign("MEETING_HOURS", $meeting->duration_hours); $xtpl->assign("MEETING_MINUTES", $meeting->duration_minutes); $xtpl->assign("MEETING_DESCRIPTION", $meeting->description); diff --git a/modules/Meetings/metadata/quickcreatedefs.php b/modules/Meetings/metadata/quickcreatedefs.php index f44bb87a..3df1c2d5 100644 --- a/modules/Meetings/metadata/quickcreatedefs.php +++ b/modules/Meetings/metadata/quickcreatedefs.php @@ -133,7 +133,7 @@ array ( array ( 'name' => 'duration_hours', 'label' => 'LBL_DURATION', - 'customCode' => '{literal}{/literal}
{$fields.duration_minutes.value} {$MOD.LBL_HOURS_MINS}
', + 'customCode' => '{literal}{/literal}
{$fields.duration_minutes.value} {$MOD.LBL_HOURS_MINS}
', ), ), @@ -141,7 +141,7 @@ array ( array ( 'name' => 'reminder_time', - 'customCode' => '{if $fields.reminder_checked.value == "1"}{assign var="REMINDER_TIME_DISPLAY" value="inline"}{assign var="REMINDER_CHECKED" value="checked"}{else}{assign var="REMINDER_TIME_DISPLAY" value="none"}{assign var="REMINDER_CHECKED" value=""}{/if}
{$fields.reminder_time.value}
', + 'customCode' => '{if $fields.reminder_checked.value == "1"}{assign var="REMINDER_TIME_DISPLAY" value="inline"}{assign var="REMINDER_CHECKED" value="checked"}{else}{assign var="REMINDER_TIME_DISPLAY" value="none"}{assign var="REMINDER_CHECKED" value=""}{/if}
{$fields.reminder_time.value}
', 'label' => 'LBL_REMINDER', ), diff --git a/modules/Meetings/tpls/footer.tpl b/modules/Meetings/tpls/footer.tpl index e2af6fd5..743103f8 100644 --- a/modules/Meetings/tpls/footer.tpl +++ b/modules/Meetings/tpls/footer.tpl @@ -57,6 +57,11 @@ SUGAR.meetings = {}; var meetingsLoader = new YAHOO.util.YUILoader({ require : ["sugar_grp_jsolait"], + // Bug #48940 Skin always must be blank + skin: { + base: 'blank', + defaultSkin: '' + }, onSuccess: function(){ SUGAR.meetings.fill_invitees = function() { if (typeof(GLOBAL_REGISTRY) != 'undefined') { @@ -97,4 +102,4 @@ meetingsLoader.insert(); {{/if}} {{sugar_button module="$module" id="Audit" view="$view"}} -
\ No newline at end of file + diff --git a/modules/ModuleBuilder/Module/StudioModule.php b/modules/ModuleBuilder/Module/StudioModule.php index 65a9cfc7..b3c44a09 100644 --- a/modules/ModuleBuilder/Module/StudioModule.php +++ b/modules/ModuleBuilder/Module/StudioModule.php @@ -296,10 +296,11 @@ class StudioModule if ($name == 'users') continue ; $subname = sugar_ucfirst ( (! empty ( $label )) ? translate ( $label, $this->module ) : $name ) ; + $action = "module=ModuleBuilder&action=editLayout&view=ListView&view_module={$this->module}&subpanel={$name}&subpanelLabel=" . urlencode($subname); $nodes [ $subname ] = array ( 'name' => $name , 'label' => $subname , - 'action' => "module=ModuleBuilder&action=editLayout&view=ListView&view_module={$this->module}&subpanel={$name}&subpanelLabel={$subname}" , + 'action' => $action, 'imageTitle' => $subname , 'imageName' => 'icon_' . ucfirst($name) . '_32', 'altImageName' => 'Subpanels', diff --git a/modules/ModuleBuilder/parsers/views/AbstractMetaDataParser.php b/modules/ModuleBuilder/parsers/views/AbstractMetaDataParser.php index 33000010..17188923 100644 --- a/modules/ModuleBuilder/parsers/views/AbstractMetaDataParser.php +++ b/modules/ModuleBuilder/parsers/views/AbstractMetaDataParser.php @@ -122,7 +122,7 @@ abstract class AbstractMetaDataParser $fieldDefs = $this->implementation->getFielddefs(); $newAry = array(); foreach($fieldDefs as $field){ - if(isset($field['required']) && $field['required'] && isset($field['name'])){ + if(isset($field['required']) && $field['required'] && isset($field['name']) && empty( $field['readonly'])) { array_push($newAry , '"'.$field['name'].'"'); } } diff --git a/modules/ModuleBuilder/parsers/views/ListLayoutMetaDataParser.php b/modules/ModuleBuilder/parsers/views/ListLayoutMetaDataParser.php index f55a3d97..254b4cbd 100644 --- a/modules/ModuleBuilder/parsers/views/ListLayoutMetaDataParser.php +++ b/modules/ModuleBuilder/parsers/views/ListLayoutMetaDataParser.php @@ -305,6 +305,14 @@ class ListLayoutMetaDataParser extends AbstractMetaDataParser implements MetaDat continue ; $newViewdefs [ $fieldname ] = $this->_trimFieldDefs($this->_fielddefs [ $fieldname ]) ; + + // fixing bug #25640: Value of "Relate" custom field is not displayed as a link in list view + // we should set additional params such as 'link' and 'id' to be stored in custom listviewdefs.php + if (isset($this->_fielddefs[$fieldname]['type']) && $this->_fielddefs[$fieldname]['type'] == 'relate') + { + $newViewdefs[$fieldname]['id'] = strtoupper($this->_fielddefs[$fieldname]['id_name']); + $newViewdefs[$fieldname]['link'] = true; + } // sorting fields of certain types will cause a database engine problems if ( isset($this->_fielddefs[$fieldname]['type']) && isset ( $rejectTypes [ $this->_fielddefs [ $fieldname ] [ 'type' ] ] )) diff --git a/modules/ModuleBuilder/parsers/views/UndeployedMetaDataImplementation.php b/modules/ModuleBuilder/parsers/views/UndeployedMetaDataImplementation.php index af947e0c..62778638 100644 --- a/modules/ModuleBuilder/parsers/views/UndeployedMetaDataImplementation.php +++ b/modules/ModuleBuilder/parsers/views/UndeployedMetaDataImplementation.php @@ -172,7 +172,7 @@ class UndeployedMetaDataImplementation extends AbstractMetaDataImplementation im $type = strtolower ( $type ) ; // BEGIN ASSERTIONS - if ($type != MB_BASEMETADATALOCATION && $type != MB_HISTORYMETADATALOCATION) + if ($type != MB_BASEMETADATALOCATION && $type != MB_HISTORYMETADATALOCATION && $type != MB_WORKINGMETADATALOCATION) { // just warn rather than die $GLOBALS [ 'log' ]->warning ( "UndeployedMetaDataImplementation->getFileName(): view type $type is not recognized" ) ; diff --git a/modules/ModuleBuilder/tpls/labels.tpl b/modules/ModuleBuilder/tpls/labels.tpl index 10afc247..efcd002d 100644 --- a/modules/ModuleBuilder/tpls/labels.tpl +++ b/modules/ModuleBuilder/tpls/labels.tpl @@ -69,7 +69,7 @@ {foreach from=$MOD item='label' key='key'} - + {/foreach} diff --git a/modules/Opportunities/vardefs.php b/modules/Opportunities/vardefs.php index 2157733c..a974a50d 100644 --- a/modules/Opportunities/vardefs.php +++ b/modules/Opportunities/vardefs.php @@ -338,28 +338,28 @@ $dictionary['Opportunity'] = array('table' => 'opportunities','audited'=>true, ' 'vname'=>'LBL_LEADS', ), - 'campaigns' => - array ( - 'name' => 'campaigns', - 'type' => 'link', - 'relationship' => 'opportunities_campaign', - 'module'=>'CampaignLog', - 'bean_name'=>'CampaignLog', - 'source'=>'non-db', - 'vname'=>'LBL_CAMPAIGNS', - ), + 'campaigns' => array( + 'name' => 'campaigns', + 'type' => 'link', + 'relationship' => 'opportunities_campaign', + 'module' => 'CampaignLog', + 'bean_name' => 'CampaignLog', + 'source' => 'non-db', + 'vname' => 'LBL_CAMPAIGNS', + 'reportable' => false + ), - 'campaign_link' => - array ( - 'name' => 'campaign_link', - 'type' => 'link', - 'relationship' => 'opportunities_campaign', - 'vname' => 'LBL_CAMPAIGNS', - 'link_type' => 'one', - 'module'=>'Campaigns', - 'bean_name'=>'Campaign', - 'source'=>'non-db', - ), + 'campaign_link' => array( + 'name' => 'campaign_link', + 'type' => 'link', + 'relationship' => 'opportunities_campaign', + 'vname' => 'LBL_CAMPAIGNS', + 'link_type' => 'one', + 'module' => 'Campaigns', + 'bean_name' => 'Campaign', + 'source' => 'non-db', + 'reportable' => false + ), 'currencies' => array ( 'name' => 'currencies', diff --git a/modules/SavedSearch/SavedSearch.php b/modules/SavedSearch/SavedSearch.php index f0298acb..4d79cb31 100644 --- a/modules/SavedSearch/SavedSearch.php +++ b/modules/SavedSearch/SavedSearch.php @@ -98,7 +98,7 @@ class SavedSearch extends SugarBean { $result = $db->query($query, true, "Error filling in saved search list: "); $savedSearchArray['_none'] = $app_strings['LBL_NONE']; - while ($row = $db->fetchByAssoc($result)) { + while ($row = $db->fetchByAssoc($result, -1, FALSE)) { $savedSearchArray[$row['id']] = htmlspecialchars($row['name'], ENT_QUOTES); } $sugarSmarty = new Sugar_Smarty(); @@ -187,8 +187,8 @@ class SavedSearch extends SugarBean { $result = $db->query($query, true, "Error filling in saved search list: "); $savedSearchArray['_none'] = $app_strings['LBL_NONE']; - while ($row = $db->fetchByAssoc($result)) { - $savedSearchArray[$row['id']] = htmlspecialchars($row['name']); + while ($row = $db->fetchByAssoc($result, -1, FALSE)) { + $savedSearchArray[$row['id']] = htmlspecialchars($row['name'], ENT_QUOTES); } $sugarSmarty = new Sugar_Smarty(); diff --git a/modules/Studio/wizards/RenameModules.php b/modules/Studio/wizards/RenameModules.php index ccda237f..af58e310 100644 --- a/modules/Studio/wizards/RenameModules.php +++ b/modules/Studio/wizards/RenameModules.php @@ -413,7 +413,7 @@ class RenameModules foreach($this->changedModules as $changedModuleName => $renameFields) { if( !( isset($subpanelMetaData['type']) && $subpanelMetaData['type'] == 'collection') //Dont bother with collections - && $subpanelMetaData['module'] == $changedModuleName && isset($subpanelMetaData['title_key']) ) + && isset($subpanelMetaData['module']) && $subpanelMetaData['module'] == $changedModuleName && isset($subpanelMetaData['title_key']) ) { $replaceKey = $subpanelMetaData['title_key']; if( !isset($mod_strings[$replaceKey]) ) @@ -456,13 +456,13 @@ class RenameModules $layout_defs = array(); - if ( file_exists( 'modules/' . $bean->module_dir . '/metadata/subpaneldefs.php') ) + if ( isset($bean->module_dir) && file_exists( 'modules/' . $bean->module_dir . '/metadata/subpaneldefs.php') ) require('modules/' . $bean->module_dir . '/metadata/subpaneldefs.php'); - if ( file_exists( 'custom/modules/' . $bean->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php')) + if ( isset($bean->module_dir) && file_exists( 'custom/modules/' . $bean->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php')) require('custom/modules/' . $bean->module_dir . '/Ext/Layoutdefs/layoutdefs.ext.php'); - return isset($layout_defs[$bean->module_dir]['subpanel_setup']) ? $layout_defs[$bean->module_dir]['subpanel_setup'] : $layout_defs; + return isset($bean->module_dir) && isset($layout_defs[$bean->module_dir]['subpanel_setup']) ? $layout_defs[$bean->module_dir]['subpanel_setup'] : $layout_defs; } /** @@ -574,7 +574,7 @@ class RenameModules $dc = new DashletCacheBuilder(); $dc->buildCache(); } - require_once($GLOBALS['sugar_config']['cache_dir'].'dashlets/dashlets.php'); + require($GLOBALS['sugar_config']['cache_dir'].'dashlets/dashlets.php'); foreach($this->changedModules as $moduleName => $replacementLabels) { @@ -598,7 +598,7 @@ class RenameModules { if( isset($dashletData['module']) && $dashletData['module'] == $moduleName && file_exists($dashletData['meta']) ) { - require_once( $dashletData['meta'] ); + require( $dashletData['meta'] ); $dashletTitle = $dashletMeta[$dashletName]['title']; $currentModuleStrings = return_module_language($this->selectedLanguage, $moduleName); $modStringKey = array_search($dashletTitle,$currentModuleStrings); diff --git a/modules/Tasks/Task.php b/modules/Tasks/Task.php index d022ca77..64518a66 100644 --- a/modules/Tasks/Task.php +++ b/modules/Tasks/Task.php @@ -35,19 +35,6 @@ if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); * "Powered by SugarCRM". ********************************************************************************/ -/********************************************************************************* - - * Description: TODO: To be written. - * Portions created by SugarCRM are Copyright (C) SugarCRM, Inc. - * All Rights Reserved. - * Contributor(s): ______________________________________.. - ********************************************************************************/ - - - - - - // Task is used to store customer information. class Task extends SugarBean { @@ -337,8 +324,9 @@ class Task extends SugarBean { $xtpl->assign("TASK_SUBJECT", $task->name); //MFH #13507 $xtpl->assign("TASK_PRIORITY", (isset($task->priority)?$app_list_strings['task_priority_dom'][$task->priority]:"")); - $userGMT = !empty($prefDate['userGmt']) ? $prefDate['userGmt'] : ''; - $xtpl->assign("TASK_DUEDATE", $timedate->to_display_date_time($task->date_due . " " . $task->time_due,true,true,$notifyUser)." ".$userGMT); + $duedate = $timedate->fromDb($task->date_due); + $duedate = !empty($duedate) ? ($timedate->asUser($duedate, $notifyUser)." ".TimeDate::userTimezoneSuffix($duedate, $notifyUser)) : ''; + $xtpl->assign("TASK_DUEDATE", $duedate); $xtpl->assign("TASK_STATUS", (isset($task->status)?$app_list_strings['task_status_dom'][$task->status]:"")); $xtpl->assign("TASK_DESCRIPTION", $task->description); diff --git a/modules/UserPreferences/UserPreference.php b/modules/UserPreferences/UserPreference.php index 500f8a86..3b367eba 100644 --- a/modules/UserPreferences/UserPreference.php +++ b/modules/UserPreferences/UserPreference.php @@ -238,9 +238,7 @@ class UserPreference extends SugarBean */ public function getUserDateTimePreferences() { - global $sugar_config, $db, $timezones, $timedate, $current_user; - - require_once('include/timezone/timezones.php'); + global $sugar_config, $db, $timedate, $current_user; $user = $this->_userFocus; @@ -248,29 +246,20 @@ class UserPreference extends SugarBean if(!empty($user) && $this->loadPreferences('global')) { // forced to set this to a variable to compare b/c empty() wasn't working - $timeZone = $user->getPreference("timezone"); + $timeZone = TimeDate::userTimezone($user); $timeFormat = $user->getPreference("timef"); $dateFormat = $user->getPreference("datef"); // cn: bug xxxx cron.php fails because of missing preference when admin hasn't logged in yet $timeZone = empty($timeZone) ? 'America/Los_Angeles' : $timeZone; - if(empty($timeZone)) $timeZone = ''; if(empty($timeFormat)) $timeFormat = $sugar_config['default_time_format']; if(empty($dateFormat)) $dateFormat = $sugar_config['default_date_format']; - $equinox = date('I'); - - $serverHourGmt = date('Z') / 60 / 60; - - $userOffsetFromServerHour = $user->getPreference("timez"); - - $userHourGmt = $serverHourGmt + $userOffsetFromServerHour; - $prefDate['date'] = $dateFormat; $prefDate['time'] = $timeFormat; - $prefDate['userGmt'] = "(GMT".($timezones[$timeZone]['gmtOffset'] / 60).")"; - $prefDate['userGmtOffset'] = $timezones[$timeZone]['gmtOffset'] / 60; + $prefDate['userGmt'] = TimeDate::tzName($timeZone); + $prefDate['userGmtOffset'] = $timedate->getUserUTCOffset($user); return $prefDate; } else { @@ -278,17 +267,17 @@ class UserPreference extends SugarBean $prefDate['time'] = $timedate->get_time_format(); if(!empty($user) && $user->object_name == 'User') { - $timeZone = $user->getPreference("timezone"); + $timeZone = TimeDate::userTimezone($user); // cn: bug 9171 - if user has no time zone, cron.php fails for InboundEmail if(!empty($timeZone)) { - $prefDate['userGmt'] = "(GMT".($timezones[$timeZone]['gmtOffset'] / 60).")"; - $prefDate['userGmtOffset'] = $timezones[$timeZone]['gmtOffset'] / 60; + $prefDate['userGmt'] = TimeDate::tzName($timeZone); + $prefDate['userGmtOffset'] = $timedate->getUserUTCOffset($user); } } else { - $timeZone = $current_user->getPreference("timezone"); + $timeZone = TimeDate::userTimezone($current_user); if(!empty($timeZone)) { - $prefDate['userGmt'] = "(GMT".($timezones[$timeZone]['gmtOffset'] / 60).")"; - $prefDate['userGmtOffset'] = $timezones[$timeZone]['gmtOffset'] / 60; + $prefDate['userGmt'] = TimeDate::tzName($timeZone); + $prefDate['userGmtOffset'] = $timedate->getUserUTCOffset($current_user); } } diff --git a/modules/Users/GeneratePassword.php b/modules/Users/GeneratePassword.php index 3ac83856..12384899 100644 --- a/modules/Users/GeneratePassword.php +++ b/modules/Users/GeneratePassword.php @@ -177,8 +177,22 @@ if (isset($_POST['link']) && $_POST['link'] == '1'){ $htmlBody = str_replace('$contact_user_pwd_last_changed', TimeDate::getInstance()->nowDb(), $htmlBody); $body = str_replace('$contact_user_user_name', $usr->user_name, $body); $body = str_replace('$contact_user_pwd_last_changed', TimeDate::getInstance()->nowDb(), $body); - $emailTemp->body_html = $htmlBody; - $emailTemp->body = $body; + // Bug #36250 Replacement of all template variables. + $macro_nv=array(); + $template_data = $emailTemp->parse_email_template( + array( + 'subject' => $emailTemp->subject, + 'body_html' => $htmlBody, + 'body' => $body + ), + $usr->module_dir, + $usr, + $macro_nv + ); + $emailTemp->subject = $template_data['subject']; + $emailTemp->body_html = $template_data['body_html']; + $emailTemp->body = $template_data['body']; + // Bug #36250 is ended require_once('include/SugarPHPMailer.php'); $itemail=$usr->emailAddress->getPrimaryAddress($usr); diff --git a/modules/Users/User.php b/modules/Users/User.php index a7965b47..42bd887b 100644 --- a/modules/Users/User.php +++ b/modules/Users/User.php @@ -844,7 +844,10 @@ EOQ; function get_list_view_data() { global $current_user; - + + // Bug #48555 Not User Name Format of User's locale. + $this->_create_proper_name_field(); + $user_fields = $this->get_list_view_array(); if ($this->is_admin) $user_fields['IS_ADMIN_IMAGE'] = SugarThemeRegistry::current()->getImage('check_inline', ''); @@ -990,22 +993,17 @@ EOQ; return $ret; } - function getUsersNameAndEmail() { - $salutation = ''; - $fullName = ''; - if(!empty($this->salutation)) $salutation = $this->salutation; + function getUsersNameAndEmail() + { + // Bug #48555 Not User Name Format of User's locale. + $this->_create_proper_name_field(); - if(!empty($this->first_name)) { - $fullName = trim($salutation.' '.$this->first_name.' '.$this->last_name); - } elseif(!empty($this->name)) { - $fullName = $this->name; - } $prefAddr = $this->emailAddress->getPrimaryAddress($this); if (empty ($prefAddr)) { $prefAddr = $this->emailAddress->getReplyToAddress($this); } - return array('email' => $prefAddr , 'name' => $fullName); + return array('email' => $prefAddr , 'name' => $this->name); } // fn @@ -1100,27 +1098,22 @@ EOQ; } if($client == 'sugar') { - $salutation = ''; - $fullName = ''; $email = ''; $to_addrs_ids = ''; $to_addrs_names = ''; $to_addrs_emails = ''; - - if(!empty($focus->salutation)) $salutation = $focus->salutation; - - if(!empty($focus->first_name)) { - $fullName = trim($salutation.' '.$focus->first_name.' '.$focus->last_name); - } elseif(!empty($focus->name)) { - $fullName = $focus->name; - } + + $fullName = !empty($focus->name) ? $focus->name : ''; if(empty($ret_module)) $ret_module = $focus->module_dir; if(empty($ret_id)) $ret_id = $focus->id; if($focus->object_name == 'Contact') { $contact_id = $focus->id; $to_addrs_ids = $focus->id; - $to_addrs_names = $fullName; + // Bug #48555 Not User Name Format of User's locale. + $focus->_create_proper_name_field(); + $fullName = $focus->name; + $to_addrs_names = $fullName; $to_addrs_emails = $focus->email1; } @@ -1182,20 +1175,12 @@ EOQ; } if($client == 'sugar') { - $salutation = ''; - $fullName = ''; $email = ''; $to_addrs_ids = ''; $to_addrs_names = ''; $to_addrs_emails = ''; + $fullName = !empty($focus->name) ? $focus->name : ''; - if(!empty($focus->salutation)) $salutation = $focus->salutation; - - if(!empty($focus->first_name)) { - $fullName = trim($salutation.' '.$focus->first_name.' '.$focus->last_name); - } elseif(!empty($focus->name)) { - $fullName = $focus->name; - } if(!empty($focus->$attribute)) { $email = $focus->$attribute; } @@ -1204,7 +1189,10 @@ EOQ; if(empty($ret_module)) $ret_module = $focus->module_dir; if(empty($ret_id)) $ret_id = $focus->id; if($focus->object_name == 'Contact') { - $contact_id = $focus->id; + // Bug #48555 Not User Name Format of User's locale. + $focus->_create_proper_name_field(); + $fullName = $focus->name; + $contact_id = $focus->id; $to_addrs_ids = $focus->id; $to_addrs_names = $fullName; $to_addrs_emails = $focus->email1; @@ -1501,4 +1489,26 @@ EOQ; } + // Bug #48014 Must to send password to imported user if this action is required + function afterImportSave() + { + if( + $this->user_hash == false + && !$this->is_group + && !$this->portal_only + && isset($GLOBALS['sugar_config']['passwordsetting']['SystemGeneratedPasswordON']) + && $GLOBALS['sugar_config']['passwordsetting']['SystemGeneratedPasswordON'] + ) + { + $backUpPost = $_POST; + $_POST = array( + 'userId' => $this->id + ); + ob_start(); + require('modules/Users/GeneratePassword.php'); + $result = ob_get_clean(); + $_POST = $backUpPost; + return $result == true; + } + } } diff --git a/modules/Users/controller.php b/modules/Users/controller.php index 77359dcd..775adf30 100644 --- a/modules/Users/controller.php +++ b/modules/Users/controller.php @@ -83,6 +83,7 @@ class UsersController extends SugarController $_POST['should_remind'] = '1'; $_POST['reminder_time'] = 1800; $_POST['mailmerge_on'] = 'on'; + $_POST['receive_notifications'] = $current_user->receive_notifications; $_POST['user_theme'] = (string) SugarThemeRegistry::getDefault(); // save and redirect to new view diff --git a/modules/Users/language/en_us.lang.php b/modules/Users/language/en_us.lang.php index dc7afef4..070c66ef 100644 --- a/modules/Users/language/en_us.lang.php +++ b/modules/Users/language/en_us.lang.php @@ -375,6 +375,7 @@ $mod_strings = array ( 'LNK_USER_LIST' => 'View Users', 'LNK_REASSIGN_RECORDS' => 'Reassign Records', 'LBL_PROSPECT_LIST' => 'Prospect List', + 'LBL_EMAILS' => 'Emails', 'LBL_PROCESSING' => 'Processing', 'LBL_UPDATE_FINISH' => 'Update complete', 'LBL_AFFECTED' => 'affected', diff --git a/modules/Users/vardefs.php b/modules/Users/vardefs.php index 3e703dec..c9ed2a35 100644 --- a/modules/Users/vardefs.php +++ b/modules/Users/vardefs.php @@ -504,6 +504,14 @@ $dictionary['User'] = array( 'source' => 'non-db', 'vname' => 'LBL_PROSPECT_LIST', ) , + 'emails_users' => array( + 'name' => 'emails_users', + 'type' => 'link', + 'relationship' => 'emails_users_rel', + 'module' => 'Emails', + 'source' => 'non-db', + 'vname' => 'LBL_EMAILS' + ), 'holidays' => array( 'name' => 'holidays', 'type' => 'link', diff --git a/modules/Users/views/view.list.php b/modules/Users/views/view.list.php index 4db9fbfb..5318808e 100644 --- a/modules/Users/views/view.list.php +++ b/modules/Users/views/view.list.php @@ -39,17 +39,18 @@ require_once('include/MVC/View/views/view.list.php'); class UsersViewList extends ViewList { - public function preDisplay() - { - if ( !$GLOBALS['current_user']->isAdminForModule('Users') - ) { + public function preDisplay() + { + //bug #46690: Developer Access to Users/Teams/Roles + if (!$GLOBALS['current_user']->isAdminForModule('Users') && !$GLOBALS['current_user']->isDeveloperForModule('Users')) + { //instead of just dying here with unauthorized access will send the user back to his/her settings - SugarApplication::redirect('index.php?module=Users&action=DetailView&record='.$GLOBALS['current_user']->id); + SugarApplication::redirect('index.php?module=Users&action=DetailView&record=' . $GLOBALS['current_user']->id); } - $this->lv = new ListViewSmarty(); - $this->lv->delete = false; - $this->lv->email = false; - } + $this->lv = new ListViewSmarty(); + $this->lv->delete = false; + $this->lv->email = false; + } public function listViewProcess() { diff --git a/soap/SoapHelperFunctions.php b/soap/SoapHelperFunctions.php index 6c17b3d8..cfbe380c 100644 --- a/soap/SoapHelperFunctions.php +++ b/soap/SoapHelperFunctions.php @@ -766,6 +766,92 @@ function get_return_value($value, $module, $returnDomValue = false){ } +function get_encoded_Value($value) { + + $value = htmlspecialchars($value); + + // bug 47683, special characters cause OPI parser to fail + // htmlspecialchars or htmlentities does not convert control characters + // so we have to convert them by ourselves. + // Per http://en.wikipedia.org/wiki/XML#Valid_characters + // 00 is not allowed in XML + // 09, 0A, 0D and 85 does not require escaping + // CDATA is also needed + $conv_table = array(); + $conv_table["\x00"] = ""; // not allowed in XML so remove it + $conv_table["\x01"] = ""; + $conv_table["\x02"] = ""; + $conv_table["\x03"] = ""; + $conv_table["\x04"] = ""; + $conv_table["\x05"] = ""; + $conv_table["\x06"] = ""; + $conv_table["\x07"] = ""; + $conv_table["\x08"] = ""; + //$conv_table["\x09"] = " "; + //$conv_table["\x0A"] = " "; + $conv_table["\x0B"] = " "; + $conv_table["\x0C"] = " "; + //$conv_table["\x0D"] = " "; + $conv_table["\x0E"] = ""; + $conv_table["\x0F"] = ""; + $conv_table["\x10"] = ""; + $conv_table["\x11"] = ""; + $conv_table["\x12"] = ""; + $conv_table["\x13"] = ""; + $conv_table["\x14"] = ""; + $conv_table["\x15"] = ""; + $conv_table["\x16"] = ""; + $conv_table["\x17"] = ""; + $conv_table["\x18"] = ""; + $conv_table["\x19"] = ""; + $conv_table["\x1A"] = ""; + $conv_table["\x1B"] = ""; + $conv_table["\x1C"] = ""; + $conv_table["\x1D"] = ""; + $conv_table["\x1E"] = ""; + $conv_table["\x1F"] = ""; + $conv_table["\x80"] = "€"; + $conv_table["\x81"] = ""; + $conv_table["\x82"] = "‚"; + $conv_table["\x83"] = "ƒ"; + $conv_table["\x84"] = "„"; + $conv_table["\x85"] = "…"; + $conv_table["\x86"] = "†"; + $conv_table["\x87"] = "‡"; + $conv_table["\x88"] = "ˆ"; + $conv_table["\x89"] = "‰"; + $conv_table["\x8A"] = "Š"; + $conv_table["\x8B"] = "‹"; + $conv_table["\x8C"] = "Œ"; + $conv_table["\x8D"] = ""; + $conv_table["\x8E"] = "Ž"; + $conv_table["\x8F"] = ""; + $conv_table["\x90"] = ""; + $conv_table["\x91"] = "‘"; + $conv_table["\x92"] = "’"; + $conv_table["\x93"] = "“"; + $conv_table["\x94"] = "”"; + $conv_table["\x95"] = "•"; + $conv_table["\x96"] = "–"; + $conv_table["\x97"] = "—"; + $conv_table["\x98"] = "˜"; + $conv_table["\x99"] = "™"; + $conv_table["\x9A"] = "š"; + $conv_table["\x9B"] = "›"; + $conv_table["\x9C"] = "œ"; + $conv_table["\x9D"] = ""; + $conv_table["\x9E"] = "ž"; + $conv_table["\x9F"] = "Ÿ"; + + // convert + $value = strtr($value, $conv_table); + + // wrap it with CDATA + $value = ''; + + return $value; +} + function get_name_value_xml($val, $module_name){ $xml = ''; $xml .= ''.$val['id'].''; @@ -774,7 +860,7 @@ function get_name_value_xml($val, $module_name){ foreach($val['name_value_list'] as $name=>$nv){ $xml .= ''; $xml .= ''.htmlspecialchars($nv['name']).''; - $xml .= ''.htmlspecialchars($nv['value']).''; + $xml .= get_encoded_Value($nv['value']); $xml .= ''; } $xml .= ''; @@ -934,13 +1020,10 @@ function add_create_account($seed) function check_for_duplicate_contacts($seed){ - if(isset($seed->id)){ return null; } - $query = ''; - $trimmed_email = trim($seed->email1); $trimmed_email2 = trim($seed->email2); $trimmed_last = trim($seed->last_name); @@ -970,7 +1053,20 @@ function check_for_duplicate_contacts($seed){ } return null; } - } + } else { + //This section of code is executed if no emails are supplied in the $seed instance + + //This query is looking for the id of Contact records that do not have a primary email address based on the matching + //first and last name and the record being not deleted. If any such records are found we will take the first one and assume + //that it is the duplicate record + $query = "SELECT c.id as id FROM contacts c + LEFT OUTER JOIN email_addr_bean_rel eabr ON eabr.bean_id = c.id + WHERE c.first_name = '{$trimmed_first}' AND c.last_name = '{$trimmed_last}' AND c.deleted = 0 AND eabr.id IS NULL"; + + //Apply the limit query filter to this since we only need the first record + $result = $GLOBALS['db']->getOne($query); + return !empty($result) ? $result : null; + } } /* @@ -1060,6 +1156,38 @@ function canViewPath( $path, $base ){ $base = realpath( $base ); return 0 !== strncmp( $path, $base, strlen( $base ) ); } + +/** + * apply_values + * + * This function applies the given values to the bean object. If it is a first time sync + * then empty values will not be copied over. + * + * @param Mixed $seed Object representing SugarBean instance + * @param Array $dataValues Array of fields/values to set on the SugarBean instance + * @param boolean $firstSync Boolean indicating whether or not this is a first time sync + */ +function apply_values($seed, $dataValues, $firstSync) +{ + if(!$seed instanceof SugarBean || !is_array($dataValues)) + { + return; + } + + foreach($dataValues as $field=>$value) + { + if($firstSync) + { + //If this is a first sync AND the value is not empty then we set it + if(!empty($value)) + { + $seed->$field = $value; + } + } else { + $seed->$field = $value; + } + } +} /*END HELPER*/ ?> diff --git a/soap/SoapSugarUsers.php b/soap/SoapSugarUsers.php index 9f771b8b..1be00b8b 100644 --- a/soap/SoapSugarUsers.php +++ b/soap/SoapSugarUsers.php @@ -1968,7 +1968,7 @@ function set_entries_details($session, $module_name, $name_value_lists, $select_ // INTERNAL FUNCTION NOT EXPOSED THROUGH API function handle_set_entries($module_name, $name_value_lists, $select_fields = FALSE) { - global $beanList, $beanFiles, $app_list_strings; + global $beanList, $beanFiles, $app_list_strings, $current_user; $error = new SoapError(); $ret_values = array(); @@ -1977,8 +1977,9 @@ function handle_set_entries($module_name, $name_value_lists, $select_fields = FA $error->set_error('no_module'); return array('ids'=>array(), 'error'=>$error->get_soap_array()); } - global $current_user; - if(!check_modules_access($current_user, $module_name, 'write')){ + + if(!check_modules_access($current_user, $module_name, 'write')) + { $error->set_error('no_access'); return array('ids'=>-1, 'error'=>$error->get_soap_array()); } @@ -1988,75 +1989,109 @@ function handle_set_entries($module_name, $name_value_lists, $select_fields = FA $ids = array(); $count = 1; $total = sizeof($name_value_lists); + foreach($name_value_lists as $name_value_list){ $seed = new $class_name(); $seed->update_vcal = false; - foreach($name_value_list as $value){ - if($value['name'] == 'id'){ + + //See if we can retrieve the seed by a given id value + foreach($name_value_list as $value) + { + if($value['name'] == 'id') + { $seed->retrieve($value['value']); break; } } - foreach($name_value_list as $value) { + $dataValues = array(); + foreach($name_value_list as $value) + { $val = $value['value']; - if($seed->field_name_map[$value['name']]['type'] == 'enum' ||$seed->field_name_map[$value['name']]['type'] == 'radioenum'){ + if($seed->field_name_map[$value['name']]['type'] == 'enum' || $seed->field_name_map[$value['name']]['type'] == 'radioenum') + { $vardef = $seed->field_name_map[$value['name']]; - if(isset($app_list_strings[$vardef['options']]) && !isset($app_list_strings[$vardef['options']][$value]) ) { - if ( in_array($val,$app_list_strings[$vardef['options']]) ){ + if(isset($app_list_strings[$vardef['options']]) && !isset($app_list_strings[$vardef['options']][$val]) ) + { + if ( in_array($val,$app_list_strings[$vardef['options']]) ) + { $val = array_search($val,$app_list_strings[$vardef['options']]); } } + } else if($seed->field_name_map[$value['name']]['type'] == 'multienum') { - $vardef = $seed->field_name_map[$value['name']]; - if(isset($app_list_strings[$vardef['options']]) && !isset($app_list_strings[$vardef['options']][$value]) ) { + $vardef = $seed->field_name_map[$value['name']]; + + if(isset($app_list_strings[$vardef['options']]) && !isset($app_list_strings[$vardef['options']][$value]) ) + { $items = explode(",", $val); $parsedItems = array(); - foreach ($items as $item) { - if ( in_array($item, $app_list_strings[$vardef['options']]) ){ + foreach ($items as $item) + { + if ( in_array($item, $app_list_strings[$vardef['options']]) ) + { $keyVal = array_search($item,$app_list_strings[$vardef['options']]); array_push($parsedItems, $keyVal); } } - if (!empty($parsedItems)) { + if (!empty($parsedItems)) + { $val = encodeMultienumValue($parsedItems); } } } - $seed->$value['name'] = $val; + + //Apply the non-empty values now since this will be used for duplicate checks + if(!empty($val)) + { + $seed->$value['name'] = $val; + } + //Store all the values in dataValues Array to apply later + $dataValues[$value['name']] = $val; } - if($count == $total){ - $seed->update_vcal = false; + if($count == $total) + { + $seed->update_vcal = false; } $count++; //Add the account to a contact if($module_name == 'Contacts'){ - $GLOBALS['log']->debug('Creating Contact Account'); + add_create_account($seed); $duplicate_id = check_for_duplicate_contacts($seed); - if($duplicate_id == null){ - if($seed->ACLAccess('Save') && ($seed->deleted != 1 || $seed->ACLAccess('Delete'))){ + if($duplicate_id == null) + { + if($seed->ACLAccess('Save') && ($seed->deleted != 1 || $seed->ACLAccess('Delete'))) + { + //Now apply the values, since this is not a duplicate we can just pass false for the $firstSync argument + apply_values($seed, $dataValues, false); $seed->save(); if($seed->deleted == 1){ $seed->mark_deleted($seed->id); } $ids[] = $seed->id; } - } - else{ + } else { //since we found a duplicate we should set the sync flag - if( $seed->ACLAccess('Save')){ - $seed->id = $duplicate_id; + if( $seed->ACLAccess('Save')) + { + //Determine if this is a first time sync. We find out based on whether or not a contacts_users relationship exists + $seed->id = $duplicate_id; + $seed->load_relationship("user_sync"); + $beans = $seed->user_sync->getBeans(); + $first_sync = empty($beans); + + //Now apply the values and indicate whether or not this is a first time sync + apply_values($seed, $dataValues, $first_sync); $seed->contacts_users_id = $current_user->id; $seed->save(); $ids[] = $duplicate_id;//we have a conflict } } - } - else if($module_name == 'Meetings' || $module_name == 'Calls'){ + } else if($module_name == 'Meetings' || $module_name == 'Calls') { //we are going to check if we have a meeting in the system //with the same outlook_id. If we do find one then we will grab that //id and save it @@ -2094,9 +2129,7 @@ function handle_set_entries($module_name, $name_value_lists, $select_fields = FA $seed->save(); $ids[] = $seed->id; }//fi - } - else - { + } else { if( $seed->ACLAccess('Save') && ($seed->deleted != 1 || $seed->ACLAccess('Delete'))){ $seed->save(); $ids[] = $seed->id; diff --git a/sugar_version.php b/sugar_version.php index 289d526f..cd04d0da 100644 --- a/sugar_version.php +++ b/sugar_version.php @@ -38,10 +38,10 @@ -$sugar_version = '6.3.0'; -$sugar_db_version = '6.3.0'; +$sugar_version = '6.3.1'; +$sugar_db_version = '6.3.1'; $sugar_flavor = 'CE'; -$sugar_build = '7004'; -$sugar_timestamp = '2011-11-09 05:10pm'; +$sugar_build = '7095'; +$sugar_timestamp = '2011-12-16 10:54am'; ?> diff --git a/tests/data/Bug47731Test.php b/tests/data/Bug47731Test.php new file mode 100755 index 00000000..aa6acb01 --- /dev/null +++ b/tests/data/Bug47731Test.php @@ -0,0 +1,90 @@ +contact = new Contact(); + $this->contact->field_defs["as_tetrispe_accounts_name"] = array ( + 'name' => 'as_tetrispe_accounts_name', + 'type' => 'relate', + 'source' => 'non-db', + 'vname' => 'LBL_AS_TETRISPERSON_ACCOUNTS_FROM_ACCOUNTS_TITLE', + 'save' => true, + 'id_name' => 'as_tetrispac95ccounts_ida', + 'link' => 'as_tetrisperson_accounts', + 'table' => 'accounts', + 'module' => 'Accounts', + 'rname' => 'name', + ); + + $this->contact->field_defs["as_tetrispac95ccounts_ida"] = array ( + 'name' => 'as_tetrispac95ccounts_ida', + 'type' => 'link', + 'relationship' => 'as_tetrisperson_accounts', + 'source' => 'non-db', + 'reportable' => false, + 'side' => 'right', + 'vname' => 'LBL_AS_TETRISPERSON_ACCOUNTS_FROM_AS_TETRISPERSON_TITLE', + ); + } + + /** + * Test getting import fields from a bean when a relationship has been defined and the id field is only defined as a link + * and not a relate entry. The id field should be exposed so that users can select it from a list during the import process. + * + * @return void + */ + public function testGetImportableFields() + { + $c = new Contact(); + $importableFields = $c->get_importable_fields(); + $this->assertTrue(isset($importableFields['as_tetrispac95ccounts_ida'])); + } +} + diff --git a/tests/data/Bug49109Test.php b/tests/data/Bug49109Test.php new file mode 100755 index 00000000..7a95bb20 --- /dev/null +++ b/tests/data/Bug49109Test.php @@ -0,0 +1,61 @@ +load_relationship('users', $bean); + $relation = $bean->users->getRelationshipObject(); + $this->assertNotEmpty($relation->lhsLink, 'lhsLink is undefined'); + $this->assertNotEmpty($relation->rhsLink, 'rhsLink is undefined'); + } +} diff --git a/tests/include/EditView/Bug48570Test.php b/tests/include/EditView/Bug48570Test.php new file mode 100755 index 00000000..5eb75153 --- /dev/null +++ b/tests/include/EditView/Bug48570Test.php @@ -0,0 +1,88 @@ +iso4217 = 'EUR'; + $currency->name = 'Euro'; + $currency->symbol = 'E'; + $currency->conversion_rate = 1.5; + $currency->status = 'Active'; + $currency->save(); + + $focus = new Opportunity(); + $focus->id = __CLASS__; + $focus->currency_id = $currency->id; + $focus->team_id = '1'; + + $editView = new EditView(); + $editView->showVCRControl = false; + $editView->view = 'EditView'; + $editView->setup('Opportunities', $focus); + $editView->process(); + + $currency->mark_deleted($currency->id); + + $this->assertRegExp('/
- {APP.LBL_ENTER_DATE}  + {APP.LBL_ENTER_DATE}  {TIME_MERIDIEM} @@ -306,7 +306,7 @@ {TINY} diff --git a/modules/Emails/Email.php b/modules/Emails/Email.php index 6c432ece..67abab03 100644 --- a/modules/Emails/Email.php +++ b/modules/Emails/Email.php @@ -1432,13 +1432,19 @@ class Email extends SugarBean { * @param string str The text to safe * @return string Safed text */ - function safeText($str) { - // Safe_HTML - $this->safe->clear(); - $ret = $this->safe->parse($str); + function safeText($str) + { + if(empty($str)) return $str; + + if(!strchr($str, "<")) { + return $str; + } + // Safe_HTML + $this->safe->clear(); + $ret = $this->safe->parse($str); // Julian's XSS cleaner - $potentials = clean_xss($str, false); + $potentials = clean_xss($ret, false); if(is_array($potentials) && !empty($potentials)) { //_ppl($potentials); @@ -1637,7 +1643,7 @@ class Email extends SugarBean { //// get the email to see if we're dealing with a dupe //// what crappy coding preg_match("/[A-Z0-9._%-\']+@[A-Z0-9.-]+\.[A-Z]{2,}/i",$v, $match); - + if(!empty($match[0]) && !in_array(trim($match[0]), $knownEmails)) { $knownEmails[] = $match[0]; @@ -2396,12 +2402,8 @@ class Email extends SugarBean { $result =$this->db->query($query,true," Error filling in additional list fields: "); $row = $this->db->fetchByAssoc($result); + $this->attachment_image = ($row !=null) ? SugarThemeRegistry::current()->getImage('attachment',"","","") : ""; - if ($row !=null) { - $this->attachment_image = SugarThemeRegistry::current()->getImage('attachment',"","",""); - } else { - $this->attachment_image = SugarThemeRegistry::current()->getImage('blank',"","",""); - } /////////////////////////////////////////////////////////////////////// if(empty($this->contact_id) && !empty($this->parent_id) && !empty($this->parent_type) && $this->parent_type === 'Contacts' && !empty($this->parent_name) ){ $this->contact_id = $this->parent_id; diff --git a/modules/Emails/EmailUIAjax.php b/modules/Emails/EmailUIAjax.php index 891bde80..4d98d186 100644 --- a/modules/Emails/EmailUIAjax.php +++ b/modules/Emails/EmailUIAjax.php @@ -688,7 +688,10 @@ if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); $GLOBALS['log']->debug("********** EMAIL 2.0 - Asynchronous - at: getSingleMessage"); if(isset($_REQUEST['uid']) && !empty($_REQUEST['uid']) && isset($_REQUEST['ieId']) && !empty($_REQUEST['ieId'])) { $out = $email->et->getSingleMessage($ie); + //Bug: echo $json->encode($out); + //header("Content-Type: application/json; charset=UTF-8"); + //echo $json->encode(utf8_recursive_encode($out)); } else { echo "error: no UID"; } diff --git a/modules/Emails/javascript/EmailUICompose.js b/modules/Emails/javascript/EmailUICompose.js index a92108c8..add2d3c7 100644 --- a/modules/Emails/javascript/EmailUICompose.js +++ b/modules/Emails/javascript/EmailUICompose.js @@ -1382,13 +1382,18 @@ SE.composeLayout = { if(json_objects['email_template_object']['fields']['subject'] != '' ) { // cn: bug 7743, don't stomp populated Subject Line document.getElementById('emailSubject' + idx).value = decodeURI(encodeURI(json_objects['email_template_object']['fields']['subject'])); } - - var text = decodeURI(encodeURI(json_objects['email_template_object']['fields']['body_html'])).replace(/
/ig, '\n').replace(/
/gi, "\n").replace(/&/gi,'&').replace(/</gi,'<').replace(/>/gi,'>').replace(/'/gi,'\'').replace(/"/gi,'"'); - - // cn: bug 14361 - text-only templates don't fill compose screen - if(text == '') { - text = decodeURI(encodeURI(json_objects['email_template_object']['fields']['body'])).replace(/
/ig, '\n').replace(/
/gi, "\n").replace(/&/gi,'&').replace(/</gi,'<').replace(/>/gi,'>').replace(/'/gi,'\'').replace(/"/gi,'"').replace(/\r\n/gi,"
"); + var text = ''; + if(json_objects['email_template_object']['fields']['text_only'] == 1){ + text = "

" + decodeURI(encodeURI(json_objects['email_template_object']['fields']['body'])).replace(/
/ig, '

').replace(/
/gi, "

").replace(/&/gi,'&').replace(/</gi,'<').replace(/>/gi,'>').replace(/'/gi,'\'').replace(/"/gi,'"') + "

"; + document.getElementById("setEditor1").checked = true; + SUGAR.email2.composeLayout.renderTinyMCEToolBar('1', 1); + } + else{ + text = decodeURI(encodeURI(json_objects['email_template_object']['fields']['body_html'])).replace(/
/ig, '\n').replace(/
/gi, "\n").replace(/&/gi,'&').replace(/</gi,'<').replace(/>/gi,'>').replace(/'/gi,'\'').replace(/"/gi,'"'); + document.getElementById("setEditor1").checked = false; + SUGAR.email2.composeLayout.renderTinyMCEToolBar('1', 0); } + var tiny = SE.util.getTiny('htmleditor' + idx); var tinyHTML = tiny.getContent(); @@ -1419,7 +1424,7 @@ SE.composeLayout = { return; } - if(idx) { + if(idx != null) { var sel = document.getElementById('signatures' + idx); } else { var sel = document.getElementById('signature_id'); @@ -1493,14 +1498,43 @@ SE.composeLayout = { html = htmlPart1 + htmlPart2; } - // [pre|ap]pend + // pre|append start = html.indexOf('

'); if(SE.userPrefs.signatures.signature_prepend == 'true' && start > -1) { var htmlPart1 = html.substr(0, start); var htmlPart2 = html.substr(start, html.length); var newHtml = htmlPart1 + openTag + newSignature + closeTag + htmlPart2; } else if(SUGAR.email2.userPrefs.signatures.signature_prepend == 'true') { - var newHtml = '
' + openTag + newSignature + closeTag + html; + + //bug 48285 + var newHtml = html; + + //remove custom spacing + var spacing = '


 '; + var customSpacingStart = html.indexOf(spacing); + + if (customSpacingStart > -1) + { + var part1 = newHtml.substr(0, customSpacingStart); + var part2 = newHtml.substr(customSpacingStart+spacing.length, newHtml.length); + newHtml = part1 + part2; + } + + //append signature + var bodyStartTag = ''; + var body = newHtml.indexOf(bodyStartTag); + + if (body > -1) + { + var part1 = newHtml.substr(0, body+bodyStartTag.length); + var part2 = newHtml.substr(body+bodyStartTag.length, newHtml.length); + newHtml = part1 + spacing + openTag + newSignature + closeTag + part2; + } + else + { + newHtml = openTag + newSignature + closeTag + newHtml; + } + //end bug 48285 } else { var body = html.indexOf(''); if (body > -1) { @@ -1991,9 +2025,30 @@ SE.composeLayout = { } // if //Flag determines if we should clear the tiny contents or just append if (typeof(composePackage.clearBody) != 'undefined' && composePackage.clearBody) + { SE.composeLayout.tinyHTML = ''; + } else - SE.composeLayout.tinyHTML = tinyHTML + composePackage.body; + { + //bug 48179 + //check tinyHTML for closing tags + var body = tinyHTML.lastIndexOf(''); + spacing = '


 '; + + if (body > -1) + { + var part1 = tinyHTML.substr(0, body); + var part2 = tinyHTML.substr(body, tinyHTML.length); + var newHtml = part1 + spacing + composePackage.body + part2; + } + else + { + var newHtml = tinyHTML + spacing + composePackage.body; + } + //end bug 48179 + + SE.composeLayout.tinyHTML = newHtml; + } tiny.setContent(SE.composeLayout.tinyHTML); //Indicate that the contents has been loaded successfully. diff --git a/modules/Emails/javascript/ajax.js b/modules/Emails/javascript/ajax.js index 8802fc4e..1f7fd9cd 100644 --- a/modules/Emails/javascript/ajax.js +++ b/modules/Emails/javascript/ajax.js @@ -1491,8 +1491,14 @@ var callbackReplyForward = { var t = tinyMCE.getInstanceById('htmleditor' + idx); try { var html = t.getContent(); - - html = " 

" + a.description; + + if(typeof a.type != 'undefined' && a.type == 'draft'){ + html = a.description; + } + else{ + html = " 

" + a.description; + } + t.setContent(html);// diff --git a/modules/Home/SubpanelEdits.php b/modules/Home/SubpanelEdits.php index ea7ec495..e61de8a8 100644 --- a/modules/Home/SubpanelEdits.php +++ b/modules/Home/SubpanelEdits.php @@ -60,8 +60,8 @@ if(file_exists('modules/'. $_REQUEST['target_module'] . '/EditView.php')) { $view = (!empty($_REQUEST['target_view'])) ? $_REQUEST['target_view'] : 'QuickEdit'; //Check if there is a custom override, then check for module override, finally use default (SubpanelQuickCreate) if(file_exists('custom/' . $subpanelView)) { - require_once($subpanelView); - $subpanelClass = $target_module . 'SubpanelQuickEdit'; + require_once('custom/' . $subpanelView); + $subpanelClass = 'Custom' . $target_module . 'SubpanelQuickEdit'; $sqc = new $subpanelClass($target_module, $view); } else if(file_exists($subpanelView)) { require_once($subpanelView); diff --git a/modules/Import/Importer.php b/modules/Import/Importer.php index df205f1e..8ff0e024 100644 --- a/modules/Import/Importer.php +++ b/modules/Import/Importer.php @@ -515,6 +515,15 @@ class Importer // call any logic needed for the module preSave $focus->beforeImportSave(); + // if modified_user_id is set, set the flag to false so SugarBEan will not reset it + if (isset($focus->modified_user_id) && $focus->modified_user_id) { + $focus->update_modified_by = false; + } + // if created_by is set, set the flag to false so SugarBEan will not reset it + if (isset($focus->created_by) && $focus->created_by) { + $focus->set_created_by = false; + } + $focus->save(false); // call any logic needed for the module postSave diff --git a/modules/Import/tpls/step2.tpl b/modules/Import/tpls/step2.tpl index 04b5a27a..c866ac36 100644 --- a/modules/Import/tpls/step2.tpl +++ b/modules/Import/tpls/step2.tpl @@ -79,7 +79,7 @@
 
{$MOD.LBL_SELECT_FILE}  {sugar_help text=$MOD.LBL_FILE_UPLOAD_WIDGET_HELP}{$MOD.LBL_SELECT_FILE}  {sugar_help text=$MOD.LBL_FILE_UPLOAD_WIDGET_HELP}
 
- +
{$key}: