
| Current Path : /proc/thread-self/root/usr/share/jj/static/js/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : //proc/thread-self/root/usr/share/jj/static/js/app.js |
/* RainLoop Webmail (c) RainLoop Team | Licensed under MIT */
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ }
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // create a fake namespace object
/******/ // mode & 1: value is a module id, require it
/******/ // mode & 2: merge all properties of value into the ns
/******/ // mode & 4: return value when already ns object
/******/ // mode & 8|1: behave like require
/******/ __webpack_require__.t = function(value, mode) {
/******/ if(mode & 1) value = __webpack_require__(value);
/******/ if(mode & 8) return value;
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ var ns = Object.create(null);
/******/ __webpack_require__.r(ns);
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ return ns;
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "rainloop/v/0.0.0/static/js/";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 548);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/*!*****************************!*\
!*** ./dev/Common/Enums.js ***!
\*****************************/
/*! exports provided: FileType, StorageResultType, Focused, State, StateType, Capa, KeyState, FolderType, ServerFolderType, LoginSignMeTypeAsString, LoginSignMeType, ComposeType, UploadErrorCode, SetSystemFoldersNotification, ClientSideKeyName, EventKeyCode, MessageSetAction, MessageSelectAction, DesktopNotification, MessagePriority, EditorDefaultType, ServerSecure, SearchDateType, SaveSettingsStep, Layout, FilterConditionField, FilterConditionType, FiltersAction, FilterRulesType, SignedVerifyStatus, ContactPropertyType, Magics, Ports, Notification */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FileType", function() { return FileType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StorageResultType", function() { return StorageResultType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Focused", function() { return Focused; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "State", function() { return State; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StateType", function() { return StateType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Capa", function() { return Capa; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyState", function() { return KeyState; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FolderType", function() { return FolderType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerFolderType", function() { return ServerFolderType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoginSignMeTypeAsString", function() { return LoginSignMeTypeAsString; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoginSignMeType", function() { return LoginSignMeType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComposeType", function() { return ComposeType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UploadErrorCode", function() { return UploadErrorCode; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetSystemFoldersNotification", function() { return SetSystemFoldersNotification; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideKeyName", function() { return ClientSideKeyName; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EventKeyCode", function() { return EventKeyCode; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessageSetAction", function() { return MessageSetAction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessageSelectAction", function() { return MessageSelectAction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DesktopNotification", function() { return DesktopNotification; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessagePriority", function() { return MessagePriority; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EditorDefaultType", function() { return EditorDefaultType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerSecure", function() { return ServerSecure; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchDateType", function() { return SearchDateType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SaveSettingsStep", function() { return SaveSettingsStep; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Layout", function() { return Layout; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterConditionField", function() { return FilterConditionField; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterConditionType", function() { return FilterConditionType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FiltersAction", function() { return FiltersAction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterRulesType", function() { return FilterRulesType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SignedVerifyStatus", function() { return SignedVerifyStatus; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ContactPropertyType", function() { return ContactPropertyType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Magics", function() { return Magics; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Ports", function() { return Ports; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return Notification; });
/* eslint quote-props: 0 */
/**
* @enum {string}
*/
var FileType = {
'Unknown': 'unknown',
'Text': 'text',
'Html': 'html',
'Code': 'code',
'Eml': 'eml',
'WordText': 'word-text',
'Pdf': 'pdf',
'Image': 'image',
'Audio': 'audio',
'Video': 'video',
'Sheet': 'sheet',
'Presentation': 'presentation',
'Certificate': 'certificate',
'CertificateBin': 'certificate-bin',
'Archive': 'archive'
};
/**
* @enum {string}
*/
var StorageResultType = {
'Success': 'success',
'Abort': 'abort',
'Error': 'error',
'Unload': 'unload'
};
/**
* @enum {string}
*/
var Focused = {
'None': 'none',
'MessageList': 'message-list',
'MessageView': 'message-view',
'FolderList': 'folder-list'
};
/**
* @enum {number}
*/
var State = {
'Empty': 10,
'Login': 20,
'Auth': 30
};
/**
* @enum {number}
*/
var StateType = {
'Webmail': 0,
'Admin': 1
};
/**
* @enum {string}
*/
var Capa = {
'TwoFactor': 'TWO_FACTOR',
'TwoFactorForce': 'TWO_FACTOR_FORCE',
'OpenPGP': 'OPEN_PGP',
'Prefetch': 'PREFETCH',
'Gravatar': 'GRAVATAR',
'Folders': 'FOLDERS',
'Composer': 'COMPOSER',
'Contacts': 'CONTACTS',
'Reload': 'RELOAD',
'Search': 'SEARCH',
'SearchAdv': 'SEARCH_ADV',
'MessageActions': 'MESSAGE_ACTIONS',
'MessageListActions': 'MESSAGELIST_ACTIONS',
'AttachmentsActions': 'ATTACHMENTS_ACTIONS',
'DangerousActions': 'DANGEROUS_ACTIONS',
'Settings': 'SETTINGS',
'Help': 'HELP',
'Themes': 'THEMES',
'UserBackground': 'USER_BACKGROUND',
'Sieve': 'SIEVE',
'Filters': 'FILTERS',
'AttachmentThumbnails': 'ATTACHMENT_THUMBNAILS',
'Templates': 'TEMPLATES',
'AutoLogout': 'AUTOLOGOUT',
'AdditionalAccounts': 'ADDITIONAL_ACCOUNTS',
'Identities': 'IDENTITIES'
};
/**
* @enum {string}
*/
var KeyState = {
'All': 'all',
'None': 'none',
'ContactList': 'contact-list',
'MessageList': 'message-list',
'FolderList': 'folder-list',
'MessageView': 'message-view',
'Compose': 'compose',
'Settings': 'settings',
'Menu': 'menu',
'PopupComposeOpenPGP': 'compose-open-pgp',
'PopupMessageOpenPGP': 'message-open-pgp',
'PopupViewOpenPGP': 'view-open-pgp',
'PopupKeyboardShortcutsHelp': 'popup-keyboard-shortcuts-help',
'PopupAsk': 'popup-ask'
};
/**
* @enum {number}
*/
var FolderType = {
'Inbox': 10,
'SentItems': 11,
'Draft': 12,
'Trash': 13,
'Spam': 14,
'Archive': 15,
'NotSpam': 80,
'User': 99
};
/**
* @enum {number}
*/
var ServerFolderType = {
'USER': 0,
'INBOX': 1,
'SENT': 2,
'DRAFTS': 3,
'JUNK': 4,
'TRASH': 5,
'IMPORTANT': 10,
'FLAGGED': 11,
'ALL': 12
};
/**
* @enum {string}
*/
var LoginSignMeTypeAsString = {
'DefaultOff': 'defaultoff',
'DefaultOn': 'defaulton',
'Unused': 'unused'
};
/**
* @enum {number}
*/
var LoginSignMeType = {
'DefaultOff': 0,
'DefaultOn': 1,
'Unused': 2
};
/**
* @enum {string}
*/
var ComposeType = {
'Empty': 'empty',
'Reply': 'reply',
'ReplyAll': 'replyall',
'Forward': 'forward',
'ForwardAsAttachment': 'forward-as-attachment',
'Draft': 'draft',
'EditAsNew': 'editasnew'
};
/**
* @enum {number}
*/
var UploadErrorCode = {
'Normal': 0,
'FileIsTooBig': 1,
'FilePartiallyUploaded': 2,
'FileNoUploaded': 3,
'MissingTempFolder': 4,
'FileOnSaveingError': 5,
'FileType': 98,
'Unknown': 99
};
/**
* @enum {number}
*/
var SetSystemFoldersNotification = {
'None': 0,
'Sent': 1,
'Draft': 2,
'Spam': 3,
'Trash': 4,
'Archive': 5
};
/**
* @enum {number}
*/
var ClientSideKeyName = {
'FoldersLashHash': 0,
'MessagesInboxLastHash': 1,
'MailBoxListSize': 2,
'ExpandedFolders': 3,
'FolderListSize': 4,
'MessageListSize': 5,
'LastReplyAction': 6,
'LastSignMe': 7,
'ComposeLastIdentityID': 8,
'MessageHeaderFullInfo': 9,
'MessageAttachmnetControls': 10
};
/**
* @enum {number}
*/
var EventKeyCode = {
'Backspace': 8,
'Tab': 9,
'Enter': 13,
'Esc': 27,
'PageUp': 33,
'PageDown': 34,
'Left': 37,
'Right': 39,
'Up': 38,
'Down': 40,
'End': 35,
'Home': 36,
'Space': 32,
'Insert': 45,
'Delete': 46,
'A': 65,
'S': 83
};
/**
* @enum {number}
*/
var MessageSetAction = {
'SetSeen': 0,
'UnsetSeen': 1,
'SetFlag': 2,
'UnsetFlag': 3
};
/**
* @enum {number}
*/
var MessageSelectAction = {
'All': 0,
'None': 1,
'Invert': 2,
'Unseen': 3,
'Seen': 4,
'Flagged': 5,
'Unflagged': 6
};
/**
* @enum {number}
*/
var DesktopNotification = {
'Allowed': 0,
'NotAllowed': 1,
'Denied': 2,
'NotSupported': 9
};
/**
* @enum {number}
*/
var MessagePriority = {
'Low': 5,
'Normal': 3,
'High': 1
};
/**
* @enum {string}
*/
var EditorDefaultType = {
'Html': 'Html',
'Plain': 'Plain',
'HtmlForced': 'HtmlForced',
'PlainForced': 'PlainForced'
};
/**
* @enum {number}
*/
var ServerSecure = {
'None': 0,
'SSL': 1,
'TLS': 2
};
/**
* @enum {number}
*/
var SearchDateType = {
'All': -1,
'Days3': 3,
'Days7': 7,
'Month': 30
};
/**
* @enum {number}
*/
var SaveSettingsStep = {
'Animate': -2,
'Idle': -1,
'TrueResult': 1,
'FalseResult': 0
};
/**
* @enum {number}
*/
var Layout = {
'NoPreview': 0,
'SidePreview': 1,
'BottomPreview': 2
};
/**
* @enum {string}
*/
var FilterConditionField = {
'From': 'From',
'Recipient': 'Recipient',
'Subject': 'Subject',
'Header': 'Header',
'Size': 'Size'
};
/**
* @enum {string}
*/
var FilterConditionType = {
'Contains': 'Contains',
'NotContains': 'NotContains',
'EqualTo': 'EqualTo',
'NotEqualTo': 'NotEqualTo',
'Regex': 'Regex',
'Over': 'Over',
'Under': 'Under'
};
/**
* @enum {string}
*/
var FiltersAction = {
'None': 'None',
'MoveTo': 'MoveTo',
'Discard': 'Discard',
'Vacation': 'Vacation',
'Reject': 'Reject',
'Forward': 'Forward'
};
/**
* @enum {string}
*/
var FilterRulesType = {
'All': 'All',
'Any': 'Any'
};
/**
* @enum {number}
*/
var SignedVerifyStatus = {
'UnknownPublicKeys': -4,
'UnknownPrivateKey': -3,
'Unverified': -2,
'Error': -1,
'None': 0,
'Success': 1
};
/**
* @enum {number}
*/
var ContactPropertyType = {
'Unknown': 0,
'FullName': 10,
'FirstName': 15,
'LastName': 16,
'MiddleName': 16,
'Nick': 18,
'NamePrefix': 20,
'NameSuffix': 21,
'Email': 30,
'Phone': 31,
'Web': 32,
'Birthday': 40,
'Facebook': 90,
'Skype': 91,
'GitHub': 92,
'Note': 110,
'Custom': 250
};
/**
* @enum {number}
*/
var Magics = {
'EventWhichMouseMiddle': 3,
'ifvisibleIdle10s': 10,
'BitLength2048': 2048,
'BitLength1024': 1024,
'Size350px': 350,
'Size50px': 50,
'Size20px': 20,
'Size1px': 1,
'Time30mInMin': 30,
'Time60m': 60000 * 60,
'Time30m': 60000 * 30,
'Time20m': 60000 * 20,
'Time15m': 60000 * 15,
'Time10m': 60000 * 10,
'Time5m': 60000 * 5,
'Time3m': 60000 * 3,
'Time2m': 60000 * 2,
'Time1m': 60000,
'Time30s': 30000,
'Time10s': 10000,
'Time7s': 7000,
'Time5s': 5000,
'Time3s': 3000,
'Time1s': 1000,
'Time500ms': 500,
'Time350ms': 350,
'Time250ms': 250,
'Time200ms': 200,
'Time100ms': 100,
'Time50ms': 50,
'Time20ms': 20,
'Time10ms': 10,
'Time1ms': 1
};
/**
* @enum {number}
*/
var Ports = {
'Imap': 143,
'ImapSsl': 993,
'Smtp': 25,
'SmtpSsl': 465,
'SmtpStartTls': 587
};
/**
* @enum {number}
*/
var Notification = {
'InvalidToken': 101,
'AuthError': 102,
'AccessError': 103,
'ConnectionError': 104,
'CaptchaError': 105,
'SocialFacebookLoginAccessDisable': 106,
'SocialTwitterLoginAccessDisable': 107,
'SocialGoogleLoginAccessDisable': 108,
'DomainNotAllowed': 109,
'AccountNotAllowed': 110,
'AccountTwoFactorAuthRequired': 120,
'AccountTwoFactorAuthError': 121,
'CouldNotSaveNewPassword': 130,
'CurrentPasswordIncorrect': 131,
'NewPasswordShort': 132,
'NewPasswordWeak': 133,
'NewPasswordForbidden': 134,
'ContactsSyncError': 140,
'CantGetMessageList': 201,
'CantGetMessage': 202,
'CantDeleteMessage': 203,
'CantMoveMessage': 204,
'CantCopyMessage': 205,
'CantSaveMessage': 301,
'CantSendMessage': 302,
'InvalidRecipients': 303,
'CantSaveFilters': 351,
'CantGetFilters': 352,
'FiltersAreNotCorrect': 355,
'CantCreateFolder': 400,
'CantRenameFolder': 401,
'CantDeleteFolder': 402,
'CantSubscribeFolder': 403,
'CantUnsubscribeFolder': 404,
'CantDeleteNonEmptyFolder': 405,
'CantSaveSettings': 501,
'CantSavePluginSettings': 502,
'DomainAlreadyExists': 601,
'CantInstallPackage': 701,
'CantDeletePackage': 702,
'InvalidPluginPackage': 703,
'UnsupportedPluginPackage': 704,
'LicensingServerIsUnavailable': 710,
'LicensingExpired': 711,
'LicensingBanned': 712,
'DemoSendMessageError': 750,
'DemoAccountError': 751,
'AccountAlreadyExists': 801,
'AccountDoesNotExist': 802,
'MailServerError': 901,
'ClientViewError': 902,
'InvalidInputArgument': 903,
'AjaxFalse': 950,
'AjaxAbort': 951,
'AjaxParse': 952,
'AjaxTimeout': 953,
'UnknownNotification': 999,
'UnknownError': 999
};
/***/ }),
/* 1 */
/*!****************************!*\
!*** ./dev/External/ko.js ***!
\****************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.link.js */ 204);
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 119);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-interval */ 57);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/trim */ 153);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var Opentip__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Opentip */ 228);
/* harmony import */ var pikaday__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! pikaday */ 229);
/* harmony import */ var pikaday__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(pikaday__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Common/Enums */ 0);
var ko = window__WEBPACK_IMPORTED_MODULE_8___default.a.ko,
$win = $__WEBPACK_IMPORTED_MODULE_10___default()(window__WEBPACK_IMPORTED_MODULE_8___default.a),
fDisposalTooltipHelper = function fDisposalTooltipHelper(element) {
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
if (element && element.__opentip) {
element.__opentip.deactivate();
}
});
};
ko.bindingHandlers.updateWidth = {
init: function init(element, fValueAccessor) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
fValue = fValueAccessor(),
fInit = function fInit() {
fValue($el.width());
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3___default()(function () {
fValue($el.width());
}, Common_Enums__WEBPACK_IMPORTED_MODULE_13__["Magics"].Time500ms);
};
$win.on('resize', fInit);
fInit();
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$win.off('resize', fInit);
});
}
};
ko.bindingHandlers.editor = {
init: function init(element, fValueAccessor) {
var editor = null;
var fValue = fValueAccessor(),
HtmlEditor = __webpack_require__(/*! Common/HtmlEditor */ 226).default,
fUpdateEditorValue = function fUpdateEditorValue() {
if (fValue && fValue.__editor) {
fValue.__editor.setHtmlOrPlain(fValue());
}
},
fUpdateKoValue = function fUpdateKoValue() {
if (fValue && fValue.__editor) {
fValue(fValue.__editor.getDataWithHtmlMark());
}
},
fOnReady = function fOnReady() {
fValue.__editor = editor;
fUpdateEditorValue();
};
if (ko.isObservable(fValue) && HtmlEditor) {
editor = new HtmlEditor(element, fUpdateKoValue, fOnReady, fUpdateKoValue);
fValue.__fetchEditorValue = fUpdateKoValue;
fValue.subscribe(fUpdateEditorValue); // ko.utils.domNodeDisposal.addDisposeCallback(element, () => {
// });
}
}
};
ko.bindingHandlers.json = {
init: function init(element, fValueAccessor) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).text(window__WEBPACK_IMPORTED_MODULE_8___default.a.JSON.stringify(ko.unwrap(fValueAccessor())));
},
update: function update(element, fValueAccessor) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).text(window__WEBPACK_IMPORTED_MODULE_8___default.a.JSON.stringify(ko.unwrap(fValueAccessor())));
}
};
ko.bindingHandlers.scrollerShadows = {
init: function init(element) {
var limit = 8,
$el = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
cont = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()($el).call($el, '[data-scroller-shadows-content]')[0] || null,
fFunc = ___WEBPACK_IMPORTED_MODULE_9___default.a.throttle(function () {
$el.toggleClass('scroller-shadow-top', limit < cont.scrollTop).toggleClass('scroller-shadow-bottom', cont.scrollTop + limit < cont.scrollHeight - cont.clientHeight);
}, 100);
if (cont) {
$__WEBPACK_IMPORTED_MODULE_10___default()(cont).on('scroll resize', fFunc);
$win.on('resize', fFunc);
ko.utils.domNodeDisposal.addDisposeCallback(cont, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(cont).off();
$win.off('resize', fFunc);
});
}
}
};
ko.bindingHandlers.pikaday = {
init: function init(element, fValueAccessor, fAllBindingsAccessor, viewModel, bindingContext) {
ko.bindingHandlers.textInput.init(element, fValueAccessor, fAllBindingsAccessor, viewModel, bindingContext);
if (pikaday__WEBPACK_IMPORTED_MODULE_12___default.a) {
element.__pikaday = new pikaday__WEBPACK_IMPORTED_MODULE_12___default.a({
field: element
});
}
}
};
ko.bindingHandlers.visibleAnimated = {
init: function init(element, fValueAccessor) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element);
$el.addClass('rl-animated-inited');
if (ko.unwrap(fValueAccessor())) {
$el.show();
} else {
$el.hide();
}
},
update: function update(element, fValueAccessor) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element);
if (ko.unwrap(fValueAccessor())) {
$el.addClass('rl-animated-hidden').show();
___WEBPACK_IMPORTED_MODULE_9___default.a.delay(function () {
$el.removeClass('rl-animated-hidden');
}, 10);
} else {
$el.hide().removeClass('rl-animated-hidden');
}
}
};
ko.bindingHandlers.tooltip = {
init: function init(element, fValueAccessor) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
fValue = fValueAccessor(),
isMobile = 'on' === ($el.data('tooltip-mobile') || 'off'),
isI18N = 'on' === ($el.data('tooltip-i18n') || 'on'),
Globals = __webpack_require__(/*! Common/Globals */ 6);
if (!Globals.bMobileDevice || isMobile) {
var sValue = !ko.isObservable(fValue) && ___WEBPACK_IMPORTED_MODULE_9___default.a.isFunction(fValue) ? fValue() : ko.unwrap(fValue);
element.__opentip = new Opentip__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"](element, {
'style': 'rainloopTip',
'element': element,
'tipJoint': $el.data('tooltip-join') || 'bottom'
});
Globals.dropdownVisibility.subscribe(function (v) {
if (v) {
element.__opentip.hide();
}
});
if ('' === sValue) {
element.__opentip.hide();
element.__opentip.deactivate();
element.__opentip.setContent('');
} else {
element.__opentip.activate();
}
if (isI18N) {
var Translator = __webpack_require__(/*! Common/Translator */ 9);
element.__opentip.setContent(Translator.i18n(sValue));
Translator.trigger.subscribe(function () {
element.__opentip.setContent(Translator.i18n(sValue));
});
Globals.dropdownVisibility.subscribe(function () {
if (element && element.__opentip) {
element.__opentip.setContent(Translator.i18n(sValue));
}
});
} else {
element.__opentip.setContent(sValue);
}
$win.on('rl.tooltips.diactivate', function () {
element.__opentip.hide();
element.__opentip.deactivate();
});
$win.on('rl.tooltips.activate', function () {
element.__opentip.activate();
});
}
},
update: function update(element, fValueAccessor) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
fValue = fValueAccessor(),
isMobile = 'on' === ($el.data('tooltip-mobile') || 'off'),
isI18N = 'on' === ($el.data('tooltip-i18n') || 'on'),
Globals = __webpack_require__(/*! Common/Globals */ 6);
if ((!Globals.bMobileDevice || isMobile) && element.__opentip) {
var sValue = !ko.isObservable(fValue) && ___WEBPACK_IMPORTED_MODULE_9___default.a.isFunction(fValue) ? fValue() : ko.unwrap(fValue);
if (sValue) {
element.__opentip.setContent(isI18N ? __webpack_require__(/*! Common/Translator */ 9).i18n(sValue) : sValue);
element.__opentip.activate();
} else {
element.__opentip.hide();
element.__opentip.deactivate();
element.__opentip.setContent('');
}
}
}
};
ko.bindingHandlers.tooltipErrorTip = {
init: function init(element) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element);
element.__opentip = new Opentip__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"](element, {
style: 'rainloopErrorTip',
hideOn: 'mouseout click',
element: element,
tipJoint: $el.data('tooltip-join') || 'top'
});
element.__opentip.deactivate();
$__WEBPACK_IMPORTED_MODULE_10___default()(window__WEBPACK_IMPORTED_MODULE_8___default.a.document).on('click', function () {
if (element && element.__opentip) {
element.__opentip.hide();
}
});
fDisposalTooltipHelper(element);
},
update: function update(element, fValueAccessor) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
fValue = fValueAccessor(),
value = !ko.isObservable(fValue) && ___WEBPACK_IMPORTED_MODULE_9___default.a.isFunction(fValue) ? fValue() : ko.unwrap(fValue),
openTips = element.__opentip;
if (openTips) {
if ('' === value) {
openTips.hide();
openTips.deactivate();
openTips.setContent('');
} else {
___WEBPACK_IMPORTED_MODULE_9___default.a.delay(function () {
if ($el.is(':visible')) {
openTips.setContent(value);
openTips.activate();
openTips.show();
} else {
openTips.hide();
openTips.deactivate();
openTips.setContent('');
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_13__["Magics"].Time100ms);
}
}
}
};
ko.bindingHandlers.registrateBootstrapDropdown = {
init: function init(element) {
var Globals = __webpack_require__(/*! Common/Globals */ 6);
if (Globals && Globals.data.aBootstrapDropdowns) {
Globals.data.aBootstrapDropdowns.push($__WEBPACK_IMPORTED_MODULE_10___default()(element));
$__WEBPACK_IMPORTED_MODULE_10___default()(element).click(function () {
__webpack_require__(/*! Common/Utils */ 2).detectDropdownVisibility();
}); // ko.utils.domNodeDisposal.addDisposeCallback(element, () => {
// });
}
}
};
ko.bindingHandlers.openDropdownTrigger = {
update: function update(element, fValueAccessor) {
if (ko.unwrap(fValueAccessor())) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element);
if (!$el.hasClass('open')) {
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()($el).call($el, '.dropdown-toggle').dropdown('toggle');
}
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()($el).call($el, '.dropdown-toggle').focus();
__webpack_require__(/*! Common/Utils */ 2).detectDropdownVisibility();
fValueAccessor()(false);
}
}
};
ko.bindingHandlers.dropdownCloser = {
init: function init(element) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).closest('.dropdown').on('click', '.e-item', function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).dropdown('toggle');
});
}
};
ko.bindingHandlers.popover = {
init: function init(element, fValueAccessor) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).popover(ko.unwrap(fValueAccessor()));
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).popover('destroy');
});
}
};
ko.bindingHandlers.csstext = {};
ko.bindingHandlers.csstext.init = ko.bindingHandlers.csstext.update = function (element, fValueAccessor) {
if (element && element.styleSheet && 'undefined' !== typeof element.styleSheet.cssText) {
element.styleSheet.cssText = ko.unwrap(fValueAccessor());
} else {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).text(ko.unwrap(fValueAccessor()));
}
};
ko.bindingHandlers.resizecrop = {
init: function init(element) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).addClass('resizecrop').resizecrop({
'width': '100',
'height': '100',
'wrapperCSS': {
'border-radius': '10px'
}
});
},
update: function update(element, fValueAccessor) {
fValueAccessor()();
$__WEBPACK_IMPORTED_MODULE_10___default()(element).resizecrop({
'width': '100',
'height': '100'
});
}
};
ko.bindingHandlers.onKeyDown = {
init: function init(element, fValueAccessor, fAllBindingsAccessor, viewModel) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).on('keydown.koOnKeyDown', function (event) {
if (event) {
return fValueAccessor().call(viewModel, event);
}
return true;
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).off('keydown.koOnKeyDown');
});
}
};
ko.bindingHandlers.onEnter = {
init: function init(element, fValueAccessor, fAllBindingsAccessor, viewModel) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).on('keypress.koOnEnter', function (event) {
if (event && 13 === window__WEBPACK_IMPORTED_MODULE_8___default.a.parseInt(event.keyCode, 10)) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).trigger('change');
fValueAccessor().call(viewModel);
}
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).off('keypress.koOnEnter');
});
}
};
ko.bindingHandlers.onSpace = {
init: function init(element, fValueAccessor, fAllBindingsAccessor, viewModel) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).on('keyup.koOnSpace', function (event) {
if (event && 32 === window__WEBPACK_IMPORTED_MODULE_8___default.a.parseInt(event.keyCode, 10)) {
fValueAccessor().call(viewModel, event);
}
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).off('keyup.koOnSpace');
});
}
};
ko.bindingHandlers.onTab = {
init: function init(element, fValueAccessor, fAllBindingsAccessor, viewModel) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).on('keydown.koOnTab', function (event) {
if (event && 9 === window__WEBPACK_IMPORTED_MODULE_8___default.a.parseInt(event.keyCode, 10)) {
return fValueAccessor().call(viewModel, !!event.shiftKey);
}
return true;
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).off('keydown.koOnTab');
});
}
};
ko.bindingHandlers.onEsc = {
init: function init(element, fValueAccessor, fAllBindingsAccessor, viewModel) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).on('keyup.koOnEsc', function (event) {
if (event && 27 === window__WEBPACK_IMPORTED_MODULE_8___default.a.parseInt(event.keyCode, 10)) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).trigger('change');
fValueAccessor().call(viewModel);
}
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).off('keyup.koOnEsc');
});
}
};
ko.bindingHandlers.clickOnTrue = {
update: function update(element, fValueAccessor) {
if (ko.unwrap(fValueAccessor())) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).click();
}
}
};
ko.bindingHandlers.modal = {
init: function init(element, fValueAccessor) {
var _context;
var Globals = __webpack_require__(/*! Common/Globals */ 6),
Utils = __webpack_require__(/*! Common/Utils */ 2);
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(_context = $__WEBPACK_IMPORTED_MODULE_10___default()(element).toggleClass('fade', !Globals.bMobileDevice).modal({
'keyboard': false,
'show': ko.unwrap(fValueAccessor())
}).on('shown.koModal', Utils.windowResizeCallback)).call(_context, '.close').on('click.koModal', function () {
fValueAccessor()(false);
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
var _context2;
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(_context2 = $__WEBPACK_IMPORTED_MODULE_10___default()(element).off('shown.koModal')).call(_context2, '.close').off('click.koModal');
});
},
update: function update(element, fValueAccessor) {
var Globals = __webpack_require__(/*! Common/Globals */ 6);
$__WEBPACK_IMPORTED_MODULE_10___default()(element).modal(ko.unwrap(fValueAccessor()) ? 'show' : 'hide');
if (Globals.$html.hasClass('rl-anim')) {
Globals.$html.addClass('rl-modal-animation');
___WEBPACK_IMPORTED_MODULE_9___default.a.delay(function () {
Globals.$html.removeClass('rl-modal-animation');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_13__["Magics"].Time500ms);
}
}
};
ko.bindingHandlers.moment = {
init: function init(element, fValueAccessor) {
__webpack_require__(/*! Common/Momentor */ 61).momentToNode($__WEBPACK_IMPORTED_MODULE_10___default()(element).addClass('moment').data('moment-time', ko.unwrap(fValueAccessor())));
},
update: function update(element, fValueAccessor) {
__webpack_require__(/*! Common/Momentor */ 61).momentToNode($__WEBPACK_IMPORTED_MODULE_10___default()(element).data('moment-time', ko.unwrap(fValueAccessor())));
}
};
ko.bindingHandlers.i18nInit = {
init: function init(element) {
__webpack_require__(/*! Common/Translator */ 9).i18nToNodes(element);
}
};
ko.bindingHandlers.translatorInit = {
init: function init(element) {
__webpack_require__(/*! Common/Translator */ 9).i18nToNodes(element);
}
};
ko.bindingHandlers.i18nUpdate = {
update: function update(element, fValueAccessor) {
ko.unwrap(fValueAccessor());
__webpack_require__(/*! Common/Translator */ 9).i18nToNodes(element);
}
};
ko.bindingHandlers.link = {
update: function update(element, fValueAccessor) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).attr('href', ko.unwrap(fValueAccessor()));
}
};
ko.bindingHandlers.title = {
update: function update(element, fValueAccessor) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).attr('title', ko.unwrap(fValueAccessor()));
}
};
ko.bindingHandlers.textF = {
init: function init(element, fValueAccessor) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).text(ko.unwrap(fValueAccessor()));
}
};
ko.bindingHandlers.initDom = {
init: function init(element, fValueAccessor) {
fValueAccessor()(element);
}
};
ko.bindingHandlers.initFixedTrigger = {
init: function init(element, fValueAccessor) {
var values = ko.unwrap(fValueAccessor()),
$el = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
top = values[1] || 0;
var $container = $__WEBPACK_IMPORTED_MODULE_10___default()(values[0] || null);
$container = $container[0] ? $container : null;
if ($container) {
$win.resize(function () {
var offset = $container ? $container.offset() : null;
if (offset && offset.top) {
$el.css('top', offset.top + top);
}
});
}
}
};
ko.bindingHandlers.initResizeTrigger = {
init: function init(element, fValueAccessor) {
var values = ko.unwrap(fValueAccessor());
$__WEBPACK_IMPORTED_MODULE_10___default()(element).css({
'height': values[1],
'min-height': values[1]
});
},
update: function update(oElement, fValueAccessor) {
var Utils = __webpack_require__(/*! Common/Utils */ 2),
Globals = __webpack_require__(/*! Common/Globals */ 6),
values = ko.unwrap(fValueAccessor());
var value = Utils.pInt(values[1]),
size = 0,
offset = $__WEBPACK_IMPORTED_MODULE_10___default()(oElement).offset().top;
if (0 < offset) {
offset += Utils.pInt(values[2]);
size = Globals.$win.height() - offset;
if (value < size) {
value = size;
}
$__WEBPACK_IMPORTED_MODULE_10___default()(oElement).css({
'height': value,
'min-height': value
});
}
}
};
ko.bindingHandlers.appendDom = {
update: function update(element, fValueAccessor) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).hide().empty().append(ko.unwrap(fValueAccessor())).show();
}
};
ko.bindingHandlers.draggable = {
init: function init(element, fValueAccessor, fAllBindingsAccessor) {
var Globals = __webpack_require__(/*! Common/Globals */ 6),
Utils = __webpack_require__(/*! Common/Utils */ 2);
if (!Globals.bMobileDevice) {
var triggerZone = 100,
scrollSpeed = 3,
fAllValueFunc = fAllBindingsAccessor(),
droppableSelector = fAllValueFunc && fAllValueFunc.droppableSelector ? fAllValueFunc.droppableSelector : '',
conf = {
distance: 20,
handle: '.dragHandle',
cursorAt: {
top: 22,
left: 3
},
refreshPositions: true,
scroll: true,
drag: null,
stop: null,
helper: null
};
if (droppableSelector) {
conf.drag = function (event) {
$__WEBPACK_IMPORTED_MODULE_10___default()(droppableSelector).each(function () {
var $this = $__WEBPACK_IMPORTED_MODULE_10___default()(this),
// eslint-disable-line no-invalid-this
offset = $this.offset(),
bottomPos = offset.top + $this.height();
window__WEBPACK_IMPORTED_MODULE_8___default.a.clearInterval($this.data('timerScroll'));
$this.data('timerScroll', false);
if (event.pageX >= offset.left && event.pageX <= offset.left + $this.width()) {
if (event.pageY >= bottomPos - triggerZone && event.pageY <= bottomPos) {
var moveUp = function moveUp() {
$this.scrollTop($this.scrollTop() + scrollSpeed);
Utils.windowResize();
};
$this.data('timerScroll', _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(moveUp, 10));
moveUp();
}
if (event.pageY >= offset.top && event.pageY <= offset.top + triggerZone) {
var moveDown = function moveDown() {
$this.scrollTop($this.scrollTop() - scrollSpeed);
Utils.windowResize();
};
$this.data('timerScroll', _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(moveDown, 10));
moveDown();
}
}
});
};
conf.stop = function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(droppableSelector).each(function () {
var $this = $__WEBPACK_IMPORTED_MODULE_10___default()(this); // eslint-disable-line no-invalid-this
window__WEBPACK_IMPORTED_MODULE_8___default.a.clearInterval($this.data('timerScroll'));
$this.data('timerScroll', false);
});
};
}
conf.helper = function (event) {
return fValueAccessor()(event && event.target ? ko.dataFor(event.target) : null);
};
$__WEBPACK_IMPORTED_MODULE_10___default()(element).draggable(conf).on('mousedown.koDraggable', function () {
Utils.removeInFocus();
});
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).off('mousedown.koDraggable').draggable('destroy');
});
}
}
};
ko.bindingHandlers.droppable = {
init: function init(element, fValueAccessor, fAllBindingsAccessor) {
var Globals = __webpack_require__(/*! Common/Globals */ 6);
if (!Globals.bMobileDevice) {
var fValueFunc = fValueAccessor(),
fAllValueFunc = fAllBindingsAccessor(),
fOverCallback = fAllValueFunc && fAllValueFunc.droppableOver ? fAllValueFunc.droppableOver : null,
fOutCallback = fAllValueFunc && fAllValueFunc.droppableOut ? fAllValueFunc.droppableOut : null,
conf = {
tolerance: 'pointer',
hoverClass: 'droppableHover',
drop: null,
over: null,
out: null
};
if (fValueFunc) {
conf.drop = function (event, ui) {
fValueFunc(event, ui);
};
if (fOverCallback) {
conf.over = function (event, ui) {
fOverCallback(event, ui);
};
}
if (fOutCallback) {
conf.out = function (event, ui) {
fOutCallback(event, ui);
};
}
$__WEBPACK_IMPORTED_MODULE_10___default()(element).droppable(conf);
ko.utils.domNodeDisposal.addDisposeCallback(element, function () {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).droppable('destroy');
});
}
}
}
};
ko.bindingHandlers.nano = {
init: function init(element) {
var Globals = __webpack_require__(/*! Common/Globals */ 6),
Settings = __webpack_require__(/*! Storage/Settings */ 5);
if (!Globals.bDisableNanoScroll && !Settings.appSettingsGet('useNativeScrollbars')) {
$__WEBPACK_IMPORTED_MODULE_10___default()(element).addClass('nano').nanoScroller({
iOSNativeScrolling: false,
preventPageScrolling: true
});
}
}
};
ko.bindingHandlers.saveTrigger = {
init: function init(element) {
var $el = $__WEBPACK_IMPORTED_MODULE_10___default()(element);
$el.data('save-trigger-type', $el.is('input[type=text],input[type=email],input[type=password],select,textarea') ? 'input' : 'custom');
if ('custom' === $el.data('save-trigger-type')) {
$el.append(' ' + '<i class="icon-spinner animated"></i>' + '<i class="icon-remove error"></i>' + '<i class="icon-ok success"></i>').addClass('settings-saved-trigger');
} else {
$el.addClass('settings-saved-trigger-input');
}
},
update: function update(element, fValueAccessor) {
var _context3, _context4, _context5, _context6;
var value = ko.unwrap(fValueAccessor()),
$el = $__WEBPACK_IMPORTED_MODULE_10___default()(element);
if ('custom' === $el.data('save-trigger-type')) {
switch (value.toString()) {
case '1':
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(_context3 = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()($el).call($el, '.animated,.error').hide().removeClass('visible').end()).call(_context3, '.success').show().addClass('visible');
break;
case '0':
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(_context4 = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()($el).call($el, '.animated,.success').hide().removeClass('visible').end()).call(_context4, '.error').show().addClass('visible');
break;
case '-2':
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(_context5 = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()($el).call($el, '.error,.success').hide().removeClass('visible').end()).call(_context5, '.animated').show().addClass('visible');
break;
default:
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(_context6 = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()($el).call($el, '.animated').hide().end()).call(_context6, '.error,.success').removeClass('visible');
break;
}
} else {
switch (value.toString()) {
case '1':
$el.addClass('success').removeClass('error');
break;
case '0':
$el.addClass('error').removeClass('success');
break;
case '-2':
break;
default:
$el.removeClass('error success');
break;
}
}
}
};
ko.bindingHandlers.emailsTags = {
init: function init(element, fValueAccessor, fAllBindingsAccessor) {
var Utils = __webpack_require__(/*! Common/Utils */ 2),
EmailModel = __webpack_require__(/*! Model/Email */ 82).default,
$el = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
fValue = fValueAccessor(),
fAllBindings = fAllBindingsAccessor(),
fAutoCompleteSource = fAllBindings.autoCompleteSource || null,
inputDelimiters = [',', ';', '\n'],
fFocusCallback = function fFocusCallback(value) {
if (fValue && fValue.focused) {
fValue.focused(!!value);
}
};
$el.inputosaurus({
parseOnBlur: true,
allowDragAndDrop: true,
focusCallback: fFocusCallback,
inputDelimiters: inputDelimiters,
autoCompleteSource: fAutoCompleteSource,
splitHook: function splitHook(value) {
var v = _babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_6___default()(Utils).call(Utils, value);
if (v && -1 < inputDelimiters.indexOf(v.substr(-1))) {
return EmailModel.splitEmailLine(value);
}
return null;
},
parseHook: function parseHook(input) {
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, ___WEBPACK_IMPORTED_MODULE_9___default.a.flatten(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, input, function (inputValue) {
var values = EmailModel.parseEmailLine(inputValue);
return values.length ? values : inputValue;
})), function (item) {
return ___WEBPACK_IMPORTED_MODULE_9___default.a.isObject(item) ? [item.toLine(false), item] : [item, null];
});
},
change: function change(event) {
$el.data('EmailsTagsValue', event.target.value);
fValue(event.target.value);
}
});
if (fValue && fValue.focused && fValue.focused.subscribe) {
fValue.focused.subscribe(function (value) {
$el.inputosaurus(value ? 'focus' : 'blur');
});
}
},
update: function update(element, fValueAccessor) {
var $oEl = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
fValue = fValueAccessor(),
value = ko.unwrap(fValue);
if ($oEl.data('EmailsTagsValue') !== value) {
$oEl.val(value);
$oEl.data('EmailsTagsValue', value);
$oEl.inputosaurus('refresh');
}
}
};
ko.bindingHandlers.command = {
init: function init(element, fValueAccessor, fAllBindingsAccessor, viewModel, bindingContext) {
var jqElement = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
command = fValueAccessor();
if (!command || !command.isCommand) {
throw new Error('Value should be a command');
}
if (!command.enabled) {
command.enabled = ko.observable(true);
}
if (!command.canExecute) {
var __realCanExecute = command.__realCanExecute;
if (___WEBPACK_IMPORTED_MODULE_9___default.a.isFunction(__realCanExecute)) {
command.canExecute = ko.computed(function () {
return command.enabled() && __realCanExecute.call(viewModel, viewModel);
});
} else {
command.canExecute = ko.computed(function () {
return command.enabled() && !!__realCanExecute;
});
}
}
jqElement.addClass('command');
ko.bindingHandlers[jqElement.is('form') ? 'submit' : 'click'].init(element, fValueAccessor, fAllBindingsAccessor, viewModel, bindingContext);
},
update: function update(element, fValueAccessor) {
var jqElement = $__WEBPACK_IMPORTED_MODULE_10___default()(element),
command = fValueAccessor();
var result = command.enabled();
jqElement.toggleClass('command-not-enabled', !result);
if (result) {
result = command.canExecute();
jqElement.toggleClass('command-can-not-be-execute', !result);
}
jqElement.toggleClass('command-disabled disable disabled', !result).toggleClass('no-disabled', !!result);
if (jqElement.is('input') || jqElement.is('button')) {
jqElement.prop('disabled', !result);
}
}
}; // extenders
ko.extenders.trimmer = function (target) {
var Utils = __webpack_require__(/*! Common/Utils */ 2),
result = ko.computed({
read: target,
write: function write(newValue) {
target(_babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_6___default()(Utils).call(Utils, newValue.toString()));
}
});
result(target());
return result;
};
ko.extenders.posInterer = function (target, defaultVal) {
var Utils = __webpack_require__(/*! Common/Utils */ 2),
result = ko.computed({
read: target,
write: function write(newValue) {
var val = Utils.pInt(newValue.toString(), defaultVal);
if (0 >= val) {
val = defaultVal;
}
if (val === target() && '' + val !== '' + newValue) {
target(val + 1);
}
target(val);
}
});
result(target());
return result;
};
ko.extenders.limitedList = function (target, limitedList) {
var Utils = __webpack_require__(/*! Common/Utils */ 2),
result = ko.computed({
read: target,
write: function write(newValue) {
var currentValue = ko.unwrap(target),
list = ko.unwrap(limitedList);
if (Utils.isNonEmptyArray(list)) {
if (-1 < Utils.inArray(newValue, list)) {
target(newValue);
} else if (-1 < Utils.inArray(currentValue, list)) {
target(currentValue + ' ');
target(currentValue);
} else {
target(list[0] + ' ');
target(list[0]);
}
} else {
target('');
}
}
}).extend({
notify: 'always'
});
result(target());
if (!result.valueHasMutated) {
result.valueHasMutated = function () {
target.valueHasMutated();
};
}
return result;
};
ko.extenders.reversible = function (target) {
var value = target();
target.commit = function () {
value = target();
};
target.reverse = function () {
target(value);
};
target.commitedValue = function () {
return value;
};
return target;
};
ko.extenders.toggleSubscribe = function (target, options) {
target.subscribe(options[1], options[0], 'beforeChange');
target.subscribe(options[2], options[0]);
return target;
};
ko.extenders.toggleSubscribeProperty = function (target, options) {
var prop = options[1];
if (prop) {
target.subscribe(function (prev) {
if (prev && prev[prop]) {
prev[prop](false);
}
}, options[0], 'beforeChange');
target.subscribe(function (next) {
if (next && next[prop]) {
next[prop](true);
}
}, options[0]);
}
return target;
};
ko.extenders.falseTimeout = function (target, option) {
target.iFalseTimeoutTimeout = 0;
target.subscribe(function (value) {
if (value) {
window__WEBPACK_IMPORTED_MODULE_8___default.a.clearTimeout(target.iFalseTimeoutTimeout);
target.iFalseTimeoutTimeout = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3___default()(function () {
target(false);
target.iFalseTimeoutTimeout = 0;
}, __webpack_require__(/*! Common/Utils */ 2).pInt(option));
}
});
return target;
};
ko.extenders.specialThrottle = function (target, option) {
target.iSpecialThrottleTimeoutValue = __webpack_require__(/*! Common/Utils */ 2).pInt(option);
if (0 < target.iSpecialThrottleTimeoutValue) {
target.iSpecialThrottleTimeout = 0;
target.valueForRead = ko.observable(!!target()).extend({
throttle: 10
});
return ko.computed({
read: target.valueForRead,
write: function write(bValue) {
if (bValue) {
target.valueForRead(bValue);
} else {
if (target.valueForRead()) {
window__WEBPACK_IMPORTED_MODULE_8___default.a.clearTimeout(target.iSpecialThrottleTimeout);
target.iSpecialThrottleTimeout = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3___default()(function () {
target.valueForRead(false);
target.iSpecialThrottleTimeout = 0;
}, target.iSpecialThrottleTimeoutValue);
} else {
target.valueForRead(bValue);
}
}
}
});
}
return target;
};
ko.extenders.idleTrigger = function (target) {
target.trigger = ko.observable(Common_Enums__WEBPACK_IMPORTED_MODULE_13__["SaveSettingsStep"].Idle);
return target;
}; // functions
ko.observable.fn.idleTrigger = function () {
return this.extend({
'idleTrigger': true
});
};
ko.observable.fn.validateNone = function () {
this.hasError = ko.observable(false);
return this;
};
ko.observable.fn.validateEmail = function () {
var _this = this;
this.hasError = ko.observable(false);
this.subscribe(function (value) {
_this.hasError('' !== value && !/^[^@\s]+@[^@\s]+$/.test(value));
});
this.valueHasMutated();
return this;
};
ko.observable.fn.validateSimpleEmail = function () {
var _this2 = this;
this.hasError = ko.observable(false);
this.subscribe(function (value) {
_this2.hasError('' !== value && !/^.+@.+$/.test(value));
});
this.valueHasMutated();
return this;
};
ko.observable.fn.deleteAccessHelper = function () {
this.extend({
falseTimeout: 3000
}).extend({
toggleSubscribeProperty: [this, 'deleteAccess']
});
return this;
};
ko.observable.fn.validateFunc = function (fFunc) {
var _this3 = this;
this.hasFuncError = ko.observable(false);
if (___WEBPACK_IMPORTED_MODULE_9___default.a.isFunction(fFunc)) {
this.subscribe(function (value) {
_this3.hasFuncError(!fFunc(value));
});
this.valueHasMutated();
}
return this;
};
/* harmony default export */ __webpack_exports__["a"] = (ko);
/***/ }),
/* 2 */
/*!*****************************!*\
!*** ./dev/Common/Utils.js ***!
\*****************************/
/*! exports provided: trim, inArray, isArray, isObject, isFunc, isUnd, isNull, has, bind, noop, noopTrue, noopFalse, jassl, silentTryCatch, isNormal, isPosNumeric, pInt, pString, pBool, boolToAjax, isNonEmptyArray, encodeURIComponent, decodeURIComponent, decodeURI, encodeURI, simpleQueryParser, fakeMd5, encodeHtml, splitPlainText, timeOutAction, timeOutActionSecond, deModule, inFocus, removeInFocus, removeSelection, replySubjectAdd, roundNumber, friendlySize, log, delegateRun, killCtrlACtrlS, createCommandLegacy, convertThemeName, quoteName, microtime, timestamp, convertLangName, draggablePlace, defautOptionsAfterRender, clearBqSwitcher, previewMessage, settingsSaveHelperFunction, settingsSaveHelperSimpleFunction, settingsSaveHelperSubscribeFunction, findEmailAndLinks, htmlToPlain, plainToHtml, folderListOptionsBuilder, selectElement, detectDropdownVisibility, triggerAutocompleteInputChange, getConfigurationFromScriptTag, disposeOne, disposeObject, delegateRunOnDestroy, appendStyles, changeTheme, computedPagenatorHelper, getFileExtension, mimeContentType, isTransparent, getRealHeight, resizeAndCrop, mailToHelper, domReady, windowResize, windowResizeCallback */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trim", function() { return trim; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inArray", function() { return inArray; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunc", function() { return isFunc; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUnd", function() { return isUnd; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return isNull; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "has", function() { return has; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bind", function() { return bind; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return noop; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noopTrue", function() { return noopTrue; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noopFalse", function() { return noopFalse; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "silentTryCatch", function() { return silentTryCatch; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNormal", function() { return isNormal; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPosNumeric", function() { return isPosNumeric; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pInt", function() { return pInt; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pString", function() { return pString; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pBool", function() { return pBool; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "boolToAjax", function() { return boolToAjax; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNonEmptyArray", function() { return isNonEmptyArray; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encodeURIComponent", function() { return encodeURIComponent; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decodeURIComponent", function() { return decodeURIComponent; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decodeURI", function() { return decodeURI; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encodeURI", function() { return encodeURI; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "simpleQueryParser", function() { return simpleQueryParser; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fakeMd5", function() { return fakeMd5; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "encodeHtml", function() { return encodeHtml; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "splitPlainText", function() { return splitPlainText; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeOutAction", function() { return timeOutAction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeOutActionSecond", function() { return timeOutActionSecond; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deModule", function() { return deModule; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "inFocus", function() { return inFocus; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeInFocus", function() { return removeInFocus; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeSelection", function() { return removeSelection; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "replySubjectAdd", function() { return replySubjectAdd; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "roundNumber", function() { return roundNumber; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "friendlySize", function() { return friendlySize; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delegateRun", function() { return delegateRun; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "killCtrlACtrlS", function() { return killCtrlACtrlS; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createCommandLegacy", function() { return createCommandLegacy; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertThemeName", function() { return convertThemeName; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "quoteName", function() { return quoteName; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "microtime", function() { return microtime; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return timestamp; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertLangName", function() { return convertLangName; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "draggablePlace", function() { return draggablePlace; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defautOptionsAfterRender", function() { return defautOptionsAfterRender; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearBqSwitcher", function() { return clearBqSwitcher; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "previewMessage", function() { return previewMessage; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settingsSaveHelperFunction", function() { return settingsSaveHelperFunction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settingsSaveHelperSimpleFunction", function() { return settingsSaveHelperSimpleFunction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settingsSaveHelperSubscribeFunction", function() { return settingsSaveHelperSubscribeFunction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findEmailAndLinks", function() { return findEmailAndLinks; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "htmlToPlain", function() { return htmlToPlain; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "plainToHtml", function() { return plainToHtml; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "folderListOptionsBuilder", function() { return folderListOptionsBuilder; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "selectElement", function() { return selectElement; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "detectDropdownVisibility", function() { return detectDropdownVisibility; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "triggerAutocompleteInputChange", function() { return triggerAutocompleteInputChange; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getConfigurationFromScriptTag", function() { return getConfigurationFromScriptTag; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "disposeOne", function() { return disposeOne; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "disposeObject", function() { return disposeObject; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delegateRunOnDestroy", function() { return delegateRunOnDestroy; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendStyles", function() { return appendStyles; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "changeTheme", function() { return changeTheme; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "computedPagenatorHelper", function() { return computedPagenatorHelper; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFileExtension", function() { return getFileExtension; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mimeContentType", function() { return mimeContentType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isTransparent", function() { return isTransparent; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRealHeight", function() { return getRealHeight; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resizeAndCrop", function() { return resizeAndCrop; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mailToHelper", function() { return mailToHelper; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "domReady", function() { return domReady; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowResize", function() { return windowResize; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowResizeCallback", function() { return windowResizeCallback; });
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 119);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 203);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 224);
/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.link.js */ 204);
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/trim */ 153);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ 175);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/values */ 122);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/reduce */ 227);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_15__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Autolinker__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Autolinker */ 230);
/* harmony import */ var Autolinker__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(Autolinker__WEBPACK_IMPORTED_MODULE_19__);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Mime__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Common/Mime */ 231);
/* harmony import */ var Common_Jassl__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Common/Jassl */ 121);
/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "jassl", function() { return Common_Jassl__WEBPACK_IMPORTED_MODULE_23__["a"]; });
var trim = _babel_runtime_corejs3_core_js_stable_instance_trim__WEBPACK_IMPORTED_MODULE_9___default()($__WEBPACK_IMPORTED_MODULE_16___default.a);
var inArray = $__WEBPACK_IMPORTED_MODULE_16___default.a.inArray;
var isArray = ___WEBPACK_IMPORTED_MODULE_17___default.a.isArray;
var isObject = ___WEBPACK_IMPORTED_MODULE_17___default.a.isObject;
var isFunc = ___WEBPACK_IMPORTED_MODULE_17___default.a.isFunction;
var isUnd = ___WEBPACK_IMPORTED_MODULE_17___default.a.isUndefined;
var isNull = ___WEBPACK_IMPORTED_MODULE_17___default.a.isNull;
var has = ___WEBPACK_IMPORTED_MODULE_17___default.a.has;
var bind = ___WEBPACK_IMPORTED_MODULE_17___default.a.bind;
var noop = function noop() {}; // eslint-disable-line no-empty-function
var noopTrue = function noopTrue() {
return true;
};
var noopFalse = function noopFalse() {
return false;
};
/**
* @param {Function} func
*/
function silentTryCatch(func) {
try {
func();
} catch (e) {} // eslint-disable-line no-empty
}
/**
* @param {*} value
* @returns {boolean}
*/
function isNormal(value) {
return !isUnd(value) && !isNull(value);
}
/**
* @param {(string|number)} value
* @param {boolean=} includeZero = true
* @returns {boolean}
*/
function isPosNumeric(value, includeZero) {
if (includeZero === void 0) {
includeZero = true;
}
return !isNormal(value) ? false : includeZero ? /^[0-9]*$/.test(value.toString()) : /^[1-9]+[0-9]*$/.test(value.toString());
}
/**
* @param {*} value
* @param {number=} defaultValur = 0
* @returns {number}
*/
function pInt(value, defaultValur) {
if (defaultValur === void 0) {
defaultValur = 0;
}
var result = isNormal(value) && '' !== value ? window__WEBPACK_IMPORTED_MODULE_15___default.a.parseInt(value, 10) : defaultValur;
return window__WEBPACK_IMPORTED_MODULE_15___default.a.isNaN(result) ? defaultValur : result;
}
/**
* @param {*} value
* @returns {string}
*/
function pString(value) {
return isNormal(value) ? '' + value : '';
}
/**
* @param {*} value
* @returns {boolean}
*/
function pBool(value) {
return !!value;
}
/**
* @param {*} value
* @returns {string}
*/
function boolToAjax(value) {
return value ? '1' : '0';
}
/**
* @param {*} values
* @returns {boolean}
*/
function isNonEmptyArray(values) {
return isArray(values) && 0 < values.length;
}
/**
* @param {string} component
* @returns {string}
*/
function encodeURIComponent(component) {
return window__WEBPACK_IMPORTED_MODULE_15___default.a.encodeURIComponent(component);
}
/**
* @param {string} component
* @returns {string}
*/
function decodeURIComponent(component) {
return window__WEBPACK_IMPORTED_MODULE_15___default.a.decodeURIComponent(component);
}
/**
* @param {string} url
* @returns {string}
*/
function decodeURI(url) {
return window__WEBPACK_IMPORTED_MODULE_15___default.a.decodeURI(url);
}
/**
* @param {string} url
* @returns {string}
*/
function encodeURI(url) {
return window__WEBPACK_IMPORTED_MODULE_15___default.a.encodeURI(url);
}
/**
* @param {string} queryString
* @returns {Object}
*/
function simpleQueryParser(queryString) {
var index = 0,
len = 0,
temp = null;
var queries = queryString.split('&'),
params = {};
for (len = queries.length; index < len; index++) {
temp = queries[index].split('=');
params[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]);
}
return params;
}
/**
* @param {number=} len = 32
* @returns {string}
*/
function fakeMd5(len) {
if (len === void 0) {
len = 32;
}
var line = '0123456789abcdefghijklmnopqrstuvwxyz',
lineLen = line.length;
len = pInt(len);
var result = '';
while (result.length < len) {
result += line.substr(window__WEBPACK_IMPORTED_MODULE_15___default.a.Math.round(window__WEBPACK_IMPORTED_MODULE_15___default.a.Math.random() * lineLen), 1);
}
return result;
}
/**
* @param {string} text
* @returns {string}
*/
function encodeHtml(text) {
return isNormal(text) ? ___WEBPACK_IMPORTED_MODULE_17___default.a.escape(text.toString()) : '';
}
/**
* @param {string} text
* @param {number=} len = 100
* @returns {string}
*/
function splitPlainText(text, len) {
if (len === void 0) {
len = 100;
}
var prefix = '',
subText = '',
result = text,
spacePos = 0,
newLinePos = 0;
while (result.length > len) {
subText = result.substring(0, len);
spacePos = subText.lastIndexOf(' ');
newLinePos = subText.lastIndexOf('\n');
if (-1 !== newLinePos) {
spacePos = newLinePos;
}
if (-1 === spacePos) {
spacePos = len;
}
prefix += subText.substring(0, spacePos) + '\n';
result = result.substring(spacePos + 1);
}
return prefix + result;
}
var timeOutAction = function () {
var timeOuts = {};
return function (action, fFunction, timeOut) {
timeOuts[action] = isUnd(timeOuts[action]) ? 0 : timeOuts[action];
window__WEBPACK_IMPORTED_MODULE_15___default.a.clearTimeout(timeOuts[action]);
timeOuts[action] = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10___default()(fFunction, timeOut);
};
}();
var timeOutActionSecond = function () {
var timeOuts = {};
return function (action, fFunction, timeOut) {
if (!timeOuts[action]) {
timeOuts[action] = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10___default()(function () {
fFunction();
timeOuts[action] = 0;
}, timeOut);
}
};
}();
/**
* @param {any} m
* @returns {any}
*/
function deModule(m) {
return (m && m.default ? m.default : m) || '';
}
/**
* @returns {boolean}
*/
function inFocus() {
try {
if (window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement) {
if (isUnd(window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement.__inFocusCache)) {
window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement.__inFocusCache = $__WEBPACK_IMPORTED_MODULE_16___default()(window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement).is('input,textarea,iframe,.cke_editable');
}
return !!window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement.__inFocusCache;
}
} catch (e) {} // eslint-disable-line no-empty
return false;
}
/**
* @param {boolean} force
* @returns {void}
*/
function removeInFocus(force) {
if (window__WEBPACK_IMPORTED_MODULE_15___default.a.document && window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement && window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement.blur) {
try {
var activeEl = $__WEBPACK_IMPORTED_MODULE_16___default()(window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement);
if (activeEl && activeEl.is('input,textarea')) {
window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement.blur();
} else if (force) {
window__WEBPACK_IMPORTED_MODULE_15___default.a.document.activeElement.blur();
}
} catch (e) {} // eslint-disable-line no-empty
}
}
/**
* @returns {void}
*/
function removeSelection() {
try {
if (window__WEBPACK_IMPORTED_MODULE_15___default.a && window__WEBPACK_IMPORTED_MODULE_15___default.a.getSelection) {
var sel = window__WEBPACK_IMPORTED_MODULE_15___default.a.getSelection();
if (sel && sel.removeAllRanges) {
sel.removeAllRanges();
}
} else if (window__WEBPACK_IMPORTED_MODULE_15___default.a.document && window__WEBPACK_IMPORTED_MODULE_15___default.a.document.selection && window__WEBPACK_IMPORTED_MODULE_15___default.a.document.selection.empty) {
window__WEBPACK_IMPORTED_MODULE_15___default.a.document.selection.empty();
}
} catch (e) {} // eslint-disable-line no-empty
}
/**
* @param {string} prefix
* @param {string} subject
* @returns {string}
*/
function replySubjectAdd(prefix, subject) {
prefix = trim(prefix.toUpperCase());
subject = trim(subject.replace(/[\s]+/g, ' '));
var drop = false,
re = 'RE' === prefix,
fwd = 'FWD' === prefix;
var parts = [],
prefixIsRe = !fwd;
if ('' !== subject) {
___WEBPACK_IMPORTED_MODULE_17___default.a.each(subject.split(':'), function (part) {
var trimmedPart = trim(part);
if (!drop && (/^(RE|FWD)$/i.test(trimmedPart) || /^(RE|FWD)[[(][\d]+[\])]$/i.test(trimmedPart))) {
if (!re) {
re = !!/^RE/i.test(trimmedPart);
}
if (!fwd) {
fwd = !!/^FWD/i.test(trimmedPart);
}
} else {
parts.push(part);
drop = true;
}
});
}
if (prefixIsRe) {
re = false;
} else {
fwd = false;
}
return trim((prefixIsRe ? 'Re: ' : 'Fwd: ') + (re ? 'Re: ' : '') + (fwd ? 'Fwd: ' : '') + trim(parts.join(':')));
}
/**
* @param {number} num
* @param {number} dec
* @returns {number}
*/
function roundNumber(num, dec) {
return window__WEBPACK_IMPORTED_MODULE_15___default.a.Math.round(num * window__WEBPACK_IMPORTED_MODULE_15___default.a.Math.pow(10, dec)) / window__WEBPACK_IMPORTED_MODULE_15___default.a.Math.pow(10, dec);
}
/**
* @param {(number|string)} sizeInBytes
* @returns {string}
*/
function friendlySize(sizeInBytes) {
sizeInBytes = pInt(sizeInBytes);
switch (true) {
case 1073741824 <= sizeInBytes:
return roundNumber(sizeInBytes / 1073741824, 1) + 'GB';
case 1048576 <= sizeInBytes:
return roundNumber(sizeInBytes / 1048576, 1) + 'MB';
case 1024 <= sizeInBytes:
return roundNumber(sizeInBytes / 1024, 0) + 'KB';
// no default
}
return sizeInBytes + 'B';
}
/**
* @param {string} desc
*/
function log(desc) {
if (window__WEBPACK_IMPORTED_MODULE_15___default.a.console && window__WEBPACK_IMPORTED_MODULE_15___default.a.console.log) {
window__WEBPACK_IMPORTED_MODULE_15___default.a.console.log(desc);
}
}
/**
* @param {?} object
* @param {string} methodName
* @param {Array=} params
* @param {number=} delay = 0
*/
function delegateRun(object, methodName, params, delay) {
if (delay === void 0) {
delay = 0;
}
if (object && object[methodName]) {
delay = pInt(delay);
params = isArray(params) ? params : [];
if (0 >= delay) {
object[methodName].apply(object, params);
} else {
___WEBPACK_IMPORTED_MODULE_17___default.a.delay(function () {
object[methodName].apply(object, params);
}, delay);
}
}
}
/**
* @param {?} event
*/
function killCtrlACtrlS(event) {
event = event || window__WEBPACK_IMPORTED_MODULE_15___default.a.event;
if (event && event.ctrlKey && !event.shiftKey && !event.altKey) {
var key = event.keyCode || event.which;
if (key === Common_Enums__WEBPACK_IMPORTED_MODULE_21__["EventKeyCode"].S) {
event.preventDefault();
return;
} else if (key === Common_Enums__WEBPACK_IMPORTED_MODULE_21__["EventKeyCode"].A) {
var sender = event.target || event.srcElement;
if (sender && ('true' === '' + sender.contentEditable || sender.tagName && sender.tagName.match(/INPUT|TEXTAREA/i))) {
return;
}
if (window__WEBPACK_IMPORTED_MODULE_15___default.a.getSelection) {
window__WEBPACK_IMPORTED_MODULE_15___default.a.getSelection().removeAllRanges();
} else if (window__WEBPACK_IMPORTED_MODULE_15___default.a.document.selection && window__WEBPACK_IMPORTED_MODULE_15___default.a.document.selection.clear) {
window__WEBPACK_IMPORTED_MODULE_15___default.a.document.selection.clear();
}
event.preventDefault();
}
}
}
/**
* @param {(Object|null|undefined)} context
* @param {Function} fExecute
* @param {(Function|boolean|null)=} fCanExecute = true
* @returns {Function}
*/
function createCommandLegacy(context, fExecute, fCanExecute) {
if (fCanExecute === void 0) {
fCanExecute = true;
}
var fResult = null;
var fNonEmpty = function fNonEmpty() {
if (fResult && fResult.canExecute && fResult.canExecute()) {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
fExecute.apply(context, args);
}
return false;
};
fResult = fExecute ? fNonEmpty : noop;
fResult.enabled = ko__WEBPACK_IMPORTED_MODULE_18__[/* default */ "a"].observable(true);
fResult.isCommand = true;
if (isFunc(fCanExecute)) {
fResult.canExecute = ko__WEBPACK_IMPORTED_MODULE_18__[/* default */ "a"].computed(function () {
return fResult && fResult.enabled() && fCanExecute.call(context);
});
} else {
fResult.canExecute = ko__WEBPACK_IMPORTED_MODULE_18__[/* default */ "a"].computed(function () {
return fResult && fResult.enabled() && !!fCanExecute;
});
}
return fResult;
}
/**
* @param {string} theme
* @returns {string}
*/
var convertThemeName = ___WEBPACK_IMPORTED_MODULE_17___default.a.memoize(function (theme) {
if ('@custom' === theme.substr(-7)) {
theme = trim(theme.substring(0, theme.length - 7));
}
return trim(theme.replace(/[^a-zA-Z0-9]+/g, ' ').replace(/([A-Z])/g, ' $1').replace(/[\s]+/g, ' '));
});
/**
* @param {string} name
* @returns {string}
*/
function quoteName(name) {
return name.replace(/["]/g, '\\"');
}
/**
* @returns {number}
*/
function microtime() {
return new window__WEBPACK_IMPORTED_MODULE_15___default.a.Date().getTime();
}
/**
* @returns {number}
*/
function timestamp() {
return window__WEBPACK_IMPORTED_MODULE_15___default.a.Math.round(microtime() / 1000);
}
/**
*
* @param {string} language
* @param {boolean=} isEng = false
* @returns {string}
*/
function convertLangName(language, isEng) {
if (isEng === void 0) {
isEng = false;
}
return __webpack_require__(/*! Common/Translator */ 9).i18n('LANGS_NAMES' + (true === isEng ? '_EN' : '') + '/LANG_' + language.toUpperCase().replace(/[^a-zA-Z0-9]+/g, '_'), null, language);
}
/**
* @returns {object}
*/
function draggablePlace() {
return $__WEBPACK_IMPORTED_MODULE_16___default()('<div class="draggablePlace">' + '<span class="text"></span> ' + '<i class="icon-copy icon-white visible-on-ctrl"></i>' + '<i class="icon-mail icon-white hidden-on-ctrl"></i>' + '</div>').appendTo('#rl-hidden');
}
/**
* @param {object} domOption
* @param {object} item
* @returns {void}
*/
function defautOptionsAfterRender(domItem, item) {
if (item && !isUnd(item.disabled) && domItem) {
$__WEBPACK_IMPORTED_MODULE_16___default()(domItem).toggleClass('disabled', item.disabled).prop('disabled', item.disabled);
}
}
/**
* @param {string} title
* @param {Object} body
* @param {boolean} isHtml
* @param {boolean} print
*/
function clearBqSwitcher(body) {
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_11___default()(body).call(body, 'blockquote.rl-bq-switcher').removeClass('rl-bq-switcher hidden-bq');
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_11___default()(body).call(body, '.rlBlockquoteSwitcher').off('.rlBlockquoteSwitcher').remove();
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_11___default()(body).call(body, '[data-html-editor-font-wrapper]').removeAttr('data-html-editor-font-wrapper');
}
/**
* @param {object} messageData
* @param {Object} body
* @param {boolean} isHtml
* @param {boolean} print
* @returns {void}
*/
function previewMessage(_ref, body, isHtml, print) {
var title = _ref.title,
subject = _ref.subject,
date = _ref.date,
fromCreds = _ref.fromCreds,
toCreds = _ref.toCreds,
toLabel = _ref.toLabel,
ccClass = _ref.ccClass,
ccCreds = _ref.ccCreds,
ccLabel = _ref.ccLabel;
var win = window__WEBPACK_IMPORTED_MODULE_15___default.a.open(''),
doc = win.document,
bodyClone = body.clone(),
bodyClass = isHtml ? 'html' : 'plain';
clearBqSwitcher(bodyClone);
var html = bodyClone ? bodyClone.html() : '';
doc.write(deModule(__webpack_require__(/*! Html/PreviewMessage.html */ 357)).replace('{{title}}', encodeHtml(title)).replace('{{subject}}', encodeHtml(subject)).replace('{{date}}', encodeHtml(date)).replace('{{fromCreds}}', encodeHtml(fromCreds)).replace('{{toCreds}}', encodeHtml(toCreds)).replace('{{toLabel}}', encodeHtml(toLabel)).replace('{{ccClass}}', encodeHtml(ccClass)).replace('{{ccCreds}}', encodeHtml(ccCreds)).replace('{{ccLabel}}', encodeHtml(ccLabel)).replace('{{bodyClass}}', bodyClass).replace('{{html}}', html));
doc.close();
if (print) {
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10___default()(function () {
return win.print();
}, 100);
}
}
/**
* @param {Function} fCallback
* @param {?} koTrigger
* @param {?} context = null
* @param {number=} timer = 1000
* @returns {Function}
*/
function settingsSaveHelperFunction(fCallback, koTrigger, context, timer) {
if (context === void 0) {
context = null;
}
if (timer === void 0) {
timer = 1000;
}
timer = pInt(timer);
return function (type, data, cached, requestAction, requestParameters) {
koTrigger.call(context, data && data.Result ? Common_Enums__WEBPACK_IMPORTED_MODULE_21__["SaveSettingsStep"].TrueResult : Common_Enums__WEBPACK_IMPORTED_MODULE_21__["SaveSettingsStep"].FalseResult);
if (fCallback) {
fCallback.call(context, type, data, cached, requestAction, requestParameters);
}
___WEBPACK_IMPORTED_MODULE_17___default.a.delay(function () {
koTrigger.call(context, Common_Enums__WEBPACK_IMPORTED_MODULE_21__["SaveSettingsStep"].Idle);
}, timer);
};
}
/**
* @param {object} koTrigger
* @param {mixed} context
* @returns {mixed}
*/
function settingsSaveHelperSimpleFunction(koTrigger, context) {
return settingsSaveHelperFunction(null, koTrigger, context, 1000);
}
/**
* @param {object} remote
* @param {string} settingName
* @param {string} type
* @param {function} fTriggerFunction
* @returns {function}
*/
function settingsSaveHelperSubscribeFunction(remote, settingName, type, fTriggerFunction) {
return function (value) {
if (remote) {
switch (type) {
case 'bool':
case 'boolean':
value = value ? '1' : '0';
break;
case 'int':
case 'integer':
case 'number':
value = pInt(value);
break;
case 'trim':
value = trim(value);
break;
default:
value = pString(value);
break;
}
var data = {};
data[settingName] = value;
if (remote.saveAdminConfig) {
remote.saveAdminConfig(fTriggerFunction || null, data);
} else if (remote.saveSettings) {
remote.saveSettings(fTriggerFunction || null, data);
}
}
};
}
/**
* @param {string} html
* @returns {string}
*/
function findEmailAndLinks(html) {
return Autolinker__WEBPACK_IMPORTED_MODULE_19___default.a ? Autolinker__WEBPACK_IMPORTED_MODULE_19___default.a.link(html, {
newWindow: true,
stripPrefix: false,
urls: true,
email: true,
mention: false,
phone: false,
hashtag: false,
replaceFn: function replaceFn(match) {
return !(match && 'url' === match.getType() && match.matchedText && 0 !== match.matchedText.indexOf('http'));
}
}) : html;
}
/**
* @param {string} html
* @returns {string}
*/
function htmlToPlain(html) {
var pos = 0,
limit = 0,
iP1 = 0,
iP2 = 0,
iP3 = 0,
text = '';
var convertBlockquote = function convertBlockquote(blockquoteText) {
blockquoteText = '> ' + trim(blockquoteText).replace(/\n/gm, '\n> ');
return blockquoteText.replace(/(^|\n)([> ]+)/gm, function () {
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
args[_key2] = arguments[_key2];
}
return args && 2 < args.length ? args[1] + trim(args[2].replace(/[\s]/g, '')) + ' ' : '';
});
};
var convertDivs = function convertDivs() {
for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
args[_key3] = arguments[_key3];
}
if (args && 1 < args.length) {
var divText = trim(args[1]);
if (0 < divText.length) {
divText = divText.replace(/<div[^>]*>([\s\S\r\n]*)<\/div>/gim, convertDivs);
divText = '\n' + trim(divText) + '\n';
}
return divText;
}
return '';
};
var convertPre = function convertPre() {
for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
args[_key4] = arguments[_key4];
}
return args && 1 < args.length ? args[1].toString().replace(/[\n]/gm, '<br />').replace(/[\r]/gm, '') : '';
},
fixAttibuteValue = function fixAttibuteValue() {
for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
args[_key5] = arguments[_key5];
}
return args && 1 < args.length ? '' + args[1] + ___WEBPACK_IMPORTED_MODULE_17___default.a.escape(args[2]) : '';
},
convertLinks = function convertLinks() {
for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {
args[_key6] = arguments[_key6];
}
return args && 1 < args.length ? trim(args[1]) : '';
};
text = html.replace(/<p[^>]*><\/p>/gi, '').replace(/<pre[^>]*>([\s\S\r\n\t]*)<\/pre>/gim, convertPre).replace(/[\s]+/gm, ' ').replace(/((?:href|data)\s?=\s?)("[^"]+?"|'[^']+?')/gim, fixAttibuteValue).replace(/<br[^>]*>/gim, '\n').replace(/<\/h[\d]>/gi, '\n').replace(/<\/p>/gi, '\n\n').replace(/<ul[^>]*>/gim, '\n').replace(/<\/ul>/gi, '\n').replace(/<li[^>]*>/gim, ' * ').replace(/<\/li>/gi, '\n').replace(/<\/td>/gi, '\n').replace(/<\/tr>/gi, '\n').replace(/<hr[^>]*>/gim, '\n_______________________________\n\n').replace(/<div[^>]*>([\s\S\r\n]*)<\/div>/gim, convertDivs).replace(/<blockquote[^>]*>/gim, '\n__bq__start__\n').replace(/<\/blockquote>/gim, '\n__bq__end__\n').replace(/<a [^>]*>([\s\S\r\n]*?)<\/a>/gim, convertLinks).replace(/<\/div>/gi, '\n').replace(/ /gi, ' ').replace(/"/gi, '"').replace(/<[^>]*>/gm, '');
text = Common_Globals__WEBPACK_IMPORTED_MODULE_20__["$div"].html(text).text();
text = text.replace(/\n[ \t]+/gm, '\n').replace(/[\n]{3,}/gm, '\n\n').replace(/>/gi, '>').replace(/</gi, '<').replace(/&/gi, '&');
text = splitPlainText(text);
pos = 0;
limit = 800;
while (0 < limit) {
limit -= 1;
iP1 = text.indexOf('__bq__start__', pos);
if (-1 < iP1) {
iP2 = text.indexOf('__bq__start__', iP1 + 5);
iP3 = text.indexOf('__bq__end__', iP1 + 5);
if ((-1 === iP2 || iP3 < iP2) && iP1 < iP3) {
text = text.substring(0, iP1) + convertBlockquote(text.substring(iP1 + 13, iP3)) + text.substring(iP3 + 11);
pos = 0;
} else if (-1 < iP2 && iP2 < iP3) {
pos = iP2 - 1;
} else {
pos = 0;
}
} else {
break;
}
}
text = text.replace(/__bq__start__/gm, '').replace(/__bq__end__/gm, '');
return text;
}
/**
* @param {string} plain
* @param {boolean} findEmailAndLinksInText = false
* @returns {string}
*/
function plainToHtml(plain, findEmailAndLinksInText) {
if (findEmailAndLinksInText === void 0) {
findEmailAndLinksInText = false;
}
plain = plain.toString().replace(/\r/g, '');
plain = plain.replace(/^>[> ]>+/gm, function (_ref2) {
var match = _ref2[0];
return match ? match.replace(/[ ]+/g, '') : match;
});
var bIn = false,
bDo = true,
bStart = true,
aNextText = [],
sLine = '',
iIndex = 0,
aText = plain.split('\n');
do {
bDo = false;
aNextText = [];
for (iIndex = 0; iIndex < aText.length; iIndex++) {
sLine = aText[iIndex];
bStart = '>' === sLine.substr(0, 1);
if (bStart && !bIn) {
bDo = true;
bIn = true;
aNextText.push('~~~blockquote~~~');
aNextText.push(sLine.substr(1));
} else if (!bStart && bIn) {
if ('' !== sLine) {
bIn = false;
aNextText.push('~~~/blockquote~~~');
aNextText.push(sLine);
} else {
aNextText.push(sLine);
}
} else if (bStart && bIn) {
aNextText.push(sLine.substr(1));
} else {
aNextText.push(sLine);
}
}
if (bIn) {
bIn = false;
aNextText.push('~~~/blockquote~~~');
}
aText = aNextText;
} while (bDo);
plain = aText.join('\n');
plain = plain // .replace(/~~~\/blockquote~~~\n~~~blockquote~~~/g, '\n')
.replace(/&/g, '&').replace(/>/g, '>').replace(/</g, '<').replace(/~~~blockquote~~~[\s]*/g, '<blockquote>').replace(/[\s]*~~~\/blockquote~~~/g, '</blockquote>').replace(/\n/g, '<br />');
return findEmailAndLinksInText ? findEmailAndLinks(plain) : plain;
}
window__WEBPACK_IMPORTED_MODULE_15___default.a['rainloop_Utils_htmlToPlain'] = htmlToPlain; // eslint-disable-line dot-notation
window__WEBPACK_IMPORTED_MODULE_15___default.a['rainloop_Utils_plainToHtml'] = plainToHtml; // eslint-disable-line dot-notation
/**
* @param {Array} aSystem
* @param {Array} aList
* @param {Array=} aDisabled
* @param {Array=} aHeaderLines
* @param {?number=} iUnDeep
* @param {Function=} fDisableCallback
* @param {Function=} fVisibleCallback
* @param {Function=} fRenameCallback
* @param {boolean=} bSystem
* @param {boolean=} bBuildUnvisible
* @returns {Array}
*/
function folderListOptionsBuilder(aSystem, aList, aDisabled, aHeaderLines, iUnDeep, fDisableCallback, fVisibleCallback, fRenameCallback, bSystem, bBuildUnvisible) {
var
/**
* @type {?FolderModel}
*/
oItem = null,
bSep = false,
iIndex = 0,
iLen = 0,
aResult = [];
var sDeepPrefix = "\xA0\xA0\xA0";
bBuildUnvisible = isUnd(bBuildUnvisible) ? false : !!bBuildUnvisible;
bSystem = !isNormal(bSystem) ? 0 < aSystem.length : bSystem;
iUnDeep = !isNormal(iUnDeep) ? 0 : iUnDeep;
fDisableCallback = isNormal(fDisableCallback) ? fDisableCallback : null;
fVisibleCallback = isNormal(fVisibleCallback) ? fVisibleCallback : null;
fRenameCallback = isNormal(fRenameCallback) ? fRenameCallback : null;
if (!isArray(aDisabled)) {
aDisabled = [];
}
if (!isArray(aHeaderLines)) {
aHeaderLines = [];
}
for (iIndex = 0, iLen = aHeaderLines.length; iIndex < iLen; iIndex++) {
aResult.push({
id: aHeaderLines[iIndex][0],
name: aHeaderLines[iIndex][1],
system: false,
seporator: false,
disabled: false
});
}
bSep = true;
for (iIndex = 0, iLen = aSystem.length; iIndex < iLen; iIndex++) {
oItem = aSystem[iIndex];
if (fVisibleCallback ? fVisibleCallback(oItem) : true) {
if (bSep && 0 < aResult.length) {
aResult.push({
id: '---',
name: '---',
system: false,
seporator: true,
disabled: true
});
}
bSep = false;
aResult.push({
id: oItem.fullNameRaw,
name: fRenameCallback ? fRenameCallback(oItem) : oItem.name(),
system: true,
seporator: false,
disabled: !oItem.selectable || -1 < inArray(oItem.fullNameRaw, aDisabled) || (fDisableCallback ? fDisableCallback(oItem) : false)
});
}
}
bSep = true;
for (iIndex = 0, iLen = aList.length; iIndex < iLen; iIndex++) {
oItem = aList[iIndex]; // if (oItem.subScribed() || !oItem.existen || bBuildUnvisible)
if ((oItem.subScribed() || !oItem.existen || bBuildUnvisible) && (oItem.selectable || oItem.hasSubScribedSubfolders())) {
if (fVisibleCallback ? fVisibleCallback(oItem) : true) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_21__["FolderType"].User === oItem.type() || !bSystem || oItem.hasSubScribedSubfolders()) {
if (bSep && 0 < aResult.length) {
aResult.push({
id: '---',
name: '---',
system: false,
seporator: true,
disabled: true
});
}
bSep = false;
aResult.push({
id: oItem.fullNameRaw,
name: new window__WEBPACK_IMPORTED_MODULE_15___default.a.Array(oItem.deep + 1 - iUnDeep).join(sDeepPrefix) + (fRenameCallback ? fRenameCallback(oItem) : oItem.name()),
system: false,
seporator: false,
disabled: !oItem.selectable || -1 < inArray(oItem.fullNameRaw, aDisabled) || (fDisableCallback ? fDisableCallback(oItem) : false)
});
}
}
}
if (oItem.subScribed() && 0 < oItem.subFolders().length) {
aResult = _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_12___default()(aResult).call(aResult, folderListOptionsBuilder([], oItem.subFolders(), aDisabled, [], iUnDeep, fDisableCallback, fVisibleCallback, fRenameCallback, bSystem, bBuildUnvisible));
}
}
return aResult;
}
/**
* @param {object} element
* @returns {void}
*/
function selectElement(element) {
var sel = null,
range = null;
if (window__WEBPACK_IMPORTED_MODULE_15___default.a.getSelection) {
sel = window__WEBPACK_IMPORTED_MODULE_15___default.a.getSelection();
sel.removeAllRanges();
range = window__WEBPACK_IMPORTED_MODULE_15___default.a.document.createRange();
range.selectNodeContents(element);
sel.addRange(range);
} else if (window__WEBPACK_IMPORTED_MODULE_15___default.a.document.selection) {
range = window__WEBPACK_IMPORTED_MODULE_15___default.a.document.body.createTextRange();
range.moveToElementText(element);
range.select();
}
}
var detectDropdownVisibility = ___WEBPACK_IMPORTED_MODULE_17___default.a.debounce(function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_20__["dropdownVisibility"])(!!_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_11___default()(___WEBPACK_IMPORTED_MODULE_17___default.a).call(___WEBPACK_IMPORTED_MODULE_17___default.a, Common_Globals__WEBPACK_IMPORTED_MODULE_20__["data"].aBootstrapDropdowns, function (item) {
return item.hasClass('open');
}));
}, 50);
/**
* @param {boolean=} delay = false
*/
function triggerAutocompleteInputChange(delay) {
if (delay === void 0) {
delay = false;
}
var fFunc = function fFunc() {
$__WEBPACK_IMPORTED_MODULE_16___default()('.checkAutocomplete').trigger('change');
};
if (delay) {
___WEBPACK_IMPORTED_MODULE_17___default.a.delay(fFunc, 100);
} else {
fFunc();
}
}
var configurationScriptTagCache = {};
/**
* @param {string} configuration
* @returns {object}
*/
function getConfigurationFromScriptTag(configuration) {
if (!configurationScriptTagCache[configuration]) {
configurationScriptTagCache[configuration] = $__WEBPACK_IMPORTED_MODULE_16___default()('script[type="application/json"][data-configuration="' + configuration + '"]');
}
try {
return JSON.parse(configurationScriptTagCache[configuration].text());
} catch (e) {} // eslint-disable-line no-empty
return {};
}
/**
* @param {mixed} mPropOrValue
* @param {mixed} value
*/
function disposeOne(propOrValue, value) {
var disposable = value || propOrValue;
if (disposable && 'function' === typeof disposable.dispose) {
disposable.dispose();
}
}
/**
* @param {Object} object
*/
function disposeObject(object) {
if (object) {
if (isArray(object.disposables)) {
___WEBPACK_IMPORTED_MODULE_17___default.a.each(object.disposables, disposeOne);
}
ko__WEBPACK_IMPORTED_MODULE_18__[/* default */ "a"].utils.objectForEach(object, disposeOne);
}
}
/**
* @param {Object|Array} objectOrObjects
* @returns {void}
*/
function delegateRunOnDestroy(objectOrObjects) {
if (objectOrObjects) {
if (isArray(objectOrObjects)) {
___WEBPACK_IMPORTED_MODULE_17___default.a.each(objectOrObjects, function (item) {
delegateRunOnDestroy(item);
});
} else if (objectOrObjects && objectOrObjects.onDestroy) {
objectOrObjects.onDestroy();
}
}
}
/**
* @param {object} $styleTag
* @param {string} css
* @returns {boolean}
*/
function appendStyles($styleTag, css) {
if ($styleTag && $styleTag[0]) {
if ($styleTag[0].styleSheet && !isUnd($styleTag[0].styleSheet.cssText)) {
$styleTag[0].styleSheet.cssText = css;
} else {
$styleTag.text(css);
}
return true;
}
return false;
}
var __themeTimer = 0,
__themeAjax = null;
/**
* @param {string} value
* @param {function=} themeTrigger = noop
* @returns {void}
*/
function changeTheme(value, themeTrigger) {
if (themeTrigger === void 0) {
themeTrigger = noop;
}
var themeLink = $__WEBPACK_IMPORTED_MODULE_16___default()('#app-theme-link'),
clearTimer = function clearTimer() {
__themeTimer = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10___default()(function () {
return themeTrigger(Common_Enums__WEBPACK_IMPORTED_MODULE_21__["SaveSettingsStep"].Idle);
}, 1000);
__themeAjax = null;
};
var themeStyle = $__WEBPACK_IMPORTED_MODULE_16___default()('#app-theme-style'),
url = themeLink.attr('href');
if (!url) {
url = themeStyle.attr('data-href');
}
if (url) {
url = url.toString().replace(/\/-\/[^/]+\/-\//, '/-/' + value + '/-/');
url = url.replace(/\/Css\/[^/]+\/User\//, '/Css/0/User/');
url = url.replace(/\/Hash\/[^/]+\//, '/Hash/-/');
if ('Json/' !== url.substring(url.length - 5, url.length)) {
url += 'Json/';
}
window__WEBPACK_IMPORTED_MODULE_15___default.a.clearTimeout(__themeTimer);
themeTrigger(Common_Enums__WEBPACK_IMPORTED_MODULE_21__["SaveSettingsStep"].Animate);
if (__themeAjax && __themeAjax.abort) {
__themeAjax.abort();
}
__themeAjax = $__WEBPACK_IMPORTED_MODULE_16___default.a.ajax({
url: url,
dataType: 'json'
}).then(function (data) {
if (data && isArray(data) && 2 === data.length) {
if (themeLink && themeLink[0] && (!themeStyle || !themeStyle[0])) {
themeStyle = $__WEBPACK_IMPORTED_MODULE_16___default()('<style id="app-theme-style"></style>');
themeLink.after(themeStyle);
themeLink.remove();
}
if (themeStyle && themeStyle[0]) {
if (appendStyles(themeStyle, data[1])) {
themeStyle.attr('data-href', url).attr('data-theme', data[0]);
}
}
themeTrigger(Common_Enums__WEBPACK_IMPORTED_MODULE_21__["SaveSettingsStep"].TrueResult);
}
}).then(clearTimer, clearTimer);
}
}
/**
* @returns {function}
*/
function computedPagenatorHelper(koCurrentPage, koPageCount) {
return function () {
var currentPage = koCurrentPage(),
pageCount = koPageCount(),
result = [],
fAdd = function fAdd(index, push, customName) {
if (push === void 0) {
push = true;
}
if (customName === void 0) {
customName = '';
}
var data = {
current: index === currentPage,
name: '' === customName ? index.toString() : customName.toString(),
custom: '' !== customName,
title: '' === customName ? '' : index.toString(),
value: index.toString()
};
if (push) {
result.push(data);
} else {
result.unshift(data);
}
};
var prev = 0,
next = 0,
limit = 2;
if (1 < pageCount || 0 < pageCount && pageCount < currentPage) {
if (pageCount < currentPage) {
fAdd(pageCount);
prev = pageCount;
next = pageCount;
} else {
if (3 >= currentPage || pageCount - 2 <= currentPage) {
limit += 2;
}
fAdd(currentPage);
prev = currentPage;
next = currentPage;
}
while (0 < limit) {
prev -= 1;
next += 1;
if (0 < prev) {
fAdd(prev, false);
limit -= 1;
}
if (pageCount >= next) {
fAdd(next, true);
limit -= 1;
} else if (0 >= prev) {
break;
}
}
if (3 === prev) {
fAdd(2, false);
} else if (3 < prev) {
fAdd(Math.round((prev - 1) / 2), false, '...');
}
if (pageCount - 2 === next) {
fAdd(pageCount - 1, true);
} else if (pageCount - 2 > next) {
fAdd(Math.round((pageCount + next) / 2), true, '...');
} // first and last
if (1 < prev) {
fAdd(1, false);
}
if (pageCount > next) {
fAdd(pageCount, true);
}
}
return result;
};
}
/**
* @param {string} fileName
* @returns {string}
*/
function getFileExtension(fileName) {
fileName = trim(fileName).toLowerCase();
var result = fileName.split('.').pop();
return result === fileName ? '' : result;
}
/**
* @param {string} fileName
* @returns {string}
*/
function mimeContentType(fileName) {
var ext = '',
result = 'application/octet-stream';
fileName = trim(fileName).toLowerCase();
if ('winmail.dat' === fileName) {
return 'application/ms-tnef';
}
ext = getFileExtension(fileName);
if (ext && 0 < ext.length && !isUnd(Common_Mime__WEBPACK_IMPORTED_MODULE_22__[/* Mime */ "a"][ext])) {
result = Common_Mime__WEBPACK_IMPORTED_MODULE_22__[/* Mime */ "a"][ext];
}
return result;
}
/**
* @param {string} color
* @returns {boolean}
*/
function isTransparent(color) {
return 'rgba(0, 0, 0, 0)' === color || 'transparent' === color;
}
/**
* @param {Object} $el
* @returns {number}
*/
function getRealHeight($el) {
$el.clone().show().appendTo(Common_Globals__WEBPACK_IMPORTED_MODULE_20__["$hcont"]);
var result = Common_Globals__WEBPACK_IMPORTED_MODULE_20__["$hcont"].height();
Common_Globals__WEBPACK_IMPORTED_MODULE_20__["$hcont"].empty();
return result;
}
/**
* @param {string} url
* @param {number} value
* @param {Function} fCallback
*/
function resizeAndCrop(url, value, fCallback) {
var img = new window__WEBPACK_IMPORTED_MODULE_15___default.a.Image();
img.onload = function () {
var diff = [0, 0];
var canvas = window__WEBPACK_IMPORTED_MODULE_15___default.a.document.createElement('canvas'),
ctx = canvas.getContext('2d');
canvas.width = value;
canvas.height = value;
if (this.width > this.height) {
diff = [this.width - this.height, 0];
} else {
diff = [0, this.height - this.width];
}
ctx.fillStyle = '#fff';
ctx.fillRect(0, 0, value, value);
ctx.drawImage(this, diff[0] / 2, diff[1] / 2, this.width - diff[0], this.height - diff[1], 0, 0, value, value);
fCallback(canvas.toDataURL('image/jpeg'));
};
img.src = url;
}
/**
* @param {string} mailToUrl
* @param {Function} PopupComposeViewModel
* @returns {boolean}
*/
function mailToHelper(mailToUrl, PopupComposeViewModel) {
if (mailToUrl && 'mailto:' === mailToUrl.toString().substr(0, 7).toLowerCase()) {
if (!PopupComposeViewModel) {
return true;
}
mailToUrl = mailToUrl.toString().substr(7);
var to = [],
cc = null,
bcc = null,
params = {};
var email = mailToUrl.replace(/\?.+$/, ''),
query = mailToUrl.replace(/^[^?]*\?/, ''),
EmailModel = __webpack_require__(/*! Model/Email */ 82).default;
params = simpleQueryParser(query);
if (!isUnd(params.to)) {
to = EmailModel.parseEmailLine(decodeURIComponent(email + ',' + params.to));
to = _babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_13___default()(___WEBPACK_IMPORTED_MODULE_17___default.a).call(___WEBPACK_IMPORTED_MODULE_17___default.a, _babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_14___default()(to).call(to, function (result, value) {
if (value) {
if (result[value.email]) {
if (!result[value.email].name) {
result[value.email] = value;
}
} else {
result[value.email] = value;
}
}
return result;
}, {}));
} else {
to = EmailModel.parseEmailLine(email);
}
if (!isUnd(params.cc)) {
cc = EmailModel.parseEmailLine(decodeURIComponent(params.cc));
}
if (!isUnd(params.bcc)) {
bcc = EmailModel.parseEmailLine(decodeURIComponent(params.bcc));
}
__webpack_require__(/*! Knoin/Knoin */ 8).showScreenPopup(PopupComposeViewModel, [Common_Enums__WEBPACK_IMPORTED_MODULE_21__["ComposeType"].Empty, null, to, cc, bcc, isUnd(params.subject) ? null : pString(decodeURIComponent(params.subject)), isUnd(params.body) ? null : plainToHtml(pString(decodeURIComponent(params.body)))]);
return true;
}
return false;
}
/**
* @param {Function} fn
* @returns {void}
*/
function domReady(fn) {
$__WEBPACK_IMPORTED_MODULE_16___default()(function () {
return fn();
}); //
// if ('loading' !== window.document.readyState)
// {
// fn();
// }
// else
// {
// window.document.addEventListener('DOMContentLoaded', fn);
// }
}
var windowResize = ___WEBPACK_IMPORTED_MODULE_17___default.a.debounce(function (timeout) {
if (isUnd(timeout) || isNull(timeout)) {
Common_Globals__WEBPACK_IMPORTED_MODULE_20__["$win"].resize();
} else {
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_10___default()(function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_20__["$win"].resize();
}, timeout);
}
}, 50);
/**
* @returns {void}
*/
function windowResizeCallback() {
windowResize();
}
var substr = window__WEBPACK_IMPORTED_MODULE_15___default.a.String.substr;
if ('b' !== 'ab'.substr(-1)) {
substr = function substr(str, start, length) {
start = 0 > start ? str.length + start : start;
return str.substr(start, length);
};
window__WEBPACK_IMPORTED_MODULE_15___default.a.String.substr = substr;
}
/***/ }),
/* 3 */
/*!***************************!*\
!*** external "window._" ***!
\***************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window._;
/***/ }),
/* 4 */
/*!*************************!*\
!*** external "window" ***!
\*************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window;
/***/ }),
/* 5 */
/*!*********************************!*\
!*** ./dev/Storage/Settings.js ***!
\*********************************/
/*! exports provided: settingsGet, settingsSet, appSettingsGet, capa */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settingsGet", function() { return settingsGet; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settingsSet", function() { return settingsSet; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appSettingsGet", function() { return appSettingsGet; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "capa", function() { return capa; });
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
var SETTINGS = window__WEBPACK_IMPORTED_MODULE_0___default.a.__rlah_data() || null;
SETTINGS = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isNormal"])(SETTINGS) ? SETTINGS : {};
var APP_SETTINGS = SETTINGS.System || null;
APP_SETTINGS = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isNormal"])(APP_SETTINGS) ? APP_SETTINGS : {};
/**
* @param {string} name
* @returns {*}
*/
function settingsGet(name) {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(SETTINGS[name]) ? null : SETTINGS[name];
}
/**
* @param {string} name
* @param {*} value
*/
function settingsSet(name, value) {
SETTINGS[name] = value;
}
/**
* @param {string} name
* @returns {*}
*/
function appSettingsGet(name) {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(APP_SETTINGS[name]) ? null : APP_SETTINGS[name];
}
/**
* @param {string} name
* @returns {boolean}
*/
function capa(name) {
var values = settingsGet('Capa');
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isArray"])(values) && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isNormal"])(name) && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["inArray"])(name, values);
}
/***/ }),
/* 6 */
/*!*******************************!*\
!*** ./dev/Common/Globals.js ***!
\*******************************/
/*! exports provided: $win, $doc, $html, $body, $div, $hcont, startMicrotime, dropdownVisibility, useKeyboardShortcuts, sUserAgent, bIE, bChrome, bSafari, bMobileDevice, bDisableNanoScroll, bAnimationSupported, bXMLHttpRequestSupported, bIsHttps, htmlEditorDefaultConfig, htmlEditorLangsMap, bAllowPdfPreview, VIEW_MODELS, moveAction, leftPanelDisabled, leftPanelType, leftPanelWidth, popupVisibilityNames, popupVisibility, keyScopeReal, keyScopeFake, keyScope, data */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$win", function() { return $win; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$doc", function() { return $doc; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$html", function() { return $html; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$body", function() { return $body; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$div", function() { return $div; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$hcont", function() { return $hcont; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startMicrotime", function() { return startMicrotime; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dropdownVisibility", function() { return dropdownVisibility; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useKeyboardShortcuts", function() { return useKeyboardShortcuts; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sUserAgent", function() { return sUserAgent; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bIE", function() { return bIE; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bChrome", function() { return bChrome; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bSafari", function() { return bSafari; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bMobileDevice", function() { return bMobileDevice; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bDisableNanoScroll", function() { return bDisableNanoScroll; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bAnimationSupported", function() { return bAnimationSupported; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bXMLHttpRequestSupported", function() { return bXMLHttpRequestSupported; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bIsHttps", function() { return bIsHttps; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "htmlEditorDefaultConfig", function() { return htmlEditorDefaultConfig; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "htmlEditorLangsMap", function() { return htmlEditorLangsMap; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bAllowPdfPreview", function() { return bAllowPdfPreview; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VIEW_MODELS", function() { return VIEW_MODELS; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "moveAction", function() { return moveAction; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "leftPanelDisabled", function() { return leftPanelDisabled; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "leftPanelType", function() { return leftPanelType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "leftPanelWidth", function() { return leftPanelWidth; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popupVisibilityNames", function() { return popupVisibilityNames; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popupVisibility", function() { return popupVisibility; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyScopeReal", function() { return keyScopeReal; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyScopeFake", function() { return keyScopeFake; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyScope", function() { return keyScope; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "data", function() { return data; });
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 314);
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Enums */ 0);
var $win = $__WEBPACK_IMPORTED_MODULE_4___default()(window__WEBPACK_IMPORTED_MODULE_2___default.a);
$win.__sizes = [0, 0];
var $doc = $__WEBPACK_IMPORTED_MODULE_4___default()(window__WEBPACK_IMPORTED_MODULE_2___default.a.document);
var $html = $__WEBPACK_IMPORTED_MODULE_4___default()('html');
var $body = $__WEBPACK_IMPORTED_MODULE_4___default()('body');
var $div = $__WEBPACK_IMPORTED_MODULE_4___default()('<div></div>');
var $hcont = $__WEBPACK_IMPORTED_MODULE_4___default()('<div></div>');
$hcont.attr('area', 'hidden').css({
position: 'absolute',
left: -5000
}).appendTo($body);
var startMicrotime = new window__WEBPACK_IMPORTED_MODULE_2___default.a.Date().getTime();
/**
* @type {?}
*/
var dropdownVisibility = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false).extend({
rateLimit: 0
});
/**
* @type {boolean}
*/
var useKeyboardShortcuts = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(true);
/**
* @type {string}
*/
var sUserAgent = 'navigator' in window__WEBPACK_IMPORTED_MODULE_2___default.a && 'userAgent' in window__WEBPACK_IMPORTED_MODULE_2___default.a.navigator && window__WEBPACK_IMPORTED_MODULE_2___default.a.navigator.userAgent.toLowerCase() || '';
/**
* @type {boolean}
*/
var bIE = -1 < sUserAgent.indexOf('msie');
/**
* @type {boolean}
*/
var bChrome = -1 < sUserAgent.indexOf('chrome');
/**
* @type {boolean}
*/
var bSafari = !bChrome && -1 < sUserAgent.indexOf('safari');
/**
* @type {boolean}
*/
var bMobileDevice = /android/i.test(sUserAgent) || /iphone/i.test(sUserAgent) || /ipod/i.test(sUserAgent) || /ipad/i.test(sUserAgent) || /blackberry/i.test(sUserAgent);
/**
* @type {boolean}
*/
var bDisableNanoScroll = bMobileDevice;
/**
* @type {boolean}
*/
var bAnimationSupported = !bMobileDevice && $html.hasClass('csstransitions') && $html.hasClass('cssanimations');
/**
* @type {boolean}
*/
var bXMLHttpRequestSupported = !!window__WEBPACK_IMPORTED_MODULE_2___default.a.XMLHttpRequest;
/**
* @type {boolean}
*/
var bIsHttps = window__WEBPACK_IMPORTED_MODULE_2___default.a.document && window__WEBPACK_IMPORTED_MODULE_2___default.a.document.location ? 'https:' === window__WEBPACK_IMPORTED_MODULE_2___default.a.document.location.protocol : false;
/**
* @type {Object}
*/
var htmlEditorDefaultConfig = {
'title': false,
'stylesSet': false,
'customConfig': '',
'contentsCss': '',
'toolbarGroups': [{
name: 'spec'
}, {
name: 'styles'
}, {
name: 'basicstyles',
groups: ['basicstyles', 'cleanup', 'bidi']
}, {
name: 'colors'
}, bMobileDevice ? {} : {
name: 'paragraph',
groups: ['list', 'indent', 'blocks', 'align']
}, {
name: 'links'
}, {
name: 'insert'
}, {
name: 'document',
groups: ['mode', 'document', 'doctools']
}, {
name: 'others'
}],
'removePlugins': 'liststyle',
'removeButtons': 'Format,Undo,Redo,Cut,Copy,Paste,Anchor,Strike,Subscript,Superscript,Image,SelectAll,Source',
'removeDialogTabs': 'link:advanced;link:target;image:advanced;images:advanced',
'extraPlugins': 'plain,signature',
'allowedContent': true,
'extraAllowedContent': true,
'fillEmptyBlocks': false,
'ignoreEmptyParagraph': true,
'disableNativeSpellChecker': false,
'colorButton_enableAutomatic': false,
'colorButton_enableMore': true,
'font_defaultLabel': 'Arial',
'fontSize_defaultLabel': '13',
'fontSize_sizes': '10/10px;12/12px;13/13px;14/14px;16/16px;18/18px;20/20px;24/24px;28/28px;36/36px;48/48px'
};
/**
* @type {Object}
*/
var htmlEditorLangsMap = {
'ar_sa': 'ar-sa',
'bg_bg': 'bg',
'cs_CZ': 'cs',
'de_de': 'de',
'el_gr': 'el',
'es_es': 'es',
'et_ee': 'et',
'fr_fr': 'fr',
'hu_hu': 'hu',
'is_is': 'is',
'it_it': 'it',
'ja_jp': 'ja',
'ko_kr': 'ko',
'lt_lt': 'lt',
'lv_lv': 'lv',
'fa_ir': 'fa',
'nb_no': 'nb',
'nl_nl': 'nl',
'pl_pl': 'pl',
'pt_br': 'pt-br',
'pt_pt': 'pt',
'ro_ro': 'ro',
'ru_ru': 'ru',
'sk_sk': 'sk',
'sl_si': 'sl',
'sv_se': 'sv',
'tr_tr': 'tr',
'uk_ua': 'uk',
'zh_cn': 'zh-cn',
'zh_tw': 'zh'
};
/**
* @type {boolean}
*/
var bAllowPdfPreview = !bMobileDevice;
if (bAllowPdfPreview && window__WEBPACK_IMPORTED_MODULE_2___default.a.navigator && window__WEBPACK_IMPORTED_MODULE_2___default.a.navigator.mimeTypes) {
bAllowPdfPreview = !!_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_3___default.a).call(___WEBPACK_IMPORTED_MODULE_3___default.a, window__WEBPACK_IMPORTED_MODULE_2___default.a.navigator.mimeTypes, function (type) {
return type && 'application/pdf' === type.type;
});
if (!bAllowPdfPreview) {
bAllowPdfPreview = 'undefined' !== typeof window__WEBPACK_IMPORTED_MODULE_2___default.a.navigator.mimeTypes['application/pdf'];
}
}
var VIEW_MODELS = {
settings: [],
'settings-removed': [],
'settings-disabled': []
};
var moveAction = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
var leftPanelDisabled = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
var leftPanelType = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable('');
var leftPanelWidth = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(0);
leftPanelDisabled.subscribe(function (value) {
if (value && moveAction()) {
moveAction(false);
}
});
moveAction.subscribe(function (value) {
if (value && leftPanelDisabled()) {
leftPanelDisabled(false);
}
}); // popups
var popupVisibilityNames = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observableArray([]);
var popupVisibility = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].computed(function () {
return 0 < popupVisibilityNames().length;
});
popupVisibility.subscribe(function (bValue) {
$html.toggleClass('rl-modal', bValue);
}); // keys
var keyScopeReal = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["KeyState"].All);
var keyScopeFake = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["KeyState"].All);
var keyScope = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].computed({
read: function read() {
return keyScopeFake();
},
write: function write(value) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_7__["KeyState"].Menu !== value) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_7__["KeyState"].Compose === value) {
// disableKeyFilter
key__WEBPACK_IMPORTED_MODULE_5___default.a.filter = function () {
return useKeyboardShortcuts();
};
} else {
// restoreKeyFilter
key__WEBPACK_IMPORTED_MODULE_5___default.a.filter = function (event) {
if (useKeyboardShortcuts()) {
var el = event.target || event.srcElement,
tagName = el ? el.tagName.toUpperCase() : '';
return !('INPUT' === tagName || 'SELECT' === tagName || 'TEXTAREA' === tagName || el && 'DIV' === tagName && ('editorHtmlArea' === el.className || 'true' === '' + el.contentEditable));
}
return false;
};
}
keyScopeFake(value);
if (dropdownVisibility()) {
value = Common_Enums__WEBPACK_IMPORTED_MODULE_7__["KeyState"].Menu;
}
}
keyScopeReal(value);
}
});
keyScopeReal.subscribe(function (value) {
// window.console.log('keyScope=' + sValue); // DEBUG
key__WEBPACK_IMPORTED_MODULE_5___default.a.setScope(value);
});
dropdownVisibility.subscribe(function (value) {
if (value) {
keyScope(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["KeyState"].Menu);
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_7__["KeyState"].Menu === key__WEBPACK_IMPORTED_MODULE_5___default.a.getScope()) {
keyScope(keyScopeFake());
}
});
/**
* @type {*}
*/
var data = {
__APP__: null,
iAjaxErrorCount: 0,
iTokenErrorCount: 0,
aBootstrapDropdowns: [],
iMessageBodyCacheCount: 0,
bUnload: false
};
/***/ }),
/* 7 */
/*!********************************!*\
!*** external "window.jQuery" ***!
\********************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.jQuery;
/***/ }),
/* 8 */
/*!****************************!*\
!*** ./dev/Knoin/Knoin.js ***!
\****************************/
/*! exports provided: ViewType, hideLoading, createCommand, addSettingsViewModel, removeSettingsViewModel, disableSettingsViewModel, routeOff, routeOn, screen, getScreenPopup, hideScreenPopup, vmRunHook, buildViewModel, showScreenPopup, warmUpScreenPopup, isPopupVisible, screenOnRoute, startScreens, setHash, commandDecorator, command, viewDecorator, view, viewModel, popupDecorator, popup, settingsMenuKeysHandler */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ViewType", function() { return ViewType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hideLoading", function() { return hideLoading; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createCommand", function() { return createCommand; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSettingsViewModel", function() { return addSettingsViewModel; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeSettingsViewModel", function() { return removeSettingsViewModel; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "disableSettingsViewModel", function() { return disableSettingsViewModel; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "routeOff", function() { return routeOff; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "routeOn", function() { return routeOn; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "screen", function() { return screen; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScreenPopup", function() { return getScreenPopup; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hideScreenPopup", function() { return hideScreenPopup; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "vmRunHook", function() { return vmRunHook; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buildViewModel", function() { return buildViewModel; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showScreenPopup", function() { return showScreenPopup; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "warmUpScreenPopup", function() { return warmUpScreenPopup; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPopupVisible", function() { return isPopupVisible; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "screenOnRoute", function() { return screenOnRoute; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startScreens", function() { return startScreens; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHash", function() { return setHash; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "commandDecorator", function() { return commandDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "command", function() { return commandDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "viewDecorator", function() { return viewDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "view", function() { return viewDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "viewModel", function() { return viewDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popupDecorator", function() { return popupDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "popup", function() { return popupDecorator; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "settingsMenuKeysHandler", function() { return settingsMenuKeysHandler; });
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 224);
/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var hasher__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! hasher */ 63);
/* harmony import */ var hasher__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(hasher__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var crossroads__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! crossroads */ 176);
/* harmony import */ var crossroads__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(crossroads__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Plugins */ 36);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Utils */ 2);
var currentScreen = null,
defaultScreenName = '';
var SCREENS = {};
var ViewType = {
Popup: 'Popups',
Left: 'Left',
Right: 'Right',
Center: 'Center'
};
/**
* @returns {void}
*/
function hideLoading() {
$__WEBPACK_IMPORTED_MODULE_5___default()('#rl-content').addClass('rl-content-show');
$__WEBPACK_IMPORTED_MODULE_5___default()('#rl-loading').hide().remove();
}
/**
* @param {Function} fExecute
* @param {(Function|boolean|null)=} fCanExecute = true
* @returns {Function}
*/
function createCommand(fExecute, fCanExecute) {
if (fCanExecute === void 0) {
fCanExecute = true;
}
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["createCommandLegacy"])(null, fExecute, fCanExecute);
}
/**
* @param {Function} SettingsViewModelClass
* @param {string} template
* @param {string} labelName
* @param {string} route
* @param {boolean=} isDefault = false
* @returns {void}
*/
function addSettingsViewModel(SettingsViewModelClass, template, labelName, route, isDefault) {
if (isDefault === void 0) {
isDefault = false;
}
SettingsViewModelClass.__rlSettingsData = {
Label: labelName,
Template: template,
Route: route,
IsDefault: !!isDefault
};
Common_Globals__WEBPACK_IMPORTED_MODULE_11__["VIEW_MODELS"].settings.push(SettingsViewModelClass);
}
/**
* @param {Function} SettingsViewModelClass
* @returns {void}
*/
function removeSettingsViewModel(SettingsViewModelClass) {
Common_Globals__WEBPACK_IMPORTED_MODULE_11__["VIEW_MODELS"]['settings-removed'].push(SettingsViewModelClass);
}
/**
* @param {Function} SettingsViewModelClass
* @returns {void}
*/
function disableSettingsViewModel(SettingsViewModelClass) {
Common_Globals__WEBPACK_IMPORTED_MODULE_11__["VIEW_MODELS"]['settings-disabled'].push(SettingsViewModelClass);
}
/**
* @returns {void}
*/
function routeOff() {
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.changed.active = false;
}
/**
* @returns {void}
*/
function routeOn() {
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.changed.active = true;
}
/**
* @param {string} screenName
* @returns {?Object}
*/
function screen(screenName) {
return '' !== screenName && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["isUnd"])(SCREENS[screenName]) ? SCREENS[screenName] : null;
}
/**
* @param {Function} ViewModelClassToShow
* @returns {Function|null}
*/
function getScreenPopup(PopuViewModelClass) {
var result = null;
if (PopuViewModelClass) {
result = PopuViewModelClass;
if (PopuViewModelClass.default) {
result = PopuViewModelClass.default;
}
}
return result;
}
/**
* @param {Function} ViewModelClassToHide
* @returns {void}
*/
function hideScreenPopup(ViewModelClassToHide) {
var ModalView = getScreenPopup(ViewModelClassToHide);
if (ModalView && ModalView.__vm && ModalView.__dom) {
ModalView.__vm.modalVisibility(false);
}
}
/**
* @param {string} hookName
* @param {Function} ViewModelClass
* @param {mixed=} params = null
*/
function vmRunHook(hookName, ViewModelClass, params) {
if (params === void 0) {
params = null;
}
___WEBPACK_IMPORTED_MODULE_4___default.a.each(ViewModelClass.__names, function (name) {
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_10__[/* runHook */ "f"])(hookName, [name, ViewModelClass.__vm, params]);
});
}
/**
* @param {Function} ViewModelClass
* @param {Object=} vmScreen
* @returns {*}
*/
function buildViewModel(ViewModelClass, vmScreen) {
if (ViewModelClass && !ViewModelClass.__builded) {
var vmDom = null;
var vm = new ViewModelClass(vmScreen),
position = ViewModelClass.__type || '',
vmPlace = position ? $__WEBPACK_IMPORTED_MODULE_5___default()('#rl-content #rl-' + position.toLowerCase()) : null;
ViewModelClass.__builded = true;
ViewModelClass.__vm = vm;
vm.onShowTrigger = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
vm.onHideTrigger = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
vm.viewModelName = ViewModelClass.__name;
vm.viewModelNames = ViewModelClass.__names;
vm.viewModelTemplateID = ViewModelClass.__templateID;
vm.viewModelPosition = ViewModelClass.__type;
if (vmPlace && 1 === vmPlace.length) {
vmDom = $__WEBPACK_IMPORTED_MODULE_5___default()('<div></div>').addClass('rl-view-model').addClass('RL-' + vm.viewModelTemplateID).hide();
vmDom.appendTo(vmPlace);
vm.viewModelDom = vmDom;
ViewModelClass.__dom = vmDom;
if (ViewType.Popup === position) {
vm.cancelCommand = vm.closeCommand = createCommand(function () {
hideScreenPopup(ViewModelClass);
});
vm.modalVisibility.subscribe(function (value) {
if (value) {
vm.viewModelDom.show();
vm.storeAndSetKeyScope();
Common_Globals__WEBPACK_IMPORTED_MODULE_11__["popupVisibilityNames"].push(vm.viewModelName);
vm.viewModelDom.css('z-index', 3000 + Object(Common_Globals__WEBPACK_IMPORTED_MODULE_11__["popupVisibilityNames"])().length + 10);
if (vm.onShowTrigger) {
vm.onShowTrigger(!vm.onShowTrigger());
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(vm, 'onShowWithDelay', [], 500);
} else {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(vm, 'onHide');
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(vm, 'onHideWithDelay', [], 500);
if (vm.onHideTrigger) {
vm.onHideTrigger(!vm.onHideTrigger());
}
vm.restoreKeyScope();
vmRunHook('view-model-on-hide', ViewModelClass);
Common_Globals__WEBPACK_IMPORTED_MODULE_11__["popupVisibilityNames"].remove(vm.viewModelName);
vm.viewModelDom.css('z-index', 2000);
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
return vm.viewModelDom.hide();
}, 300);
}
});
}
vmRunHook('view-model-pre-build', ViewModelClass, vmDom);
ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].applyBindingAccessorsToNode(vmDom[0], {
translatorInit: true,
template: function template() {
return {
name: vm.viewModelTemplateID
};
}
}, vm);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(vm, 'onBuild', [vmDom]);
if (vm && ViewType.Popup === position) {
vm.registerPopupKeyDown();
}
vmRunHook('view-model-post-build', ViewModelClass, vmDom);
} else {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["log"])('Cannot find view model position: ' + position);
}
}
return ViewModelClass ? ViewModelClass.__vm : null;
}
/**
* @param {Function} ViewModelClassToShow
* @param {Array=} params
* @returns {void}
*/
function showScreenPopup(ViewModelClassToShow, params) {
if (params === void 0) {
params = [];
}
var ModalView = getScreenPopup(ViewModelClassToShow);
if (ModalView) {
buildViewModel(ModalView);
if (ModalView.__vm && ModalView.__dom) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ModalView.__vm, 'onBeforeShow', params || []);
ModalView.__vm.modalVisibility(true);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ModalView.__vm, 'onShow', params || []);
vmRunHook('view-model-on-show', ModalView, params || []);
}
}
}
/**
* @param {Function} ViewModelClassToShow
* @returns {void}
*/
function warmUpScreenPopup(ViewModelClassToShow) {
var ModalView = getScreenPopup(ViewModelClassToShow);
if (ModalView) {
buildViewModel(ModalView);
if (ModalView.__vm && ModalView.__dom) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ModalView.__vm, 'onWarmUp');
}
}
}
/**
* @param {Function} ViewModelClassToShow
* @returns {boolean}
*/
function isPopupVisible(ViewModelClassToShow) {
var ModalView = getScreenPopup(ViewModelClassToShow);
return ModalView && ModalView.__vm ? ModalView.__vm.modalVisibility() : false;
}
/**
* @param {string} screenName
* @param {string} subPart
* @returns {void}
*/
function screenOnRoute(screenName, subPart) {
var vmScreen = null,
isSameScreen = false,
cross = null;
if ('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["pString"])(screenName)) {
screenName = defaultScreenName;
}
if ('' !== screenName) {
vmScreen = screen(screenName);
if (!vmScreen) {
vmScreen = screen(defaultScreenName);
if (vmScreen) {
subPart = screenName + '/' + subPart;
screenName = defaultScreenName;
}
}
if (vmScreen && vmScreen.__started) {
isSameScreen = currentScreen && vmScreen === currentScreen;
if (!vmScreen.__builded) {
vmScreen.__builded = true;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["isNonEmptyArray"])(vmScreen.viewModels())) {
___WEBPACK_IMPORTED_MODULE_4___default.a.each(vmScreen.viewModels(), function (ViewModelClass) {
buildViewModel(ViewModelClass, vmScreen);
});
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(vmScreen, 'onBuild');
}
___WEBPACK_IMPORTED_MODULE_4___default.a.defer(function () {
// hide screen
if (currentScreen && !isSameScreen) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(currentScreen, 'onHide');
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(currentScreen, 'onHideWithDelay', [], 500);
if (currentScreen.onHideTrigger) {
currentScreen.onHideTrigger(!currentScreen.onHideTrigger());
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["isNonEmptyArray"])(currentScreen.viewModels())) {
___WEBPACK_IMPORTED_MODULE_4___default.a.each(currentScreen.viewModels(), function (ViewModelClass) {
if (ViewModelClass.__vm && ViewModelClass.__dom && ViewType.Popup !== ViewModelClass.__vm.viewModelPosition) {
ViewModelClass.__dom.hide();
ViewModelClass.__vm.viewModelVisibility(false);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ViewModelClass.__vm, 'onHide');
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ViewModelClass.__vm, 'onHideWithDelay', [], 500);
if (ViewModelClass.__vm.onHideTrigger) {
ViewModelClass.__vm.onHideTrigger(!ViewModelClass.__vm.onHideTrigger());
}
}
});
}
} // --
currentScreen = vmScreen; // show screen
if (currentScreen && !isSameScreen) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(currentScreen, 'onShow');
if (currentScreen.onShowTrigger) {
currentScreen.onShowTrigger(!currentScreen.onShowTrigger());
}
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_10__[/* runHook */ "f"])('screen-on-show', [currentScreen.screenName(), currentScreen]);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["isNonEmptyArray"])(currentScreen.viewModels())) {
___WEBPACK_IMPORTED_MODULE_4___default.a.each(currentScreen.viewModels(), function (ViewModelClass) {
if (ViewModelClass.__vm && ViewModelClass.__dom && ViewType.Popup !== ViewModelClass.__vm.viewModelPosition) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ViewModelClass.__vm, 'onBeforeShow');
ViewModelClass.__dom.show();
ViewModelClass.__vm.viewModelVisibility(true);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ViewModelClass.__vm, 'onShow');
if (ViewModelClass.__vm.onShowTrigger) {
ViewModelClass.__vm.onShowTrigger(!ViewModelClass.__vm.onShowTrigger());
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(ViewModelClass.__vm, 'onShowWithDelay', [], 200);
vmRunHook('view-model-on-show', ViewModelClass);
}
});
}
} // --
cross = vmScreen && vmScreen.__cross ? vmScreen.__cross() : null;
if (cross) {
cross.parse(subPart);
}
});
}
}
}
/**
* @param {Array} screensClasses
* @returns {void}
*/
function startScreens(screensClasses) {
___WEBPACK_IMPORTED_MODULE_4___default.a.each(screensClasses, function (CScreen) {
if (CScreen) {
var vmScreen = new CScreen(),
screenName = vmScreen ? vmScreen.screenName() : '';
if (vmScreen && '' !== screenName) {
if ('' === defaultScreenName) {
defaultScreenName = screenName;
}
SCREENS[screenName] = vmScreen;
}
}
});
___WEBPACK_IMPORTED_MODULE_4___default.a.each(SCREENS, function (vmScreen) {
if (vmScreen && !vmScreen.__started && vmScreen.__start) {
vmScreen.__started = true;
vmScreen.__start();
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_10__[/* runHook */ "f"])('screen-pre-start', [vmScreen.screenName(), vmScreen]);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["delegateRun"])(vmScreen, 'onStart');
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_10__[/* runHook */ "f"])('screen-post-start', [vmScreen.screenName(), vmScreen]);
}
});
var cross = crossroads__WEBPACK_IMPORTED_MODULE_8___default.a.create();
cross.addRoute(/^([a-zA-Z0-9-]*)\/?(.*)$/, screenOnRoute);
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.initialized.add(cross.parse, cross);
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.changed.add(cross.parse, cross);
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.init();
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
return Common_Globals__WEBPACK_IMPORTED_MODULE_11__["$html"].removeClass('rl-started-trigger').addClass('rl-started');
}, 100);
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
return Common_Globals__WEBPACK_IMPORTED_MODULE_11__["$html"].addClass('rl-started-delay');
}, 200);
}
/**
* @param {string} sHash
* @param {boolean=} silence = false
* @param {boolean=} replace = false
* @returns {void}
*/
function setHash(hash, silence, replace) {
if (silence === void 0) {
silence = false;
}
if (replace === void 0) {
replace = false;
}
hash = '#' === hash.substr(0, 1) ? hash.substr(1) : hash;
hash = '/' === hash.substr(0, 1) ? hash.substr(1) : hash;
var cmd = replace ? 'replaceHash' : 'setHash';
if (silence) {
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.changed.active = false;
hasher__WEBPACK_IMPORTED_MODULE_7___default.a[cmd](hash);
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.changed.active = true;
} else {
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.changed.active = true;
hasher__WEBPACK_IMPORTED_MODULE_7___default.a[cmd](hash);
hasher__WEBPACK_IMPORTED_MODULE_7___default.a.setHash(hash);
}
}
/**
* @param {Object} params
* @returns {Function}
*/
function viewDecorator(_ref) {
var name = _ref.name,
type = _ref.type,
templateID = _ref.templateID;
return function (target) {
if (target) {
if (name) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["isArray"])(name)) {
target.__names = name;
} else {
target.__names = [name];
}
target.__name = target.__names[0];
}
if (type) {
target.__type = type;
}
if (templateID) {
target.__templateID = templateID;
}
}
};
}
/**
* @param {Object} params
* @returns {Function}
*/
function popupDecorator(_ref2) {
var name = _ref2.name,
templateID = _ref2.templateID;
return viewDecorator({
name: name,
type: ViewType.Popup,
templateID: templateID
});
}
/**
* @param {Function} canExecute
* @returns {Function}
*/
function commandDecorator(canExecute) {
if (canExecute === void 0) {
canExecute = true;
}
return function (target, key, descriptor) {
if (!key || !key.match(/Command$/)) {
throw new Error("name \"" + key + "\" should end with Command suffix");
}
var value = descriptor.value || descriptor.initializer(),
normCanExecute = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_12__["isFunc"])(canExecute) ? canExecute : function () {
return !!canExecute;
};
descriptor.value = function () {
if (normCanExecute.call(this, this)) {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
value.apply(this, args);
}
return false;
};
descriptor.value.__realCanExecute = normCanExecute;
descriptor.value.isCommand = true;
return descriptor;
};
}
/**
* @param {miced} $items
* @returns {Function}
*/
function settingsMenuKeysHandler($items) {
return ___WEBPACK_IMPORTED_MODULE_4___default.a.throttle(function (event, handler) {
var up = handler && 'up' === handler.shortcut;
if (event && $items.length) {
var index = $items.index(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0___default()($items).call($items, '.selected'));
if (up && 0 < index) {
index -= 1;
} else if (!up && index < $items.length - 1) {
index += 1;
}
var resultHash = $items.eq(index).attr('href');
if (resultHash) {
setHash(resultHash, false, true);
}
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time200ms);
}
/***/ }),
/* 9 */
/*!**********************************!*\
!*** ./dev/Common/Translator.js ***!
\**********************************/
/*! exports provided: trigger, i18n, i18nToNodes, initNotificationLanguage, initOnStartOrLangChange, getNotification, getNotificationFromResponse, getUploadErrorDescByCode, reload */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trigger", function() { return trigger; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i18n", function() { return i18n; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i18nToNodes", function() { return i18nToNodes; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initNotificationLanguage", function() { return initNotificationLanguage; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initOnStartOrLangChange", function() { return initOnStartOrLangChange; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNotification", function() { return getNotification; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNotificationFromResponse", function() { return getNotificationFromResponse; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getUploadErrorDescByCode", function() { return getUploadErrorDescByCode; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reload", function() { return reload; });
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ 62);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 151);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Momentor__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Momentor */ 61);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Links */ 15);
var I18N_DATA = window__WEBPACK_IMPORTED_MODULE_4___default.a.rainloopI18N || {};
var I18N_NOTIFICATION_DATA = {};
var I18N_NOTIFICATION_MAP = [[Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].InvalidToken, 'NOTIFICATIONS/INVALID_TOKEN'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].InvalidToken, 'NOTIFICATIONS/INVALID_TOKEN'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].AuthError, 'NOTIFICATIONS/AUTH_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].AccessError, 'NOTIFICATIONS/ACCESS_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].ConnectionError, 'NOTIFICATIONS/CONNECTION_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CaptchaError, 'NOTIFICATIONS/CAPTCHA_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].SocialFacebookLoginAccessDisable, 'NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].SocialTwitterLoginAccessDisable, 'NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].SocialGoogleLoginAccessDisable, 'NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].DomainNotAllowed, 'NOTIFICATIONS/DOMAIN_NOT_ALLOWED'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].AccountNotAllowed, 'NOTIFICATIONS/ACCOUNT_NOT_ALLOWED'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].AccountTwoFactorAuthRequired, 'NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].AccountTwoFactorAuthError, 'NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CouldNotSaveNewPassword, 'NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CurrentPasswordIncorrect, 'NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].NewPasswordShort, 'NOTIFICATIONS/NEW_PASSWORD_SHORT'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].NewPasswordWeak, 'NOTIFICATIONS/NEW_PASSWORD_WEAK'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].NewPasswordForbidden, 'NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].ContactsSyncError, 'NOTIFICATIONS/CONTACTS_SYNC_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantGetMessageList, 'NOTIFICATIONS/CANT_GET_MESSAGE_LIST'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantGetMessage, 'NOTIFICATIONS/CANT_GET_MESSAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantDeleteMessage, 'NOTIFICATIONS/CANT_DELETE_MESSAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantMoveMessage, 'NOTIFICATIONS/CANT_MOVE_MESSAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantCopyMessage, 'NOTIFICATIONS/CANT_MOVE_MESSAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantSaveMessage, 'NOTIFICATIONS/CANT_SAVE_MESSAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantSendMessage, 'NOTIFICATIONS/CANT_SEND_MESSAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].InvalidRecipients, 'NOTIFICATIONS/INVALID_RECIPIENTS'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantSaveFilters, 'NOTIFICATIONS/CANT_SAVE_FILTERS'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantGetFilters, 'NOTIFICATIONS/CANT_GET_FILTERS'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].FiltersAreNotCorrect, 'NOTIFICATIONS/FILTERS_ARE_NOT_CORRECT'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantCreateFolder, 'NOTIFICATIONS/CANT_CREATE_FOLDER'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantRenameFolder, 'NOTIFICATIONS/CANT_RENAME_FOLDER'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantDeleteFolder, 'NOTIFICATIONS/CANT_DELETE_FOLDER'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantDeleteNonEmptyFolder, 'NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantSubscribeFolder, 'NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantUnsubscribeFolder, 'NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantSaveSettings, 'NOTIFICATIONS/CANT_SAVE_SETTINGS'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantSavePluginSettings, 'NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].DomainAlreadyExists, 'NOTIFICATIONS/DOMAIN_ALREADY_EXISTS'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantInstallPackage, 'NOTIFICATIONS/CANT_INSTALL_PACKAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].CantDeletePackage, 'NOTIFICATIONS/CANT_DELETE_PACKAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].InvalidPluginPackage, 'NOTIFICATIONS/INVALID_PLUGIN_PACKAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].UnsupportedPluginPackage, 'NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].LicensingServerIsUnavailable, 'NOTIFICATIONS/LICENSING_SERVER_IS_UNAVAILABLE'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].LicensingExpired, 'NOTIFICATIONS/LICENSING_EXPIRED'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].LicensingBanned, 'NOTIFICATIONS/LICENSING_BANNED'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].DemoSendMessageError, 'NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].DemoAccountError, 'NOTIFICATIONS/DEMO_ACCOUNT_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].AccountAlreadyExists, 'NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].AccountDoesNotExist, 'NOTIFICATIONS/ACCOUNT_DOES_NOT_EXIST'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].MailServerError, 'NOTIFICATIONS/MAIL_SERVER_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].InvalidInputArgument, 'NOTIFICATIONS/INVALID_INPUT_ARGUMENT'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].UnknownNotification, 'NOTIFICATIONS/UNKNOWN_ERROR'], [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].UnknownError, 'NOTIFICATIONS/UNKNOWN_ERROR']];
var trigger = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
/**
* @param {string} key
* @param {Object=} valueList
* @param {string=} defaulValue
* @returns {string}
*/
function i18n(key, valueList, defaulValue) {
var valueName = '',
result = I18N_DATA[key];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(result)) {
result = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(defaulValue) ? key : defaulValue;
}
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(valueList) && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isNull"])(valueList)) {
for (valueName in valueList) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["has"])(valueList, valueName)) {
result = result.replace('%' + valueName + '%', valueList[valueName]);
}
}
}
return result;
}
var i18nToNode = function i18nToNode(element) {
var $el = $__WEBPACK_IMPORTED_MODULE_6___default()(element),
key = $el.data('i18n');
if (key) {
if ('[' === key.substr(0, 1)) {
switch (key.substr(0, 6)) {
case '[html]':
$el.html(i18n(key.substr(6)));
break;
case '[place':
$el.attr('placeholder', i18n(key.substr(13)));
break;
case '[title':
$el.attr('title', i18n(key.substr(7)));
break;
// no default
}
} else {
$el.text(i18n(key));
}
}
};
/**
* @param {Object} elements
* @param {boolean=} animate = false
*/
function i18nToNodes(elements, animate) {
if (animate === void 0) {
animate = false;
}
___WEBPACK_IMPORTED_MODULE_5___default.a.defer(function () {
$__WEBPACK_IMPORTED_MODULE_6___default()('[data-i18n]', elements).each(function (index, item) {
i18nToNode(item);
});
if (animate && Common_Globals__WEBPACK_IMPORTED_MODULE_10__["bAnimationSupported"]) {
$__WEBPACK_IMPORTED_MODULE_6___default()('.i18n-animation[data-i18n]', elements).letterfx({
'fx': 'fall fade',
'backwards': false,
'timing': 50,
'fx_duration': '50ms',
'letter_end': 'restore',
'element_end': 'restore'
});
}
});
}
var reloadData = function reloadData() {
if (window__WEBPACK_IMPORTED_MODULE_4___default.a.rainloopI18N) {
I18N_DATA = window__WEBPACK_IMPORTED_MODULE_4___default.a.rainloopI18N || {};
i18nToNodes(window__WEBPACK_IMPORTED_MODULE_4___default.a.document, true);
Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_11__["reload"])();
trigger(!trigger());
}
window__WEBPACK_IMPORTED_MODULE_4___default.a.rainloopI18N = null;
};
/**
* @returns {void}
*/
function initNotificationLanguage() {
I18N_NOTIFICATION_MAP.forEach(function (item) {
I18N_NOTIFICATION_DATA[item[0]] = i18n(item[1]);
});
}
/**
* @param {Function} startCallback
* @param {Function=} langCallback = null
*/
function initOnStartOrLangChange(startCallback, langCallback) {
if (langCallback === void 0) {
langCallback = null;
}
if (startCallback) {
startCallback();
}
if (langCallback) {
trigger.subscribe(function () {
if (startCallback) {
startCallback();
}
if (langCallback) {
langCallback();
}
});
} else if (startCallback) {
trigger.subscribe(startCallback);
}
}
/**
* @param {number} code
* @param {*=} message = ''
* @param {*=} defCode = null
* @returns {string}
*/
function getNotification(code, message, defCode) {
if (message === void 0) {
message = '';
}
if (defCode === void 0) {
defCode = null;
}
code = window__WEBPACK_IMPORTED_MODULE_4___default.a.parseInt(code, 10) || 0;
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].ClientViewError === code && message) {
return message;
}
defCode = defCode ? window__WEBPACK_IMPORTED_MODULE_4___default.a.parseInt(defCode, 10) || 0 : 0;
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(I18N_NOTIFICATION_DATA[code]) ? defCode && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(I18N_NOTIFICATION_DATA[defCode]) ? I18N_NOTIFICATION_DATA[defCode] : '' : I18N_NOTIFICATION_DATA[code];
}
/**
* @param {object} response
* @param {number} defCode = Notification.UnknownNotification
* @returns {string}
*/
function getNotificationFromResponse(response, defCode) {
if (defCode === void 0) {
defCode = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Notification"].UnknownNotification;
}
return response && response.ErrorCode ? getNotification(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["pInt"])(response.ErrorCode), response.ErrorMessage || '') : getNotification(defCode);
}
/**
* @param {*} code
* @returns {string}
*/
function getUploadErrorDescByCode(code) {
var result = '';
switch (window__WEBPACK_IMPORTED_MODULE_4___default.a.parseInt(code, 10) || 0) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["UploadErrorCode"].FileIsTooBig:
result = i18n('UPLOAD/ERROR_FILE_IS_TOO_BIG');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["UploadErrorCode"].FilePartiallyUploaded:
result = i18n('UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["UploadErrorCode"].FileNoUploaded:
result = i18n('UPLOAD/ERROR_NO_FILE_UPLOADED');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["UploadErrorCode"].MissingTempFolder:
result = i18n('UPLOAD/ERROR_MISSING_TEMP_FOLDER');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["UploadErrorCode"].FileOnSaveingError:
result = i18n('UPLOAD/ERROR_ON_SAVING_FILE');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["UploadErrorCode"].FileType:
result = i18n('UPLOAD/ERROR_FILE_TYPE');
break;
default:
result = i18n('UPLOAD/ERROR_UNKNOWN');
break;
}
return result;
}
/**
* @param {boolean} admin
* @param {string} language
*/
function reload(admin, language) {
var start = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["microtime"])();
Common_Globals__WEBPACK_IMPORTED_MODULE_10__["$html"].addClass('rl-changing-language');
return new _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0___default.a(function (resolve, reject) {
$__WEBPACK_IMPORTED_MODULE_6___default.a.ajax({
url: Object(Common_Links__WEBPACK_IMPORTED_MODULE_12__[/* langLink */ "n"])(language, admin),
dataType: 'script',
cache: true
}).then(function () {
___WEBPACK_IMPORTED_MODULE_5___default.a.delay(function () {
reloadData();
var isRtl = -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["inArray"])((language || '').toLowerCase(), ['ar', 'ar_sa', 'he', 'he_he', 'ur', 'ur_ir']);
Common_Globals__WEBPACK_IMPORTED_MODULE_10__["$html"].removeClass('rl-changing-language').removeClass('rl-rtl rl-ltr') // .attr('dir', isRtl ? 'rtl' : 'ltr')
.addClass(isRtl ? 'rl-rtl' : 'rl-ltr');
resolve();
}, 500 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["microtime"])() - start ? 1 : 500);
}, function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_10__["$html"].removeClass('rl-changing-language');
window__WEBPACK_IMPORTED_MODULE_4___default.a.rainloopI18N = null;
reject();
});
});
} // init section
Common_Globals__WEBPACK_IMPORTED_MODULE_10__["$html"].addClass('rl-' + (Common_Globals__WEBPACK_IMPORTED_MODULE_10__["$html"].attr('dir') || 'ltr'));
/***/ }),
/* 10 */
/*!**************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/helpers/esm/inheritsLoose.js ***!
\**************************************************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _inheritsLoose; });
/* harmony import */ var _babel_runtime_corejs3_core_js_object_create__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/create */ 293);
/* harmony import */ var _babel_runtime_corejs3_core_js_object_create__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_object_create__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setPrototypeOf.js */ 294);
function _inheritsLoose(subClass, superClass) {
subClass.prototype = _babel_runtime_corejs3_core_js_object_create__WEBPACK_IMPORTED_MODULE_0___default()(superClass.prototype);
subClass.prototype.constructor = subClass;
Object(_setPrototypeOf_js__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(subClass, superClass);
}
/***/ }),
/* 11 */
/*!***********************************!*\
!*** ./dev/Stores/User/Folder.js ***!
\***********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_Momentor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Momentor */ 61);
var FolderUserStore = /*#__PURE__*/function () {
function FolderUserStore() {
this.displaySpecSetting = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(true);
this.sentFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
this.draftFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
this.spamFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
this.trashFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
this.archiveFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
this.namespace = '';
this.folderList = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observableArray([]);
this.folderList.optimized = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.folderList.error = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
this.foldersLoading = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.foldersCreating = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.foldersDeleting = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.foldersRenaming = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.foldersInboxUnreadCount = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(0);
this.currentFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(null).extend({
toggleSubscribeProperty: [this, 'selected']
});
this.sieveAllowFileintoInbox = !!Object(Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["settingsGet"])('SieveAllowFileintoInbox');
this.computers();
this.subscribers();
}
var _proto = FolderUserStore.prototype;
_proto.computers = function computers() {
var _this = this;
this.draftFolderNotEnabled = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return '' === _this.draftFolder() || Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* UNUSED_OPTION_VALUE */ "r"] === _this.draftFolder();
});
this.foldersListWithSingleInboxRootFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return !_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_3___default.a).call(___WEBPACK_IMPORTED_MODULE_3___default.a, _this.folderList(), function (folder) {
return folder && !folder.isSystemFolder() && folder.visible();
});
});
this.currentFolderFullNameRaw = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return _this.currentFolder() ? _this.currentFolder().fullNameRaw : '';
});
this.currentFolderFullName = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return _this.currentFolder() ? _this.currentFolder().fullName : '';
});
this.currentFolderFullNameHash = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return _this.currentFolder() ? _this.currentFolder().fullNameHash : '';
});
this.foldersChanging = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
var loading = _this.foldersLoading(),
creating = _this.foldersCreating(),
deleting = _this.foldersDeleting(),
renaming = _this.foldersRenaming();
return loading || creating || deleting || renaming;
});
this.folderListSystemNames = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
var list = [Object(Common_Cache__WEBPACK_IMPORTED_MODULE_8__[/* getFolderInboxName */ "h"])()],
folders = _this.folderList(),
sentFolder = _this.sentFolder(),
draftFolder = _this.draftFolder(),
spamFolder = _this.spamFolder(),
trashFolder = _this.trashFolder(),
archiveFolder = _this.archiveFolder();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["isArray"])(folders) && 0 < folders.length) {
if ('' !== sentFolder && Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* UNUSED_OPTION_VALUE */ "r"] !== sentFolder) {
list.push(sentFolder);
}
if ('' !== draftFolder && Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* UNUSED_OPTION_VALUE */ "r"] !== draftFolder) {
list.push(draftFolder);
}
if ('' !== spamFolder && Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* UNUSED_OPTION_VALUE */ "r"] !== spamFolder) {
list.push(spamFolder);
}
if ('' !== trashFolder && Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* UNUSED_OPTION_VALUE */ "r"] !== trashFolder) {
list.push(trashFolder);
}
if ('' !== archiveFolder && Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* UNUSED_OPTION_VALUE */ "r"] !== archiveFolder) {
list.push(archiveFolder);
}
}
return list;
});
this.folderListSystem = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return ___WEBPACK_IMPORTED_MODULE_3___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_3___default.a).call(___WEBPACK_IMPORTED_MODULE_3___default.a, _this.folderListSystemNames(), function (name) {
return Object(Common_Cache__WEBPACK_IMPORTED_MODULE_8__[/* getFolderFromCacheList */ "e"])(name);
}));
});
this.folderMenuForMove = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["folderListOptionsBuilder"])(_this.folderListSystem(), _this.folderList(), [_this.currentFolderFullNameRaw()], null, null, null, null, function (item) {
return item ? item.localName() : '';
});
});
this.folderMenuForFilters = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["folderListOptionsBuilder"])(_this.folderListSystem(), _this.folderList(), [_this.sieveAllowFileintoInbox ? '' : 'INBOX'], [['', '']], null, null, null, function (item) {
return item ? item.localName() : '';
});
});
};
_proto.subscribers = function subscribers() {
var fRemoveSystemFolderType = function fRemoveSystemFolderType(observable) {
return function () {
var folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_8__[/* getFolderFromCacheList */ "e"])(observable());
if (folder) {
folder.type(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["FolderType"].User);
}
};
};
var fSetSystemFolderType = function fSetSystemFolderType(type) {
return function (value) {
var folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_8__[/* getFolderFromCacheList */ "e"])(value);
if (folder) {
folder.type(type);
}
};
};
this.sentFolder.subscribe(fRemoveSystemFolderType(this.sentFolder), this, 'beforeChange');
this.draftFolder.subscribe(fRemoveSystemFolderType(this.draftFolder), this, 'beforeChange');
this.spamFolder.subscribe(fRemoveSystemFolderType(this.spamFolder), this, 'beforeChange');
this.trashFolder.subscribe(fRemoveSystemFolderType(this.trashFolder), this, 'beforeChange');
this.archiveFolder.subscribe(fRemoveSystemFolderType(this.archiveFolder), this, 'beforeChange');
this.sentFolder.subscribe(fSetSystemFolderType(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["FolderType"].SentItems), this);
this.draftFolder.subscribe(fSetSystemFolderType(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["FolderType"].Draft), this);
this.spamFolder.subscribe(fSetSystemFolderType(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["FolderType"].Spam), this);
this.trashFolder.subscribe(fSetSystemFolderType(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["FolderType"].Trash), this);
this.archiveFolder.subscribe(fSetSystemFolderType(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["FolderType"].Archive), this);
}
/**
* @returns {Array}
*/
;
_proto.getNextFolderNames = function getNextFolderNames() {
var result = [],
limit = 5,
utc = Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_9__["momentNowUnix"])(),
timeout = utc - 60 * 5,
timeouts = [],
inboxFolderName = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_8__[/* getFolderInboxName */ "h"])(),
fSearchFunction = function fSearchFunction(list) {
___WEBPACK_IMPORTED_MODULE_3___default.a.each(list, function (folder) {
if (folder && inboxFolderName !== folder.fullNameRaw && folder.selectable && folder.existen && timeout > folder.interval && (folder.isSystemFolder() || folder.subScribed() && folder.checkable())) {
timeouts.push([folder.interval, folder.fullNameRaw]);
}
if (folder && 0 < folder.subFolders().length) {
fSearchFunction(folder.subFolders());
}
});
};
fSearchFunction(this.folderList());
timeouts.sort(function (a, b) {
if (a[0] < b[0]) {
return -1;
} else if (a[0] > b[0]) {
return 1;
}
return 0;
});
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_3___default.a).call(___WEBPACK_IMPORTED_MODULE_3___default.a, timeouts, function (aItem) {
var folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_8__[/* getFolderFromCacheList */ "e"])(aItem[1]);
if (folder) {
folder.interval = utc;
result.push(aItem[1]);
}
return limit <= result.length;
});
return ___WEBPACK_IMPORTED_MODULE_3___default.a.uniq(result);
};
return FolderUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new FolderUserStore());
/***/ }),
/* 12 */
/*!*****************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/find.js ***!
\*****************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/find */ 333);
/***/ }),
/* 13 */
/*!************************************!*\
!*** ./dev/Stores/User/Message.js ***!
\************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 119);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Momentor__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Common/Momentor */ 61);
/* harmony import */ var Helper_Message__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Helper/Message */ 64);
/* harmony import */ var Model_Message__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Model/Message */ 320);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Notification__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! Stores/User/Notification */ 124);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
var MessageUserStore = /*#__PURE__*/function () {
function MessageUserStore() {
this.staticMessage = new Model_Message__WEBPACK_IMPORTED_MODULE_21__[/* MessageModel */ "a"]();
this.messageList = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observableArray([]).extend({
rateLimit: 0
});
this.messageListCount = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(0);
this.messageListSearch = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
this.messageListThreadUid = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
this.messageListPage = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(1);
this.messageListPageBeforeThread = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(1);
this.messageListError = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
this.messageListEndFolder = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
this.messageListEndSearch = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
this.messageListEndThreadUid = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
this.messageListEndPage = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(1);
this.messageListLoading = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
this.messageListIsNotCompleted = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
this.messageListCompleteLoadingThrottle = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false).extend({
throttle: 200
});
this.messageListCompleteLoadingThrottleForAnimation = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false).extend({
specialThrottle: 700
});
this.messageListDisableAutoSelect = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false).extend({
falseTimeout: 500
});
this.selectorMessageSelected = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(null);
this.selectorMessageFocused = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(null); // message viewer
this.message = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(null);
this.message.viewTrigger = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
this.messageError = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
this.messageCurrentLoading = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
this.messageLoadingThrottle = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time50ms
});
this.messageFullScreenMode = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
this.messagesBodiesDom = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(null);
this.messageActiveDom = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(null);
this.computers();
this.subscribers();
this.onMessageResponse = ___WEBPACK_IMPORTED_MODULE_9___default.a.bind(this.onMessageResponse, this);
this.purgeMessageBodyCacheThrottle = ___WEBPACK_IMPORTED_MODULE_9___default.a.throttle(this.purgeMessageBodyCache, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time30s);
}
var _proto = MessageUserStore.prototype;
_proto.computers = function computers() {
var _this = this;
this.messageLoading = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return _this.messageCurrentLoading();
});
this.messageListEndHash = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return _this.messageListEndFolder() + '|' + _this.messageListEndSearch() + '|' + _this.messageListEndThreadUid() + '|' + _this.messageListEndPage();
});
this.messageListPageCount = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
var page = window__WEBPACK_IMPORTED_MODULE_8___default.a.Math.ceil(_this.messageListCount() / Stores_User_Settings__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].messagesPerPage());
return 0 >= page ? 1 : page;
});
this.mainMessageListSearch = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed({
read: this.messageListSearch,
write: function write(value) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_22__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_17__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].currentFolderFullNameHash(), 1, Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["trim"])(value.toString()), _this.messageListThreadUid()));
}
});
this.messageListCompleteLoading = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
var one = _this.messageListLoading(),
two = _this.messageListIsNotCompleted();
return one || two;
});
this.isMessageSelected = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return null !== _this.message();
});
this.messageListChecked = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, _this.messageList(), function (item) {
return item.checked();
});
}).extend({
rateLimit: 0
});
this.hasCheckedMessages = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return 0 < _this.messageListChecked().length;
}).extend({
rateLimit: 0
});
this.messageListCheckedOrSelected = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
var checked = _this.messageListChecked(),
selectedMessage = _this.selectorMessageSelected(),
focusedMessage = _this.selectorMessageFocused();
if (checked.length) {
return ___WEBPACK_IMPORTED_MODULE_9___default.a.union(checked, selectedMessage ? [selectedMessage] : []);
} else if (selectedMessage) {
return [selectedMessage];
}
return focusedMessage ? [focusedMessage] : [];
});
this.messageListCheckedOrSelectedUidsWithSubMails = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
var result = [];
___WEBPACK_IMPORTED_MODULE_9___default.a.each(_this.messageListCheckedOrSelected(), function (message) {
if (message) {
result.push(message.uid);
if (1 < message.threadsLen()) {
result = ___WEBPACK_IMPORTED_MODULE_9___default.a.union(result, message.threads());
}
}
});
return result;
});
};
_proto.subscribers = function subscribers() {
var _this2 = this;
this.messageListCompleteLoading.subscribe(function (value) {
value = !!value;
_this2.messageListCompleteLoadingThrottle(value);
_this2.messageListCompleteLoadingThrottleForAnimation(value);
});
this.messageList.subscribe(___WEBPACK_IMPORTED_MODULE_9___default.a.debounce(function (list) {
___WEBPACK_IMPORTED_MODULE_9___default.a.each(list, function (item) {
if (item && item.newForAnimation()) {
item.newForAnimation(false);
}
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time500ms));
this.message.subscribe(function (message) {
if (message) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Layout"].NoPreview === Stores_User_Settings__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].layout()) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageView);
}
} else {
Stores_User_App__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageList);
_this2.messageFullScreenMode(false);
_this2.hideMessageBodies();
}
});
this.messageLoading.subscribe(function (value) {
_this2.messageLoadingThrottle(value);
});
this.messagesBodiesDom.subscribe(function (dom) {
if (dom && !(dom instanceof $__WEBPACK_IMPORTED_MODULE_11___default.a)) {
_this2.messagesBodiesDom($__WEBPACK_IMPORTED_MODULE_11___default()(dom));
}
});
this.messageListEndFolder.subscribe(function (folder) {
var message = _this2.message();
if (message && folder && folder !== message.folderFullNameRaw) {
_this2.message(null);
}
});
};
_proto.purgeMessageBodyCache = function purgeMessageBodyCache() {
var count = 0;
var end = Common_Globals__WEBPACK_IMPORTED_MODULE_16__["data"].iMessageBodyCacheCount - Common_Consts__WEBPACK_IMPORTED_MODULE_15__[/* MESSAGE_BODY_CACHE_LIMIT */ "k"];
if (0 < end) {
var messagesDom = this.messagesBodiesDom();
if (messagesDom) {
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(messagesDom).call(messagesDom, '.rl-cache-class').each(function () {
var item = $__WEBPACK_IMPORTED_MODULE_11___default()(this); // eslint-disable-line no-invalid-this
if (end > item.data('rl-cache-count')) {
item.addClass('rl-cache-purge');
count += 1;
}
});
if (0 < count) {
___WEBPACK_IMPORTED_MODULE_9___default.a.delay(function () {
return _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(messagesDom).call(messagesDom, '.rl-cache-purge').remove();
}, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time350ms);
}
}
}
};
_proto.initUidNextAndNewMessages = function initUidNextAndNewMessages(folder, uidNext, newMessages) {
if (Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* getFolderInboxName */ "h"])() === folder && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(uidNext) && '' !== uidNext) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(newMessages) && 0 < newMessages.length) {
___WEBPACK_IMPORTED_MODULE_9___default.a.each(newMessages, function (item) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* addNewMessageCache */ "a"])(folder, item.Uid);
});
Stores_User_Notification__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].playSoundNotification();
var len = newMessages.length;
if (3 < len) {
Stores_User_Notification__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].displayDesktopNotification(Object(Common_Links__WEBPACK_IMPORTED_MODULE_17__[/* notificationMailIcon */ "r"])(), Stores_User_Account__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].email(), Object(Common_Translator__WEBPACK_IMPORTED_MODULE_18__["i18n"])('MESSAGE_LIST/NEW_MESSAGE_NOTIFICATION', {
'COUNT': len
}), {
'Folder': '',
'Uid': ''
});
} else {
___WEBPACK_IMPORTED_MODULE_9___default.a.each(newMessages, function (item) {
Stores_User_Notification__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].displayDesktopNotification(Object(Common_Links__WEBPACK_IMPORTED_MODULE_17__[/* notificationMailIcon */ "r"])(), Helper_Message__WEBPACK_IMPORTED_MODULE_20__[/* emailArrayToString */ "b"](Helper_Message__WEBPACK_IMPORTED_MODULE_20__[/* emailArrayFromJson */ "a"](item.From), false), item.Subject, {
'Folder': item.Folder,
'Uid': item.Uid
});
});
}
}
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* setFolderUidNext */ "s"])(folder, uidNext);
}
};
_proto.hideMessageBodies = function hideMessageBodies() {
var messagesDom = this.messagesBodiesDom();
if (messagesDom) {
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(messagesDom).call(messagesDom, '.b-text-part').hide();
}
}
/**
* @param {string} fromFolderFullNameRaw
* @param {Array} uidForRemove
* @param {string=} toFolderFullNameRaw = ''
* @param {boolean=} copy = false
*/
;
_proto.removeMessagesFromList = function removeMessagesFromList(fromFolderFullNameRaw, uidForRemove, toFolderFullNameRaw, copy) {
var _this3 = this;
if (toFolderFullNameRaw === void 0) {
toFolderFullNameRaw = '';
}
if (copy === void 0) {
copy = false;
}
uidForRemove = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, uidForRemove, function (mValue) {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(mValue);
});
var unseenCount = 0,
messageList = this.messageList(),
currentMessage = this.message();
var trashFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].trashFolder(),
spamFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].spamFolder(),
fromFolder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* getFolderFromCacheList */ "e"])(fromFolderFullNameRaw),
toFolder = '' === toFolderFullNameRaw ? null : Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* getFolderFromCacheList */ "e"])(toFolderFullNameRaw || ''),
currentFolderFullNameRaw = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].currentFolderFullNameRaw(),
messages = currentFolderFullNameRaw === fromFolderFullNameRaw ? _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, messageList, function (item) {
return item && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["inArray"])(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(item.uid), uidForRemove);
}) : [];
___WEBPACK_IMPORTED_MODULE_9___default.a.each(messages, function (item) {
if (item && item.unseen()) {
unseenCount += 1;
}
});
if (fromFolder && !copy) {
fromFolder.messageCountAll(0 <= fromFolder.messageCountAll() - uidForRemove.length ? fromFolder.messageCountAll() - uidForRemove.length : 0);
if (0 < unseenCount) {
fromFolder.messageCountUnread(0 <= fromFolder.messageCountUnread() - unseenCount ? fromFolder.messageCountUnread() - unseenCount : 0);
}
}
if (toFolder) {
if (trashFolder === toFolder.fullNameRaw || spamFolder === toFolder.fullNameRaw) {
unseenCount = 0;
}
toFolder.messageCountAll(toFolder.messageCountAll() + uidForRemove.length);
if (0 < unseenCount) {
toFolder.messageCountUnread(toFolder.messageCountUnread() + unseenCount);
}
toFolder.actionBlink(true);
}
if (0 < messages.length) {
if (copy) {
___WEBPACK_IMPORTED_MODULE_9___default.a.each(messages, function (item) {
item.checked(false);
});
} else {
this.messageListIsNotCompleted(true);
___WEBPACK_IMPORTED_MODULE_9___default.a.each(messages, function (item) {
if (currentMessage && currentMessage.hash === item.hash) {
currentMessage = null;
_this3.message(null);
}
item.deleted(true);
});
___WEBPACK_IMPORTED_MODULE_9___default.a.delay(function () {
___WEBPACK_IMPORTED_MODULE_9___default.a.each(messages, function (item) {
_this3.messageList.remove(item);
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time350ms);
}
}
if ('' !== fromFolderFullNameRaw) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* setFolderHash */ "q"])(fromFolderFullNameRaw, '');
}
if ('' !== toFolderFullNameRaw) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* setFolderHash */ "q"])(toFolderFullNameRaw, '');
}
if ('' !== this.messageListThreadUid()) {
messageList = this.messageList();
if (messageList && 0 < messageList.length && !!_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, messageList, function (item) {
return !!(item && item.deleted() && item.uid === _this3.messageListThreadUid());
})) {
var message = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, messageList, function (item) {
return item && !item.deleted();
});
if (message && this.messageListThreadUid() !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(message.uid)) {
this.messageListThreadUid(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(message.uid));
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_22__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_17__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].currentFolderFullNameHash(), this.messageListPage(), this.messageListSearch(), this.messageListThreadUid()), true, true);
} else if (!message) {
if (1 < this.messageListPage()) {
this.messageListPage(this.messageListPage() - 1);
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_22__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_17__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].currentFolderFullNameHash(), this.messageListPage(), this.messageListSearch(), this.messageListThreadUid()), true, true);
} else {
this.messageListThreadUid('');
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_22__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_17__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].currentFolderFullNameHash(), this.messageListPageBeforeThread(), this.messageListSearch()), true, true);
}
}
}
}
}
/**
* @param {Object} messageTextBody
*/
;
_proto.initBlockquoteSwitcher = function initBlockquoteSwitcher(messageTextBody) {
if (messageTextBody) {
var _context;
var $oList = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_0___default()(_context = $__WEBPACK_IMPORTED_MODULE_11___default()('blockquote:not(.rl-bq-switcher)', messageTextBody)).call(_context, function () {
return 0 === $__WEBPACK_IMPORTED_MODULE_11___default()(this).parent().closest('blockquote', messageTextBody).length; // eslint-disable-line no-invalid-this
});
if ($oList && 0 < $oList.length) {
$oList.each(function () {
var $this = $__WEBPACK_IMPORTED_MODULE_11___default()(this); // eslint-disable-line no-invalid-this
var h = $this.height();
if (0 === h) {
h = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["getRealHeight"])($this);
}
if ('' !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["trim"])($this.text()) && (0 === h || 100 < h)) {
$this.addClass('rl-bq-switcher hidden-bq');
$__WEBPACK_IMPORTED_MODULE_11___default()('<span class="rlBlockquoteSwitcher"><i class="icon-ellipsis" /></span>').insertBefore($this).on('click.rlBlockquoteSwitcher', function () {
$this.toggleClass('hidden-bq');
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["windowResize"])();
}).after('<br />').before('<br />');
}
});
}
}
}
/**
* @param {Object} messageTextBody
* @param {Object} message
*/
;
_proto.initOpenPgpControls = function initOpenPgpControls(messageTextBody, message) {
if (messageTextBody && _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(messageTextBody)) {
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(messageTextBody).call(messageTextBody, '.b-plain-openpgp:not(.inited)').each(function () {
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_26__[/* default */ "a"].initMessageBodyControls($__WEBPACK_IMPORTED_MODULE_11___default()(this), message); // eslint-disable-line no-invalid-this
});
}
};
_proto.setMessage = function setMessage(data, cached) {
var isNew = false,
body = null,
id = '',
plain = '',
resultHtml = '',
pgpSigned = false,
messagesDom = this.messagesBodiesDom(),
selectedMessage = this.selectorMessageSelected(),
message = this.message();
if (data && message && data.Result && 'Object/Message' === data.Result['@Object'] && message.folderFullNameRaw === data.Result.Folder) {
var threads = message.threads();
if (message.uid !== data.Result.Uid && 1 < threads.length && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["inArray"])(data.Result.Uid, threads)) {
message = Model_Message__WEBPACK_IMPORTED_MODULE_21__[/* MessageModel */ "a"].newInstanceFromJson(data.Result);
if (message) {
message.threads(threads);
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* initMessageFlagsFromCache */ "n"])(message);
this.message(this.staticMessage.populateByMessageListItem(message));
message = this.message();
isNew = true;
}
}
if (message && message.uid === data.Result.Uid) {
this.messageError('');
message.initUpdateByMessageJson(data.Result);
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* addRequestedMessage */ "b"])(message.folderFullNameRaw, message.uid);
if (!cached) {
message.initFlagsByJson(data.Result);
}
messagesDom = messagesDom && messagesDom[0] ? messagesDom : null;
if (messagesDom) {
id = 'rl-mgs-' + message.hash.replace(/[^a-zA-Z0-9]/g, '');
var textBody = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(messagesDom).call(messagesDom, '#' + id);
if (!textBody || !textBody[0]) {
var isHtml = false;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.Html) && '' !== data.Result.Html) {
isHtml = true;
resultHtml = data.Result.Html.toString();
} else if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.Plain) && '' !== data.Result.Plain) {
isHtml = false;
resultHtml = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["plainToHtml"])(data.Result.Plain.toString(), false);
if ((message.isPgpSigned() || message.isPgpEncrypted()) && Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_26__[/* default */ "a"].capaOpenPGP()) {
plain = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(data.Result.Plain);
var isPgpEncrypted = /---BEGIN PGP MESSAGE---/.test(plain);
if (!isPgpEncrypted) {
pgpSigned = /-----BEGIN PGP SIGNED MESSAGE-----/.test(plain) && /-----BEGIN PGP SIGNATURE-----/.test(plain);
}
Common_Globals__WEBPACK_IMPORTED_MODULE_16__["$div"].empty();
if (pgpSigned && message.isPgpSigned()) {
resultHtml = Common_Globals__WEBPACK_IMPORTED_MODULE_16__["$div"].append($__WEBPACK_IMPORTED_MODULE_11___default()('<pre class="b-plain-openpgp signed"></pre>').text(plain)).html();
} else if (isPgpEncrypted && message.isPgpEncrypted()) {
resultHtml = Common_Globals__WEBPACK_IMPORTED_MODULE_16__["$div"].append($__WEBPACK_IMPORTED_MODULE_11___default()('<pre class="b-plain-openpgp encrypted"></pre>').text(plain)).html();
} else {
resultHtml = '<pre>' + resultHtml + '</pre>';
}
Common_Globals__WEBPACK_IMPORTED_MODULE_16__["$div"].empty();
message.isPgpSigned(pgpSigned);
message.isPgpEncrypted(isPgpEncrypted);
} else {
resultHtml = '<pre>' + resultHtml + '</pre>';
}
} else {
isHtml = false;
resultHtml = '<pre>' + resultHtml + '</pre>';
}
Common_Globals__WEBPACK_IMPORTED_MODULE_16__["data"].iMessageBodyCacheCount += 1;
body = $__WEBPACK_IMPORTED_MODULE_11___default()('<div id="' + id + '" ></div>').hide().addClass('rl-cache-class');
body.data('rl-cache-count', Common_Globals__WEBPACK_IMPORTED_MODULE_16__["data"].iMessageBodyCacheCount);
body.html(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["findEmailAndLinks"])(resultHtml)).addClass('b-text-part ' + (isHtml ? 'html' : 'plain'));
message.isHtml(!!isHtml);
message.hasImages(!!data.Result.HasExternals);
message.body = body;
if (message.body) {
messagesDom.append(message.body);
}
message.storeDataInDom();
if (data.Result.HasInternals) {
message.showInternalImages(true);
}
if (message.hasImages() && Stores_User_Settings__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].showImages()) {
message.showExternalImages(true);
}
this.purgeMessageBodyCacheThrottle();
} else {
message.body = textBody;
if (message.body) {
Common_Globals__WEBPACK_IMPORTED_MODULE_16__["data"].iMessageBodyCacheCount += 1;
message.body.data('rl-cache-count', Common_Globals__WEBPACK_IMPORTED_MODULE_16__["data"].iMessageBodyCacheCount);
message.fetchDataFromDom();
}
}
this.messageActiveDom(message.body);
this.hideMessageBodies();
if (body) {
this.initOpenPgpControls(body, message);
this.initBlockquoteSwitcher(body);
}
message.body.show();
}
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* initMessageFlagsFromCache */ "n"])(message);
if (message.unseen() || message.hasUnseenSubMessage()) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_29__[/* getApp */ "a"])().messageListAction(message.folderFullNameRaw, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["MessageSetAction"].SetSeen, [message]);
}
if (isNew) {
message = this.message();
if (selectedMessage && message && (message.folderFullNameRaw !== selectedMessage.folderFullNameRaw || message.uid !== selectedMessage.uid)) {
this.selectorMessageSelected(null);
if (1 === this.messageList().length) {
this.selectorMessageFocused(null);
}
} else if (!selectedMessage && message) {
selectedMessage = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, this.messageList(), function (subMessage) {
return subMessage && subMessage.folderFullNameRaw === message.folderFullNameRaw && subMessage.uid === message.uid;
});
if (selectedMessage) {
this.selectorMessageSelected(selectedMessage);
this.selectorMessageFocused(selectedMessage);
}
}
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["windowResize"])();
}
}
};
_proto.selectMessage = function selectMessage(oMessage) {
if (oMessage) {
this.message(this.staticMessage.populateByMessageListItem(oMessage));
this.populateMessageBody(this.message());
} else {
this.message(null);
}
};
_proto.selectMessageByFolderAndUid = function selectMessageByFolderAndUid(sFolder, sUid) {
if (sFolder && sUid) {
this.message(this.staticMessage.populateByMessageListItem(null));
this.message().folderFullNameRaw = sFolder;
this.message().uid = sUid;
this.populateMessageBody(this.message());
} else {
this.message(null);
}
};
_proto.populateMessageBody = function populateMessageBody(oMessage) {
if (oMessage) {
if (Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].message(this.onMessageResponse, oMessage.folderFullNameRaw, oMessage.uid)) {
this.messageCurrentLoading(true);
}
}
}
/**
* @param {string} sResult
* @param {AjaxJsonDefaultResponse} oData
* @param {boolean} bCached
*/
;
_proto.onMessageResponse = function onMessageResponse(sResult, oData, bCached) {
this.hideMessageBodies();
this.messageCurrentLoading(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["StorageResultType"].Success === sResult && oData && oData.Result) {
this.setMessage(oData, bCached);
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["StorageResultType"].Unload === sResult) {
this.message(null);
this.messageError('');
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["StorageResultType"].Abort !== sResult) {
this.message(null);
this.messageError(oData && oData.ErrorCode ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_18__["getNotification"])(oData.ErrorCode) : Object(Common_Translator__WEBPACK_IMPORTED_MODULE_18__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Notification"].UnknownError));
}
}
/**
* @param {Array} list
* @returns {string}
*/
;
_proto.calculateMessageListHash = function calculateMessageListHash(list) {
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, list, function (message) {
return '' + message.hash + '_' + message.threadsLen() + '_' + message.flagHash();
}).join('|');
};
_proto.setMessageList = function setMessageList(data, cached) {
if (data && data.Result && 'Collection/MessageCollection' === data.Result['@Object'] && data.Result['@Collection'] && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(data.Result['@Collection'])) {
var newCount = 0,
unreadCountChange = false;
var list = [],
utc = Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_19__["momentNowUnix"])(),
iCount = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(data.Result.MessageResultCount),
iOffset = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(data.Result.Offset);
var folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* getFolderFromCacheList */ "e"])(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.Folder) ? data.Result.Folder : '');
if (folder && !cached) {
folder.interval = utc;
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* setFolderHash */ "q"])(data.Result.Folder, data.Result.FolderHash);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.MessageCount)) {
folder.messageCountAll(data.Result.MessageCount);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.MessageUnseenCount)) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(folder.messageCountUnread()) !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(data.Result.MessageUnseenCount)) {
unreadCountChange = true;
}
folder.messageCountUnread(data.Result.MessageUnseenCount);
}
this.initUidNextAndNewMessages(folder.fullNameRaw, data.Result.UidNext, data.Result.NewMessages);
}
if (unreadCountChange && folder) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* clearMessageFlagsFromCacheByFolder */ "c"])(folder.fullNameRaw);
}
___WEBPACK_IMPORTED_MODULE_9___default.a.each(data.Result['@Collection'], function (jsonMessage) {
if (jsonMessage && 'Object/Message' === jsonMessage['@Object']) {
var message = Model_Message__WEBPACK_IMPORTED_MODULE_21__[/* MessageModel */ "a"].newInstanceFromJson(jsonMessage);
if (message) {
if (Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* hasNewMessageAndRemoveFromCache */ "l"])(message.folderFullNameRaw, message.uid) && 5 >= newCount) {
newCount += 1;
message.newForAnimation(true);
}
message.deleted(false);
if (cached) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* initMessageFlagsFromCache */ "n"])(message);
} else {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* storeMessageFlagsToCache */ "u"])(message);
}
list.push(message);
}
}
});
this.messageListCount(iCount);
this.messageListSearch(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.Search) ? data.Result.Search : '');
this.messageListPage(window__WEBPACK_IMPORTED_MODULE_8___default.a.Math.ceil(iOffset / Stores_User_Settings__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].messagesPerPage() + 1));
this.messageListThreadUid(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.ThreadUid) ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(data.Result.ThreadUid) : '');
this.messageListEndFolder(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.Folder) ? data.Result.Folder : '');
this.messageListEndSearch(this.messageListSearch());
this.messageListEndThreadUid(this.messageListThreadUid());
this.messageListEndPage(this.messageListPage());
this.messageListDisableAutoSelect(true);
this.messageList(list);
this.messageListIsNotCompleted(false);
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_14__[/* clearNewMessageCache */ "d"])();
if (folder && (cached || unreadCountChange || Stores_User_Settings__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].useThreads())) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_29__[/* getApp */ "a"])().folderInformation(folder.fullNameRaw, list);
}
} else {
this.messageListCount(0);
this.messageList([]);
this.messageListError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_18__["getNotification"])(data && data.ErrorCode ? data.ErrorCode : Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Notification"].CantGetMessageList));
}
};
return MessageUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new MessageUserStore());
/***/ }),
/* 14 */
/*!*****************************!*\
!*** ./dev/Common/Cache.js ***!
\*****************************/
/*! exports provided: clear, getUserPic, getMessageKey, addRequestedMessage, hasRequestedMessage, addNewMessageCache, hasNewMessageAndRemoveFromCache, clearNewMessageCache, getFolderInboxName, getFolderFullNameRaw, setFolderFullNameRaw, getFolderHash, setFolderHash, getFolderUidNext, setFolderUidNext, getFolderFromCacheList, setFolderToCacheList, removeFolderFromCacheList, getMessageFlagsFromCache, setMessageFlagsToCache, clearMessageFlagsFromCacheByFolder, initMessageFlagsFromCache, storeMessageFlagsToCache, storeMessageFlagsToCacheByFolderAndUid, storeMessageFlagsToCacheBySetAction */
/*! exports used: addNewMessageCache, addRequestedMessage, clearMessageFlagsFromCacheByFolder, clearNewMessageCache, getFolderFromCacheList, getFolderFullNameRaw, getFolderHash, getFolderInboxName, getFolderUidNext, getMessageFlagsFromCache, getUserPic, hasNewMessageAndRemoveFromCache, hasRequestedMessage, initMessageFlagsFromCache, removeFolderFromCacheList, setFolderFullNameRaw, setFolderHash, setFolderToCacheList, setFolderUidNext, setMessageFlagsToCache, storeMessageFlagsToCache, storeMessageFlagsToCacheByFolderAndUid, storeMessageFlagsToCacheBySetAction */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export clear */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return getUserPic; });
/* unused harmony export getMessageKey */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return addRequestedMessage; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return hasRequestedMessage; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addNewMessageCache; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return hasNewMessageAndRemoveFromCache; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return clearNewMessageCache; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return getFolderInboxName; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return getFolderFullNameRaw; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return setFolderFullNameRaw; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return getFolderHash; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return setFolderHash; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return getFolderUidNext; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return setFolderUidNext; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return getFolderFromCacheList; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return setFolderToCacheList; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return removeFolderFromCacheList; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return getMessageFlagsFromCache; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return setMessageFlagsToCache; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return clearMessageFlagsFromCacheByFolder; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return initMessageFlagsFromCache; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return storeMessageFlagsToCache; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return storeMessageFlagsToCacheByFolderAndUid; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return storeMessageFlagsToCacheBySetAction; });
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Storage/Settings */ 5);
var FOLDERS_CACHE = {},
FOLDERS_NAME_CACHE = {},
FOLDERS_HASH_CACHE = {},
FOLDERS_UID_NEXT_CACHE = {},
MESSAGE_FLAGS_CACHE = {},
NEW_MESSAGE_CACHE = {},
inboxFolderName = '';
var REQUESTED_MESSAGE_CACHE = {},
capaGravatar = Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Capa"].Gravatar);
/**
* @returns {void}
*/
function clear() {
FOLDERS_CACHE = {};
FOLDERS_NAME_CACHE = {};
FOLDERS_HASH_CACHE = {};
FOLDERS_UID_NEXT_CACHE = {};
MESSAGE_FLAGS_CACHE = {};
}
/**
* @param {string} email
* @param {Function} callback
* @returns {string}
*/
function getUserPic(email, callback) {
email = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["trim"])(email);
callback(capaGravatar && '' !== email ? Common_Links__WEBPACK_IMPORTED_MODULE_4__[/* avatarLink */ "h"](email) : '', email);
}
/**
* @param {string} folderFullNameRaw
* @param {string} uid
* @returns {string}
*/
function getMessageKey(folderFullNameRaw, uid) {
return folderFullNameRaw + "#" + uid;
}
/**
* @param {string} folder
* @param {string} uid
*/
function addRequestedMessage(folder, uid) {
REQUESTED_MESSAGE_CACHE[getMessageKey(folder, uid)] = true;
}
/**
* @param {string} folder
* @param {string} uid
* @returns {boolean}
*/
function hasRequestedMessage(folder, uid) {
return true === REQUESTED_MESSAGE_CACHE[getMessageKey(folder, uid)];
}
/**
* @param {string} folderFullNameRaw
* @param {string} uid
*/
function addNewMessageCache(folderFullNameRaw, uid) {
NEW_MESSAGE_CACHE[getMessageKey(folderFullNameRaw, uid)] = true;
}
/**
* @param {string} folderFullNameRaw
* @param {string} uid
*/
function hasNewMessageAndRemoveFromCache(folderFullNameRaw, uid) {
if (NEW_MESSAGE_CACHE[getMessageKey(folderFullNameRaw, uid)]) {
NEW_MESSAGE_CACHE[getMessageKey(folderFullNameRaw, uid)] = null;
return true;
}
return false;
}
/**
* @returns {void}
*/
function clearNewMessageCache() {
NEW_MESSAGE_CACHE = {};
}
/**
* @returns {string}
*/
function getFolderInboxName() {
return '' === inboxFolderName ? 'INBOX' : inboxFolderName;
}
/**
* @param {string} folderHash
* @returns {string}
*/
function getFolderFullNameRaw(folderHash) {
return '' !== folderHash && FOLDERS_NAME_CACHE[folderHash] ? FOLDERS_NAME_CACHE[folderHash] : '';
}
/**
* @param {string} folderHash
* @param {string} folderFullNameRaw
*/
function setFolderFullNameRaw(folderHash, folderFullNameRaw) {
FOLDERS_NAME_CACHE[folderHash] = folderFullNameRaw;
if ('INBOX' === folderFullNameRaw || '' === inboxFolderName) {
inboxFolderName = folderFullNameRaw;
}
}
/**
* @param {string} folderFullNameRaw
* @returns {string}
*/
function getFolderHash(folderFullNameRaw) {
return '' !== folderFullNameRaw && FOLDERS_HASH_CACHE[folderFullNameRaw] ? FOLDERS_HASH_CACHE[folderFullNameRaw] : '';
}
/**
* @param {string} folderFullNameRaw
* @param {string} folderHash
*/
function setFolderHash(folderFullNameRaw, folderHash) {
if ('' !== folderFullNameRaw) {
FOLDERS_HASH_CACHE[folderFullNameRaw] = folderHash;
}
}
/**
* @param {string} folderFullNameRaw
* @returns {string}
*/
function getFolderUidNext(folderFullNameRaw) {
return '' !== folderFullNameRaw && FOLDERS_UID_NEXT_CACHE[folderFullNameRaw] ? FOLDERS_UID_NEXT_CACHE[folderFullNameRaw] : '';
}
/**
* @param {string} folderFullNameRaw
* @param {string} uidNext
*/
function setFolderUidNext(folderFullNameRaw, uidNext) {
FOLDERS_UID_NEXT_CACHE[folderFullNameRaw] = uidNext;
}
/**
* @param {string} folderFullNameRaw
* @returns {?FolderModel}
*/
function getFolderFromCacheList(folderFullNameRaw) {
return '' !== folderFullNameRaw && FOLDERS_CACHE[folderFullNameRaw] ? FOLDERS_CACHE[folderFullNameRaw] : null;
}
/**
* @param {string} folderFullNameRaw
* @param {?FolderModel} folder
*/
function setFolderToCacheList(folderFullNameRaw, folder) {
FOLDERS_CACHE[folderFullNameRaw] = folder;
}
/**
* @param {string} folderFullNameRaw
*/
function removeFolderFromCacheList(folderFullNameRaw) {
setFolderToCacheList(folderFullNameRaw, null);
}
/**
* @param {string} folderFullName
* @param {string} uid
* @returns {?Array}
*/
function getMessageFlagsFromCache(folderFullName, uid) {
return MESSAGE_FLAGS_CACHE[folderFullName] && MESSAGE_FLAGS_CACHE[folderFullName][uid] ? MESSAGE_FLAGS_CACHE[folderFullName][uid] : null;
}
/**
* @param {string} folderFullName
* @param {string} uid
* @param {Array} flagsCache
*/
function setMessageFlagsToCache(folderFullName, uid, flagsCache) {
if (!MESSAGE_FLAGS_CACHE[folderFullName]) {
MESSAGE_FLAGS_CACHE[folderFullName] = {};
}
MESSAGE_FLAGS_CACHE[folderFullName][uid] = flagsCache;
}
/**
* @param {string} folderFullName
*/
function clearMessageFlagsFromCacheByFolder(folderFullName) {
MESSAGE_FLAGS_CACHE[folderFullName] = {};
}
/**
* @param {(MessageModel|null)} message
*/
function initMessageFlagsFromCache(message) {
if (message) {
var uid = message.uid,
flags = getMessageFlagsFromCache(message.folderFullNameRaw, uid);
if (flags && 0 < flags.length) {
message.flagged(!!flags[1]);
if (!message.isSimpleMessage) {
message.unseen(!!flags[0]);
message.answered(!!flags[2]);
message.forwarded(!!flags[3]);
message.isReadReceipt(!!flags[4]);
message.deletedMark(!!flags[5]);
}
}
if (0 < message.threads().length) {
var unseenSubUid = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_1___default.a).call(___WEBPACK_IMPORTED_MODULE_1___default.a, message.threads(), function (sSubUid) {
if (uid !== sSubUid) {
var subFlags = getMessageFlagsFromCache(message.folderFullNameRaw, sSubUid);
return subFlags && 0 < subFlags.length && !!subFlags[0];
}
return false;
});
var flaggedSubUid = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_1___default.a).call(___WEBPACK_IMPORTED_MODULE_1___default.a, message.threads(), function (sSubUid) {
if (uid !== sSubUid) {
var subFlags = getMessageFlagsFromCache(message.folderFullNameRaw, sSubUid);
return subFlags && 0 < subFlags.length && !!subFlags[1];
}
return false;
});
message.hasUnseenSubMessage(unseenSubUid && 0 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(unseenSubUid));
message.hasFlaggedSubMessage(flaggedSubUid && 0 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(flaggedSubUid));
}
}
}
/**
* @param {(MessageModel|null)} message
*/
function storeMessageFlagsToCache(message) {
if (message) {
setMessageFlagsToCache(message.folderFullNameRaw, message.uid, [message.unseen(), message.flagged(), message.answered(), message.forwarded(), message.isReadReceipt(), message.deletedMark()]);
}
}
/**
* @param {string} folder
* @param {string} uid
* @param {Array} flags
*/
function storeMessageFlagsToCacheByFolderAndUid(folder, uid, flags) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(flags) && 0 < flags.length) {
setMessageFlagsToCache(folder, uid, flags);
}
}
/**
* @param {string} folder
* @param {string} uid
* @param {number} setAction
*/
function storeMessageFlagsToCacheBySetAction(folder, uid, setAction) {
var unread = 0;
var flags = getMessageFlagsFromCache(folder, uid);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(flags) && 0 < flags.length) {
if (flags[0]) {
unread = 1;
}
switch (setAction) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_2__["MessageSetAction"].SetSeen:
flags[0] = false;
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_2__["MessageSetAction"].UnsetSeen:
flags[0] = true;
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_2__["MessageSetAction"].SetFlag:
flags[1] = true;
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_2__["MessageSetAction"].UnsetFlag:
flags[1] = false;
break;
// no default
}
setMessageFlagsToCache(folder, uid, flags);
}
return unread;
}
/***/ }),
/* 15 */
/*!*****************************!*\
!*** ./dev/Common/Links.js ***!
\*****************************/
/*! exports provided: populateAuthSuffix, subQueryPrefix, root, rootAdmin, rootUser, attachmentRaw, attachmentDownload, attachmentPreview, attachmentThumbnailPreview, attachmentPreviewAsPlain, attachmentFramed, serverRequest, upload, uploadContacts, uploadBackground, append, change, ajax, messageViewLink, messageDownloadLink, avatarLink, publicLink, userBackground, phpInfo, langLink, exportContactsVcf, exportContactsCsv, socialGoogle, socialTwitter, socialFacebook, staticPrefix, emptyContactPic, sound, notificationMailIcon, openPgpJs, openPgpWorkerJs, openPgpWorkerPath, themePreviewLink, inbox, settings, about, admin, mailBox */
/*! exports used: ajax, append, attachmentDownload, attachmentFramed, attachmentPreview, attachmentPreviewAsPlain, attachmentThumbnailPreview, avatarLink, change, emptyContactPic, exportContactsCsv, exportContactsVcf, inbox, langLink, mailBox, messageDownloadLink, messageViewLink, notificationMailIcon, openPgpJs, openPgpWorkerJs, phpInfo, populateAuthSuffix, root, rootAdmin, rootUser, settings, socialFacebook, socialGoogle, socialTwitter, sound, subQueryPrefix, themePreviewLink, upload, uploadBackground, uploadContacts, userBackground */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "v", function() { return populateAuthSuffix; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "E", function() { return subQueryPrefix; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "w", function() { return root; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "x", function() { return rootAdmin; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "y", function() { return rootUser; });
/* unused harmony export attachmentRaw */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return attachmentDownload; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return attachmentPreview; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return attachmentThumbnailPreview; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return attachmentPreviewAsPlain; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return attachmentFramed; });
/* unused harmony export serverRequest */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "G", function() { return upload; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "I", function() { return uploadContacts; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "H", function() { return uploadBackground; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return append; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return change; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ajax; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return messageViewLink; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return messageDownloadLink; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return avatarLink; });
/* unused harmony export publicLink */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "J", function() { return userBackground; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "u", function() { return phpInfo; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return langLink; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return exportContactsVcf; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return exportContactsCsv; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "B", function() { return socialGoogle; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "C", function() { return socialTwitter; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "A", function() { return socialFacebook; });
/* unused harmony export staticPrefix */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return emptyContactPic; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "D", function() { return sound; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return notificationMailIcon; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "s", function() { return openPgpJs; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "t", function() { return openPgpWorkerJs; });
/* unused harmony export openPgpWorkerPath */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "F", function() { return themePreviewLink; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return inbox; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "z", function() { return settings; });
/* unused harmony export about */
/* unused harmony export admin */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return mailBox; });
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Storage/Settings */ 5);
var ROOT = './',
HASH_PREFIX = '#/',
SERVER_PREFIX = './?',
SUB_QUERY_PREFIX = '&q[]=',
VERSION = Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["appSettingsGet"]('version'),
WEB_PREFIX = Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["appSettingsGet"]('webPath') || '',
VERSION_PREFIX = Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["appSettingsGet"]('webVersionPath') || 'rainloop/v/' + VERSION + '/',
STATIC_PREFIX = VERSION_PREFIX + 'static/',
ADMIN_HOST_USE = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["appSettingsGet"]('adminHostUse'),
ADMIN_PATH = Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["appSettingsGet"]('adminPath') || 'admin';
var AUTH_PREFIX = Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["settingsGet"]('AuthAccountHash') || '0';
/**
* @returns {void}
*/
function populateAuthSuffix() {
AUTH_PREFIX = Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["settingsGet"]('AuthAccountHash') || '0';
}
/**
* @returns {string}
*/
function subQueryPrefix() {
return SUB_QUERY_PREFIX;
}
/**
* @param {string=} startupUrl
* @returns {string}
*/
function root(startupUrl) {
if (startupUrl === void 0) {
startupUrl = '';
}
return HASH_PREFIX + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pString"])(startupUrl);
}
/**
* @returns {string}
*/
function rootAdmin() {
return ADMIN_HOST_USE ? ROOT : SERVER_PREFIX + ADMIN_PATH;
}
/**
* @returns {string}
*/
function rootUser() {
return ROOT;
}
/**
* @param {string} type
* @param {string} download
* @param {string=} customSpecSuffix
* @returns {string}
*/
function attachmentRaw(type, download, customSpecSuffix) {
customSpecSuffix = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isUnd"])(customSpecSuffix) ? AUTH_PREFIX : customSpecSuffix;
return SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/' + customSpecSuffix + '/' + type + '/' + SUB_QUERY_PREFIX + '/' + download;
}
/**
* @param {string} download
* @param {string=} customSpecSuffix
* @returns {string}
*/
function attachmentDownload(download, customSpecSuffix) {
return attachmentRaw('Download', download, customSpecSuffix);
}
/**
* @param {string} download
* @param {string=} customSpecSuffix
* @returns {string}
*/
function attachmentPreview(download, customSpecSuffix) {
return attachmentRaw('View', download, customSpecSuffix);
}
/**
* @param {string} download
* @param {string=} customSpecSuffix
* @returns {string}
*/
function attachmentThumbnailPreview(download, customSpecSuffix) {
return attachmentRaw('ViewThumbnail', download, customSpecSuffix);
}
/**
* @param {string} download
* @param {string=} customSpecSuffix
* @returns {string}
*/
function attachmentPreviewAsPlain(download, customSpecSuffix) {
return attachmentRaw('ViewAsPlain', download, customSpecSuffix);
}
/**
* @param {string} download
* @param {string=} customSpecSuffix
* @returns {string}
*/
function attachmentFramed(download, customSpecSuffix) {
return attachmentRaw('FramedView', download, customSpecSuffix);
}
/**
* @param {string} type
* @returns {string}
*/
function serverRequest(type) {
return SERVER_PREFIX + '/' + type + '/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/';
}
/**
* @returns {string}
*/
function upload() {
return serverRequest('Upload');
}
/**
* @returns {string}
*/
function uploadContacts() {
return serverRequest('UploadContacts');
}
/**
* @returns {string}
*/
function uploadBackground() {
return serverRequest('UploadBackground');
}
/**
* @returns {string}
*/
function append() {
return serverRequest('Append');
}
/**
* @param {string} email
* @returns {string}
*/
function change(email) {
return serverRequest('Change') + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["encodeURIComponent"])(email) + '/';
}
/**
* @param {string} add
* @returns {string}
*/
function ajax(add) {
return serverRequest('Ajax') + add;
}
/**
* @param {string} requestHash
* @returns {string}
*/
function messageViewLink(requestHash) {
return SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/ViewAsPlain/' + SUB_QUERY_PREFIX + '/' + requestHash;
}
/**
* @param {string} requestHash
* @returns {string}
*/
function messageDownloadLink(requestHash) {
return SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/Download/' + SUB_QUERY_PREFIX + '/' + requestHash;
}
/**
* @param {string} email
* @returns {string}
*/
function avatarLink(email) {
return SERVER_PREFIX + '/Raw/0/Avatar/' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["encodeURIComponent"])(email) + '/';
}
/**
* @param {string} hash
* @returns {string}
*/
function publicLink(hash) {
return SERVER_PREFIX + '/Raw/0/Public/' + hash + '/';
}
/**
* @param {string} hash
* @returns {string}
*/
function userBackground(hash) {
return SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/UserBackground/' + SUB_QUERY_PREFIX + '/' + hash;
}
/**
* @returns {string}
*/
function phpInfo() {
return SERVER_PREFIX + '/Info';
}
/**
* @param {string} lang
* @param {boolean} isAdmin
* @returns {string}
*/
function langLink(lang, isAdmin) {
return SERVER_PREFIX + '/Lang/0/' + (isAdmin ? 'Admin' : 'App') + '/' + window__WEBPACK_IMPORTED_MODULE_2___default.a.encodeURI(lang) + '/' + VERSION + '/';
}
/**
* @returns {string}
*/
function exportContactsVcf() {
return SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/ContactsVcf/';
}
/**
* @returns {string}
*/
function exportContactsCsv() {
return SERVER_PREFIX + '/Raw/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/ContactsCsv/';
}
/**
* @param {boolean} xauth = false
* @returns {string}
*/
function socialGoogle(xauth) {
if (xauth === void 0) {
xauth = false;
}
return SERVER_PREFIX + 'SocialGoogle' + ('' !== AUTH_PREFIX ? '/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/' : '') + (xauth ? '&xauth=1' : '');
}
/**
* @returns {string}
*/
function socialTwitter() {
return SERVER_PREFIX + 'SocialTwitter' + ('' !== AUTH_PREFIX ? '/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/' : '');
}
/**
* @returns {string}
*/
function socialFacebook() {
return SERVER_PREFIX + 'SocialFacebook' + ('' !== AUTH_PREFIX ? '/' + SUB_QUERY_PREFIX + '/' + AUTH_PREFIX + '/' : '');
}
/**
* @param {string} path
* @returns {string}
*/
function staticPrefix(path) {
return STATIC_PREFIX + path;
}
/**
* @returns {string}
*/
function emptyContactPic() {
return staticPrefix('css/images/empty-contact.png');
}
/**
* @param {string} fileName
* @returns {string}
*/
function sound(fileName) {
return staticPrefix('sounds/' + fileName);
}
/**
* @returns {string}
*/
function notificationMailIcon() {
return staticPrefix('css/images/icom-message-notification.png');
}
/**
* @returns {string}
*/
function openPgpJs() {
return staticPrefix('js/min/openpgp.min.js');
}
/**
* @returns {string}
*/
function openPgpWorkerJs() {
return staticPrefix('js/min/openpgp.worker.min.js');
}
/**
* @returns {string}
*/
function openPgpWorkerPath() {
return staticPrefix('js/min/');
}
/**
* @param {string} theme
* @returns {string}
*/
function themePreviewLink(theme) {
var prefix = VERSION_PREFIX;
if ('@custom' === theme.substr(-7)) {
theme = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["trim"])(theme.substring(0, theme.length - 7));
prefix = WEB_PREFIX;
}
return prefix + 'themes/' + window__WEBPACK_IMPORTED_MODULE_2___default.a.encodeURI(theme) + '/images/preview.png';
}
/**
* @param {string} inboxFolderName = 'INBOX'
* @returns {string}
*/
function inbox(inboxFolderName) {
if (inboxFolderName === void 0) {
inboxFolderName = 'INBOX';
}
return HASH_PREFIX + 'mailbox/' + inboxFolderName;
}
/**
* @param {string=} screenName = ''
* @returns {string}
*/
function settings(screenName) {
if (screenName === void 0) {
screenName = '';
}
return HASH_PREFIX + 'settings' + (screenName ? '/' + screenName : '');
}
/**
* @returns {string}
*/
function about() {
return HASH_PREFIX + 'about';
}
/**
* @param {string} screenName
* @returns {string}
*/
function admin(screenName) {
var result = HASH_PREFIX;
switch (screenName) {
case 'AdminDomains':
result += 'domains';
break;
case 'AdminSecurity':
result += 'security';
break;
case 'AdminLicensing':
result += 'licensing';
break;
// no default
}
return result;
}
/**
* @param {string} folder
* @param {number=} page = 1
* @param {string=} search = ''
* @param {string=} threadUid = ''
* @returns {string}
*/
function mailBox(folder, page, search, threadUid) {
if (page === void 0) {
page = 1;
}
if (search === void 0) {
search = '';
}
if (threadUid === void 0) {
threadUid = '';
}
page = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isNormal"])(page) ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(page) : 1;
search = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pString"])(search);
var result = HASH_PREFIX + 'mailbox/';
if ('' !== folder) {
var resultThreadUid = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(threadUid);
result += window__WEBPACK_IMPORTED_MODULE_2___default.a.encodeURI(folder) + (0 < resultThreadUid ? '~' + resultThreadUid : '');
}
if (1 < page) {
result = result.replace(/[/]+$/, '');
result += '/p' + page;
}
if ('' !== search) {
result = result.replace(/[/]+$/, '');
result += '/' + window__WEBPACK_IMPORTED_MODULE_2___default.a.encodeURI(search);
}
return result;
}
/***/ }),
/* 16 */
/*!*********************************!*\
!*** ./dev/Remote/User/Ajax.js ***!
\*********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Base64__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Base64 */ 405);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Remote_AbstractAjax__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Remote/AbstractAjax */ 303);
var RemoteUserAjax = /*#__PURE__*/function (_AbstractAjaxRemote) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(RemoteUserAjax, _AbstractAjaxRemote);
function RemoteUserAjax() {
var _this;
_this = _AbstractAjaxRemote.call(this) || this;
_this.oRequests = {};
return _this;
}
/**
* @param {?Function} fCallback
*/
var _proto = RemoteUserAjax.prototype;
_proto.folders = function folders(fCallback) {
this.defaultRequest(fCallback, 'Folders', {
'SentFolder': Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["settingsGet"]('SentFolder'),
'DraftFolder': Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["settingsGet"]('DraftFolder'),
'SpamFolder': Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["settingsGet"]('SpamFolder'),
'TrashFolder': Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["settingsGet"]('TrashFolder'),
'ArchiveFolder': Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["settingsGet"]('ArchiveFolder')
}, null, '', ['Folders']);
}
/**
* @param {?Function} fCallback
* @param {string} sEmail
* @param {string} sLogin
* @param {string} sPassword
* @param {boolean} bSignMe
* @param {string=} sLanguage
* @param {string=} sAdditionalCode
* @param {boolean=} bAdditionalCodeSignMe
*/
;
_proto.login = function login(fCallback, sEmail, sLogin, sPassword, bSignMe, sLanguage, sAdditionalCode, bAdditionalCodeSignMe) {
this.defaultRequest(fCallback, 'Login', {
'Email': sEmail,
'Login': sLogin,
'Password': sPassword,
'Language': sLanguage || '',
'AdditionalCode': sAdditionalCode || '',
'AdditionalCodeSignMe': bAdditionalCodeSignMe ? '1' : '0',
'SignMe': bSignMe ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
*/
;
_proto.getTwoFactor = function getTwoFactor(fCallback) {
this.defaultRequest(fCallback, 'GetTwoFactorInfo');
}
/**
* @param {?Function} fCallback
*/
;
_proto.createTwoFactor = function createTwoFactor(fCallback) {
this.defaultRequest(fCallback, 'CreateTwoFactorSecret');
}
/**
* @param {?Function} fCallback
*/
;
_proto.clearTwoFactor = function clearTwoFactor(fCallback) {
this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
}
/**
* @param {?Function} fCallback
*/
;
_proto.showTwoFactorSecret = function showTwoFactorSecret(fCallback) {
this.defaultRequest(fCallback, 'ShowTwoFactorSecret');
}
/**
* @param {?Function} fCallback
* @param {string} sCode
*/
;
_proto.testTwoFactor = function testTwoFactor(fCallback, sCode) {
this.defaultRequest(fCallback, 'TestTwoFactorInfo', {
'Code': sCode
});
}
/**
* @param {?Function} fCallback
* @param {boolean} bEnable
*/
;
_proto.enableTwoFactor = function enableTwoFactor(fCallback, bEnable) {
this.defaultRequest(fCallback, 'EnableTwoFactor', {
'Enable': bEnable ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
*/
;
_proto.clearTwoFactorInfo = function clearTwoFactorInfo(fCallback) {
this.defaultRequest(fCallback, 'ClearTwoFactorInfo');
}
/**
* @param {?Function} fCallback
*/
;
_proto.contactsSync = function contactsSync(fCallback) {
this.defaultRequest(fCallback, 'ContactsSync', null, Common_Consts__WEBPACK_IMPORTED_MODULE_5__[/* CONTACTS_SYNC_AJAX_TIMEOUT */ "d"]);
}
/**
* @param {?Function} fCallback
* @param {boolean} bEnable
* @param {string} sUrl
* @param {string} sUser
* @param {string} sPassword
*/
;
_proto.saveContactsSyncData = function saveContactsSyncData(fCallback, bEnable, sUrl, sUser, sPassword) {
this.defaultRequest(fCallback, 'SaveContactsSyncData', {
'Enable': bEnable ? '1' : '0',
'Url': sUrl,
'User': sUser,
'Password': sPassword
});
}
/**
* @param {?Function} fCallback
* @param {string} sEmail
* @param {string} sPassword
* @param {boolean=} bNew
*/
;
_proto.accountSetup = function accountSetup(fCallback, sEmail, sPassword, bNew) {
if (bNew === void 0) {
bNew = true;
}
this.defaultRequest(fCallback, 'AccountSetup', {
'Email': sEmail,
'Password': sPassword,
'New': bNew ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
* @param {string} sEmailToDelete
*/
;
_proto.accountDelete = function accountDelete(fCallback, sEmailToDelete) {
this.defaultRequest(fCallback, 'AccountDelete', {
'EmailToDelete': sEmailToDelete
});
}
/**
* @param {?Function} fCallback
* @param {Array} aAccounts
* @param {Array} aIdentities
*/
;
_proto.accountsAndIdentitiesSortOrder = function accountsAndIdentitiesSortOrder(fCallback, aAccounts, aIdentities) {
this.defaultRequest(fCallback, 'AccountsAndIdentitiesSortOrder', {
'Accounts': aAccounts,
'Identities': aIdentities
});
}
/**
* @param {?Function} fCallback
* @param {string} sId
* @param {string} sEmail
* @param {string} sName
* @param {string} sReplyTo
* @param {string} sBcc
* @param {string} sSignature
* @param {boolean} bSignatureInsertBefore
*/
;
_proto.identityUpdate = function identityUpdate(fCallback, sId, sEmail, sName, sReplyTo, sBcc, sSignature, bSignatureInsertBefore) {
this.defaultRequest(fCallback, 'IdentityUpdate', {
'Id': sId,
'Email': sEmail,
'Name': sName,
'ReplyTo': sReplyTo,
'Bcc': sBcc,
'Signature': sSignature,
'SignatureInsertBefore': bSignatureInsertBefore ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
* @param {string} sIdToDelete
*/
;
_proto.identityDelete = function identityDelete(fCallback, sIdToDelete) {
this.defaultRequest(fCallback, 'IdentityDelete', {
'IdToDelete': sIdToDelete
});
}
/**
* @param {?Function} fCallback
*/
;
_proto.accountsAndIdentities = function accountsAndIdentities(fCallback) {
this.defaultRequest(fCallback, 'AccountsAndIdentities');
}
/**
* @param {?Function} fCallback
*/
;
_proto.accountsCounts = function accountsCounts(fCallback) {
this.defaultRequest(fCallback, 'AccountsCounts');
}
/**
* @param {?Function} fCallback
* @param {Array} filters
* @param {string} raw
* @param {boolean} isRawIsActive
*/
;
_proto.filtersSave = function filtersSave(fCallback, filters, raw, isRawIsActive) {
this.defaultRequest(fCallback, 'FiltersSave', {
'Raw': raw,
'RawIsActive': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["boolToAjax"])(isRawIsActive),
'Filters': _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_3___default.a).call(___WEBPACK_IMPORTED_MODULE_3___default.a, filters, function (item) {
return item.toJson();
})
});
}
/**
* @param {?Function} fCallback
*/
;
_proto.filtersGet = function filtersGet(fCallback) {
this.defaultRequest(fCallback, 'Filters', {});
}
/**
* @param {?Function} fCallback
*/
;
_proto.templates = function templates(fCallback) {
this.defaultRequest(fCallback, 'Templates', {});
}
/**
* @param {Function} fCallback
* @param {string} sID
*/
;
_proto.templateGetById = function templateGetById(fCallback, sID) {
this.defaultRequest(fCallback, 'TemplateGetByID', {
'ID': sID
});
}
/**
* @param {Function} fCallback
* @param {string} sID
*/
;
_proto.templateDelete = function templateDelete(fCallback, sID) {
this.defaultRequest(fCallback, 'TemplateDelete', {
'IdToDelete': sID
});
}
/**
* @param {Function} fCallback
* @param {string} sID
* @param {string} sName
* @param {string} sBody
*/
;
_proto.templateSetup = function templateSetup(fCallback, sID, sName, sBody) {
this.defaultRequest(fCallback, 'TemplateSetup', {
'ID': sID,
'Name': sName,
'Body': sBody
});
}
/**
* @param {Function} fCallback
* @param {string} sFolderFullNameRaw
* @param {number=} iOffset = 0
* @param {number=} iLimit = 20
* @param {string=} sSearch = ''
* @param {string=} sThreadUid = ''
* @param {boolean=} bSilent = false
*/
;
_proto.messageList = function messageList(fCallback, sFolderFullNameRaw, iOffset, iLimit, sSearch, sThreadUid, bSilent) {
if (iOffset === void 0) {
iOffset = 0;
}
if (iLimit === void 0) {
iLimit = 20;
}
if (sSearch === void 0) {
sSearch = '';
}
if (sThreadUid === void 0) {
sThreadUid = '';
}
if (bSilent === void 0) {
bSilent = false;
}
sFolderFullNameRaw = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pString"])(sFolderFullNameRaw);
var folderHash = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getFolderHash */ "g"])(sFolderFullNameRaw),
useThreads = Stores_User_App__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].threadsAllowed() && Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].useThreads(),
inboxUidNext = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getFolderInboxName */ "h"])() === sFolderFullNameRaw ? Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getFolderUidNext */ "i"])(sFolderFullNameRaw) : '';
if ('' !== folderHash && ('' === sSearch || -1 === sSearch.indexOf('is:'))) {
return this.defaultRequest(fCallback, 'MessageList', {}, '' === sSearch ? Common_Consts__WEBPACK_IMPORTED_MODULE_5__[/* DEFAULT_AJAX_TIMEOUT */ "g"] : Common_Consts__WEBPACK_IMPORTED_MODULE_5__[/* SEARCH_AJAX_TIMEOUT */ "m"], 'MessageList/' + Object(Common_Links__WEBPACK_IMPORTED_MODULE_7__[/* subQueryPrefix */ "E"])() + '/' + Common_Base64__WEBPACK_IMPORTED_MODULE_8__[/* urlsafe_encode */ "a"]([sFolderFullNameRaw, iOffset, iLimit, sSearch, Stores_User_App__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].projectHash(), folderHash, inboxUidNext, useThreads ? '1' : '0', useThreads ? sThreadUid : ''].join(String.fromCharCode(0))), bSilent ? [] : ['MessageList']);
}
return this.defaultRequest(fCallback, 'MessageList', {
Folder: sFolderFullNameRaw,
Offset: iOffset,
Limit: iLimit,
Search: sSearch,
UidNext: inboxUidNext,
UseThreads: useThreads ? '1' : '0',
ThreadUid: useThreads ? sThreadUid : ''
}, '' === sSearch ? Common_Consts__WEBPACK_IMPORTED_MODULE_5__[/* DEFAULT_AJAX_TIMEOUT */ "g"] : Common_Consts__WEBPACK_IMPORTED_MODULE_5__[/* SEARCH_AJAX_TIMEOUT */ "m"], '', bSilent ? [] : ['MessageList']);
}
/**
* @param {?Function} fCallback
* @param {Array} aDownloads
*/
;
_proto.messageUploadAttachments = function messageUploadAttachments(fCallback, aDownloads) {
this.defaultRequest(fCallback, 'MessageUploadAttachments', {
'Attachments': aDownloads
}, 999000);
}
/**
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
* @param {number} iUid
* @returns {boolean}
*/
;
_proto.message = function message(fCallback, sFolderFullNameRaw, iUid) {
sFolderFullNameRaw = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pString"])(sFolderFullNameRaw);
iUid = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pInt"])(iUid);
if (Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getFolderFromCacheList */ "e"])(sFolderFullNameRaw) && 0 < iUid) {
this.defaultRequest(fCallback, 'Message', {}, null, 'Message/' + Object(Common_Links__WEBPACK_IMPORTED_MODULE_7__[/* subQueryPrefix */ "E"])() + '/' + Common_Base64__WEBPACK_IMPORTED_MODULE_8__[/* urlsafe_encode */ "a"]([sFolderFullNameRaw, iUid, Stores_User_App__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].projectHash(), Stores_User_App__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].threadsAllowed() && Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].useThreads() ? '1' : '0'].join(String.fromCharCode(0))), ['Message']);
return true;
}
return false;
}
/**
* @param {?Function} fCallback
* @param {Array} aExternals
*/
;
_proto.composeUploadExternals = function composeUploadExternals(fCallback, aExternals) {
this.defaultRequest(fCallback, 'ComposeUploadExternals', {
'Externals': aExternals
}, 999000);
}
/**
* @param {?Function} fCallback
* @param {string} sUrl
* @param {string} sAccessToken
*/
;
_proto.composeUploadDrive = function composeUploadDrive(fCallback, sUrl, sAccessToken) {
this.defaultRequest(fCallback, 'ComposeUploadDrive', {
'AccessToken': sAccessToken,
'Url': sUrl
}, 999000);
}
/**
* @param {?Function} fCallback
* @param {string} folder
* @param {Array=} list = []
*/
;
_proto.folderInformation = function folderInformation(fCallback, folder, list) {
if (list === void 0) {
list = [];
}
var request = true;
var uids = [];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isArray"])(list) && 0 < list.length) {
request = false;
___WEBPACK_IMPORTED_MODULE_3___default.a.each(list, function (messageListItem) {
if (!Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getMessageFlagsFromCache */ "j"])(messageListItem.folderFullNameRaw, messageListItem.uid)) {
uids.push(messageListItem.uid);
}
if (0 < messageListItem.threads().length) {
___WEBPACK_IMPORTED_MODULE_3___default.a.each(messageListItem.threads(), function (uid) {
if (!Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getMessageFlagsFromCache */ "j"])(messageListItem.folderFullNameRaw, uid)) {
uids.push(uid);
}
});
}
});
if (0 < uids.length) {
request = true;
}
}
if (request) {
this.defaultRequest(fCallback, 'FolderInformation', {
'Folder': folder,
'FlagsUids': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isArray"])(uids) ? uids.join(',') : '',
'UidNext': Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getFolderInboxName */ "h"])() === folder ? Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* getFolderUidNext */ "i"])(folder) : ''
});
} else if (Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].useThreads()) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_12__[/* getApp */ "a"])().reloadFlagsCurrentMessageListAndMessageFromCache();
}
}
/**
* @param {?Function} fCallback
* @param {Array} aFolders
*/
;
_proto.folderInformationMultiply = function folderInformationMultiply(fCallback, aFolders) {
this.defaultRequest(fCallback, 'FolderInformationMultiply', {
'Folders': aFolders
});
}
/**
* @param {?Function} fCallback
*/
;
_proto.logout = function logout(fCallback) {
this.defaultRequest(fCallback, 'Logout');
}
/**
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
* @param {Array} aUids
* @param {boolean} bSetFlagged
*/
;
_proto.messageSetFlagged = function messageSetFlagged(fCallback, sFolderFullNameRaw, aUids, bSetFlagged) {
this.defaultRequest(fCallback, 'MessageSetFlagged', {
'Folder': sFolderFullNameRaw,
'Uids': aUids.join(','),
'SetAction': bSetFlagged ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
* @param {Array} aUids
* @param {boolean} bSetSeen
*/
;
_proto.messageSetSeen = function messageSetSeen(fCallback, sFolderFullNameRaw, aUids, bSetSeen) {
this.defaultRequest(fCallback, 'MessageSetSeen', {
'Folder': sFolderFullNameRaw,
'Uids': aUids.join(','),
'SetAction': bSetSeen ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
* @param {boolean} bSetSeen
* @param {Array} aThreadUids = null
*/
;
_proto.messageSetSeenToAll = function messageSetSeenToAll(fCallback, sFolderFullNameRaw, bSetSeen, aThreadUids) {
if (aThreadUids === void 0) {
aThreadUids = null;
}
this.defaultRequest(fCallback, 'MessageSetSeenToAll', {
'Folder': sFolderFullNameRaw,
'SetAction': bSetSeen ? '1' : '0',
'ThreadUids': aThreadUids ? aThreadUids.join(',') : ''
});
}
/**
* @param {?Function} fCallback
* @param {string} sIdentityID
* @param {string} sMessageFolder
* @param {string} sMessageUid
* @param {string} sDraftFolder
* @param {string} sTo
* @param {string} sCc
* @param {string} sBcc
* @param {string} sReplyTo
* @param {string} sSubject
* @param {boolean} bTextIsHtml
* @param {string} sText
* @param {Array} aAttachments
* @param {(Array|null)} aDraftInfo
* @param {string} sInReplyTo
* @param {string} sReferences
* @param {boolean} bMarkAsImportant
*/
;
_proto.saveMessage = function saveMessage(fCallback, sIdentityID, sMessageFolder, sMessageUid, sDraftFolder, sTo, sCc, sBcc, sReplyTo, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bMarkAsImportant) {
this.defaultRequest(fCallback, 'SaveMessage', {
'IdentityID': sIdentityID,
'MessageFolder': sMessageFolder,
'MessageUid': sMessageUid,
'DraftFolder': sDraftFolder,
'To': sTo,
'Cc': sCc,
'Bcc': sBcc,
'ReplyTo': sReplyTo,
'Subject': sSubject,
'TextIsHtml': bTextIsHtml ? '1' : '0',
'Text': sText,
'DraftInfo': aDraftInfo,
'InReplyTo': sInReplyTo,
'References': sReferences,
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
'Attachments': aAttachments
}, Common_Consts__WEBPACK_IMPORTED_MODULE_5__[/* SAVE_MESSAGE_AJAX_TIMEOUT */ "l"]);
}
/**
* @param {?Function} fCallback
* @param {string} sMessageFolder
* @param {string} sMessageUid
* @param {string} sReadReceipt
* @param {string} sSubject
* @param {string} sText
*/
;
_proto.sendReadReceiptMessage = function sendReadReceiptMessage(fCallback, sMessageFolder, sMessageUid, sReadReceipt, sSubject, sText) {
this.defaultRequest(fCallback, 'SendReadReceiptMessage', {
'MessageFolder': sMessageFolder,
'MessageUid': sMessageUid,
'ReadReceipt': sReadReceipt,
'Subject': sSubject,
'Text': sText
});
}
/**
* @param {?Function} fCallback
* @param {string} sIdentityID
* @param {string} sMessageFolder
* @param {string} sMessageUid
* @param {string} sSentFolder
* @param {string} sTo
* @param {string} sCc
* @param {string} sBcc
* @param {string} sReplyTo
* @param {string} sSubject
* @param {boolean} bTextIsHtml
* @param {string} sText
* @param {Array} aAttachments
* @param {(Array|null)} aDraftInfo
* @param {string} sInReplyTo
* @param {string} sReferences
* @param {boolean} bRequestDsn
* @param {boolean} bRequestReadReceipt
* @param {boolean} bMarkAsImportant
*/
;
_proto.sendMessage = function sendMessage(fCallback, sIdentityID, sMessageFolder, sMessageUid, sSentFolder, sTo, sCc, sBcc, sReplyTo, sSubject, bTextIsHtml, sText, aAttachments, aDraftInfo, sInReplyTo, sReferences, bRequestDsn, bRequestReadReceipt, bMarkAsImportant) {
this.defaultRequest(fCallback, 'SendMessage', {
'IdentityID': sIdentityID,
'MessageFolder': sMessageFolder,
'MessageUid': sMessageUid,
'SentFolder': sSentFolder,
'To': sTo,
'Cc': sCc,
'Bcc': sBcc,
'ReplyTo': sReplyTo,
'Subject': sSubject,
'TextIsHtml': bTextIsHtml ? '1' : '0',
'Text': sText,
'DraftInfo': aDraftInfo,
'InReplyTo': sInReplyTo,
'References': sReferences,
'Dsn': bRequestDsn ? '1' : '0',
'ReadReceiptRequest': bRequestReadReceipt ? '1' : '0',
'MarkAsImportant': bMarkAsImportant ? '1' : '0',
'Attachments': aAttachments
}, Common_Consts__WEBPACK_IMPORTED_MODULE_5__[/* SEND_MESSAGE_AJAX_TIMEOUT */ "n"]);
}
/**
* @param {?Function} fCallback
* @param {Object} oData
*/
;
_proto.saveSystemFolders = function saveSystemFolders(fCallback, oData) {
this.defaultRequest(fCallback, 'SystemFoldersUpdate', oData);
}
/**
* @param {?Function} fCallback
* @param {Object} oData
*/
;
_proto.saveSettings = function saveSettings(fCallback, oData) {
this.defaultRequest(fCallback, 'SettingsUpdate', oData);
}
/**
* @param {string} key
* @param {?Function} valueFn
* @param {?Function} fn
*/
;
_proto.saveSettingsHelper = function saveSettingsHelper(key, valueFn, fn) {
var _this2 = this;
return function (value) {
var _this2$saveSettings;
_this2.saveSettings(fn || null, (_this2$saveSettings = {}, _this2$saveSettings[key] = valueFn ? valueFn(value) : value, _this2$saveSettings));
};
}
/**
* @param {?Function} fCallback
* @param {string} prevPassword
* @param {string} newPassword
*/
;
_proto.changePassword = function changePassword(fCallback, prevPassword, newPassword) {
this.defaultRequest(fCallback, 'ChangePassword', {
'PrevPassword': prevPassword,
'NewPassword': newPassword
});
}
/**
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
*/
;
_proto.folderClear = function folderClear(fCallback, sFolderFullNameRaw) {
this.defaultRequest(fCallback, 'FolderClear', {
'Folder': sFolderFullNameRaw
});
}
/**
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
* @param {boolean} bSubscribe
*/
;
_proto.folderSetSubscribe = function folderSetSubscribe(fCallback, sFolderFullNameRaw, bSubscribe) {
this.defaultRequest(fCallback, 'FolderSubscribe', {
'Folder': sFolderFullNameRaw,
'Subscribe': bSubscribe ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
* @param {string} sFolderFullNameRaw
* @param {boolean} bCheckable
*/
;
_proto.folderSetCheckable = function folderSetCheckable(fCallback, sFolderFullNameRaw, bCheckable) {
this.defaultRequest(fCallback, 'FolderCheckable', {
'Folder': sFolderFullNameRaw,
'Checkable': bCheckable ? '1' : '0'
});
}
/**
* @param {?Function} fCallback
* @param {string} sFolder
* @param {string} sToFolder
* @param {Array} aUids
* @param {string=} sLearning
* @param {boolean=} bMarkAsRead
*/
;
_proto.messagesMove = function messagesMove(fCallback, sFolder, sToFolder, aUids, sLearning, bMarkAsRead) {
this.defaultRequest(fCallback, 'MessageMove', {
'FromFolder': sFolder,
'ToFolder': sToFolder,
'Uids': aUids.join(','),
'MarkAsRead': bMarkAsRead ? '1' : '0',
'Learning': sLearning || ''
}, null, '', ['MessageList']);
}
/**
* @param {?Function} fCallback
* @param {string} sFolder
* @param {string} sToFolder
* @param {Array} aUids
*/
;
_proto.messagesCopy = function messagesCopy(fCallback, sFolder, sToFolder, aUids) {
this.defaultRequest(fCallback, 'MessageCopy', {
'FromFolder': sFolder,
'ToFolder': sToFolder,
'Uids': aUids.join(',')
});
}
/**
* @param {?Function} fCallback
* @param {string} sFolder
* @param {Array} aUids
*/
;
_proto.messagesDelete = function messagesDelete(fCallback, sFolder, aUids) {
this.defaultRequest(fCallback, 'MessageDelete', {
'Folder': sFolder,
'Uids': aUids.join(',')
}, null, '', ['MessageList']);
}
/**
* @param {?Function} fCallback
*/
;
_proto.appDelayStart = function appDelayStart(fCallback) {
this.defaultRequest(fCallback, 'AppDelayStart');
}
/**
* @param {?Function} fCallback
*/
;
_proto.quota = function quota(fCallback) {
this.defaultRequest(fCallback, 'Quota');
}
/**
* @param {?Function} fCallback
* @param {number} iOffset
* @param {number} iLimit
* @param {string} sSearch
*/
;
_proto.contacts = function contacts(fCallback, iOffset, iLimit, sSearch) {
this.defaultRequest(fCallback, 'Contacts', {
'Offset': iOffset,
'Limit': iLimit,
'Search': sSearch
}, null, '', ['Contacts']);
}
/**
* @param {?Function} fCallback
* @param {string} sRequestUid
* @param {string} sUid
* @param {Array} aProperties
*/
;
_proto.contactSave = function contactSave(fCallback, sRequestUid, sUid, aProperties) {
this.defaultRequest(fCallback, 'ContactSave', {
'RequestUid': sRequestUid,
'Uid': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["trim"])(sUid),
'Properties': aProperties
});
}
/**
* @param {?Function} fCallback
* @param {Array} aUids
*/
;
_proto.contactsDelete = function contactsDelete(fCallback, aUids) {
this.defaultRequest(fCallback, 'ContactsDelete', {
'Uids': aUids.join(',')
});
}
/**
* @param {?Function} fCallback
* @param {string} sQuery
* @param {number} iPage
*/
;
_proto.suggestions = function suggestions(fCallback, sQuery, iPage) {
this.defaultRequest(fCallback, 'Suggestions', {
'Query': sQuery,
'Page': iPage
}, null, '', ['Suggestions']);
}
/**
* @param {?Function} fCallback
*/
;
_proto.clearUserBackground = function clearUserBackground(fCallback) {
this.defaultRequest(fCallback, 'ClearUserBackground');
}
/**
* @param {?Function} fCallback
*/
;
_proto.facebookUser = function facebookUser(fCallback) {
this.defaultRequest(fCallback, 'SocialFacebookUserInformation');
}
/**
* @param {?Function} fCallback
*/
;
_proto.facebookDisconnect = function facebookDisconnect(fCallback) {
this.defaultRequest(fCallback, 'SocialFacebookDisconnect');
}
/**
* @param {?Function} fCallback
*/
;
_proto.twitterUser = function twitterUser(fCallback) {
this.defaultRequest(fCallback, 'SocialTwitterUserInformation');
}
/**
* @param {?Function} fCallback
*/
;
_proto.twitterDisconnect = function twitterDisconnect(fCallback) {
this.defaultRequest(fCallback, 'SocialTwitterDisconnect');
}
/**
* @param {?Function} fCallback
*/
;
_proto.googleUser = function googleUser(fCallback) {
this.defaultRequest(fCallback, 'SocialGoogleUserInformation');
}
/**
* @param {?Function} fCallback
*/
;
_proto.googleDisconnect = function googleDisconnect(fCallback) {
this.defaultRequest(fCallback, 'SocialGoogleDisconnect');
}
/**
* @param {?Function} fCallback
*/
;
_proto.socialUsers = function socialUsers(fCallback) {
this.defaultRequest(fCallback, 'SocialUsers');
};
return RemoteUserAjax;
}(Remote_AbstractAjax__WEBPACK_IMPORTED_MODULE_13__[/* AbstractAjaxRemote */ "a"]);
/* harmony default export */ __webpack_exports__["a"] = (new RemoteUserAjax());
/***/ }),
/* 17 */
/*!****************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/map.js ***!
\****************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/map */ 348);
/***/ }),
/* 18 */,
/* 19 */
/*!*************************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor.js ***!
\*************************************************************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _applyDecoratedDescriptor; });
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_for_each__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/for-each */ 297);
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_for_each__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_instance_for_each__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_corejs3_core_js_object_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/keys */ 298);
/* harmony import */ var _babel_runtime_corejs3_core_js_object_keys__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_object_keys__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_reduce__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/reduce */ 299);
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_reduce__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_instance_reduce__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_reverse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/reverse */ 300);
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_reverse__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_instance_reverse__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_slice__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/instance/slice */ 301);
/* harmony import */ var _babel_runtime_corejs3_core_js_instance_slice__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_instance_slice__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_object_define_property__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/define-property */ 302);
/* harmony import */ var _babel_runtime_corejs3_core_js_object_define_property__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_object_define_property__WEBPACK_IMPORTED_MODULE_5__);
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var _context, _context2, _context3;
var desc = {};
_babel_runtime_corejs3_core_js_instance_for_each__WEBPACK_IMPORTED_MODULE_0___default()(_context = _babel_runtime_corejs3_core_js_object_keys__WEBPACK_IMPORTED_MODULE_1___default()(descriptor)).call(_context, function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = _babel_runtime_corejs3_core_js_instance_reduce__WEBPACK_IMPORTED_MODULE_2___default()(_context2 = _babel_runtime_corejs3_core_js_instance_reverse__WEBPACK_IMPORTED_MODULE_3___default()(_context3 = _babel_runtime_corejs3_core_js_instance_slice__WEBPACK_IMPORTED_MODULE_4___default()(decorators).call(decorators)).call(_context3)).call(_context2, function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
_babel_runtime_corejs3_core_js_object_define_property__WEBPACK_IMPORTED_MODULE_5___default()(target, property, desc);
desc = null;
}
return desc;
}
/***/ }),
/* 20 */
/*!**************************************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor.js ***!
\**************************************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/object/get-own-property-descriptor */ 389);
/***/ }),
/* 21 */
/*!*****************************!*\
!*** external "window.key" ***!
\*****************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.key;
/***/ }),
/* 22 */
/*!*********************************!*\
!*** ./dev/Helper/Apps/User.js ***!
\*********************************/
/*! exports provided: getApp */
/*! exports used: getApp */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getApp; });
/**
* @returns {AppUser}
*/
function getApp() {
return __webpack_require__(/*! App/User */ 402).default;
}
/***/ }),
/* 23 */
/*!******************************!*\
!*** ./dev/Common/Events.js ***!
\******************************/
/*! exports provided: sub, pub */
/*! exports used: pub, sub */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return sub; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return pub; });
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Plugins */ 36);
var SUBS = {};
/**
* @param {string|Object} name
* @param {Function} func
* @param {Object=} context
*/
function sub(name, func, context) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isObject"])(name)) {
context = func || null;
func = null;
___WEBPACK_IMPORTED_MODULE_0___default.a.each(name, function (subFunc, subName) {
sub(subName, subFunc, context);
});
} else {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(SUBS[name])) {
SUBS[name] = [];
}
SUBS[name].push([func, context]);
}
}
/**
* @param {string} name
* @param {Array=} args
*/
function pub(name, args) {
Common_Plugins__WEBPACK_IMPORTED_MODULE_2__[/* runHook */ "f"]('rl-pub', [name, args]);
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(SUBS[name])) {
___WEBPACK_IMPORTED_MODULE_0___default.a.each(SUBS[name], function (items) {
if (items[0]) {
items[0].apply(items[1] || null, args || []);
}
});
}
}
/***/ }),
/* 24 */
/*!******************************!*\
!*** ./dev/Common/Consts.js ***!
\******************************/
/*! exports provided: MESSAGES_PER_PAGE, MESSAGES_PER_PAGE_VALUES, CONTACTS_PER_PAGE, DEFAULT_AJAX_TIMEOUT, SEARCH_AJAX_TIMEOUT, SEND_MESSAGE_AJAX_TIMEOUT, SAVE_MESSAGE_AJAX_TIMEOUT, CONTACTS_SYNC_AJAX_TIMEOUT, UNUSED_OPTION_VALUE, CLIENT_SIDE_STORAGE_INDEX_NAME, IMAP_DEFAULT_PORT, IMAP_DEFAULT_SECURE_PORT, SMTP_DEFAULT_PORT, SMTP_DEFAULT_SECURE_PORT, SIEVE_DEFAULT_PORT, MESSAGE_BODY_CACHE_LIMIT, AJAX_ERROR_LIMIT, TOKEN_ERROR_LIMIT, RAINLOOP_TRIAL_KEY, DATA_IMAGE_USER_DOT_PIC, DATA_IMAGE_TRANSP_PIC, DATA_IMAGE_LAZY_PLACEHOLDER_PIC */
/*! exports used: AJAX_ERROR_LIMIT, CLIENT_SIDE_STORAGE_INDEX_NAME, CONTACTS_PER_PAGE, CONTACTS_SYNC_AJAX_TIMEOUT, DATA_IMAGE_LAZY_PLACEHOLDER_PIC, DATA_IMAGE_USER_DOT_PIC, DEFAULT_AJAX_TIMEOUT, IMAP_DEFAULT_PORT, MESSAGES_PER_PAGE, MESSAGES_PER_PAGE_VALUES, MESSAGE_BODY_CACHE_LIMIT, SAVE_MESSAGE_AJAX_TIMEOUT, SEARCH_AJAX_TIMEOUT, SEND_MESSAGE_AJAX_TIMEOUT, SIEVE_DEFAULT_PORT, SMTP_DEFAULT_PORT, TOKEN_ERROR_LIMIT, UNUSED_OPTION_VALUE */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "i", function() { return MESSAGES_PER_PAGE; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "j", function() { return MESSAGES_PER_PAGE_VALUES; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return CONTACTS_PER_PAGE; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return DEFAULT_AJAX_TIMEOUT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "m", function() { return SEARCH_AJAX_TIMEOUT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "n", function() { return SEND_MESSAGE_AJAX_TIMEOUT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "l", function() { return SAVE_MESSAGE_AJAX_TIMEOUT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return CONTACTS_SYNC_AJAX_TIMEOUT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "r", function() { return UNUSED_OPTION_VALUE; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return CLIENT_SIDE_STORAGE_INDEX_NAME; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return IMAP_DEFAULT_PORT; });
/* unused harmony export IMAP_DEFAULT_SECURE_PORT */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "p", function() { return SMTP_DEFAULT_PORT; });
/* unused harmony export SMTP_DEFAULT_SECURE_PORT */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "o", function() { return SIEVE_DEFAULT_PORT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "k", function() { return MESSAGE_BODY_CACHE_LIMIT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AJAX_ERROR_LIMIT; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "q", function() { return TOKEN_ERROR_LIMIT; });
/* unused harmony export RAINLOOP_TRIAL_KEY */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return DATA_IMAGE_USER_DOT_PIC; });
/* unused harmony export DATA_IMAGE_TRANSP_PIC */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return DATA_IMAGE_LAZY_PLACEHOLDER_PIC; });
var MESSAGES_PER_PAGE = 20;
var MESSAGES_PER_PAGE_VALUES = [10, 20, 30, 50, 100];
var CONTACTS_PER_PAGE = 50;
var DEFAULT_AJAX_TIMEOUT = 30000;
var SEARCH_AJAX_TIMEOUT = 300000;
var SEND_MESSAGE_AJAX_TIMEOUT = 300000;
var SAVE_MESSAGE_AJAX_TIMEOUT = 200000;
var CONTACTS_SYNC_AJAX_TIMEOUT = 200000;
var UNUSED_OPTION_VALUE = '__UNUSE__';
var CLIENT_SIDE_STORAGE_INDEX_NAME = 'rlcsc';
var IMAP_DEFAULT_PORT = 143;
var IMAP_DEFAULT_SECURE_PORT = 993;
var SMTP_DEFAULT_PORT = 25;
var SMTP_DEFAULT_SECURE_PORT = 465;
var SIEVE_DEFAULT_PORT = 4190;
var MESSAGE_BODY_CACHE_LIMIT = 15;
var AJAX_ERROR_LIMIT = 7;
var TOKEN_ERROR_LIMIT = 10;
var RAINLOOP_TRIAL_KEY = 'RAINLOOP-TRIAL-KEY';
/* eslint max-len: 0 */
var DATA_IMAGE_USER_DOT_PIC = 'data:image/png;base64,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';
var DATA_IMAGE_TRANSP_PIC = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=';
var DATA_IMAGE_LAZY_PLACEHOLDER_PIC = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC';
/***/ }),
/* 25 */
/*!***************************************!*\
!*** ./dev/Knoin/AbstractViewNext.js ***!
\***************************************/
/*! exports provided: AbstractViewNext */
/*! exports used: AbstractViewNext */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractViewNext; });
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Globals */ 6);
var AbstractViewNext = /*#__PURE__*/function () {
function AbstractViewNext() {
this.bDisabeCloseOnEsc = false;
this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_2__["KeyState"].None;
this.sCurrentKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_2__["KeyState"].None;
this.viewModelVisibility = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false);
this.modalVisibility = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
rateLimit: 0
});
this.viewModelName = '';
this.viewModelNames = [];
this.viewModelDom = null;
}
var _proto = AbstractViewNext.prototype;
/**
* @returns {void}
*/
_proto.storeAndSetKeyScope = function storeAndSetKeyScope() {
this.sCurrentKeyScope = Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["keyScope"])();
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["keyScope"])(this.sDefaultKeyScope);
}
/**
* @returns {void}
*/
;
_proto.restoreKeyScope = function restoreKeyScope() {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["keyScope"])(this.sCurrentKeyScope);
}
/**
* @returns {void}
*/
;
_proto.registerPopupKeyDown = function registerPopupKeyDown() {
var _this = this;
Common_Globals__WEBPACK_IMPORTED_MODULE_3__["$win"].on('keydown', function (event) {
if (event && _this.modalVisibility && _this.modalVisibility()) {
if (!_this.bDisabeCloseOnEsc && Common_Enums__WEBPACK_IMPORTED_MODULE_2__["EventKeyCode"].Esc === event.keyCode) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["delegateRun"])(_this, 'cancelCommand');
return false;
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_2__["EventKeyCode"].Backspace === event.keyCode && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["inFocus"])()) {
return false;
}
}
return true;
});
};
_proto.cancelCommand = function cancelCommand() {} // eslint-disable-line no-empty-function
;
_proto.closeCommand = function closeCommand() {} // eslint-disable-line no-empty-function
;
return AbstractViewNext;
}();
/***/ }),
/* 26 */
/*!******************************!*\
!*** ./dev/Stores/Social.js ***!
\******************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Storage/Settings */ 5);
var SocialStore = /*#__PURE__*/function () {
function SocialStore() {
var _this = this;
this.google = {};
this.twitter = {};
this.facebook = {};
this.dropbox = {}; // Google
this.google.enabled = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.google.clientID = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.google.clientSecret = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.google.apiKey = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.google.loading = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.google.userName = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.google.loggined = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return '' !== _this.google.userName();
});
this.google.capa = {};
this.google.capa.auth = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.google.capa.authGmail = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.google.capa.drive = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.google.capa.preview = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.google.require = {};
this.google.require.clientSettings = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return _this.google.enabled() && (_this.google.capa.auth() || _this.google.capa.authGmail() || _this.google.capa.drive());
});
this.google.require.apiKeySettings = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return _this.google.enabled() && _this.google.capa.drive();
}); // Facebook
this.facebook.enabled = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.facebook.appID = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.facebook.appSecret = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.facebook.loading = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.facebook.userName = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.facebook.supported = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.facebook.loggined = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return '' !== _this.facebook.userName();
}); // Twitter
this.twitter.enabled = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.twitter.consumerKey = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.twitter.consumerSecret = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.twitter.loading = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.twitter.userName = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.twitter.loggined = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return '' !== _this.twitter.userName();
}); // Dropbox
this.dropbox.enabled = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
this.dropbox.apiKey = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
}
var _proto = SocialStore.prototype;
_proto.populate = function populate() {
this.google.enabled(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowGoogleSocial'));
this.google.clientID(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('GoogleClientID'));
this.google.clientSecret(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('GoogleClientSecret'));
this.google.apiKey(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('GoogleApiKey'));
this.google.capa.auth(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowGoogleSocialAuth'));
this.google.capa.authGmail(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowGoogleSocialAuthGmail'));
this.google.capa.drive(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowGoogleSocialDrive'));
this.google.capa.preview(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowGoogleSocialPreview'));
this.facebook.enabled(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowFacebookSocial'));
this.facebook.appID(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('FacebookAppID'));
this.facebook.appSecret(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('FacebookAppSecret'));
this.facebook.supported(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('SupportedFacebookSocial'));
this.twitter.enabled = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowTwitterSocial'));
this.twitter.consumerKey = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('TwitterConsumerKey'));
this.twitter.consumerSecret = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('TwitterConsumerSecret'));
this.dropbox.enabled(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('AllowDropboxSocial'));
this.dropbox.apiKey(Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('DropboxApiKey'));
};
_proto.appendDropbox = function appendDropbox() {
if (!window__WEBPACK_IMPORTED_MODULE_0___default.a.Dropbox && this.dropbox.enabled() && this.dropbox.apiKey()) {
if (!window__WEBPACK_IMPORTED_MODULE_0___default.a.document.getElementById('dropboxjs')) {
var script = window__WEBPACK_IMPORTED_MODULE_0___default.a.document.createElement('script');
script.type = 'text/javascript';
script.src = 'https://www.dropbox.com/static/api/2/dropins.js';
$__WEBPACK_IMPORTED_MODULE_2___default()(script).attr('id', 'dropboxjs').attr('data-app-key', this.dropbox.apiKey());
window__WEBPACK_IMPORTED_MODULE_0___default.a.document.body.appendChild(script);
}
}
};
return SocialStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new SocialStore());
/***/ }),
/* 27 */
/*!********************************!*\
!*** ./dev/Stores/User/App.js ***!
\********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Stores_AbstractApp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Stores/AbstractApp */ 296);
var AppUserStore = /*#__PURE__*/function (_AbstractAppStore) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AppUserStore, _AbstractAppStore);
function AppUserStore() {
var _this;
_this = _AbstractAppStore.call(this) || this;
_this.currentAudio = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.focusedState = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Focused"].None);
var isMobile = Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["appSettingsGet"]('mobile');
_this.focusedState.subscribe(function (value) {
switch (value) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Focused"].MessageList:
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["keyScope"])(Common_Enums__WEBPACK_IMPORTED_MODULE_2__["KeyState"].MessageList);
if (isMobile) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["leftPanelDisabled"])(true);
}
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Focused"].MessageView:
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["keyScope"])(Common_Enums__WEBPACK_IMPORTED_MODULE_2__["KeyState"].MessageView);
if (isMobile) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["leftPanelDisabled"])(true);
}
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Focused"].FolderList:
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["keyScope"])(Common_Enums__WEBPACK_IMPORTED_MODULE_2__["KeyState"].FolderList);
if (isMobile) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["leftPanelDisabled"])(false);
}
break;
default:
break;
}
});
_this.projectHash = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.threadsAllowed = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.composeInEdit = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.contactsAutosave = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.useLocalProxyForExternalImages = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.contactsIsAllowed = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.attachmentsActions = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observableArray([]);
_this.devEmail = '';
_this.devPassword = '';
return _this;
}
var _proto = AppUserStore.prototype;
_proto.populate = function populate() {
_AbstractAppStore.prototype.populate.call(this);
this.projectHash(Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["settingsGet"]('ProjectHash'));
this.contactsAutosave(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["settingsGet"]('ContactsAutosave'));
this.useLocalProxyForExternalImages(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["settingsGet"]('UseLocalProxyForExternalImages'));
this.contactsIsAllowed(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["settingsGet"]('ContactsIsAllowed'));
var attachmentsActions = Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["appSettingsGet"]('attachmentsActions');
this.attachmentsActions(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isNonEmptyArray"])(attachmentsActions) ? attachmentsActions : []);
this.devEmail = Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["settingsGet"]('DevEmail');
this.devPassword = Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["settingsGet"]('DevPassword');
};
return AppUserStore;
}(Stores_AbstractApp__WEBPACK_IMPORTED_MODULE_6__[/* AbstractAppStore */ "a"]);
/* harmony default export */ __webpack_exports__["a"] = (new AppUserStore());
/***/ }),
/* 28 */
/*!*******************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/filter.js ***!
\*******************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/filter */ 358);
/***/ }),
/* 29 */
/*!**********************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/helpers/esm/assertThisInitialized.js ***!
\**********************************************************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; });
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
/***/ }),
/* 30 */
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/global.js ***!
\**************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
// eslint-disable-next-line es/no-global-this -- safe
check(typeof globalThis == 'object' && globalThis) ||
check(typeof window == 'object' && window) ||
// eslint-disable-next-line no-restricted-globals -- safe
check(typeof self == 'object' && self) ||
check(typeof global == 'object' && global) ||
// eslint-disable-next-line no-new-func -- fallback
(function () { return this; })() || Function('return this')();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ 126)))
/***/ }),
/* 31 */
/*!*******************************************************!*\
!*** ./node_modules/core-js-pure/internals/global.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
// eslint-disable-next-line no-undef
check(typeof globalThis == 'object' && globalThis) ||
check(typeof window == 'object' && window) ||
check(typeof self == 'object' && self) ||
check(typeof global == 'object' && global) ||
// eslint-disable-next-line no-new-func
(function () { return this; })() || Function('return this')();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ 126)))
/***/ }),
/* 32 */
/*!***********************************!*\
!*** ./dev/Component/Abstract.js ***!
\***********************************/
/*! exports provided: AbstractComponent, componentExportHelper */
/*! exports used: AbstractComponent, componentExportHelper */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractComponent; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return componentExportHelper; });
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 151);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Translator */ 9);
var AbstractComponent = /*#__PURE__*/function () {
function AbstractComponent() {
this.disposable = [];
}
var _proto = AbstractComponent.prototype;
_proto.dispose = function dispose() {
this.disposable.forEach(function (funcToDispose) {
if (funcToDispose && funcToDispose.dispose) {
funcToDispose.dispose();
}
});
};
return AbstractComponent;
}();
/**
* @param {*} ClassObject
* @param {string} templateID = ''
* @returns {Object}
*/
var componentExportHelper = function componentExportHelper(ClassObject, templateID) {
if (templateID === void 0) {
templateID = '';
}
return {
template: templateID ? {
element: templateID
} : '<b></b>',
viewModel: {
createViewModel: function createViewModel(params, componentInfo) {
params = params || {};
params.element = null;
if (componentInfo && componentInfo.element) {
params.component = componentInfo;
params.element = $__WEBPACK_IMPORTED_MODULE_1___default()(componentInfo.element);
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18nToNodes"])(params.element);
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isUnd"])(params.inline) && ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].unwrap(params.inline)) {
params.element.css('display', 'inline-block');
}
}
return new ClassObject(params);
}
}
};
};
/***/ }),
/* 33 */
/*!***************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/set-timeout.js ***!
\***************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/set-timeout */ 248);
/***/ }),
/* 34 */
/*!*******************************************************!*\
!*** ./node_modules/core-js-pure/internals/export.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var global = __webpack_require__(/*! ../internals/global */ 31);
var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ 157).f;
var isForced = __webpack_require__(/*! ../internals/is-forced */ 187);
var path = __webpack_require__(/*! ../internals/path */ 51);
var bind = __webpack_require__(/*! ../internals/function-bind-context */ 116);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
var has = __webpack_require__(/*! ../internals/has */ 54);
var wrapConstructor = function (NativeConstructor) {
var Wrapper = function (a, b, c) {
if (this instanceof NativeConstructor) {
switch (arguments.length) {
case 0: return new NativeConstructor();
case 1: return new NativeConstructor(a);
case 2: return new NativeConstructor(a, b);
} return new NativeConstructor(a, b, c);
} return NativeConstructor.apply(this, arguments);
};
Wrapper.prototype = NativeConstructor.prototype;
return Wrapper;
};
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
*/
module.exports = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var PROTO = options.proto;
var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;
var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});
var targetPrototype = target.prototype;
var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;
var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;
for (key in source) {
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contains in native
USE_NATIVE = !FORCED && nativeSource && has(nativeSource, key);
targetProperty = target[key];
if (USE_NATIVE) if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor(nativeSource, key);
nativeProperty = descriptor && descriptor.value;
} else nativeProperty = nativeSource[key];
// export native or implementation
sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];
if (USE_NATIVE && typeof targetProperty === typeof sourceProperty) continue;
// bind timers to global for call from export context
if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);
// wrap global constructors for prevent changs in this version
else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);
// make static versions for prototype methods
else if (PROTO && typeof sourceProperty == 'function') resultProperty = bind(Function.call, sourceProperty);
// default case
else resultProperty = sourceProperty;
// add a flag to not completely full polyfills
if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {
createNonEnumerableProperty(resultProperty, 'sham', true);
}
target[key] = resultProperty;
if (PROTO) {
VIRTUAL_PROTOTYPE = TARGET + 'Prototype';
if (!has(path, VIRTUAL_PROTOTYPE)) {
createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});
}
// export virtual prototype methods
path[VIRTUAL_PROTOTYPE][key] = sourceProperty;
// export real prototype methods
if (options.real && targetPrototype && !targetPrototype[key]) {
createNonEnumerableProperty(targetPrototype, key, sourceProperty);
}
}
}
};
/***/ }),
/* 35 */
/*!*************************************!*\
!*** ./dev/Stores/User/Settings.js ***!
\*************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Storage/Settings */ 5);
var SettingsUserStore = /*#__PURE__*/function () {
function SettingsUserStore() {
this.iAutoLogoutTimer = 0;
this.layout = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].SidePreview).extend({
limitedList: [Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].SidePreview, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].BottomPreview, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].NoPreview]
});
this.editorDefaultType = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["EditorDefaultType"].Html).extend({
limitedList: [Common_Enums__WEBPACK_IMPORTED_MODULE_4__["EditorDefaultType"].Html, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["EditorDefaultType"].Plain, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["EditorDefaultType"].HtmlForced, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["EditorDefaultType"].PlainForced]
});
this.messagesPerPage = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* MESSAGES_PER_PAGE */ "i"]).extend({
limitedList: Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* MESSAGES_PER_PAGE_VALUES */ "j"]
});
this.showImages = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.useCheckboxesInList = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(true);
this.allowDraftAutosave = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(true);
this.useThreads = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.replySameFolder = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.autoLogout = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Magics"].Time30mInMin);
this.computers();
this.subscribers();
}
var _proto = SettingsUserStore.prototype;
_proto.computers = function computers() {
var _this = this;
this.usePreviewPane = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].NoPreview !== _this.layout();
});
};
_proto.subscribers = function subscribers() {
this.layout.subscribe(function (value) {
Common_Globals__WEBPACK_IMPORTED_MODULE_5__["$html"].toggleClass('rl-no-preview-pane', Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].NoPreview === value);
Common_Globals__WEBPACK_IMPORTED_MODULE_5__["$html"].toggleClass('rl-side-preview-pane', Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].SidePreview === value);
Common_Globals__WEBPACK_IMPORTED_MODULE_5__["$html"].toggleClass('rl-bottom-preview-pane', Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Layout"].BottomPreview === value);
Common_Events__WEBPACK_IMPORTED_MODULE_7__[/* pub */ "a"]('layout', [value]);
});
};
_proto.populate = function populate() {
var _this2 = this;
this.layout(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pInt"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('Layout')));
this.editorDefaultType(Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('EditorDefaultType'));
this.autoLogout(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pInt"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('AutoLogout')));
this.messagesPerPage(Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('MPP'));
this.showImages(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('ShowImages'));
this.useCheckboxesInList(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('UseCheckboxesInList'));
this.allowDraftAutosave(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('AllowDraftAutosave'));
this.useThreads(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('UseThreads'));
this.replySameFolder(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('ReplySameFolder'));
Common_Events__WEBPACK_IMPORTED_MODULE_7__[/* sub */ "b"]('rl.auto-logout-refresh', function () {
window__WEBPACK_IMPORTED_MODULE_1___default.a.clearTimeout(_this2.iAutoLogoutTimer);
if (0 < _this2.autoLogout() && !Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsGet"]('AccountSignMe')) {
_this2.iAutoLogoutTimer = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0___default()(function () {
Common_Events__WEBPACK_IMPORTED_MODULE_7__[/* pub */ "a"]('rl.auto-logout');
}, _this2.autoLogout() * Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Magics"].Time1m);
}
});
Common_Events__WEBPACK_IMPORTED_MODULE_7__[/* pub */ "a"]('rl.auto-logout-refresh');
};
return SettingsUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new SettingsUserStore());
/***/ }),
/* 36 */
/*!*******************************!*\
!*** ./dev/Common/Plugins.js ***!
\*******************************/
/*! exports provided: addHook, runHook, mainSettingsGet, remoteRequest, addSettingsViewModel, addSettingsViewModelForAdmin, runSettingsViewModelHooks, settingsGet */
/*! exports used: addHook, addSettingsViewModel, addSettingsViewModelForAdmin, mainSettingsGet, remoteRequest, runHook, runSettingsViewModelHooks, settingsGet */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return addHook; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return runHook; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return mainSettingsGet; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return remoteRequest; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return addSettingsViewModel; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return addSettingsViewModelForAdmin; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return runSettingsViewModelHooks; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return settingsGet; });
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Storage/Settings */ 5);
var SIMPLE_HOOKS = {},
USER_VIEW_MODELS_HOOKS = [],
ADMIN_VIEW_MODELS_HOOKS = [];
/**
* @param {string} name
* @param {Function} callback
*/
function addHook(name, callback) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isFunc"])(callback)) {
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isArray"])(SIMPLE_HOOKS[name])) {
SIMPLE_HOOKS[name] = [];
}
SIMPLE_HOOKS[name].push(callback);
}
}
/**
* @param {string} name
* @param {Array=} args = []
*/
function runHook(name, args) {
if (args === void 0) {
args = [];
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isArray"])(SIMPLE_HOOKS[name])) {
___WEBPACK_IMPORTED_MODULE_0___default.a.each(SIMPLE_HOOKS[name], function (callback) {
callback.apply(void 0, args);
});
}
}
/**
* @param {string} name
* @returns {?}
*/
function mainSettingsGet(name) {
return Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"](name);
}
/**
* @param {Function} callback
* @param {string} action
* @param {Object=} parameters
* @param {?number=} timeout
*/
function remoteRequest(callback, action, parameters, timeout) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_2__["data"].__APP__) {
Common_Globals__WEBPACK_IMPORTED_MODULE_2__["data"].__APP__.remote().defaultRequest(callback, 'Plugin' + action, parameters, timeout);
}
}
/**
* @param {Function} SettingsViewModelClass
* @param {string} labelName
* @param {string} template
* @param {string} route
*/
function addSettingsViewModel(SettingsViewModelClass, template, labelName, route) {
USER_VIEW_MODELS_HOOKS.push([SettingsViewModelClass, template, labelName, route]);
}
/**
* @param {Function} SettingsViewModelClass
* @param {string} labelName
* @param {string} template
* @param {string} route
*/
function addSettingsViewModelForAdmin(SettingsViewModelClass, template, labelName, route) {
ADMIN_VIEW_MODELS_HOOKS.push([SettingsViewModelClass, template, labelName, route]);
}
/**
* @param {boolean} admin
*/
function runSettingsViewModelHooks(admin) {
var Knoin = __webpack_require__(/*! Knoin/Knoin */ 8);
___WEBPACK_IMPORTED_MODULE_0___default.a.each(admin ? ADMIN_VIEW_MODELS_HOOKS : USER_VIEW_MODELS_HOOKS, function (view) {
Knoin.addSettingsViewModel(view[0], view[1], view[2], view[3]);
});
}
/**
* @param {string} pluginSection
* @param {string} name
* @returns {?}
*/
function settingsGet(pluginSection, name) {
var plugins = Storage_Settings__WEBPACK_IMPORTED_MODULE_3__["settingsGet"]('Plugins');
plugins = plugins && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(plugins[pluginSection]) ? plugins[pluginSection] : null;
return plugins ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(plugins[name]) ? null : plugins[name] : null;
}
/***/ }),
/* 37 */
/*!*************************************************!*\
!*** ./node_modules/core-js/internals/fails.js ***!
\*************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
/***/ }),
/* 38 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/well-known-symbol.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var shared = __webpack_require__(/*! ../internals/shared */ 188);
var has = __webpack_require__(/*! ../internals/has */ 54);
var uid = __webpack_require__(/*! ../internals/uid */ 189);
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ 192);
var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ 261);
var WellKnownSymbolsStore = shared('wks');
var Symbol = global.Symbol;
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
module.exports = function (name) {
if (!has(WellKnownSymbolsStore, name)) {
if (NATIVE_SYMBOL && has(Symbol, name)) WellKnownSymbolsStore[name] = Symbol[name];
else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
} return WellKnownSymbolsStore[name];
};
/***/ }),
/* 39 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/well-known-symbol.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var shared = __webpack_require__(/*! ../internals/shared */ 104);
var has = __webpack_require__(/*! ../internals/has */ 44);
var uid = __webpack_require__(/*! ../internals/uid */ 136);
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ 137);
var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ 213);
var WellKnownSymbolsStore = shared('wks');
var Symbol = global.Symbol;
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
module.exports = function (name) {
if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {
if (NATIVE_SYMBOL && has(Symbol, name)) {
WellKnownSymbolsStore[name] = Symbol[name];
} else {
WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
}
} return WellKnownSymbolsStore[name];
};
/***/ }),
/* 40 */,
/* 41 */
/*!********************************!*\
!*** ./dev/Stores/User/Pgp.js ***!
\********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var PgpUserStore = /*#__PURE__*/function () {
function PgpUserStore() {
var _this = this;
this.capaOpenPGP = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
this.openpgp = null;
this.openpgpkeys = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observableArray([]);
this.openpgpKeyring = null;
this.openpgpkeysPublic = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, _this.openpgpkeys(), function (item) {
return !!(item && !item.isPrivate);
});
});
this.openpgpkeysPrivate = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, _this.openpgpkeys(), function (item) {
return !!(item && item.isPrivate);
});
});
}
/**
* @returns {boolean}
*/
var _proto = PgpUserStore.prototype;
_proto.isSupported = function isSupported() {
return !!this.openpgp;
};
_proto.findKeyByHex = function findKeyByHex(keys, hash) {
return _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, keys, function (item) {
return hash && item && (hash === item.id || -1 < item.ids.indexOf(hash));
});
};
_proto.findPublicKeyByHex = function findPublicKeyByHex(hash) {
return this.findKeyByHex(this.openpgpkeysPublic(), hash);
};
_proto.findPrivateKeyByHex = function findPrivateKeyByHex(hash) {
return this.findKeyByHex(this.openpgpkeysPrivate(), hash);
};
_proto.findPublicKeysByEmail = function findPublicKeysByEmail(email) {
return ___WEBPACK_IMPORTED_MODULE_5___default.a.compact(___WEBPACK_IMPORTED_MODULE_5___default.a.flatten(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, this.openpgpkeysPublic(), function (item) {
var key = item && -1 < item.emails.indexOf(email) ? item : null;
return key ? key.getNativeKeys() : [null];
}), true));
};
_proto.findPublicKeysBySigningKeyIds = function findPublicKeysBySigningKeyIds(signingKeyIds) {
var _this2 = this;
return ___WEBPACK_IMPORTED_MODULE_5___default.a.compact(___WEBPACK_IMPORTED_MODULE_5___default.a.flatten(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, signingKeyIds, function (id) {
var key = id && id.toHex ? _this2.findPublicKeyByHex(id.toHex()) : null;
return key ? key.getNativeKeys() : [null];
}), true));
};
_proto.findPrivateKeysByEncryptionKeyIds = function findPrivateKeysByEncryptionKeyIds(encryptionKeyIds, recipients, returnWrapKeys) {
var _this3 = this;
var result = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isArray"])(encryptionKeyIds) ? ___WEBPACK_IMPORTED_MODULE_5___default.a.compact(___WEBPACK_IMPORTED_MODULE_5___default.a.flatten(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, encryptionKeyIds, function (id) {
var key = id && id.toHex ? _this3.findPrivateKeyByHex(id.toHex()) : null;
return key ? returnWrapKeys ? [key] : key.getNativeKeys() : [null];
}), true)) : [];
if (0 === result.length && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isNonEmptyArray"])(recipients)) {
result = ___WEBPACK_IMPORTED_MODULE_5___default.a.uniq(___WEBPACK_IMPORTED_MODULE_5___default.a.compact(___WEBPACK_IMPORTED_MODULE_5___default.a.flatten(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, recipients, function (sEmail) {
var keys = sEmail ? _this3.findAllPrivateKeysByEmailNotNative(sEmail) : null;
return keys ? returnWrapKeys ? keys : ___WEBPACK_IMPORTED_MODULE_5___default.a.flatten(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, keys, function (key) {
return key.getNativeKeys();
}), true) : [null];
}), true)), function (key) {
return key.id;
});
}
return result;
}
/**
* @param {string} email
* @returns {?}
*/
;
_proto.findPublicKeyByEmailNotNative = function findPublicKeyByEmailNotNative(email) {
return _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, this.openpgpkeysPublic(), function (item) {
return item && -1 < item.emails.indexOf(email);
}) || null;
}
/**
* @param {string} email
* @returns {?}
*/
;
_proto.findPrivateKeyByEmailNotNative = function findPrivateKeyByEmailNotNative(email) {
return _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, this.openpgpkeysPrivate(), function (item) {
return item && -1 < item.emails.indexOf(email);
}) || null;
}
/**
* @param {string} email
* @returns {?}
*/
;
_proto.findAllPublicKeysByEmailNotNative = function findAllPublicKeysByEmailNotNative(email) {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, this.openpgpkeysPublic(), function (item) {
return item && -1 < item.emails.indexOf(email);
}) || null;
}
/**
* @param {string} email
* @returns {?}
*/
;
_proto.findAllPrivateKeysByEmailNotNative = function findAllPrivateKeysByEmailNotNative(email) {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, this.openpgpkeysPrivate(), function (item) {
return item && -1 < item.emails.indexOf(email);
}) || null;
}
/**
* @param {string} email
* @param {string=} password
* @returns {?}
*/
;
_proto.findPrivateKeyByEmail = function findPrivateKeyByEmail(email, password) {
var privateKey = null;
var key = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, this.openpgpkeysPrivate(), function (item) {
return item && -1 < item.emails.indexOf(email);
});
if (key) {
try {
privateKey = key.getNativeKeys()[0] || null;
if (privateKey) {
privateKey.decrypt(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["pString"])(password));
}
} catch (e) {
privateKey = null;
}
}
return privateKey;
}
/**
* @param {string=} password
* @returns {?}
*/
;
_proto.findSelfPrivateKey = function findSelfPrivateKey(password) {
return this.findPrivateKeyByEmail(Stores_User_Account__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].email(), password);
};
_proto.decryptMessage = function decryptMessage(message, recipients, fCallback) {
var _this4 = this;
if (message && message.getEncryptionKeyIds) {
var privateKeys = this.findPrivateKeysByEncryptionKeyIds(message.getEncryptionKeyIds(), recipients, true);
if (privateKeys && 0 < privateKeys.length) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/MessageOpenPgp */ 549), [function (decryptedKey) {
if (decryptedKey) {
message.decrypt(decryptedKey).then(function (decryptedMessage) {
var privateKey = null;
if (decryptedMessage) {
privateKey = _this4.findPrivateKeyByHex(decryptedKey.primaryKey.keyid.toHex());
if (privateKey) {
_this4.verifyMessage(decryptedMessage, function (oValidKey, aSigningKeyIds) {
fCallback(privateKey, decryptedMessage, oValidKey || null, aSigningKeyIds || null);
});
} else {
fCallback(privateKey, decryptedMessage);
}
} else {
fCallback(privateKey, decryptedMessage);
}
}, function () {
fCallback(null, null);
});
} else {
fCallback(null, null);
}
}, privateKeys]);
return false;
}
}
fCallback(null, null);
return false;
};
_proto.verifyMessage = function verifyMessage(message, fCallback) {
if (message && message.getSigningKeyIds) {
var signingKeyIds = message.getSigningKeyIds();
if (signingKeyIds && 0 < signingKeyIds.length) {
var publicKeys = this.findPublicKeysBySigningKeyIds(signingKeyIds);
if (publicKeys && 0 < publicKeys.length) {
try {
var result = message.verify(publicKeys),
valid = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, ___WEBPACK_IMPORTED_MODULE_5___default.a.isArray(result) ? result : [], function (item) {
return item && item.valid && item.keyid;
});
if (valid && valid.keyid && valid.keyid && valid.keyid.toHex) {
fCallback(this.findPublicKeyByHex(valid.keyid.toHex()));
return true;
}
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["log"])(e);
}
}
fCallback(null, signingKeyIds);
return false;
}
}
fCallback(null);
return false;
};
_proto.controlsHelper = function controlsHelper(dom, verControl, success, title, text) {
if (success) {
dom.removeClass('error').addClass('success').attr('title', title);
verControl.removeClass('error').addClass('success').attr('title', title);
} else {
dom.removeClass('success').addClass('error').attr('title', title);
verControl.removeClass('success').addClass('error').attr('title', title);
}
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isUnd"])(text)) {
dom.text(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(text));
}
};
PgpUserStore.domControlEncryptedClickHelper = function domControlEncryptedClickHelper(store, dom, armoredMessage, recipients) {
return function () {
var message = null;
var $this = $__WEBPACK_IMPORTED_MODULE_6___default()(this); // eslint-disable-line no-invalid-this
if ($this.hasClass('success')) {
return false;
}
try {
message = store.openpgp.message.readArmored(armoredMessage);
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["log"])(e);
}
if (message && message.getText && message.verify && message.decrypt) {
store.decryptMessage(message, recipients, function (validPrivateKey, decryptedMessage, validPublicKey, signingKeyIds) {
if (decryptedMessage) {
if (validPublicKey) {
store.controlsHelper(dom, $this, true, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/GOOD_SIGNATURE', {
'USER': validPublicKey.user + ' (' + validPublicKey.id + ')'
}), decryptedMessage.getText());
} else if (validPrivateKey) {
var keyIds = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isNonEmptyArray"])(signingKeyIds) ? signingKeyIds : null,
additional = keyIds ? ___WEBPACK_IMPORTED_MODULE_5___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, keyIds, function (item) {
return item && item.toHex ? item.toHex() : null;
})).join(', ') : '';
store.controlsHelper(dom, $this, false, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/UNVERIFIRED_SIGNATURE') + (additional ? ' (' + additional + ')' : ''), decryptedMessage.getText());
} else {
store.controlsHelper(dom, $this, false, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
}
} else {
store.controlsHelper(dom, $this, false, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
}
});
return false;
}
store.controlsHelper(dom, $this, false, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
return false;
};
};
PgpUserStore.domControlSignedClickHelper = function domControlSignedClickHelper(store, dom, armoredMessage) {
return function () {
var message = null;
var $this = $__WEBPACK_IMPORTED_MODULE_6___default()(this); // eslint-disable-line no-invalid-this
if ($this.hasClass('success') || $this.hasClass('error')) {
return false;
}
try {
message = store.openpgp.cleartext.readArmored(armoredMessage);
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["log"])(e);
}
if (message && message.getText && message.verify) {
store.verifyMessage(message, function (validKey, signingKeyIds) {
if (validKey) {
store.controlsHelper(dom, $this, true, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/GOOD_SIGNATURE', {
'USER': validKey.user + ' (' + validKey.id + ')'
}), message.getText());
} else {
var keyIds = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isNonEmptyArray"])(signingKeyIds) ? signingKeyIds : null,
additional = keyIds ? ___WEBPACK_IMPORTED_MODULE_5___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, keyIds, function (item) {
return item && item.toHex ? item.toHex() : null;
})).join(', ') : '';
store.controlsHelper(dom, $this, false, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/UNVERIFIRED_SIGNATURE') + (additional ? ' (' + additional + ')' : ''));
}
});
return false;
}
store.controlsHelper(dom, $this, false, Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('PGP_NOTIFICATIONS/DECRYPTION_ERROR'));
return false;
};
}
/**
* @param {*} dom
* @param {MessageModel} rainLoopMessage
*/
;
_proto.initMessageBodyControls = function initMessageBodyControls(dom, rainLoopMessage) {
if (dom && !dom.hasClass('inited')) {
dom.addClass('inited');
var encrypted = dom.hasClass('encrypted'),
signed = dom.hasClass('signed'),
recipients = rainLoopMessage ? rainLoopMessage.getEmails(['from', 'to', 'cc']) : [];
var verControl = null;
if (encrypted || signed) {
var domText = dom.text();
dom.data('openpgp-original', domText);
if (encrypted) {
verControl = $__WEBPACK_IMPORTED_MODULE_6___default()('<div class="b-openpgp-control"><i class="icon-lock"></i></div>').attr('title', Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('MESSAGE/PGP_ENCRYPTED_MESSAGE_DESC')).on('click', PgpUserStore.domControlEncryptedClickHelper(this, dom, domText, recipients));
} else if (signed) {
verControl = $__WEBPACK_IMPORTED_MODULE_6___default()('<div class="b-openpgp-control"><i class="icon-lock"></i></div>').attr('title', Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('MESSAGE/PGP_SIGNED_MESSAGE_DESC')).on('click', PgpUserStore.domControlSignedClickHelper(this, dom, domText));
}
if (verControl) {
dom.before(verControl).before('<div></div>');
}
}
}
};
return PgpUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new PgpUserStore());
/***/ }),
/* 42 */
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/an-object.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 49);
module.exports = function (it) {
if (!isObject(it)) {
throw TypeError(String(it) + ' is not an object');
} return it;
};
/***/ }),
/* 43 */
/*!******************************************************!*\
!*** ./node_modules/core-js-pure/internals/fails.js ***!
\******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
/***/ }),
/* 44 */
/*!***********************************************!*\
!*** ./node_modules/core-js/internals/has.js ***!
\***********************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toObject = __webpack_require__(/*! ../internals/to-object */ 89);
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function hasOwn(it, key) {
return hasOwnProperty.call(toObject(it), key);
};
/***/ }),
/* 45 */
/*!********************************************************!*\
!*** ./node_modules/core-js/modules/es.regexp.exec.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 65);
var exec = __webpack_require__(/*! ../internals/regexp-exec */ 162);
// `RegExp.prototype.exec` method
// https://tc39.es/ecma262/#sec-regexp.prototype.exec
$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
exec: exec
});
/***/ }),
/* 46 */
/*!************************************!*\
!*** ./dev/Stores/User/Account.js ***!
\************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Storage/Settings */ 5);
var AccountUserStore = /*#__PURE__*/function () {
function AccountUserStore() {
this.email = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.parentEmail = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.signature = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
this.accounts = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observableArray([]);
this.accounts.loading = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_3__["Magics"].Time100ms
});
this.computers();
}
var _proto = AccountUserStore.prototype;
_proto.computers = function computers() {
var _this = this;
this.accountsEmails = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return ___WEBPACK_IMPORTED_MODULE_2___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, _this.accounts(), function (item) {
return item ? item.email : null;
}));
});
this.accountsUnreadCount = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return 0;
}); // this.accountsUnreadCount = ko.computed(() => {
// let result = 0;
// _.each(this.accounts(), (item) => {
// if (item)
// {
// result += item.count();
// }
// });
// return result;
// });
};
_proto.populate = function populate() {
this.email(Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["settingsGet"]('Email'));
this.parentEmail(Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["settingsGet"]('ParentEmail'));
}
/**
* @returns {boolean}
*/
;
_proto.isRootAccount = function isRootAccount() {
return '' === this.parentEmail();
};
return AccountUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new AccountUserStore());
/***/ }),
/* 47 */
/*!**************************************************************************!*\
!*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***!
\**************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 55);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 66);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 95);
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/* 48 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/modules/es.function.name.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 55);
var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ 66).f;
var FunctionPrototype = Function.prototype;
var FunctionPrototypeToString = FunctionPrototype.toString;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';
// Function instances `.name` property
// https://tc39.es/ecma262/#sec-function-instances-name
if (DESCRIPTORS && !(NAME in FunctionPrototype)) {
defineProperty(FunctionPrototype, NAME, {
configurable: true,
get: function () {
try {
return FunctionPrototypeToString.call(this).match(nameRE)[1];
} catch (error) {
return '';
}
}
});
}
/***/ }),
/* 49 */
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-object.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/* 50 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/internals/is-object.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/* 51 */
/*!*****************************************************!*\
!*** ./node_modules/core-js-pure/internals/path.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 52 */
/*!*******************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/create-non-enumerable-property.js ***!
\*******************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 81);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 90);
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/* 53 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/descriptors.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 43);
// Detect IE8's incomplete defineProperty implementation
module.exports = !fails(function () {
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
});
/***/ }),
/* 54 */
/*!****************************************************!*\
!*** ./node_modules/core-js-pure/internals/has.js ***!
\****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/* 55 */
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/descriptors.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 37);
// Detect IE8's incomplete defineProperty implementation
module.exports = !fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- required for testing
return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
});
/***/ }),
/* 56 */
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/require-object-coercible.js ***!
\********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// `RequireObjectCoercible` abstract operation
// https://tc39.es/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/* 57 */
/*!****************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/set-interval.js ***!
\****************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/set-interval */ 283);
/***/ }),
/* 58 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/internals/an-object.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
module.exports = function (it) {
if (!isObject(it)) {
throw TypeError(String(it) + ' is not an object');
} return it;
};
/***/ }),
/* 59 */
/*!***********************************************************!*\
!*** ./node_modules/core-js/modules/es.string.replace.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ 149);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var toLength = __webpack_require__(/*! ../internals/to-length */ 84);
var toInteger = __webpack_require__(/*! ../internals/to-integer */ 79);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ 171);
var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ 282);
var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ 150);
var max = Math.max;
var min = Math.min;
var maybeToString = function (it) {
return it === undefined ? it : String(it);
};
// @@replace logic
fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
return [
// `String.prototype.replace` method
// https://tc39.es/ecma262/#sec-string.prototype.replace
function replace(searchValue, replaceValue) {
var O = requireObjectCoercible(this);
var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
return replacer !== undefined
? replacer.call(searchValue, O, replaceValue)
: nativeReplace.call(String(O), searchValue, replaceValue);
},
// `RegExp.prototype[@@replace]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
function (regexp, replaceValue) {
if (
(!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||
(typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)
) {
var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
if (res.done) return res.value;
}
var rx = anObject(regexp);
var S = String(this);
var functionalReplace = typeof replaceValue === 'function';
if (!functionalReplace) replaceValue = String(replaceValue);
var global = rx.global;
if (global) {
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
}
var results = [];
while (true) {
var result = regExpExec(rx, S);
if (result === null) break;
results.push(result);
if (!global) break;
var matchStr = String(result[0]);
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
}
var accumulatedResult = '';
var nextSourcePosition = 0;
for (var i = 0; i < results.length; i++) {
result = results[i];
var matched = String(result[0]);
var position = max(min(toInteger(result.index), S.length), 0);
var captures = [];
// NOTE: This is equivalent to
// captures = result.slice(1).map(maybeToString)
// but for some reason `nativeSlice.call(result, 1, result.length)` (called in
// the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
// causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
var namedCaptures = result.groups;
if (functionalReplace) {
var replacerArgs = [matched].concat(captures, position, S);
if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
var replacement = String(replaceValue.apply(undefined, replacerArgs));
} else {
replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
}
if (position >= nextSourcePosition) {
accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
nextSourcePosition = position + matched.length;
}
}
return accumulatedResult + S.slice(nextSourcePosition);
}
];
});
/***/ }),
/* 60 */
/*!*******************************!*\
!*** ./dev/Storage/Client.js ***!
\*******************************/
/*! exports provided: set, get */
/*! exports used: get, set */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return set; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return get; });
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var Common_ClientStorageDriver_Cookie__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/ClientStorageDriver/Cookie */ 438);
/* harmony import */ var Common_ClientStorageDriver_LocalStorage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/ClientStorageDriver/LocalStorage */ 439);
var SupportedStorageDriver = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_1___default.a).call(___WEBPACK_IMPORTED_MODULE_1___default.a, [Common_ClientStorageDriver_LocalStorage__WEBPACK_IMPORTED_MODULE_3__[/* LocalStorageDriver */ "a"], Common_ClientStorageDriver_Cookie__WEBPACK_IMPORTED_MODULE_2__[/* CookieDriver */ "a"]], function (StorageDriver) {
return StorageDriver && StorageDriver.supported();
});
var driver = SupportedStorageDriver ? new SupportedStorageDriver() : null;
/**
* @param {number} key
* @param {*} data
* @returns {boolean}
*/
function set(key, data) {
return driver ? driver.set('p' + key, data) : false;
}
/**
* @param {number} key
* @returns {*}
*/
function get(key) {
return driver ? driver.get('p' + key) : null;
}
/***/ }),
/* 61 */
/*!********************************!*\
!*** ./dev/Common/Momentor.js ***!
\********************************/
/*! exports provided: momentNow, momentNowUnix, searchSubtractFormatDateHelper, format, momentToNode, reload */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "momentNow", function() { return momentNow; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "momentNowUnix", function() { return momentNowUnix; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "searchSubtractFormatDateHelper", function() { return searchSubtractFormatDateHelper; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "format", function() { return format; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "momentToNode", function() { return momentToNode; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reload", function() { return reload; });
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! moment */ 100);
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Translator */ 9);
var _moment = null;
var _momentNow = 0;
var updateMomentNow = ___WEBPACK_IMPORTED_MODULE_1___default.a.debounce(function () {
_moment = moment__WEBPACK_IMPORTED_MODULE_3___default()();
}, 500, true);
var updateMomentNowUnix = ___WEBPACK_IMPORTED_MODULE_1___default.a.debounce(function () {
_momentNow = moment__WEBPACK_IMPORTED_MODULE_3___default()().unix();
}, 500, true);
/**
* @returns {moment}
*/
function momentNow() {
updateMomentNow();
return _moment || moment__WEBPACK_IMPORTED_MODULE_3___default()();
}
/**
* @returns {number}
*/
function momentNowUnix() {
updateMomentNowUnix();
return _momentNow || 0;
}
/**
* @param {number} date
* @returns {string}
*/
function searchSubtractFormatDateHelper(date) {
return momentNow().clone().subtract(date, 'days').format('YYYY.MM.DD');
}
/**
* @param {Object} m
* @returns {string}
*/
function formatCustomShortDate(m) {
var now = momentNow();
if (m && now) {
switch (true) {
case 4 >= now.diff(m, 'hours'):
return m.fromNow();
case now.format('L') === m.format('L'):
return Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('MESSAGE_LIST/TODAY_AT', {
TIME: m.format('LT')
});
case now.clone().subtract(1, 'days').format('L') === m.format('L'):
return Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('MESSAGE_LIST/YESTERDAY_AT', {
TIME: m.format('LT')
});
case now.year() === m.year():
return m.format('D MMM.');
// no default
}
}
return m ? m.format('LL') : '';
}
/**
* @param {number} timeStampInUTC
* @param {string} formatStr
* @returns {string}
*/
function format(timeStampInUTC, formatStr) {
var m = null,
result = '';
var now = momentNowUnix();
timeStampInUTC = 0 < timeStampInUTC ? timeStampInUTC : 0 === timeStampInUTC ? now : 0;
timeStampInUTC = now < timeStampInUTC ? now : timeStampInUTC;
m = 0 < timeStampInUTC ? moment__WEBPACK_IMPORTED_MODULE_3___default.a.unix(timeStampInUTC) : null;
if (m && 1970 === m.year()) {
m = null;
}
if (m) {
switch (formatStr) {
case 'FROMNOW':
result = m.fromNow();
break;
case 'SHORT':
result = formatCustomShortDate(m);
break;
case 'FULL':
result = m.format('LLL');
break;
default:
result = m.format(formatStr);
break;
}
}
return result;
}
/**
* @param {Object} element
* @returns {void}
*/
function momentToNode(element) {
var key = '',
time = 0;
var $el = $__WEBPACK_IMPORTED_MODULE_2___default()(element);
time = $el.data('moment-time');
if (time) {
key = $el.data('moment-format');
if (key) {
$el.text(format(time, key));
}
key = $el.data('moment-format-title');
if (key) {
$el.attr('title', format(time, key));
}
}
}
/**
* @returns {void}
*/
function reload() {
___WEBPACK_IMPORTED_MODULE_1___default.a.defer(function () {
$__WEBPACK_IMPORTED_MODULE_2___default()('.moment', window__WEBPACK_IMPORTED_MODULE_0___default.a.document).each(function (index, item) {
momentToNode(item);
});
});
}
/***/ }),
/* 62 */
/*!***********************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/promise.js ***!
\***********************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/promise */ 251);
/***/ }),
/* 63 */
/*!********************************!*\
!*** external "window.hasher" ***!
\********************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.hasher;
/***/ }),
/* 64 */
/*!*******************************!*\
!*** ./dev/Helper/Message.js ***!
\*******************************/
/*! exports provided: emailArrayToString, emailArrayToStringClear, emailArrayFromJson, replyHelper */
/*! exports used: emailArrayFromJson, emailArrayToString, emailArrayToStringClear, replyHelper */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return emailArrayToString; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return emailArrayToStringClear; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return emailArrayFromJson; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return replyHelper; });
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Model_Email__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Model/Email */ 82);
/**
* @param {Array.<EmailModel>} emails
* @param {boolean=} friendlyView = false
* @param {boolean=} wrapWithLink = false
* @returns {string}
*/
function emailArrayToString(emails, friendlyView, wrapWithLink) {
if (friendlyView === void 0) {
friendlyView = false;
}
if (wrapWithLink === void 0) {
wrapWithLink = false;
}
var index = 0,
len = 0;
var result = [];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isNonEmptyArray"])(emails)) {
for (len = emails.length; index < len; index++) {
result.push(emails[index].toLine(friendlyView, wrapWithLink));
}
}
return result.join(', ');
}
/**
* @param {Array.<EmailModel>} emails
* @returns {string}
*/
function emailArrayToStringClear(emails) {
var index = 0,
len = 0;
var result = [];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isNonEmptyArray"])(emails)) {
for (len = emails.length; index < len; index++) {
if (emails[index] && emails[index].email && '' !== emails[index].name) {
result.push(emails[index].email);
}
}
}
return result.join(', ');
}
/**
* @param {?Array} json
* @returns {Array.<EmailModel>}
*/
function emailArrayFromJson(json) {
var index = 0,
len = 0,
email = null;
var result = [];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isNonEmptyArray"])(json)) {
for (index = 0, len = json.length; index < len; index++) {
email = Model_Email__WEBPACK_IMPORTED_MODULE_3__["EmailModel"].newInstanceFromJson(json[index]);
if (email) {
result.push(email);
}
}
}
return result;
}
/**
* @param {Array.<EmailModel>} inputEmails
* @param {Object} unic
* @param {Array} localEmails
*/
function replyHelper(inputEmails, unic, localEmails) {
if (inputEmails && 0 < inputEmails.length) {
var index = 0;
var len = inputEmails.length;
for (; index < len; index++) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(unic[inputEmails[index].email])) {
unic[inputEmails[index].email] = true;
localEmails.push(inputEmails[index]);
}
}
}
}
/***/ }),
/* 65 */
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/export.js ***!
\**************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ 127).f;
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
var redefine = __webpack_require__(/*! ../internals/redefine */ 69);
var setGlobal = __webpack_require__(/*! ../internals/set-global */ 96);
var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ 209);
var isForced = __webpack_require__(/*! ../internals/is-forced */ 182);
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
*/
module.exports = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global;
} else if (STATIC) {
target = global[TARGET] || setGlobal(TARGET, {});
} else {
target = (global[TARGET] || {}).prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contained in target
if (!FORCED && targetProperty !== undefined) {
if (typeof sourceProperty === typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
// add a flag to not completely full polyfills
if (options.sham || (targetProperty && targetProperty.sham)) {
createNonEnumerableProperty(sourceProperty, 'sham', true);
}
// extend global
redefine(target, key, sourceProperty, options);
}
};
/***/ }),
/* 66 */
/*!******************************************************************!*\
!*** ./node_modules/core-js/internals/object-define-property.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 55);
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ 134);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ 133);
// eslint-disable-next-line es/no-object-defineproperty -- safe
var $defineProperty = Object.defineProperty;
// `Object.defineProperty` method
// https://tc39.es/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return $defineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/* 67 */
/*!************************************!*\
!*** ./dev/Knoin/AbstractModel.js ***!
\************************************/
/*! exports provided: AbstractModel */
/*! exports used: AbstractModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractModel; });
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 151);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
var AbstractModel = /*#__PURE__*/function () {
/**
* @param {string} modelName = ''
*/
function AbstractModel(modelName) {
if (modelName === void 0) {
modelName = '';
}
this.sModelName = '';
this.disposables = [];
this.sModelName = modelName || '';
}
var _proto = AbstractModel.prototype;
_proto.regDisposables = function regDisposables(value) {
var _this = this;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isArray"])(value)) {
value.forEach(function (item) {
_this.disposables.push(item);
});
} else if (value) {
this.disposables.push(value);
}
};
_proto.onDestroy = function onDestroy() {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["disposeObject"])(this);
};
return AbstractModel;
}();
/***/ }),
/* 68 */,
/* 69 */
/*!****************************************************!*\
!*** ./node_modules/core-js/internals/redefine.js ***!
\****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
var has = __webpack_require__(/*! ../internals/has */ 44);
var setGlobal = __webpack_require__(/*! ../internals/set-global */ 96);
var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ 129);
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ 130);
var getInternalState = InternalStateModule.get;
var enforceInternalState = InternalStateModule.enforce;
var TEMPLATE = String(String).split('String');
(module.exports = function (O, key, value, options) {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
var state;
if (typeof value == 'function') {
if (typeof key == 'string' && !has(value, 'name')) {
createNonEnumerableProperty(value, 'name', key);
}
state = enforceInternalState(value);
if (!state.source) {
state.source = TEMPLATE.join(typeof key == 'string' ? key : '');
}
}
if (O === global) {
if (simple) O[key] = value;
else setGlobal(key, value);
return;
} else if (!unsafe) {
delete O[key];
} else if (!noTargetGet && O[key]) {
simple = true;
}
if (simple) O[key] = value;
else createNonEnumerableProperty(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
return typeof this == 'function' && getInternalState(this).source || inspectSource(this);
});
/***/ }),
/* 70 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/internals/a-function.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') {
throw TypeError(String(it) + ' is not a function');
} return it;
};
/***/ }),
/* 71 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/internals/entry-virtual.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var path = __webpack_require__(/*! ../internals/path */ 51);
module.exports = function (CONSTRUCTOR) {
return path[CONSTRUCTOR + 'Prototype'];
};
/***/ }),
/* 72 */
/*!********************************!*\
!*** ./dev/Stores/Language.js ***!
\********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Storage/Settings */ 5);
var LanguageStore = /*#__PURE__*/function () {
function LanguageStore() {
this.languages = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observableArray([]);
this.languagesAdmin = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observableArray([]);
this.language = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('').extend({
limitedList: this.languages
}).extend({
reversible: true
});
this.languageAdmin = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('').extend({
limitedList: this.languagesAdmin
}).extend({
reversible: true
});
this.userLanguage = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
this.userLanguageAdmin = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
}
var _proto = LanguageStore.prototype;
_proto.populate = function populate() {
var aLanguages = Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["appSettingsGet"]('languages'),
aLanguagesAdmin = Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["appSettingsGet"]('languagesAdmin');
this.languages(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isArray"])(aLanguages) ? aLanguages : []);
this.languagesAdmin(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isArray"])(aLanguagesAdmin) ? aLanguagesAdmin : []);
this.language(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('Language'));
this.languageAdmin(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('LanguageAdmin'));
this.userLanguage(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('UserLanguage'));
this.userLanguageAdmin(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('UserLanguageAdmin'));
};
return LanguageStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new LanguageStore());
/***/ }),
/* 73 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/to-indexed-object.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ 128);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
module.exports = function (it) {
return IndexedObject(requireObjectCoercible(it));
};
/***/ }),
/* 74 */
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/classof-raw.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/* 75 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/internals/get-built-in.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var path = __webpack_require__(/*! ../internals/path */ 51);
var global = __webpack_require__(/*! ../internals/global */ 31);
var aFunction = function (variable) {
return typeof variable == 'function' ? variable : undefined;
};
module.exports = function (namespace, method) {
return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
: path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
};
/***/ }),
/* 76 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/internals/iterators.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 77 */
/*!*******************************************************!*\
!*** ./node_modules/core-js/modules/es.array.join.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 65);
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ 128);
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 73);
var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ 284);
var nativeJoin = [].join;
var ES3_STRINGS = IndexedObject != Object;
var STRICT_METHOD = arrayMethodIsStrict('join', ',');
// `Array.prototype.join` method
// https://tc39.es/ecma262/#sec-array.prototype.join
$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {
join: function join(separator) {
return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);
}
});
/***/ }),
/* 78 */
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/get-built-in.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var path = __webpack_require__(/*! ../internals/path */ 165);
var global = __webpack_require__(/*! ../internals/global */ 30);
var aFunction = function (variable) {
return typeof variable == 'function' ? variable : undefined;
};
module.exports = function (namespace, method) {
return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])
: path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];
};
/***/ }),
/* 79 */
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/to-integer.js ***!
\******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var ceil = Math.ceil;
var floor = Math.floor;
// `ToInteger` abstract operation
// https://tc39.es/ecma262/#sec-tointeger
module.exports = function (argument) {
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};
/***/ }),
/* 80 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/to-indexed-object.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ 170);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 115);
module.exports = function (it) {
return IndexedObject(requireObjectCoercible(it));
};
/***/ }),
/* 81 */
/*!***********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-define-property.js ***!
\***********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ 186);
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ 158);
var nativeDefineProperty = Object.defineProperty;
// `Object.defineProperty` method
// https://tc39.es/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return nativeDefineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/* 82 */
/*!****************************!*\
!*** ./dev/Model/Email.js ***!
\****************************/
/*! exports provided: EmailModel, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmailModel", function() { return EmailModel; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return EmailModel; });
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ 315);
/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 151);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var emailjs_addressparser__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! emailjs-addressparser */ 178);
/* harmony import */ var emailjs_addressparser__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(emailjs_addressparser__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Utils */ 2);
var EmailModel = /*#__PURE__*/function () {
/**
* @param {string=} email = ''
* @param {string=} name = ''
* @param {string=} dkimStatus = 'none'
* @param {string=} dkimValue = ''
*/
function EmailModel(email, name, dkimStatus, dkimValue) {
if (email === void 0) {
email = '';
}
if (name === void 0) {
name = '';
}
if (dkimStatus === void 0) {
dkimStatus = 'none';
}
if (dkimValue === void 0) {
dkimValue = '';
}
this.email = '';
this.name = '';
this.dkimStatus = '';
this.dkimValue = '';
this.email = email;
this.name = name;
this.dkimStatus = dkimStatus;
this.dkimValue = dkimValue;
this.clearDuplicateName();
}
/**
* @static
* @param {AjaxJsonEmail} json
* @returns {?EmailModel}
*/
EmailModel.newInstanceFromJson = function newInstanceFromJson(json) {
var email = new EmailModel();
return email.initByJson(json) ? email : null;
}
/**
* @returns {void}
*/
;
var _proto = EmailModel.prototype;
_proto.clear = function clear() {
this.email = '';
this.name = '';
this.dkimStatus = 'none';
this.dkimValue = '';
}
/**
* @returns {boolean}
*/
;
_proto.validate = function validate() {
return '' !== this.name || '' !== this.email;
}
/**
* @param {boolean} withoutName = false
* @returns {string}
*/
;
_proto.hash = function hash(withoutName) {
if (withoutName === void 0) {
withoutName = false;
}
return '#' + (withoutName ? '' : this.name) + '#' + this.email + '#';
}
/**
* @returns {void}
*/
;
_proto.clearDuplicateName = function clearDuplicateName() {
if (this.name === this.email) {
this.name = '';
}
}
/**
* @param {string} query
* @returns {boolean}
*/
;
_proto.search = function search(query) {
return -1 < (this.name + ' ' + this.email).toLowerCase().indexOf(query.toLowerCase());
}
/**
* @param {AjaxJsonEmail} oJsonEmail
* @returns {boolean}
*/
;
_proto.initByJson = function initByJson(json) {
var result = false;
if (json && 'Object/Email' === json['@Object']) {
this.name = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(json.Name);
this.email = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(json.Email);
this.dkimStatus = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(json.DkimStatus || '');
this.dkimValue = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(json.DkimValue || '');
result = '' !== this.email;
this.clearDuplicateName();
}
return result;
}
/**
* @param {boolean} friendlyView
* @param {boolean=} wrapWithLink = false
* @param {boolean=} useEncodeHtml = false
* @returns {string}
*/
;
_proto.toLine = function toLine(friendlyView, wrapWithLink, useEncodeHtml) {
if (wrapWithLink === void 0) {
wrapWithLink = false;
}
if (useEncodeHtml === void 0) {
useEncodeHtml = false;
}
var result = '';
if ('' !== this.email) {
if (friendlyView && '' !== this.name) {
result = wrapWithLink ? '<a href="mailto:' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(this.email) + '?to=' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])('"' + this.name + '" <' + this.email + '>') + '" target="_blank" tabindex="-1">' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(this.name) + '</a>' : useEncodeHtml ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(this.name) : this.name; // result = wrapWithLink ? '<a href="mailto:' + encodeHtml('"' + this.name + '" <' + this.email + '>') +
// '" target="_blank" tabindex="-1">' + encodeHtml(this.name) + '</a>' : (useEncodeHtml ? encodeHtml(this.name) : this.name);
} else {
result = this.email;
if ('' !== this.name) {
if (wrapWithLink) {
result = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])('"' + this.name + '" <') + '<a href="mailto:' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(this.email) + '?to=' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])('"' + this.name + '" <' + this.email + '>') + '" target="_blank" tabindex="-1">' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(result) + '</a>' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])('>'); // result = encodeHtml('"' + this.name + '" <') + '<a href="mailto:' +
// encodeHtml('"' + this.name + '" <' + this.email + '>') +
// '" target="_blank" tabindex="-1">' +
// encodeHtml(result) +
// '</a>' +
// encodeHtml('>');
} else {
result = '"' + this.name + '" <' + result + '>';
if (useEncodeHtml) {
result = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(result);
}
}
} else if (wrapWithLink) {
result = '<a href="mailto:' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(this.email) + '" target="_blank" tabindex="-1">' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["encodeHtml"])(this.email) + '</a>';
}
}
}
return result;
};
EmailModel.splitEmailLine = function splitEmailLine(line) {
var parsedResult = emailjs_addressparser__WEBPACK_IMPORTED_MODULE_7___default()(line);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isNonEmptyArray"])(parsedResult)) {
var result = [];
var exists = false;
parsedResult.forEach(function (item) {
var address = item.address ? new EmailModel(item.address.replace(/^[<]+(.*)[>]+$/g, '$1'), item.name || '') : null;
if (address && address.email) {
exists = true;
}
result.push(address ? address.toLine(false) : item.name);
});
return exists ? result : null;
}
return null;
};
EmailModel.parseEmailLine = function parseEmailLine(line) {
var parsedResult = emailjs_addressparser__WEBPACK_IMPORTED_MODULE_7___default()(line);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isNonEmptyArray"])(parsedResult)) {
return ___WEBPACK_IMPORTED_MODULE_6___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_6___default.a).call(___WEBPACK_IMPORTED_MODULE_6___default.a, parsedResult, function (item) {
return item.address ? new EmailModel(item.address.replace(/^[<]+(.*)[>]+$/g, '$1'), item.name || '') : null;
}));
}
return [];
}
/**
* @param {string} emailAddress
* @returns {boolean}
*/
;
_proto.parse = function parse(emailAddress) {
emailAddress = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(emailAddress);
if ('' === emailAddress) {
return false;
}
var result = emailjs_addressparser__WEBPACK_IMPORTED_MODULE_7___default()(emailAddress);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isNonEmptyArray"])(result) && result[0]) {
this.name = result[0].name || '';
this.email = result[0].address || '';
this.clearDuplicateName();
return true;
}
return false;
};
return EmailModel;
}();
/***/ }),
/* 83 */
/*!*****************************!*\
!*** ./dev/Common/Audio.js ***!
\*****************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
var Audio = /*#__PURE__*/function () {
function Audio() {
var _this = this;
this.notificator = null;
this.player = null;
this.supported = false;
this.supportedMp3 = false;
this.supportedOgg = false;
this.supportedWav = false;
this.supportedNotification = false;
this.player = this.createNewObject();
this.supported = !Common_Globals__WEBPACK_IMPORTED_MODULE_3__["bMobileDevice"] && !Common_Globals__WEBPACK_IMPORTED_MODULE_3__["bSafari"] && !!this.player && !!this.player.play;
if (this.supported && this.player && this.player.canPlayType) {
this.supportedMp3 = '' !== this.player.canPlayType('audio/mpeg;').replace(/no/, '');
this.supportedWav = '' !== this.player.canPlayType('audio/wav; codecs="1"').replace(/no/, '');
this.supportedOgg = '' !== this.player.canPlayType('audio/ogg; codecs="vorbis"').replace(/no/, '');
this.supportedNotification = this.supported && this.supportedMp3;
}
if (!this.player || !this.supportedMp3 && !this.supportedOgg && !this.supportedWav) {
this.supported = false;
this.supportedMp3 = false;
this.supportedOgg = false;
this.supportedWav = false;
this.supportedNotification = false;
}
if (this.supported && this.player) {
var stopFn = function stopFn() {
return _this.stop();
};
this.player.addEventListener('ended', stopFn);
this.player.addEventListener('error', stopFn);
Common_Events__WEBPACK_IMPORTED_MODULE_5__[/* sub */ "b"]('audio.api.stop', stopFn);
}
}
var _proto = Audio.prototype;
_proto.createNewObject = function createNewObject() {
try {
var player = window__WEBPACK_IMPORTED_MODULE_2___default.a.Audio ? new window__WEBPACK_IMPORTED_MODULE_2___default.a.Audio() : null;
if (player && player.canPlayType && player.pause && player.play) {
player.preload = 'none';
player.loop = false;
player.autoplay = false;
player.muted = false;
}
return player;
} catch (e) {} // eslint-disable-line no-empty
return null;
};
_proto.paused = function paused() {
return this.supported ? !!this.player.paused : true;
};
_proto.stop = function stop() {
if (this.supported && this.player.pause) {
this.player.pause();
}
Common_Events__WEBPACK_IMPORTED_MODULE_5__[/* pub */ "a"]('audio.stop');
};
_proto.pause = function pause() {
this.stop();
};
_proto.clearName = function clearName(name, ext) {
if (name === void 0) {
name = '';
}
if (ext === void 0) {
ext = '';
}
name = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["trim"])(name);
if (ext && '.' + ext === name.toLowerCase().substr((ext.length + 1) * -1)) {
name = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["trim"])(name.substr(0, name.length - 4));
}
return '' === name ? 'audio' : name;
};
_proto.playMp3 = function playMp3(url, name) {
if (this.supported && this.supportedMp3) {
this.player.src = url;
this.player.play();
Common_Events__WEBPACK_IMPORTED_MODULE_5__[/* pub */ "a"]('audio.start', [this.clearName(name, 'mp3'), 'mp3']);
}
};
_proto.playOgg = function playOgg(url, name) {
if (this.supported && this.supportedOgg) {
this.player.src = url;
this.player.play();
name = this.clearName(name, 'oga');
name = this.clearName(name, 'ogg');
Common_Events__WEBPACK_IMPORTED_MODULE_5__[/* pub */ "a"]('audio.start', [name, 'ogg']);
}
};
_proto.playWav = function playWav(url, name) {
if (this.supported && this.supportedWav) {
this.player.src = url;
this.player.play();
Common_Events__WEBPACK_IMPORTED_MODULE_5__[/* pub */ "a"]('audio.start', [this.clearName(name, 'wav'), 'wav']);
}
};
_proto.playNotification = function playNotification() {
if (this.supported && this.supportedMp3) {
if (!this.notificator) {
this.notificator = this.createNewObject();
this.notificator.src = Common_Links__WEBPACK_IMPORTED_MODULE_4__[/* sound */ "D"]('new-mail.mp3');
}
if (this.notificator && this.notificator.play) {
this.notificator.play();
}
}
};
return Audio;
}();
/* harmony default export */ __webpack_exports__["a"] = (new Audio());
/***/ }),
/* 84 */
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/to-length.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ 79);
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.es/ecma262/#sec-tolength
module.exports = function (argument) {
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
/***/ }),
/* 85 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/modules/es.object.to-string.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ 99);
var redefine = __webpack_require__(/*! ../internals/redefine */ 69);
var toString = __webpack_require__(/*! ../internals/object-to-string */ 216);
// `Object.prototype.toString` method
// https://tc39.es/ecma262/#sec-object.prototype.tostring
if (!TO_STRING_TAG_SUPPORT) {
redefine(Object.prototype, 'toString', toString, { unsafe: true });
}
/***/ }),
/* 86 */
/*!********************************************************!*\
!*** ./node_modules/core-js-pure/internals/is-pure.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = true;
/***/ }),
/* 87 */
/*!****************************************!*\
!*** ./dev/Component/AbstractInput.js ***!
\****************************************/
/*! exports provided: AbstractInput, default */
/*! exports used: AbstractInput */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractInput; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Component/Abstract */ 32);
var AbstractInput = /*#__PURE__*/function (_AbstractComponent) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(AbstractInput, _AbstractComponent);
/**
* @param {Object} params
*/
function AbstractInput(params) {
var _this;
_this = _AbstractComponent.call(this) || this;
_this.value = params.value || '';
_this.size = params.size || 0;
_this.label = params.label || '';
_this.preLabel = params.preLabel || '';
_this.enable = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isUnd"])(params.enable) ? true : params.enable;
_this.trigger = params.trigger && params.trigger.subscribe ? params.trigger : null;
_this.placeholder = params.placeholder || '';
_this.labeled = !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isUnd"])(params.label);
_this.preLabeled = !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isUnd"])(params.preLabel);
_this.triggered = !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isUnd"])(params.trigger) && !!_this.trigger;
_this.classForTrigger = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.className = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].computed(function () {
var size = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].unwrap(_this.size),
suffixValue = _this.trigger ? ' ' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["trim"])('settings-saved-trigger-input ' + _this.classForTrigger()) : '';
return (0 < size ? 'span' + size : '') + suffixValue;
});
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isUnd"])(params.width) && params.element) {
var _context;
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context = params.element).call(_context, 'input,select,textarea').css('width', params.width);
}
_this.disposable.push(_this.className);
if (_this.trigger) {
_this.setTriggerState(_this.trigger());
_this.disposable.push(_this.trigger.subscribe(_this.setTriggerState, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this)));
}
return _this;
}
var _proto = AbstractInput.prototype;
_proto.setTriggerState = function setTriggerState(value) {
switch (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pInt"])(value)) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].TrueResult:
this.classForTrigger('success');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].FalseResult:
this.classForTrigger('error');
break;
default:
this.classForTrigger('');
break;
}
};
return AbstractInput;
}(Component_Abstract__WEBPACK_IMPORTED_MODULE_6__[/* AbstractComponent */ "a"]);
/***/ }),
/* 88 */,
/* 89 */
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/to-object.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
// `ToObject` abstract operation
// https://tc39.es/ecma262/#sec-toobject
module.exports = function (argument) {
return Object(requireObjectCoercible(argument));
};
/***/ }),
/* 90 */
/*!***************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/create-property-descriptor.js ***!
\***************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/* 91 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/internals/to-length.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ 142);
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.es/ecma262/#sec-tolength
module.exports = function (argument) {
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
/***/ }),
/* 92 */
/*!********************************************************!*\
!*** ./node_modules/core-js-pure/internals/classof.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ 144);
var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ 114);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
};
/***/ }),
/* 93 */
/*!***********************************!*\
!*** ./dev/Promises/User/Ajax.js ***!
\***********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Promises_User_Populator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Promises/User/Populator */ 406);
/* harmony import */ var Promises_AbstractAjax__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Promises/AbstractAjax */ 441);
var UserAjaxUserPromises = /*#__PURE__*/function (_AbstractAjaxPromises) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(UserAjaxUserPromises, _AbstractAjaxPromises);
function UserAjaxUserPromises() {
var _this;
_this = _AbstractAjaxPromises.call(this) || this;
_this.foldersTimeout = 0;
return _this;
}
var _proto = UserAjaxUserPromises.prototype;
_proto.foldersReload = function foldersReload(fTrigger) {
return this.abort('Folders').postRequest('Folders', fTrigger).then(function (data) {
Promises_User_Populator__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].foldersList(data.Result);
Promises_User_Populator__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].foldersAdditionalParameters(data.Result);
return true;
});
};
_proto.foldersReloadWithTimeout = function foldersReloadWithTimeout(fTrigger) {
var _this2 = this;
this.setTrigger(fTrigger, true);
window__WEBPACK_IMPORTED_MODULE_2___default.a.clearTimeout(this.foldersTimeout);
this.foldersTimeout = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_1___default()(function () {
_this2.foldersReload(fTrigger);
}, 500);
};
_proto.folderDelete = function folderDelete(sFolderFullNameRaw, fTrigger) {
return this.postRequest('FolderDelete', fTrigger, {
'Folder': sFolderFullNameRaw
});
};
_proto.folderCreate = function folderCreate(sNewFolderName, sParentName, fTrigger) {
return this.postRequest('FolderCreate', fTrigger, {
'Folder': sNewFolderName,
'Parent': sParentName
});
};
_proto.folderRename = function folderRename(sPrevFolderFullNameRaw, sNewFolderName, fTrigger) {
return this.postRequest('FolderRename', fTrigger, {
'Folder': sPrevFolderFullNameRaw,
'NewFolderName': sNewFolderName
});
};
_proto.attachmentsActions = function attachmentsActions(sAction, aHashes, fTrigger) {
return this.postRequest('AttachmentsActions', fTrigger, {
'Do': sAction,
'Hashes': aHashes
});
};
_proto.welcomeClose = function welcomeClose() {
return this.postRequest('WelcomeClose');
};
return UserAjaxUserPromises;
}(Promises_AbstractAjax__WEBPACK_IMPORTED_MODULE_4__[/* AbstractAjaxPromises */ "a"]);
/* harmony default export */ __webpack_exports__["a"] = (new UserAjaxUserPromises());
/***/ }),
/* 94 */,
/* 95 */
/*!**********************************************************************!*\
!*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
\**********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/* 96 */
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/set-global.js ***!
\******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
module.exports = function (key, value) {
try {
createNonEnumerableProperty(global, key, value);
} catch (error) {
global[key] = value;
} return value;
};
/***/ }),
/* 97 */
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/shared-store.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var setGlobal = __webpack_require__(/*! ../internals/set-global */ 96);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});
module.exports = store;
/***/ }),
/* 98 */
/*!***************************************************!*\
!*** ./node_modules/core-js/internals/is-pure.js ***!
\***************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = false;
/***/ }),
/* 99 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js/internals/to-string-tag-support.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var test = {};
test[TO_STRING_TAG] = 'z';
module.exports = String(test) === '[object z]';
/***/ }),
/* 100 */
/*!********************************!*\
!*** external "window.moment" ***!
\********************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = window.moment;
/***/ }),
/* 101 */
/*!************************************!*\
!*** external "window.progressJs" ***!
\************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.progressJs;
/***/ }),
/* 102 */
/*!*************************************!*\
!*** ./dev/Stores/User/Identity.js ***!
\*************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
var IdentityUserStore = function IdentityUserStore() {
var _this = this;
this.identities = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observableArray([]);
this.identities.loading = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false).extend({
throttle: 100
});
this.identitiesIDS = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return ___WEBPACK_IMPORTED_MODULE_1___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_1___default.a).call(___WEBPACK_IMPORTED_MODULE_1___default.a, _this.identities(), function (item) {
return item ? item.id : null;
}));
});
};
/* harmony default export */ __webpack_exports__["a"] = (new IdentityUserStore());
/***/ }),
/* 103 */
/*!************************************!*\
!*** ./dev/Stores/User/Contact.js ***!
\************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Storage/Settings */ 5);
var ContactUserStore = /*#__PURE__*/function () {
function ContactUserStore() {
this.contacts = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observableArray([]);
this.contacts.loading = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Magics"].Time200ms
});
this.contacts.importing = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Magics"].Time200ms
});
this.contacts.syncing = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Magics"].Time200ms
});
this.contacts.exportingVcf = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Magics"].Time200ms
});
this.contacts.exportingCsv = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Magics"].Time200ms
});
this.allowContactsSync = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false);
this.enableContactsSync = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false);
this.contactsSyncUrl = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
this.contactsSyncUser = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
this.contactsSyncPass = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
}
var _proto = ContactUserStore.prototype;
_proto.populate = function populate() {
this.allowContactsSync(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('ContactsSyncIsAllowed'));
this.enableContactsSync(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('EnableContactsSync'));
this.contactsSyncUrl(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('ContactsSyncUrl'));
this.contactsSyncUser(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('ContactsSyncUser'));
this.contactsSyncPass(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('ContactsSyncPassword'));
};
return ContactUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new ContactUserStore());
/***/ }),
/* 104 */
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/shared.js ***!
\**************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 98);
var store = __webpack_require__(/*! ../internals/shared-store */ 97);
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.12.0',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/* 105 */
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/hidden-keys.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 106 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/engine-user-agent.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 75);
module.exports = getBuiltIn('navigator', 'userAgent') || '';
/***/ }),
/* 107 */
/*!********************************************************!*\
!*** ./node_modules/core-js-pure/internals/iterate.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ 260);
var toLength = __webpack_require__(/*! ../internals/to-length */ 91);
var bind = __webpack_require__(/*! ../internals/function-bind-context */ 116);
var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ 262);
var iteratorClose = __webpack_require__(/*! ../internals/iterator-close */ 263);
var Result = function (stopped, result) {
this.stopped = stopped;
this.result = result;
};
module.exports = function (iterable, unboundFunction, options) {
var that = options && options.that;
var AS_ENTRIES = !!(options && options.AS_ENTRIES);
var IS_ITERATOR = !!(options && options.IS_ITERATOR);
var INTERRUPTED = !!(options && options.INTERRUPTED);
var fn = bind(unboundFunction, that, 1 + AS_ENTRIES + INTERRUPTED);
var iterator, iterFn, index, length, result, next, step;
var stop = function (condition) {
if (iterator) iteratorClose(iterator);
return new Result(true, condition);
};
var callFn = function (value) {
if (AS_ENTRIES) {
anObject(value);
return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
} return INTERRUPTED ? fn(value, stop) : fn(value);
};
if (IS_ITERATOR) {
iterator = iterable;
} else {
iterFn = getIteratorMethod(iterable);
if (typeof iterFn != 'function') throw TypeError('Target is not iterable');
// optimisation for array iterators
if (isArrayIteratorMethod(iterFn)) {
for (index = 0, length = toLength(iterable.length); length > index; index++) {
result = callFn(iterable[index]);
if (result && result instanceof Result) return result;
} return new Result(false);
}
iterator = iterFn.call(iterable);
}
next = iterator.next;
while (!(step = next.call(iterator)).done) {
try {
result = callFn(step.value);
} catch (error) {
iteratorClose(iterator);
throw error;
}
if (typeof result == 'object' && result && result instanceof Result) return result;
} return new Result(false);
};
/***/ }),
/* 108 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/internals/redefine.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
module.exports = function (target, key, value, options) {
if (options && options.enumerable) target[key] = value;
else createNonEnumerableProperty(target, key, value);
};
/***/ }),
/* 109 */
/*!***********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/new-promise-capability.js ***!
\***********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var aFunction = __webpack_require__(/*! ../internals/a-function */ 70);
var PromiseCapability = function (C) {
var resolve, reject;
this.promise = new C(function ($$resolve, $$reject) {
if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
resolve = $$resolve;
reject = $$reject;
});
this.resolve = aFunction(resolve);
this.reject = aFunction(reject);
};
// 25.4.1.5 NewPromiseCapability(C)
module.exports.f = function (C) {
return new PromiseCapability(C);
};
/***/ }),
/* 110 */,
/* 111 */
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/shared-key.js ***!
\******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(/*! ../internals/shared */ 104);
var uid = __webpack_require__(/*! ../internals/uid */ 136);
var keys = shared('keys');
module.exports = function (key) {
return keys[key] || (keys[key] = uid(key));
};
/***/ }),
/* 112 */
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/* 113 */
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/iterators.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 114 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/classof-raw.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/* 115 */
/*!*************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/require-object-coercible.js ***!
\*************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// `RequireObjectCoercible` abstract operation
// https://tc39.es/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/* 116 */
/*!**********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/function-bind-context.js ***!
\**********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__(/*! ../internals/a-function */ 70);
// optional / simple context binding
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 0: return function () {
return fn.call(that);
};
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/* 117 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/internals/to-object.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 115);
// `ToObject` abstract operation
// https://tc39.es/ecma262/#sec-toobject
module.exports = function (argument) {
return Object(requireObjectCoercible(argument));
};
/***/ }),
/* 118 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/engine-is-node.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(/*! ../internals/classof-raw */ 114);
var global = __webpack_require__(/*! ../internals/global */ 31);
module.exports = classof(global.process) == 'process';
/***/ }),
/* 119 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/modules/es.regexp.to-string.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var redefine = __webpack_require__(/*! ../internals/redefine */ 69);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var fails = __webpack_require__(/*! ../internals/fails */ 37);
var flags = __webpack_require__(/*! ../internals/regexp-flags */ 202);
var TO_STRING = 'toString';
var RegExpPrototype = RegExp.prototype;
var nativeToString = RegExpPrototype[TO_STRING];
var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
// FF44- RegExp#toString has a wrong name
var INCORRECT_NAME = nativeToString.name != TO_STRING;
// `RegExp.prototype.toString` method
// https://tc39.es/ecma262/#sec-regexp.prototype.tostring
if (NOT_GENERIC || INCORRECT_NAME) {
redefine(RegExp.prototype, TO_STRING, function toString() {
var R = anObject(this);
var p = String(R.source);
var rf = R.flags;
var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);
return '/' + p + '/' + f;
}, { unsafe: true });
}
/***/ }),
/* 120 */
/*!****************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-method-uses-to-length.js ***!
\****************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var has = __webpack_require__(/*! ../internals/has */ 54);
var defineProperty = Object.defineProperty;
var cache = {};
var thrower = function (it) { throw it; };
module.exports = function (METHOD_NAME, options) {
if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];
if (!options) options = {};
var method = [][METHOD_NAME];
var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;
var argument0 = has(options, 0) ? options[0] : thrower;
var argument1 = has(options, 1) ? options[1] : undefined;
return cache[METHOD_NAME] = !!method && !fails(function () {
if (ACCESSORS && !DESCRIPTORS) return true;
var O = { length: -1 };
if (ACCESSORS) defineProperty(O, 1, { enumerable: true, get: thrower });
else O[1] = 1;
method.call(O, argument0, argument1);
});
};
/***/ }),
/* 121 */
/*!*****************************!*\
!*** ./dev/Common/Jassl.js ***!
\*****************************/
/*! exports provided: jassl */
/*! exports used: jassl */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return jassl; });
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ 62);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_1__);
// let rainloopCaches = window.caches && window.caches.open ? window.caches : null;
/**
* @param {src} src
* @param {boolean} async = false
* @returns {Promise}
*/
function jassl(src, async) {
if (async === void 0) {
async = false;
}
if (!_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0___default.a || !_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0___default.a.all) {
throw new Error('Promises are not available your environment.');
}
if (!src) {
throw new Error('src should not be empty.');
}
return new _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_0___default.a(function (resolve, reject) {
var element = window__WEBPACK_IMPORTED_MODULE_1___default.a.document.createElement('script');
element.onload = function () {
resolve(src);
};
element.onerror = function () {
reject(new Error(src));
};
element.async = true === async;
element.src = src;
window__WEBPACK_IMPORTED_MODULE_1___default.a.document.body.appendChild(element);
})
/* .then((s) => {
const found = s && rainloopCaches ? s.match(/rainloop\/v\/([^\/]+)\/static\//) : null;
if (found && found[1])
{
rainloopCaches.open('rainloop-offline-' + found[1]).then(
(cache) => cache.add(s)
).catch(() => {
rainloopCaches = null;
});
}
return s;
})*/
;
}
/***/ }),
/* 122 */
/*!*******************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/values.js ***!
\*******************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/values */ 341);
/***/ }),
/* 123 */
/*!*****************************!*\
!*** ./dev/Stores/Theme.js ***!
\*****************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Storage/Settings */ 5);
var ThemeStore = /*#__PURE__*/function () {
function ThemeStore() {
this.themes = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observableArray([]);
this.themeBackgroundName = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
this.themeBackgroundHash = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
this.theme = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('').extend({
limitedList: this.themes
});
}
var _proto = ThemeStore.prototype;
_proto.populate = function populate() {
var themes = Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["appSettingsGet"]('themes');
this.themes(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isArray"])(themes) ? themes : []);
this.theme(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('Theme'));
this.themeBackgroundName(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('UserBackgroundName'));
this.themeBackgroundHash(Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('UserBackgroundHash'));
};
return ThemeStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new ThemeStore());
/***/ }),
/* 124 */
/*!*****************************************!*\
!*** ./dev/Stores/User/Notification.js ***!
\*****************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Common_Audio__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Audio */ 83);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Storage/Settings */ 5);
var NotificationUserStore = /*#__PURE__*/function () {
function NotificationUserStore() {
var _this = this;
this.enableSoundNotification = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.soundNotificationIsSupported = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.allowDesktopNotification = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
this.desktopNotificationPermissions = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
_this.allowDesktopNotification();
var result = Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].NotSupported;
var NotificationClass = _this.notificationClass();
if (NotificationClass && NotificationClass.permission) {
switch (NotificationClass.permission.toLowerCase()) {
case 'granted':
result = Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].Allowed;
break;
case 'denied':
result = Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].Denied;
break;
case 'default':
result = Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].NotAllowed;
break;
// no default
}
} else if (window__WEBPACK_IMPORTED_MODULE_1___default.a.webkitNotifications && window__WEBPACK_IMPORTED_MODULE_1___default.a.webkitNotifications.checkPermission) {
result = window__WEBPACK_IMPORTED_MODULE_1___default.a.webkitNotifications.checkPermission();
}
return result;
}).extend({
notify: 'always'
});
this.enableDesktopNotification = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed({
read: function read() {
return _this.allowDesktopNotification() && Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].Allowed === _this.desktopNotificationPermissions();
},
write: function write(value) {
if (value) {
var NotificationClass = _this.notificationClass(),
permission = _this.desktopNotificationPermissions();
if (NotificationClass && Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].Allowed === permission) {
_this.allowDesktopNotification(true);
} else if (NotificationClass && Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].NotAllowed === permission) {
NotificationClass.requestPermission(function () {
_this.allowDesktopNotification.valueHasMutated();
if (Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].Allowed === _this.desktopNotificationPermissions()) {
if (_this.allowDesktopNotification()) {
_this.allowDesktopNotification.valueHasMutated();
} else {
_this.allowDesktopNotification(true);
}
} else {
if (_this.allowDesktopNotification()) {
_this.allowDesktopNotification(false);
} else {
_this.allowDesktopNotification.valueHasMutated();
}
}
});
} else {
_this.allowDesktopNotification(false);
}
} else {
_this.allowDesktopNotification(false);
}
}
}).extend({
notify: 'always'
});
if (!this.enableDesktopNotification.valueHasMutated) {
this.enableDesktopNotification.valueHasMutated = function () {
_this.allowDesktopNotification.valueHasMutated();
};
}
this.computers();
this.initNotificationPlayer();
}
var _proto = NotificationUserStore.prototype;
_proto.computers = function computers() {
var _this2 = this;
this.isDesktopNotificationSupported = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].NotSupported !== _this2.desktopNotificationPermissions();
});
this.isDesktopNotificationDenied = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].NotSupported === _this2.desktopNotificationPermissions() || Common_Enums__WEBPACK_IMPORTED_MODULE_3__["DesktopNotification"].Denied === _this2.desktopNotificationPermissions();
});
};
_proto.initNotificationPlayer = function initNotificationPlayer() {
if (Common_Audio__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"] && Common_Audio__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].supportedNotification) {
this.soundNotificationIsSupported(true);
} else {
this.enableSoundNotification(false);
this.soundNotificationIsSupported(false);
}
};
_proto.playSoundNotification = function playSoundNotification(skipSetting) {
if (Common_Audio__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"] && Common_Audio__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].supportedNotification && (skipSetting ? true : this.enableSoundNotification())) {
Common_Audio__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].playNotification();
}
};
_proto.displayDesktopNotification = function displayDesktopNotification(imageSrc, title, text, nessageData) {
if (this.enableDesktopNotification()) {
var NotificationClass = this.notificationClass(),
notification = NotificationClass ? new NotificationClass(title, {
body: text,
icon: imageSrc
}) : null;
if (notification) {
if (notification.show) {
notification.show();
}
if (nessageData) {
notification.onclick = function () {
window__WEBPACK_IMPORTED_MODULE_1___default.a.focus();
if (nessageData.Folder && nessageData.Uid) {
Common_Events__WEBPACK_IMPORTED_MODULE_4__[/* pub */ "a"]('mailbox.message.show', [nessageData.Folder, nessageData.Uid]);
}
};
}
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0___default()(function (localNotifications) {
return function () {
if (localNotifications.cancel) {
localNotifications.cancel();
} else if (localNotifications.close) {
localNotifications.close();
}
};
}(notification), Common_Enums__WEBPACK_IMPORTED_MODULE_3__["Magics"].Time7s);
}
}
};
_proto.populate = function populate() {
this.enableSoundNotification(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('SoundNotification'));
this.enableDesktopNotification(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('DesktopNotifications'));
}
/**
* @returns {*|null}
*/
;
_proto.notificationClass = function notificationClass() {
return window__WEBPACK_IMPORTED_MODULE_1___default.a.Notification && window__WEBPACK_IMPORTED_MODULE_1___default.a.Notification.requestPermission ? window__WEBPACK_IMPORTED_MODULE_1___default.a.Notification : null;
};
return NotificationUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new NotificationUserStore());
/***/ }),
/* 125 */,
/* 126 */
/*!***********************************!*\
!*** (webpack)/buildin/global.js ***!
\***********************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || new Function("return this")();
} catch (e) {
// This works if the window reference is available
if (typeof window === "object") g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/* 127 */
/*!******************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
\******************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 55);
var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ 179);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 95);
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 73);
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ 133);
var has = __webpack_require__(/*! ../internals/has */ 44);
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ 134);
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// `Object.getOwnPropertyDescriptor` method
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return $getOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
};
/***/ }),
/* 128 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/indexed-object.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 37);
var classof = __webpack_require__(/*! ../internals/classof-raw */ 74);
var split = ''.split;
// fallback for non-array-like ES3 and non-enumerable old V8 strings
module.exports = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins -- safe
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classof(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;
/***/ }),
/* 129 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/inspect-source.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var store = __webpack_require__(/*! ../internals/shared-store */ 97);
var functionToString = Function.toString;
// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper
if (typeof store.inspectSource != 'function') {
store.inspectSource = function (it) {
return functionToString.call(it);
};
}
module.exports = store.inspectSource;
/***/ }),
/* 130 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/internal-state.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ 208);
var global = __webpack_require__(/*! ../internals/global */ 30);
var isObject = __webpack_require__(/*! ../internals/is-object */ 49);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
var objectHas = __webpack_require__(/*! ../internals/has */ 44);
var shared = __webpack_require__(/*! ../internals/shared-store */ 97);
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ 111);
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ 105);
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
var WeakMap = global.WeakMap;
var set, get, has;
var enforce = function (it) {
return has(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (NATIVE_WEAK_MAP) {
var store = shared.state || (shared.state = new WeakMap());
var wmget = store.get;
var wmhas = store.has;
var wmset = store.set;
set = function (it, metadata) {
if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
metadata.facade = it;
wmset.call(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget.call(store, it) || {};
};
has = function (it) {
return wmhas.call(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
metadata.facade = it;
createNonEnumerableProperty(it, STATE, metadata);
return metadata;
};
get = function (it) {
return objectHas(it, STATE) ? it[STATE] : {};
};
has = function (it) {
return objectHas(it, STATE);
};
}
module.exports = {
set: set,
get: get,
has: has,
enforce: enforce,
getterFor: getterFor
};
/***/ }),
/* 131 */
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/a-function.js ***!
\******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') {
throw TypeError(String(it) + ' is not a function');
} return it;
};
/***/ }),
/* 132 */
/*!***********************************!*\
!*** ./dev/View/Popup/Compose.js ***!
\***********************************/
/*! exports provided: ComposePopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComposePopupView", function() { return ComposePopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ComposePopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-interval */ 57);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 203);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.string.link.js */ 204);
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 119);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_15__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_16__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_17__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_18__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_19__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_21__);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Jua */ 205);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(Jua__WEBPACK_IMPORTED_MODULE_22__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Momentor__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! Common/Momentor */ 61);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_HtmlEditor__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! Common/HtmlEditor */ 226);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Identity__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! Stores/User/Identity */ 102);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Stores_Social__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! Stores/Social */ 26);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Model_ComposeAttachment__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! Model/ComposeAttachment */ 309);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2;
var ComposePopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["popup"])({
name: 'View/Popup/Compose',
templateID: 'PopupsCompose'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["command"])(function (self) {
return self.canBeSentOrSaved();
}), _dec3 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["command"])(function (self) {
return self.canBeSentOrSaved();
}), _dec4 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["command"])(function (self) {
return self.isDraftFolderMessage();
}), _dec5 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["command"])(function (self) {
return self.canBeSentOrSaved();
}), _dec6 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["command"])(function (self) {
return self.allowContacts;
}), _dec7 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["command"])(function (self) {
return self.dropboxEnabled();
}), _dec8 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["command"])(function (self) {
return self.driveEnabled();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(ComposePopupView, _AbstractViewNext);
function ComposePopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
var fEmailOutInHelper = function fEmailOutInHelper(context, identity, name, isIn) {
if (identity && context && identity[name]() && (isIn ? true : context[name]())) {
var identityEmail = identity[name]();
var list = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(context[name]()).split(/[,]/);
list = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, list, function (email) {
email = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(email);
return email && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(identityEmail) !== email;
});
if (isIn) {
list.push(identityEmail);
}
context[name](list.join(','));
}
};
_this.oLastMessage = null;
_this.oEditor = null;
_this.aDraftInfo = null;
_this.sInReplyTo = '';
_this.bFromDraft = false;
_this.sReferences = '';
_this.sLastFocusedField = 'to';
_this.resizerTrigger = ___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.resizerTrigger, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.allowContacts = !!Stores_User_App__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].contactsIsAllowed();
_this.allowFolders = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Capa"].Folders);
_this.bSkipNextHide = false;
_this.composeInEdit = Stores_User_App__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].composeInEdit;
_this.editorDefaultType = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].editorDefaultType;
_this.capaOpenPGP = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_37__[/* default */ "a"].capaOpenPGP;
_this.identitiesDropdownTrigger = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.to = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.to.focused = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.cc = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.cc.focused = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.bcc = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.bcc.focused = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.replyTo = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.replyTo.focused = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false); // this.to.subscribe((v) => console.log(v));
ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
switch (true) {
case _this.to.focused():
_this.sLastFocusedField = 'to';
break;
case _this.cc.focused():
_this.sLastFocusedField = 'cc';
break;
case _this.bcc.focused():
_this.sLastFocusedField = 'bcc';
break;
// no default
}
}).extend({
notify: 'always'
});
_this.subject = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.subject.focused = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.isHtml = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.requestDsn = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.requestReadReceipt = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.markAsImportant = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.sendError = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.sendSuccessButSaveError = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.savedError = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.sendButtonSuccess = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return !_this.sendError() && !_this.sendSuccessButSaveError();
});
_this.sendErrorDesc = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.savedErrorDesc = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.sendError.subscribe(function (value) {
if (!value) {
_this.sendErrorDesc('');
}
});
_this.savedError.subscribe(function (value) {
if (!value) {
_this.savedErrorDesc('');
}
});
_this.sendSuccessButSaveError.subscribe(function (value) {
if (!value) {
_this.savedErrorDesc('');
}
});
_this.savedTime = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(0);
_this.savedTimeText = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return 0 < _this.savedTime() ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/SAVED_TIME', {
'TIME': Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_29__["format"])(_this.savedTime() - 1, 'LT')
}) : '';
});
_this.emptyToError = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.emptyToErrorTooltip = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _this.emptyToError() ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/EMPTY_TO_ERROR_DESC') : '';
});
_this.attachmentsInProcessError = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.attachmentsInErrorError = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.attachmentsErrorTooltip = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
var result = '';
switch (true) {
case _this.attachmentsInProcessError():
result = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/ATTACHMENTS_UPLOAD_ERROR_DESC');
break;
case _this.attachmentsInErrorError():
result = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/ATTACHMENTS_ERROR_DESC');
break;
// no default
}
return result;
});
_this.showCc = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.showBcc = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.showReplyTo = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.cc.subscribe(function (value) {
if (false === _this.showCc() && 0 < value.length) {
_this.showCc(true);
}
});
_this.bcc.subscribe(function (value) {
if (false === _this.showBcc() && 0 < value.length) {
_this.showBcc(true);
}
});
_this.replyTo.subscribe(function (value) {
if (false === _this.showReplyTo() && 0 < value.length) {
_this.showReplyTo(true);
}
});
_this.draftFolder = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.draftUid = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable('');
_this.sending = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.saving = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.attachments = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observableArray([]);
_this.attachmentsInProcess = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, _this.attachments(), function (item) {
return item && !item.complete();
});
});
_this.attachmentsInReady = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, _this.attachments(), function (item) {
return item && item.complete();
});
});
_this.attachmentsInError = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, _this.attachments(), function (item) {
return item && '' !== item.error();
});
});
_this.attachmentsCount = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _this.attachments().length;
});
_this.attachmentsInErrorCount = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _this.attachmentsInError().length;
});
_this.attachmentsInProcessCount = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _this.attachmentsInProcess().length;
});
_this.isDraftFolderMessage = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return '' !== _this.draftFolder() && '' !== _this.draftUid();
});
_this.attachmentsPlace = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.attachments.subscribe(_this.resizerTrigger);
_this.attachmentsPlace.subscribe(_this.resizerTrigger);
_this.attachmentsInErrorCount.subscribe(function (value) {
if (0 === value) {
_this.attachmentsInErrorError(false);
}
});
_this.composeUploaderButton = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(null);
_this.composeUploaderDropPlace = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(null);
_this.dragAndDropEnabled = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.dragAndDropOver = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false).extend({
throttle: 1
});
_this.dragAndDropVisible = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false).extend({
throttle: 1
});
_this.attacheMultipleAllowed = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.addAttachmentEnabled = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.composeEditorArea = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(null);
_this.identities = Stores_User_Identity__WEBPACK_IMPORTED_MODULE_34__[/* default */ "a"].identities;
_this.identitiesOptions = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, Stores_User_Identity__WEBPACK_IMPORTED_MODULE_34__[/* default */ "a"].identities(), function (item) {
return {
'item': item,
'optValue': item.id(),
'optText': item.formattedName()
};
});
});
_this.currentIdentity = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(_this.identities()[0] ? _this.identities()[0] : null);
_this.currentIdentity.extend({
toggleSubscribe: [Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this), function (identity) {
fEmailOutInHelper(Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this), identity, 'bcc');
fEmailOutInHelper(Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this), identity, 'replyTo');
}, function (identity) {
fEmailOutInHelper(Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this), identity, 'bcc', true);
fEmailOutInHelper(Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this), identity, 'replyTo', true);
}]
});
_this.currentIdentityView = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
var item = _this.currentIdentity();
return item ? item.formattedName() : 'unknown';
});
_this.to.subscribe(function (value) {
if (_this.emptyToError() && 0 < value.length) {
_this.emptyToError(false);
}
});
_this.attachmentsInProcess.subscribe(function (value) {
if (_this.attachmentsInProcessError() && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isArray"])(value) && 0 === value.length) {
_this.attachmentsInProcessError(false);
}
});
_this.resizer = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false).extend({
throttle: 50
});
_this.resizer.subscribe(function () {
if (_this.oEditor) {
_this.oEditor.resize();
}
});
_this.canBeSentOrSaved = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].computed(function () {
return !_this.sending() && !_this.saving();
});
_this.sendMessageResponse = ___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.sendMessageResponse, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.saveMessageResponse = ___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.saveMessageResponse, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
Common_Events__WEBPACK_IMPORTED_MODULE_42__[/* sub */ "b"]('interval.2m', function () {
if (_this.modalVisibility() && !Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].draftFolderNotEnabled() && Stores_User_Settings__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].allowDraftAutosave() && !_this.isEmptyForm(false) && !_this.saving() && !_this.sending() && !_this.savedError()) {
_this.saveCommand();
}
});
_this.showCc.subscribe(_this.resizerTrigger);
_this.showBcc.subscribe(_this.resizerTrigger);
_this.showReplyTo.subscribe(_this.resizerTrigger);
_this.dropboxEnabled = Stores_Social__WEBPACK_IMPORTED_MODULE_39__[/* default */ "a"].dropbox.enabled;
_this.dropboxApiKey = Stores_Social__WEBPACK_IMPORTED_MODULE_39__[/* default */ "a"].dropbox.apiKey;
_this.driveEnabled = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(Common_Globals__WEBPACK_IMPORTED_MODULE_26__["bXMLHttpRequestSupported"] && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('AllowGoogleSocial') && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('AllowGoogleSocialDrive') && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('GoogleClientID') && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('GoogleApiKey'));
_this.driveVisible = ko__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].observable(false);
_this.driveCallback = ___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.driveCallback, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.onMessageUploadAttachments = ___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.onMessageUploadAttachments, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.bDisabeCloseOnEsc = true;
_this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose;
_this.tryToClosePopup = ___WEBPACK_IMPORTED_MODULE_18___default.a.debounce(___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.tryToClosePopup, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this)), Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Magics"].Time200ms);
_this.emailsSource = ___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.emailsSource, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.autosaveFunction = ___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this.autosaveFunction, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.iTimer = 0;
return _this;
}
var _proto = ComposePopupView.prototype;
_proto.sendCommand = function sendCommand() {
var sTo = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(this.to()),
sCc = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(this.cc()),
sBcc = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(this.bcc());
var sSentFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].sentFolder();
this.attachmentsInProcessError(false);
this.attachmentsInErrorError(false);
this.emptyToError(false);
if (0 < this.attachmentsInProcess().length) {
this.attachmentsInProcessError(true);
this.attachmentsPlace(true);
} else if (0 < this.attachmentsInError().length) {
this.attachmentsInErrorError(true);
this.attachmentsPlace(true);
}
if ('' === sTo && '' === sCc && '' === sBcc) {
this.emptyToError(true);
}
if (!this.emptyToError() && !this.attachmentsInErrorError() && !this.attachmentsInProcessError()) {
if (Stores_User_Settings__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].replySameFolder()) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isArray"])(this.aDraftInfo) && 3 === this.aDraftInfo.length && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNormal"])(this.aDraftInfo[2]) && 0 < this.aDraftInfo[2].length) {
sSentFolder = this.aDraftInfo[2];
}
}
if (!this.allowFolders) {
sSentFolder = Common_Consts__WEBPACK_IMPORTED_MODULE_25__[/* UNUSED_OPTION_VALUE */ "r"];
}
if ('' === sSentFolder) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["showScreenPopup"])(__webpack_require__(/*! View/Popup/FolderSystem */ 316), [Common_Enums__WEBPACK_IMPORTED_MODULE_23__["SetSystemFoldersNotification"].Sent]);
} else {
this.sendError(false);
this.sending(true);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isArray"])(this.aDraftInfo) && 3 === this.aDraftInfo.length) {
var flagsCache = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* getMessageFlagsFromCache */ "j"])(this.aDraftInfo[2], this.aDraftInfo[1]);
if (flagsCache) {
if ('forward' === this.aDraftInfo[0]) {
flagsCache[3] = true;
} else {
flagsCache[2] = true;
}
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* setMessageFlagsToCache */ "t"])(this.aDraftInfo[2], this.aDraftInfo[1], flagsCache);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_44__[/* getApp */ "a"])().reloadFlagsCurrentMessageListAndMessageFromCache();
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* setFolderHash */ "q"])(this.aDraftInfo[2], '');
}
}
sSentFolder = Common_Consts__WEBPACK_IMPORTED_MODULE_25__[/* UNUSED_OPTION_VALUE */ "r"] === sSentFolder ? '' : sSentFolder;
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* setFolderHash */ "q"])(this.draftFolder(), '');
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* setFolderHash */ "q"])(sSentFolder, '');
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_40__[/* default */ "a"].sendMessage(this.sendMessageResponse, this.currentIdentity() ? this.currentIdentity().id() : '', this.draftFolder(), this.draftUid(), sSentFolder, sTo, this.cc(), this.bcc(), this.replyTo(), this.subject(), this.oEditor ? this.oEditor.isHtml() : false, this.oEditor ? this.oEditor.getData(true) : '', this.prepearAttachmentsForSendOrSave(), this.aDraftInfo, this.sInReplyTo, this.sReferences, this.requestDsn(), this.requestReadReceipt(), this.markAsImportant());
}
}
};
_proto.saveCommand = function saveCommand() {
if (!this.allowFolders) {
return false;
}
if (Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].draftFolderNotEnabled()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["showScreenPopup"])(__webpack_require__(/*! View/Popup/FolderSystem */ 316), [Common_Enums__WEBPACK_IMPORTED_MODULE_23__["SetSystemFoldersNotification"].Draft]);
} else {
this.savedError(false);
this.saving(true);
this.autosaveStart();
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* setFolderHash */ "q"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].draftFolder(), '');
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_40__[/* default */ "a"].saveMessage(this.saveMessageResponse, this.currentIdentity() ? this.currentIdentity().id() : '', this.draftFolder(), this.draftUid(), Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].draftFolder(), this.to(), this.cc(), this.bcc(), this.replyTo(), this.subject(), this.oEditor ? this.oEditor.isHtml() : false, this.oEditor ? this.oEditor.getData(true) : '', this.prepearAttachmentsForSendOrSave(), this.aDraftInfo, this.sInReplyTo, this.sReferences, this.markAsImportant());
}
return true;
};
_proto.deleteCommand = function deleteCommand() {
var _this2 = this;
var PopupsAskViewModel = __webpack_require__(/*! View/Popup/Ask */ 238);
if (!Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["isPopupVisible"])(PopupsAskViewModel) && this.modalVisibility()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["showScreenPopup"])(PopupsAskViewModel, [Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), function () {
if (_this2.modalVisibility()) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_44__[/* getApp */ "a"])().deleteMessagesFromFolderWithoutCheck(_this2.draftFolder(), [_this2.draftUid()]);
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["hideScreenPopup"])(ComposePopupView);
}
}]);
}
};
_proto.skipCommand = function skipCommand() {
this.bSkipNextHide = true;
if (this.modalVisibility() && !this.saving() && !this.sending() && !Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].draftFolderNotEnabled() && Stores_User_Settings__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].allowDraftAutosave()) {
this.saveCommand();
}
this.tryToClosePopup();
};
_proto.contactsCommand = function contactsCommand() {
var _this3 = this;
if (this.allowContacts) {
this.skipCommand();
___WEBPACK_IMPORTED_MODULE_18___default.a.delay(function () {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Contacts */ 427), [true, _this3.sLastFocusedField]);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Magics"].Time200ms);
}
};
_proto.dropboxCommand = function dropboxCommand() {
var _this4 = this;
if (window__WEBPACK_IMPORTED_MODULE_17___default.a.Dropbox) {
window__WEBPACK_IMPORTED_MODULE_17___default.a.Dropbox.choose({
success: function success(files) {
if (files && files[0] && files[0].link) {
_this4.addDropboxAttachment(files[0]);
}
},
linkType: 'direct',
multiselect: false
});
}
return true;
};
_proto.driveCommand = function driveCommand() {
this.driveOpenPopup();
return true;
};
_proto.autosaveFunction = function autosaveFunction() {
if (this.modalVisibility() && !Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].draftFolderNotEnabled() && Stores_User_Settings__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].allowDraftAutosave() && !this.isEmptyForm(false) && !this.saving() && !this.sending() && !this.savedError()) {
this.saveCommand();
}
this.autosaveStart();
};
_proto.autosaveStart = function autosaveStart() {
window__WEBPACK_IMPORTED_MODULE_17___default.a.clearTimeout(this.iTimer);
this.iTimer = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_5___default()(this.autosaveFunction, Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Magics"].Time1m);
};
_proto.autosaveStop = function autosaveStop() {
window__WEBPACK_IMPORTED_MODULE_17___default.a.clearTimeout(this.iTimer);
};
_proto.emailsSource = function emailsSource(oData, fResponse) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_44__[/* getApp */ "a"])().getAutocomplete(oData.term, function (aData) {
fResponse(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, aData, function (oEmailItem) {
return oEmailItem.toLine(false);
}));
});
};
_proto.openOpenPgpPopup = function openOpenPgpPopup() {
var _this5 = this;
if (Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_37__[/* default */ "a"].capaOpenPGP() && this.oEditor && !this.oEditor.isHtml()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["showScreenPopup"])(__webpack_require__(/*! View/Popup/ComposeOpenPgp */ 553), [function (result) {
_this5.editor(function (editor) {
editor.setPlain(result);
});
}, this.oEditor.getData(false), this.currentIdentity(), this.to(), this.cc(), this.bcc()]);
}
};
_proto.reloadDraftFolder = function reloadDraftFolder() {
var draftFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].draftFolder();
if ('' !== draftFolder && Common_Consts__WEBPACK_IMPORTED_MODULE_25__[/* UNUSED_OPTION_VALUE */ "r"] !== draftFolder) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* setFolderHash */ "q"])(draftFolder, '');
if (Stores_User_Folder__WEBPACK_IMPORTED_MODULE_36__[/* default */ "a"].currentFolderFullNameRaw() === draftFolder) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_44__[/* getApp */ "a"])().reloadMessageList(true);
} else {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_44__[/* getApp */ "a"])().folderInformation(draftFolder);
}
}
};
_proto.findIdentityByMessage = function findIdentityByMessage(composeType, message) {
var resultIndex = 1000,
resultIdentity = null;
var identities = Stores_User_Identity__WEBPACK_IMPORTED_MODULE_34__[/* default */ "a"].identities(),
identitiesCache = {},
fEachHelper = function fEachHelper(item) {
if (item && item.email && identitiesCache[item.email]) {
if (!resultIdentity || resultIndex > identitiesCache[item.email][1]) {
resultIdentity = identitiesCache[item.email][0];
resultIndex = identitiesCache[item.email][1];
}
}
};
___WEBPACK_IMPORTED_MODULE_18___default.a.each(identities, function (item, index) {
identitiesCache[item.email()] = [item, index];
});
if (message) {
switch (composeType) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Empty:
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Reply:
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ReplyAll:
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Forward:
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ForwardAsAttachment:
___WEBPACK_IMPORTED_MODULE_18___default.a.each(___WEBPACK_IMPORTED_MODULE_18___default.a.union(message.to, message.cc, message.bcc), fEachHelper);
if (!resultIdentity) {
___WEBPACK_IMPORTED_MODULE_18___default.a.each(message.deliveredTo, fEachHelper);
}
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Draft:
___WEBPACK_IMPORTED_MODULE_18___default.a.each(___WEBPACK_IMPORTED_MODULE_18___default.a.union(message.from, message.replyTo), fEachHelper);
break;
// no default
}
}
return resultIdentity || identities[0] || null;
};
_proto.selectIdentity = function selectIdentity(identity) {
if (identity && identity.item) {
this.currentIdentity(identity.item);
this.setSignatureFromIdentity(identity.item);
}
};
_proto.sendMessageResponse = function sendMessageResponse(statusResult, data) {
var result = false,
message = '';
this.sending(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["StorageResultType"].Success === statusResult && data && data.Result) {
result = true;
if (this.modalVisibility()) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["delegateRun"])(this, 'closeCommand');
}
}
if (this.modalVisibility() && !result) {
if (data && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Notification"].CantSaveMessage === data.ErrorCode) {
this.sendSuccessButSaveError(true);
this.savedErrorDesc(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/SAVED_ERROR_ON_SEND')));
} else {
message = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["getNotification"])(data && data.ErrorCode ? data.ErrorCode : Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Notification"].CantSendMessage, data && data.ErrorMessage ? data.ErrorMessage : '');
this.sendError(true);
this.sendErrorDesc(message || Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Notification"].CantSendMessage));
}
}
this.reloadDraftFolder();
};
_proto.saveMessageResponse = function saveMessageResponse(statusResult, oData) {
var result = false;
this.saving(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["StorageResultType"].Success === statusResult && oData && oData.Result) {
if (oData.Result.NewFolder && oData.Result.NewUid) {
result = true;
if (this.bFromDraft) {
var message = Stores_User_Message__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].message();
if (message && this.draftFolder() === message.folderFullNameRaw && this.draftUid() === message.uid) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].message(null);
}
}
this.draftFolder(oData.Result.NewFolder);
this.draftUid(oData.Result.NewUid);
this.savedTime(window__WEBPACK_IMPORTED_MODULE_17___default.a.Math.round(new window__WEBPACK_IMPORTED_MODULE_17___default.a.Date().getTime() / 1000));
if (this.bFromDraft) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_30__[/* setFolderHash */ "q"])(this.draftFolder(), '');
}
}
}
if (!result) {
this.savedError(true);
this.savedErrorDesc(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Notification"].CantSaveMessage));
}
this.reloadDraftFolder();
};
_proto.onHide = function onHide() {
this.autosaveStop();
if (!this.bSkipNextHide) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].composeInEdit(false);
this.reset();
}
this.bSkipNextHide = false;
this.to.focused(false);
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["routeOn"])();
};
_proto.editor = function editor(fOnInit) {
var _this6 = this;
if (fOnInit) {
if (!this.oEditor && this.composeEditorArea()) {
// _.delay(() => {
this.oEditor = new Common_HtmlEditor__WEBPACK_IMPORTED_MODULE_31__["HtmlEditor"](this.composeEditorArea(), null, function () {
fOnInit(_this6.oEditor);
_this6.resizerTrigger();
}, function (bHtml) {
_this6.isHtml(!!bHtml);
}); // }, 1000);
} else if (this.oEditor) {
fOnInit(this.oEditor);
this.resizerTrigger();
}
}
};
_proto.converSignature = function converSignature(signature) {
var limit = 10,
fromLine = '';
var moments = [],
momentRegx = /{{MOMENT:([^}]+)}}/g;
signature = signature.replace(/[\r]/g, '');
fromLine = this.oLastMessage ? this.emailArrayToStringLineHelper(this.oLastMessage.from, true) : '';
if ('' !== fromLine) {
signature = signature.replace(/{{FROM-FULL}}/g, fromLine);
if (-1 === fromLine.indexOf(' ') && 0 < fromLine.indexOf('@')) {
fromLine = fromLine.replace(/@[\S]+/, '');
}
signature = signature.replace(/{{FROM}}/g, fromLine);
}
signature = signature.replace(/[\s]{1,2}{{FROM}}/g, '{{FROM}}');
signature = signature.replace(/[\s]{1,2}{{FROM-FULL}}/g, '{{FROM-FULL}}');
signature = signature.replace(/{{FROM}}/g, '');
signature = signature.replace(/{{FROM-FULL}}/g, '');
if (-1 < signature.indexOf('{{DATE}}')) {
signature = signature.replace(/{{DATE}}/g, Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_29__["format"])(0, 'llll'));
}
if (-1 < signature.indexOf('{{TIME}}')) {
signature = signature.replace(/{{TIME}}/g, Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_29__["format"])(0, 'LT'));
}
if (-1 < signature.indexOf('{{MOMENT:')) {
try {
var match = null;
while (null !== (match = momentRegx.exec(signature))) {
// eslint-disable-line no-cond-assign
if (match && match[0] && match[1]) {
moments.push([match[0], match[1]]);
}
limit -= 1;
if (0 === limit) {
break;
}
}
if (moments && 0 < moments.length) {
___WEBPACK_IMPORTED_MODULE_18___default.a.each(moments, function (data) {
signature = signature.replace(data[0], Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_29__["format"])(0, data[1]));
});
}
signature = signature.replace(/{{MOMENT:[^}]+}}/g, '');
} catch (e) {} // eslint-disable-line no-empty
}
return signature;
};
_proto.setSignatureFromIdentity = function setSignatureFromIdentity(identity) {
var _this7 = this;
if (identity) {
this.editor(function (editor) {
var isHtml = false,
signature = identity.signature();
if ('' !== signature) {
if (':HTML:' === signature.substr(0, 6)) {
isHtml = true;
signature = signature.substr(6);
}
}
editor.setSignature(_this7.converSignature(signature), isHtml, !!identity.signatureInsertBefore());
});
}
}
/**
* @param {string=} type = ComposeType.Empty
* @param {?MessageModel|Array=} oMessageOrArray = null
* @param {Array=} aToEmails = null
* @param {Array=} aCcEmails = null
* @param {Array=} aBccEmails = null
* @param {string=} sCustomSubject = null
* @param {string=} sCustomPlainText = null
*/
;
_proto.onShow = function onShow(type, oMessageOrArray, aToEmails, aCcEmails, aBccEmails, sCustomSubject, sCustomPlainText) {
var _this8 = this;
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["routeOff"])();
this.autosaveStart();
if (Stores_User_App__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].composeInEdit()) {
type = type || Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Empty;
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Empty !== type) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Ask */ 238), [Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/DISCARD_UNSAVED_DATA'), function () {
_this8.initOnShow(type, oMessageOrArray, aToEmails, aCcEmails, aBccEmails, sCustomSubject, sCustomPlainText);
}, null, null, null, false]);
} else {
this.addEmailsTo(this.to, aToEmails);
this.addEmailsTo(this.cc, aCcEmails);
this.addEmailsTo(this.bcc, aBccEmails);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNormal"])(sCustomSubject) && '' !== sCustomSubject && '' === this.subject()) {
this.subject(sCustomSubject);
}
}
} else {
this.initOnShow(type, oMessageOrArray, aToEmails, aCcEmails, aBccEmails, sCustomSubject, sCustomPlainText);
}
};
_proto.onWarmUp = function onWarmUp() {
if (this.modalVisibility && !this.modalVisibility()) {
this.editor(function (editor) {
return editor.modeToggle(false);
});
}
}
/**
* @param {Function} fKoValue
* @param {Array} emails
*/
;
_proto.addEmailsTo = function addEmailsTo(fKoValue, emails) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(emails)) {
var value = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(fKoValue()),
values = ___WEBPACK_IMPORTED_MODULE_18___default.a.uniq(___WEBPACK_IMPORTED_MODULE_18___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, emails, function (item) {
return item ? item.toLine(false) : null;
})));
fKoValue(value + ('' === value ? '' : ', ') + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(values.join(', ')));
}
}
/**
*
* @param {Array} aList
* @param {boolean} bFriendly
* @returns {string}
*/
;
_proto.emailArrayToStringLineHelper = function emailArrayToStringLineHelper(aList, bFriendly) {
bFriendly = !!bFriendly;
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, aList, function (item) {
return item.toLine(bFriendly);
}).join(', ');
}
/**
* @param {string=} sType = ComposeType.Empty
* @param {?MessageModel|Array=} oMessageOrArray = null
* @param {Array=} aToEmails = null
* @param {Array=} aCcEmails = null
* @param {Array=} aBccEmails = null
* @param {string=} sCustomSubject = null
* @param {string=} sCustomPlainText = null
*/
;
_proto.initOnShow = function initOnShow(sType, oMessageOrArray, aToEmails, aCcEmails, aBccEmails, sCustomSubject, sCustomPlainText) {
var _this9 = this;
Stores_User_App__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].composeInEdit(true);
var sFrom = '',
sTo = '',
sCc = '',
sDate = '',
sSubject = '',
sText = '',
sReplyTitle = '',
identity = null,
aDraftInfo = null,
message = null;
var excludeEmail = {},
mEmail = Stores_User_Account__WEBPACK_IMPORTED_MODULE_35__[/* default */ "a"].email(),
lineComposeType = sType || Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Empty;
oMessageOrArray = oMessageOrArray || null;
if (oMessageOrArray && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNormal"])(oMessageOrArray)) {
message = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isArray"])(oMessageOrArray) && 1 === oMessageOrArray.length ? oMessageOrArray[0] : !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isArray"])(oMessageOrArray) ? oMessageOrArray : null;
}
this.oLastMessage = message;
if (null !== mEmail) {
excludeEmail[mEmail] = true;
}
this.reset();
identity = this.findIdentityByMessage(lineComposeType, message);
if (identity) {
excludeEmail[identity.email()] = true;
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(aToEmails)) {
this.to(this.emailArrayToStringLineHelper(aToEmails));
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(aCcEmails)) {
this.cc(this.emailArrayToStringLineHelper(aCcEmails));
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(aBccEmails)) {
this.bcc(this.emailArrayToStringLineHelper(aBccEmails));
}
if ('' !== lineComposeType && message) {
sDate = Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_29__["format"])(message.dateTimeStampInUTC(), 'FULL');
sSubject = message.subject();
aDraftInfo = message.aDraftInfo;
var clonedText = $__WEBPACK_IMPORTED_MODULE_19___default()(message.body).clone();
if (clonedText) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["clearBqSwitcher"])(clonedText);
sText = clonedText.html();
}
var resplyAllParts = null;
switch (lineComposeType) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Empty:
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Reply:
this.to(this.emailArrayToStringLineHelper(message.replyEmails(excludeEmail)));
this.subject(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["replySubjectAdd"])('Re', sSubject));
this.prepearMessageAttachments(message, lineComposeType);
this.aDraftInfo = ['reply', message.uid, message.folderFullNameRaw];
this.sInReplyTo = message.sMessageId;
this.sReferences = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(this.sInReplyTo + ' ' + message.sReferences);
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ReplyAll:
resplyAllParts = message.replyAllEmails(excludeEmail);
this.to(this.emailArrayToStringLineHelper(resplyAllParts[0]));
this.cc(this.emailArrayToStringLineHelper(resplyAllParts[1]));
this.subject(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["replySubjectAdd"])('Re', sSubject));
this.prepearMessageAttachments(message, lineComposeType);
this.aDraftInfo = ['reply', message.uid, message.folderFullNameRaw];
this.sInReplyTo = message.sMessageId;
this.sReferences = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(this.sInReplyTo + ' ' + message.references());
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Forward:
this.subject(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["replySubjectAdd"])('Fwd', sSubject));
this.prepearMessageAttachments(message, lineComposeType);
this.aDraftInfo = ['forward', message.uid, message.folderFullNameRaw];
this.sInReplyTo = message.sMessageId;
this.sReferences = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(this.sInReplyTo + ' ' + message.sReferences);
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ForwardAsAttachment:
this.subject(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["replySubjectAdd"])('Fwd', sSubject));
this.prepearMessageAttachments(message, lineComposeType);
this.aDraftInfo = ['forward', message.uid, message.folderFullNameRaw];
this.sInReplyTo = message.sMessageId;
this.sReferences = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(this.sInReplyTo + ' ' + message.sReferences);
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Draft:
this.to(this.emailArrayToStringLineHelper(message.to));
this.cc(this.emailArrayToStringLineHelper(message.cc));
this.bcc(this.emailArrayToStringLineHelper(message.bcc));
this.replyTo(this.emailArrayToStringLineHelper(message.replyTo));
this.bFromDraft = true;
this.draftFolder(message.folderFullNameRaw);
this.draftUid(message.uid);
this.subject(sSubject);
this.prepearMessageAttachments(message, lineComposeType);
this.aDraftInfo = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(aDraftInfo) && 3 === aDraftInfo.length ? aDraftInfo : null;
this.sInReplyTo = message.sInReplyTo;
this.sReferences = message.sReferences;
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].EditAsNew:
this.to(this.emailArrayToStringLineHelper(message.to));
this.cc(this.emailArrayToStringLineHelper(message.cc));
this.bcc(this.emailArrayToStringLineHelper(message.bcc));
this.replyTo(this.emailArrayToStringLineHelper(message.replyTo));
this.subject(sSubject);
this.prepearMessageAttachments(message, lineComposeType);
this.aDraftInfo = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(aDraftInfo) && 3 === aDraftInfo.length ? aDraftInfo : null;
this.sInReplyTo = message.sInReplyTo;
this.sReferences = message.sReferences;
break;
// no default
}
switch (lineComposeType) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Reply:
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ReplyAll:
sFrom = message.fromToLine(false, true);
sReplyTitle = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/REPLY_MESSAGE_TITLE', {
'DATETIME': sDate,
'EMAIL': sFrom
});
sText = '<br /><br />' + sReplyTitle + ':' + '<br /><br />' + '<blockquote>' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(sText) + '</blockquote>';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Forward:
sFrom = message.fromToLine(false, true);
sTo = message.toToLine(false, true);
sCc = message.ccToLine(false, true);
sText = '<br /><br />' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/FORWARD_MESSAGE_TOP_TITLE') + '<br />' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/FORWARD_MESSAGE_TOP_FROM') + ': ' + sFrom + '<br />' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/FORWARD_MESSAGE_TOP_TO') + ': ' + sTo + (0 < sCc.length ? '<br />' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/FORWARD_MESSAGE_TOP_CC') + ': ' + sCc : '') + '<br />' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/FORWARD_MESSAGE_TOP_SENT') + ': ' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["encodeHtml"])(sDate) + '<br />' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('COMPOSE/FORWARD_MESSAGE_TOP_SUBJECT') + ': ' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["encodeHtml"])(sSubject) + '<br /><br />' + Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["trim"])(sText) + '<br /><br />';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ForwardAsAttachment:
sText = '';
break;
// no default
}
this.editor(function (editor) {
editor.setHtml(sText, false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["EditorDefaultType"].PlainForced === _this9.editorDefaultType() || !message.isHtml() && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["EditorDefaultType"].HtmlForced !== _this9.editorDefaultType()) {
editor.modeToggle(false);
}
if (identity && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Draft !== lineComposeType && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].EditAsNew !== lineComposeType) {
_this9.setSignatureFromIdentity(identity);
}
_this9.setFocusInPopup();
});
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Empty === lineComposeType) {
this.subject(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNormal"])(sCustomSubject) ? '' + sCustomSubject : '');
sText = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNormal"])(sCustomPlainText) ? '' + sCustomPlainText : '';
this.editor(function (editor) {
editor.setHtml(sText, false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["EditorDefaultType"].Html !== _this9.editorDefaultType() && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["EditorDefaultType"].HtmlForced !== _this9.editorDefaultType()) {
editor.modeToggle(false);
}
if (identity) {
_this9.setSignatureFromIdentity(identity);
}
_this9.setFocusInPopup();
});
} else if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(oMessageOrArray)) {
___WEBPACK_IMPORTED_MODULE_18___default.a.each(oMessageOrArray, function (item) {
_this9.addMessageAsAttachment(item);
});
this.editor(function (editor) {
editor.setHtml('', false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["EditorDefaultType"].Html !== _this9.editorDefaultType() && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["EditorDefaultType"].HtmlForced !== _this9.editorDefaultType()) {
editor.modeToggle(false);
}
if (identity && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Draft !== lineComposeType && Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].EditAsNew !== lineComposeType) {
_this9.setSignatureFromIdentity(identity);
}
_this9.setFocusInPopup();
});
} else {
this.setFocusInPopup();
}
var downloads = this.getAttachmentsDownloadsForUpload();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(downloads)) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_40__[/* default */ "a"].messageUploadAttachments(this.onMessageUploadAttachments, downloads);
}
if (identity) {
this.currentIdentity(identity);
}
this.resizerTrigger();
};
_proto.onMessageUploadAttachments = function onMessageUploadAttachments(sResult, oData) {
var _this10 = this;
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["StorageResultType"].Success === sResult && oData && oData.Result) {
if (!this.viewModelVisibility()) {
___WEBPACK_IMPORTED_MODULE_18___default.a.each(oData.Result, function (id, tempName) {
var attachment = _this10.getAttachmentById(id);
if (attachment) {
attachment.tempName(tempName);
attachment.waiting(false).uploading(false).complete(true);
}
});
}
} else {
this.setMessageAttachmentFailedDownloadText();
}
};
_proto.setFocusInPopup = function setFocusInPopup() {
var _this11 = this;
if (!Common_Globals__WEBPACK_IMPORTED_MODULE_26__["bMobileDevice"]) {
___WEBPACK_IMPORTED_MODULE_18___default.a.delay(function () {
if ('' === _this11.to()) {
_this11.to.focused(true);
} else if (_this11.oEditor) {
if (!_this11.to.focused()) {
_this11.oEditor.focus();
}
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Magics"].Time100ms);
}
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.resizerTrigger();
};
_proto.tryToClosePopup = function tryToClosePopup() {
var _this12 = this;
var PopupsAskViewModel = __webpack_require__(/*! View/Popup/Ask */ 238);
if (!Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["isPopupVisible"])(PopupsAskViewModel) && this.modalVisibility()) {
if (this.bSkipNextHide || this.isEmptyForm() && !this.draftUid()) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["delegateRun"])(this, 'closeCommand');
} else {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_45__["showScreenPopup"])(PopupsAskViewModel, [Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('POPUPS_ASK/DESC_WANT_CLOSE_THIS_WINDOW'), function () {
if (_this12.modalVisibility()) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["delegateRun"])(_this12, 'closeCommand');
}
}]);
}
}
};
_proto.onBuild = function onBuild() {
var _this13 = this;
this.initUploader();
key__WEBPACK_IMPORTED_MODULE_21___default()('ctrl+q, command+q, ctrl+w, command+w', Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose, Common_Utils__WEBPACK_IMPORTED_MODULE_24__["noopFalse"]);
key__WEBPACK_IMPORTED_MODULE_21___default()('`', Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose, function () {
if (_this13.oEditor && !_this13.oEditor.hasFocus() && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["inFocus"])()) {
_this13.identitiesDropdownTrigger(true);
return false;
}
return true;
});
key__WEBPACK_IMPORTED_MODULE_21___default()('ctrl+`', Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose, function () {
_this13.identitiesDropdownTrigger(true);
return false;
});
key__WEBPACK_IMPORTED_MODULE_21___default()('esc, ctrl+down, command+down', Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose, function () {
_this13.skipCommand();
return false;
});
if (this.allowFolders) {
key__WEBPACK_IMPORTED_MODULE_21___default()('ctrl+s, command+s', Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose, function () {
_this13.saveCommand();
return false;
});
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["appSettingsGet"]('allowCtrlEnterOnCompose')) {
key__WEBPACK_IMPORTED_MODULE_21___default()('ctrl+enter, command+enter', Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose, function () {
_this13.sendCommand();
return false;
});
}
key__WEBPACK_IMPORTED_MODULE_21___default()('shift+esc', Common_Enums__WEBPACK_IMPORTED_MODULE_23__["KeyState"].Compose, function () {
if (_this13.modalVisibility()) {
_this13.tryToClosePopup();
}
return false;
});
Common_Events__WEBPACK_IMPORTED_MODULE_42__[/* sub */ "b"]('window.resize.real', this.resizerTrigger);
Common_Events__WEBPACK_IMPORTED_MODULE_42__[/* sub */ "b"]('window.resize.real', ___WEBPACK_IMPORTED_MODULE_18___default.a.debounce(this.resizerTrigger, Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Magics"].Time50ms));
Stores_Social__WEBPACK_IMPORTED_MODULE_39__[/* default */ "a"].appendDropbox();
if (this.driveEnabled()) {
$__WEBPACK_IMPORTED_MODULE_19___default.a.getScript('https://apis.google.com/js/api.js', function () {
if (window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi) {
_this13.driveVisible(true);
}
});
}
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_6___default()(function () {
if (_this13.modalVisibility() && _this13.oEditor) {
_this13.oEditor.resize();
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_23__["Magics"].Time5s);
};
_proto.driveCallback = function driveCallback(accessToken, data) {
var _this14 = this;
if (data && window__WEBPACK_IMPORTED_MODULE_17___default.a.XMLHttpRequest && window__WEBPACK_IMPORTED_MODULE_17___default.a.google && data[window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.Response.ACTION] === window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.Action.PICKED && data[window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.Response.DOCUMENTS] && data[window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.Response.DOCUMENTS][0] && data[window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.Response.DOCUMENTS][0].id) {
var request = new window__WEBPACK_IMPORTED_MODULE_17___default.a.XMLHttpRequest();
request.open('GET', 'https://www.googleapis.com/drive/v2/files/' + data[window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.Response.DOCUMENTS][0].id);
request.setRequestHeader('Authorization', 'Bearer ' + accessToken);
request.addEventListener('load', function () {
if (request && request.responseText) {
var response = window__WEBPACK_IMPORTED_MODULE_17___default.a.JSON.parse(request.responseText),
fExport = function fExport(item, mimeType, ext) {
if (item && item.exportLinks) {
if (item.exportLinks[mimeType]) {
response.downloadUrl = item.exportLinks[mimeType];
response.title = item.title + '.' + ext;
response.mimeType = mimeType;
} else if (item.exportLinks['application/pdf']) {
response.downloadUrl = item.exportLinks['application/pdf'];
response.title = item.title + '.pdf';
response.mimeType = 'application/pdf';
}
}
};
if (response && !response.downloadUrl && response.mimeType && response.exportLinks) {
switch (response.mimeType.toString().toLowerCase()) {
case 'application/vnd.google-apps.document':
fExport(response, 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'docx');
break;
case 'application/vnd.google-apps.spreadsheet':
fExport(response, 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'xlsx');
break;
case 'application/vnd.google-apps.drawing':
fExport(response, 'image/png', 'png');
break;
case 'application/vnd.google-apps.presentation':
fExport(response, 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'pptx');
break;
default:
fExport(response, 'application/pdf', 'pdf');
break;
}
}
if (response && response.downloadUrl) {
_this14.addDriveAttachment(response, accessToken);
}
}
});
request.send();
}
};
_proto.driveCreatePiker = function driveCreatePiker(authToken) {
var _this15 = this;
if (window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi && authToken && authToken.access_token) {
window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi.load('picker', {
callback: function callback() {
if (window__WEBPACK_IMPORTED_MODULE_17___default.a.google && window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker) {
var drivePicker = new window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.PickerBuilder() // .addView(window.google.picker.ViewId.FOLDERS)
.addView(window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.ViewId.DOCS).setAppId(Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('GoogleClientID')).setOAuthToken(authToken.access_token).setCallback(___WEBPACK_IMPORTED_MODULE_18___default.a.bind(_this15.driveCallback, _this15, authToken.access_token)).enableFeature(window__WEBPACK_IMPORTED_MODULE_17___default.a.google.picker.Feature.NAV_HIDDEN) // .setOrigin(window.location.protocol + '//' + window.location.host)
.build();
drivePicker.setVisible(true);
}
}
});
}
};
_proto.driveOpenPopup = function driveOpenPopup() {
var _this16 = this;
if (window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi) {
window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi.load('auth', {
callback: function callback() {
var authToken = window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi.auth.getToken(),
fResult = function fResult(authResult) {
if (authResult && !authResult.error) {
var token = window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi.auth.getToken();
if (token) {
_this16.driveCreatePiker(token);
}
return true;
}
return false;
};
if (!authToken) {
window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi.auth.authorize({
'client_id': Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('GoogleClientID'),
'scope': 'https://www.googleapis.com/auth/drive.readonly',
'immediate': true
}, function (authResult) {
if (!fResult(authResult)) {
window__WEBPACK_IMPORTED_MODULE_17___default.a.gapi.auth.authorize({
'client_id': Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('GoogleClientID'),
'scope': 'https://www.googleapis.com/auth/drive.readonly',
'immediate': false
}, fResult);
}
});
} else {
_this16.driveCreatePiker(authToken);
}
}
});
}
}
/**
* @param {string} id
* @returns {?Object}
*/
;
_proto.getAttachmentById = function getAttachmentById(id) {
return _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, this.attachments(), function (item) {
return item && id === item.id;
});
};
_proto.cancelAttachmentHelper = function cancelAttachmentHelper(id, oJua) {
var _this17 = this;
return function () {
var attachment = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, _this17.attachments(), function (item) {
return item && item.id === id;
});
if (attachment) {
_this17.attachments.remove(attachment);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["delegateRunOnDestroy"])(attachment);
if (oJua) {
oJua.cancel(id);
}
}
};
};
_proto.initUploader = function initUploader() {
var _this18 = this;
if (this.composeUploaderButton()) {
var uploadCache = {},
attachmentSizeLimit = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["pInt"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('AttachmentLimit')),
oJua = new Jua__WEBPACK_IMPORTED_MODULE_22___default.a({
'action': Object(Common_Links__WEBPACK_IMPORTED_MODULE_27__[/* upload */ "G"])(),
'name': 'uploader',
'queueSize': 2,
'multipleSizeLimit': 50,
'clickElement': this.composeUploaderButton(),
'dragAndDropElement': this.composeUploaderDropPlace()
});
if (oJua) {
oJua // .on('onLimitReached', (limit) => {
// alert(limit);
// })
.on('onDragEnter', function () {
_this18.dragAndDropOver(true);
}).on('onDragLeave', function () {
_this18.dragAndDropOver(false);
}).on('onBodyDragEnter', function () {
_this18.attachmentsPlace(true);
_this18.dragAndDropVisible(true);
}).on('onBodyDragLeave', function () {
_this18.dragAndDropVisible(false);
}).on('onProgress', function (id, loaded, total) {
var item = uploadCache[id];
if (!item) {
item = _this18.getAttachmentById(id);
if (item) {
uploadCache[id] = item;
}
}
if (item) {
item.progress(window__WEBPACK_IMPORTED_MODULE_17___default.a.Math.floor(loaded / total * 100));
}
}).on('onSelect', function (sId, oData) {
_this18.dragAndDropOver(false);
var fileName = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isUnd"])(oData.FileName) ? '' : oData.FileName.toString(),
size = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNormal"])(oData.Size) ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["pInt"])(oData.Size) : null,
attachment = new Model_ComposeAttachment__WEBPACK_IMPORTED_MODULE_43__[/* ComposeAttachmentModel */ "a"](sId, fileName, size);
attachment.cancel = _this18.cancelAttachmentHelper(sId, oJua);
_this18.attachments.push(attachment);
_this18.attachmentsPlace(true);
if (0 < size && 0 < attachmentSizeLimit && attachmentSizeLimit < size) {
attachment.waiting(false).uploading(true).complete(true).error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('UPLOAD/ERROR_FILE_IS_TOO_BIG'));
return false;
}
return true;
}).on('onStart', function (id) {
var item = uploadCache[id];
if (!item) {
item = _this18.getAttachmentById(id);
if (item) {
uploadCache[id] = item;
}
}
if (item) {
item.waiting(false).uploading(true).complete(false);
}
}).on('onComplete', function (id, result, data) {
var attachment = _this18.getAttachmentById(id),
errorCode = data && data.Result && data.Result.ErrorCode ? data.Result.ErrorCode : null,
attachmentJson = result && data && data.Result && data.Result.Attachment ? data.Result.Attachment : null;
var error = '';
if (null !== errorCode) {
error = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["getUploadErrorDescByCode"])(errorCode);
} else if (!attachmentJson) {
error = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('UPLOAD/ERROR_UNKNOWN');
}
if (attachment) {
if ('' !== error && 0 < error.length) {
attachment.waiting(false).uploading(false).complete(true).error(error);
} else if (attachmentJson) {
attachment.waiting(false).uploading(false).complete(true);
attachment.initByUploadJson(attachmentJson);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isUnd"])(uploadCache[id])) {
delete uploadCache[id];
}
}
});
this.addAttachmentEnabled(true).dragAndDropEnabled(oJua.isDragAndDropSupported());
} else {
this.addAttachmentEnabled(false).dragAndDropEnabled(false);
}
}
}
/**
* @returns {Object}
*/
;
_proto.prepearAttachmentsForSendOrSave = function prepearAttachmentsForSendOrSave() {
var result = {};
___WEBPACK_IMPORTED_MODULE_18___default.a.each(this.attachmentsInReady(), function (item) {
if (item && '' !== item.tempName() && item.enabled()) {
result[item.tempName()] = [item.fileName(), item.isInline ? '1' : '0', item.CID, item.contentLocation];
}
});
return result;
}
/**
* @param {MessageModel} message
*/
;
_proto.addMessageAsAttachment = function addMessageAsAttachment(message) {
if (message) {
var temp = message.subject();
temp = '.eml' === temp.substr(-4).toLowerCase() ? temp : temp + '.eml';
var attachment = new Model_ComposeAttachment__WEBPACK_IMPORTED_MODULE_43__[/* ComposeAttachmentModel */ "a"](message.requestHash, temp, message.size());
attachment.fromMessage = true;
attachment.cancel = this.cancelAttachmentHelper(message.requestHash);
attachment.waiting(false).uploading(true).complete(true);
this.attachments.push(attachment);
}
}
/**
* @param {string} url
* @param {string} name
* @param {number} size
* @returns {ComposeAttachmentModel}
*/
;
_proto.addAttachmentHelper = function addAttachmentHelper(url, name, size) {
var attachment = new Model_ComposeAttachment__WEBPACK_IMPORTED_MODULE_43__[/* ComposeAttachmentModel */ "a"](url, name, size);
attachment.fromMessage = false;
attachment.cancel = this.cancelAttachmentHelper(url);
attachment.waiting(false).uploading(true).complete(false);
this.attachments.push(attachment);
this.attachmentsPlace(true);
return attachment;
}
/**
* @param {Object} dropboxFile
* @returns {boolean}
*/
;
_proto.addDropboxAttachment = function addDropboxAttachment(dropboxFile) {
var attachmentSizeLimit = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["pInt"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('AttachmentLimit')),
mSize = dropboxFile.bytes,
attachment = this.addAttachmentHelper(dropboxFile.link, dropboxFile.name, mSize);
if (0 < mSize && 0 < attachmentSizeLimit && attachmentSizeLimit < mSize) {
attachment.uploading(false).complete(true);
attachment.error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('UPLOAD/ERROR_FILE_IS_TOO_BIG'));
return false;
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_40__[/* default */ "a"].composeUploadExternals(function (statusResult, data) {
var result = false;
attachment.uploading(false).complete(true);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["StorageResultType"].Success === statusResult && data && data.Result) {
if (data.Result[attachment.id]) {
result = true;
attachment.tempName(data.Result[attachment.id]);
}
}
if (!result) {
attachment.error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["getUploadErrorDescByCode"])(Common_Enums__WEBPACK_IMPORTED_MODULE_23__["UploadErrorCode"].FileNoUploaded));
}
}, [dropboxFile.link]);
return true;
}
/**
* @param {Object} driveFile
* @param {string} accessToken
* @returns {boolean}
*/
;
_proto.addDriveAttachment = function addDriveAttachment(driveFile, accessToken) {
var attachmentSizeLimit = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["pInt"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_41__["settingsGet"]('AttachmentLimit')),
size = driveFile.fileSize ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["pInt"])(driveFile.fileSize) : 0,
attachment = this.addAttachmentHelper(driveFile.downloadUrl, driveFile.title, size);
if (0 < size && 0 < attachmentSizeLimit && attachmentSizeLimit < size) {
attachment.uploading(false).complete(true);
attachment.error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["i18n"])('UPLOAD/ERROR_FILE_IS_TOO_BIG'));
return false;
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_40__[/* default */ "a"].composeUploadDrive(function (statusResult, data) {
var result = false;
attachment.uploading(false).complete(true);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["StorageResultType"].Success === statusResult && data && data.Result) {
if (data.Result[attachment.id]) {
result = true;
attachment.tempName(data.Result[attachment.id][0]);
attachment.size(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["pInt"])(data.Result[attachment.id][1]));
}
}
if (!result) {
attachment.error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["getUploadErrorDescByCode"])(Common_Enums__WEBPACK_IMPORTED_MODULE_23__["UploadErrorCode"].FileNoUploaded));
}
}, driveFile.downloadUrl, accessToken);
return true;
}
/**
* @param {MessageModel} message
* @param {string} type
*/
;
_proto.prepearMessageAttachments = function prepearMessageAttachments(message, type) {
var _this19 = this;
if (message) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ForwardAsAttachment === type) {
this.addMessageAsAttachment(message);
} else {
var attachments = message.attachments();
___WEBPACK_IMPORTED_MODULE_18___default.a.each(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["isNonEmptyArray"])(attachments) ? attachments : [], function (item) {
var add = false;
switch (type) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Reply:
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].ReplyAll:
add = item.isLinked;
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Forward:
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].Draft:
case Common_Enums__WEBPACK_IMPORTED_MODULE_23__["ComposeType"].EditAsNew:
add = true;
break;
// no default
}
if (add) {
var attachment = new Model_ComposeAttachment__WEBPACK_IMPORTED_MODULE_43__[/* ComposeAttachmentModel */ "a"](item.download, item.fileName, item.estimatedSize, item.isInline, item.isLinked, item.cid, item.contentLocation);
attachment.fromMessage = true;
attachment.cancel = _this19.cancelAttachmentHelper(item.download);
attachment.waiting(false).uploading(true).complete(false);
_this19.attachments.push(attachment);
}
});
}
}
};
_proto.removeLinkedAttachments = function removeLinkedAttachments() {
var arrachment = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, this.attachments(), function (item) {
return item && item.isLinked;
});
if (arrachment) {
this.attachments.remove(arrachment);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["delegateRunOnDestroy"])(arrachment);
}
};
_proto.setMessageAttachmentFailedDownloadText = function setMessageAttachmentFailedDownloadText() {
___WEBPACK_IMPORTED_MODULE_18___default.a.each(this.attachments(), function (attachment) {
if (attachment && attachment.fromMessage) {
attachment.waiting(false).uploading(false).complete(true).error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_28__["getUploadErrorDescByCode"])(Common_Enums__WEBPACK_IMPORTED_MODULE_23__["UploadErrorCode"].FileNoUploaded));
}
});
}
/**
* @param {boolean=} includeAttachmentInProgress = true
* @returns {boolean}
*/
;
_proto.isEmptyForm = function isEmptyForm(includeAttachmentInProgress) {
if (includeAttachmentInProgress === void 0) {
includeAttachmentInProgress = true;
}
var withoutAttachment = includeAttachmentInProgress ? 0 === this.attachments().length : 0 === this.attachmentsInReady().length;
return 0 === this.to().length && 0 === this.cc().length && 0 === this.bcc().length && 0 === this.replyTo().length && 0 === this.subject().length && withoutAttachment && (!this.oEditor || '' === this.oEditor.getData());
};
_proto.reset = function reset() {
this.to('');
this.cc('');
this.bcc('');
this.replyTo('');
this.subject('');
this.requestDsn(false);
this.requestReadReceipt(false);
this.markAsImportant(false);
this.attachmentsPlace(false);
this.aDraftInfo = null;
this.sInReplyTo = '';
this.bFromDraft = false;
this.sReferences = '';
this.sendError(false);
this.sendSuccessButSaveError(false);
this.savedError(false);
this.savedTime(0);
this.emptyToError(false);
this.attachmentsInProcessError(false);
this.showCc(false);
this.showBcc(false);
this.showReplyTo(false);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_24__["delegateRunOnDestroy"])(this.attachments());
this.attachments([]);
this.dragAndDropOver(false);
this.dragAndDropVisible(false);
this.draftFolder('');
this.draftUid('');
this.sending(false);
this.saving(false);
if (this.oEditor) {
this.oEditor.clear(false);
}
}
/**
* @returns {Array}
*/
;
_proto.getAttachmentsDownloadsForUpload = function getAttachmentsDownloadsForUpload() {
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_18___default.a).call(___WEBPACK_IMPORTED_MODULE_18___default.a, this.attachments(), function (item) {
return item && '' === item.tempName();
}), function (item) {
return item.id;
});
};
_proto.resizerTrigger = function resizerTrigger() {
this.resizer(!this.resizer());
};
return ComposePopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_46__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "sendCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, "sendCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "saveCommand", [_dec3], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, "saveCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "deleteCommand", [_dec4], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, "deleteCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "skipCommand", [_dec5], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, "skipCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "contactsCommand", [_dec6], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, "contactsCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "dropboxCommand", [_dec7], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, "dropboxCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "driveCommand", [_dec8], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_8___default()(_class2.prototype, "driveCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 133 */
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/to-primitive.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 49);
// `ToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-toprimitive
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (input, PREFERRED_STRING) {
if (!isObject(input)) return input;
var fn, val;
if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/* 134 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 55);
var fails = __webpack_require__(/*! ../internals/fails */ 37);
var createElement = __webpack_require__(/*! ../internals/document-create-element */ 135);
// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
// eslint-disable-next-line es/no-object-defineproperty -- requied for testing
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
/***/ }),
/* 135 */
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/document-create-element.js ***!
\*******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var isObject = __webpack_require__(/*! ../internals/is-object */ 49);
var document = global.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return EXISTS ? document.createElement(it) : {};
};
/***/ }),
/* 136 */
/*!***********************************************!*\
!*** ./node_modules/core-js/internals/uid.js ***!
\***********************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var id = 0;
var postfix = Math.random();
module.exports = function (key) {
return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
};
/***/ }),
/* 137 */
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/native-symbol.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
/* eslint-disable es/no-symbol -- required for testing */
var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ 156);
var fails = __webpack_require__(/*! ../internals/fails */ 37);
// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
return !String(Symbol()) ||
// Chrome 38 Symbol has incorrect toString conversion
// Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
!Symbol.sham && V8_VERSION && V8_VERSION < 41;
});
/***/ }),
/* 138 */
/*!************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/document-create-element.js ***!
\************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
var document = global.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return EXISTS ? document.createElement(it) : {};
};
/***/ }),
/* 139 */
/*!************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-get-prototype-of.js ***!
\************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ 54);
var toObject = __webpack_require__(/*! ../internals/to-object */ 117);
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ 140);
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ 255);
var IE_PROTO = sharedKey('IE_PROTO');
var ObjectPrototype = Object.prototype;
// `Object.getPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.getprototypeof
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
} return O instanceof Object ? ObjectPrototype : null;
};
/***/ }),
/* 140 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/internals/shared-key.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(/*! ../internals/shared */ 188);
var uid = __webpack_require__(/*! ../internals/uid */ 189);
var keys = shared('keys');
module.exports = function (key) {
return keys[key] || (keys[key] = uid(key));
};
/***/ }),
/* 141 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/internals/shared-store.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var setGlobal = __webpack_require__(/*! ../internals/set-global */ 254);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});
module.exports = store;
/***/ }),
/* 142 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/internals/to-integer.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var ceil = Math.ceil;
var floor = Math.floor;
// `ToInteger` abstract operation
// https://tc39.es/ecma262/#sec-tointeger
module.exports = function (argument) {
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};
/***/ }),
/* 143 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/hidden-keys.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/* 144 */
/*!**********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/to-string-tag-support.js ***!
\**********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var test = {};
test[TO_STRING_TAG] = 'z';
module.exports = String(test) === '[object z]';
/***/ }),
/* 145 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/set-to-string-tag.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ 144);
var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ 81).f;
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
var has = __webpack_require__(/*! ../internals/has */ 54);
var toString = __webpack_require__(/*! ../internals/object-to-string */ 267);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
module.exports = function (it, TAG, STATIC, SET_METHOD) {
if (it) {
var target = STATIC ? it : it.prototype;
if (!has(target, TO_STRING_TAG)) {
defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });
}
if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {
createNonEnumerableProperty(target, 'toString', toString);
}
}
};
/***/ }),
/* 146 */
/*!********************************************************!*\
!*** ./node_modules/core-js-pure/internals/perform.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return { error: false, value: exec() };
} catch (error) {
return { error: true, value: error };
}
};
/***/ }),
/* 147 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/internal-state.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ 274);
var global = __webpack_require__(/*! ../internals/global */ 31);
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
var objectHas = __webpack_require__(/*! ../internals/has */ 54);
var shared = __webpack_require__(/*! ../internals/shared-store */ 141);
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ 140);
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ 143);
var WeakMap = global.WeakMap;
var set, get, has;
var enforce = function (it) {
return has(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (NATIVE_WEAK_MAP) {
var store = shared.state || (shared.state = new WeakMap());
var wmget = store.get;
var wmhas = store.has;
var wmset = store.set;
set = function (it, metadata) {
metadata.facade = it;
wmset.call(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget.call(store, it) || {};
};
has = function (it) {
return wmhas.call(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
metadata.facade = it;
createNonEnumerableProperty(it, STATE, metadata);
return metadata;
};
get = function (it) {
return objectHas(it, STATE) ? it[STATE] : {};
};
has = function (it) {
return objectHas(it, STATE);
};
}
module.exports = {
set: set,
get: get,
has: has,
enforce: enforce,
getterFor: getterFor
};
/***/ }),
/* 148 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/engine-v8-version.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ 106);
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8;
var match, version;
if (v8) {
match = v8.split('.');
version = match[0] + match[1];
} else if (userAgent) {
match = userAgent.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = userAgent.match(/Chrome\/(\d+)/);
if (match) version = match[1];
}
}
module.exports = version && +version;
/***/ }),
/* 149 */
/*!******************************************************************************!*\
!*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***!
\******************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
// TODO: Remove from `core-js@4` since it's moved to entry points
__webpack_require__(/*! ../modules/es.regexp.exec */ 45);
var redefine = __webpack_require__(/*! ../internals/redefine */ 69);
var fails = __webpack_require__(/*! ../internals/fails */ 37);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
var SPECIES = wellKnownSymbol('species');
var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
// #replace needs built-in support for named groups.
// #match works fine because it just return the exec results, even if it has
// a "grops" property.
var re = /./;
re.exec = function () {
var result = [];
result.groups = { a: '7' };
return result;
};
return ''.replace(re, '$<a>') !== '7';
});
// IE <= 11 replaces $0 with the whole match, as if it was $&
// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
var REPLACE_KEEPS_$0 = (function () {
// eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
return 'a'.replace(/./, '$0') === '$0';
})();
var REPLACE = wellKnownSymbol('replace');
// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
if (/./[REPLACE]) {
return /./[REPLACE]('a', '$0') === '';
}
return false;
})();
// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
// eslint-disable-next-line regexp/no-empty-group -- required for testing
var re = /(?:)/;
var originalExec = re.exec;
re.exec = function () { return originalExec.apply(this, arguments); };
var result = 'ab'.split(re);
return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
});
module.exports = function (KEY, length, exec, sham) {
var SYMBOL = wellKnownSymbol(KEY);
var DELEGATES_TO_SYMBOL = !fails(function () {
// String methods call symbol-named RegEp methods
var O = {};
O[SYMBOL] = function () { return 7; };
return ''[KEY](O) != 7;
});
var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
// Symbol-named RegExp methods call .exec
var execCalled = false;
var re = /a/;
if (KEY === 'split') {
// We can't use real regex here since it causes deoptimization
// and serious performance degradation in V8
// https://github.com/zloirock/core-js/issues/306
re = {};
// RegExp[@@split] doesn't call the regex's exec method, but first creates
// a new one. We need to return the patched regex when creating the new one.
re.constructor = {};
re.constructor[SPECIES] = function () { return re; };
re.flags = '';
re[SYMBOL] = /./[SYMBOL];
}
re.exec = function () { execCalled = true; return null; };
re[SYMBOL]('');
return !execCalled;
});
if (
!DELEGATES_TO_SYMBOL ||
!DELEGATES_TO_EXEC ||
(KEY === 'replace' && !(
REPLACE_SUPPORTS_NAMED_GROUPS &&
REPLACE_KEEPS_$0 &&
!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
)) ||
(KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
) {
var nativeRegExpMethod = /./[SYMBOL];
var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
if (regexp.exec === RegExp.prototype.exec) {
if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
// The native String method already delegates to @@method (this
// polyfilled function), leasing to infinite recursion.
// We avoid it by directly calling the native @@method method.
return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
}
return { done: true, value: nativeMethod.call(str, regexp, arg2) };
}
return { done: false };
}, {
REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,
REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
});
var stringMethod = methods[0];
var regexMethod = methods[1];
redefine(String.prototype, KEY, stringMethod);
redefine(RegExp.prototype, SYMBOL, length == 2
// 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
// 21.2.5.11 RegExp.prototype[@@split](string, limit)
? function (string, arg) { return regexMethod.call(string, this, arg); }
// 21.2.5.6 RegExp.prototype[@@match](string)
// 21.2.5.9 RegExp.prototype[@@search](string)
: function (string) { return regexMethod.call(string, this); }
);
}
if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);
};
/***/ }),
/* 150 */
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(/*! ./classof-raw */ 74);
var regexpExec = __webpack_require__(/*! ./regexp-exec */ 162);
// `RegExpExec` abstract operation
// https://tc39.es/ecma262/#sec-regexpexec
module.exports = function (R, S) {
var exec = R.exec;
if (typeof exec === 'function') {
var result = exec.call(R, S);
if (typeof result !== 'object') {
throw TypeError('RegExp exec method returned something other than an Object or null');
}
return result;
}
if (classof(R) !== 'RegExp') {
throw TypeError('RegExp#exec called on incompatible receiver');
}
return regexpExec.call(R, S);
};
/***/ }),
/* 151 */
/*!**********************************************************************!*\
!*** ./node_modules/core-js/modules/web.dom-collections.for-each.js ***!
\**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ 218);
var forEach = __webpack_require__(/*! ../internals/array-for-each */ 355);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
for (var COLLECTION_NAME in DOMIterables) {
var Collection = global[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);
} catch (error) {
CollectionPrototype.forEach = forEach;
}
}
/***/ }),
/* 152 */
/*!*************************************!*\
!*** ./dev/Knoin/AbstractScreen.js ***!
\*************************************/
/*! exports provided: AbstractScreen */
/*! exports used: AbstractScreen */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractScreen; });
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 151);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var crossroads__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! crossroads */ 176);
/* harmony import */ var crossroads__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(crossroads__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
var AbstractScreen = /*#__PURE__*/function () {
function AbstractScreen(screenName, viewModels) {
if (viewModels === void 0) {
viewModels = [];
}
this.oCross = null;
this.sScreenName = void 0;
this.aViewModels = void 0;
this.sScreenName = screenName;
this.aViewModels = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(viewModels) ? viewModels : [];
}
/**
* @returns {Array}
*/
var _proto = AbstractScreen.prototype;
_proto.viewModels = function viewModels() {
return this.aViewModels;
}
/**
* @returns {string}
*/
;
_proto.screenName = function screenName() {
return this.sScreenName;
}
/**
* @returns {?Array)}
*/
;
_proto.routes = function routes() {
return null;
}
/**
* @returns {?Object}
*/
;
_proto.__cross = function __cross() {
return this.oCross;
}
/**
* @returns {void}
*/
;
_proto.__start = function __start() {
var route = null,
fMatcher = null;
var routes = this.routes();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isNonEmptyArray"])(routes)) {
fMatcher = ___WEBPACK_IMPORTED_MODULE_1___default.a.bind(this.onRoute || Common_Utils__WEBPACK_IMPORTED_MODULE_3__["noop"], this);
route = crossroads__WEBPACK_IMPORTED_MODULE_2___default.a.create();
routes.forEach(function (item) {
if (item && route) {
route.addRoute(item[0], fMatcher).rules = item[1];
}
});
this.oCross = route;
}
};
return AbstractScreen;
}();
/***/ }),
/* 153 */
/*!*****************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/trim.js ***!
\*****************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/trim */ 327);
/***/ }),
/* 154 */
/*!*****************************!*\
!*** external "window.ssm" ***!
\*****************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.ssm;
/***/ }),
/* 155 */
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/object-keys-internal.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ 44);
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 73);
var indexOf = __webpack_require__(/*! ../internals/array-includes */ 180).indexOf;
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ 105);
module.exports = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~indexOf(result, key) || result.push(key);
}
return result;
};
/***/ }),
/* 156 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/engine-v8-version.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ 166);
var process = global.process;
var versions = process && process.versions;
var v8 = versions && versions.v8;
var match, version;
if (v8) {
match = v8.split('.');
version = match[0] < 4 ? 1 : match[0] + match[1];
} else if (userAgent) {
match = userAgent.match(/Edge\/(\d+)/);
if (!match || match[1] >= 74) {
match = userAgent.match(/Chrome\/(\d+)/);
if (match) version = match[1];
}
}
module.exports = version && +version;
/***/ }),
/* 157 */
/*!***********************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-get-own-property-descriptor.js ***!
\***********************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ 249);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 90);
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 80);
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ 158);
var has = __webpack_require__(/*! ../internals/has */ 54);
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ 186);
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// `Object.getOwnPropertyDescriptor` method
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return nativeGetOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
};
/***/ }),
/* 158 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/internals/to-primitive.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
// `ToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-toprimitive
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (input, PREFERRED_STRING) {
if (!isObject(input)) return input;
var fn, val;
if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/* 159 */
/*!************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-set-prototype-of.js ***!
\************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ 256);
// `Object.setPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.setprototypeof
// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var CORRECT_SETTER = false;
var test = {};
var setter;
try {
setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
setter.call(test, []);
CORRECT_SETTER = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
anObject(O);
aPossiblePrototype(proto);
if (CORRECT_SETTER) setter.call(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
/***/ }),
/* 160 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-create.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ 257);
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ 190);
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ 143);
var html = __webpack_require__(/*! ../internals/html */ 191);
var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ 138);
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ 140);
var GT = '>';
var LT = '<';
var PROTOTYPE = 'prototype';
var SCRIPT = 'script';
var IE_PROTO = sharedKey('IE_PROTO');
var EmptyConstructor = function () { /* empty */ };
var scriptTag = function (content) {
return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
};
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var NullProtoObjectViaActiveX = function (activeXDocument) {
activeXDocument.write(scriptTag(''));
activeXDocument.close();
var temp = activeXDocument.parentWindow.Object;
activeXDocument = null; // avoid memory leak
return temp;
};
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var NullProtoObjectViaIFrame = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var JS = 'java' + SCRIPT + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
// https://github.com/zloirock/core-js/issues/475
iframe.src = String(JS);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(scriptTag('document.F=Object'));
iframeDocument.close();
return iframeDocument.F;
};
// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var activeXDocument;
var NullProtoObject = function () {
try {
/* global ActiveXObject */
activeXDocument = document.domain && new ActiveXObject('htmlfile');
} catch (error) { /* ignore */ }
NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
var length = enumBugKeys.length;
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
return NullProtoObject();
};
hiddenKeys[IE_PROTO] = true;
// `Object.create` method
// https://tc39.es/ecma262/#sec-object.create
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
EmptyConstructor[PROTOTYPE] = anObject(O);
result = new EmptyConstructor();
EmptyConstructor[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = NullProtoObject();
return Properties === undefined ? result : defineProperties(result, Properties);
};
/***/ }),
/* 161 */
/*!***************************************************************************!*\
!*** ./node_modules/core-js-pure/modules/web.dom-collections.iterator.js ***!
\***************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ./es.array.iterator */ 201);
var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ 281);
var global = __webpack_require__(/*! ../internals/global */ 31);
var classof = __webpack_require__(/*! ../internals/classof */ 92);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 76);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
for (var COLLECTION_NAME in DOMIterables) {
var Collection = global[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {
createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
}
Iterators[COLLECTION_NAME] = Iterators.Array;
}
/***/ }),
/* 162 */
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/regexp-exec.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var regexpFlags = __webpack_require__(/*! ./regexp-flags */ 202);
var stickyHelpers = __webpack_require__(/*! ./regexp-sticky-helpers */ 223);
var shared = __webpack_require__(/*! ./shared */ 104);
var nativeExec = RegExp.prototype.exec;
var nativeReplace = shared('native-string-replace', String.prototype.replace);
var patchedExec = nativeExec;
var UPDATES_LAST_INDEX_WRONG = (function () {
var re1 = /a/;
var re2 = /b*/g;
nativeExec.call(re1, 'a');
nativeExec.call(re2, 'a');
return re1.lastIndex !== 0 || re2.lastIndex !== 0;
})();
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y || stickyHelpers.BROKEN_CARET;
// nonparticipating capturing group, copied from es5-shim's String#split patch.
// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y;
if (PATCH) {
patchedExec = function exec(str) {
var re = this;
var lastIndex, reCopy, match, i;
var sticky = UNSUPPORTED_Y && re.sticky;
var flags = regexpFlags.call(re);
var source = re.source;
var charsAdded = 0;
var strCopy = str;
if (sticky) {
flags = flags.replace('y', '');
if (flags.indexOf('g') === -1) {
flags += 'g';
}
strCopy = String(str).slice(re.lastIndex);
// Support anchored sticky behavior.
if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) {
source = '(?: ' + source + ')';
strCopy = ' ' + strCopy;
charsAdded++;
}
// ^(? + rx + ) is needed, in combination with some str slicing, to
// simulate the 'y' flag.
reCopy = new RegExp('^(?:' + source + ')', flags);
}
if (NPCG_INCLUDED) {
reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
}
if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
match = nativeExec.call(sticky ? reCopy : re, strCopy);
if (sticky) {
if (match) {
match.input = match.input.slice(charsAdded);
match[0] = match[0].slice(charsAdded);
match.index = re.lastIndex;
re.lastIndex += match[0].length;
} else re.lastIndex = 0;
} else if (UPDATES_LAST_INDEX_WRONG && match) {
re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
}
if (NPCG_INCLUDED && match && match.length > 1) {
// Fix browsers whose `exec` methods don't consistently return `undefined`
// for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
nativeReplace.call(match[0], reCopy, function () {
for (i = 1; i < arguments.length - 2; i++) {
if (arguments[i] === undefined) match[i] = undefined;
}
});
}
return match;
};
}
module.exports = patchedExec;
/***/ }),
/* 163 */
/*!*********************************!*\
!*** ./dev/Storage/RainLoop.js ***!
\*********************************/
/*! exports provided: isStorageSupported, getHash, setHash, clearHash, checkTimestamp */
/*! exports used: checkTimestamp, clearHash, getHash, isStorageSupported, setHash */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isStorageSupported; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return getHash; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return setHash; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return clearHash; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return checkTimestamp; });
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-interval */ 57);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 119);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_4__);
var STORAGE_KEY = '__rlA';
var TIME_KEY = '__rlT';
/**
* @param {string} storageName
* @returns {boolean}
*/
function isStorageSupported(storageName) {
var storageIsAvailable = false;
try {
// at: window[storageName] firefox throws SecurityError: The operation is insecure. when in iframe
storageIsAvailable = storageName in window__WEBPACK_IMPORTED_MODULE_4___default.a && window__WEBPACK_IMPORTED_MODULE_4___default.a[storageName] && window__WEBPACK_IMPORTED_MODULE_4___default.a[storageName].setItem;
} catch (e) {} // eslint-disable-line no-empty
if (storageIsAvailable) {
var s = window__WEBPACK_IMPORTED_MODULE_4___default.a[storageName],
key = 'testLocalStorage_' + window__WEBPACK_IMPORTED_MODULE_4___default.a.Math.random();
try {
s.setItem(key, key);
if (key === s.getItem(key)) {
s.removeItem(key);
return true;
}
} catch (e) {} // eslint-disable-line no-empty
}
return false;
}
var SESS_STORAGE = isStorageSupported('sessionStorage') ? window__WEBPACK_IMPORTED_MODULE_4___default.a.sessionStorage || null : null;
var WIN_STORAGE = window__WEBPACK_IMPORTED_MODULE_4___default.a.top || window__WEBPACK_IMPORTED_MODULE_4___default.a || null;
var __get = function __get(key) {
var result = null;
if (SESS_STORAGE) {
result = SESS_STORAGE.getItem(key) || null;
} else if (WIN_STORAGE && window__WEBPACK_IMPORTED_MODULE_4___default.a.JSON) {
var data = WIN_STORAGE.name && '{' === WIN_STORAGE.name.toString().substr(0, 1) ? window__WEBPACK_IMPORTED_MODULE_4___default.a.JSON.parse(WIN_STORAGE.name.toString()) : null;
result = data ? data[key] || null : null;
}
return result;
};
var __set = function __set(key, value) {
if (SESS_STORAGE) {
SESS_STORAGE.setItem(key, value);
} else if (WIN_STORAGE && window__WEBPACK_IMPORTED_MODULE_4___default.a.JSON) {
var data = WIN_STORAGE.name && '{' === WIN_STORAGE.name.toString().substr(0, 1) ? window__WEBPACK_IMPORTED_MODULE_4___default.a.JSON.parse(WIN_STORAGE.name.toString()) : null;
data = data || {};
data[key] = value;
WIN_STORAGE.name = window__WEBPACK_IMPORTED_MODULE_4___default.a.JSON.stringify(data);
}
};
var timestamp = function timestamp() {
return window__WEBPACK_IMPORTED_MODULE_4___default.a.Math.round(new window__WEBPACK_IMPORTED_MODULE_4___default.a.Date().getTime() / 1000);
};
var setTimestamp = function setTimestamp() {
return __set(TIME_KEY, timestamp());
};
var getTimestamp = function getTimestamp() {
var time = __get(TIME_KEY, 0);
return time ? window__WEBPACK_IMPORTED_MODULE_4___default.a.parseInt(time, 10) || 0 : 0;
};
/**
* @returns {string}
*/
function getHash() {
return __get(STORAGE_KEY);
}
/**
* @returns {void}
*/
function setHash() {
var key = 'AuthAccountHash',
appData = window__WEBPACK_IMPORTED_MODULE_4___default.a.__rlah_data();
__set(STORAGE_KEY, appData && appData[key] ? appData[key] : '');
setTimestamp();
}
/**
* @returns {void}
*/
function clearHash() {
__set(STORAGE_KEY, '');
setTimestamp();
}
/**
* @returns {boolean}
*/
function checkTimestamp() {
if (timestamp() > getTimestamp() + 1000 * 60 * 60) {
// 60m
clearHash();
return true;
}
return false;
} // init section
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_0___default()(setTimestamp, 1000 * 60); // 1m
/***/ }),
/* 164 */,
/* 165 */
/*!************************************************!*\
!*** ./node_modules/core-js/internals/path.js ***!
\************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
module.exports = global;
/***/ }),
/* 166 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/engine-user-agent.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 78);
module.exports = getBuiltIn('navigator', 'userAgent') || '';
/***/ }),
/* 167 */
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/object-create.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ 241);
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ 112);
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ 105);
var html = __webpack_require__(/*! ../internals/html */ 235);
var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ 135);
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ 111);
var GT = '>';
var LT = '<';
var PROTOTYPE = 'prototype';
var SCRIPT = 'script';
var IE_PROTO = sharedKey('IE_PROTO');
var EmptyConstructor = function () { /* empty */ };
var scriptTag = function (content) {
return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
};
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var NullProtoObjectViaActiveX = function (activeXDocument) {
activeXDocument.write(scriptTag(''));
activeXDocument.close();
var temp = activeXDocument.parentWindow.Object;
activeXDocument = null; // avoid memory leak
return temp;
};
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var NullProtoObjectViaIFrame = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var JS = 'java' + SCRIPT + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
// https://github.com/zloirock/core-js/issues/475
iframe.src = String(JS);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(scriptTag('document.F=Object'));
iframeDocument.close();
return iframeDocument.F;
};
// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var activeXDocument;
var NullProtoObject = function () {
try {
/* global ActiveXObject -- old IE */
activeXDocument = document.domain && new ActiveXObject('htmlfile');
} catch (error) { /* ignore */ }
NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
var length = enumBugKeys.length;
while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
return NullProtoObject();
};
hiddenKeys[IE_PROTO] = true;
// `Object.create` method
// https://tc39.es/ecma262/#sec-object.create
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
EmptyConstructor[PROTOTYPE] = anObject(O);
result = new EmptyConstructor();
EmptyConstructor[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = NullProtoObject();
return Properties === undefined ? result : defineProperties(result, Properties);
};
/***/ }),
/* 168 */
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!
\*******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ 44);
var toObject = __webpack_require__(/*! ../internals/to-object */ 89);
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ 111);
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ 243);
var IE_PROTO = sharedKey('IE_PROTO');
var ObjectPrototype = Object.prototype;
// `Object.getPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.getprototypeof
// eslint-disable-next-line es/no-object-getprototypeof -- safe
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
} return O instanceof Object ? ObjectPrototype : null;
};
/***/ }),
/* 169 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/set-to-string-tag.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ 66).f;
var has = __webpack_require__(/*! ../internals/has */ 44);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
module.exports = function (it, TAG, STATIC) {
if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
}
};
/***/ }),
/* 170 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/indexed-object.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var classof = __webpack_require__(/*! ../internals/classof-raw */ 114);
var split = ''.split;
// fallback for non-array-like ES3 and non-enumerable old V8 strings
module.exports = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classof(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;
/***/ }),
/* 171 */
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/advance-string-index.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var charAt = __webpack_require__(/*! ../internals/string-multibyte */ 217).charAt;
// `AdvanceStringIndex` abstract operation
// https://tc39.es/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
return index + (unicode ? charAt(S, index).length : 1);
};
/***/ }),
/* 172 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-iteration.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var bind = __webpack_require__(/*! ../internals/function-bind-context */ 116);
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ 170);
var toObject = __webpack_require__(/*! ../internals/to-object */ 117);
var toLength = __webpack_require__(/*! ../internals/to-length */ 91);
var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ 286);
var push = [].push;
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation
var createMethod = function (TYPE) {
var IS_MAP = TYPE == 1;
var IS_FILTER = TYPE == 2;
var IS_SOME = TYPE == 3;
var IS_EVERY = TYPE == 4;
var IS_FIND_INDEX = TYPE == 6;
var IS_FILTER_OUT = TYPE == 7;
var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
return function ($this, callbackfn, that, specificCreate) {
var O = toObject($this);
var self = IndexedObject(O);
var boundFunction = bind(callbackfn, that, 3);
var length = toLength(self.length);
var index = 0;
var create = specificCreate || arraySpeciesCreate;
var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;
var value, result;
for (;length > index; index++) if (NO_HOLES || index in self) {
value = self[index];
result = boundFunction(value, index, O);
if (TYPE) {
if (IS_MAP) target[index] = result; // map
else if (result) switch (TYPE) {
case 3: return true; // some
case 5: return value; // find
case 6: return index; // findIndex
case 2: push.call(target, value); // filter
} else switch (TYPE) {
case 4: return false; // every
case 7: push.call(target, value); // filterOut
}
}
}
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
};
};
module.exports = {
// `Array.prototype.forEach` method
// https://tc39.es/ecma262/#sec-array.prototype.foreach
forEach: createMethod(0),
// `Array.prototype.map` method
// https://tc39.es/ecma262/#sec-array.prototype.map
map: createMethod(1),
// `Array.prototype.filter` method
// https://tc39.es/ecma262/#sec-array.prototype.filter
filter: createMethod(2),
// `Array.prototype.some` method
// https://tc39.es/ecma262/#sec-array.prototype.some
some: createMethod(3),
// `Array.prototype.every` method
// https://tc39.es/ecma262/#sec-array.prototype.every
every: createMethod(4),
// `Array.prototype.find` method
// https://tc39.es/ecma262/#sec-array.prototype.find
find: createMethod(5),
// `Array.prototype.findIndex` method
// https://tc39.es/ecma262/#sec-array.prototype.findIndex
findIndex: createMethod(6),
// `Array.prototype.filterOut` method
// https://github.com/tc39/proposal-array-filtering
filterOut: createMethod(7)
};
/***/ }),
/* 173 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/internals/is-array.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(/*! ../internals/classof-raw */ 114);
// `IsArray` abstract operation
// https://tc39.es/ecma262/#sec-isarray
module.exports = Array.isArray || function isArray(arg) {
return classof(arg) == 'Array';
};
/***/ }),
/* 174 */
/*!*********************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-method-has-species-support.js ***!
\*********************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ 148);
var SPECIES = wellKnownSymbol('species');
module.exports = function (METHOD_NAME) {
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/677
return V8_VERSION >= 51 || !fails(function () {
var array = [];
var constructor = array.constructor = {};
constructor[SPECIES] = function () {
return { foo: 1 };
};
return array[METHOD_NAME](Boolean).foo !== 1;
});
};
/***/ }),
/* 175 */
/*!*******************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/concat.js ***!
\*******************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/concat */ 337);
/***/ }),
/* 176 */
/*!************************************!*\
!*** external "window.crossroads" ***!
\************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.crossroads;
/***/ }),
/* 177 */
/*!*******************************************!*\
!*** ./dev/Component/AbstractCheckbox.js ***!
\*******************************************/
/*! exports provided: AbstractCheckbox, default */
/*! exports used: AbstractCheckbox */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractCheckbox; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Component/Abstract */ 32);
var AbstractCheckbox = /*#__PURE__*/function (_AbstractComponent) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AbstractCheckbox, _AbstractComponent);
/**
* @param {Object} params = {}
*/
function AbstractCheckbox(params) {
var _this;
if (params === void 0) {
params = {};
}
_this = _AbstractComponent.call(this) || this;
_this.value = params.value;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(_this.value) || !_this.value.subscribe) {
_this.value = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(_this.value) ? false : !!_this.value);
}
_this.enable = params.enable;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(_this.enable) || !_this.enable.subscribe) {
_this.enable = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(_this.enable) ? true : !!_this.enable);
}
_this.disable = params.disable;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(_this.disable) || !_this.disable.subscribe) {
_this.disable = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(_this.disable) ? false : !!_this.disable);
}
_this.label = params.label || '';
_this.inline = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(params.inline) ? false : params.inline;
_this.readOnly = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(params.readOnly) ? false : !!params.readOnly;
_this.inverted = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(params.inverted) ? false : !!params.inverted;
_this.labeled = !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(params.label);
_this.labelAnimated = !!params.labelAnimated;
return _this;
}
var _proto = AbstractCheckbox.prototype;
_proto.click = function click() {
if (!this.readOnly && this.enable() && !this.disable()) {
this.value(!this.value());
}
};
return AbstractCheckbox;
}(Component_Abstract__WEBPACK_IMPORTED_MODULE_3__[/* AbstractComponent */ "a"]);
/***/ }),
/* 178 */
/*!******************************************************************!*\
!*** ./node_modules/emailjs-addressparser/dist/addressparser.js ***!
\******************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
exports.default = parse;
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
/**
* Parses structured e-mail addresses from an address field
*
* Example:
*
* "Name <address@domain>"
*
* will be converted to
*
* [{name: "Name", address: "address@domain"}]
*
* @param {String} str Address field
* @return {Array} An array of address objects
*/
function parse(str) {
var tokenizer = new Tokenizer(str);
var tokens = tokenizer.tokenize();
var addresses = [];
var address = [];
var parsedAddresses = [];
tokens.forEach(function (token) {
if (token.type === 'operator' && (token.value === ',' || token.value === ';')) {
if (address.length) {
addresses.push(address);
}
address = [];
} else {
address.push(token);
}
});
if (address.length) {
addresses.push(address);
}
addresses.forEach(function (address) {
address = _handleAddress(address);
if (address.length) {
parsedAddresses = parsedAddresses.concat(address);
}
});
return parsedAddresses;
};
/**
* Converts tokens for a single address into an address object
*
* @param {Array} tokens Tokens object
* @return {Object} Address object
*/
function _handleAddress(tokens) {
var isGroup = false;
var state = 'text';
var address = void 0;
var addresses = [];
var data = {
address: [],
comment: [],
group: [],
text: []
// Filter out <addresses>, (comments) and regular text
};for (var i = 0, len = tokens.length; i < len; i++) {
var token = tokens[i];
if (token.type === 'operator') {
switch (token.value) {
case '<':
state = 'address';
break;
case '(':
state = 'comment';
break;
case ':':
state = 'group';
isGroup = true;
break;
default:
state = 'text';
}
} else {
if (token.value) {
data[state].push(token.value);
}
}
}
// If there is no text but a comment, replace the two
if (!data.text.length && data.comment.length) {
data.text = data.comment;
data.comment = [];
}
if (isGroup) {
// http://tools.ietf.org/html/rfc2822#appendix-A.1.3
data.text = data.text.join(' ');
addresses.push({
name: data.text || address && address.name,
group: data.group.length ? parse(data.group.join(',')) : []
});
} else {
// If no address was found, try to detect one from regular text
if (!data.address.length && data.text.length) {
for (var _i = data.text.length - 1; _i >= 0; _i--) {
if (data.text[_i].match(/^[^@\s]+@[^@\s]+$/)) {
data.address = data.text.splice(_i, 1);
break;
}
}
var _regexHandler = function _regexHandler(address) {
if (!data.address.length) {
data.address = [address.trim()];
return ' ';
} else {
return address;
}
};
// still no address
if (!data.address.length) {
for (var _i2 = data.text.length - 1; _i2 >= 0; _i2--) {
data.text[_i2] = data.text[_i2].replace(/\s*\b[^@\s]+@[^@\s]+\b\s*/, _regexHandler).trim();
if (data.address.length) {
break;
}
}
}
}
// If there's still is no text but a comment exixts, replace the two
if (!data.text.length && data.comment.length) {
data.text = data.comment;
data.comment = [];
}
// Keep only the first address occurence, push others to regular text
if (data.address.length > 1) {
data.text = data.text.concat(data.address.splice(1));
}
// Join values with spaces
data.text = data.text.join(' ');
data.address = data.address.join(' ');
if (!data.address && isGroup) {
return [];
} else {
address = {
address: data.address || data.text || '',
name: data.text || data.address || ''
};
if (address.address === address.name) {
if ((address.address || '').match(/@/)) {
address.name = '';
} else {
address.address = '';
}
}
addresses.push(address);
}
}
return addresses;
};
/*
* Operator tokens and which tokens are expected to end the sequence
*/
var OPERATORS = {
'"': '"',
'(': ')',
'<': '>',
',': '',
// Groups are ended by semicolons
':': ';',
// Semicolons are not a legal delimiter per the RFC2822 grammar other
// than for terminating a group, but they are also not valid for any
// other use in this context. Given that some mail clients have
// historically allowed the semicolon as a delimiter equivalent to the
// comma in their UI, it makes sense to treat them the same as a comma
// when used outside of a group.
';': ''
/**
* Creates a Tokenizer object for tokenizing address field strings
*
* @constructor
* @param {String} str Address field string
*/
};
var Tokenizer = function () {
function Tokenizer(str) {
_classCallCheck(this, Tokenizer);
this.str = (str || '').toString();
this.operatorCurrent = '';
this.operatorExpecting = '';
this.node = null;
this.escaped = false;
this.list = [];
}
/**
* Tokenizes the original input string
*
* @return {Array} An array of operator|text tokens
*/
_createClass(Tokenizer, [{
key: 'tokenize',
value: function tokenize() {
var chr = void 0;
var list = [];
for (var i = 0, len = this.str.length; i < len; i++) {
chr = this.str.charAt(i);
this.checkChar(chr);
}
this.list.forEach(function (node) {
node.value = (node.value || '').toString().trim();
if (node.value) {
list.push(node);
}
});
return list;
}
/**
* Checks if a character is an operator or text and acts accordingly
*
* @param {String} chr Character from the address field
*/
}, {
key: 'checkChar',
value: function checkChar(chr) {
if ((chr in OPERATORS || chr === '\\') && this.escaped) {
this.escaped = false;
} else if (this.operatorExpecting && chr === this.operatorExpecting) {
this.node = {
type: 'operator',
value: chr
};
this.list.push(this.node);
this.node = null;
this.operatorExpecting = '';
this.escaped = false;
return;
} else if (!this.operatorExpecting && chr in OPERATORS) {
this.node = {
type: 'operator',
value: chr
};
this.list.push(this.node);
this.node = null;
this.operatorExpecting = OPERATORS[chr];
this.escaped = false;
return;
}
if (!this.escaped && chr === '\\') {
this.escaped = true;
return;
}
if (!this.node) {
this.node = {
type: 'text',
value: ''
};
this.list.push(this.node);
}
if (this.escaped && chr !== '\\') {
this.node.value += '\\';
}
this.node.value += chr;
this.escaped = false;
}
}]);
return Tokenizer;
}();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9hZGRyZXNzcGFyc2VyLmpzIl0sIm5hbWVzIjpbInBhcnNlIiwic3RyIiwidG9rZW5pemVyIiwiVG9rZW5pemVyIiwidG9rZW5zIiwidG9rZW5pemUiLCJhZGRyZXNzZXMiLCJhZGRyZXNzIiwicGFyc2VkQWRkcmVzc2VzIiwiZm9yRWFjaCIsInRva2VuIiwidHlwZSIsInZhbHVlIiwibGVuZ3RoIiwicHVzaCIsIl9oYW5kbGVBZGRyZXNzIiwiY29uY2F0IiwiaXNHcm91cCIsInN0YXRlIiwiZGF0YSIsImNvbW1lbnQiLCJncm91cCIsInRleHQiLCJpIiwibGVuIiwiam9pbiIsIm5hbWUiLCJtYXRjaCIsInNwbGljZSIsIl9yZWdleEhhbmRsZXIiLCJ0cmltIiwicmVwbGFjZSIsIk9QRVJBVE9SUyIsInRvU3RyaW5nIiwib3BlcmF0b3JDdXJyZW50Iiwib3BlcmF0b3JFeHBlY3RpbmciLCJub2RlIiwiZXNjYXBlZCIsImxpc3QiLCJjaHIiLCJjaGFyQXQiLCJjaGVja0NoYXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O2tCQWN3QkEsSzs7OztBQWR4Qjs7Ozs7Ozs7Ozs7Ozs7QUFjZSxTQUFTQSxLQUFULENBQWdCQyxHQUFoQixFQUFxQjtBQUNsQyxNQUFNQyxZQUFZLElBQUlDLFNBQUosQ0FBY0YsR0FBZCxDQUFsQjtBQUNBLE1BQU1HLFNBQVNGLFVBQVVHLFFBQVYsRUFBZjs7QUFFQSxNQUFNQyxZQUFZLEVBQWxCO0FBQ0EsTUFBSUMsVUFBVSxFQUFkO0FBQ0EsTUFBSUMsa0JBQWtCLEVBQXRCOztBQUVBSixTQUFPSyxPQUFQLENBQWUsVUFBVUMsS0FBVixFQUFpQjtBQUM5QixRQUFJQSxNQUFNQyxJQUFOLEtBQWUsVUFBZixLQUE4QkQsTUFBTUUsS0FBTixLQUFnQixHQUFoQixJQUF1QkYsTUFBTUUsS0FBTixLQUFnQixHQUFyRSxDQUFKLEVBQStFO0FBQzdFLFVBQUlMLFFBQVFNLE1BQVosRUFBb0I7QUFDbEJQLGtCQUFVUSxJQUFWLENBQWVQ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QUFJLENBQUMsS0FBS0YsaUJBQU4sSUFBMkJJLE9BQU9QLFNBQXRDLEVBQWlEO0FBQ3RELGFBQUtJLElBQUwsR0FBWTtBQUNWekIsZ0JBQU0sVUFESTtBQUVWQyxpQkFBTzJCO0FBRkcsU0FBWjtBQUlBLGFBQUtELElBQUwsQ0FBVXhCLElBQVYsQ0FBZSxLQUFLc0IsSUFBcEI7QUFDQSxhQUFLQSxJQUFMLEdBQVksSUFBWjtBQUNBLGFBQUtELGlCQUFMLEdBQXlCSCxVQUFVTyxHQUFWLENBQXpCO0FBQ0EsYUFBS0YsT0FBTCxHQUFlLEtBQWY7QUFDQTtBQUNEOztBQUVELFVBQUksQ0FBQyxLQUFLQSxPQUFOLElBQWlCRSxRQUFRLElBQTdCLEVBQW1DO0FBQ2pDLGFBQUtGLE9BQUwsR0FBZSxJQUFmO0FBQ0E7QUFDRDs7QUFFRCxVQUFJLENBQUMsS0FBS0QsSUFBVixFQUFnQjtBQUNkLGFBQUtBLElBQUwsR0FBWTtBQUNWekIsZ0JBQU0sTUFESTtBQUVWQyxpQkFBTztBQUZHLFNBQVo7QUFJQSxhQUFLMEIsSUFBTCxDQUFVeEIsSUFBVixDQUFlLEtBQUtzQixJQUFwQjtBQUNEOztBQUVELFVBQUksS0FBS0MsT0FBTCxJQUFnQkUsUUFBUSxJQUE1QixFQUFrQztBQUNoQyxhQUFLSCxJQUFMLENBQVV4QixLQUFWLElBQW1CLElBQW5CO0FBQ0Q7O0FBRUQsV0FBS3dCLElBQUwsQ0FBVXhCLEtBQVYsSUFBbUIyQixHQUFuQjtBQUNBLFdBQUtGLE9BQUwsR0FBZSxLQUFmO0FBQ0QiLCJmaWxlIjoiYWRkcmVzc3BhcnNlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyc2VzIHN0cnVjdHVyZWQgZS1tYWlsIGFkZHJlc3NlcyBmcm9tIGFuIGFkZHJlc3MgZmllbGRcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqICAgIFwiTmFtZSA8YWRkcmVzc0Bkb21haW4+XCJcbiAqXG4gKiB3aWxsIGJlIGNvbnZlcnRlZCB0b1xuICpcbiAqICAgICBbe25hbWU6IFwiTmFtZVwiLCBhZGRyZXNzOiBcImFkZHJlc3NAZG9tYWluXCJ9XVxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgQWRkcmVzcyBmaWVsZFxuICogQHJldHVybiB7QXJyYXl9IEFuIGFycmF5IG9mIGFkZHJlc3Mgb2JqZWN0c1xuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZSAoc3RyKSB7XG4gIGNvbnN0IHRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIoc3RyKVxuICBjb25zdCB0b2tlbnMgPSB0b2tlbml6ZXIudG9rZW5pemUoKVxuXG4gIGNvbnN0IGFkZHJlc3NlcyA9IFtdXG4gIGxldCBhZGRyZXNzID0gW11cbiAgbGV0IHBhcnNlZEFkZHJlc3NlcyA9IFtdXG5cbiAgdG9rZW5zLmZvckVhY2goZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdvcGVyYXRvcicgJiYgKHRva2VuLnZhbHVlID09PSAnLCcgfHwgdG9rZW4udmFsdWUgPT09ICc7JykpIHtcbiAgICAgIGlmIChhZGRyZXNzLmxlbmd0aCkge1xuICAgICAgICBhZGRyZXNzZXMucHVzaChhZGRyZXNzKVxuICAgICAgfVxuICAgICAgYWRkcmVzcyA9IFtdXG4gICAgfSBlbHNlIHtcbiAgICAgIGFkZHJlc3MucHVzaCh0b2tlbilcbiAgICB9XG4gIH0pXG5cbiAgaWYgKGFkZHJlc3MubGVuZ3RoKSB7XG4gICAgYWRkcmVzc2VzLnB1c2goYWRkcmVzcylcbiAgfVxuXG4gIGFkZHJlc3Nlcy5mb3JFYWNoKGZ1bmN0aW9uIChhZGRyZXNzKSB7XG4gICAgYWRkcmVzcyA9IF9oYW5kbGVBZGRyZXNzKGFkZHJlc3MpXG4gICAgaWYgKGFkZHJlc3MubGVuZ3RoKSB7XG4gICAgICBwYXJzZWRBZGRyZXNzZXMgPSBwYXJzZWRBZGRyZXNzZXMuY29uY2F0KGFkZHJlc3MpXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBwYXJzZWRBZGRyZXNzZXNcbn07XG5cbi8qKlxuICogQ29udmVydHMgdG9rZW5zIGZvciBhIHNpbmdsZSBhZGRyZXNzIGludG8gYW4gYWRkcmVzcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge0FycmF5fSB0b2tlbnMgVG9rZW5zIG9iamVjdFxuICogQHJldHVybiB7T2JqZWN0fSBBZGRyZXNzIG9iamVjdFxuICovXG5mdW5jdGlvbiBfaGFuZGxlQWRkcmVzcyAodG9rZW5zKSB7XG4gIGxldCBpc0dyb3VwID0gZmFsc2VcbiAgbGV0IHN0YXRlID0gJ3RleHQnXG4gIGxldCBhZGRyZXNzXG4gIGNvbnN0IGFkZHJlc3NlcyA9IFtdXG4gIGNvbnN0IGRhdGEgPSB7XG4gICAgYWRkcmVzczogW10sXG4gICAgY29tbWVudDogW10sXG4gICAgZ3JvdXA6IFtdLFxuICAgIHRleHQ6IFtdXG4gIH1cblxuICAvLyBGaWx0ZXIgb3V0IDxhZGRyZXNzZXM+LCAoY29tbWVudHMpIGFuZCByZWd1bGFyIHRleHRcbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2ldXG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ29wZXJhdG9yJykge1xuICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICBzdGF0ZSA9ICdhZGRyZXNzJ1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJygnOlxuICAgICAgICAgIHN0YXRlID0gJ2NvbW1lbnQnXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnOic6XG4gICAgICAgICAgc3RhdGUgPSAnZ3JvdXAnXG4gICAgICAgICAgaXNHcm91cCA9IHRydWVcbiAgICAgICAgICBicmVha1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHN0YXRlID0gJ3RleHQnXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0b2tlbi52YWx1ZSkge1xuICAgICAgICBkYXRhW3N0YXRlXS5wdXNoKHRva2VuLnZhbHVlKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZXJlIGlzIG5vIHRleHQgYnV0IGEgY29tbWVudCwgcmVwbGFjZSB0aGUgdHdvXG4gIGlmICghZGF0YS50ZXh0Lmxlbmd0aCAmJiBkYXRhLmNvbW1lbnQubGVuZ3RoKSB7XG4gICAgZGF0YS50ZXh0ID0gZGF0YS5jb21tZW50XG4gICAgZGF0YS5jb21tZW50ID0gW11cbiAgfVxuXG4gIGlmIChpc0dyb3VwKSB7XG4gICAgLy8gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjgyMiNhcHBlbmRpeC1BLjEuM1xuICAgIGRhdGEudGV4dCA9IGRhdGEudGV4dC5qb2luKCcgJylcbiAgICBhZGRyZXNzZXMucHVzaCh7XG4gICAgICBuYW1lOiBkYXRhLnRleHQgfHwgKGFkZHJlc3MgJiYgYWRkcmVzcy5uYW1lKSxcbiAgICAgIGdyb3VwOiBkYXRhLmdyb3VwLmxlbmd0aCA/IHBhcnNlKGRhdGEuZ3JvdXAuam9pbignLCcpKSA6IFtdXG4gICAgfSlcbiAgfSBlbHNlIHtcbiAgICAvLyBJZiBubyBhZGRyZXNzIHdhcyBmb3VuZCwgdHJ5IHRvIGRldGVjdCBvbmUgZnJvbSByZWd1bGFyIHRleHRcbiAgICBpZiAoIWRhdGEuYWRkcmVzcy5sZW5ndGggJiYgZGF0YS50ZXh0Lmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IGRhdGEudGV4dC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAoZGF0YS50ZXh0W2ldLm1hdGNoKC9eW15AXFxzXStAW15AXFxzXSskLykpIHtcbiAgICAgICAgICBkYXRhLmFkZHJlc3MgPSBkYXRhLnRleHQuc3BsaWNlKGksIDEpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgX3JlZ2V4SGFuZGxlciA9IGZ1bmN0aW9uIChhZGRyZXNzKSB7XG4gICAgICAgIGlmICghZGF0YS5hZGRyZXNzLmxlbmd0aCkge1xuICAgICAgICAgIGRhdGEuYWRkcmVzcyA9IFthZGRyZXNzLnRyaW0oKV1cbiAgICAgICAgICByZXR1cm4gJyAnXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGFkZHJlc3NcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBzdGlsbCBubyBhZGRyZXNzXG4gICAgICBpZiAoIWRhdGEuYWRkcmVzcy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGRhdGEudGV4dC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICAgIGRhdGEudGV4dFtpXSA9IGRhdGEudGV4dFtpXS5yZXBsYWNlKC9cXHMqXFxiW15AXFxzXStAW15AXFxzXStcXGJcXHMqLywgX3JlZ2V4SGFuZGxlcikudHJpbSgpXG4gICAgICAgICAgaWYgKGRhdGEuYWRkcmVzcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlcmUncyBzdGlsbCBpcyBubyB0ZXh0IGJ1dCBhIGNvbW1lbnQgZXhpeHRzLCByZXBsYWNlIHRoZSB0d29cbiAgICBpZiAoIWRhdGEudGV4dC5sZW5ndGggJiYgZGF0YS5jb21tZW50Lmxlbmd0aCkge1xuICAgICAgZGF0YS50ZXh0ID0gZGF0YS5jb21tZW50XG4gICAgICBkYXRhLmNvbW1lbnQgPSBbXVxuICAgIH1cblxuICAgIC8vIEtlZXAgb25seSB0aGUgZmlyc3QgYWRkcmVzcyBvY2N1cmVuY2UsIHB1c2ggb3RoZXJzIHRvIHJlZ3VsYXIgdGV4dFxuICAgIGlmIChkYXRhLmFkZHJlc3MubGVuZ3RoID4gMSkge1xuICAgICAgZGF0YS50ZXh0ID0gZGF0YS50ZXh0LmNvbmNhdChkYXRhLmFkZHJlc3Muc3BsaWNlKDEpKVxuICAgIH1cblxuICAgIC8vIEpvaW4gdmFsdWVzIHdpdGggc3BhY2VzXG4gICAgZGF0YS50ZXh0ID0gZGF0YS50ZXh0LmpvaW4oJyAnKVxuICAgIGRhdGEuYWRkcmVzcyA9IGRhdGEuYWRkcmVzcy5qb2luKCcgJylcblxuICAgIGlmICghZGF0YS5hZGRyZXNzICYmIGlzR3JvdXApIHtcbiAgICAgIHJldHVybiBbXVxuICAgIH0gZWxzZSB7XG4gICAgICBhZGRyZXNzID0ge1xuICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MgfHwgZGF0YS50ZXh0IHx8ICcnLFxuICAgICAgICBuYW1lOiBkYXRhLnRleHQgfHwgZGF0YS5hZGRyZXNzIHx8ICcnXG4gICAgICB9XG5cbiAgICAgIGlmIChhZGRyZXNzLmFkZHJlc3MgPT09IGFkZHJlc3MubmFtZSkge1xuICAgICAgICBpZiAoKGFkZHJlc3MuYWRkcmVzcyB8fCAnJykubWF0Y2goL0AvKSkge1xuICAgICAgICAgIGFkZHJlc3MubmFtZSA9ICcnXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWRkcmVzcy5hZGRyZXNzID0gJydcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRyZXNzZXMucHVzaChhZGRyZXNzKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZGRyZXNzZXNcbn07XG5cbi8qXG4gKiBPcGVyYXRvciB0b2tlbnMgYW5kIHdoaWNoIHRva2VucyBhcmUgZXhwZWN0ZWQgdG8gZW5kIHRoZSBzZXF1ZW5jZVxuICovXG5jb25zdCBPUEVSQVRPUlMgPSB7XG4gICdcIic6ICdcIicsXG4gICcoJzogJyknLFxuICAnPCc6ICc+JyxcbiAgJywnOiAnJyxcbiAgLy8gR3JvdXBzIGFyZSBlbmRlZCBieSBzZW1pY29sb25zXG4gICc6JzogJzsnLFxuICAvLyBTZW1pY29sb25zIGFyZSBub3QgYSBsZWdhbCBkZWxpbWl0ZXIgcGVyIHRoZSBSRkMyODIyIGdyYW1tYXIgb3RoZXJcbiAgLy8gdGhhbiBmb3IgdGVybWluYXRpbmcgYSBncm91cCwgYnV0IHRoZXkgYXJlIGFsc28gbm90IHZhbGlkIGZvciBhbnlcbiAgLy8gb3RoZXIgdXNlIGluIHRoaXMgY29udGV4dC4gIEdpdmVuIHRoYXQgc29tZSBtYWlsIGNsaWVudHMgaGF2ZVxuICAvLyBoaXN0b3JpY2FsbHkgYWxsb3dlZCB0aGUgc2VtaWNvbG9uIGFzIGEgZGVsaW1pdGVyIGVxdWl2YWxlbnQgdG8gdGhlXG4gIC8vIGNvbW1hIGluIHRoZWlyIFVJLCBpdCBtYWtlcyBzZW5zZSB0byB0cmVhdCB0aGVtIHRoZSBzYW1lIGFzIGEgY29tbWFcbiAgLy8gd2hlbiB1c2VkIG91dHNpZGUgb2YgYSBncm91cC5cbiAgJzsnOiAnJ1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBUb2tlbml6ZXIgb2JqZWN0IGZvciB0b2tlbml6aW5nIGFkZHJlc3MgZmllbGQgc3RyaW5nc1xuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBBZGRyZXNzIGZpZWxkIHN0cmluZ1xuICovXG5jbGFzcyBUb2tlbml6ZXIge1xuICBjb25zdHJ1Y3RvciAoc3RyKSB7XG4gICAgdGhpcy5zdHIgPSAoc3RyIHx8ICcnKS50b1N0cmluZygpXG4gICAgdGhpcy5vcGVyYXRvckN1cnJlbnQgPSAnJ1xuICAgIHRoaXMub3BlcmF0b3JFeHBlY3RpbmcgPSAnJ1xuICAgIHRoaXMubm9kZSA9IG51bGxcbiAgICB0aGlzLmVzY2FwZWQgPSBmYWxzZVxuICAgIHRoaXMubGlzdCA9IFtdXG4gIH1cblxuICAvKipcbiAgICogVG9rZW5pemVzIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJpbmdcbiAgICpcbiAgICogQHJldHVybiB7QXJyYXl9IEFuIGFycmF5IG9mIG9wZXJhdG9yfHRleHQgdG9rZW5zXG4gICAqL1xuICB0b2tlbml6ZSAoKSB7XG4gICAgbGV0IGNoclxuICAgIGxldCBsaXN0ID0gW11cbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5zdHIubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGNociA9IHRoaXMuc3RyLmNoYXJBdChpKVxuICAgICAgdGhpcy5jaGVja0NoYXIoY2hyKVxuICAgIH1cblxuICAgIHRoaXMubGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICBub2RlLnZhbHVlID0gKG5vZGUudmFsdWUgfHwgJycpLnRvU3RyaW5nKCkudHJpbSgpXG4gICAgICBpZiAobm9kZS52YWx1ZSkge1xuICAgICAgICBsaXN0LnB1c2gobm9kZSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgcmV0dXJuIGxpc3RcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBjaGFyYWN0ZXIgaXMgYW4gb3BlcmF0b3Igb3IgdGV4dCBhbmQgYWN0cyBhY2NvcmRpbmdseVxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gY2hyIENoYXJhY3RlciBmcm9tIHRoZSBhZGRyZXNzIGZpZWxkXG4gICAqL1xuICBjaGVja0NoYXIgKGNocikge1xuICAgIGlmICgoY2hyIGluIE9QRVJBVE9SUyB8fCBjaHIgPT09ICdcXFxcJykgJiYgdGhpcy5lc2NhcGVkKSB7XG4gICAgICB0aGlzLmVzY2FwZWQgPSBmYWxzZVxuICAgIH0gZWxzZSBpZiAodGhpcy5vcGVyYXRvckV4cGVjdGluZyAmJiBjaHIgPT09IHRoaXMub3BlcmF0b3JFeHBlY3RpbmcpIHtcbiAgICAgIHRoaXMubm9kZSA9IHtcbiAgICAgICAgdHlwZTogJ29wZXJhdG9yJyxcbiAgICAgICAgdmFsdWU6IGNoclxuICAgICAgfVxuICAgICAgdGhpcy5saXN0LnB1c2godGhpcy5ub2RlKVxuICAgICAgdGhpcy5ub2RlID0gbnVsbFxuICAgICAgdGhpcy5vcGVyYXRvckV4cGVjdGluZyA9ICcnXG4gICAgICB0aGlzLmVzY2FwZWQgPSBmYWxzZVxuICAgICAgcmV0dXJuXG4gICAgfSBlbHNlIGlmICghdGhpcy5vcGVyYXRvckV4cGVjdGluZyAmJiBjaHIgaW4gT1BFUkFUT1JTKSB7XG4gICAgICB0aGlzLm5vZGUgPSB7XG4gICAgICAgIHR5cGU6ICdvcGVyYXRvcicsXG4gICAgICAgIHZhbHVlOiBjaHJcbiAgICAgIH1cbiAgICAgIHRoaXMubGlzdC5wdXNoKHRoaXMubm9kZSlcbiAgICAgIHRoaXMubm9kZSA9IG51bGxcbiAgICAgIHRoaXMub3BlcmF0b3JFeHBlY3RpbmcgPSBPUEVSQVRPUlNbY2hyXVxuICAgICAgdGhpcy5lc2NhcGVkID0gZmFsc2VcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghdGhpcy5lc2NhcGVkICYmIGNociA9PT0gJ1xcXFwnKSB7XG4gICAgICB0aGlzLmVzY2FwZWQgPSB0cnVlXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXRoaXMubm9kZSkge1xuICAgICAgdGhpcy5ub2RlID0ge1xuICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgIHZhbHVlOiAnJ1xuICAgICAgfVxuICAgICAgdGhpcy5saXN0LnB1c2godGhpcy5ub2RlKVxuICAgIH1cblxuICAgIGlmICh0aGlzLmVzY2FwZWQgJiYgY2hyICE9PSAnXFxcXCcpIHtcbiAgICAgIHRoaXMubm9kZS52YWx1ZSArPSAnXFxcXCdcbiAgICB9XG5cbiAgICB0aGlzLm5vZGUudmFsdWUgKz0gY2hyXG4gICAgdGhpcy5lc2NhcGVkID0gZmFsc2VcbiAgfVxufVxuIl19
/***/ }),
/* 179 */
/*!*************************************************************************!*\
!*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
\*************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $propertyIsEnumerable = {}.propertyIsEnumerable;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : $propertyIsEnumerable;
/***/ }),
/* 180 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/array-includes.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 73);
var toLength = __webpack_require__(/*! ../internals/to-length */ 84);
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ 212);
// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare -- NaN check
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare -- NaN check
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) {
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
module.exports = {
// `Array.prototype.includes` method
// https://tc39.es/ecma262/#sec-array.prototype.includes
includes: createMethod(true),
// `Array.prototype.indexOf` method
// https://tc39.es/ecma262/#sec-array.prototype.indexof
indexOf: createMethod(false)
};
/***/ }),
/* 181 */
/*!***************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
\***************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/* 182 */
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-forced.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 37);
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: typeof detection == 'function' ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
module.exports = isForced;
/***/ }),
/* 183 */
/*!***************************************************!*\
!*** ./node_modules/core-js/internals/classof.js ***!
\***************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ 99);
var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ 74);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
};
/***/ }),
/* 184 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/iterators-core.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__(/*! ../internals/fails */ 37);
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ 168);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
var has = __webpack_require__(/*! ../internals/has */ 44);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 98);
var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;
var returnThis = function () { return this; };
// `%IteratorPrototype%` object
// https://tc39.es/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
/* eslint-disable es/no-array-prototype-keys -- safe */
if ([].keys) {
arrayIterator = [].keys();
// Safari 8 has buggy iterators w/o `next`
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
}
}
var NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {
var test = {};
// FF44- legacy iterators case
return IteratorPrototype[ITERATOR].call(test) !== test;
});
if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
if ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {
createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
}
module.exports = {
IteratorPrototype: IteratorPrototype,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};
/***/ }),
/* 185 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/modules/web.timers.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ 34);
var global = __webpack_require__(/*! ../internals/global */ 31);
var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ 106);
var slice = [].slice;
var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
var wrap = function (scheduler) {
return function (handler, timeout /* , ...arguments */) {
var boundArgs = arguments.length > 2;
var args = boundArgs ? slice.call(arguments, 2) : undefined;
return scheduler(boundArgs ? function () {
// eslint-disable-next-line no-new-func
(typeof handler == 'function' ? handler : Function(handler)).apply(this, args);
} : handler, timeout);
};
};
// ie9- setTimeout & setInterval additional parameters fix
// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
$({ global: true, bind: true, forced: MSIE }, {
// `setTimeout` method
// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-settimeout
setTimeout: wrap(global.setTimeout),
// `setInterval` method
// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-setinterval
setInterval: wrap(global.setInterval)
});
/***/ }),
/* 186 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/ie8-dom-define.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var createElement = __webpack_require__(/*! ../internals/document-create-element */ 138);
// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
/***/ }),
/* 187 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/internals/is-forced.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: typeof detection == 'function' ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
module.exports = isForced;
/***/ }),
/* 188 */
/*!*******************************************************!*\
!*** ./node_modules/core-js-pure/internals/shared.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 86);
var store = __webpack_require__(/*! ../internals/shared-store */ 141);
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.8.2',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/* 189 */
/*!****************************************************!*\
!*** ./node_modules/core-js-pure/internals/uid.js ***!
\****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
var id = 0;
var postfix = Math.random();
module.exports = function (key) {
return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
};
/***/ }),
/* 190 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/internals/enum-bug-keys.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/* 191 */
/*!*****************************************************!*\
!*** ./node_modules/core-js-pure/internals/html.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 75);
module.exports = getBuiltIn('document', 'documentElement');
/***/ }),
/* 192 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/internals/native-symbol.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 43);
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
// Chrome 38 Symbol has incorrect toString conversion
// eslint-disable-next-line no-undef
return !String(Symbol());
});
/***/ }),
/* 193 */
/*!***************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/native-promise-constructor.js ***!
\***************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
module.exports = global.Promise;
/***/ }),
/* 194 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/inspect-source.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var store = __webpack_require__(/*! ../internals/shared-store */ 141);
var functionToString = Function.toString;
// this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper
if (typeof store.inspectSource != 'function') {
store.inspectSource = function (it) {
return functionToString.call(it);
};
}
module.exports = store.inspectSource;
/***/ }),
/* 195 */
/*!********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/species-constructor.js ***!
\********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
var aFunction = __webpack_require__(/*! ../internals/a-function */ 70);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var SPECIES = wellKnownSymbol('species');
// `SpeciesConstructor` abstract operation
// https://tc39.es/ecma262/#sec-speciesconstructor
module.exports = function (O, defaultConstructor) {
var C = anObject(O).constructor;
var S;
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);
};
/***/ }),
/* 196 */
/*!*****************************************************!*\
!*** ./node_modules/core-js-pure/internals/task.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var bind = __webpack_require__(/*! ../internals/function-bind-context */ 116);
var html = __webpack_require__(/*! ../internals/html */ 191);
var createElement = __webpack_require__(/*! ../internals/document-create-element */ 138);
var IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ 197);
var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ 118);
var location = global.location;
var set = global.setImmediate;
var clear = global.clearImmediate;
var process = global.process;
var MessageChannel = global.MessageChannel;
var Dispatch = global.Dispatch;
var counter = 0;
var queue = {};
var ONREADYSTATECHANGE = 'onreadystatechange';
var defer, channel, port;
var run = function (id) {
// eslint-disable-next-line no-prototype-builtins
if (queue.hasOwnProperty(id)) {
var fn = queue[id];
delete queue[id];
fn();
}
};
var runner = function (id) {
return function () {
run(id);
};
};
var listener = function (event) {
run(event.data);
};
var post = function (id) {
// old engines have not location.origin
global.postMessage(id + '', location.protocol + '//' + location.host);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!set || !clear) {
set = function setImmediate(fn) {
var args = [];
var i = 1;
while (arguments.length > i) args.push(arguments[i++]);
queue[++counter] = function () {
// eslint-disable-next-line no-new-func
(typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);
};
defer(counter);
return counter;
};
clear = function clearImmediate(id) {
delete queue[id];
};
// Node.js 0.8-
if (IS_NODE) {
defer = function (id) {
process.nextTick(runner(id));
};
// Sphere (JS game engine) Dispatch API
} else if (Dispatch && Dispatch.now) {
defer = function (id) {
Dispatch.now(runner(id));
};
// Browsers with MessageChannel, includes WebWorkers
// except iOS - https://github.com/zloirock/core-js/issues/624
} else if (MessageChannel && !IS_IOS) {
channel = new MessageChannel();
port = channel.port2;
channel.port1.onmessage = listener;
defer = bind(port.postMessage, port, 1);
// Browsers with postMessage, skip WebWorkers
// IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
} else if (
global.addEventListener &&
typeof postMessage == 'function' &&
!global.importScripts &&
location && location.protocol !== 'file:' &&
!fails(post)
) {
defer = post;
global.addEventListener('message', listener, false);
// IE8-
} else if (ONREADYSTATECHANGE in createElement('script')) {
defer = function (id) {
html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {
html.removeChild(this);
run(id);
};
};
// Rest old browsers
} else {
defer = function (id) {
setTimeout(runner(id), 0);
};
}
}
module.exports = {
set: set,
clear: clear
};
/***/ }),
/* 197 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/internals/engine-is-ios.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ 106);
module.exports = /(iphone|ipod|ipad).*applewebkit/i.test(userAgent);
/***/ }),
/* 198 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/internals/promise-resolve.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
var newPromiseCapability = __webpack_require__(/*! ../internals/new-promise-capability */ 109);
module.exports = function (C, x) {
anObject(C);
if (isObject(x) && x.constructor === C) return x;
var promiseCapability = newPromiseCapability.f(C);
var resolve = promiseCapability.resolve;
resolve(x);
return promiseCapability.promise;
};
/***/ }),
/* 199 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/internals/define-iterator.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ 280);
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ 139);
var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ 159);
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ 145);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
var redefine = __webpack_require__(/*! ../internals/redefine */ 108);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 86);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 76);
var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ 200);
var IteratorPrototype = IteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR = wellKnownSymbol('iterator');
var KEYS = 'keys';
var VALUES = 'values';
var ENTRIES = 'entries';
var returnThis = function () { return this; };
module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
} return function () { return new IteratorConstructor(this); };
};
var TO_STRING_TAG = NAME + ' Iterator';
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR]
|| IterablePrototype['@@iterator']
|| DEFAULT && IterablePrototype[DEFAULT];
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
// fix native
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
} else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);
}
}
// Set @@toStringTag to native iterators
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values() { return nativeIterator.call(this); };
}
// define iterator
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);
}
Iterators[NAME] = defaultIterator;
// export additional methods
if (DEFAULT) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
redefine(IterablePrototype, KEY, methods[KEY]);
}
} else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
}
return methods;
};
/***/ }),
/* 200 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/iterators-core.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ 139);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
var has = __webpack_require__(/*! ../internals/has */ 54);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 86);
var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;
var returnThis = function () { return this; };
// `%IteratorPrototype%` object
// https://tc39.es/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
if ([].keys) {
arrayIterator = [].keys();
// Safari 8 has buggy iterators w/o `next`
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
}
}
if (IteratorPrototype == undefined) IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) {
createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);
}
module.exports = {
IteratorPrototype: IteratorPrototype,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};
/***/ }),
/* 201 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.iterator.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 80);
var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ 222);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 76);
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ 147);
var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ 199);
var ARRAY_ITERATOR = 'Array Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
// `Array.prototype.entries` method
// https://tc39.es/ecma262/#sec-array.prototype.entries
// `Array.prototype.keys` method
// https://tc39.es/ecma262/#sec-array.prototype.keys
// `Array.prototype.values` method
// https://tc39.es/ecma262/#sec-array.prototype.values
// `Array.prototype[@@iterator]` method
// https://tc39.es/ecma262/#sec-array.prototype-@@iterator
// `CreateArrayIterator` internal method
// https://tc39.es/ecma262/#sec-createarrayiterator
module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
setInternalState(this, {
type: ARRAY_ITERATOR,
target: toIndexedObject(iterated), // target
index: 0, // next index
kind: kind // kind
});
// `%ArrayIteratorPrototype%.next` method
// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
}, function () {
var state = getInternalState(this);
var target = state.target;
var kind = state.kind;
var index = state.index++;
if (!target || index >= target.length) {
state.target = undefined;
return { value: undefined, done: true };
}
if (kind == 'keys') return { value: index, done: false };
if (kind == 'values') return { value: target[index], done: false };
return { value: [index, target[index]], done: false };
}, 'values');
// argumentsList[@@iterator] is %ArrayProto_values%
// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
// https://tc39.es/ecma262/#sec-createmappedargumentsobject
Iterators.Arguments = Iterators.Array;
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
/***/ }),
/* 202 */
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/regexp-flags.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
// `RegExp.prototype.flags` getter implementation
// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
module.exports = function () {
var that = anObject(this);
var result = '';
if (that.global) result += 'g';
if (that.ignoreCase) result += 'i';
if (that.multiline) result += 'm';
if (that.dotAll) result += 's';
if (that.unicode) result += 'u';
if (that.sticky) result += 'y';
return result;
};
/***/ }),
/* 203 */
/*!*********************************************************!*\
!*** ./node_modules/core-js/modules/es.string.split.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ 149);
var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ 242);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ 236);
var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ 171);
var toLength = __webpack_require__(/*! ../internals/to-length */ 84);
var callRegExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ 150);
var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ 162);
var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ 223);
var UNSUPPORTED_Y = stickyHelpers.UNSUPPORTED_Y;
var arrayPush = [].push;
var min = Math.min;
var MAX_UINT32 = 0xFFFFFFFF;
// @@split logic
fixRegExpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {
var internalSplit;
if (
'abbc'.split(/(b)*/)[1] == 'c' ||
// eslint-disable-next-line regexp/no-empty-group -- required for testing
'test'.split(/(?:)/, -1).length != 4 ||
'ab'.split(/(?:ab)*/).length != 2 ||
'.'.split(/(.?)(.?)/).length != 4 ||
// eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing
'.'.split(/()()/).length > 1 ||
''.split(/.?/).length
) {
// based on es5-shim implementation, need to rework it
internalSplit = function (separator, limit) {
var string = String(requireObjectCoercible(this));
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (separator === undefined) return [string];
// If `separator` is not a regex, use native split
if (!isRegExp(separator)) {
return nativeSplit.call(string, separator, lim);
}
var output = [];
var flags = (separator.ignoreCase ? 'i' : '') +
(separator.multiline ? 'm' : '') +
(separator.unicode ? 'u' : '') +
(separator.sticky ? 'y' : '');
var lastLastIndex = 0;
// Make `global` and avoid `lastIndex` issues by working with a copy
var separatorCopy = new RegExp(separator.source, flags + 'g');
var match, lastIndex, lastLength;
while (match = regexpExec.call(separatorCopy, string)) {
lastIndex = separatorCopy.lastIndex;
if (lastIndex > lastLastIndex) {
output.push(string.slice(lastLastIndex, match.index));
if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
lastLength = match[0].length;
lastLastIndex = lastIndex;
if (output.length >= lim) break;
}
if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
}
if (lastLastIndex === string.length) {
if (lastLength || !separatorCopy.test('')) output.push('');
} else output.push(string.slice(lastLastIndex));
return output.length > lim ? output.slice(0, lim) : output;
};
// Chakra, V8
} else if ('0'.split(undefined, 0).length) {
internalSplit = function (separator, limit) {
return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
};
} else internalSplit = nativeSplit;
return [
// `String.prototype.split` method
// https://tc39.es/ecma262/#sec-string.prototype.split
function split(separator, limit) {
var O = requireObjectCoercible(this);
var splitter = separator == undefined ? undefined : separator[SPLIT];
return splitter !== undefined
? splitter.call(separator, O, limit)
: internalSplit.call(String(O), separator, limit);
},
// `RegExp.prototype[@@split]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@split
//
// NOTE: This cannot be properly polyfilled in engines that don't support
// the 'y' flag.
function (regexp, limit) {
var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var C = speciesConstructor(rx, RegExp);
var unicodeMatching = rx.unicode;
var flags = (rx.ignoreCase ? 'i' : '') +
(rx.multiline ? 'm' : '') +
(rx.unicode ? 'u' : '') +
(UNSUPPORTED_Y ? 'g' : 'y');
// ^(? + rx + ) is needed, in combination with some S slicing, to
// simulate the 'y' flag.
var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);
var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
if (lim === 0) return [];
if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
var p = 0;
var q = 0;
var A = [];
while (q < S.length) {
splitter.lastIndex = UNSUPPORTED_Y ? 0 : q;
var z = callRegExpExec(splitter, UNSUPPORTED_Y ? S.slice(q) : S);
var e;
if (
z === null ||
(e = min(toLength(splitter.lastIndex + (UNSUPPORTED_Y ? q : 0)), S.length)) === p
) {
q = advanceStringIndex(S, q, unicodeMatching);
} else {
A.push(S.slice(p, q));
if (A.length === lim) return A;
for (var i = 1; i <= z.length - 1; i++) {
A.push(z[i]);
if (A.length === lim) return A;
}
q = p = e;
}
}
A.push(S.slice(p));
return A;
}
];
}, UNSUPPORTED_Y);
/***/ }),
/* 204 */
/*!********************************************************!*\
!*** ./node_modules/core-js/modules/es.string.link.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 65);
var createHTML = __webpack_require__(/*! ../internals/create-html */ 325);
var forcedStringHTMLMethod = __webpack_require__(/*! ../internals/string-html-forced */ 326);
// `String.prototype.link` method
// https://tc39.es/ecma262/#sec-string.prototype.link
$({ target: 'String', proto: true, forced: forcedStringHTMLMethod('link') }, {
link: function link(url) {
return createHTML(this, 'a', 'href', url);
}
});
/***/ }),
/* 205 */
/*!*****************************!*\
!*** external "window.Jua" ***!
\*****************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.Jua;
/***/ }),
/* 206 */
/*!*************************************!*\
!*** ./dev/Stores/User/Template.js ***!
\*************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_3__);
// import Remote from 'Remote/User/Ajax';
var TemplateUserStore = /*#__PURE__*/function () {
function TemplateUserStore() {
this.templates = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observableArray([]);
this.templates.loading = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false).extend({
throttle: 100
});
this.templatesNames = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observableArray([]).extend({
throttle: 1000
});
this.templatesNames.skipFirst = true;
this.subscribers();
}
var _proto = TemplateUserStore.prototype;
_proto.subscribers = function subscribers() {
var _this = this;
this.templates.subscribe(function (list) {
_this.templatesNames(___WEBPACK_IMPORTED_MODULE_3___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_3___default.a).call(___WEBPACK_IMPORTED_MODULE_3___default.a, list, function (item) {
return item ? item.name : null;
})));
}); // this.templatesNames.subscribe((aList) => {
// if (this.templatesNames.skipFirst)
// {
// this.templatesNames.skipFirst = false;
// }
// else if (aList && 1 < aList.length)
// {
// Remote.templatesSortOrder(null, aList);
// }
// });
};
return TemplateUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new TemplateUserStore());
/***/ }),
/* 207 */
/*!*********************************!*\
!*** ./dev/Model/Attachment.js ***!
\*********************************/
/*! exports provided: staticFileType, staticIconClass, staticCombinedIconClass, AttachmentModel, default */
/*! exports used: AttachmentModel, staticCombinedIconClass, staticFileType, staticIconClass */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return staticFileType; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return staticIconClass; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return staticCombinedIconClass; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AttachmentModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 203);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
/* harmony import */ var Common_Audio__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Common/Audio */ 83);
/**
* @param {string} sExt
* @param {string} sMimeType
* @returns {string}
*/
var staticFileType = ___WEBPACK_IMPORTED_MODULE_6___default.a.memoize(function (ext, mimeType) {
ext = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["trim"])(ext).toLowerCase();
mimeType = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["trim"])(mimeType).toLowerCase();
var result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Unknown;
var mimeTypeParts = mimeType.split('/');
switch (true) {
case 'image' === mimeTypeParts[0] || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['png', 'jpg', 'jpeg', 'gif', 'bmp']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Image;
break;
case 'audio' === mimeTypeParts[0] || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['mp3', 'ogg', 'oga', 'wav']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Audio;
break;
case 'video' === mimeTypeParts[0] || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['mkv', 'avi']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Video;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['php', 'js', 'css']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Code;
break;
case 'eml' === ext || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeType, ['message/delivery-status', 'message/rfc822']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Eml;
break;
case 'text' === mimeTypeParts[0] && 'html' !== mimeTypeParts[1] || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['txt', 'log']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Text;
break;
case 'text/html' === mimeType || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['html']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Html;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeTypeParts[1], ['zip', '7z', 'tar', 'rar', 'gzip', 'bzip', 'bzip2', 'x-zip', 'x-7z', 'x-rar', 'x-tar', 'x-gzip', 'x-bzip', 'x-bzip2', 'x-zip-compressed', 'x-7z-compressed', 'x-rar-compressed']) || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['zip', '7z', 'tar', 'rar', 'gzip', 'bzip', 'bzip2']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Archive;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeTypeParts[1], ['pdf', 'x-pdf']) || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['pdf']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Pdf;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeType, ['application/pgp-signature', 'application/pgp-keys']) || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['asc', 'pem', 'ppk']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Certificate;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeType, ['application/pkcs7-signature']) || -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(ext, ['p7s']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].CertificateBin;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeTypeParts[1], ['rtf', 'msword', 'vnd.msword', 'vnd.openxmlformats-officedocument.wordprocessingml.document', 'vnd.openxmlformats-officedocument.wordprocessingml.template', 'vnd.ms-word.document.macroEnabled.12', 'vnd.ms-word.template.macroEnabled.12']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].WordText;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeTypeParts[1], ['excel', 'ms-excel', 'vnd.ms-excel', 'vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'vnd.openxmlformats-officedocument.spreadsheetml.template', 'vnd.ms-excel.sheet.macroEnabled.12', 'vnd.ms-excel.template.macroEnabled.12', 'vnd.ms-excel.addin.macroEnabled.12', 'vnd.ms-excel.sheet.binary.macroEnabled.12']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Sheet;
break;
case -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(mimeTypeParts[1], ['powerpoint', 'ms-powerpoint', 'vnd.ms-powerpoint', 'vnd.openxmlformats-officedocument.presentationml.presentation', 'vnd.openxmlformats-officedocument.presentationml.template', 'vnd.openxmlformats-officedocument.presentationml.slideshow', 'vnd.ms-powerpoint.addin.macroEnabled.12', 'vnd.ms-powerpoint.presentation.macroEnabled.12', 'vnd.ms-powerpoint.template.macroEnabled.12', 'vnd.ms-powerpoint.slideshow.macroEnabled.12']):
result = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Presentation;
break;
// no default
}
return result;
});
/**
* @param {string} sFileType
* @returns {string}
*/
var staticIconClass = ___WEBPACK_IMPORTED_MODULE_6___default.a.memoize(function (fileType) {
var resultText = '',
resultClass = 'icon-file';
switch (fileType) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Text:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Eml:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].WordText:
resultClass = 'icon-file-text';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Html:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Code:
resultClass = 'icon-file-code';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Image:
resultClass = 'icon-file-image';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Audio:
resultClass = 'icon-file-music';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Video:
resultClass = 'icon-file-movie';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Archive:
resultClass = 'icon-file-zip';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Certificate:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].CertificateBin:
resultClass = 'icon-file-certificate';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Sheet:
resultClass = 'icon-file-excel';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Presentation:
resultClass = 'icon-file-chart-graph';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Pdf:
resultText = 'pdf';
resultClass = 'icon-none';
break;
// no default
}
return [resultClass, resultText];
});
/**
* @static
* @param {string} sFileType
* @returns {string}
*/
var staticCombinedIconClass = function staticCombinedIconClass(data) {
var result = '',
types = [];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["isNonEmptyArray"])(data)) {
result = 'icon-attachment';
types = ___WEBPACK_IMPORTED_MODULE_6___default.a.uniq(___WEBPACK_IMPORTED_MODULE_6___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_6___default.a).call(___WEBPACK_IMPORTED_MODULE_6___default.a, data, function (item) {
return item ? staticFileType(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["getFileExtension"])(item[0]), item[1]) : '';
})));
if (types && 1 === types.length && types[0]) {
switch (types[0]) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Text:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].WordText:
result = 'icon-file-text';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Html:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Code:
result = 'icon-file-code';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Image:
result = 'icon-file-image';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Audio:
result = 'icon-file-music';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Video:
result = 'icon-file-movie';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Archive:
result = 'icon-file-zip';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Certificate:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].CertificateBin:
result = 'icon-file-certificate';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Sheet:
result = 'icon-file-excel';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Presentation:
result = 'icon-file-chart-graph';
break;
// no default
}
}
}
return result;
};
var AttachmentModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AttachmentModel, _AbstractModel);
function AttachmentModel() {
var _this;
_this = _AbstractModel.call(this, 'AttachmentModel') || this;
_this.checked = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.mimeType = '';
_this.fileName = '';
_this.fileNameExt = '';
_this.fileType = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Unknown;
_this.estimatedSize = 0;
_this.friendlySize = '';
_this.isInline = false;
_this.isLinked = false;
_this.isThumbnail = false;
_this.cid = '';
_this.cidWithOutTags = '';
_this.contentLocation = '';
_this.download = '';
_this.folder = '';
_this.uid = '';
_this.mimeIndex = '';
_this.framed = false;
return _this;
}
/**
* @static
* @param {AjaxJsonAttachment} json
* @returns {?AttachmentModel}
*/
AttachmentModel.newInstanceFromJson = function newInstanceFromJson(json) {
var attachment = new AttachmentModel();
return attachment.initByJson(json) ? attachment : null;
}
/**
* @param {AjaxJsonAttachment} json
* @returns {boolean}
*/
;
var _proto = AttachmentModel.prototype;
_proto.initByJson = function initByJson(json) {
var bResult = false;
if (json && 'Object/Attachment' === json['@Object']) {
this.mimeType = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["trim"])((json.MimeType || '').toLowerCase());
this.fileName = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["trim"])(json.FileName);
this.estimatedSize = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pInt"])(json.EstimatedSize);
this.isInline = !!json.IsInline;
this.isLinked = !!json.IsLinked;
this.isThumbnail = !!json.IsThumbnail;
this.cid = json.CID;
this.contentLocation = json.ContentLocation;
this.download = json.Download;
this.folder = json.Folder;
this.uid = json.Uid;
this.mimeIndex = json.MimeIndex;
this.framed = !!json.Framed;
this.friendlySize = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["friendlySize"])(this.estimatedSize);
this.cidWithOutTags = this.cid.replace(/^<+/, '').replace(/>+$/, '');
this.fileNameExt = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["getFileExtension"])(this.fileName);
this.fileType = staticFileType(this.fileNameExt, this.mimeType);
bResult = true;
}
return bResult;
}
/**
* @returns {boolean}
*/
;
_proto.isImage = function isImage() {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Image === this.fileType;
}
/**
* @returns {boolean}
*/
;
_proto.isMp3 = function isMp3() {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Audio === this.fileType && 'mp3' === this.fileNameExt;
}
/**
* @returns {boolean}
*/
;
_proto.isOgg = function isOgg() {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Audio === this.fileType && ('oga' === this.fileNameExt || 'ogg' === this.fileNameExt);
}
/**
* @returns {boolean}
*/
;
_proto.isWav = function isWav() {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Audio === this.fileType && 'wav' === this.fileNameExt;
}
/**
* @returns {boolean}
*/
;
_proto.hasThumbnail = function hasThumbnail() {
return this.isThumbnail;
}
/**
* @returns {boolean}
*/
;
_proto.isText = function isText() {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Text === this.fileType || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Eml === this.fileType || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Certificate === this.fileType || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Html === this.fileType || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Code === this.fileType;
}
/**
* @returns {boolean}
*/
;
_proto.isPdf = function isPdf() {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FileType"].Pdf === this.fileType;
}
/**
* @returns {boolean}
*/
;
_proto.isFramed = function isFramed() {
return this.framed && Common_Globals__WEBPACK_IMPORTED_MODULE_9__["data"].__APP__ && Common_Globals__WEBPACK_IMPORTED_MODULE_9__["data"].__APP__.googlePreviewSupported() && !(this.isPdf() && Common_Globals__WEBPACK_IMPORTED_MODULE_9__["bAllowPdfPreview"]) && !this.isText() && !this.isImage();
}
/**
* @returns {boolean}
*/
;
_proto.hasPreview = function hasPreview() {
return this.isImage() || this.isPdf() && Common_Globals__WEBPACK_IMPORTED_MODULE_9__["bAllowPdfPreview"] || this.isText() || this.isFramed();
}
/**
* @returns {boolean}
*/
;
_proto.hasPreplay = function hasPreplay() {
return Common_Audio__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].supportedMp3 && this.isMp3() || Common_Audio__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].supportedOgg && this.isOgg() || Common_Audio__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].supportedWav && this.isWav();
}
/**
* @returns {string}
*/
;
_proto.linkDownload = function linkDownload() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_11__[/* attachmentDownload */ "c"])(this.download);
}
/**
* @returns {string}
*/
;
_proto.linkPreview = function linkPreview() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_11__[/* attachmentPreview */ "e"])(this.download);
}
/**
* @returns {string}
*/
;
_proto.linkThumbnail = function linkThumbnail() {
return this.hasThumbnail() ? Object(Common_Links__WEBPACK_IMPORTED_MODULE_11__[/* attachmentThumbnailPreview */ "g"])(this.download) : '';
}
/**
* @returns {string}
*/
;
_proto.linkThumbnailPreviewStyle = function linkThumbnailPreviewStyle() {
var link = this.linkThumbnail();
return '' === link ? '' : 'background:url(' + link + ')';
}
/**
* @returns {string}
*/
;
_proto.linkFramed = function linkFramed() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_11__[/* attachmentFramed */ "d"])(this.download);
}
/**
* @returns {string}
*/
;
_proto.linkPreviewAsPlain = function linkPreviewAsPlain() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_11__[/* attachmentPreviewAsPlain */ "f"])(this.download);
}
/**
* @returns {string}
*/
;
_proto.linkPreviewMain = function linkPreviewMain() {
var result = '';
switch (true) {
case this.isImage():
case this.isPdf() && Common_Globals__WEBPACK_IMPORTED_MODULE_9__["bAllowPdfPreview"]:
result = this.linkPreview();
break;
case this.isText():
result = this.linkPreviewAsPlain();
break;
case this.isFramed():
result = this.linkFramed();
break;
// no default
}
return result;
}
/**
* @returns {string}
*/
;
_proto.generateTransferDownloadUrl = function generateTransferDownloadUrl() {
var link = this.linkDownload();
if ('http' !== link.substr(0, 4)) {
link = window__WEBPACK_IMPORTED_MODULE_5___default.a.location.protocol + '//' + window__WEBPACK_IMPORTED_MODULE_5___default.a.location.host + window__WEBPACK_IMPORTED_MODULE_5___default.a.location.pathname + link;
}
return this.mimeType + ':' + this.fileName + ':' + link;
}
/**
* @param {AttachmentModel} attachment
* @param {*} event
* @returns {boolean}
*/
;
_proto.eventDragStart = function eventDragStart(attachment, event) {
var localEvent = event.originalEvent || event;
if (attachment && localEvent && localEvent.dataTransfer && localEvent.dataTransfer.setData) {
localEvent.dataTransfer.setData('DownloadURL', this.generateTransferDownloadUrl());
}
return true;
}
/**
* @returns {string}
*/
;
_proto.iconClass = function iconClass() {
return staticIconClass(this.fileType)[0];
}
/**
* @returns {string}
*/
;
_proto.iconText = function iconText() {
return staticIconClass(this.fileType)[1];
};
return AttachmentModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_12__[/* AbstractModel */ "a"]);
/***/ }),
/* 208 */
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/native-weak-map.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ 129);
var WeakMap = global.WeakMap;
module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));
/***/ }),
/* 209 */
/*!***********************************************************************!*\
!*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
\***********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ 44);
var ownKeys = __webpack_require__(/*! ../internals/own-keys */ 210);
var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ 127);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 66);
module.exports = function (target, source) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
};
/***/ }),
/* 210 */
/*!****************************************************!*\
!*** ./node_modules/core-js/internals/own-keys.js ***!
\****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 78);
var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ 211);
var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ 181);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
// all object keys, includes non-enumerable and symbols
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
var keys = getOwnPropertyNamesModule.f(anObject(it));
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
};
/***/ }),
/* 211 */
/*!*************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
\*************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ 155);
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ 112);
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
// `Object.getOwnPropertyNames` method
// https://tc39.es/ecma262/#sec-object.getownpropertynames
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return internalObjectKeys(O, hiddenKeys);
};
/***/ }),
/* 212 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/to-absolute-index.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ 79);
var max = Math.max;
var min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
module.exports = function (index, length) {
var integer = toInteger(index);
return integer < 0 ? max(integer + length, 0) : min(integer, length);
};
/***/ }),
/* 213 */
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
/* eslint-disable es/no-symbol -- required for testing */
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ 137);
module.exports = NATIVE_SYMBOL
&& !Symbol.sham
&& typeof Symbol.iterator == 'symbol';
/***/ }),
/* 214 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js/internals/function-bind-context.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__(/*! ../internals/a-function */ 131);
// optional / simple context binding
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 0: return function () {
return fn.call(that);
};
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/* 215 */
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!
\*******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
/* eslint-disable no-proto -- safe */
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var aPossiblePrototype = __webpack_require__(/*! ../internals/a-possible-prototype */ 244);
// `Object.setPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.setprototypeof
// Works with __proto__ only. Old v8 can't work with null proto objects.
// eslint-disable-next-line es/no-object-setprototypeof -- safe
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var CORRECT_SETTER = false;
var test = {};
var setter;
try {
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
setter.call(test, []);
CORRECT_SETTER = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
anObject(O);
aPossiblePrototype(proto);
if (CORRECT_SETTER) setter.call(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
/***/ }),
/* 216 */
/*!************************************************************!*\
!*** ./node_modules/core-js/internals/object-to-string.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ 99);
var classof = __webpack_require__(/*! ../internals/classof */ 183);
// `Object.prototype.toString` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.tostring
module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
return '[object ' + classof(this) + ']';
};
/***/ }),
/* 217 */
/*!************************************************************!*\
!*** ./node_modules/core-js/internals/string-multibyte.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ 79);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
// `String.prototype.{ codePointAt, at }` methods implementation
var createMethod = function (CONVERT_TO_STRING) {
return function ($this, pos) {
var S = String(requireObjectCoercible($this));
var position = toInteger(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = S.charCodeAt(position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING ? S.charAt(position) : first
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
};
module.exports = {
// `String.prototype.codePointAt` method
// https://tc39.es/ecma262/#sec-string.prototype.codepointat
codeAt: createMethod(false),
// `String.prototype.at` method
// https://github.com/mathiasbynens/String.prototype.at
charAt: createMethod(true)
};
/***/ }),
/* 218 */
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/dom-iterables.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// iterable DOM collections
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
module.exports = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
/***/ }),
/* 219 */
/*!***********************************************************!*\
!*** ./node_modules/core-js/modules/es.array.iterator.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 73);
var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ 234);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 113);
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ 130);
var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ 237);
var ARRAY_ITERATOR = 'Array Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);
// `Array.prototype.entries` method
// https://tc39.es/ecma262/#sec-array.prototype.entries
// `Array.prototype.keys` method
// https://tc39.es/ecma262/#sec-array.prototype.keys
// `Array.prototype.values` method
// https://tc39.es/ecma262/#sec-array.prototype.values
// `Array.prototype[@@iterator]` method
// https://tc39.es/ecma262/#sec-array.prototype-@@iterator
// `CreateArrayIterator` internal method
// https://tc39.es/ecma262/#sec-createarrayiterator
module.exports = defineIterator(Array, 'Array', function (iterated, kind) {
setInternalState(this, {
type: ARRAY_ITERATOR,
target: toIndexedObject(iterated), // target
index: 0, // next index
kind: kind // kind
});
// `%ArrayIteratorPrototype%.next` method
// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
}, function () {
var state = getInternalState(this);
var target = state.target;
var kind = state.kind;
var index = state.index++;
if (!target || index >= target.length) {
state.target = undefined;
return { value: undefined, done: true };
}
if (kind == 'keys') return { value: index, done: false };
if (kind == 'values') return { value: target[index], done: false };
return { value: [index, target[index]], done: false };
}, 'values');
// argumentsList[@@iterator] is %ArrayProto_values%
// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
// https://tc39.es/ecma262/#sec-createmappedargumentsobject
Iterators.Arguments = Iterators.Array;
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');
/***/ }),
/* 220 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-keys.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ 258);
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ 190);
// `Object.keys` method
// https://tc39.es/ecma262/#sec-object.keys
module.exports = Object.keys || function keys(O) {
return internalObjectKeys(O, enumBugKeys);
};
/***/ }),
/* 221 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/to-absolute-index.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ 142);
var max = Math.max;
var min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
module.exports = function (index, length) {
var integer = toInteger(index);
return integer < 0 ? max(integer + length, 0) : min(integer, length);
};
/***/ }),
/* 222 */
/*!*******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/add-to-unscopables.js ***!
\*******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function () { /* empty */ };
/***/ }),
/* 223 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__(/*! ./fails */ 37);
// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,
// so we use an intermediate function.
function RE(s, f) {
return RegExp(s, f);
}
exports.UNSUPPORTED_Y = fails(function () {
// babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
var re = RE('a', 'y');
re.lastIndex = 2;
return re.exec('abcd') != null;
});
exports.BROKEN_CARET = fails(function () {
// https://bugzilla.mozilla.org/show_bug.cgi?id=773687
var re = RE('^r', 'gy');
re.lastIndex = 2;
return re.exec('str') != null;
});
/***/ }),
/* 224 */
/*!*********************************************************!*\
!*** ./node_modules/core-js/modules/es.string.match.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ 149);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var toLength = __webpack_require__(/*! ../internals/to-length */ 84);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ 171);
var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ 150);
// @@match logic
fixRegExpWellKnownSymbolLogic('match', 1, function (MATCH, nativeMatch, maybeCallNative) {
return [
// `String.prototype.match` method
// https://tc39.es/ecma262/#sec-string.prototype.match
function match(regexp) {
var O = requireObjectCoercible(this);
var matcher = regexp == undefined ? undefined : regexp[MATCH];
return matcher !== undefined ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
},
// `RegExp.prototype[@@match]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@match
function (regexp) {
var res = maybeCallNative(nativeMatch, regexp, this);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
if (!rx.global) return regExpExec(rx, S);
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
var A = [];
var n = 0;
var result;
while ((result = regExpExec(rx, S)) !== null) {
var matchStr = String(result[0]);
A[n] = matchStr;
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
n++;
}
return n === 0 ? null : A;
}
];
});
/***/ }),
/* 225 */
/*!***********************************!*\
!*** ./dev/Component/Checkbox.js ***!
\***********************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Component/Abstract */ 32);
/* harmony import */ var Component_AbstractCheckbox__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Component/AbstractCheckbox */ 177);
var CheckboxComponent = /*#__PURE__*/function (_AbstractCheckbox) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(CheckboxComponent, _AbstractCheckbox);
function CheckboxComponent() {
return _AbstractCheckbox.apply(this, arguments) || this;
}
return CheckboxComponent;
}(Component_AbstractCheckbox__WEBPACK_IMPORTED_MODULE_2__[/* AbstractCheckbox */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_1__[/* componentExportHelper */ "b"])(CheckboxComponent, 'CheckboxComponent'));
/***/ }),
/* 226 */
/*!**********************************!*\
!*** ./dev/Common/HtmlEditor.js ***!
\**********************************/
/*! exports provided: HtmlEditor, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HtmlEditor", function() { return HtmlEditor; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return HtmlEditor; });
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.match.js */ 224);
/* harmony import */ var core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_match_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Storage/Settings */ 5);
var HtmlEditor = /*#__PURE__*/function () {
/**
* @param {Object} element
* @param {Function=} onBlur
* @param {Function=} onReady
* @param {Function=} onModeChange
*/
function HtmlEditor(element, onBlur, onReady, onModeChange) {
if (onBlur === void 0) {
onBlur = null;
}
if (onReady === void 0) {
onReady = null;
}
if (onModeChange === void 0) {
onModeChange = null;
}
this.editor = void 0;
this.blurTimer = 0;
this.__resizable = false;
this.__inited = false;
this.onBlur = null;
this.onReady = null;
this.onModeChange = null;
this.element = void 0;
this.$element = void 0;
this.resize = void 0;
this.onBlur = onBlur;
this.onReady = onReady;
this.onModeChange = onModeChange;
this.element = element;
this.$element = $__WEBPACK_IMPORTED_MODULE_6___default()(element);
this.resize = ___WEBPACK_IMPORTED_MODULE_5___default.a.throttle(___WEBPACK_IMPORTED_MODULE_5___default.a.bind(this.resizeEditor, this), 100);
this.init();
}
var _proto = HtmlEditor.prototype;
_proto.runOnBlur = function runOnBlur() {
if (this.onBlur) {
this.onBlur();
}
};
_proto.blurTrigger = function blurTrigger() {
var _this = this;
if (this.onBlur) {
window__WEBPACK_IMPORTED_MODULE_4___default.a.clearTimeout(this.blurTimer);
this.blurTimer = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_3___default()(function () {
_this.runOnBlur();
}, Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Magics"].Time200ms);
}
};
_proto.focusTrigger = function focusTrigger() {
if (this.onBlur) {
window__WEBPACK_IMPORTED_MODULE_4___default.a.clearTimeout(this.blurTimer);
}
}
/**
* @returns {boolean}
*/
;
_proto.isHtml = function isHtml() {
return this.editor ? 'wysiwyg' === this.editor.mode : false;
}
/**
* @returns {void}
*/
;
_proto.clearCachedSignature = function clearCachedSignature() {
if (this.editor) {
this.editor.execCommand('insertSignature', {
clearCache: true
});
}
}
/**
* @param {string} signature
* @param {bool} html
* @param {bool} insertBefore
* @returns {void}
*/
;
_proto.setSignature = function setSignature(signature, html, insertBefore) {
if (insertBefore === void 0) {
insertBefore = false;
}
if (this.editor) {
this.editor.execCommand('insertSignature', {
isHtml: html,
insertBefore: insertBefore,
signature: signature
});
}
}
/**
* @returns {boolean}
*/
;
_proto.checkDirty = function checkDirty() {
return this.editor ? this.editor.checkDirty() : false;
};
_proto.resetDirty = function resetDirty() {
if (this.editor) {
this.editor.resetDirty();
}
}
/**
* @param {boolean=} wrapIsHtml = false
* @returns {string}
*/
;
_proto.getData = function getData(wrapIsHtml) {
if (wrapIsHtml === void 0) {
wrapIsHtml = false;
}
var result = '';
if (this.editor) {
try {
if ('plain' === this.editor.mode && this.editor.plugins.plain && this.editor.__plain) {
result = this.editor.__plain.getRawData();
} else {
result = wrapIsHtml ? '<div data-html-editor-font-wrapper="true" style="font-family: arial, sans-serif; font-size: 13px;">' + this.editor.getData() + '</div>' : this.editor.getData();
}
} catch (e) {} // eslint-disable-line no-empty
}
return result;
}
/**
* @param {boolean=} wrapIsHtml = false
* @returns {string}
*/
;
_proto.getDataWithHtmlMark = function getDataWithHtmlMark(wrapIsHtml) {
if (wrapIsHtml === void 0) {
wrapIsHtml = false;
}
return (this.isHtml() ? ':HTML:' : '') + this.getData(wrapIsHtml);
};
_proto.modeToggle = function modeToggle(plain, resize) {
if (this.editor) {
try {
if (plain) {
if ('plain' === this.editor.mode) {
this.editor.setMode('wysiwyg');
}
} else if ('wysiwyg' === this.editor.mode) {
this.editor.setMode('plain');
}
} catch (e) {} // eslint-disable-line no-empty
if (resize) {
this.resize();
}
}
};
_proto.setHtmlOrPlain = function setHtmlOrPlain(text, focus) {
if (':HTML:' === text.substr(0, 6)) {
this.setHtml(text.substr(6), focus);
} else {
this.setPlain(text, focus);
}
};
_proto.setHtml = function setHtml(html, focus) {
if (this.editor && this.__inited) {
this.clearCachedSignature();
this.modeToggle(true);
html = html.replace(/<p[^>]*><\/p>/gi, '');
try {
this.editor.setData(html);
} catch (e) {} // eslint-disable-line no-empty
if (focus) {
this.focus();
}
}
};
_proto.replaceHtml = function replaceHtml(find, _replaceHtml) {
if (this.editor && this.__inited && 'wysiwyg' === this.editor.mode) {
try {
this.editor.setData(this.editor.getData().replace(find, _replaceHtml));
} catch (e) {} // eslint-disable-line no-empty
}
};
_proto.setPlain = function setPlain(plain, focus) {
if (this.editor && this.__inited) {
this.clearCachedSignature();
this.modeToggle(false);
if ('plain' === this.editor.mode && this.editor.plugins.plain && this.editor.__plain) {
this.editor.__plain.setRawData(plain);
} else {
try {
this.editor.setData(plain);
} catch (e) {} // eslint-disable-line no-empty
}
if (focus) {
this.focus();
}
}
};
_proto.init = function init() {
var _this2 = this;
if (this.element && !this.editor) {
var initFunc = function initFunc() {
var config = Common_Globals__WEBPACK_IMPORTED_MODULE_7__["htmlEditorDefaultConfig"],
language = Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["settingsGet"]('Language'),
allowSource = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["appSettingsGet"]('allowHtmlEditorSourceButton'),
biti = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["appSettingsGet"]('allowHtmlEditorBitiButtons');
if ((allowSource || !biti) && !config.toolbarGroups.__cfgInited) {
config.toolbarGroups.__cfgInited = true;
if (allowSource) {
config.removeButtons = config.removeButtons.replace(',Source', '');
}
if (!biti) {
config.removePlugins += (config.removePlugins ? ',' : '') + 'bidi';
}
}
config.enterMode = window__WEBPACK_IMPORTED_MODULE_4___default.a.CKEDITOR.ENTER_BR;
config.shiftEnterMode = window__WEBPACK_IMPORTED_MODULE_4___default.a.CKEDITOR.ENTER_P;
config.language = Common_Globals__WEBPACK_IMPORTED_MODULE_7__["htmlEditorLangsMap"][(language || 'en').toLowerCase()] || 'en';
if (window__WEBPACK_IMPORTED_MODULE_4___default.a.CKEDITOR.env) {
window__WEBPACK_IMPORTED_MODULE_4___default.a.CKEDITOR.env.isCompatible = true;
}
_this2.editor = window__WEBPACK_IMPORTED_MODULE_4___default.a.CKEDITOR.appendTo(_this2.element, config);
_this2.editor.on('key', function (event) {
if (event && event.data && Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Tab === event.data.keyCode) {
return false;
}
return true;
});
_this2.editor.on('blur', function () {
_this2.blurTrigger();
});
_this2.editor.on('mode', function () {
_this2.blurTrigger();
if (_this2.onModeChange) {
_this2.onModeChange('plain' !== _this2.editor.mode);
}
});
_this2.editor.on('focus', function () {
_this2.focusTrigger();
});
if (window__WEBPACK_IMPORTED_MODULE_4___default.a.FileReader) {
_this2.editor.on('drop', function (event) {
if (0 < event.data.dataTransfer.getFilesCount()) {
var file = event.data.dataTransfer.getFile(0);
if (file && window__WEBPACK_IMPORTED_MODULE_4___default.a.FileReader && event.data.dataTransfer.id && file.type && file.type.match(/^image/i)) {
var id = event.data.dataTransfer.id,
imageId = "[img=" + id + "]",
reader = new window__WEBPACK_IMPORTED_MODULE_4___default.a.FileReader();
reader.onloadend = function () {
if (reader.result) {
_this2.replaceHtml(imageId, "<img src=\"" + reader.result + "\" />");
}
};
reader.readAsDataURL(file);
event.data.dataTransfer.setData('text/html', imageId);
}
}
});
}
_this2.editor.on('instanceReady', function () {
if (_this2.editor.removeMenuItem) {
_this2.editor.removeMenuItem('cut');
_this2.editor.removeMenuItem('copy');
_this2.editor.removeMenuItem('paste');
}
_this2.__resizable = true;
_this2.__inited = true;
_this2.resize();
if (_this2.onReady) {
_this2.onReady();
}
});
};
if (window__WEBPACK_IMPORTED_MODULE_4___default.a.CKEDITOR) {
initFunc();
} else {
window__WEBPACK_IMPORTED_MODULE_4___default.a.__initEditor = initFunc;
}
}
};
_proto.focus = function focus() {
if (this.editor) {
try {
this.editor.focus();
} catch (e) {} // eslint-disable-line no-empty
}
};
_proto.hasFocus = function hasFocus() {
if (this.editor) {
try {
return !!this.editor.focusManager.hasFocus;
} catch (e) {} // eslint-disable-line no-empty
}
return false;
};
_proto.blur = function blur() {
if (this.editor) {
try {
this.editor.focusManager.blur(true);
} catch (e) {} // eslint-disable-line no-empty
}
};
_proto.resizeEditor = function resizeEditor() {
if (this.editor && this.__resizable) {
try {
this.editor.resize(this.$element.width(), this.$element.innerHeight());
} catch (e) {} // eslint-disable-line no-empty
}
};
_proto.setReadOnly = function setReadOnly(value) {
if (this.editor) {
try {
this.editor.setReadOnly(!!value);
} catch (e) {} // eslint-disable-line no-empty
}
};
_proto.clear = function clear(focus) {
this.setHtml('', focus);
};
return HtmlEditor;
}();
/***/ }),
/* 227 */
/*!*******************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/reduce.js ***!
\*******************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/reduce */ 344);
/***/ }),
/* 228 */
/*!*********************************!*\
!*** ./dev/External/Opentip.js ***!
\*********************************/
/*! exports provided: Opentip, default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export Opentip */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Opentip; });
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
var Opentip = window__WEBPACK_IMPORTED_MODULE_0___default.a.Opentip || {};
Opentip.styles = Opentip.styles || {};
Opentip.styles.rainloop = {
'extends': 'standard',
'fixed': true,
'target': true,
'delay': 0.2,
'hideDelay': 0,
'hideEffect': 'fade',
'hideEffectDuration': 0.2,
'showEffect': 'fade',
'showEffectDuration': 0.2,
'showOn': 'mouseover click',
'removeElementsOnHide': true,
'background': '#fff',
'shadow': false,
'borderColor': '#999',
'borderRadius': 2,
'borderWidth': 1
};
Opentip.styles.rainloopTip = {
'extends': 'rainloop',
'delay': 0.4,
'group': 'rainloopTips'
};
Opentip.styles.rainloopErrorTip = {
'extends': 'rainloop',
'className': 'rainloopErrorTip'
};
/***/ }),
/* 229 */
/*!*****************************************!*\
!*** ./node_modules/pikaday/pikaday.js ***!
\*****************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
/*!
* Pikaday
*
* Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/Pikaday/Pikaday
*/
(function (root, factory)
{
'use strict';
var moment;
if (true) {
// CommonJS module
// Load moment.js as an optional dependency
try { moment = __webpack_require__(/*! moment */ 100); } catch (e) {}
module.exports = factory(moment);
} else {}
}(this, function (moment)
{
'use strict';
/**
* feature detection and helper functions
*/
var hasMoment = typeof moment === 'function',
hasEventListeners = !!window.addEventListener,
document = window.document,
sto = window.setTimeout,
addEvent = function(el, e, callback, capture)
{
if (hasEventListeners) {
el.addEventListener(e, callback, !!capture);
} else {
el.attachEvent('on' + e, callback);
}
},
removeEvent = function(el, e, callback, capture)
{
if (hasEventListeners) {
el.removeEventListener(e, callback, !!capture);
} else {
el.detachEvent('on' + e, callback);
}
},
trim = function(str)
{
return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g,'');
},
hasClass = function(el, cn)
{
return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;
},
addClass = function(el, cn)
{
if (!hasClass(el, cn)) {
el.className = (el.className === '') ? cn : el.className + ' ' + cn;
}
},
removeClass = function(el, cn)
{
el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));
},
isArray = function(obj)
{
return (/Array/).test(Object.prototype.toString.call(obj));
},
isDate = function(obj)
{
return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());
},
isWeekend = function(date)
{
var day = date.getDay();
return day === 0 || day === 6;
},
isLeapYear = function(year)
{
// solution lifted from date.js (MIT license): https://github.com/datejs/Datejs
return ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
},
getDaysInMonth = function(year, month)
{
return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
},
setToStartOfDay = function(date)
{
if (isDate(date)) date.setHours(0,0,0,0);
},
compareDates = function(a,b)
{
// weak date comparison (use setToStartOfDay(date) to ensure correct result)
return a.getTime() === b.getTime();
},
extend = function(to, from, overwrite)
{
var prop, hasProp;
for (prop in from) {
hasProp = to[prop] !== undefined;
if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {
if (isDate(from[prop])) {
if (overwrite) {
to[prop] = new Date(from[prop].getTime());
}
}
else if (isArray(from[prop])) {
if (overwrite) {
to[prop] = from[prop].slice(0);
}
} else {
to[prop] = extend({}, from[prop], overwrite);
}
} else if (overwrite || !hasProp) {
to[prop] = from[prop];
}
}
return to;
},
fireEvent = function(el, eventName, data)
{
var ev;
if (document.createEvent) {
ev = document.createEvent('HTMLEvents');
ev.initEvent(eventName, true, false);
ev = extend(ev, data);
el.dispatchEvent(ev);
} else if (document.createEventObject) {
ev = document.createEventObject();
ev = extend(ev, data);
el.fireEvent('on' + eventName, ev);
}
},
adjustCalendar = function(calendar) {
if (calendar.month < 0) {
calendar.year -= Math.ceil(Math.abs(calendar.month)/12);
calendar.month += 12;
}
if (calendar.month > 11) {
calendar.year += Math.floor(Math.abs(calendar.month)/12);
calendar.month -= 12;
}
return calendar;
},
/**
* defaults and localisation
*/
defaults = {
// bind the picker to a form field
field: null,
// automatically show/hide the picker on `field` focus (default `true` if `field` is set)
bound: undefined,
// data-attribute on the input field with an aria assistance text (only applied when `bound` is set)
ariaLabel: 'Use the arrow keys to pick a date',
// position of the datepicker, relative to the field (default to bottom & left)
// ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)
position: 'bottom left',
// automatically fit in the viewport even if it means repositioning from the position option
reposition: true,
// the default output format for `.toString()` and `field` value
format: 'YYYY-MM-DD',
// the toString function which gets passed a current date object and format
// and returns a string
toString: null,
// used to create date object from current input string
parse: null,
// the initial date to view when first opened
defaultDate: null,
// make the `defaultDate` the initial selected value
setDefaultDate: false,
// first day of week (0: Sunday, 1: Monday etc)
firstDay: 0,
// minimum number of days in the week that gets week number one
// default ISO 8601, week 01 is the week with the first Thursday (4)
firstWeekOfYearMinDays: 4,
// the default flag for moment's strict date parsing
formatStrict: false,
// the minimum/earliest date that can be selected
minDate: null,
// the maximum/latest date that can be selected
maxDate: null,
// number of years either side, or array of upper/lower range
yearRange: 10,
// show week numbers at head of row
showWeekNumber: false,
// Week picker mode
pickWholeWeek: false,
// used internally (don't config outside)
minYear: 0,
maxYear: 9999,
minMonth: undefined,
maxMonth: undefined,
startRange: null,
endRange: null,
isRTL: false,
// Additional text to append to the year in the calendar title
yearSuffix: '',
// Render the month after year in the calendar title
showMonthAfterYear: false,
// Render days of the calendar grid that fall in the next or previous month
showDaysInNextAndPreviousMonths: false,
// Allows user to select days that fall in the next or previous month
enableSelectionDaysInNextAndPreviousMonths: false,
// how many months are visible
numberOfMonths: 1,
// when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)
// only used for the first display or when a selected date is not visible
mainCalendar: 'left',
// Specify a DOM element to render the calendar in
container: undefined,
// Blur field when date is selected
blurFieldOnSelect : true,
// internationalization
i18n: {
previousMonth : 'Previous Month',
nextMonth : 'Next Month',
months : ['January','February','March','April','May','June','July','August','September','October','November','December'],
weekdays : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
},
// Theme Classname
theme: null,
// events array
events: [],
// callback function
onSelect: null,
onOpen: null,
onClose: null,
onDraw: null,
// Enable keyboard input
keyboardInput: true
},
/**
* templating functions to abstract HTML rendering
*/
renderDayName = function(opts, day, abbr)
{
day += opts.firstDay;
while (day >= 7) {
day -= 7;
}
return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];
},
renderDay = function(opts)
{
var arr = [];
var ariaSelected = 'false';
if (opts.isEmpty) {
if (opts.showDaysInNextAndPreviousMonths) {
arr.push('is-outside-current-month');
if(!opts.enableSelectionDaysInNextAndPreviousMonths) {
arr.push('is-selection-disabled');
}
} else {
return '<td class="is-empty"></td>';
}
}
if (opts.isDisabled) {
arr.push('is-disabled');
}
if (opts.isToday) {
arr.push('is-today');
}
if (opts.isSelected) {
arr.push('is-selected');
ariaSelected = 'true';
}
if (opts.hasEvent) {
arr.push('has-event');
}
if (opts.isInRange) {
arr.push('is-inrange');
}
if (opts.isStartRange) {
arr.push('is-startrange');
}
if (opts.isEndRange) {
arr.push('is-endrange');
}
return '<td data-day="' + opts.day + '" class="' + arr.join(' ') + '" aria-selected="' + ariaSelected + '">' +
'<button class="pika-button pika-day" type="button" ' +
'data-pika-year="' + opts.year + '" data-pika-month="' + opts.month + '" data-pika-day="' + opts.day + '">' +
opts.day +
'</button>' +
'</td>';
},
isoWeek = function(date, firstWeekOfYearMinDays) {
// Ensure we're at the start of the day.
date.setHours(0, 0, 0, 0);
// Thursday in current week decides the year because January 4th
// is always in the first week according to ISO8601.
var yearDay = date.getDate(),
weekDay = date.getDay(),
dayInFirstWeek = firstWeekOfYearMinDays,
dayShift = dayInFirstWeek - 1, // counting starts at 0
daysPerWeek = 7,
prevWeekDay = function(day) { return (day + daysPerWeek - 1) % daysPerWeek; };
// Adjust to Thursday in week 1 and count number of weeks from date to week 1.
date.setDate(yearDay + dayShift - prevWeekDay(weekDay));
var jan4th = new Date(date.getFullYear(), 0, dayInFirstWeek),
msPerDay = 24 * 60 * 60 * 1000,
daysBetween = (date.getTime() - jan4th.getTime()) / msPerDay,
weekNum = 1 + Math.round((daysBetween - dayShift + prevWeekDay(jan4th.getDay())) / daysPerWeek);
return weekNum;
},
renderWeek = function (d, m, y, firstWeekOfYearMinDays) {
var date = new Date(y, m, d),
week = hasMoment ? moment(date).isoWeek() : isoWeek(date, firstWeekOfYearMinDays);
return '<td class="pika-week">' + week + '</td>';
},
renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)
{
return '<tr class="pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '">' + (isRTL ? days.reverse() : days).join('') + '</tr>';
},
renderBody = function(rows)
{
return '<tbody>' + rows.join('') + '</tbody>';
},
renderHead = function(opts)
{
var i, arr = [];
if (opts.showWeekNumber) {
arr.push('<th></th>');
}
for (i = 0; i < 7; i++) {
arr.push('<th scope="col"><abbr title="' + renderDayName(opts, i) + '">' + renderDayName(opts, i, true) + '</abbr></th>');
}
return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';
},
renderTitle = function(instance, c, year, month, refYear, randId)
{
var i, j, arr,
opts = instance._o,
isMinYear = year === opts.minYear,
isMaxYear = year === opts.maxYear,
html = '<div id="' + randId + '" class="pika-title" role="heading" aria-live="assertive">',
monthHtml,
yearHtml,
prev = true,
next = true;
for (arr = [], i = 0; i < 12; i++) {
arr.push('<option value="' + (year === refYear ? i - c : 12 + i - c) + '"' +
(i === month ? ' selected="selected"': '') +
((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? ' disabled="disabled"' : '') + '>' +
opts.i18n.months[i] + '</option>');
}
monthHtml = '<div class="pika-label">' + opts.i18n.months[month] + '<select class="pika-select pika-select-month" tabindex="-1">' + arr.join('') + '</select></div>';
if (isArray(opts.yearRange)) {
i = opts.yearRange[0];
j = opts.yearRange[1] + 1;
} else {
i = year - opts.yearRange;
j = 1 + year + opts.yearRange;
}
for (arr = []; i < j && i <= opts.maxYear; i++) {
if (i >= opts.minYear) {
arr.push('<option value="' + i + '"' + (i === year ? ' selected="selected"': '') + '>' + (i) + '</option>');
}
}
yearHtml = '<div class="pika-label">' + year + opts.yearSuffix + '<select class="pika-select pika-select-year" tabindex="-1">' + arr.join('') + '</select></div>';
if (opts.showMonthAfterYear) {
html += yearHtml + monthHtml;
} else {
html += monthHtml + yearHtml;
}
if (isMinYear && (month === 0 || opts.minMonth >= month)) {
prev = false;
}
if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {
next = false;
}
if (c === 0) {
html += '<button class="pika-prev' + (prev ? '' : ' is-disabled') + '" type="button">' + opts.i18n.previousMonth + '</button>';
}
if (c === (instance._o.numberOfMonths - 1) ) {
html += '<button class="pika-next' + (next ? '' : ' is-disabled') + '" type="button">' + opts.i18n.nextMonth + '</button>';
}
return html += '</div>';
},
renderTable = function(opts, data, randId)
{
return '<table cellpadding="0" cellspacing="0" class="pika-table" role="grid" aria-labelledby="' + randId + '">' + renderHead(opts) + renderBody(data) + '</table>';
},
/**
* Pikaday constructor
*/
Pikaday = function(options)
{
var self = this,
opts = self.config(options);
self._onMouseDown = function(e)
{
if (!self._v) {
return;
}
e = e || window.event;
var target = e.target || e.srcElement;
if (!target) {
return;
}
if (!hasClass(target, 'is-disabled')) {
if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {
self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));
if (opts.bound) {
sto(function() {
self.hide();
if (opts.blurFieldOnSelect && opts.field) {
opts.field.blur();
}
}, 100);
}
}
else if (hasClass(target, 'pika-prev')) {
self.prevMonth();
}
else if (hasClass(target, 'pika-next')) {
self.nextMonth();
}
}
if (!hasClass(target, 'pika-select')) {
// if this is touch event prevent mouse events emulation
if (e.preventDefault) {
e.preventDefault();
} else {
e.returnValue = false;
return false;
}
} else {
self._c = true;
}
};
self._onChange = function(e)
{
e = e || window.event;
var target = e.target || e.srcElement;
if (!target) {
return;
}
if (hasClass(target, 'pika-select-month')) {
self.gotoMonth(target.value);
}
else if (hasClass(target, 'pika-select-year')) {
self.gotoYear(target.value);
}
};
self._onKeyChange = function(e)
{
e = e || window.event;
if (self.isVisible()) {
switch(e.keyCode){
case 13:
case 27:
if (opts.field) {
opts.field.blur();
}
break;
case 37:
self.adjustDate('subtract', 1);
break;
case 38:
self.adjustDate('subtract', 7);
break;
case 39:
self.adjustDate('add', 1);
break;
case 40:
self.adjustDate('add', 7);
break;
case 8:
case 46:
self.setDate(null);
break;
}
}
};
self._parseFieldValue = function()
{
if (opts.parse) {
return opts.parse(opts.field.value, opts.format);
} else if (hasMoment) {
var date = moment(opts.field.value, opts.format, opts.formatStrict);
return (date && date.isValid()) ? date.toDate() : null;
} else {
return new Date(Date.parse(opts.field.value));
}
};
self._onInputChange = function(e)
{
var date;
if (e.firedBy === self) {
return;
}
date = self._parseFieldValue();
if (isDate(date)) {
self.setDate(date);
}
if (!self._v) {
self.show();
}
};
self._onInputFocus = function()
{
self.show();
};
self._onInputClick = function()
{
self.show();
};
self._onInputBlur = function()
{
// IE allows pika div to gain focus; catch blur the input field
var pEl = document.activeElement;
do {
if (hasClass(pEl, 'pika-single')) {
return;
}
}
while ((pEl = pEl.parentNode));
if (!self._c) {
self._b = sto(function() {
self.hide();
}, 50);
}
self._c = false;
};
self._onClick = function(e)
{
e = e || window.event;
var target = e.target || e.srcElement,
pEl = target;
if (!target) {
return;
}
if (!hasEventListeners && hasClass(target, 'pika-select')) {
if (!target.onchange) {
target.setAttribute('onchange', 'return;');
addEvent(target, 'change', self._onChange);
}
}
do {
if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {
return;
}
}
while ((pEl = pEl.parentNode));
if (self._v && target !== opts.trigger && pEl !== opts.trigger) {
self.hide();
}
};
self.el = document.createElement('div');
self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');
addEvent(self.el, 'mousedown', self._onMouseDown, true);
addEvent(self.el, 'touchend', self._onMouseDown, true);
addEvent(self.el, 'change', self._onChange);
if (opts.keyboardInput) {
addEvent(document, 'keydown', self._onKeyChange);
}
if (opts.field) {
if (opts.container) {
opts.container.appendChild(self.el);
} else if (opts.bound) {
document.body.appendChild(self.el);
} else {
opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);
}
addEvent(opts.field, 'change', self._onInputChange);
if (!opts.defaultDate) {
opts.defaultDate = self._parseFieldValue();
opts.setDefaultDate = true;
}
}
var defDate = opts.defaultDate;
if (isDate(defDate)) {
if (opts.setDefaultDate) {
self.setDate(defDate, true);
} else {
self.gotoDate(defDate);
}
} else {
self.gotoDate(new Date());
}
if (opts.bound) {
this.hide();
self.el.className += ' is-bound';
addEvent(opts.trigger, 'click', self._onInputClick);
addEvent(opts.trigger, 'focus', self._onInputFocus);
addEvent(opts.trigger, 'blur', self._onInputBlur);
} else {
this.show();
}
};
/**
* public Pikaday API
*/
Pikaday.prototype = {
/**
* configure functionality
*/
config: function(options)
{
if (!this._o) {
this._o = extend({}, defaults, true);
}
var opts = extend(this._o, options, true);
opts.isRTL = !!opts.isRTL;
opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;
opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;
opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);
opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;
opts.disableWeekends = !!opts.disableWeekends;
opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;
var nom = parseInt(opts.numberOfMonths, 10) || 1;
opts.numberOfMonths = nom > 4 ? 4 : nom;
if (!isDate(opts.minDate)) {
opts.minDate = false;
}
if (!isDate(opts.maxDate)) {
opts.maxDate = false;
}
if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {
opts.maxDate = opts.minDate = false;
}
if (opts.minDate) {
this.setMinDate(opts.minDate);
}
if (opts.maxDate) {
this.setMaxDate(opts.maxDate);
}
if (isArray(opts.yearRange)) {
var fallback = new Date().getFullYear() - 10;
opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;
opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;
} else {
opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;
if (opts.yearRange > 100) {
opts.yearRange = 100;
}
}
return opts;
},
/**
* return a formatted string of the current selection (using Moment.js if available)
*/
toString: function(format)
{
format = format || this._o.format;
if (!isDate(this._d)) {
return '';
}
if (this._o.toString) {
return this._o.toString(this._d, format);
}
if (hasMoment) {
return moment(this._d).format(format);
}
return this._d.toDateString();
},
/**
* return a Moment.js object of the current selection (if available)
*/
getMoment: function()
{
return hasMoment ? moment(this._d) : null;
},
/**
* set the current selection from a Moment.js object (if available)
*/
setMoment: function(date, preventOnSelect)
{
if (hasMoment && moment.isMoment(date)) {
this.setDate(date.toDate(), preventOnSelect);
}
},
/**
* return a Date object of the current selection
*/
getDate: function()
{
return isDate(this._d) ? new Date(this._d.getTime()) : null;
},
/**
* set the current selection
*/
setDate: function(date, preventOnSelect)
{
if (!date) {
this._d = null;
if (this._o.field) {
this._o.field.value = '';
fireEvent(this._o.field, 'change', { firedBy: this });
}
return this.draw();
}
if (typeof date === 'string') {
date = new Date(Date.parse(date));
}
if (!isDate(date)) {
return;
}
var min = this._o.minDate,
max = this._o.maxDate;
if (isDate(min) && date < min) {
date = min;
} else if (isDate(max) && date > max) {
date = max;
}
this._d = new Date(date.getTime());
setToStartOfDay(this._d);
this.gotoDate(this._d);
if (this._o.field) {
this._o.field.value = this.toString();
fireEvent(this._o.field, 'change', { firedBy: this });
}
if (!preventOnSelect && typeof this._o.onSelect === 'function') {
this._o.onSelect.call(this, this.getDate());
}
},
/**
* clear and reset the date
*/
clear: function()
{
this.setDate(null);
},
/**
* change view to a specific date
*/
gotoDate: function(date)
{
var newCalendar = true;
if (!isDate(date)) {
return;
}
if (this.calendars) {
var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),
lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),
visibleDate = date.getTime();
// get the end of the month
lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);
lastVisibleDate.setDate(lastVisibleDate.getDate()-1);
newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);
}
if (newCalendar) {
this.calendars = [{
month: date.getMonth(),
year: date.getFullYear()
}];
if (this._o.mainCalendar === 'right') {
this.calendars[0].month += 1 - this._o.numberOfMonths;
}
}
this.adjustCalendars();
},
adjustDate: function(sign, days) {
var day = this.getDate() || new Date();
var difference = parseInt(days)*24*60*60*1000;
var newDay;
if (sign === 'add') {
newDay = new Date(day.valueOf() + difference);
} else if (sign === 'subtract') {
newDay = new Date(day.valueOf() - difference);
}
this.setDate(newDay);
},
adjustCalendars: function() {
this.calendars[0] = adjustCalendar(this.calendars[0]);
for (var c = 1; c < this._o.numberOfMonths; c++) {
this.calendars[c] = adjustCalendar({
month: this.calendars[0].month + c,
year: this.calendars[0].year
});
}
this.draw();
},
gotoToday: function()
{
this.gotoDate(new Date());
},
/**
* change view to a specific month (zero-index, e.g. 0: January)
*/
gotoMonth: function(month)
{
if (!isNaN(month)) {
this.calendars[0].month = parseInt(month, 10);
this.adjustCalendars();
}
},
nextMonth: function()
{
this.calendars[0].month++;
this.adjustCalendars();
},
prevMonth: function()
{
this.calendars[0].month--;
this.adjustCalendars();
},
/**
* change view to a specific full year (e.g. "2012")
*/
gotoYear: function(year)
{
if (!isNaN(year)) {
this.calendars[0].year = parseInt(year, 10);
this.adjustCalendars();
}
},
/**
* change the minDate
*/
setMinDate: function(value)
{
if(value instanceof Date) {
setToStartOfDay(value);
this._o.minDate = value;
this._o.minYear = value.getFullYear();
this._o.minMonth = value.getMonth();
} else {
this._o.minDate = defaults.minDate;
this._o.minYear = defaults.minYear;
this._o.minMonth = defaults.minMonth;
this._o.startRange = defaults.startRange;
}
this.draw();
},
/**
* change the maxDate
*/
setMaxDate: function(value)
{
if(value instanceof Date) {
setToStartOfDay(value);
this._o.maxDate = value;
this._o.maxYear = value.getFullYear();
this._o.maxMonth = value.getMonth();
} else {
this._o.maxDate = defaults.maxDate;
this._o.maxYear = defaults.maxYear;
this._o.maxMonth = defaults.maxMonth;
this._o.endRange = defaults.endRange;
}
this.draw();
},
setStartRange: function(value)
{
this._o.startRange = value;
},
setEndRange: function(value)
{
this._o.endRange = value;
},
/**
* refresh the HTML
*/
draw: function(force)
{
if (!this._v && !force) {
return;
}
var opts = this._o,
minYear = opts.minYear,
maxYear = opts.maxYear,
minMonth = opts.minMonth,
maxMonth = opts.maxMonth,
html = '',
randId;
if (this._y <= minYear) {
this._y = minYear;
if (!isNaN(minMonth) && this._m < minMonth) {
this._m = minMonth;
}
}
if (this._y >= maxYear) {
this._y = maxYear;
if (!isNaN(maxMonth) && this._m > maxMonth) {
this._m = maxMonth;
}
}
for (var c = 0; c < opts.numberOfMonths; c++) {
randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);
html += '<div class="pika-lendar">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';
}
this.el.innerHTML = html;
if (opts.bound) {
if(opts.field.type !== 'hidden') {
sto(function() {
opts.trigger.focus();
}, 1);
}
}
if (typeof this._o.onDraw === 'function') {
this._o.onDraw(this);
}
if (opts.bound) {
// let the screen reader user know to use arrow keys
opts.field.setAttribute('aria-label', opts.ariaLabel);
}
},
adjustPosition: function()
{
var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect, leftAligned, bottomAligned;
if (this._o.container) return;
this.el.style.position = 'absolute';
field = this._o.trigger;
pEl = field;
width = this.el.offsetWidth;
height = this.el.offsetHeight;
viewportWidth = window.innerWidth || document.documentElement.clientWidth;
viewportHeight = window.innerHeight || document.documentElement.clientHeight;
scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
leftAligned = true;
bottomAligned = true;
if (typeof field.getBoundingClientRect === 'function') {
clientRect = field.getBoundingClientRect();
left = clientRect.left + window.pageXOffset;
top = clientRect.bottom + window.pageYOffset;
} else {
left = pEl.offsetLeft;
top = pEl.offsetTop + pEl.offsetHeight;
while((pEl = pEl.offsetParent)) {
left += pEl.offsetLeft;
top += pEl.offsetTop;
}
}
// default position is bottom & left
if ((this._o.reposition && left + width > viewportWidth) ||
(
this._o.position.indexOf('right') > -1 &&
left - width + field.offsetWidth > 0
)
) {
left = left - width + field.offsetWidth;
leftAligned = false;
}
if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||
(
this._o.position.indexOf('top') > -1 &&
top - height - field.offsetHeight > 0
)
) {
top = top - height - field.offsetHeight;
bottomAligned = false;
}
this.el.style.left = left + 'px';
this.el.style.top = top + 'px';
addClass(this.el, leftAligned ? 'left-aligned' : 'right-aligned');
addClass(this.el, bottomAligned ? 'bottom-aligned' : 'top-aligned');
removeClass(this.el, !leftAligned ? 'left-aligned' : 'right-aligned');
removeClass(this.el, !bottomAligned ? 'bottom-aligned' : 'top-aligned');
},
/**
* render HTML for a particular month
*/
render: function(year, month, randId)
{
var opts = this._o,
now = new Date(),
days = getDaysInMonth(year, month),
before = new Date(year, month, 1).getDay(),
data = [],
row = [];
setToStartOfDay(now);
if (opts.firstDay > 0) {
before -= opts.firstDay;
if (before < 0) {
before += 7;
}
}
var previousMonth = month === 0 ? 11 : month - 1,
nextMonth = month === 11 ? 0 : month + 1,
yearOfPreviousMonth = month === 0 ? year - 1 : year,
yearOfNextMonth = month === 11 ? year + 1 : year,
daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);
var cells = days + before,
after = cells;
while(after > 7) {
after -= 7;
}
cells += 7 - after;
var isWeekSelected = false;
for (var i = 0, r = 0; i < cells; i++)
{
var day = new Date(year, month, 1 + (i - before)),
isSelected = isDate(this._d) ? compareDates(day, this._d) : false,
isToday = compareDates(day, now),
hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,
isEmpty = i < before || i >= (days + before),
dayNumber = 1 + (i - before),
monthNumber = month,
yearNumber = year,
isStartRange = opts.startRange && compareDates(opts.startRange, day),
isEndRange = opts.endRange && compareDates(opts.endRange, day),
isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,
isDisabled = (opts.minDate && day < opts.minDate) ||
(opts.maxDate && day > opts.maxDate) ||
(opts.disableWeekends && isWeekend(day)) ||
(opts.disableDayFn && opts.disableDayFn(day));
if (isEmpty) {
if (i < before) {
dayNumber = daysInPreviousMonth + dayNumber;
monthNumber = previousMonth;
yearNumber = yearOfPreviousMonth;
} else {
dayNumber = dayNumber - days;
monthNumber = nextMonth;
yearNumber = yearOfNextMonth;
}
}
var dayConfig = {
day: dayNumber,
month: monthNumber,
year: yearNumber,
hasEvent: hasEvent,
isSelected: isSelected,
isToday: isToday,
isDisabled: isDisabled,
isEmpty: isEmpty,
isStartRange: isStartRange,
isEndRange: isEndRange,
isInRange: isInRange,
showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,
enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths
};
if (opts.pickWholeWeek && isSelected) {
isWeekSelected = true;
}
row.push(renderDay(dayConfig));
if (++r === 7) {
if (opts.showWeekNumber) {
row.unshift(renderWeek(i - before, month, year, opts.firstWeekOfYearMinDays));
}
data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));
row = [];
r = 0;
isWeekSelected = false;
}
}
return renderTable(opts, data, randId);
},
isVisible: function()
{
return this._v;
},
show: function()
{
if (!this.isVisible()) {
this._v = true;
this.draw();
removeClass(this.el, 'is-hidden');
if (this._o.bound) {
addEvent(document, 'click', this._onClick);
this.adjustPosition();
}
if (typeof this._o.onOpen === 'function') {
this._o.onOpen.call(this);
}
}
},
hide: function()
{
var v = this._v;
if (v !== false) {
if (this._o.bound) {
removeEvent(document, 'click', this._onClick);
}
if (!this._o.container) {
this.el.style.position = 'static'; // reset
this.el.style.left = 'auto';
this.el.style.top = 'auto';
}
addClass(this.el, 'is-hidden');
this._v = false;
if (v !== undefined && typeof this._o.onClose === 'function') {
this._o.onClose.call(this);
}
}
},
/**
* GAME OVER
*/
destroy: function()
{
var opts = this._o;
this.hide();
removeEvent(this.el, 'mousedown', this._onMouseDown, true);
removeEvent(this.el, 'touchend', this._onMouseDown, true);
removeEvent(this.el, 'change', this._onChange);
if (opts.keyboardInput) {
removeEvent(document, 'keydown', this._onKeyChange);
}
if (opts.field) {
removeEvent(opts.field, 'change', this._onInputChange);
if (opts.bound) {
removeEvent(opts.trigger, 'click', this._onInputClick);
removeEvent(opts.trigger, 'focus', this._onInputFocus);
removeEvent(opts.trigger, 'blur', this._onInputBlur);
}
}
if (this.el.parentNode) {
this.el.parentNode.removeChild(this.el);
}
}
};
return Pikaday;
}));
/***/ }),
/* 230 */
/*!************************************!*\
!*** external "window.Autolinker" ***!
\************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.Autolinker;
/***/ }),
/* 231 */
/*!****************************!*\
!*** ./dev/Common/Mime.js ***!
\****************************/
/*! exports provided: Mime, default */
/*! exports used: Mime */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Mime; });
/* unused harmony export default */
/* eslint key-spacing: 0 */
/* eslint quote-props: 0 */
var Mime = {
'eml': 'message/rfc822',
'mime': 'message/rfc822',
'txt': 'text/plain',
'text': 'text/plain',
'def': 'text/plain',
'list': 'text/plain',
'in': 'text/plain',
'ini': 'text/plain',
'log': 'text/plain',
'sql': 'text/plain',
'cfg': 'text/plain',
'conf': 'text/plain',
'asc': 'text/plain',
'rtx': 'text/richtext',
'vcard': 'text/vcard',
'vcf': 'text/vcard',
'htm': 'text/html',
'html': 'text/html',
'csv': 'text/csv',
'ics': 'text/calendar',
'ifb': 'text/calendar',
'xml': 'text/xml',
'json': 'application/json',
'swf': 'application/x-shockwave-flash',
'hlp': 'application/winhlp',
'wgt': 'application/widget',
'chm': 'application/vnd.ms-htmlhelp',
'p10': 'application/pkcs10',
'p7c': 'application/pkcs7-mime',
'p7m': 'application/pkcs7-mime',
'p7s': 'application/pkcs7-signature',
'torrent': 'application/x-bittorrent',
// scripts
'js': 'application/javascript',
'pl': 'text/perl',
'css': 'text/css',
'asp': 'text/asp',
'php': 'application/x-httpd-php',
'php3': 'application/x-httpd-php',
'php4': 'application/x-httpd-php',
'php5': 'application/x-httpd-php',
'phtml': 'application/x-httpd-php',
// images
'png': 'image/png',
'jpg': 'image/jpeg',
'jpeg': 'image/jpeg',
'jpe': 'image/jpeg',
'jfif': 'image/jpeg',
'gif': 'image/gif',
'bmp': 'image/bmp',
'cgm': 'image/cgm',
'ief': 'image/ief',
'ico': 'image/x-icon',
'tif': 'image/tiff',
'tiff': 'image/tiff',
'svg': 'image/svg+xml',
'svgz': 'image/svg+xml',
'djv': 'image/vnd.djvu',
'djvu': 'image/vnd.djvu',
'webp': 'image/webp',
// archives
'zip': 'application/zip',
'7z': 'application/x-7z-compressed',
'rar': 'application/x-rar-compressed',
'exe': 'application/x-msdownload',
'dll': 'application/x-msdownload',
'scr': 'application/x-msdownload',
'com': 'application/x-msdownload',
'bat': 'application/x-msdownload',
'msi': 'application/x-msdownload',
'cab': 'application/vnd.ms-cab-compressed',
'gz': 'application/x-gzip',
'tgz': 'application/x-gzip',
'bz': 'application/x-bzip',
'bz2': 'application/x-bzip2',
'deb': 'application/x-debian-package',
// fonts
'psf': 'application/x-font-linux-psf',
'otf': 'application/x-font-otf',
'pcf': 'application/x-font-pcf',
'snf': 'application/x-font-snf',
'ttf': 'application/x-font-ttf',
'ttc': 'application/x-font-ttf',
// audio
'mp3': 'audio/mpeg',
'amr': 'audio/amr',
'aac': 'audio/x-aac',
'aif': 'audio/x-aiff',
'aifc': 'audio/x-aiff',
'aiff': 'audio/x-aiff',
'wav': 'audio/x-wav',
'wma': 'audio/x-ms-wma',
'wax': 'audio/x-ms-wax',
'midi': 'audio/midi',
'mp4a': 'audio/mp4',
'ogg': 'audio/ogg',
'weba': 'audio/webm',
'ra': 'audio/x-pn-realaudio',
'ram': 'audio/x-pn-realaudio',
'rmp': 'audio/x-pn-realaudio-plugin',
'm3u': 'audio/x-mpegurl',
// video
'flv': 'video/x-flv',
'qt': 'video/quicktime',
'mov': 'video/quicktime',
'wmv': 'video/windows-media',
'avi': 'video/x-msvideo',
'mpg': 'video/mpeg',
'mpeg': 'video/mpeg',
'mpe': 'video/mpeg',
'm1v': 'video/mpeg',
'm2v': 'video/mpeg',
'3gp': 'video/3gpp',
'3g2': 'video/3gpp2',
'h261': 'video/h261',
'h263': 'video/h263',
'h264': 'video/h264',
'jpgv': 'video/jpgv',
'mp4': 'video/mp4',
'mp4v': 'video/mp4',
'mpg4': 'video/mp4',
'ogv': 'video/ogg',
'webm': 'video/webm',
'm4v': 'video/x-m4v',
'asf': 'video/x-ms-asf',
'asx': 'video/x-ms-asf',
'wm': 'video/x-ms-wm',
'wmx': 'video/x-ms-wmx',
'wvx': 'video/x-ms-wvx',
'movie': 'video/x-sgi-movie',
// adobe
'pdf': 'application/pdf',
'psd': 'image/vnd.adobe.photoshop',
'ai': 'application/postscript',
'eps': 'application/postscript',
'ps': 'application/postscript',
// ms office
'doc': 'application/msword',
'dot': 'application/msword',
'rtf': 'application/rtf',
'xls': 'application/vnd.ms-excel',
'ppt': 'application/vnd.ms-powerpoint',
'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'dotx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
// open office
'odt': 'application/vnd.oasis.opendocument.text',
'ods': 'application/vnd.oasis.opendocument.spreadsheet'
};
/***/ }),
/* 232 */
/*!***********************************!*\
!*** ./dev/Stores/User/Filter.js ***!
\***********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Enums */ 0);
var FilterUserStore = function FilterUserStore() {
this.capa = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
this.modules = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable({});
this.filters = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observableArray([]);
this.filters.loading = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Magics"].Time200ms
});
this.filters.saving = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(false).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Magics"].Time200ms
});
this.raw = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable('');
};
/* harmony default export */ __webpack_exports__["a"] = (new FilterUserStore());
/***/ }),
/* 233 */
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/object-keys.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ 155);
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ 112);
// `Object.keys` method
// https://tc39.es/ecma262/#sec-object.keys
// eslint-disable-next-line es/no-object-keys -- safe
module.exports = Object.keys || function keys(O) {
return internalObjectKeys(O, enumBugKeys);
};
/***/ }),
/* 234 */
/*!**************************************************************!*\
!*** ./node_modules/core-js/internals/add-to-unscopables.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var create = __webpack_require__(/*! ../internals/object-create */ 167);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 66);
var UNSCOPABLES = wellKnownSymbol('unscopables');
var ArrayPrototype = Array.prototype;
// Array.prototype[@@unscopables]
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
if (ArrayPrototype[UNSCOPABLES] == undefined) {
definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {
configurable: true,
value: create(null)
});
}
// add a key to Array.prototype[@@unscopables]
module.exports = function (key) {
ArrayPrototype[UNSCOPABLES][key] = true;
};
/***/ }),
/* 235 */
/*!************************************************!*\
!*** ./node_modules/core-js/internals/html.js ***!
\************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 78);
module.exports = getBuiltIn('document', 'documentElement');
/***/ }),
/* 236 */
/*!***************************************************************!*\
!*** ./node_modules/core-js/internals/species-constructor.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var aFunction = __webpack_require__(/*! ../internals/a-function */ 131);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var SPECIES = wellKnownSymbol('species');
// `SpeciesConstructor` abstract operation
// https://tc39.es/ecma262/#sec-speciesconstructor
module.exports = function (O, defaultConstructor) {
var C = anObject(O).constructor;
var S;
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S);
};
/***/ }),
/* 237 */
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/define-iterator.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 65);
var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ 246);
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ 168);
var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ 215);
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ 169);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
var redefine = __webpack_require__(/*! ../internals/redefine */ 69);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 98);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 113);
var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ 184);
var IteratorPrototype = IteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR = wellKnownSymbol('iterator');
var KEYS = 'keys';
var VALUES = 'values';
var ENTRIES = 'entries';
var returnThis = function () { return this; };
module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
} return function () { return new IteratorConstructor(this); };
};
var TO_STRING_TAG = NAME + ' Iterator';
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR]
|| IterablePrototype['@@iterator']
|| DEFAULT && IterablePrototype[DEFAULT];
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
// fix native
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
} else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);
}
}
// Set @@toStringTag to native iterators
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values() { return nativeIterator.call(this); };
}
// define iterator
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);
}
Iterators[NAME] = defaultIterator;
// export additional methods
if (DEFAULT) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
redefine(IterablePrototype, KEY, methods[KEY]);
}
} else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
}
return methods;
};
/***/ }),
/* 238 */
/*!*******************************!*\
!*** ./dev/View/Popup/Ask.js ***!
\*******************************/
/*! exports provided: AskPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AskPopupView", function() { return AskPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return AskPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var AskPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__["popup"])({
name: 'View/Popup/Ask',
templateID: 'PopupsAsk'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AskPopupView, _AbstractViewNext);
function AskPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.askDesc = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.yesButton = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.noButton = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.yesFocus = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.noFocus = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.fYesAction = null;
_this.fNoAction = null;
_this.bFocusYesOnShow = true;
_this.bDisabeCloseOnEsc = true;
_this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_3__["KeyState"].PopupAsk;
return _this;
}
var _proto = AskPopupView.prototype;
_proto.clearPopup = function clearPopup() {
this.askDesc('');
this.yesButton(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_5__["i18n"])('POPUPS_ASK/BUTTON_YES'));
this.noButton(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_5__["i18n"])('POPUPS_ASK/BUTTON_NO'));
this.yesFocus(false);
this.noFocus(false);
this.fYesAction = null;
this.fNoAction = null;
};
_proto.yesClick = function yesClick() {
this.cancelCommand();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isFunc"])(this.fYesAction)) {
this.fYesAction.call(null);
}
};
_proto.noClick = function noClick() {
this.cancelCommand();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["isFunc"])(this.fNoAction)) {
this.fNoAction.call(null);
}
}
/**
* @param {string} sAskDesc
* @param {Function=} fYesFunc
* @param {Function=} fNoFunc
* @param {string=} sYesButton
* @param {string=} sNoButton
* @param {boolean=} bFocusYesOnShow = true
* @returns {void}
*/
;
_proto.onShow = function onShow(askDesc, fYesFunc, fNoFunc, yesButton, noButton, isFocusYesOnShow) {
if (fYesFunc === void 0) {
fYesFunc = null;
}
if (fNoFunc === void 0) {
fNoFunc = null;
}
if (yesButton === void 0) {
yesButton = '';
}
if (noButton === void 0) {
noButton = '';
}
if (isFocusYesOnShow === void 0) {
isFocusYesOnShow = true;
}
this.clearPopup();
this.fYesAction = fYesFunc || null;
this.fNoAction = fNoFunc || null;
this.askDesc(askDesc || '');
if (yesButton) {
this.yesButton(yesButton);
}
if (noButton) {
this.noButton(noButton);
}
this.bFocusYesOnShow = !!isFocusYesOnShow;
};
_proto.onShowWithDelay = function onShowWithDelay() {
if (this.bFocusYesOnShow) {
this.yesFocus(true);
}
};
_proto.onBuild = function onBuild() {
var _this2 = this;
key__WEBPACK_IMPORTED_MODULE_2___default()('tab, shift+tab, right, left', Common_Enums__WEBPACK_IMPORTED_MODULE_3__["KeyState"].PopupAsk, function () {
if (_this2.yesFocus()) {
_this2.noFocus(true);
} else {
_this2.yesFocus(true);
}
return false;
});
key__WEBPACK_IMPORTED_MODULE_2___default()('esc', Common_Enums__WEBPACK_IMPORTED_MODULE_3__["KeyState"].PopupAsk, function () {
_this2.noClick();
return false;
});
};
return AskPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_7__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 239 */
/*!**********************************!*\
!*** ./dev/Stores/User/Quota.js ***!
\**********************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Enums */ 0);
var QuotaUserStore = /*#__PURE__*/function () {
function QuotaUserStore() {
var _this = this;
this.quota = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(0);
this.usage = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(0);
this.percentage = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
var quota = _this.quota(),
usage = _this.usage();
return 0 < quota ? window__WEBPACK_IMPORTED_MODULE_0___default.a.Math.ceil(usage / quota * 100) : 0;
});
}
/**
* @param {number} quota
* @param {number} usage
*/
var _proto = QuotaUserStore.prototype;
_proto.populateData = function populateData(quota, usage) {
this.quota(quota * Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Magics"].BitLength1024);
this.usage(usage * Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Magics"].BitLength1024);
};
return QuotaUserStore;
}();
/* harmony default export */ __webpack_exports__["a"] = (new QuotaUserStore());
/***/ }),
/* 240 */
/*!***********************************!*\
!*** external "window.ifvisible" ***!
\***********************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.ifvisible;
/***/ }),
/* 241 */
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/object-define-properties.js ***!
\********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 55);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 66);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var objectKeys = __webpack_require__(/*! ../internals/object-keys */ 233);
// `Object.defineProperties` method
// https://tc39.es/ecma262/#sec-object.defineproperties
// eslint-disable-next-line es/no-object-defineproperties -- safe
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = objectKeys(Properties);
var length = keys.length;
var index = 0;
var key;
while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
return O;
};
/***/ }),
/* 242 */
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-regexp.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 49);
var classof = __webpack_require__(/*! ../internals/classof-raw */ 74);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var MATCH = wellKnownSymbol('match');
// `IsRegExp` abstract operation
// https://tc39.es/ecma262/#sec-isregexp
module.exports = function (it) {
var isRegExp;
return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');
};
/***/ }),
/* 243 */
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!
\********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 37);
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
// eslint-disable-next-line es/no-object-getprototypeof -- required for testing
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/* 244 */
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/a-possible-prototype.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 49);
module.exports = function (it) {
if (!isObject(it) && it !== null) {
throw TypeError("Can't set " + String(it) + ' as a prototype');
} return it;
};
/***/ }),
/* 245 */,
/* 246 */
/*!***********************************************************************!*\
!*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!
\***********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ 184).IteratorPrototype;
var create = __webpack_require__(/*! ../internals/object-create */ 167);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 95);
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ 169);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 113);
var returnThis = function () { return this; };
module.exports = function (IteratorConstructor, NAME, next) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
Iterators[TO_STRING_TAG] = returnThis;
return IteratorConstructor;
};
/***/ }),
/* 247 */
/*!**********************************************************************!*\
!*** ./node_modules/core-js/modules/web.dom-collections.iterator.js ***!
\**********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 30);
var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ 218);
var ArrayIteratorMethods = __webpack_require__(/*! ../modules/es.array.iterator */ 219);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 47);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var ITERATOR = wellKnownSymbol('iterator');
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var ArrayValues = ArrayIteratorMethods.values;
for (var COLLECTION_NAME in DOMIterables) {
var Collection = global[COLLECTION_NAME];
var CollectionPrototype = Collection && Collection.prototype;
if (CollectionPrototype) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype[ITERATOR] !== ArrayValues) try {
createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);
} catch (error) {
CollectionPrototype[ITERATOR] = ArrayValues;
}
if (!CollectionPrototype[TO_STRING_TAG]) {
createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);
}
if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {
// some Chrome versions have non-configurable methods on DOMTokenList
if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {
createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);
} catch (error) {
CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];
}
}
}
}
/***/ }),
/* 248 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/stable/set-timeout.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../modules/web.timers */ 185);
var path = __webpack_require__(/*! ../internals/path */ 51);
module.exports = path.setTimeout;
/***/ }),
/* 249 */
/*!******************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-property-is-enumerable.js ***!
\******************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : nativePropertyIsEnumerable;
/***/ }),
/* 250 */,
/* 251 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/stable/promise/index.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/promise */ 252);
module.exports = parent;
/***/ }),
/* 252 */
/*!*******************************************************!*\
!*** ./node_modules/core-js-pure/es/promise/index.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.aggregate-error */ 253);
__webpack_require__(/*! ../../modules/es.object.to-string */ 264);
__webpack_require__(/*! ../../modules/es.promise */ 265);
__webpack_require__(/*! ../../modules/es.promise.all-settled */ 275);
__webpack_require__(/*! ../../modules/es.promise.any */ 276);
__webpack_require__(/*! ../../modules/es.promise.finally */ 277);
__webpack_require__(/*! ../../modules/es.string.iterator */ 278);
__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ 161);
var path = __webpack_require__(/*! ../../internals/path */ 51);
module.exports = path.Promise;
/***/ }),
/* 253 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.aggregate-error.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ 139);
var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ 159);
var create = __webpack_require__(/*! ../internals/object-create */ 160);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 90);
var iterate = __webpack_require__(/*! ../internals/iterate */ 107);
var $AggregateError = function AggregateError(errors, message) {
var that = this;
if (!(that instanceof $AggregateError)) return new $AggregateError(errors, message);
if (setPrototypeOf) {
// eslint-disable-next-line unicorn/error-message
that = setPrototypeOf(new Error(undefined), getPrototypeOf(that));
}
if (message !== undefined) createNonEnumerableProperty(that, 'message', String(message));
var errorsArray = [];
iterate(errors, errorsArray.push, { that: errorsArray });
createNonEnumerableProperty(that, 'errors', errorsArray);
return that;
};
$AggregateError.prototype = create(Error.prototype, {
constructor: createPropertyDescriptor(5, $AggregateError),
message: createPropertyDescriptor(5, ''),
name: createPropertyDescriptor(5, 'AggregateError')
});
// `AggregateError` constructor
// https://tc39.es/ecma262/#sec-aggregate-error-constructor
$({ global: true }, {
AggregateError: $AggregateError
});
/***/ }),
/* 254 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/internals/set-global.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ 52);
module.exports = function (key, value) {
try {
createNonEnumerableProperty(global, key, value);
} catch (error) {
global[key] = value;
} return value;
};
/***/ }),
/* 255 */
/*!*************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/correct-prototype-getter.js ***!
\*************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 43);
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/* 256 */
/*!*********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/a-possible-prototype.js ***!
\*********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
module.exports = function (it) {
if (!isObject(it) && it !== null) {
throw TypeError("Can't set " + String(it) + ' as a prototype');
} return it;
};
/***/ }),
/* 257 */
/*!*************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-define-properties.js ***!
\*************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 81);
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
var objectKeys = __webpack_require__(/*! ../internals/object-keys */ 220);
// `Object.defineProperties` method
// https://tc39.es/ecma262/#sec-object.defineproperties
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = objectKeys(Properties);
var length = keys.length;
var index = 0;
var key;
while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);
return O;
};
/***/ }),
/* 258 */
/*!*********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-keys-internal.js ***!
\*********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ 54);
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 80);
var indexOf = __webpack_require__(/*! ../internals/array-includes */ 259).indexOf;
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ 143);
module.exports = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~indexOf(result, key) || result.push(key);
}
return result;
};
/***/ }),
/* 259 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-includes.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 80);
var toLength = __webpack_require__(/*! ../internals/to-length */ 91);
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ 221);
// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) {
if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
module.exports = {
// `Array.prototype.includes` method
// https://tc39.es/ecma262/#sec-array.prototype.includes
includes: createMethod(true),
// `Array.prototype.indexOf` method
// https://tc39.es/ecma262/#sec-array.prototype.indexof
indexOf: createMethod(false)
};
/***/ }),
/* 260 */
/*!*************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/is-array-iterator-method.js ***!
\*************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 76);
var ITERATOR = wellKnownSymbol('iterator');
var ArrayPrototype = Array.prototype;
// check on default Array iterator
module.exports = function (it) {
return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
};
/***/ }),
/* 261 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/use-symbol-as-uid.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ 192);
module.exports = NATIVE_SYMBOL
// eslint-disable-next-line no-undef
&& !Symbol.sham
// eslint-disable-next-line no-undef
&& typeof Symbol.iterator == 'symbol';
/***/ }),
/* 262 */
/*!********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/get-iterator-method.js ***!
\********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(/*! ../internals/classof */ 92);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 76);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var ITERATOR = wellKnownSymbol('iterator');
module.exports = function (it) {
if (it != undefined) return it[ITERATOR]
|| it['@@iterator']
|| Iterators[classof(it)];
};
/***/ }),
/* 263 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/iterator-close.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ 58);
module.exports = function (iterator) {
var returnMethod = iterator['return'];
if (returnMethod !== undefined) {
return anObject(returnMethod.call(iterator)).value;
}
};
/***/ }),
/* 264 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.object.to-string.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// empty
/***/ }),
/* 265 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.promise.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 86);
var global = __webpack_require__(/*! ../internals/global */ 31);
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 75);
var NativePromise = __webpack_require__(/*! ../internals/native-promise-constructor */ 193);
var redefine = __webpack_require__(/*! ../internals/redefine */ 108);
var redefineAll = __webpack_require__(/*! ../internals/redefine-all */ 266);
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ 145);
var setSpecies = __webpack_require__(/*! ../internals/set-species */ 268);
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
var aFunction = __webpack_require__(/*! ../internals/a-function */ 70);
var anInstance = __webpack_require__(/*! ../internals/an-instance */ 269);
var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ 194);
var iterate = __webpack_require__(/*! ../internals/iterate */ 107);
var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ 270);
var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ 195);
var task = __webpack_require__(/*! ../internals/task */ 196).set;
var microtask = __webpack_require__(/*! ../internals/microtask */ 271);
var promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ 198);
var hostReportErrors = __webpack_require__(/*! ../internals/host-report-errors */ 273);
var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ 109);
var perform = __webpack_require__(/*! ../internals/perform */ 146);
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ 147);
var isForced = __webpack_require__(/*! ../internals/is-forced */ 187);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ 118);
var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ 148);
var SPECIES = wellKnownSymbol('species');
var PROMISE = 'Promise';
var getInternalState = InternalStateModule.get;
var setInternalState = InternalStateModule.set;
var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
var PromiseConstructor = NativePromise;
var TypeError = global.TypeError;
var document = global.document;
var process = global.process;
var $fetch = getBuiltIn('fetch');
var newPromiseCapability = newPromiseCapabilityModule.f;
var newGenericPromiseCapability = newPromiseCapability;
var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
var NATIVE_REJECTION_EVENT = typeof PromiseRejectionEvent == 'function';
var UNHANDLED_REJECTION = 'unhandledrejection';
var REJECTION_HANDLED = 'rejectionhandled';
var PENDING = 0;
var FULFILLED = 1;
var REJECTED = 2;
var HANDLED = 1;
var UNHANDLED = 2;
var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
var FORCED = isForced(PROMISE, function () {
var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);
if (!GLOBAL_CORE_JS_PROMISE) {
// V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
// https://bugs.chromium.org/p/chromium/issues/detail?id=830565
// We can't detect it synchronously, so just check versions
if (V8_VERSION === 66) return true;
// Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
if (!IS_NODE && !NATIVE_REJECTION_EVENT) return true;
}
// We need Promise#finally in the pure version for preventing prototype pollution
if (IS_PURE && !PromiseConstructor.prototype['finally']) return true;
// We can't use @@species feature detection in V8 since it causes
// deoptimization and performance degradation
// https://github.com/zloirock/core-js/issues/679
if (V8_VERSION >= 51 && /native code/.test(PromiseConstructor)) return false;
// Detect correctness of subclassing with @@species support
var promise = PromiseConstructor.resolve(1);
var FakePromise = function (exec) {
exec(function () { /* empty */ }, function () { /* empty */ });
};
var constructor = promise.constructor = {};
constructor[SPECIES] = FakePromise;
return !(promise.then(function () { /* empty */ }) instanceof FakePromise);
});
var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {
PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });
});
// helpers
var isThenable = function (it) {
var then;
return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
};
var notify = function (state, isReject) {
if (state.notified) return;
state.notified = true;
var chain = state.reactions;
microtask(function () {
var value = state.value;
var ok = state.state == FULFILLED;
var index = 0;
// variable length - can't use forEach
while (chain.length > index) {
var reaction = chain[index++];
var handler = ok ? reaction.ok : reaction.fail;
var resolve = reaction.resolve;
var reject = reaction.reject;
var domain = reaction.domain;
var result, then, exited;
try {
if (handler) {
if (!ok) {
if (state.rejection === UNHANDLED) onHandleUnhandled(state);
state.rejection = HANDLED;
}
if (handler === true) result = value;
else {
if (domain) domain.enter();
result = handler(value); // can throw
if (domain) {
domain.exit();
exited = true;
}
}
if (result === reaction.promise) {
reject(TypeError('Promise-chain cycle'));
} else if (then = isThenable(result)) {
then.call(result, resolve, reject);
} else resolve(result);
} else reject(value);
} catch (error) {
if (domain && !exited) domain.exit();
reject(error);
}
}
state.reactions = [];
state.notified = false;
if (isReject && !state.rejection) onUnhandled(state);
});
};
var dispatchEvent = function (name, promise, reason) {
var event, handler;
if (DISPATCH_EVENT) {
event = document.createEvent('Event');
event.promise = promise;
event.reason = reason;
event.initEvent(name, false, true);
global.dispatchEvent(event);
} else event = { promise: promise, reason: reason };
if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);
else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);
};
var onUnhandled = function (state) {
task.call(global, function () {
var promise = state.facade;
var value = state.value;
var IS_UNHANDLED = isUnhandled(state);
var result;
if (IS_UNHANDLED) {
result = perform(function () {
if (IS_NODE) {
process.emit('unhandledRejection', value, promise);
} else dispatchEvent(UNHANDLED_REJECTION, promise, value);
});
// Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;
if (result.error) throw result.value;
}
});
};
var isUnhandled = function (state) {
return state.rejection !== HANDLED && !state.parent;
};
var onHandleUnhandled = function (state) {
task.call(global, function () {
var promise = state.facade;
if (IS_NODE) {
process.emit('rejectionHandled', promise);
} else dispatchEvent(REJECTION_HANDLED, promise, state.value);
});
};
var bind = function (fn, state, unwrap) {
return function (value) {
fn(state, value, unwrap);
};
};
var internalReject = function (state, value, unwrap) {
if (state.done) return;
state.done = true;
if (unwrap) state = unwrap;
state.value = value;
state.state = REJECTED;
notify(state, true);
};
var internalResolve = function (state, value, unwrap) {
if (state.done) return;
state.done = true;
if (unwrap) state = unwrap;
try {
if (state.facade === value) throw TypeError("Promise can't be resolved itself");
var then = isThenable(value);
if (then) {
microtask(function () {
var wrapper = { done: false };
try {
then.call(value,
bind(internalResolve, wrapper, state),
bind(internalReject, wrapper, state)
);
} catch (error) {
internalReject(wrapper, error, state);
}
});
} else {
state.value = value;
state.state = FULFILLED;
notify(state, false);
}
} catch (error) {
internalReject({ done: false }, error, state);
}
};
// constructor polyfill
if (FORCED) {
// 25.4.3.1 Promise(executor)
PromiseConstructor = function Promise(executor) {
anInstance(this, PromiseConstructor, PROMISE);
aFunction(executor);
Internal.call(this);
var state = getInternalState(this);
try {
executor(bind(internalResolve, state), bind(internalReject, state));
} catch (error) {
internalReject(state, error);
}
};
// eslint-disable-next-line no-unused-vars
Internal = function Promise(executor) {
setInternalState(this, {
type: PROMISE,
done: false,
notified: false,
parent: false,
reactions: [],
rejection: false,
state: PENDING,
value: undefined
});
};
Internal.prototype = redefineAll(PromiseConstructor.prototype, {
// `Promise.prototype.then` method
// https://tc39.es/ecma262/#sec-promise.prototype.then
then: function then(onFulfilled, onRejected) {
var state = getInternalPromiseState(this);
var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
reaction.fail = typeof onRejected == 'function' && onRejected;
reaction.domain = IS_NODE ? process.domain : undefined;
state.parent = true;
state.reactions.push(reaction);
if (state.state != PENDING) notify(state, false);
return reaction.promise;
},
// `Promise.prototype.catch` method
// https://tc39.es/ecma262/#sec-promise.prototype.catch
'catch': function (onRejected) {
return this.then(undefined, onRejected);
}
});
OwnPromiseCapability = function () {
var promise = new Internal();
var state = getInternalState(promise);
this.promise = promise;
this.resolve = bind(internalResolve, state);
this.reject = bind(internalReject, state);
};
newPromiseCapabilityModule.f = newPromiseCapability = function (C) {
return C === PromiseConstructor || C === PromiseWrapper
? new OwnPromiseCapability(C)
: newGenericPromiseCapability(C);
};
if (!IS_PURE && typeof NativePromise == 'function') {
nativeThen = NativePromise.prototype.then;
// wrap native Promise#then for native async functions
redefine(NativePromise.prototype, 'then', function then(onFulfilled, onRejected) {
var that = this;
return new PromiseConstructor(function (resolve, reject) {
nativeThen.call(that, resolve, reject);
}).then(onFulfilled, onRejected);
// https://github.com/zloirock/core-js/issues/640
}, { unsafe: true });
// wrap fetch result
if (typeof $fetch == 'function') $({ global: true, enumerable: true, forced: true }, {
// eslint-disable-next-line no-unused-vars
fetch: function fetch(input /* , init */) {
return promiseResolve(PromiseConstructor, $fetch.apply(global, arguments));
}
});
}
}
$({ global: true, wrap: true, forced: FORCED }, {
Promise: PromiseConstructor
});
setToStringTag(PromiseConstructor, PROMISE, false, true);
setSpecies(PROMISE);
PromiseWrapper = getBuiltIn(PROMISE);
// statics
$({ target: PROMISE, stat: true, forced: FORCED }, {
// `Promise.reject` method
// https://tc39.es/ecma262/#sec-promise.reject
reject: function reject(r) {
var capability = newPromiseCapability(this);
capability.reject.call(undefined, r);
return capability.promise;
}
});
$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {
// `Promise.resolve` method
// https://tc39.es/ecma262/#sec-promise.resolve
resolve: function resolve(x) {
return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);
}
});
$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
// `Promise.all` method
// https://tc39.es/ecma262/#sec-promise.all
all: function all(iterable) {
var C = this;
var capability = newPromiseCapability(C);
var resolve = capability.resolve;
var reject = capability.reject;
var result = perform(function () {
var $promiseResolve = aFunction(C.resolve);
var values = [];
var counter = 0;
var remaining = 1;
iterate(iterable, function (promise) {
var index = counter++;
var alreadyCalled = false;
values.push(undefined);
remaining++;
$promiseResolve.call(C, promise).then(function (value) {
if (alreadyCalled) return;
alreadyCalled = true;
values[index] = value;
--remaining || resolve(values);
}, reject);
});
--remaining || resolve(values);
});
if (result.error) reject(result.value);
return capability.promise;
},
// `Promise.race` method
// https://tc39.es/ecma262/#sec-promise.race
race: function race(iterable) {
var C = this;
var capability = newPromiseCapability(C);
var reject = capability.reject;
var result = perform(function () {
var $promiseResolve = aFunction(C.resolve);
iterate(iterable, function (promise) {
$promiseResolve.call(C, promise).then(capability.resolve, reject);
});
});
if (result.error) reject(result.value);
return capability.promise;
}
});
/***/ }),
/* 266 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/internals/redefine-all.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var redefine = __webpack_require__(/*! ../internals/redefine */ 108);
module.exports = function (target, src, options) {
for (var key in src) {
if (options && options.unsafe && target[key]) target[key] = src[key];
else redefine(target, key, src[key], options);
} return target;
};
/***/ }),
/* 267 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js-pure/internals/object-to-string.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ 144);
var classof = __webpack_require__(/*! ../internals/classof */ 92);
// `Object.prototype.toString` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.tostring
module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
return '[object ' + classof(this) + ']';
};
/***/ }),
/* 268 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/set-species.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 75);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 81);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var SPECIES = wellKnownSymbol('species');
module.exports = function (CONSTRUCTOR_NAME) {
var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
var defineProperty = definePropertyModule.f;
if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {
defineProperty(Constructor, SPECIES, {
configurable: true,
get: function () { return this; }
});
}
};
/***/ }),
/* 269 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/an-instance.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
module.exports = function (it, Constructor, name) {
if (!(it instanceof Constructor)) {
throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');
} return it;
};
/***/ }),
/* 270 */
/*!*******************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/check-correctness-of-iteration.js ***!
\*******************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var ITERATOR = wellKnownSymbol('iterator');
var SAFE_CLOSING = false;
try {
var called = 0;
var iteratorWithReturn = {
next: function () {
return { done: !!called++ };
},
'return': function () {
SAFE_CLOSING = true;
}
};
iteratorWithReturn[ITERATOR] = function () {
return this;
};
// eslint-disable-next-line no-throw-literal
Array.from(iteratorWithReturn, function () { throw 2; });
} catch (error) { /* empty */ }
module.exports = function (exec, SKIP_CLOSING) {
if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
var ITERATION_SUPPORT = false;
try {
var object = {};
object[ITERATOR] = function () {
return {
next: function () {
return { done: ITERATION_SUPPORT = true };
}
};
};
exec(object);
} catch (error) { /* empty */ }
return ITERATION_SUPPORT;
};
/***/ }),
/* 271 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/internals/microtask.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ 157).f;
var macrotask = __webpack_require__(/*! ../internals/task */ 196).set;
var IS_IOS = __webpack_require__(/*! ../internals/engine-is-ios */ 197);
var IS_WEBOS_WEBKIT = __webpack_require__(/*! ../internals/engine-is-webos-webkit */ 272);
var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ 118);
var MutationObserver = global.MutationObserver || global.WebKitMutationObserver;
var document = global.document;
var process = global.process;
var Promise = global.Promise;
// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
var queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');
var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;
var flush, head, last, notify, toggle, node, promise, then;
// modern engines have queueMicrotask method
if (!queueMicrotask) {
flush = function () {
var parent, fn;
if (IS_NODE && (parent = process.domain)) parent.exit();
while (head) {
fn = head.fn;
head = head.next;
try {
fn();
} catch (error) {
if (head) notify();
else last = undefined;
throw error;
}
} last = undefined;
if (parent) parent.enter();
};
// browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
// also except WebOS Webkit https://github.com/zloirock/core-js/issues/898
if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {
toggle = true;
node = document.createTextNode('');
new MutationObserver(flush).observe(node, { characterData: true });
notify = function () {
node.data = toggle = !toggle;
};
// environments with maybe non-completely correct, but existent Promise
} else if (Promise && Promise.resolve) {
// Promise.resolve without an argument throws an error in LG WebOS 2
promise = Promise.resolve(undefined);
then = promise.then;
notify = function () {
then.call(promise, flush);
};
// Node.js without promises
} else if (IS_NODE) {
notify = function () {
process.nextTick(flush);
};
// for other environments - macrotask based on:
// - setImmediate
// - MessageChannel
// - window.postMessag
// - onreadystatechange
// - setTimeout
} else {
notify = function () {
// strange IE + webpack dev server bug - use .call(global)
macrotask.call(global, flush);
};
}
}
module.exports = queueMicrotask || function (fn) {
var task = { fn: fn, next: undefined };
if (last) last.next = task;
if (!head) {
head = task;
notify();
} last = task;
};
/***/ }),
/* 272 */
/*!***********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/engine-is-webos-webkit.js ***!
\***********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var userAgent = __webpack_require__(/*! ../internals/engine-user-agent */ 106);
module.exports = /web0s(?!.*chrome)/i.test(userAgent);
/***/ }),
/* 273 */
/*!*******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/host-report-errors.js ***!
\*******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
module.exports = function (a, b) {
var console = global.console;
if (console && console.error) {
arguments.length === 1 ? console.error(a) : console.error(a, b);
}
};
/***/ }),
/* 274 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/internals/native-weak-map.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ 31);
var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ 194);
var WeakMap = global.WeakMap;
module.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));
/***/ }),
/* 275 */
/*!*********************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.promise.all-settled.js ***!
\*********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var aFunction = __webpack_require__(/*! ../internals/a-function */ 70);
var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ 109);
var perform = __webpack_require__(/*! ../internals/perform */ 146);
var iterate = __webpack_require__(/*! ../internals/iterate */ 107);
// `Promise.allSettled` method
// https://tc39.es/ecma262/#sec-promise.allsettled
$({ target: 'Promise', stat: true }, {
allSettled: function allSettled(iterable) {
var C = this;
var capability = newPromiseCapabilityModule.f(C);
var resolve = capability.resolve;
var reject = capability.reject;
var result = perform(function () {
var promiseResolve = aFunction(C.resolve);
var values = [];
var counter = 0;
var remaining = 1;
iterate(iterable, function (promise) {
var index = counter++;
var alreadyCalled = false;
values.push(undefined);
remaining++;
promiseResolve.call(C, promise).then(function (value) {
if (alreadyCalled) return;
alreadyCalled = true;
values[index] = { status: 'fulfilled', value: value };
--remaining || resolve(values);
}, function (error) {
if (alreadyCalled) return;
alreadyCalled = true;
values[index] = { status: 'rejected', reason: error };
--remaining || resolve(values);
});
});
--remaining || resolve(values);
});
if (result.error) reject(result.value);
return capability.promise;
}
});
/***/ }),
/* 276 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.promise.any.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var aFunction = __webpack_require__(/*! ../internals/a-function */ 70);
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 75);
var newPromiseCapabilityModule = __webpack_require__(/*! ../internals/new-promise-capability */ 109);
var perform = __webpack_require__(/*! ../internals/perform */ 146);
var iterate = __webpack_require__(/*! ../internals/iterate */ 107);
var PROMISE_ANY_ERROR = 'No one promise resolved';
// `Promise.any` method
// https://tc39.es/ecma262/#sec-promise.any
$({ target: 'Promise', stat: true }, {
any: function any(iterable) {
var C = this;
var capability = newPromiseCapabilityModule.f(C);
var resolve = capability.resolve;
var reject = capability.reject;
var result = perform(function () {
var promiseResolve = aFunction(C.resolve);
var errors = [];
var counter = 0;
var remaining = 1;
var alreadyResolved = false;
iterate(iterable, function (promise) {
var index = counter++;
var alreadyRejected = false;
errors.push(undefined);
remaining++;
promiseResolve.call(C, promise).then(function (value) {
if (alreadyRejected || alreadyResolved) return;
alreadyResolved = true;
resolve(value);
}, function (error) {
if (alreadyRejected || alreadyResolved) return;
alreadyRejected = true;
errors[index] = error;
--remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
});
});
--remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
});
if (result.error) reject(result.value);
return capability.promise;
}
});
/***/ }),
/* 277 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.promise.finally.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ 86);
var NativePromise = __webpack_require__(/*! ../internals/native-promise-constructor */ 193);
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ 75);
var speciesConstructor = __webpack_require__(/*! ../internals/species-constructor */ 195);
var promiseResolve = __webpack_require__(/*! ../internals/promise-resolve */ 198);
var redefine = __webpack_require__(/*! ../internals/redefine */ 108);
// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
var NON_GENERIC = !!NativePromise && fails(function () {
NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });
});
// `Promise.prototype.finally` method
// https://tc39.es/ecma262/#sec-promise.prototype.finally
$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
'finally': function (onFinally) {
var C = speciesConstructor(this, getBuiltIn('Promise'));
var isFunction = typeof onFinally == 'function';
return this.then(
isFunction ? function (x) {
return promiseResolve(C, onFinally()).then(function () { return x; });
} : onFinally,
isFunction ? function (e) {
return promiseResolve(C, onFinally()).then(function () { throw e; });
} : onFinally
);
}
});
// patch native Promise.prototype for native async functions
if (!IS_PURE && typeof NativePromise == 'function' && !NativePromise.prototype['finally']) {
redefine(NativePromise.prototype, 'finally', getBuiltIn('Promise').prototype['finally']);
}
/***/ }),
/* 278 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.string.iterator.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var charAt = __webpack_require__(/*! ../internals/string-multibyte */ 279).charAt;
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ 147);
var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ 199);
var STRING_ITERATOR = 'String Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
// `String.prototype[@@iterator]` method
// https://tc39.es/ecma262/#sec-string.prototype-@@iterator
defineIterator(String, 'String', function (iterated) {
setInternalState(this, {
type: STRING_ITERATOR,
string: String(iterated),
index: 0
});
// `%StringIteratorPrototype%.next` method
// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next
}, function next() {
var state = getInternalState(this);
var string = state.string;
var index = state.index;
var point;
if (index >= string.length) return { value: undefined, done: true };
point = charAt(string, index);
state.index += point.length;
return { value: point, done: false };
});
/***/ }),
/* 279 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js-pure/internals/string-multibyte.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ 142);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 115);
// `String.prototype.{ codePointAt, at }` methods implementation
var createMethod = function (CONVERT_TO_STRING) {
return function ($this, pos) {
var S = String(requireObjectCoercible($this));
var position = toInteger(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = S.charCodeAt(position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING ? S.charAt(position) : first
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
};
module.exports = {
// `String.prototype.codePointAt` method
// https://tc39.es/ecma262/#sec-string.prototype.codepointat
codeAt: createMethod(false),
// `String.prototype.at` method
// https://github.com/mathiasbynens/String.prototype.at
charAt: createMethod(true)
};
/***/ }),
/* 280 */
/*!****************************************************************************!*\
!*** ./node_modules/core-js-pure/internals/create-iterator-constructor.js ***!
\****************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ 200).IteratorPrototype;
var create = __webpack_require__(/*! ../internals/object-create */ 160);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 90);
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ 145);
var Iterators = __webpack_require__(/*! ../internals/iterators */ 76);
var returnThis = function () { return this; };
module.exports = function (IteratorConstructor, NAME, next) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
Iterators[TO_STRING_TAG] = returnThis;
return IteratorConstructor;
};
/***/ }),
/* 281 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/internals/dom-iterables.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// iterable DOM collections
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
module.exports = {
CSSRuleList: 0,
CSSStyleDeclaration: 0,
CSSValueList: 0,
ClientRectList: 0,
DOMRectList: 0,
DOMStringList: 0,
DOMTokenList: 1,
DataTransferItemList: 0,
FileList: 0,
HTMLAllCollection: 0,
HTMLCollection: 0,
HTMLFormElement: 0,
HTMLSelectElement: 0,
MediaList: 0,
MimeTypeArray: 0,
NamedNodeMap: 0,
NodeList: 1,
PaintRequestList: 0,
Plugin: 0,
PluginArray: 0,
SVGLengthList: 0,
SVGNumberList: 0,
SVGPathSegList: 0,
SVGPointList: 0,
SVGStringList: 0,
SVGTransformList: 0,
SourceBufferList: 0,
StyleSheetList: 0,
TextTrackCueList: 0,
TextTrackList: 0,
TouchList: 0
};
/***/ }),
/* 282 */
/*!************************************************************!*\
!*** ./node_modules/core-js/internals/get-substitution.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var toObject = __webpack_require__(/*! ../internals/to-object */ 89);
var floor = Math.floor;
var replace = ''.replace;
var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
// https://tc39.es/ecma262/#sec-getsubstitution
module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
var tailPos = position + matched.length;
var m = captures.length;
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
if (namedCaptures !== undefined) {
namedCaptures = toObject(namedCaptures);
symbols = SUBSTITUTION_SYMBOLS;
}
return replace.call(replacement, symbols, function (match, ch) {
var capture;
switch (ch.charAt(0)) {
case '$': return '$';
case '&': return matched;
case '`': return str.slice(0, position);
case "'": return str.slice(tailPos);
case '<':
capture = namedCaptures[ch.slice(1, -1)];
break;
default: // \d\d?
var n = +ch;
if (n === 0) return match;
if (n > m) {
var f = floor(n / 10);
if (f === 0) return match;
if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
return match;
}
capture = captures[n - 1];
}
return capture === undefined ? '' : capture;
});
};
/***/ }),
/* 283 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/stable/set-interval.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../modules/web.timers */ 185);
var path = __webpack_require__(/*! ../internals/path */ 51);
module.exports = path.setInterval;
/***/ }),
/* 284 */
/*!******************************************************************!*\
!*** ./node_modules/core-js/internals/array-method-is-strict.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__(/*! ../internals/fails */ 37);
module.exports = function (METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !!method && fails(function () {
// eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
method.call(null, argument || function () { throw 1; }, 1);
});
};
/***/ }),
/* 285 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/whitespaces.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// a string of all valid unicode whitespaces
// eslint-disable-next-line max-len
module.exports = '\u0009\u000A\u000B\u000C\u000D\u0020\u00A0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
/***/ }),
/* 286 */
/*!*********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-species-create.js ***!
\*********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
var isArray = __webpack_require__(/*! ../internals/is-array */ 173);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var SPECIES = wellKnownSymbol('species');
// `ArraySpeciesCreate` abstract operation
// https://tc39.es/ecma262/#sec-arrayspeciescreate
module.exports = function (originalArray, length) {
var C;
if (isArray(originalArray)) {
C = originalArray.constructor;
// cross-realm fallback
if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
else if (isObject(C)) {
C = C[SPECIES];
if (C === null) C = undefined;
}
} return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
};
/***/ }),
/* 287 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/internals/create-property.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ 158);
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ 81);
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ 90);
module.exports = function (object, key, value) {
var propertyKey = toPrimitive(key);
if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
else object[propertyKey] = value;
};
/***/ }),
/* 288 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/reduce.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var reduce = __webpack_require__(/*! ../array/virtual/reduce */ 345);
var ArrayPrototype = Array.prototype;
module.exports = function (it) {
var own = it.reduce;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reduce) ? reduce : own;
};
/***/ }),
/* 289 */
/*!***********************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-method-is-strict.js ***!
\***********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fails = __webpack_require__(/*! ../internals/fails */ 43);
module.exports = function (METHOD_NAME, argument) {
var method = [][METHOD_NAME];
return !!method && fails(function () {
// eslint-disable-next-line no-useless-call,no-throw-literal
method.call(null, argument || function () { throw 1; }, 1);
});
};
/***/ }),
/* 290 */
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/array-iteration.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var bind = __webpack_require__(/*! ../internals/function-bind-context */ 214);
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ 128);
var toObject = __webpack_require__(/*! ../internals/to-object */ 89);
var toLength = __webpack_require__(/*! ../internals/to-length */ 84);
var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ 352);
var push = [].push;
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation
var createMethod = function (TYPE) {
var IS_MAP = TYPE == 1;
var IS_FILTER = TYPE == 2;
var IS_SOME = TYPE == 3;
var IS_EVERY = TYPE == 4;
var IS_FIND_INDEX = TYPE == 6;
var IS_FILTER_OUT = TYPE == 7;
var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
return function ($this, callbackfn, that, specificCreate) {
var O = toObject($this);
var self = IndexedObject(O);
var boundFunction = bind(callbackfn, that, 3);
var length = toLength(self.length);
var index = 0;
var create = specificCreate || arraySpeciesCreate;
var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;
var value, result;
for (;length > index; index++) if (NO_HOLES || index in self) {
value = self[index];
result = boundFunction(value, index, O);
if (TYPE) {
if (IS_MAP) target[index] = result; // map
else if (result) switch (TYPE) {
case 3: return true; // some
case 5: return value; // find
case 6: return index; // findIndex
case 2: push.call(target, value); // filter
} else switch (TYPE) {
case 4: return false; // every
case 7: push.call(target, value); // filterOut
}
}
}
return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
};
};
module.exports = {
// `Array.prototype.forEach` method
// https://tc39.es/ecma262/#sec-array.prototype.foreach
forEach: createMethod(0),
// `Array.prototype.map` method
// https://tc39.es/ecma262/#sec-array.prototype.map
map: createMethod(1),
// `Array.prototype.filter` method
// https://tc39.es/ecma262/#sec-array.prototype.filter
filter: createMethod(2),
// `Array.prototype.some` method
// https://tc39.es/ecma262/#sec-array.prototype.some
some: createMethod(3),
// `Array.prototype.every` method
// https://tc39.es/ecma262/#sec-array.prototype.every
every: createMethod(4),
// `Array.prototype.find` method
// https://tc39.es/ecma262/#sec-array.prototype.find
find: createMethod(5),
// `Array.prototype.findIndex` method
// https://tc39.es/ecma262/#sec-array.prototype.findIndex
findIndex: createMethod(6),
// `Array.prototype.filterOut` method
// https://github.com/tc39/proposal-array-filtering
filterOut: createMethod(7)
};
/***/ }),
/* 291 */
/*!*************************************!*\
!*** ./dev/View/Popup/Languages.js ***!
\*************************************/
/*! exports provided: LanguagesPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LanguagesPopupView", function() { return LanguagesPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return LanguagesPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
// import {view, ViewType} from 'Knoin/Knoin';
var LanguagesPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_5__["popup"])({
name: 'View/Popup/Languages',
templateID: 'PopupsLanguages'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(LanguagesPopupView, _AbstractViewNext);
function LanguagesPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.fLang = null;
_this.userLanguage = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.langs = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observableArray([]);
_this.languages = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].computed(function () {
var userLanguage = _this.userLanguage();
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, _this.langs(), function (language) {
return {
key: language,
user: language === userLanguage,
selected: ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false),
fullName: Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["convertLangName"])(language)
};
});
});
_this.langs.subscribe(function () {
_this.setLanguageSelection();
});
return _this;
}
var _proto = LanguagesPopupView.prototype;
_proto.languageTooltipName = function languageTooltipName(language) {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["convertLangName"])(language, true);
};
_proto.setLanguageSelection = function setLanguageSelection() {
var currentLang = this.fLang ? ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].unwrap(this.fLang) : '';
___WEBPACK_IMPORTED_MODULE_2___default.a.each(this.languages(), function (item) {
item.selected(item.key === currentLang);
});
};
_proto.onBeforeShow = function onBeforeShow() {
this.fLang = null;
this.userLanguage('');
this.langs([]);
};
_proto.onShow = function onShow(fLanguage, langs, userLanguage) {
this.fLang = fLanguage;
this.userLanguage(userLanguage || '');
this.langs(langs);
};
_proto.changeLanguage = function changeLanguage(lang) {
if (this.fLang) {
this.fLang(lang);
}
this.cancelCommand();
};
return LanguagesPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_6__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 292 */
/*!**************************!*\
!*** ./dev/bootstrap.js ***!
\**************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Plugins */ 36);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Model_Email__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Model/Email */ 82);
/* harmony default export */ __webpack_exports__["a"] = (function (App) {
Common_Globals__WEBPACK_IMPORTED_MODULE_3__["data"].__APP__ = App;
Common_Globals__WEBPACK_IMPORTED_MODULE_3__["$win"].on('keydown', Common_Utils__WEBPACK_IMPORTED_MODULE_2__["killCtrlACtrlS"]).on('unload', function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_3__["data"].bUnload = true;
});
Common_Globals__WEBPACK_IMPORTED_MODULE_3__["$html"].addClass(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["bMobileDevice"] ? 'mobile' : 'no-mobile').on('click.dropdown.data-api', Common_Utils__WEBPACK_IMPORTED_MODULE_2__["detectDropdownVisibility"]);
var rl = window__WEBPACK_IMPORTED_MODULE_1___default.a.rl || {};
rl.i18n = Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"];
rl.createCommand = Common_Utils__WEBPACK_IMPORTED_MODULE_2__["createCommandLegacy"];
rl.addSettingsViewModel = Common_Plugins__WEBPACK_IMPORTED_MODULE_5__[/* addSettingsViewModel */ "b"];
rl.addSettingsViewModelForAdmin = Common_Plugins__WEBPACK_IMPORTED_MODULE_5__[/* addSettingsViewModelForAdmin */ "c"];
rl.addHook = Common_Plugins__WEBPACK_IMPORTED_MODULE_5__[/* addHook */ "a"];
rl.settingsGet = Common_Plugins__WEBPACK_IMPORTED_MODULE_5__[/* mainSettingsGet */ "d"];
rl.pluginSettingsGet = Common_Plugins__WEBPACK_IMPORTED_MODULE_5__[/* settingsGet */ "h"];
rl.pluginRemoteRequest = Common_Plugins__WEBPACK_IMPORTED_MODULE_5__[/* remoteRequest */ "e"];
rl.EmailModel = Model_Email__WEBPACK_IMPORTED_MODULE_7__["EmailModel"];
rl.Enums = Common_Enums__WEBPACK_IMPORTED_MODULE_4__;
window__WEBPACK_IMPORTED_MODULE_1___default.a.rl = rl;
var start = function start() {
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0___default()(function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_3__["$html"].removeClass('no-js rl-booted-trigger').addClass('rl-booted');
App.bootstart();
}, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Magics"].Time10ms);
};
window__WEBPACK_IMPORTED_MODULE_1___default.a.__APP_BOOT = function (fErrorCallback) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["domReady"])(function () {
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_0___default()(function () {
if (window__WEBPACK_IMPORTED_MODULE_1___default.a.document.getElementById('rainloop-templates-id')) {
start();
} else if (window__WEBPACK_IMPORTED_MODULE_1___default.a.rainloopTEMPLATES && window__WEBPACK_IMPORTED_MODULE_1___default.a.rainloopTEMPLATES[0]) {
window__WEBPACK_IMPORTED_MODULE_1___default.a.document.getElementById('rl-templates').innerHTML = window__WEBPACK_IMPORTED_MODULE_1___default.a.rainloopTEMPLATES[0];
start();
} else {
fErrorCallback();
}
window__WEBPACK_IMPORTED_MODULE_1___default.a.__APP_BOOT = null;
}, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Magics"].Time10ms);
});
};
});
/***/ }),
/* 293 */
/*!**********************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/object/create.js ***!
\**********************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/object/create */ 362);
/***/ }),
/* 294 */
/*!***************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/helpers/esm/setPrototypeOf.js ***!
\***************************************************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _setPrototypeOf; });
/* harmony import */ var _babel_runtime_corejs3_core_js_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js/object/set-prototype-of */ 295);
/* harmony import */ var _babel_runtime_corejs3_core_js_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_0__);
function _setPrototypeOf(o, p) {
_setPrototypeOf = _babel_runtime_corejs3_core_js_object_set_prototype_of__WEBPACK_IMPORTED_MODULE_0___default.a || function _setPrototypeOf(o, p) {
o.__proto__ = p;
return o;
};
return _setPrototypeOf(o, p);
}
/***/ }),
/* 295 */
/*!********************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/object/set-prototype-of.js ***!
\********************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/object/set-prototype-of */ 365);
/***/ }),
/* 296 */
/*!***********************************!*\
!*** ./dev/Stores/AbstractApp.js ***!
\***********************************/
/*! exports provided: AbstractAppStore, default */
/*! exports used: AbstractAppStore */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractAppStore; });
/* unused harmony export default */
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Storage/Settings */ 5);
var AbstractAppStore = /*#__PURE__*/function () {
function AbstractAppStore() {
this.allowLanguagesOnSettings = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(true);
this.allowLanguagesOnLogin = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(true);
this.newMoveToFolder = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(true);
this.interfaceAnimation = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(true);
this.interfaceAnimation.subscribe(function (value) {
var anim = Common_Globals__WEBPACK_IMPORTED_MODULE_1__["bMobileDevice"] || !value;
Common_Globals__WEBPACK_IMPORTED_MODULE_1__["$html"].toggleClass('rl-anim', !anim).toggleClass('no-rl-anim', anim);
});
this.interfaceAnimation.valueHasMutated();
}
var _proto = AbstractAppStore.prototype;
_proto.populate = function populate() {
this.allowLanguagesOnLogin(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('AllowLanguagesOnLogin'));
this.allowLanguagesOnSettings(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('AllowLanguagesOnSettings'));
this.newMoveToFolder(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('NewMoveToFolder'));
this.interfaceAnimation(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_2__["settingsGet"]('InterfaceAnimation'));
};
return AbstractAppStore;
}();
/***/ }),
/* 297 */
/*!**************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/instance/for-each.js ***!
\**************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/instance/for-each */ 368);
/***/ }),
/* 298 */
/*!********************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/object/keys.js ***!
\********************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/object/keys */ 374);
/***/ }),
/* 299 */
/*!************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/instance/reduce.js ***!
\************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/instance/reduce */ 377);
/***/ }),
/* 300 */
/*!*************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/instance/reverse.js ***!
\*************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/instance/reverse */ 378);
/***/ }),
/* 301 */
/*!***********************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/instance/slice.js ***!
\***********************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/instance/slice */ 382);
/***/ }),
/* 302 */
/*!*******************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js/object/define-property.js ***!
\*******************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/features/object/define-property */ 386);
/***/ }),
/* 303 */
/*!************************************!*\
!*** ./dev/Remote/AbstractAjax.js ***!
\************************************/
/*! exports provided: AbstractAjaxRemote, default */
/*! exports used: AbstractAjaxRemote */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractAjaxRemote; });
/* unused harmony export default */
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Plugins */ 36);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Storage/Settings */ 5);
var AbstractAjaxRemote = /*#__PURE__*/function () {
function AbstractAjaxRemote() {
this.oRequests = {};
}
/**
* @param {?Function} fCallback
* @param {string} sRequestAction
* @param {string} sType
* @param {?AjaxJsonDefaultResponse} oData
* @param {boolean} bCached
* @param {*=} oRequestParameters
*/
var _proto = AbstractAjaxRemote.prototype;
_proto.defaultResponse = function defaultResponse(fCallback, sRequestAction, sType, oData, bCached, oRequestParameters) {
var fCall = function fCall() {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success !== sType && Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].bUnload) {
sType = Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Unload;
}
if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === sType && oData && !oData.Result) {
if (oData && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["inArray"])(oData.ErrorCode, [Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].AuthError, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].AccessError, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].ConnectionError, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].DomainNotAllowed, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].AccountNotAllowed, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].MailServerError, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].UnknownNotification, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].UnknownError])) {
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].iAjaxErrorCount += 1;
}
if (oData && Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].InvalidToken === oData.ErrorCode) {
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].iTokenErrorCount += 1;
}
if (Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* TOKEN_ERROR_LIMIT */ "q"] < Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].iTokenErrorCount) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__ && Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.loginAndLogoutReload) {
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.loginAndLogoutReload(false, true);
}
}
if (oData.ClearAuth || oData.Logout || Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* AJAX_ERROR_LIMIT */ "a"] < Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].iAjaxErrorCount) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__ && Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.clearClientSideToken) {
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.clearClientSideToken();
if (!oData.ClearAuth && Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.loginAndLogoutReload) {
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.loginAndLogoutReload(false, true);
}
}
}
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === sType && oData && oData.Result) {
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].iAjaxErrorCount = 0;
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].iTokenErrorCount = 0;
}
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_8__[/* runHook */ "f"])('ajax-default-response', [sRequestAction, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === sType ? oData : null, sType, bCached, oRequestParameters]);
if (fCallback) {
fCallback(sType, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === sType ? oData : null, bCached, sRequestAction, oRequestParameters);
}
};
switch (sType) {
case 'success':
sType = Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success;
break;
case 'abort':
sType = Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Abort;
break;
default:
sType = Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Error;
break;
}
if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Error === sType) {
___WEBPACK_IMPORTED_MODULE_1___default.a.delay(fCall, 300);
} else {
fCall();
}
}
/**
* @param {?Function} fResultCallback
* @param {Object} oParameters
* @param {?number=} iTimeOut = 20000
* @param {string=} sGetAdd = ''
* @param {Array=} aAbortActions = []
* @returns {jQuery.jqXHR}
*/
;
_proto.ajaxRequest = function ajaxRequest(fResultCallback, params, iTimeOut, sGetAdd, abortActions) {
var _this = this;
if (iTimeOut === void 0) {
iTimeOut = 20000;
}
if (sGetAdd === void 0) {
sGetAdd = '';
}
if (abortActions === void 0) {
abortActions = [];
}
var isPost = '' === sGetAdd,
headers = {},
start = new window__WEBPACK_IMPORTED_MODULE_0___default.a.Date().getTime();
var action = '';
params = params || {};
action = params.Action || '';
if (action && 0 < abortActions.length) {
___WEBPACK_IMPORTED_MODULE_1___default.a.each(abortActions, function (actionToAbort) {
if (_this.oRequests[actionToAbort]) {
_this.oRequests[actionToAbort].__aborted = true;
if (_this.oRequests[actionToAbort].abort) {
_this.oRequests[actionToAbort].abort();
}
_this.oRequests[actionToAbort] = null;
}
});
}
if (isPost) {
params.XToken = Storage_Settings__WEBPACK_IMPORTED_MODULE_9__["appSettingsGet"]('token');
}
var oDefAjax = $__WEBPACK_IMPORTED_MODULE_2___default.a.ajax({
type: isPost ? 'POST' : 'GET',
url: Object(Common_Links__WEBPACK_IMPORTED_MODULE_7__[/* ajax */ "a"])(sGetAdd),
async: true,
dataType: 'json',
data: isPost ? params : {},
headers: headers,
timeout: iTimeOut,
global: true
});
oDefAjax.always(function (oData, sType) {
var cached = false;
if (oData && oData.Time) {
cached = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pInt"])(oData.Time) > new window__WEBPACK_IMPORTED_MODULE_0___default.a.Date().getTime() - start;
}
if (oData && oData.UpdateToken) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__ && Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.setClientSideToken) {
Common_Globals__WEBPACK_IMPORTED_MODULE_6__["data"].__APP__.setClientSideToken(oData.UpdateToken);
}
}
if (action && _this.oRequests[action]) {
if (_this.oRequests[action].__aborted) {
sType = 'abort';
}
_this.oRequests[action] = null;
}
_this.defaultResponse(fResultCallback, action, sType, oData, cached, params);
});
if (action && 0 < abortActions.length && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["inArray"])(action, abortActions)) {
if (this.oRequests[action]) {
this.oRequests[action].__aborted = true;
if (this.oRequests[action].abort) {
this.oRequests[action].abort();
}
this.oRequests[action] = null;
}
this.oRequests[action] = oDefAjax;
} // eslint-disable-next-line no-console
oDefAjax.catch(console.log);
return oDefAjax;
}
/**
* @param {?Function} fCallback
* @param {string} sAction
* @param {Object=} oParameters
* @param {?number=} iTimeout
* @param {string=} sGetAdd = ''
* @param {Array=} aAbortActions = []
*/
;
_proto.defaultRequest = function defaultRequest(fCallback, sAction, oParameters, iTimeout, sGetAdd, aAbortActions) {
oParameters = oParameters || {};
oParameters.Action = sAction;
sGetAdd = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pString"])(sGetAdd);
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_8__[/* runHook */ "f"])('ajax-default-request', [sAction, oParameters, sGetAdd]);
return this.ajaxRequest(fCallback, oParameters, Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isUnd"])(iTimeout) ? Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* DEFAULT_AJAX_TIMEOUT */ "g"] : Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pInt"])(iTimeout), sGetAdd, aAbortActions);
}
/**
* @param {?Function} fCallback
*/
;
_proto.noop = function noop(fCallback) {
this.defaultRequest(fCallback, 'Noop');
}
/**
* @param {?Function} fCallback
*/
;
_proto.getPublicKey = function getPublicKey(fCallback) {
this.defaultRequest(fCallback, 'GetPublicKey');
}
/**
* @param {?Function} fCallback
* @param {string} sVersion
*/
;
_proto.jsVersion = function jsVersion(fCallback, sVersion) {
this.defaultRequest(fCallback, 'Version', {
'Version': sVersion
});
};
return AbstractAjaxRemote;
}();
/***/ }),
/* 304 */
/*!****************************************!*\
!*** ./dev/Screen/AbstractSettings.js ***!
\****************************************/
/*! exports provided: AbstractSettingsScreen, default */
/*! exports used: AbstractSettingsScreen */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractSettingsScreen; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractScreen__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Knoin/AbstractScreen */ 152);
var AbstractSettingsScreen = /*#__PURE__*/function (_AbstractScreen) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AbstractSettingsScreen, _AbstractScreen);
/**
* @param {Array} viewModels
*/
function AbstractSettingsScreen(viewModels) {
var _this;
_this = _AbstractScreen.call(this, 'settings', viewModels) || this;
_this.menu = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observableArray([]);
_this.oCurrentSubScreen = null;
_this.oViewModelPlace = null;
_this.setupSettings();
return _this;
}
/**
* @param {Function=} fCallback
*/
var _proto = AbstractSettingsScreen.prototype;
_proto.setupSettings = function setupSettings(fCallback) {
if (fCallback === void 0) {
fCallback = null;
}
if (fCallback) {
fCallback();
}
};
_proto.onRoute = function onRoute(subName) {
var _this2 = this;
var settingsScreen = null,
RoutedSettingsViewModel = null,
viewModelPlace = null,
viewModelDom = null;
RoutedSettingsViewModel = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, Common_Globals__WEBPACK_IMPORTED_MODULE_5__["VIEW_MODELS"].settings, function (SettingsViewModel) {
return SettingsViewModel && SettingsViewModel.__rlSettingsData && subName === SettingsViewModel.__rlSettingsData.Route;
});
if (RoutedSettingsViewModel) {
if (_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, Common_Globals__WEBPACK_IMPORTED_MODULE_5__["VIEW_MODELS"]['settings-removed'], function (DisabledSettingsViewModel) {
return DisabledSettingsViewModel && DisabledSettingsViewModel === RoutedSettingsViewModel;
})) {
RoutedSettingsViewModel = null;
}
if (RoutedSettingsViewModel && _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, Common_Globals__WEBPACK_IMPORTED_MODULE_5__["VIEW_MODELS"]['settings-disabled'], function (DisabledSettingsViewModel) {
return DisabledSettingsViewModel && DisabledSettingsViewModel === RoutedSettingsViewModel;
})) {
RoutedSettingsViewModel = null;
}
}
if (RoutedSettingsViewModel) {
if (RoutedSettingsViewModel.__builded && RoutedSettingsViewModel.__vm) {
settingsScreen = RoutedSettingsViewModel.__vm;
} else {
viewModelPlace = this.oViewModelPlace;
if (viewModelPlace && 1 === viewModelPlace.length) {
settingsScreen = new RoutedSettingsViewModel();
viewModelDom = $__WEBPACK_IMPORTED_MODULE_3___default()('<div></div>').addClass('rl-settings-view-model').hide();
viewModelDom.appendTo(viewModelPlace);
settingsScreen.viewModelDom = viewModelDom;
settingsScreen.__rlSettingsData = RoutedSettingsViewModel.__rlSettingsData;
RoutedSettingsViewModel.__dom = viewModelDom;
RoutedSettingsViewModel.__builded = true;
RoutedSettingsViewModel.__vm = settingsScreen;
var tmpl = {
name: RoutedSettingsViewModel.__rlSettingsData.Template
};
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].applyBindingAccessorsToNode(viewModelDom[0], {
translatorInit: true,
template: function template() {
return tmpl;
}
}, settingsScreen);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRun"])(settingsScreen, 'onBuild', [viewModelDom]);
} else {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["log"])('Cannot find sub settings view model position: SettingsSubScreen');
}
}
if (settingsScreen) {
___WEBPACK_IMPORTED_MODULE_2___default.a.defer(function () {
// hide
if (_this2.oCurrentSubScreen) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRun"])(_this2.oCurrentSubScreen, 'onHide');
_this2.oCurrentSubScreen.viewModelDom.hide();
} // --
_this2.oCurrentSubScreen = settingsScreen; // show
if (_this2.oCurrentSubScreen) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRun"])(_this2.oCurrentSubScreen, 'onBeforeShow');
_this2.oCurrentSubScreen.viewModelDom.show();
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRun"])(_this2.oCurrentSubScreen, 'onShow');
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRun"])(_this2.oCurrentSubScreen, 'onShowWithDelay', [], 200);
___WEBPACK_IMPORTED_MODULE_2___default.a.each(_this2.menu(), function (item) {
item.selected(settingsScreen && settingsScreen.__rlSettingsData && item.route === settingsScreen.__rlSettingsData.Route);
});
$__WEBPACK_IMPORTED_MODULE_3___default()('#rl-content .b-settings .b-content .content').scrollTop(0);
} // --
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["windowResize"])();
});
}
} else {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_7__[/* settings */ "z"])(), false, true);
}
};
_proto.onHide = function onHide() {
if (this.oCurrentSubScreen && this.oCurrentSubScreen.viewModelDom) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRun"])(this.oCurrentSubScreen, 'onHide');
this.oCurrentSubScreen.viewModelDom.hide();
}
};
_proto.onBuild = function onBuild() {
var _this3 = this;
___WEBPACK_IMPORTED_MODULE_2___default.a.each(Common_Globals__WEBPACK_IMPORTED_MODULE_5__["VIEW_MODELS"].settings, function (SettingsViewModel) {
if (SettingsViewModel && SettingsViewModel.__rlSettingsData && !_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, Common_Globals__WEBPACK_IMPORTED_MODULE_5__["VIEW_MODELS"]['settings-removed'], function (RemoveSettingsViewModel) {
return RemoveSettingsViewModel && RemoveSettingsViewModel === SettingsViewModel;
})) {
_this3.menu.push({
route: SettingsViewModel.__rlSettingsData.Route,
label: SettingsViewModel.__rlSettingsData.Label,
selected: ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false),
disabled: !!_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, Common_Globals__WEBPACK_IMPORTED_MODULE_5__["VIEW_MODELS"]['settings-disabled'], function (DisabledSettingsViewModel) {
return DisabledSettingsViewModel && DisabledSettingsViewModel === SettingsViewModel;
})
});
}
});
this.oViewModelPlace = $__WEBPACK_IMPORTED_MODULE_3___default()('#rl-content #rl-settings-subscreen');
};
_proto.routes = function routes() {
var DefaultViewModel = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, Common_Globals__WEBPACK_IMPORTED_MODULE_5__["VIEW_MODELS"].settings, function (SettingsViewModel) {
return SettingsViewModel && SettingsViewModel.__rlSettingsData && SettingsViewModel.__rlSettingsData.IsDefault;
}),
defaultRoute = DefaultViewModel && DefaultViewModel.__rlSettingsData ? DefaultViewModel.__rlSettingsData.Route : 'general',
rules = {
subname: /^(.*)$/,
normalize_: function normalize_(rquest, vals) {
vals.subname = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["isUnd"])(vals.subname) ? defaultRoute : Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pString"])(vals.subname);
return [vals.subname];
}
};
return [['{subname}/', rules], ['{subname}', rules], ['', rules]];
};
return AbstractSettingsScreen;
}(Knoin_AbstractScreen__WEBPACK_IMPORTED_MODULE_9__[/* AbstractScreen */ "a"]);
/***/ }),
/* 305 */
/*!*****************************!*\
!*** ./dev/App/Abstract.js ***!
\*****************************/
/*! exports provided: AbstractApp, default */
/*! exports used: AbstractApp */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractApp; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ssm__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ssm */ 154);
/* harmony import */ var ssm__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(ssm__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Stores_Language__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Stores/Language */ 72);
/* harmony import */ var Stores_Theme__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Stores/Theme */ 123);
/* harmony import */ var Stores_Social__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Stores/Social */ 26);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractBoot__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Knoin/AbstractBoot */ 306);
var AbstractApp = /*#__PURE__*/function (_AbstractBoot) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AbstractApp, _AbstractBoot);
/**
* @param {RemoteStorage|AdminRemoteStorage} Remote
*/
function AbstractApp() {
var _this;
_this = _AbstractBoot.call(this) || this;
_this.googlePreviewSupportedCache = null;
_this.isLocalAutocomplete = true;
_this.iframe = null;
_this.lastErrorTime = 0;
_this.iframe = $__WEBPACK_IMPORTED_MODULE_2___default()('<iframe class="internal-hiddden" />').appendTo('body');
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].on('resize', function () {
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('window.resize');
});
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* sub */ "b"]('window.resize', ___WEBPACK_IMPORTED_MODULE_3___default.a.throttle(function () {
var iH = Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].height(),
iW = Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].height();
if (Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].__sizes[0] !== iH || Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].__sizes[1] !== iW) {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].__sizes[0] = iH;
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].__sizes[1] = iW;
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('window.resize.real');
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time50ms)); // DEBUG
// Events.sub({
// 'window.resize': function() {
// window.console.log('window.resize');
// },
// 'window.resize.real': function() {
// window.console.log('window.resize.real');
// }
// });
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$doc"].on('keydown', function (event) {
if (event && event.ctrlKey) {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].addClass('rl-ctrl-key-pressed');
}
}).on('keyup', function (event) {
if (event && !event.ctrlKey) {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].removeClass('rl-ctrl-key-pressed');
}
});
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$doc"].on('mousemove keypress click', ___WEBPACK_IMPORTED_MODULE_3___default.a.debounce(function () {
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('rl.auto-logout-refresh');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time5s));
key__WEBPACK_IMPORTED_MODULE_5___default()('esc, enter', Common_Enums__WEBPACK_IMPORTED_MODULE_9__["KeyState"].All, function () {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["detectDropdownVisibility"])();
});
return _this;
}
var _proto = AbstractApp.prototype;
_proto.remote = function remote() {
return null;
};
_proto.data = function data() {
return null;
};
_proto.getApplicationConfiguration = function getApplicationConfiguration(name, default_) {
return this.applicationConfiguration[name] || default_;
}
/**
* @param {string} link
* @returns {boolean}
*/
;
_proto.download = function download(link) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_7__["sUserAgent"] && (-1 < Common_Globals__WEBPACK_IMPORTED_MODULE_7__["sUserAgent"].indexOf('chrome') || -1 < Common_Globals__WEBPACK_IMPORTED_MODULE_7__["sUserAgent"].indexOf('chrome'))) {
var oLink = window__WEBPACK_IMPORTED_MODULE_1___default.a.document.createElement('a');
oLink.href = link;
if (window__WEBPACK_IMPORTED_MODULE_1___default.a.document && window__WEBPACK_IMPORTED_MODULE_1___default.a.document.createEvent) {
var oE = window__WEBPACK_IMPORTED_MODULE_1___default.a.document.createEvent.MouseEvents;
if (oE && oE.initEvent && oLink.dispatchEvent) {
oE.initEvent('click', true, true);
oLink.dispatchEvent(oE);
return true;
}
}
}
if (Common_Globals__WEBPACK_IMPORTED_MODULE_7__["bMobileDevice"]) {
window__WEBPACK_IMPORTED_MODULE_1___default.a.open(link, '_self');
window__WEBPACK_IMPORTED_MODULE_1___default.a.focus();
} else {
this.iframe.attr('src', link); // window.document.location.href = link;
}
return true;
}
/**
* @returns {boolean}
*/
;
_proto.googlePreviewSupported = function googlePreviewSupported() {
if (null === this.googlePreviewSupportedCache) {
this.googlePreviewSupportedCache = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["settingsGet"]('AllowGoogleSocial') && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["settingsGet"]('AllowGoogleSocialPreview');
}
return this.googlePreviewSupportedCache;
}
/**
* @param {string} title
*/
;
_proto.setWindowTitle = function setWindowTitle(title) {
title = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["isNormal"])(title) && 0 < title.length ? '' + title : '';
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["settingsGet"]('Title')) {
title += (title ? ' - ' : '') + Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["settingsGet"]('Title');
}
window__WEBPACK_IMPORTED_MODULE_1___default.a.document.title = title + ' ...';
window__WEBPACK_IMPORTED_MODULE_1___default.a.document.title = title;
};
_proto.redirectToAdminPanel = function redirectToAdminPanel() {
___WEBPACK_IMPORTED_MODULE_3___default.a.delay(function () {
window__WEBPACK_IMPORTED_MODULE_1___default.a.location.href = Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* rootAdmin */ "x"])();
}, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time100ms);
};
_proto.clearClientSideToken = function clearClientSideToken() {
if (window__WEBPACK_IMPORTED_MODULE_1___default.a.__rlah_clear) {
window__WEBPACK_IMPORTED_MODULE_1___default.a.__rlah_clear();
}
}
/**
* @param {string} token
*/
;
_proto.setClientSideToken = function setClientSideToken(token) {
if (window__WEBPACK_IMPORTED_MODULE_1___default.a.__rlah_set) {
window__WEBPACK_IMPORTED_MODULE_1___default.a.__rlah_set(token);
Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["settingsSet"]('AuthAccountHash', token);
Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* populateAuthSuffix */ "v"])();
}
}
/**
* @param {boolean=} admin = false
* @param {boolean=} logout = false
* @param {boolean=} close = false
*/
;
_proto.loginAndLogoutReload = function loginAndLogoutReload(admin, logout, close) {
if (admin === void 0) {
admin = false;
}
if (logout === void 0) {
logout = false;
}
if (close === void 0) {
close = false;
}
var inIframe = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["appSettingsGet"]('inIframe');
var customLogoutLink = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["pString"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["appSettingsGet"]('customLogoutLink'));
if (logout) {
this.clearClientSideToken();
}
if (logout && close && window__WEBPACK_IMPORTED_MODULE_1___default.a.close) {
window__WEBPACK_IMPORTED_MODULE_1___default.a.close();
}
customLogoutLink = customLogoutLink || (admin ? Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* rootAdmin */ "x"])() : Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* rootUser */ "y"])());
if (logout && window__WEBPACK_IMPORTED_MODULE_1___default.a.location.href !== customLogoutLink) {
___WEBPACK_IMPORTED_MODULE_3___default.a.delay(function () {
if (inIframe && window__WEBPACK_IMPORTED_MODULE_1___default.a.parent) {
window__WEBPACK_IMPORTED_MODULE_1___default.a.parent.location.href = customLogoutLink;
} else {
window__WEBPACK_IMPORTED_MODULE_1___default.a.location.href = customLogoutLink;
}
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].trigger('rl.tooltips.diactivate');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time100ms);
} else {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_17__["routeOff"])();
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_17__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* root */ "w"])(), true);
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_17__["routeOff"])();
___WEBPACK_IMPORTED_MODULE_3___default.a.delay(function () {
if (inIframe && window__WEBPACK_IMPORTED_MODULE_1___default.a.parent) {
window__WEBPACK_IMPORTED_MODULE_1___default.a.parent.location.reload();
} else {
window__WEBPACK_IMPORTED_MODULE_1___default.a.location.reload();
}
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$win"].trigger('rl.tooltips.diactivate');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time100ms);
}
};
_proto.historyBack = function historyBack() {
window__WEBPACK_IMPORTED_MODULE_1___default.a.history.back();
};
_proto.bootstart = function bootstart() {
// log('Ps' + 'ss, hac' + 'kers! The' + 're\'s not' + 'hing inte' + 'resting :' + ')');
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('rl.bootstart');
var mobile = Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["appSettingsGet"]('mobile');
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('SaveTrigger', __webpack_require__(/*! Component/SaveTrigger */ 394).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('Input', __webpack_require__(/*! Component/Input */ 395).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('Select', __webpack_require__(/*! Component/Select */ 396).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('Radio', __webpack_require__(/*! Component/Radio */ 397).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('TextArea', __webpack_require__(/*! Component/TextArea */ 398).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('Date', __webpack_require__(/*! Component/Date */ 399).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('x-script', __webpack_require__(/*! Component/Script */ 400).default); // ko.components.register('svg-icon', require('Component/SvgIcon').default);
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_13__["appSettingsGet"]('materialDesign') && Common_Globals__WEBPACK_IMPORTED_MODULE_7__["bAnimationSupported"]) {
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('Checkbox', __webpack_require__(/*! Component/MaterialDesign/Checkbox */ 401).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('CheckboxSimple', __webpack_require__(/*! Component/Checkbox */ 225).default);
} else {
// ko.components.register('Checkbox', require('Component/Classic/Checkbox').default);
// ko.components.register('CheckboxSimple', require('Component/Classic/Checkbox').default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('Checkbox', __webpack_require__(/*! Component/Checkbox */ 225).default);
ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].components.register('CheckboxSimple', __webpack_require__(/*! Component/Checkbox */ 225).default);
}
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_11__["initOnStartOrLangChange"])(Common_Translator__WEBPACK_IMPORTED_MODULE_11__["initNotificationLanguage"]);
___WEBPACK_IMPORTED_MODULE_3___default.a.delay(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["windowResizeCallback"], Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time1s);
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* sub */ "b"]('ssm.mobile-enter', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_7__["leftPanelDisabled"])(true);
});
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* sub */ "b"]('ssm.mobile-leave', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_7__["leftPanelDisabled"])(false);
});
if (!mobile) {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].addClass('rl-desktop');
ssm__WEBPACK_IMPORTED_MODULE_6___default.a.addState({
id: 'mobile',
query: '(max-width: 767px)',
onEnter: function onEnter() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].addClass('ssm-state-mobile');
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('ssm.mobile-enter');
},
onLeave: function onLeave() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].removeClass('ssm-state-mobile');
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('ssm.mobile-leave');
}
});
ssm__WEBPACK_IMPORTED_MODULE_6___default.a.addState({
id: 'tablet',
query: '(min-width: 768px) and (max-width: 999px)',
onEnter: function onEnter() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].addClass('ssm-state-tablet');
},
onLeave: function onLeave() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].removeClass('ssm-state-tablet');
}
});
ssm__WEBPACK_IMPORTED_MODULE_6___default.a.addState({
id: 'desktop',
query: '(min-width: 1000px) and (max-width: 1400px)',
onEnter: function onEnter() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].addClass('ssm-state-desktop');
},
onLeave: function onLeave() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].removeClass('ssm-state-desktop');
}
});
ssm__WEBPACK_IMPORTED_MODULE_6___default.a.addState({
id: 'desktop-large',
query: '(min-width: 1401px)',
onEnter: function onEnter() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].addClass('ssm-state-desktop-large');
},
onLeave: function onLeave() {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].removeClass('ssm-state-desktop-large');
}
});
} else {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].addClass('ssm-state-mobile').addClass('rl-mobile');
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('ssm.mobile-enter');
}
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["leftPanelDisabled"].subscribe(function (bValue) {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].toggleClass('rl-left-panel-disabled', bValue);
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].toggleClass('rl-left-panel-enabled', !bValue);
});
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["leftPanelType"].subscribe(function (sValue) {
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].toggleClass('rl-left-panel-none', 'none' === sValue);
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["$html"].toggleClass('rl-left-panel-short', 'short' === sValue);
});
Common_Globals__WEBPACK_IMPORTED_MODULE_7__["leftPanelDisabled"].valueHasMutated();
Stores_Language__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].populate();
Stores_Theme__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].populate();
Stores_Social__WEBPACK_IMPORTED_MODULE_16__[/* default */ "a"].populate();
};
return AbstractApp;
}(Knoin_AbstractBoot__WEBPACK_IMPORTED_MODULE_18__[/* AbstractBoot */ "a"]);
/***/ }),
/* 306 */
/*!***********************************!*\
!*** ./dev/Knoin/AbstractBoot.js ***!
\***********************************/
/*! exports provided: AbstractBoot */
/*! exports used: AbstractBoot */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractBoot; });
var AbstractBoot = /*#__PURE__*/function () {
function AbstractBoot() {}
var _proto = AbstractBoot.prototype;
_proto.bootstart = function bootstart() {
/* no-empty */
};
return AbstractBoot;
}();
/***/ }),
/* 307 */
/*!****************************************!*\
!*** ./dev/Component/AbstractRadio.js ***!
\****************************************/
/*! exports provided: AbstractRadio, default */
/*! exports used: AbstractRadio */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractRadio; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/values */ 122);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ 219);
/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ 247);
/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Component/Abstract */ 32);
var AbstractRadio = /*#__PURE__*/function (_AbstractComponent) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(AbstractRadio, _AbstractComponent);
/**
* @param {Object} params
*/
function AbstractRadio(params) {
var _this;
_this = _AbstractComponent.call(this) || this;
_this.values = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observableArray([]);
_this.value = params.value;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(_this.value) || !_this.value.subscribe) {
_this.value = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable('');
}
_this.inline = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(params.inline) ? false : params.inline;
_this.readOnly = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(params.readOnly) ? false : !!params.readOnly;
if (_babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_2___default()(params)) {
_babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_2___default()(_this).call(_this, _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_7___default.a).call(___WEBPACK_IMPORTED_MODULE_7___default.a, _babel_runtime_corejs3_core_js_stable_instance_values__WEBPACK_IMPORTED_MODULE_2___default()(params), function (label, value) {
return {
label: label,
value: value
};
}));
}
_this.click = ___WEBPACK_IMPORTED_MODULE_7___default.a.bind(_this.click, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
return _this;
}
var _proto = AbstractRadio.prototype;
_proto.click = function click(value) {
if (!this.readOnly && value) {
this.value(value.value);
}
};
return AbstractRadio;
}(Component_Abstract__WEBPACK_IMPORTED_MODULE_10__[/* AbstractComponent */ "a"]);
/***/ }),
/* 308 */
/*!*****************************************************************************!*\
!*** ./node_modules/@babel/runtime-corejs3/core-js-stable/instance/keys.js ***!
\*****************************************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! core-js-pure/stable/instance/keys */ 550);
/***/ }),
/* 309 */
/*!****************************************!*\
!*** ./dev/Model/ComposeAttachment.js ***!
\****************************************/
/*! exports provided: ComposeAttachmentModel, default */
/*! exports used: ComposeAttachmentModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ComposeAttachmentModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Model_Attachment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Model/Attachment */ 207);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var ComposeAttachmentModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(ComposeAttachmentModel, _AbstractModel);
/**
* @param {string} id
* @param {string} fileName
* @param {?number=} size = null
* @param {boolean=} isInline = false
* @param {boolean=} isLinked = false
* @param {string=} CID = ''
* @param {string=} contentLocation = ''
*/
function ComposeAttachmentModel(id, fileName, size, isInline, isLinked, CID, contentLocation) {
var _this;
if (size === void 0) {
size = null;
}
if (isInline === void 0) {
isInline = false;
}
if (isLinked === void 0) {
isLinked = false;
}
if (CID === void 0) {
CID = '';
}
if (contentLocation === void 0) {
contentLocation = '';
}
_this = _AbstractModel.call(this, 'ComposeAttachmentModel') || this;
_this.id = id;
_this.isInline = !!isInline;
_this.isLinked = !!isLinked;
_this.CID = CID;
_this.contentLocation = contentLocation;
_this.fromMessage = false;
_this.fileName = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(fileName);
_this.size = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(size);
_this.tempName = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.progress = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(0);
_this.error = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.waiting = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(true);
_this.uploading = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.enabled = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(true);
_this.complete = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.progressText = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
var p = _this.progress();
return 0 === p ? '' : '' + (98 < p ? 100 : p) + '%';
});
_this.progressStyle = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
var p = _this.progress();
return 0 === p ? '' : 'width:' + (98 < p ? 100 : p) + '%';
});
_this.title = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
var error = _this.error();
return '' !== error ? error : _this.fileName();
});
_this.friendlySize = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
var localSize = _this.size();
return null === localSize ? '' : Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["friendlySize"])(localSize);
});
_this.mimeType = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["mimeContentType"])(_this.fileName());
});
_this.fileExt = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["getFileExtension"])(_this.fileName());
});
_this.regDisposables([_this.progressText, _this.progressStyle, _this.title, _this.friendlySize, _this.mimeType, _this.fileExt]);
return _this;
}
/**
* @param {AjaxJsonComposeAttachment} json
* @returns {boolean}
*/
var _proto = ComposeAttachmentModel.prototype;
_proto.initByUploadJson = function initByUploadJson(json) {
var bResult = false;
if (json) {
this.fileName(json.Name);
this.size(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(json.Size) ? 0 : Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["pInt"])(json.Size));
this.tempName(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(json.TempName) ? '' : json.TempName);
this.isInline = false;
bResult = true;
}
return bResult;
}
/**
* @returns {string}
*/
;
_proto.iconClass = function iconClass() {
return Object(Model_Attachment__WEBPACK_IMPORTED_MODULE_3__[/* staticIconClass */ "d"])(Object(Model_Attachment__WEBPACK_IMPORTED_MODULE_3__[/* staticFileType */ "c"])(this.fileExt(), this.mimeType()))[0];
}
/**
* @returns {string}
*/
;
_proto.iconText = function iconText() {
return Object(Model_Attachment__WEBPACK_IMPORTED_MODULE_3__[/* staticIconClass */ "d"])(Object(Model_Attachment__WEBPACK_IMPORTED_MODULE_3__[/* staticFileType */ "c"])(this.fileExt(), this.mimeType()))[1];
};
return ComposeAttachmentModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_4__[/* AbstractModel */ "a"]);
/***/ }),
/* 310 */
/*!**************************************!*\
!*** ./dev/Model/ContactProperty.js ***!
\**************************************/
/*! exports provided: ContactPropertyModel, default */
/*! exports used: ContactPropertyModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ContactPropertyModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var ContactPropertyModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(ContactPropertyModel, _AbstractModel);
/**
* @param {number=} type = Enums.ContactPropertyType.Unknown
* @param {string=} typeStr = ''
* @param {string=} value = ''
* @param {boolean=} focused = false
* @param {string=} placeholder = ''
*/
function ContactPropertyModel(type, typeStr, value, focused, placeholder) {
var _this;
if (type === void 0) {
type = Common_Enums__WEBPACK_IMPORTED_MODULE_2__["ContactPropertyType"].Unknown;
}
if (typeStr === void 0) {
typeStr = '';
}
if (value === void 0) {
value = '';
}
if (focused === void 0) {
focused = false;
}
if (placeholder === void 0) {
placeholder = '';
}
_this = _AbstractModel.call(this, 'ContactPropertyModel') || this;
_this.type = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(type));
_this.typeStr = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pString"])(typeStr));
_this.focused = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(!!focused);
_this.value = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pString"])(value));
_this.placeholder = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(placeholder);
_this.placeholderValue = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
var v = _this.placeholder();
return v ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])(v) : '';
});
_this.largeValue = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_2__["ContactPropertyType"].Note === _this.type();
});
_this.regDisposables([_this.placeholderValue, _this.largeValue]);
return _this;
}
return ContactPropertyModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_5__[/* AbstractModel */ "a"]);
/***/ }),
/* 311 */,
/* 312 */,
/* 313 */,
/* 314 */
/*!*********************************************************!*\
!*** ./node_modules/core-js/modules/es.array.filter.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 65);
var $filter = __webpack_require__(/*! ../internals/array-iteration */ 290).filter;
var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ 354);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
// `Array.prototype.filter` method
// https://tc39.es/ecma262/#sec-array.prototype.filter
// with adding support of @@species
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
filter: function filter(callbackfn /* , thisArg */) {
return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 315 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/modules/es.string.search.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ 149);
var anObject = __webpack_require__(/*! ../internals/an-object */ 42);
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
var sameValue = __webpack_require__(/*! ../internals/same-value */ 356);
var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ 150);
// @@search logic
fixRegExpWellKnownSymbolLogic('search', 1, function (SEARCH, nativeSearch, maybeCallNative) {
return [
// `String.prototype.search` method
// https://tc39.es/ecma262/#sec-string.prototype.search
function search(regexp) {
var O = requireObjectCoercible(this);
var searcher = regexp == undefined ? undefined : regexp[SEARCH];
return searcher !== undefined ? searcher.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
},
// `RegExp.prototype[@@search]` method
// https://tc39.es/ecma262/#sec-regexp.prototype-@@search
function (regexp) {
var res = maybeCallNative(nativeSearch, regexp, this);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var previousLastIndex = rx.lastIndex;
if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
var result = regExpExec(rx, S);
if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
return result === null ? -1 : result.index;
}
];
});
/***/ }),
/* 316 */
/*!****************************************!*\
!*** ./dev/View/Popup/FolderSystem.js ***!
\****************************************/
/*! exports provided: FolderSystemPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FolderSystemPopupView", function() { return FolderSystemPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return FolderSystemPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var FolderSystemPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["popup"])({
name: 'View/Popup/FolderSystem',
templateID: 'PopupsFolderSystem'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(FolderSystemPopupView, _AbstractViewNext);
function FolderSystemPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.sChooseOnText = '';
_this.sUnuseText = '';
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["initOnStartOrLangChange"])(function () {
_this.sChooseOnText = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"])('POPUPS_SYSTEM_FOLDERS/SELECT_CHOOSE_ONE');
_this.sUnuseText = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"])('POPUPS_SYSTEM_FOLDERS/SELECT_UNUSE_NAME');
});
_this.notification = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
_this.folderSelectList = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["folderListOptionsBuilder"])([], Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].folderList(), Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].folderListSystemNames(), [['', _this.sChooseOnText], [Common_Consts__WEBPACK_IMPORTED_MODULE_4__[/* UNUSED_OPTION_VALUE */ "r"], _this.sUnuseText]], null, null, null, null, null, true);
});
_this.sentFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].sentFolder;
_this.draftFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].draftFolder;
_this.spamFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].spamFolder;
_this.trashFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].trashFolder;
_this.archiveFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].archiveFolder;
var fSetSystemFolders = function fSetSystemFolders() {
Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsSet"]('SentFolder', Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].sentFolder());
Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsSet"]('DraftFolder', Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].draftFolder());
Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsSet"]('SpamFolder', Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].spamFolder());
Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsSet"]('TrashFolder', Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].trashFolder());
Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["settingsSet"]('ArchiveFolder', Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].archiveFolder());
},
fSaveSystemFolders = ___WEBPACK_IMPORTED_MODULE_1___default.a.debounce(function () {
fSetSystemFolders();
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].saveSystemFolders(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["noop"], {
SentFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].sentFolder(),
DraftFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].draftFolder(),
SpamFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].spamFolder(),
TrashFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].trashFolder(),
ArchiveFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].archiveFolder(),
NullFolder: 'NullFolder'
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_3__["Magics"].Time1s),
fCallback = function fCallback() {
fSetSystemFolders();
fSaveSystemFolders();
};
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].sentFolder.subscribe(fCallback);
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].draftFolder.subscribe(fCallback);
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].spamFolder.subscribe(fCallback);
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].trashFolder.subscribe(fCallback);
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].archiveFolder.subscribe(fCallback);
_this.defautOptionsAfterRender = Common_Utils__WEBPACK_IMPORTED_MODULE_5__["defautOptionsAfterRender"];
return _this;
}
/**
* @param {number=} notificationType = SetSystemFoldersNotification.None
*/
var _proto = FolderSystemPopupView.prototype;
_proto.onShow = function onShow(notificationType) {
if (notificationType === void 0) {
notificationType = Common_Enums__WEBPACK_IMPORTED_MODULE_3__["SetSystemFoldersNotification"].None;
}
var notification = '';
switch (notificationType) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_3__["SetSystemFoldersNotification"].Sent:
notification = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"])('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_SENT');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_3__["SetSystemFoldersNotification"].Draft:
notification = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"])('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_DRAFTS');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_3__["SetSystemFoldersNotification"].Spam:
notification = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"])('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_SPAM');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_3__["SetSystemFoldersNotification"].Trash:
notification = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"])('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_TRASH');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_3__["SetSystemFoldersNotification"].Archive:
notification = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["i18n"])('POPUPS_SYSTEM_FOLDERS/NOTIFICATION_ARCHIVE');
break;
// no default
}
this.notification(notification);
};
return FolderSystemPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 317 */
/*!***************************************!*\
!*** ./dev/Promises/AbstractBasic.js ***!
\***************************************/
/*! exports provided: AbstractBasicPromises */
/*! exports used: AbstractBasicPromises */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractBasicPromises; });
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ 151);
/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ 62);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
var AbstractBasicPromises = /*#__PURE__*/function () {
function AbstractBasicPromises() {
this.oPromisesStack = {};
}
var _proto = AbstractBasicPromises.prototype;
_proto.func = function func(fFunc) {
fFunc();
return this;
};
_proto.fastResolve = function fastResolve(mData) {
return _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default.a.resolve(mData);
};
_proto.fastReject = function fastReject(mData) {
return _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default.a.reject(mData);
};
_proto.setTrigger = function setTrigger(trigger, value) {
if (trigger) {
value = !!value;
(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(trigger) ? trigger : [trigger]).forEach(function (fTrigger) {
if (fTrigger) {
fTrigger(value);
}
});
}
};
return AbstractBasicPromises;
}();
/***/ }),
/* 318 */
/*!*************************************************!*\
!*** ./dev/View/User/AbstractSystemDropDown.js ***!
\*************************************************/
/*! exports provided: AbstractSystemDropDownUserView, default */
/*! exports used: AbstractSystemDropDownUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractSystemDropDownUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var AbstractSystemDropDownUserView = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(AbstractSystemDropDownUserView, _AbstractViewNext);
function AbstractSystemDropDownUserView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.logoImg = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["trim"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["settingsGet"]('UserLogo'));
_this.logoTitle = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["trim"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["settingsGet"]('UserLogoTitle'));
_this.mobile = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["appSettingsGet"]('mobile');
_this.mobileDevice = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["appSettingsGet"]('mobileDevice');
_this.allowSettings = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].Settings);
_this.allowHelp = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].Help);
_this.currentAudio = Stores_User_App__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].currentAudio;
_this.accountEmail = Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].email;
_this.accounts = Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].accounts;
_this.accountsUnreadCount = Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].accountsUnreadCount;
_this.accountMenuDropdownTrigger = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.capaAdditionalAccounts = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].AdditionalAccounts));
_this.addAccountClick = ___WEBPACK_IMPORTED_MODULE_2___default.a.bind(_this.addAccountClick, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
Common_Events__WEBPACK_IMPORTED_MODULE_11__[/* sub */ "b"]('audio.stop', function () {
return Stores_User_App__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].currentAudio('');
});
Common_Events__WEBPACK_IMPORTED_MODULE_11__[/* sub */ "b"]('audio.start', function (name) {
return Stores_User_App__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].currentAudio(name);
});
return _this;
}
var _proto = AbstractSystemDropDownUserView.prototype;
_proto.stopPlay = function stopPlay() {
Common_Events__WEBPACK_IMPORTED_MODULE_11__[/* pub */ "a"]('audio.api.stop');
};
_proto.accountClick = function accountClick(account, event) {
if (account && event && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isUnd"])(event.which) && 1 === event.which) {
Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].accounts.loading(true);
___WEBPACK_IMPORTED_MODULE_2___default.a.delay(function () {
return Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].accounts.loading(false);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Magics"].Time1s);
}
return true;
};
_proto.emailTitle = function emailTitle() {
return Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].email();
};
_proto.settingsClick = function settingsClick() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].Settings)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* settings */ "z"])());
}
};
_proto.settingsHelp = function settingsHelp() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_12__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].Help)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__["showScreenPopup"])(__webpack_require__(/*! View/Popup/KeyboardShortcutsHelp */ 426));
}
};
_proto.addAccountClick = function addAccountClick() {
if (this.capaAdditionalAccounts()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Account */ 392));
}
};
_proto.logoutClick = function logoutClick() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_13__[/* getApp */ "a"])().logout();
};
_proto.onBuild = function onBuild() {
var _this2 = this;
key__WEBPACK_IMPORTED_MODULE_4___default()('`', [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].MessageView, Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].Settings], function () {
if (_this2.viewModelVisibility()) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].messageFullScreenMode(false);
_this2.accountMenuDropdownTrigger(true);
}
}); // shortcuts help
key__WEBPACK_IMPORTED_MODULE_4___default()('shift+/', [Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].MessageView, Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].Settings], function () {
if (_this2.viewModelVisibility()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__["showScreenPopup"])(__webpack_require__(/*! View/Popup/KeyboardShortcutsHelp */ 426));
return false;
}
return true;
});
};
return AbstractSystemDropDownUserView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_15__[/* AbstractViewNext */ "a"]);
/***/ }),
/* 319 */
/*!********************************!*\
!*** ./dev/Common/Selector.js ***!
\********************************/
/*! exports provided: Selector, default */
/*! exports used: Selector */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Selector; });
/* unused harmony export default */
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 119);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Utils */ 2);
var Selector = /*#__PURE__*/function () {
/**
* @param {koProperty} koList
* @param {koProperty} koSelectedItem
* @param {koProperty} koFocusedItem
* @param {string} sItemSelector
* @param {string} sItemSelectedSelector
* @param {string} sItemCheckedSelector
* @param {string} sItemFocusedSelector
*/
function Selector(koList, koSelectedItem, koFocusedItem, sItemSelector, sItemSelectedSelector, sItemCheckedSelector, sItemFocusedSelector) {
var _this = this;
this.list = void 0;
this.listChecked = void 0;
this.isListChecked = void 0;
this.focusedItem = void 0;
this.selectedItem = void 0;
this.itemSelectedThrottle = void 0;
this.selectedItemUseCallback = true;
this.iSelectNextHelper = 0;
this.iFocusedNextHelper = 0;
this.oContentVisible = void 0;
this.oContentScrollable = void 0;
this.sItemSelector = void 0;
this.sItemSelectedSelector = void 0;
this.sItemCheckedSelector = void 0;
this.sItemFocusedSelector = void 0;
this.sLastUid = '';
this.oCallbacks = {};
this.list = koList;
this.listChecked = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, _this.list(), function (item) {
return item.checked();
});
}).extend({
rateLimit: 0
});
this.isListChecked = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return 0 < _this.listChecked().length;
});
this.focusedItem = koFocusedItem || ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(null);
this.selectedItem = koSelectedItem || ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(null);
this.itemSelectedThrottle = ___WEBPACK_IMPORTED_MODULE_5___default.a.debounce(___WEBPACK_IMPORTED_MODULE_5___default.a.bind(this.itemSelected, this), 300);
this.listChecked.subscribe(function (items) {
if (0 < items.length) {
if (null === _this.selectedItem()) {
if (_this.selectedItem.valueHasMutated) {
_this.selectedItem.valueHasMutated();
}
} else {
_this.selectedItem(null);
}
} else if (_this.autoSelect() && _this.focusedItem()) {
_this.selectedItem(_this.focusedItem());
}
}, this);
this.selectedItem.subscribe(function (item) {
if (item) {
if (_this.isListChecked()) {
___WEBPACK_IMPORTED_MODULE_5___default.a.each(_this.listChecked(), function (subItem) {
subItem.checked(false);
});
}
if (_this.selectedItemUseCallback) {
_this.itemSelectedThrottle(item);
}
} else if (_this.selectedItemUseCallback) {
_this.itemSelected(null);
}
}, this);
this.selectedItem = this.selectedItem.extend({
toggleSubscribeProperty: [this, 'selected']
});
this.focusedItem = this.focusedItem.extend({
toggleSubscribeProperty: [null, 'focused']
});
this.sItemSelector = sItemSelector;
this.sItemSelectedSelector = sItemSelectedSelector;
this.sItemCheckedSelector = sItemCheckedSelector;
this.sItemFocusedSelector = sItemFocusedSelector;
this.focusedItem.subscribe(function (item) {
if (item) {
_this.sLastUid = _this.getItemUid(item);
}
}, this);
var aCache = [],
aCheckedCache = [],
mFocused = null,
mSelected = null;
this.list.subscribe(function (items) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isArray"])(items)) {
___WEBPACK_IMPORTED_MODULE_5___default.a.each(items, function (item) {
if (item) {
var uid = _this.getItemUid(item);
aCache.push(uid);
if (item.checked()) {
aCheckedCache.push(uid);
}
if (null === mFocused && item.focused()) {
mFocused = uid;
}
if (null === mSelected && item.selected()) {
mSelected = uid;
}
}
});
}
}, this, 'beforeChange');
this.list.subscribe(function (aItems) {
var temp = null,
getNext = false,
isNextFocused = mFocused,
isChecked = false,
isSelected = false,
len = 0;
var uids = [];
_this.selectedItemUseCallback = false;
_this.focusedItem(null);
_this.selectedItem(null);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isArray"])(aItems)) {
len = aCheckedCache.length;
___WEBPACK_IMPORTED_MODULE_5___default.a.each(aItems, function (item) {
var uid = _this.getItemUid(item);
uids.push(uid);
if (null !== mFocused && mFocused === uid) {
_this.focusedItem(item);
mFocused = null;
}
if (0 < len && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["inArray"])(uid, aCheckedCache)) {
isChecked = true;
item.checked(true);
len -= 1;
}
if (!isChecked && null !== mSelected && mSelected === uid) {
isSelected = true;
_this.selectedItem(item);
mSelected = null;
}
});
_this.selectedItemUseCallback = true;
if (!isChecked && !isSelected && _this.autoSelect()) {
if (_this.focusedItem()) {
_this.selectedItem(_this.focusedItem());
} else if (0 < aItems.length) {
if (null !== isNextFocused) {
getNext = false;
isNextFocused = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, aCache, function (sUid) {
if (getNext && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["inArray"])(sUid, uids)) {
return sUid;
} else if (isNextFocused === sUid) {
getNext = true;
}
return false;
});
if (isNextFocused) {
temp = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_5___default.a).call(___WEBPACK_IMPORTED_MODULE_5___default.a, aItems, function (oItem) {
return isNextFocused === _this.getItemUid(oItem);
});
}
}
_this.selectedItem(temp || null);
_this.focusedItem(_this.selectedItem());
}
}
if ((0 !== _this.iSelectNextHelper || 0 !== _this.iFocusedNextHelper) && 0 < aItems.length && !_this.focusedItem()) {
temp = null;
if (0 !== _this.iFocusedNextHelper) {
temp = aItems[-1 === _this.iFocusedNextHelper ? aItems.length - 1 : 0] || null;
}
if (!temp && 0 !== _this.iSelectNextHelper) {
temp = aItems[-1 === _this.iSelectNextHelper ? aItems.length - 1 : 0] || null;
}
if (temp) {
if (0 !== _this.iSelectNextHelper) {
_this.selectedItem(temp || null);
}
_this.focusedItem(temp || null);
_this.scrollToFocused();
___WEBPACK_IMPORTED_MODULE_5___default.a.delay(function () {
return _this.scrollToFocused();
}, 100);
}
_this.iSelectNextHelper = 0;
_this.iFocusedNextHelper = 0;
}
}
aCache = [];
aCheckedCache = [];
mFocused = null;
mSelected = null;
});
}
var _proto = Selector.prototype;
_proto.itemSelected = function itemSelected(item) {
if (this.isListChecked()) {
if (!item) {
(this.oCallbacks.onItemSelect || Common_Utils__WEBPACK_IMPORTED_MODULE_9__["noop"])(item || null);
}
} else if (item) {
(this.oCallbacks.onItemSelect || Common_Utils__WEBPACK_IMPORTED_MODULE_9__["noop"])(item);
}
}
/**
* @param {boolean} forceSelect
*/
;
_proto.goDown = function goDown(forceSelect) {
this.newSelectPosition(Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down, false, forceSelect);
}
/**
* @param {boolean} forceSelect
*/
;
_proto.goUp = function goUp(forceSelect) {
this.newSelectPosition(Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up, false, forceSelect);
};
_proto.unselect = function unselect() {
this.selectedItem(null);
this.focusedItem(null);
};
_proto.init = function init(contentVisible, contentScrollable, keyScope) {
var _this2 = this;
if (keyScope === void 0) {
keyScope = 'all';
}
this.oContentVisible = contentVisible;
this.oContentScrollable = contentScrollable;
if (this.oContentVisible && this.oContentScrollable) {
$__WEBPACK_IMPORTED_MODULE_4___default()(this.oContentVisible).on('selectstart', function (event) {
if (event && event.preventDefault) {
event.preventDefault();
}
}).on('click', this.sItemSelector, function (event) {
_this2.actionClick(ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].dataFor(event.currentTarget), event);
}).on('click', this.sItemCheckedSelector, function (event) {
var item = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].dataFor(event.currentTarget);
if (item) {
if (event && event.shiftKey) {
_this2.actionClick(item, event);
} else {
_this2.focusedItem(item);
item.checked(!item.checked());
}
}
});
key__WEBPACK_IMPORTED_MODULE_6___default()('enter', keyScope, function () {
if (_this2.focusedItem() && !_this2.focusedItem().selected()) {
_this2.actionClick(_this2.focusedItem());
return false;
}
return true;
});
key__WEBPACK_IMPORTED_MODULE_6___default()('ctrl+up, command+up, ctrl+down, command+down', keyScope, function () {
return false;
});
key__WEBPACK_IMPORTED_MODULE_6___default()('up, shift+up, down, shift+down, home, end, pageup, pagedown, insert, space', keyScope, function (event, handler) {
if (event && handler && handler.shortcut) {
var eventKey = 0;
switch (handler.shortcut) {
case 'up':
case 'shift+up':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up;
break;
case 'down':
case 'shift+down':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down;
break;
case 'insert':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Insert;
break;
case 'space':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Space;
break;
case 'home':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Home;
break;
case 'end':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].End;
break;
case 'pageup':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].PageUp;
break;
case 'pagedown':
eventKey = Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].PageDown;
break;
// no default
}
if (0 < eventKey) {
_this2.newSelectPosition(eventKey, key__WEBPACK_IMPORTED_MODULE_6___default.a.shift);
return false;
}
}
return true;
});
}
}
/**
* @returns {boolean}
*/
;
_proto.autoSelect = function autoSelect() {
return !!(this.oCallbacks.onAutoSelect || Common_Utils__WEBPACK_IMPORTED_MODULE_9__["noopTrue"])();
}
/**
* @param {boolean} up
*/
;
_proto.doUpUpOrDownDown = function doUpUpOrDownDown(up) {
(this.oCallbacks.onUpUpOrDownDown || Common_Utils__WEBPACK_IMPORTED_MODULE_9__["noopTrue"])(!!up);
}
/**
* @param {Object} oItem
* @returns {string}
*/
;
_proto.getItemUid = function getItemUid(item) {
var uid = '';
var getItemUidCallback = this.oCallbacks.onItemGetUid || null;
if (getItemUidCallback && item) {
uid = getItemUidCallback(item);
}
return uid.toString();
}
/**
* @param {number} iEventKeyCode
* @param {boolean} bShiftKey
* @param {boolean=} bForceSelect = false
*/
;
_proto.newSelectPosition = function newSelectPosition(iEventKeyCode, bShiftKey, bForceSelect) {
var index = 0,
isNext = false,
isStop = false,
result = null;
var pageStep = 10,
list = this.list(),
listLen = list ? list.length : 0,
focused = this.focusedItem();
if (0 < listLen) {
if (!focused) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Insert === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Space === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Home === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].PageUp === iEventKeyCode) {
result = list[0];
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].End === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].PageDown === iEventKeyCode) {
result = list[list.length - 1];
}
} else if (focused) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Insert === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Space === iEventKeyCode) {
___WEBPACK_IMPORTED_MODULE_5___default.a.each(list, function (item) {
if (!isStop) {
switch (iEventKeyCode) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up:
if (focused === item) {
isStop = true;
} else {
result = item;
}
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down:
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Insert:
if (isNext) {
result = item;
isStop = true;
} else if (focused === item) {
isNext = true;
}
break;
// no default
}
}
});
if (!result && (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up === iEventKeyCode)) {
this.doUpUpOrDownDown(Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up === iEventKeyCode);
}
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Home === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].End === iEventKeyCode) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Home === iEventKeyCode) {
result = list[0];
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].End === iEventKeyCode) {
result = list[list.length - 1];
}
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].PageDown === iEventKeyCode) {
for (; index < listLen; index++) {
if (focused === list[index]) {
index += pageStep;
index = listLen - 1 < index ? listLen - 1 : index;
result = list[index];
break;
}
}
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].PageUp === iEventKeyCode) {
for (index = listLen; 0 <= index; index--) {
if (focused === list[index]) {
index -= pageStep;
index = 0 > index ? 0 : index;
result = list[index];
break;
}
}
}
}
}
if (result) {
this.focusedItem(result);
if (focused) {
if (bShiftKey) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down === iEventKeyCode) {
focused.checked(!focused.checked());
}
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Insert === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Space === iEventKeyCode) {
focused.checked(!focused.checked());
}
}
if ((this.autoSelect() || !!bForceSelect) && !this.isListChecked() && Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Space !== iEventKeyCode) {
this.selectedItem(result);
}
this.scrollToFocused();
} else if (focused) {
if (bShiftKey && (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down === iEventKeyCode)) {
focused.checked(!focused.checked());
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Insert === iEventKeyCode || Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Space === iEventKeyCode) {
focused.checked(!focused.checked());
}
this.focusedItem(focused);
}
}
/**
* @returns {boolean}
*/
;
_proto.scrollToFocused = function scrollToFocused() {
if (!this.oContentVisible || !this.oContentScrollable) {
return false;
}
var offset = 20,
list = this.list(),
$focused = $__WEBPACK_IMPORTED_MODULE_4___default()(this.sItemFocusedSelector, this.oContentScrollable),
pos = $focused.position(),
visibleHeight = this.oContentVisible.height(),
focusedHeight = $focused.outerHeight();
if (list && list[0] && list[0].focused()) {
this.oContentScrollable.scrollTop(0);
return true;
} else if (pos && (0 > pos.top || pos.top + focusedHeight > visibleHeight)) {
this.oContentScrollable.scrollTop(0 > pos.top ? this.oContentScrollable.scrollTop() + pos.top - offset : this.oContentScrollable.scrollTop() + pos.top - visibleHeight + focusedHeight + offset);
return true;
}
return false;
}
/**
* @param {boolean=} fast = false
* @returns {boolean}
*/
;
_proto.scrollToTop = function scrollToTop(fast) {
if (fast === void 0) {
fast = false;
}
if (!this.oContentVisible || !this.oContentScrollable) {
return false;
}
if (fast || 50 > this.oContentScrollable.scrollTop()) {
this.oContentScrollable.scrollTop(0);
} else {
this.oContentScrollable.stop().animate({
scrollTop: 0
}, 200);
}
return true;
};
_proto.eventClickFunction = function eventClickFunction(item, event) {
var index = 0,
length = 0,
changeRange = false,
isInRange = false,
list = [],
checked = false,
listItem = null,
lineUid = '';
var uid = this.getItemUid(item);
if (event && event.shiftKey) {
if ('' !== uid && '' !== this.sLastUid && uid !== this.sLastUid) {
list = this.list();
checked = item.checked();
for (index = 0, length = list.length; index < length; index++) {
listItem = list[index];
lineUid = this.getItemUid(listItem);
changeRange = false;
if (lineUid === this.sLastUid || lineUid === uid) {
changeRange = true;
}
if (changeRange) {
isInRange = !isInRange;
}
if (isInRange || changeRange) {
listItem.checked(checked);
}
}
}
}
this.sLastUid = '' === uid ? '' : uid;
}
/**
* @param {Object} item
* @param {Object=} event
*/
;
_proto.actionClick = function actionClick(item, event) {
if (event === void 0) {
event = null;
}
if (item) {
var click = true;
if (event) {
if (event.shiftKey && !(event.ctrlKey || event.metaKey) && !event.altKey) {
click = false;
if ('' === this.sLastUid) {
this.sLastUid = this.getItemUid(item);
}
item.checked(!item.checked());
this.eventClickFunction(item, event);
this.focusedItem(item);
} else if ((event.ctrlKey || event.metaKey) && !event.shiftKey && !event.altKey) {
click = false;
this.focusedItem(item);
if (this.selectedItem() && item !== this.selectedItem()) {
this.selectedItem().checked(true);
}
item.checked(!item.checked());
}
}
if (click) {
this.selectMessageItem(item);
}
}
};
_proto.on = function on(eventName, callback) {
this.oCallbacks[eventName] = callback;
};
_proto.selectMessageItem = function selectMessageItem(messageItem) {
this.focusedItem(messageItem);
this.selectedItem(messageItem);
this.scrollToFocused();
};
return Selector;
}();
/***/ }),
/* 320 */
/*!******************************!*\
!*** ./dev/Model/Message.js ***!
\******************************/
/*! exports provided: MessageModel, default */
/*! exports used: MessageModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MessageModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/reduce */ 227);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ 175);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! moment */ 100);
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! classnames */ 436);
/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! lozad */ 437);
/* harmony import */ var lozad__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(lozad__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Helper_Message__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Helper/Message */ 64);
/* harmony import */ var Model_Attachment__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Model/Attachment */ 207);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var MessageModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(MessageModel, _AbstractModel);
function MessageModel() {
var _this;
_this = _AbstractModel.call(this, 'MessageModel') || this;
_this.folderFullNameRaw = '';
_this.uid = '';
_this.hash = '';
_this.requestHash = '';
_this.subject = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.subjectPrefix = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.subjectSuffix = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.size = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(0);
_this.dateTimeStampInUTC = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(0);
_this.priority = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal);
_this.proxy = false;
_this.fromEmailString = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.fromClearEmailString = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.toEmailsString = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.toClearEmailsString = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.senderEmailsString = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.senderClearEmailsString = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.emails = [];
_this.from = [];
_this.to = [];
_this.cc = [];
_this.bcc = [];
_this.replyTo = [];
_this.deliveredTo = [];
_this.unsubsribeLinks = [];
_this.newForAnimation = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.deleted = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.deletedMark = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.unseen = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.flagged = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.answered = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.forwarded = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.isReadReceipt = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.focused = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.selected = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.checked = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.hasAttachments = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.attachmentsSpecData = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observableArray([]);
_this.attachmentIconClass = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return Object(Model_Attachment__WEBPACK_IMPORTED_MODULE_23__[/* staticCombinedIconClass */ "b"])(_this.hasAttachments() ? _this.attachmentsSpecData() : []);
});
_this.body = null;
_this.isHtml = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.hasImages = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.attachments = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observableArray([]);
_this.isPgpSigned = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.isPgpEncrypted = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.pgpSignedVerifyStatus = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["SignedVerifyStatus"].None);
_this.pgpSignedVerifyUser = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.priority = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal);
_this.readReceipt = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable('');
_this.aDraftInfo = [];
_this.sMessageId = '';
_this.sInReplyTo = '';
_this.sReferences = '';
_this.hasUnseenSubMessage = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.hasFlaggedSubMessage = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observable(false);
_this.threads = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].observableArray([]);
_this.threadsLen = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return _this.threads().length;
});
_this.isImportant = ko__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].High === _this.priority();
});
_this.regDisposables([_this.attachmentIconClass, _this.threadsLen, _this.isImportant]);
return _this;
}
/**
* @static
* @param {AjaxJsonMessage} oJsonMessage
* @returns {?MessageModel}
*/
MessageModel.newInstanceFromJson = function newInstanceFromJson(json) {
var oMessageModel = new MessageModel();
return oMessageModel.initByJson(json) ? oMessageModel : null;
};
var _proto = MessageModel.prototype;
_proto.clear = function clear() {
this.folderFullNameRaw = '';
this.uid = '';
this.hash = '';
this.requestHash = '';
this.subject('');
this.subjectPrefix('');
this.subjectSuffix('');
this.size(0);
this.dateTimeStampInUTC(0);
this.priority(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal);
this.proxy = false;
this.fromEmailString('');
this.fromClearEmailString('');
this.toEmailsString('');
this.toClearEmailsString('');
this.senderEmailsString('');
this.senderClearEmailsString('');
this.emails = [];
this.from = [];
this.to = [];
this.cc = [];
this.bcc = [];
this.replyTo = [];
this.deliveredTo = [];
this.unsubsribeLinks = [];
this.newForAnimation(false);
this.deleted(false);
this.deletedMark(false);
this.unseen(false);
this.flagged(false);
this.answered(false);
this.forwarded(false);
this.isReadReceipt(false);
this.selected(false);
this.checked(false);
this.hasAttachments(false);
this.attachmentsSpecData([]);
this.body = null;
this.isHtml(false);
this.hasImages(false);
this.attachments([]);
this.isPgpSigned(false);
this.isPgpEncrypted(false);
this.pgpSignedVerifyStatus(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["SignedVerifyStatus"].None);
this.pgpSignedVerifyUser('');
this.priority(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal);
this.readReceipt('');
this.aDraftInfo = [];
this.sMessageId = '';
this.sInReplyTo = '';
this.sReferences = '';
this.threads([]);
this.hasUnseenSubMessage(false);
this.hasFlaggedSubMessage(false);
}
/**
* @param {Array} properties
* @returns {Array}
*/
;
_proto.getEmails = function getEmails(properties) {
var _this2 = this;
return ___WEBPACK_IMPORTED_MODULE_8___default.a.compact(___WEBPACK_IMPORTED_MODULE_8___default.a.uniq(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_8___default.a).call(___WEBPACK_IMPORTED_MODULE_8___default.a, _babel_runtime_corejs3_core_js_stable_instance_reduce__WEBPACK_IMPORTED_MODULE_5___default()(___WEBPACK_IMPORTED_MODULE_8___default.a).call(___WEBPACK_IMPORTED_MODULE_8___default.a, properties, function (carry, property) {
return _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_6___default()(carry).call(carry, _this2[property]);
}, []), function (oItem) {
return oItem ? oItem.email : '';
})));
}
/**
* @returns {Array}
*/
;
_proto.getRecipientsEmails = function getRecipientsEmails() {
return this.getEmails(['to', 'cc']);
}
/**
* @returns {string}
*/
;
_proto.friendlySize = function friendlySize() {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["friendlySize"])(this.size());
};
_proto.computeSenderEmail = function computeSenderEmail() {
var sentFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].sentFolder(),
draftFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].draftFolder();
this.senderEmailsString(this.folderFullNameRaw === sentFolder || this.folderFullNameRaw === draftFolder ? this.toEmailsString() : this.fromEmailString());
this.senderClearEmailsString(this.folderFullNameRaw === sentFolder || this.folderFullNameRaw === draftFolder ? this.toClearEmailsString() : this.fromClearEmailString());
}
/**
* @param {AjaxJsonMessage} json
* @returns {boolean}
*/
;
_proto.initByJson = function initByJson(json) {
var result = false,
priority = Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal;
if (json && 'Object/Message' === json['@Object']) {
priority = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["pInt"])(json.Priority);
this.priority(-1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["inArray"])(priority, [Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].High, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Low]) ? priority : Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal);
this.folderFullNameRaw = json.Folder;
this.uid = json.Uid;
this.hash = json.Hash;
this.requestHash = json.RequestHash;
this.proxy = !!json.ExternalProxy;
this.size(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["pInt"])(json.Size));
this.from = Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayFromJson */ "a"])(json.From);
this.to = Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayFromJson */ "a"])(json.To);
this.cc = Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayFromJson */ "a"])(json.Cc);
this.bcc = Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayFromJson */ "a"])(json.Bcc);
this.replyTo = Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayFromJson */ "a"])(json.ReplyTo);
this.deliveredTo = Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayFromJson */ "a"])(json.DeliveredTo);
this.unsubsribeLinks = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isNonEmptyArray"])(json.UnsubsribeLinks) ? json.UnsubsribeLinks : [];
this.subject(json.Subject);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isArray"])(json.SubjectParts)) {
this.subjectPrefix(json.SubjectParts[0]);
this.subjectSuffix(json.SubjectParts[1]);
} else {
this.subjectPrefix('');
this.subjectSuffix(this.subject());
}
this.dateTimeStampInUTC(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["pInt"])(json.DateTimeStampInUTC));
this.hasAttachments(!!json.HasAttachments);
this.attachmentsSpecData(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isArray"])(json.AttachmentsSpecData) ? json.AttachmentsSpecData : []);
this.fromEmailString(Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToString */ "b"])(this.from, true));
this.fromClearEmailString(Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToStringClear */ "c"])(this.from));
this.toEmailsString(Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToString */ "b"])(this.to, true));
this.toClearEmailsString(Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToStringClear */ "c"])(this.to));
this.threads(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isArray"])(json.Threads) ? json.Threads : []);
this.initFlagsByJson(json);
this.computeSenderEmail();
result = true;
}
return result;
}
/**
* @param {AjaxJsonMessage} json
* @returns {boolean}
*/
;
_proto.initUpdateByMessageJson = function initUpdateByMessageJson(json) {
var result = false,
priority = Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal;
if (json && 'Object/Message' === json['@Object']) {
priority = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["pInt"])(json.Priority);
this.priority(-1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["inArray"])(priority, [Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].High, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Low]) ? priority : Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessagePriority"].Normal);
this.aDraftInfo = json.DraftInfo;
this.sMessageId = json.MessageId;
this.sInReplyTo = json.InReplyTo;
this.sReferences = json.References;
this.proxy = !!json.ExternalProxy;
if (Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].capaOpenPGP()) {
this.isPgpSigned(!!json.PgpSigned);
this.isPgpEncrypted(!!json.PgpEncrypted);
}
this.hasAttachments(!!json.HasAttachments);
this.attachmentsSpecData(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isArray"])(json.AttachmentsSpecData) ? json.AttachmentsSpecData : []);
this.foundedCIDs = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isArray"])(json.FoundedCIDs) ? json.FoundedCIDs : [];
this.attachments(this.initAttachmentsFromJson(json.Attachments));
this.readReceipt(json.ReadReceipt || '');
this.computeSenderEmail();
result = true;
}
return result;
}
/**
* @param {(AjaxJsonAttachment|null)} oJsonAttachments
* @returns {Array}
*/
;
_proto.initAttachmentsFromJson = function initAttachmentsFromJson(json) {
var index = 0,
len = 0,
attachment = null;
var result = [];
if (json && 'Collection/AttachmentCollection' === json['@Object'] && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isNonEmptyArray"])(json['@Collection'])) {
for (index = 0, len = json['@Collection'].length; index < len; index++) {
attachment = Model_Attachment__WEBPACK_IMPORTED_MODULE_23__[/* AttachmentModel */ "a"].newInstanceFromJson(json['@Collection'][index]);
if (attachment) {
if ('' !== attachment.cidWithOutTags && 0 < this.foundedCIDs.length && 0 <= Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["inArray"])(attachment.cidWithOutTags, this.foundedCIDs)) {
attachment.isLinked = true;
}
result.push(attachment);
}
}
}
return result;
}
/**
* @returns {boolean}
*/
;
_proto.hasUnsubsribeLinks = function hasUnsubsribeLinks() {
return this.unsubsribeLinks && 0 < this.unsubsribeLinks.length;
}
/**
* @returns {string}
*/
;
_proto.getFirstUnsubsribeLink = function getFirstUnsubsribeLink() {
return this.unsubsribeLinks && 0 < this.unsubsribeLinks.length ? this.unsubsribeLinks[0] || '' : '';
}
/**
* @param {AjaxJsonMessage} json
* @returns {boolean}
*/
;
_proto.initFlagsByJson = function initFlagsByJson(json) {
var result = false;
if (json && 'Object/Message' === json['@Object']) {
this.unseen(!json.IsSeen);
this.flagged(!!json.IsFlagged);
this.answered(!!json.IsAnswered);
this.forwarded(!!json.IsForwarded);
this.isReadReceipt(!!json.IsReadReceipt);
this.deletedMark(!!json.IsDeleted);
result = true;
}
return result;
}
/**
* @param {boolean} friendlyView
* @param {boolean=} wrapWithLink = false
* @returns {string}
*/
;
_proto.fromToLine = function fromToLine(friendlyView, wrapWithLink) {
if (wrapWithLink === void 0) {
wrapWithLink = false;
}
return Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToString */ "b"])(this.from, friendlyView, wrapWithLink);
}
/**
* @returns {string}
*/
;
_proto.fromDkimData = function fromDkimData() {
var result = ['none', ''];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isNonEmptyArray"])(this.from) && 1 === this.from.length && this.from[0] && this.from[0].dkimStatus) {
result = [this.from[0].dkimStatus, this.from[0].dkimValue || ''];
}
return result;
}
/**
* @param {boolean} friendlyView
* @param {boolean=} wrapWithLink = false
* @returns {string}
*/
;
_proto.toToLine = function toToLine(friendlyView, wrapWithLink) {
if (wrapWithLink === void 0) {
wrapWithLink = false;
}
return Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToString */ "b"])(this.to, friendlyView, wrapWithLink);
}
/**
* @param {boolean} friendlyView
* @param {boolean=} wrapWithLink = false
* @returns {string}
*/
;
_proto.ccToLine = function ccToLine(friendlyView, wrapWithLink) {
if (wrapWithLink === void 0) {
wrapWithLink = false;
}
return Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToString */ "b"])(this.cc, friendlyView, wrapWithLink);
}
/**
* @param {boolean} friendlyView
* @param {boolean=} wrapWithLink = false
* @returns {string}
*/
;
_proto.bccToLine = function bccToLine(friendlyView, wrapWithLink) {
if (wrapWithLink === void 0) {
wrapWithLink = false;
}
return Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToString */ "b"])(this.bcc, friendlyView, wrapWithLink);
}
/**
* @param {boolean} friendlyView
* @param {boolean=} wrapWithLink = false
* @returns {string}
*/
;
_proto.replyToToLine = function replyToToLine(friendlyView, wrapWithLink) {
if (wrapWithLink === void 0) {
wrapWithLink = false;
}
return Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* emailArrayToString */ "b"])(this.replyTo, friendlyView, wrapWithLink);
}
/**
* @return string
*/
;
_proto.lineAsCss = function lineAsCss() {
return classnames__WEBPACK_IMPORTED_MODULE_12___default()({
'deleted': this.deleted(),
'deleted-mark': this.deletedMark(),
'selected': this.selected(),
'checked': this.checked(),
'flagged': this.flagged(),
'unseen': this.unseen(),
'answered': this.answered(),
'forwarded': this.forwarded(),
'focused': this.focused(),
'important': this.isImportant(),
'withAttachments': this.hasAttachments(),
'new': this.newForAnimation(),
'emptySubject': '' === this.subject(),
// 'hasChildrenMessage': 1 < this.threadsLen(),
'hasUnseenSubMessage': this.hasUnseenSubMessage(),
'hasFlaggedSubMessage': this.hasFlaggedSubMessage()
});
}
/**
* @returns {boolean}
*/
;
_proto.hasVisibleAttachments = function hasVisibleAttachments() {
return !!_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_8___default.a).call(___WEBPACK_IMPORTED_MODULE_8___default.a, this.attachments(), function (item) {
return !item.isLinked;
});
}
/**
* @param {string} cid
* @returns {*}
*/
;
_proto.findAttachmentByCid = function findAttachmentByCid(cid) {
var result = null;
var attachments = this.attachments();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isNonEmptyArray"])(attachments)) {
cid = cid.replace(/^<+/, '').replace(/>+$/, '');
result = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_8___default.a).call(___WEBPACK_IMPORTED_MODULE_8___default.a, attachments, function (item) {
return cid === item.cidWithOutTags;
});
}
return result || null;
}
/**
* @param {string} contentLocation
* @returns {*}
*/
;
_proto.findAttachmentByContentLocation = function findAttachmentByContentLocation(contentLocation) {
var result = null;
var attachments = this.attachments();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isNonEmptyArray"])(attachments)) {
result = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_8___default.a).call(___WEBPACK_IMPORTED_MODULE_8___default.a, attachments, function (item) {
return contentLocation === item.contentLocation;
});
}
return result || null;
}
/**
* @returns {string}
*/
;
_proto.messageId = function messageId() {
return this.sMessageId;
}
/**
* @returns {string}
*/
;
_proto.inReplyTo = function inReplyTo() {
return this.sInReplyTo;
}
/**
* @returns {string}
*/
;
_proto.references = function references() {
return this.sReferences;
}
/**
* @returns {string}
*/
;
_proto.fromAsSingleEmail = function fromAsSingleEmail() {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isArray"])(this.from) && this.from[0] ? this.from[0].email : '';
}
/**
* @returns {string}
*/
;
_proto.viewLink = function viewLink() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* messageViewLink */ "q"])(this.requestHash);
}
/**
* @returns {string}
*/
;
_proto.downloadLink = function downloadLink() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* messageDownloadLink */ "p"])(this.requestHash);
}
/**
* @param {Object} excludeEmails
* @param {boolean=} last = false
* @returns {Array}
*/
;
_proto.replyEmails = function replyEmails(excludeEmails, last) {
if (last === void 0) {
last = false;
}
var result = [],
unic = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isUnd"])(excludeEmails) ? {} : excludeEmails;
Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* replyHelper */ "d"])(this.replyTo, unic, result);
if (0 === result.length) {
Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* replyHelper */ "d"])(this.from, unic, result);
}
if (0 === result.length && !last) {
return this.replyEmails({}, true);
}
return result;
}
/**
* @param {Object} excludeEmails
* @param {boolean=} last = false
* @returns {Array.<Array>}
*/
;
_proto.replyAllEmails = function replyAllEmails(excludeEmails, last) {
if (last === void 0) {
last = false;
}
var data = [];
var toResult = [],
ccResult = [],
unic = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["isUnd"])(excludeEmails) ? {} : excludeEmails;
Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* replyHelper */ "d"])(this.replyTo, unic, toResult);
if (0 === toResult.length) {
Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* replyHelper */ "d"])(this.from, unic, toResult);
}
Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* replyHelper */ "d"])(this.to, unic, toResult);
Object(Helper_Message__WEBPACK_IMPORTED_MODULE_22__[/* replyHelper */ "d"])(this.cc, unic, ccResult);
if (0 === toResult.length && !last) {
data = this.replyAllEmails({}, true);
return [data[0], ccResult];
}
return [toResult, ccResult];
}
/**
* @returns {string}
*/
;
_proto.textBodyToString = function textBodyToString() {
return this.body ? this.body.html() : '';
}
/**
* @returns {string}
*/
;
_proto.attachmentsToStringLine = function attachmentsToStringLine() {
var attachLines = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_8___default.a).call(___WEBPACK_IMPORTED_MODULE_8___default.a, this.attachments(), function (item) {
return item.fileName + ' (' + item.friendlySize + ')';
});
return attachLines && 0 < attachLines.length ? attachLines.join(', ') : '';
}
/**
* @param {boolean=} print = false
*/
;
_proto.viewPopupMessage = function viewPopupMessage(print) {
if (print === void 0) {
print = false;
}
this.showLazyExternalImagesInBody();
var timeStampInUTC = this.dateTimeStampInUTC() || 0,
ccLine = this.ccToLine(false),
m = 0 < timeStampInUTC ? moment__WEBPACK_IMPORTED_MODULE_11___default.a.unix(timeStampInUTC) : null;
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["previewMessage"])({
title: this.subject(),
subject: this.subject(),
date: m ? m.format('LLL') : '',
fromCreds: this.fromToLine(false),
toLabel: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_15__["i18n"])('MESSAGE/LABEL_TO'),
toCreds: this.toToLine(false),
ccClass: ccLine ? '' : 'rl-preview-hide',
ccLabel: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_15__["i18n"])('MESSAGE/LABEL_CC'),
ccCreds: ccLine
}, this.body, this.isHtml(), print);
};
_proto.printMessage = function printMessage() {
this.viewPopupMessage(true);
}
/**
* @returns {string}
*/
;
_proto.generateUid = function generateUid() {
return this.folderFullNameRaw + '/' + this.uid;
}
/**
* @param {MessageModel} message
* @returns {MessageModel}
*/
;
_proto.populateByMessageListItem = function populateByMessageListItem(message) {
if (message) {
this.folderFullNameRaw = message.folderFullNameRaw;
this.uid = message.uid;
this.hash = message.hash;
this.requestHash = message.requestHash;
this.subject(message.subject());
}
this.subjectPrefix(this.subjectPrefix());
this.subjectSuffix(this.subjectSuffix());
if (message) {
this.size(message.size());
this.dateTimeStampInUTC(message.dateTimeStampInUTC());
this.priority(message.priority());
this.proxy = message.proxy;
this.fromEmailString(message.fromEmailString());
this.fromClearEmailString(message.fromClearEmailString());
this.toEmailsString(message.toEmailsString());
this.toClearEmailsString(message.toClearEmailsString());
this.emails = message.emails;
this.from = message.from;
this.to = message.to;
this.cc = message.cc;
this.bcc = message.bcc;
this.replyTo = message.replyTo;
this.deliveredTo = message.deliveredTo;
this.unsubsribeLinks = message.unsubsribeLinks;
this.unseen(message.unseen());
this.flagged(message.flagged());
this.answered(message.answered());
this.forwarded(message.forwarded());
this.isReadReceipt(message.isReadReceipt());
this.deletedMark(message.deletedMark());
this.priority(message.priority());
this.selected(message.selected());
this.checked(message.checked());
this.hasAttachments(message.hasAttachments());
this.attachmentsSpecData(message.attachmentsSpecData());
}
this.body = null;
this.aDraftInfo = [];
this.sMessageId = '';
this.sInReplyTo = '';
this.sReferences = '';
if (message) {
this.threads(message.threads());
}
this.computeSenderEmail();
return this;
};
_proto.showLazyExternalImagesInBody = function showLazyExternalImagesInBody() {
if (this.body) {
$__WEBPACK_IMPORTED_MODULE_9___default()('.lazy[data-original]', this.body).each(function () {
$__WEBPACK_IMPORTED_MODULE_9___default()(this).attr('src', $__WEBPACK_IMPORTED_MODULE_9___default()(this).attr('data-original')) // eslint-disable-line no-invalid-this
.removeAttr('data-original').removeAttr('data-loaded');
});
}
};
_proto.lozad = function lozad() {
lozad__WEBPACK_IMPORTED_MODULE_13___default()('img.lazy:not(.lazy-inited)', {
threshold: 0.4,
load: function load(element) {
// console.log('lazy', element.dataset.original);
element.src = Common_Consts__WEBPACK_IMPORTED_MODULE_16__[/* DATA_IMAGE_LAZY_PLACEHOLDER_PIC */ "e"];
$__WEBPACK_IMPORTED_MODULE_9___default()(element).addClass('lazy-inited').attr('src', element.dataset.original).removeAttr('data-loaded').removeAttr('data-original').css({
opacity: 0.3
}).animate({
opacity: 1
}, 500);
}
}).observe();
};
_proto.showExternalImages = function showExternalImages(lazy) {
if (lazy === void 0) {
lazy = false;
}
if (this.body && this.body.data('rl-has-images')) {
this.hasImages(false);
this.body.data('rl-has-images', false);
var attr = this.proxy ? 'data-x-additional-src' : 'data-x-src';
$__WEBPACK_IMPORTED_MODULE_9___default()('[' + attr + ']', this.body).each(function () {
var $this = $__WEBPACK_IMPORTED_MODULE_9___default()(this); // eslint-disable-line no-invalid-this
if (lazy && $this.is('img')) {
$this.addClass('lazy').attr('data-original', $this.attr(attr)).removeAttr('data-loaded');
} else {
$this.attr('src', $this.attr(attr)).removeAttr('data-loaded');
}
});
attr = this.proxy ? 'data-x-additional-style-url' : 'data-x-style-url';
$__WEBPACK_IMPORTED_MODULE_9___default()('[' + attr + ']', this.body).each(function () {
var $this = $__WEBPACK_IMPORTED_MODULE_9___default()(this); // eslint-disable-line no-invalid-this
var style = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["trim"])($this.attr('style'));
style = '' === style ? '' : ';' === style.substr(-1) ? style + ' ' : style + '; ';
$this.attr('style', style + $this.attr(attr));
});
if (lazy) {
this.lozad();
Common_Globals__WEBPACK_IMPORTED_MODULE_18__["$win"].resize();
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["windowResize"])(500);
}
};
_proto.showInternalImages = function showInternalImages(lazy) {
var _this3 = this;
if (lazy === void 0) {
lazy = false;
}
if (this.body && !this.body.data('rl-init-internal-images')) {
this.body.data('rl-init-internal-images', true);
var self = this;
$__WEBPACK_IMPORTED_MODULE_9___default()('[data-x-src-cid]', this.body).each(function () {
var $this = $__WEBPACK_IMPORTED_MODULE_9___default()(this),
// eslint-disable-line no-invalid-this
attachment = self.findAttachmentByCid($this.attr('data-x-src-cid'));
if (attachment && attachment.download) {
if (lazy && $this.is('img')) {
$this.addClass('lazy').attr('data-original', attachment.linkPreview());
} else {
$this.attr('src', attachment.linkPreview());
}
}
});
$__WEBPACK_IMPORTED_MODULE_9___default()('[data-x-src-location]', this.body).each(function () {
var $this = $__WEBPACK_IMPORTED_MODULE_9___default()(this); // eslint-disable-line no-invalid-this
var attachment = self.findAttachmentByContentLocation($this.attr('data-x-src-location'));
if (!attachment) {
attachment = self.findAttachmentByCid($this.attr('data-x-src-location'));
}
if (attachment && attachment.download) {
if (lazy && $this.is('img')) {
$this.addClass('lazy').attr('data-original', attachment.linkPreview());
} else {
$this.attr('src', attachment.linkPreview());
}
}
});
$__WEBPACK_IMPORTED_MODULE_9___default()('[data-x-style-cid]', this.body).each(function () {
var style = '',
name = '';
var $this = $__WEBPACK_IMPORTED_MODULE_9___default()(this),
// eslint-disable-line no-invalid-this
attachment = self.findAttachmentByCid($this.attr('data-x-style-cid'));
if (attachment && attachment.linkPreview) {
name = $this.attr('data-x-style-cid-name');
if ('' !== name) {
style = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["trim"])($this.attr('style'));
style = '' === style ? '' : ';' === style.substr(-1) ? style + ' ' : style + '; ';
$this.attr('style', style + name + ": url('" + attachment.linkPreview() + "')");
}
}
});
if (lazy) {
// $('.RL-MailMessageView .messageView .messageItem .content')[0]
___WEBPACK_IMPORTED_MODULE_8___default.a.delay(function () {
return _this3.lozad();
}, 300);
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_17__["windowResize"])(500);
}
};
_proto.storeDataInDom = function storeDataInDom() {
if (this.body) {
this.body.data('rl-is-html', !!this.isHtml());
this.body.data('rl-has-images', !!this.hasImages());
}
};
_proto.fetchDataFromDom = function fetchDataFromDom() {
if (this.body) {
this.isHtml(!!this.body.data('rl-is-html'));
this.hasImages(!!this.body.data('rl-has-images'));
}
};
_proto.replacePlaneTextBody = function replacePlaneTextBody(plain) {
if (this.body) {
this.body.html(plain).addClass('b-text-part plain');
}
}
/**
* @returns {string}
*/
;
_proto.flagHash = function flagHash() {
return [this.deleted(), this.deletedMark(), this.unseen(), this.flagged(), this.answered(), this.forwarded(), this.isReadReceipt()].join(',');
};
return MessageModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_24__[/* AbstractModel */ "a"]);
/***/ }),
/* 321 */
/*!*************************************************!*\
!*** ./node_modules/js-cookie/src/js.cookie.js ***!
\*************************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
* JavaScript Cookie v2.2.1
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
;(function (factory) {
var registeredInModuleLoader;
if (true) {
!(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
__WEBPACK_AMD_DEFINE_FACTORY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
registeredInModuleLoader = true;
}
if (true) {
module.exports = factory();
registeredInModuleLoader = true;
}
if (!registeredInModuleLoader) {
var OldCookies = window.Cookies;
var api = window.Cookies = factory();
api.noConflict = function () {
window.Cookies = OldCookies;
return api;
};
}
}(function () {
function extend () {
var i = 0;
var result = {};
for (; i < arguments.length; i++) {
var attributes = arguments[ i ];
for (var key in attributes) {
result[key] = attributes[key];
}
}
return result;
}
function decode (s) {
return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
}
function init (converter) {
function api() {}
function set (key, value, attributes) {
if (typeof document === 'undefined') {
return;
}
attributes = extend({
path: '/'
}, api.defaults, attributes);
if (typeof attributes.expires === 'number') {
attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
}
// We're using "expires" because "max-age" is not supported by IE
attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';
try {
var result = JSON.stringify(value);
if (/^[\{\[]/.test(result)) {
value = result;
}
} catch (e) {}
value = converter.write ?
converter.write(value, key) :
encodeURIComponent(String(value))
.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);
key = encodeURIComponent(String(key))
.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
.replace(/[\(\)]/g, escape);
var stringifiedAttributes = '';
for (var attributeName in attributes) {
if (!attributes[attributeName]) {
continue;
}
stringifiedAttributes += '; ' + attributeName;
if (attributes[attributeName] === true) {
continue;
}
// Considers RFC 6265 section 5.2:
// ...
// 3. If the remaining unparsed-attributes contains a %x3B (";")
// character:
// Consume the characters of the unparsed-attributes up to,
// not including, the first %x3B (";") character.
// ...
stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
}
return (document.cookie = key + '=' + value + stringifiedAttributes);
}
function get (key, json) {
if (typeof document === 'undefined') {
return;
}
var jar = {};
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all.
var cookies = document.cookie ? document.cookie.split('; ') : [];
var i = 0;
for (; i < cookies.length; i++) {
var parts = cookies[i].split('=');
var cookie = parts.slice(1).join('=');
if (!json && cookie.charAt(0) === '"') {
cookie = cookie.slice(1, -1);
}
try {
var name = decode(parts[0]);
cookie = (converter.read || converter)(cookie, name) ||
decode(cookie);
if (json) {
try {
cookie = JSON.parse(cookie);
} catch (e) {}
}
jar[name] = cookie;
if (key === name) {
break;
}
} catch (e) {}
}
return key ? jar[key] : jar;
}
api.set = set;
api.get = function (key) {
return get(key, false /* read as raw */);
};
api.getJSON = function (key) {
return get(key, true /* read as json */);
};
api.remove = function (key, attributes) {
set(key, '', extend(attributes, {
expires: -1
}));
};
api.defaults = {};
api.withConverter = init;
return api;
}
return init(function () {});
}));
/***/ }),
/* 322 */,
/* 323 */,
/* 324 */,
/* 325 */
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/create-html.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 56);
var quot = /"/g;
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
// https://tc39.es/ecma262/#sec-createhtml
module.exports = function (string, tag, attribute, value) {
var S = String(requireObjectCoercible(string));
var p1 = '<' + tag;
if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
return p1 + '>' + S + '</' + tag + '>';
};
/***/ }),
/* 326 */
/*!**************************************************************!*\
!*** ./node_modules/core-js/internals/string-html-forced.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 37);
// check the existence of a method, lowercase
// of a tag and escaping quotes in arguments
module.exports = function (METHOD_NAME) {
return fails(function () {
var test = ''[METHOD_NAME]('"');
return test !== test.toLowerCase() || test.split('"').length > 3;
});
};
/***/ }),
/* 327 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/trim.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/trim */ 328);
module.exports = parent;
/***/ }),
/* 328 */
/*!*******************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/trim.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var trim = __webpack_require__(/*! ../string/virtual/trim */ 329);
var StringPrototype = String.prototype;
module.exports = function (it) {
var own = it.trim;
return typeof it === 'string' || it === StringPrototype
|| (it instanceof String && own === StringPrototype.trim) ? trim : own;
};
/***/ }),
/* 329 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/es/string/virtual/trim.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.string.trim */ 330);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('String').trim;
/***/ }),
/* 330 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.string.trim.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var $trim = __webpack_require__(/*! ../internals/string-trim */ 331).trim;
var forcedStringTrimMethod = __webpack_require__(/*! ../internals/string-trim-forced */ 332);
// `String.prototype.trim` method
// https://tc39.es/ecma262/#sec-string.prototype.trim
$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {
trim: function trim() {
return $trim(this);
}
});
/***/ }),
/* 331 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/internals/string-trim.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ 115);
var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ 285);
var whitespace = '[' + whitespaces + ']';
var ltrim = RegExp('^' + whitespace + whitespace + '*');
var rtrim = RegExp(whitespace + whitespace + '*$');
// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation
var createMethod = function (TYPE) {
return function ($this) {
var string = String(requireObjectCoercible($this));
if (TYPE & 1) string = string.replace(ltrim, '');
if (TYPE & 2) string = string.replace(rtrim, '');
return string;
};
};
module.exports = {
// `String.prototype.{ trimLeft, trimStart }` methods
// https://tc39.es/ecma262/#sec-string.prototype.trimstart
start: createMethod(1),
// `String.prototype.{ trimRight, trimEnd }` methods
// https://tc39.es/ecma262/#sec-string.prototype.trimend
end: createMethod(2),
// `String.prototype.trim` method
// https://tc39.es/ecma262/#sec-string.prototype.trim
trim: createMethod(3)
};
/***/ }),
/* 332 */
/*!*******************************************************************!*\
!*** ./node_modules/core-js-pure/internals/string-trim-forced.js ***!
\*******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var whitespaces = __webpack_require__(/*! ../internals/whitespaces */ 285);
var non = '\u200B\u0085\u180E';
// check that a method works with the correct list
// of whitespaces and has a correct name
module.exports = function (METHOD_NAME) {
return fails(function () {
return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;
});
};
/***/ }),
/* 333 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/find.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/find */ 334);
module.exports = parent;
/***/ }),
/* 334 */
/*!*******************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/find.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var find = __webpack_require__(/*! ../array/virtual/find */ 335);
var ArrayPrototype = Array.prototype;
module.exports = function (it) {
var own = it.find;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.find) ? find : own;
};
/***/ }),
/* 335 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/find.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.find */ 336);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').find;
/***/ }),
/* 336 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.find.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var $find = __webpack_require__(/*! ../internals/array-iteration */ 172).find;
var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ 222);
var arrayMethodUsesToLength = __webpack_require__(/*! ../internals/array-method-uses-to-length */ 120);
var FIND = 'find';
var SKIPS_HOLES = true;
var USES_TO_LENGTH = arrayMethodUsesToLength(FIND);
// Shouldn't skip holes
if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
// `Array.prototype.find` method
// https://tc39.es/ecma262/#sec-array.prototype.find
$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {
find: function find(callbackfn /* , that = undefined */) {
return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables(FIND);
/***/ }),
/* 337 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/concat.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/concat */ 338);
module.exports = parent;
/***/ }),
/* 338 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/concat.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var concat = __webpack_require__(/*! ../array/virtual/concat */ 339);
var ArrayPrototype = Array.prototype;
module.exports = function (it) {
var own = it.concat;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.concat) ? concat : own;
};
/***/ }),
/* 339 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/concat.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.concat */ 340);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').concat;
/***/ }),
/* 340 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.concat.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var isArray = __webpack_require__(/*! ../internals/is-array */ 173);
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
var toObject = __webpack_require__(/*! ../internals/to-object */ 117);
var toLength = __webpack_require__(/*! ../internals/to-length */ 91);
var createProperty = __webpack_require__(/*! ../internals/create-property */ 287);
var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ 286);
var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ 174);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ 148);
var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/679
var IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {
var array = [];
array[IS_CONCAT_SPREADABLE] = false;
return array.concat()[0] !== array;
});
var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');
var isConcatSpreadable = function (O) {
if (!isObject(O)) return false;
var spreadable = O[IS_CONCAT_SPREADABLE];
return spreadable !== undefined ? !!spreadable : isArray(O);
};
var FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;
// `Array.prototype.concat` method
// https://tc39.es/ecma262/#sec-array.prototype.concat
// with adding support of @@isConcatSpreadable and @@species
$({ target: 'Array', proto: true, forced: FORCED }, {
concat: function concat(arg) { // eslint-disable-line no-unused-vars
var O = toObject(this);
var A = arraySpeciesCreate(O, 0);
var n = 0;
var i, k, length, len, E;
for (i = -1, length = arguments.length; i < length; i++) {
E = i === -1 ? O : arguments[i];
if (isConcatSpreadable(E)) {
len = toLength(E.length);
if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
} else {
if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
createProperty(A, n++, E);
}
}
A.length = n;
return A;
}
});
/***/ }),
/* 341 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/values.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ 161);
var values = __webpack_require__(/*! ../array/virtual/values */ 342);
var classof = __webpack_require__(/*! ../../internals/classof */ 92);
var ArrayPrototype = Array.prototype;
var DOMIterables = {
DOMTokenList: true,
NodeList: true
};
module.exports = function (it) {
var own = it.values;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.values)
// eslint-disable-next-line no-prototype-builtins
|| DOMIterables.hasOwnProperty(classof(it)) ? values : own;
};
/***/ }),
/* 342 */
/*!******************************************************************!*\
!*** ./node_modules/core-js-pure/stable/array/virtual/values.js ***!
\******************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../../es/array/virtual/values */ 343);
module.exports = parent;
/***/ }),
/* 343 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/values.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.iterator */ 201);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').values;
/***/ }),
/* 344 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/reduce.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/reduce */ 288);
module.exports = parent;
/***/ }),
/* 345 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/reduce.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.reduce */ 346);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').reduce;
/***/ }),
/* 346 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.reduce.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var $reduce = __webpack_require__(/*! ../internals/array-reduce */ 347).left;
var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ 289);
var arrayMethodUsesToLength = __webpack_require__(/*! ../internals/array-method-uses-to-length */ 120);
var CHROME_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ 148);
var IS_NODE = __webpack_require__(/*! ../internals/engine-is-node */ 118);
var STRICT_METHOD = arrayMethodIsStrict('reduce');
var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
// Chrome 80-82 has a critical bug
// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
// `Array.prototype.reduce` method
// https://tc39.es/ecma262/#sec-array.prototype.reduce
$({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH || CHROME_BUG }, {
reduce: function reduce(callbackfn /* , initialValue */) {
return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 347 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-reduce.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__(/*! ../internals/a-function */ 70);
var toObject = __webpack_require__(/*! ../internals/to-object */ 117);
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ 170);
var toLength = __webpack_require__(/*! ../internals/to-length */ 91);
// `Array.prototype.{ reduce, reduceRight }` methods implementation
var createMethod = function (IS_RIGHT) {
return function (that, callbackfn, argumentsLength, memo) {
aFunction(callbackfn);
var O = toObject(that);
var self = IndexedObject(O);
var length = toLength(O.length);
var index = IS_RIGHT ? length - 1 : 0;
var i = IS_RIGHT ? -1 : 1;
if (argumentsLength < 2) while (true) {
if (index in self) {
memo = self[index];
index += i;
break;
}
index += i;
if (IS_RIGHT ? index < 0 : length <= index) {
throw TypeError('Reduce of empty array with no initial value');
}
}
for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
memo = callbackfn(memo, self[index], index, O);
}
return memo;
};
};
module.exports = {
// `Array.prototype.reduce` method
// https://tc39.es/ecma262/#sec-array.prototype.reduce
left: createMethod(false),
// `Array.prototype.reduceRight` method
// https://tc39.es/ecma262/#sec-array.prototype.reduceright
right: createMethod(true)
};
/***/ }),
/* 348 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/map.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/map */ 349);
module.exports = parent;
/***/ }),
/* 349 */
/*!******************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/map.js ***!
\******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var map = __webpack_require__(/*! ../array/virtual/map */ 350);
var ArrayPrototype = Array.prototype;
module.exports = function (it) {
var own = it.map;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.map) ? map : own;
};
/***/ }),
/* 350 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/map.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.map */ 351);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').map;
/***/ }),
/* 351 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.map.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var $map = __webpack_require__(/*! ../internals/array-iteration */ 172).map;
var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ 174);
var arrayMethodUsesToLength = __webpack_require__(/*! ../internals/array-method-uses-to-length */ 120);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');
// FF49- issue
var USES_TO_LENGTH = arrayMethodUsesToLength('map');
// `Array.prototype.map` method
// https://tc39.es/ecma262/#sec-array.prototype.map
// with adding support of @@species
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
map: function map(callbackfn /* , thisArg */) {
return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 352 */
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/array-species-create.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ 49);
var isArray = __webpack_require__(/*! ../internals/is-array */ 353);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var SPECIES = wellKnownSymbol('species');
// `ArraySpeciesCreate` abstract operation
// https://tc39.es/ecma262/#sec-arrayspeciescreate
module.exports = function (originalArray, length) {
var C;
if (isArray(originalArray)) {
C = originalArray.constructor;
// cross-realm fallback
if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
else if (isObject(C)) {
C = C[SPECIES];
if (C === null) C = undefined;
}
} return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
};
/***/ }),
/* 353 */
/*!****************************************************!*\
!*** ./node_modules/core-js/internals/is-array.js ***!
\****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(/*! ../internals/classof-raw */ 74);
// `IsArray` abstract operation
// https://tc39.es/ecma262/#sec-isarray
// eslint-disable-next-line es/no-array-isarray -- safe
module.exports = Array.isArray || function isArray(arg) {
return classof(arg) == 'Array';
};
/***/ }),
/* 354 */
/*!****************************************************************************!*\
!*** ./node_modules/core-js/internals/array-method-has-species-support.js ***!
\****************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ 37);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 39);
var V8_VERSION = __webpack_require__(/*! ../internals/engine-v8-version */ 156);
var SPECIES = wellKnownSymbol('species');
module.exports = function (METHOD_NAME) {
// We can't use this feature detection in V8 since it causes
// deoptimization and serious performance degradation
// https://github.com/zloirock/core-js/issues/677
return V8_VERSION >= 51 || !fails(function () {
var array = [];
var constructor = array.constructor = {};
constructor[SPECIES] = function () {
return { foo: 1 };
};
return array[METHOD_NAME](Boolean).foo !== 1;
});
};
/***/ }),
/* 355 */
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/array-for-each.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $forEach = __webpack_require__(/*! ../internals/array-iteration */ 290).forEach;
var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ 284);
var STRICT_METHOD = arrayMethodIsStrict('forEach');
// `Array.prototype.forEach` method implementation
// https://tc39.es/ecma262/#sec-array.prototype.foreach
module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {
return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
// eslint-disable-next-line es/no-array-prototype-foreach -- safe
} : [].forEach;
/***/ }),
/* 356 */
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/same-value.js ***!
\******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports) {
// `SameValue` abstract operation
// https://tc39.es/ecma262/#sec-samevalue
// eslint-disable-next-line es/no-object-is -- safe
module.exports = Object.is || function is(x, y) {
// eslint-disable-next-line no-self-compare -- NaN check
return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
};
/***/ }),
/* 357 */
/*!**************************************!*\
!*** ./dev/Html/PreviewMessage.html ***!
\**************************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony default export */ __webpack_exports__["default"] = ("<html>\n<head>\n\t<meta charset=\"utf-8\" />\n\t<meta name=\"viewport\" content=\"user-scalable=no\" />\n\t<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n\t<meta name=\"robots\" content=\"noindex, nofollow, noodp\" />\n\t<title>{{title}}</title>\n\t<style>\nhtml, body {\n\tbackground-color: #fff;\n\tfont-size: 13px;\n\tfont-family: arial, sans-serif;\n\tmargin: 0;\n\tpadding: 0;\n}\n\na {color: blue; text-decoration: underline}\na:visited {color: #609}\na:active {color: red}\nblockquote {border-left: 2px solid black; margin: 0; padding: 0px 10px}\n\npre {\n\tmargin: 0px;\n\tpadding: 0px;\n\tfont-family: Monaco, Menlo, Consolas, 'Courier New', monospace;\n\tbackground: #fff;\n\tborder: none;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n\tword-break: break-all;\n}\n\n.body-wrp {\n\tpadding: 10px;\n}\n\n.body-wrp.html pre {\n\tfont-family: Monaco, Menlo, Consolas, 'Courier New', monospace;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n\tword-break: normal;\n}\n\n.body-wrp.plain {\n\tpadding: 15px;\n\twhite-space: pre-wrap;\n\tfont-family: Monaco, Menlo, Consolas, 'Courier New', monospace;\n}\n\n.body-wrp.plain pre {\n\tmargin: 0px;\n\tpadding: 0px;\n\tbackground: #fff;\n\tborder: none;\n\tfont-family: Monaco, Menlo, Consolas, 'Courier New', monospace;\n\twhite-space: pre-wrap;\n\tword-wrap: break-word;\n\tword-break: normal;\n}\n\n.body-wrp.plain blockquote {\n\tborder-left: 2px solid blue;\n\tcolor: blue;\n}\n\n.body-wrp.plain blockquote blockquote {\n\tborder-left: 2px solid green;\n\tcolor: green;\n}\n\n.body-wrp.plain blockquote blockquote blockquote {\n\tborder-left: 2px solid red;\n\tcolor: red;\n}\n.rl-preview-subject {\n\tfont-size: 16px;\n\tfont-weight: bold;\n\tpadding: 15px;\n}\n.rl-preview-creds-from, .rl-preview-creds-to, .rl-preview-creds-cc {\n\tfont-size: 12px;\n\tpadding: 5px 15px;\n}\n.rl-preview-date {\n\tfloat: right;\n\tfont-size: 12px;\n\tpadding: 10px 15px;\n}\n.rl-preview-section {\n\tpadding: 0;\n\tmargin: 0;\n\tborder-bottom: 1px solid #ccc;\n}\n.rl-preview-hide {\n\tdisplay: none;\n}\n\t</style>\n</head>\n<body>\n\t<div class=\"rl-preview-section\">\n\t\t<div class=\"rl-preview-subject\">{{subject}}</div>\n\t</div>\n\t<div class=\"rl-preview-section\">\n\t\t<div class=\"rl-preview-date\">{{date}}</div>\n\t\t<div class=\"rl-preview-creds-from\">{{fromCreds}}</div>\n\t\t<div class=\"rl-preview-creds-to\">{{toLabel}}: {{toCreds}}</div>\n\t\t<div class=\"rl-preview-creds-cc {{ccClass}}\">{{ccLabel}}: {{ccCreds}}</div>\n\t</div>\n\t<div class=\"body-wrp {{bodyClass}}\">{{html}}</div>\n</body>\n</html>");
/***/ }),
/* 358 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/filter.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/filter */ 359);
module.exports = parent;
/***/ }),
/* 359 */
/*!*********************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/filter.js ***!
\*********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var filter = __webpack_require__(/*! ../array/virtual/filter */ 360);
var ArrayPrototype = Array.prototype;
module.exports = function (it) {
var own = it.filter;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.filter) ? filter : own;
};
/***/ }),
/* 360 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/filter.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.filter */ 361);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').filter;
/***/ }),
/* 361 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.filter.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var $filter = __webpack_require__(/*! ../internals/array-iteration */ 172).filter;
var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ 174);
var arrayMethodUsesToLength = __webpack_require__(/*! ../internals/array-method-uses-to-length */ 120);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
// Edge 14- issue
var USES_TO_LENGTH = arrayMethodUsesToLength('filter');
// `Array.prototype.filter` method
// https://tc39.es/ecma262/#sec-array.prototype.filter
// with adding support of @@species
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
filter: function filter(callbackfn /* , thisArg */) {
return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
}
});
/***/ }),
/* 362 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/features/object/create.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/object/create */ 363);
module.exports = parent;
/***/ }),
/* 363 */
/*!*******************************************************!*\
!*** ./node_modules/core-js-pure/es/object/create.js ***!
\*******************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.object.create */ 364);
var path = __webpack_require__(/*! ../../internals/path */ 51);
var Object = path.Object;
module.exports = function create(P, D) {
return Object.create(P, D);
};
/***/ }),
/* 364 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.object.create.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ 34);
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var create = __webpack_require__(/*! ../internals/object-create */ 160);
// `Object.create` method
// https://tc39.es/ecma262/#sec-object.create
$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {
create: create
});
/***/ }),
/* 365 */
/*!***********************************************************************!*\
!*** ./node_modules/core-js-pure/features/object/set-prototype-of.js ***!
\***********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/object/set-prototype-of */ 366);
module.exports = parent;
/***/ }),
/* 366 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js-pure/es/object/set-prototype-of.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.object.set-prototype-of */ 367);
var path = __webpack_require__(/*! ../../internals/path */ 51);
module.exports = path.Object.setPrototypeOf;
/***/ }),
/* 367 */
/*!*************************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.object.set-prototype-of.js ***!
\*************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ 34);
var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ 159);
// `Object.setPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.setprototypeof
$({ target: 'Object', stat: true }, {
setPrototypeOf: setPrototypeOf
});
/***/ }),
/* 368 */
/*!*****************************************************************!*\
!*** ./node_modules/core-js-pure/features/instance/for-each.js ***!
\*****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../stable/instance/for-each */ 369);
module.exports = parent;
/***/ }),
/* 369 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/for-each.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ 161);
var forEach = __webpack_require__(/*! ../array/virtual/for-each */ 370);
var classof = __webpack_require__(/*! ../../internals/classof */ 92);
var ArrayPrototype = Array.prototype;
var DOMIterables = {
DOMTokenList: true,
NodeList: true
};
module.exports = function (it) {
var own = it.forEach;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.forEach)
// eslint-disable-next-line no-prototype-builtins
|| DOMIterables.hasOwnProperty(classof(it)) ? forEach : own;
};
/***/ }),
/* 370 */
/*!********************************************************************!*\
!*** ./node_modules/core-js-pure/stable/array/virtual/for-each.js ***!
\********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../../es/array/virtual/for-each */ 371);
module.exports = parent;
/***/ }),
/* 371 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/for-each.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.for-each */ 372);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').forEach;
/***/ }),
/* 372 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.for-each.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var forEach = __webpack_require__(/*! ../internals/array-for-each */ 373);
// `Array.prototype.forEach` method
// https://tc39.es/ecma262/#sec-array.prototype.foreach
$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {
forEach: forEach
});
/***/ }),
/* 373 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/internals/array-for-each.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $forEach = __webpack_require__(/*! ../internals/array-iteration */ 172).forEach;
var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ 289);
var arrayMethodUsesToLength = __webpack_require__(/*! ../internals/array-method-uses-to-length */ 120);
var STRICT_METHOD = arrayMethodIsStrict('forEach');
var USES_TO_LENGTH = arrayMethodUsesToLength('forEach');
// `Array.prototype.forEach` method implementation
// https://tc39.es/ecma262/#sec-array.prototype.foreach
module.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {
return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
} : [].forEach;
/***/ }),
/* 374 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/features/object/keys.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/object/keys */ 375);
module.exports = parent;
/***/ }),
/* 375 */
/*!*****************************************************!*\
!*** ./node_modules/core-js-pure/es/object/keys.js ***!
\*****************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.object.keys */ 376);
var path = __webpack_require__(/*! ../../internals/path */ 51);
module.exports = path.Object.keys;
/***/ }),
/* 376 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.object.keys.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ 34);
var toObject = __webpack_require__(/*! ../internals/to-object */ 117);
var nativeKeys = __webpack_require__(/*! ../internals/object-keys */ 220);
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });
// `Object.keys` method
// https://tc39.es/ecma262/#sec-object.keys
$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
keys: function keys(it) {
return nativeKeys(toObject(it));
}
});
/***/ }),
/* 377 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/features/instance/reduce.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/reduce */ 288);
module.exports = parent;
/***/ }),
/* 378 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/features/instance/reverse.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/reverse */ 379);
module.exports = parent;
/***/ }),
/* 379 */
/*!**********************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/reverse.js ***!
\**********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var reverse = __webpack_require__(/*! ../array/virtual/reverse */ 380);
var ArrayPrototype = Array.prototype;
module.exports = function (it) {
var own = it.reverse;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.reverse) ? reverse : own;
};
/***/ }),
/* 380 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/reverse.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.reverse */ 381);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').reverse;
/***/ }),
/* 381 */
/*!***************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.reverse.js ***!
\***************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var isArray = __webpack_require__(/*! ../internals/is-array */ 173);
var nativeReverse = [].reverse;
var test = [1, 2];
// `Array.prototype.reverse` method
// https://tc39.es/ecma262/#sec-array.prototype.reverse
// fix for Safari 12.0 bug
// https://bugs.webkit.org/show_bug.cgi?id=188794
$({ target: 'Array', proto: true, forced: String(test) === String(test.reverse()) }, {
reverse: function reverse() {
// eslint-disable-next-line no-self-assign
if (isArray(this)) this.length = this.length;
return nativeReverse.call(this);
}
});
/***/ }),
/* 382 */
/*!**************************************************************!*\
!*** ./node_modules/core-js-pure/features/instance/slice.js ***!
\**************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/instance/slice */ 383);
module.exports = parent;
/***/ }),
/* 383 */
/*!********************************************************!*\
!*** ./node_modules/core-js-pure/es/instance/slice.js ***!
\********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var slice = __webpack_require__(/*! ../array/virtual/slice */ 384);
var ArrayPrototype = Array.prototype;
module.exports = function (it) {
var own = it.slice;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.slice) ? slice : own;
};
/***/ }),
/* 384 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/slice.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.slice */ 385);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').slice;
/***/ }),
/* 385 */
/*!*************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.array.slice.js ***!
\*************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
var $ = __webpack_require__(/*! ../internals/export */ 34);
var isObject = __webpack_require__(/*! ../internals/is-object */ 50);
var isArray = __webpack_require__(/*! ../internals/is-array */ 173);
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ 221);
var toLength = __webpack_require__(/*! ../internals/to-length */ 91);
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 80);
var createProperty = __webpack_require__(/*! ../internals/create-property */ 287);
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ 38);
var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ 174);
var arrayMethodUsesToLength = __webpack_require__(/*! ../internals/array-method-uses-to-length */ 120);
var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });
var SPECIES = wellKnownSymbol('species');
var nativeSlice = [].slice;
var max = Math.max;
// `Array.prototype.slice` method
// https://tc39.es/ecma262/#sec-array.prototype.slice
// fallback for not array-like ES3 strings and DOM objects
$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
slice: function slice(start, end) {
var O = toIndexedObject(this);
var length = toLength(O.length);
var k = toAbsoluteIndex(start, length);
var fin = toAbsoluteIndex(end === undefined ? length : end, length);
// inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
var Constructor, result, n;
if (isArray(O)) {
Constructor = O.constructor;
// cross-realm fallback
if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {
Constructor = undefined;
} else if (isObject(Constructor)) {
Constructor = Constructor[SPECIES];
if (Constructor === null) Constructor = undefined;
}
if (Constructor === Array || Constructor === undefined) {
return nativeSlice.call(O, k, fin);
}
}
result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));
for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
result.length = n;
return result;
}
});
/***/ }),
/* 386 */
/*!**********************************************************************!*\
!*** ./node_modules/core-js-pure/features/object/define-property.js ***!
\**********************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/object/define-property */ 387);
module.exports = parent;
/***/ }),
/* 387 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/es/object/define-property.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.object.define-property */ 388);
var path = __webpack_require__(/*! ../../internals/path */ 51);
var Object = path.Object;
var defineProperty = module.exports = function defineProperty(it, key, desc) {
return Object.defineProperty(it, key, desc);
};
if (Object.defineProperty.sham) defineProperty.sham = true;
/***/ }),
/* 388 */
/*!************************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.object.define-property.js ***!
\************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ 34);
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var objectDefinePropertyModile = __webpack_require__(/*! ../internals/object-define-property */ 81);
// `Object.defineProperty` method
// https://tc39.es/ecma262/#sec-object.defineproperty
$({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {
defineProperty: objectDefinePropertyModile.f
});
/***/ }),
/* 389 */
/*!********************************************************************************!*\
!*** ./node_modules/core-js-pure/stable/object/get-own-property-descriptor.js ***!
\********************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../es/object/get-own-property-descriptor */ 390);
module.exports = parent;
/***/ }),
/* 390 */
/*!****************************************************************************!*\
!*** ./node_modules/core-js-pure/es/object/get-own-property-descriptor.js ***!
\****************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.object.get-own-property-descriptor */ 391);
var path = __webpack_require__(/*! ../../internals/path */ 51);
var Object = path.Object;
var getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {
return Object.getOwnPropertyDescriptor(it, key);
};
if (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;
/***/ }),
/* 391 */
/*!************************************************************************************!*\
!*** ./node_modules/core-js-pure/modules/es.object.get-own-property-descriptor.js ***!
\************************************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ 34);
var fails = __webpack_require__(/*! ../internals/fails */ 43);
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ 80);
var nativeGetOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ 157).f;
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ 53);
var FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });
var FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;
// `Object.getOwnPropertyDescriptor` method
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {
getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {
return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);
}
});
/***/ }),
/* 392 */
/*!***********************************!*\
!*** ./dev/View/Popup/Account.js ***!
\***********************************/
/*! exports provided: AccountPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccountPopupView", function() { return AccountPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return AccountPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var AccountPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["popup"])({
name: 'View/Popup/Account',
templateID: 'PopupsAccount'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["command"])(function (self) {
return !self.submitRequest();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AccountPopupView, _AbstractViewNext);
function AccountPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.isNew = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(true);
_this.email = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.password = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.emailError = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.passwordError = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.email.subscribe(function () {
_this.emailError(false);
});
_this.password.subscribe(function () {
_this.passwordError(false);
});
_this.submitRequest = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.submitError = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.submitErrorAdditional = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.emailFocus = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
return _this;
}
var _proto = AccountPopupView.prototype;
_proto.addAccountCommand = function addAccountCommand() {
var _this2 = this;
this.emailError('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["trim"])(this.email()));
this.passwordError('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["trim"])(this.password()));
if (this.emailError() || this.passwordError()) {
return false;
}
this.submitRequest(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].accountSetup(function (result, data) {
_this2.submitRequest(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === result && data) {
if (data.Result) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_8__[/* getApp */ "a"])().accountsAndIdentities();
_this2.cancelCommand();
} else {
_this2.submitError(data.ErrorCode ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["getNotification"])(data.ErrorCode) : Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].UnknownError));
if (data.ErrorMessageAdditional) {
_this2.submitErrorAdditional(data.ErrorMessageAdditional);
}
}
} else {
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_6__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].UnknownError));
_this2.submitErrorAdditional('');
}
}, this.email(), this.password(), this.isNew());
return true;
};
_proto.clearPopup = function clearPopup() {
this.isNew(true);
this.email('');
this.password('');
this.emailError(false);
this.passwordError(false);
this.submitRequest(false);
this.submitError('');
this.submitErrorAdditional('');
};
_proto.onShow = function onShow(account) {
this.clearPopup();
if (account && account.canBeEdit()) {
this.isNew(false);
this.email(account.email);
}
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.emailFocus(true);
};
return AccountPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_10__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "addAccountCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "addAccountCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 393 */
/*!************************************!*\
!*** ./dev/View/Popup/Identity.js ***!
\************************************/
/*! exports provided: IdentityPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "IdentityPopupView", function() { return IdentityPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return IdentityPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var IdentityPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_11__["popup"])({
name: 'View/Popup/Identity',
templateID: 'PopupsIdentity'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_11__["command"])(function (self) {
return !self.submitRequest();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(IdentityPopupView, _AbstractViewNext);
function IdentityPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.id = '';
_this.edit = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.owner = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.email = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('').validateEmail();
_this.email.focused = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.name = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
_this.name.focused = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.replyTo = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('').validateSimpleEmail();
_this.replyTo.focused = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.bcc = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('').validateSimpleEmail();
_this.bcc.focused = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.signature = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
_this.signatureInsertBefore = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.showBcc = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.showReplyTo = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.submitRequest = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.submitError = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
_this.bcc.subscribe(function (value) {
if (false === _this.showBcc() && 0 < value.length) {
_this.showBcc(true);
}
});
_this.replyTo.subscribe(function (value) {
if (false === _this.showReplyTo() && 0 < value.length) {
_this.showReplyTo(true);
}
});
return _this;
}
var _proto = IdentityPopupView.prototype;
_proto.addOrEditIdentityCommand = function addOrEditIdentityCommand() {
var _this2 = this;
if (this.signature && this.signature.__fetchEditorValue) {
this.signature.__fetchEditorValue();
}
if (!this.email.hasError()) {
this.email.hasError('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(this.email()));
}
if (this.email.hasError()) {
if (!this.owner()) {
this.email.focused(true);
}
return false;
}
if (this.replyTo.hasError()) {
this.replyTo.focused(true);
return false;
}
if (this.bcc.hasError()) {
this.bcc.focused(true);
return false;
}
this.submitRequest(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].identityUpdate(function (result, data) {
_this2.submitRequest(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_5__["StorageResultType"].Success === result && data) {
if (data.Result) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_10__[/* getApp */ "a"])().accountsAndIdentities();
_this2.cancelCommand();
} else if (data.ErrorCode) {
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_8__["getNotification"])(data.ErrorCode));
}
} else {
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_8__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Notification"].UnknownError));
}
}, this.id, this.email(), this.name(), this.replyTo(), this.bcc(), this.signature(), this.signatureInsertBefore());
return true;
};
_proto.clearPopup = function clearPopup() {
this.id = '';
this.edit(false);
this.owner(false);
this.name('');
this.email('');
this.replyTo('');
this.bcc('');
this.signature('');
this.signatureInsertBefore(false);
this.email.hasError(false);
this.replyTo.hasError(false);
this.bcc.hasError(false);
this.showBcc(false);
this.showReplyTo(false);
this.submitRequest(false);
this.submitError('');
}
/**
* @param {?IdentityModel} oIdentity
*/
;
_proto.onShow = function onShow(identity) {
this.clearPopup();
if (identity) {
this.edit(true);
this.id = identity.id() || '';
this.name(identity.name());
this.email(identity.email());
this.replyTo(identity.replyTo());
this.bcc(identity.bcc());
this.signature(identity.signature());
this.signatureInsertBefore(identity.signatureInsertBefore());
this.owner('' === this.id);
} else {
this.id = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["fakeMd5"])();
}
};
_proto.onShowWithDelay = function onShowWithDelay() {
if (!this.owner() && !Common_Globals__WEBPACK_IMPORTED_MODULE_6__["bMobileDevice"]) {
this.email.focused(true);
}
};
_proto.onHideWithDelay = function onHideWithDelay() {
this.clearPopup();
};
return IdentityPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_12__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "addOrEditIdentityCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "addOrEditIdentityCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 394 */
/*!**************************************!*\
!*** ./dev/Component/SaveTrigger.js ***!
\**************************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Component/Abstract */ 32);
var SaveTriggerComponent = /*#__PURE__*/function (_AbstractComponent) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(SaveTriggerComponent, _AbstractComponent);
/**
* @param {Object} params
*/
function SaveTriggerComponent(params) {
var _this;
_this = _AbstractComponent.call(this) || this;
_this.element = params.element || null;
_this.value = params.value && params.value.subscribe ? params.value : null;
if (_this.element) {
if (_this.value) {
_this.element.css('display', 'inline-block');
if (params.verticalAlign) {
_this.element.css('vertical-align', params.verticalAlign);
}
_this.setState(_this.value());
_this.disposable.push(_this.value.subscribe(_this.setState, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this)));
} else {
_this.element.hide();
}
}
return _this;
}
var _proto = SaveTriggerComponent.prototype;
_proto.setState = function setState(value) {
var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8;
switch (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(value)) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_4__["SaveSettingsStep"].TrueResult:
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context2 = this.element).call(_context2, '.animated,.error').hide().removeClass('visible').end()).call(_context, '.success').show().addClass('visible');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_4__["SaveSettingsStep"].FalseResult:
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context3 = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context4 = this.element).call(_context4, '.animated,.success').hide().removeClass('visible').end()).call(_context3, '.error').show().addClass('visible');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_4__["SaveSettingsStep"].Animate:
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context5 = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context6 = this.element).call(_context6, '.error,.success').hide().removeClass('visible').end()).call(_context5, '.animated').show().addClass('visible');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_4__["SaveSettingsStep"].Idle:
default:
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context7 = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context8 = this.element).call(_context8, '.animated').hide().end()).call(_context7, '.error,.success').removeClass('visible');
break;
}
};
return SaveTriggerComponent;
}(Component_Abstract__WEBPACK_IMPORTED_MODULE_5__[/* AbstractComponent */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_5__[/* componentExportHelper */ "b"])(SaveTriggerComponent, 'SaveTriggerComponent'));
/***/ }),
/* 395 */
/*!********************************!*\
!*** ./dev/Component/Input.js ***!
\********************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Component/Abstract */ 32);
/* harmony import */ var Component_AbstractInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Component/AbstractInput */ 87);
var InputComponent = /*#__PURE__*/function (_AbstractInput) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(InputComponent, _AbstractInput);
function InputComponent() {
return _AbstractInput.apply(this, arguments) || this;
}
return InputComponent;
}(Component_AbstractInput__WEBPACK_IMPORTED_MODULE_2__[/* AbstractInput */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_1__[/* componentExportHelper */ "b"])(InputComponent, 'InputComponent'));
/***/ }),
/* 396 */
/*!*********************************!*\
!*** ./dev/Component/Select.js ***!
\*********************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Component/Abstract */ 32);
/* harmony import */ var Component_AbstractInput__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Component/AbstractInput */ 87);
var SelectComponent = /*#__PURE__*/function (_AbstractInput) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(SelectComponent, _AbstractInput);
/**
* @param {Object} params
*/
function SelectComponent(params) {
var _this;
_this = _AbstractInput.call(this, params) || this;
_this.options = params.options || '';
_this.optionsText = params.optionsText || null;
_this.optionsValue = params.optionsValue || null;
_this.optionsCaption = params.optionsCaption || null;
if (_this.optionsCaption) {
_this.optionsCaption = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_1__["i18n"])(_this.optionsCaption);
}
_this.defautOptionsAfterRender = Common_Utils__WEBPACK_IMPORTED_MODULE_2__["defautOptionsAfterRender"];
return _this;
}
return SelectComponent;
}(Component_AbstractInput__WEBPACK_IMPORTED_MODULE_4__[/* AbstractInput */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_3__[/* componentExportHelper */ "b"])(SelectComponent, 'SelectComponent'));
/***/ }),
/* 397 */
/*!********************************!*\
!*** ./dev/Component/Radio.js ***!
\********************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Component/Abstract */ 32);
/* harmony import */ var Component_AbstractRadio__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Component/AbstractRadio */ 307);
var RadioComponent = /*#__PURE__*/function (_AbstractRadio) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(RadioComponent, _AbstractRadio);
function RadioComponent() {
return _AbstractRadio.apply(this, arguments) || this;
}
return RadioComponent;
}(Component_AbstractRadio__WEBPACK_IMPORTED_MODULE_2__[/* AbstractRadio */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_1__[/* componentExportHelper */ "b"])(RadioComponent, 'RadioComponent'));
/***/ }),
/* 398 */
/*!***********************************!*\
!*** ./dev/Component/TextArea.js ***!
\***********************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Component/Abstract */ 32);
/* harmony import */ var Component_AbstractInput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Component/AbstractInput */ 87);
var DEFAULT_ROWS = 5;
var TextAreaComponent = /*#__PURE__*/function (_AbstractInput) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(TextAreaComponent, _AbstractInput);
/**
* @param {Object} params
*/
function TextAreaComponent(params) {
var _this;
_this = _AbstractInput.call(this, params) || this;
_this.rows = params.rows || DEFAULT_ROWS;
_this.spellcheck = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(params.spellcheck) ? false : !!params.spellcheck;
return _this;
}
return TextAreaComponent;
}(Component_AbstractInput__WEBPACK_IMPORTED_MODULE_3__[/* AbstractInput */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_2__[/* componentExportHelper */ "b"])(TextAreaComponent, 'TextAreaComponent'));
/***/ }),
/* 399 */
/*!*******************************!*\
!*** ./dev/Component/Date.js ***!
\*******************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Component/Abstract */ 32);
/* harmony import */ var Component_AbstractInput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Component/AbstractInput */ 87);
var DateComponent = /*#__PURE__*/function (_AbstractInput) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(DateComponent, _AbstractInput);
function DateComponent() {
return _AbstractInput.apply(this, arguments) || this;
}
return DateComponent;
}(Component_AbstractInput__WEBPACK_IMPORTED_MODULE_2__[/* AbstractInput */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_1__[/* componentExportHelper */ "b"])(DateComponent, 'DateComponent'));
/***/ }),
/* 400 */
/*!*********************************!*\
!*** ./dev/Component/Script.js ***!
\*********************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Component/Abstract */ 32);
var ScriptComponent = /*#__PURE__*/function (_AbstractComponent) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(ScriptComponent, _AbstractComponent);
/**
* @param {Object} params
*/
function ScriptComponent(params) {
var _this;
_this = _AbstractComponent.call(this) || this;
if (params.component && params.component.templateNodes && params.element && params.element[0] && params.element[0].outerHTML) {
var script = params.element[0].outerHTML;
script = !script ? '' : script.replace(/<x-script/i, '<script').replace(/<b><\/b><\/x-script>/i, '</script>');
if (script) {
params.element.text('');
params.element.replaceWith($__WEBPACK_IMPORTED_MODULE_3___default()(script).text(params.component.templateNodes[0] && params.component.templateNodes[0].nodeValue ? params.component.templateNodes[0].nodeValue : ''));
} else {
params.element.remove();
}
}
return _this;
}
return ScriptComponent;
}(Component_Abstract__WEBPACK_IMPORTED_MODULE_4__[/* AbstractComponent */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_4__[/* componentExportHelper */ "b"])(ScriptComponent, 'ScriptComponent'));
/***/ }),
/* 401 */
/*!**************************************************!*\
!*** ./dev/Component/MaterialDesign/Checkbox.js ***!
\**************************************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Component_Abstract__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Component/Abstract */ 32);
/* harmony import */ var Component_AbstractCheckbox__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Component/AbstractCheckbox */ 177);
var CheckboxMaterialDesignComponent = /*#__PURE__*/function (_AbstractCheckbox) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(CheckboxMaterialDesignComponent, _AbstractCheckbox);
/**
* @param {Object} params
*/
function CheckboxMaterialDesignComponent(params) {
var _this;
_this = _AbstractCheckbox.call(this, params) || this;
_this.animationBox = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false).extend({
falseTimeout: 200
});
_this.animationCheckmark = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false).extend({
falseTimeout: 200
});
_this.animationBoxSetTrue = ___WEBPACK_IMPORTED_MODULE_2___default.a.bind(_this.animationBoxSetTrue, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.animationCheckmarkSetTrue = ___WEBPACK_IMPORTED_MODULE_2___default.a.bind(_this.animationCheckmarkSetTrue, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.disposable.push(_this.value.subscribe(function (value) {
_this.triggerAnimation(value);
}, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this)));
return _this;
}
var _proto = CheckboxMaterialDesignComponent.prototype;
_proto.animationBoxSetTrue = function animationBoxSetTrue() {
this.animationBox(true);
};
_proto.animationCheckmarkSetTrue = function animationCheckmarkSetTrue() {
this.animationCheckmark(true);
};
_proto.triggerAnimation = function triggerAnimation(box) {
if (box) {
this.animationBoxSetTrue();
___WEBPACK_IMPORTED_MODULE_2___default.a.delay(this.animationCheckmarkSetTrue, 200);
} else {
this.animationCheckmarkSetTrue();
___WEBPACK_IMPORTED_MODULE_2___default.a.delay(this.animationBoxSetTrue, 200);
}
};
return CheckboxMaterialDesignComponent;
}(Component_AbstractCheckbox__WEBPACK_IMPORTED_MODULE_5__[/* AbstractCheckbox */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (Object(Component_Abstract__WEBPACK_IMPORTED_MODULE_4__[/* componentExportHelper */ "b"])(CheckboxMaterialDesignComponent, 'CheckboxMaterialDesignComponent'));
/***/ }),
/* 402 */
/*!*************************!*\
!*** ./dev/App/User.js ***!
\*************************/
/*! exports provided: default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ 85);
/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string.js */ 119);
/* harmony import */ var core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-interval */ 57);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var progressJs__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! progressJs */ 101);
/* harmony import */ var progressJs__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(progressJs__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Common/Plugins */ 36);
/* harmony import */ var Common_Momentor__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Common/Momentor */ 61);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_Social__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Stores/Social */ 26);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Notification__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! Stores/User/Notification */ 124);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Stores_User_Contact__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! Stores/User/Contact */ 103);
/* harmony import */ var Stores_User_Identity__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! Stores/User/Identity */ 102);
/* harmony import */ var Stores_User_Template__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! Stores/User/Template */ 206);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Stores_User_Quota__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! Stores/User/Quota */ 239);
/* harmony import */ var Storage_Client__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! Storage/Client */ 60);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Storage_RainLoop__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! Storage/RainLoop */ 163);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! Promises/User/Ajax */ 93);
/* harmony import */ var Model_Email__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! Model/Email */ 82);
/* harmony import */ var Model_Account__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! Model/Account */ 442);
/* harmony import */ var Model_Identity__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! Model/Identity */ 443);
/* harmony import */ var Model_Template__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! Model/Template */ 444);
/* harmony import */ var Model_OpenPgpKey__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! Model/OpenPgpKey */ 445);
/* harmony import */ var Screen_User_Login__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! Screen/User/Login */ 446);
/* harmony import */ var Screen_User_MailBox__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! Screen/User/MailBox */ 448);
/* harmony import */ var Screen_User_Settings__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! Screen/User/Settings */ 454);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var App_Abstract__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! App/Abstract */ 305);
// import {AboutUserScreen} from 'Screen/User/About';
var AppUser = /*#__PURE__*/function (_AbstractApp) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(AppUser, _AbstractApp);
function AppUser() {
var _this;
_this = _AbstractApp.call(this, Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"]) || this;
_this.moveCache = {};
_this.quotaDebounce = ___WEBPACK_IMPORTED_MODULE_10___default.a.debounce(_this.quota, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time30s);
_this.moveOrDeleteResponseHelper = ___WEBPACK_IMPORTED_MODULE_10___default.a.bind(_this.moveOrDeleteResponseHelper, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.messagesMoveTrigger = ___WEBPACK_IMPORTED_MODULE_10___default.a.debounce(_this.messagesMoveTrigger, 500);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.30s');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time30s);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.1m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time1m);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.2m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time2m);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.3m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time3m);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.5m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time5m);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.10m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time10m);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.15m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time15m);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.20m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time20m);
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_6___default()(function () {
return _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.2m-after5m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time2m);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time5m);
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_6___default()(function () {
return _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.5m-after5m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time5m);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time5m);
_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_6___default()(function () {
return _babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('interval.10m-after5m');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time10m);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time5m);
$__WEBPACK_IMPORTED_MODULE_11___default.a.wakeUp(function () {
if (Object(Storage_RainLoop__WEBPACK_IMPORTED_MODULE_37__[/* checkTimestamp */ "a"])()) {
_this.reload();
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].jsVersion(function (sResult, oData) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === sResult && oData && !oData.Result) {
_this.reload();
}
}, Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["appSettingsGet"]('version'));
}, {}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time60m);
if (Object(Storage_RainLoop__WEBPACK_IMPORTED_MODULE_37__[/* checkTimestamp */ "a"])()) {
_this.reload();
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('UserBackgroundHash')) {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
$__WEBPACK_IMPORTED_MODULE_11___default()('#rl-bg').attr('style', 'background-image: none !important;').backstretch(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* userBackground */ "J"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('UserBackgroundHash')), {
fade: Common_Globals__WEBPACK_IMPORTED_MODULE_15__["bAnimationSupported"] ? Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time1s : 0,
centeredX: true,
centeredY: true
}).removeAttr('style');
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time1s);
}
_this.socialUsers = ___WEBPACK_IMPORTED_MODULE_10___default.a.bind(_this.socialUsers, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
return _this;
}
var _proto = AppUser.prototype;
_proto.remote = function remote() {
return Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"];
};
_proto.reload = function reload() {
if (window__WEBPACK_IMPORTED_MODULE_9___default.a.parent && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["appSettingsGet"]('inIframe')) {
window__WEBPACK_IMPORTED_MODULE_9___default.a.parent.location.reload();
} else {
window__WEBPACK_IMPORTED_MODULE_9___default.a.location.reload();
}
};
_proto.reloadFlagsCurrentMessageListAndMessageFromCache = function reloadFlagsCurrentMessageListAndMessageFromCache() {
___WEBPACK_IMPORTED_MODULE_10___default.a.each(Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageList(), function (message) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* initMessageFlagsFromCache */ "n"])(message);
});
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* initMessageFlagsFromCache */ "n"])(Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].message());
}
/**
* @param {boolean=} bDropPagePosition = false
* @param {boolean=} bDropCurrenFolderCache = false
*/
;
_proto.reloadMessageList = function reloadMessageList(bDropPagePosition, bDropCurrenFolderCache) {
if (bDropPagePosition === void 0) {
bDropPagePosition = false;
}
if (bDropCurrenFolderCache === void 0) {
bDropCurrenFolderCache = false;
}
var iOffset = (Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListPage() - 1) * Stores_User_Settings__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messagesPerPage();
if (bDropCurrenFolderCache) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* setFolderHash */ "q"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw(), '');
}
if (bDropPagePosition) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListPage(1);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListPageBeforeThread(1);
iOffset = 0;
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameHash(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListPage(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListSearch(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListThreadUid()), true, true);
}
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListLoading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messageList(function (sResult, oData, bCached) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === sResult && oData && oData.Result) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListError('');
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListLoading(false);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].setMessageList(oData, bCached);
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Unload === sResult) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListError('');
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListLoading(false);
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Abort !== sResult) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageList([]);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListLoading(false);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListError(oData && oData.ErrorCode ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["getNotification"])(oData.ErrorCode) : Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["i18n"])('NOTIFICATIONS/CANT_GET_MESSAGE_LIST'));
}
}, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw(), iOffset, Stores_User_Settings__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messagesPerPage(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListSearch(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListThreadUid());
};
_proto.recacheInboxMessageList = function recacheInboxMessageList() {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messageList(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["noop"], Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderInboxName */ "h"])(), 0, Stores_User_Settings__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messagesPerPage(), '', '', true);
}
/**
* @param {Function} fResultFunc
* @returns {boolean}
*/
;
_proto.contactsSync = function contactsSync(fResultFunc) {
var oContacts = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].contacts;
if (oContacts.importing() || oContacts.syncing() || !Stores_User_Contact__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].enableContactsSync() || !Stores_User_Contact__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].allowContactsSync()) {
return false;
}
oContacts.syncing(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].contactsSync(function (sResult, oData) {
oContacts.syncing(false);
if (fResultFunc) {
fResultFunc(sResult, oData);
}
});
return true;
};
_proto.messagesMoveTrigger = function messagesMoveTrigger() {
var _this2 = this;
var sTrashFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].trashFolder(),
sSpamFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].spamFolder();
___WEBPACK_IMPORTED_MODULE_10___default.a.each(this.moveCache, function (item) {
var isSpam = sSpamFolder === item.To,
isTrash = sTrashFolder === item.To,
isHam = !isSpam && sSpamFolder === item.From && Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderInboxName */ "h"])() === item.To;
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messagesMove(_this2.moveOrDeleteResponseHelper, item.From, item.To, item.Uid, isSpam ? 'SPAM' : isHam ? 'HAM' : '', isSpam || isTrash);
});
this.moveCache = {};
};
_proto.messagesMoveHelper = function messagesMoveHelper(fromFolderFullNameRaw, toFolderFullNameRaw, uidsForMove) {
var hash = '$$' + fromFolderFullNameRaw + '$$' + toFolderFullNameRaw + '$$';
if (!this.moveCache[hash]) {
this.moveCache[hash] = {
From: fromFolderFullNameRaw,
To: toFolderFullNameRaw,
Uid: []
};
}
this.moveCache[hash].Uid = ___WEBPACK_IMPORTED_MODULE_10___default.a.union(this.moveCache[hash].Uid, uidsForMove);
this.messagesMoveTrigger();
};
_proto.messagesCopyHelper = function messagesCopyHelper(sFromFolderFullNameRaw, sToFolderFullNameRaw, aUidForCopy) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messagesCopy(this.moveOrDeleteResponseHelper, sFromFolderFullNameRaw, sToFolderFullNameRaw, aUidForCopy);
};
_proto.messagesDeleteHelper = function messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messagesDelete(this.moveOrDeleteResponseHelper, sFromFolderFullNameRaw, aUidForRemove);
};
_proto.moveOrDeleteResponseHelper = function moveOrDeleteResponseHelper(sResult, oData) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === sResult && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolder()) {
if (oData && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(oData.Result) && 2 === oData.Result.length) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* setFolderHash */ "q"])(oData.Result[0], oData.Result[1]);
} else {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* setFolderHash */ "q"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw(), '');
if (oData && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["inArray"])(oData.ErrorCode, [Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Notification"].CantMoveMessage, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Notification"].CantCopyMessage])) {
window__WEBPACK_IMPORTED_MODULE_9___default.a.alert(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["getNotification"])(oData.ErrorCode));
}
}
this.reloadMessageList(0 === Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageList().length);
this.quotaDebounce();
}
}
/**
* @param {string} sFromFolderFullNameRaw
* @param {Array} aUidForRemove
*/
;
_proto.deleteMessagesFromFolderWithoutCheck = function deleteMessagesFromFolderWithoutCheck(sFromFolderFullNameRaw, aUidForRemove) {
this.messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove);
}
/**
* @param {number} iDeleteType
* @param {string} sFromFolderFullNameRaw
* @param {Array} aUidForRemove
* @param {boolean=} bUseFolder = true
*/
;
_proto.deleteMessagesFromFolder = function deleteMessagesFromFolder(iDeleteType, sFromFolderFullNameRaw, aUidForRemove, bUseFolder) {
var _this3 = this;
var oMoveFolder = null,
nSetSystemFoldersNotification = null;
switch (iDeleteType) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].Spam:
oMoveFolder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].spamFolder());
nSetSystemFoldersNotification = Common_Enums__WEBPACK_IMPORTED_MODULE_14__["SetSystemFoldersNotification"].Spam;
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].NotSpam:
oMoveFolder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderInboxName */ "h"])());
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].Trash:
oMoveFolder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].trashFolder());
nSetSystemFoldersNotification = Common_Enums__WEBPACK_IMPORTED_MODULE_14__["SetSystemFoldersNotification"].Trash;
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].Archive:
oMoveFolder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].archiveFolder());
nSetSystemFoldersNotification = Common_Enums__WEBPACK_IMPORTED_MODULE_14__["SetSystemFoldersNotification"].Archive;
break;
// no default
}
bUseFolder = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isUnd"])(bUseFolder) ? true : !!bUseFolder;
if (bUseFolder) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].Spam === iDeleteType && Common_Consts__WEBPACK_IMPORTED_MODULE_16__[/* UNUSED_OPTION_VALUE */ "r"] === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].spamFolder() || Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].Trash === iDeleteType && Common_Consts__WEBPACK_IMPORTED_MODULE_16__[/* UNUSED_OPTION_VALUE */ "r"] === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].trashFolder() || Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].Archive === iDeleteType && Common_Consts__WEBPACK_IMPORTED_MODULE_16__[/* UNUSED_OPTION_VALUE */ "r"] === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].archiveFolder()) {
bUseFolder = false;
}
}
if (!oMoveFolder && bUseFolder) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["showScreenPopup"])(__webpack_require__(/*! View/Popup/FolderSystem */ 316), [nSetSystemFoldersNotification]);
} else if (!bUseFolder || Common_Enums__WEBPACK_IMPORTED_MODULE_14__["FolderType"].Trash === iDeleteType && (sFromFolderFullNameRaw === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].spamFolder() || sFromFolderFullNameRaw === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].trashFolder())) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Ask */ 238), [Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["i18n"])('POPUPS_ASK/DESC_WANT_DELETE_MESSAGES'), function () {
_this3.messagesDeleteHelper(sFromFolderFullNameRaw, aUidForRemove);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove);
}]);
} else if (oMoveFolder) {
this.messagesMoveHelper(sFromFolderFullNameRaw, oMoveFolder.fullNameRaw, aUidForRemove);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].removeMessagesFromList(sFromFolderFullNameRaw, aUidForRemove, oMoveFolder.fullNameRaw);
}
}
/**
* @param {string} sFromFolderFullNameRaw
* @param {Array} aUidForMove
* @param {string} sToFolderFullNameRaw
* @param {boolean=} bCopy = false
*/
;
_proto.moveMessagesToFolder = function moveMessagesToFolder(sFromFolderFullNameRaw, aUidForMove, sToFolderFullNameRaw, bCopy) {
if (sFromFolderFullNameRaw !== sToFolderFullNameRaw && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(aUidForMove) && 0 < aUidForMove.length) {
var oFromFolder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(sFromFolderFullNameRaw),
oToFolder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(sToFolderFullNameRaw);
if (oFromFolder && oToFolder) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isUnd"])(bCopy) ? false : !!bCopy) {
this.messagesCopyHelper(oFromFolder.fullNameRaw, oToFolder.fullNameRaw, aUidForMove);
} else {
this.messagesMoveHelper(oFromFolder.fullNameRaw, oToFolder.fullNameRaw, aUidForMove);
}
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].removeMessagesFromList(oFromFolder.fullNameRaw, aUidForMove, oToFolder.fullNameRaw, bCopy);
return true;
}
}
return false;
}
/**
* @param {Function=} callback = null
*/
;
_proto.foldersReload = function foldersReload(callback) {
if (callback === void 0) {
callback = null;
}
var prom = Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_39__[/* default */ "a"].foldersReload(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].foldersLoading);
if (callback) {
prom.then(function (value) {
return !!value;
}).then(callback).catch(function () {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
if (callback) {
callback(false); // eslint-disable-line callback-return
}
}, 1);
});
}
};
_proto.foldersPromisesActionHelper = function foldersPromisesActionHelper(promise, errorDefCode) {
Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_39__[/* default */ "a"].abort('Folders').fastResolve(true).then(function () {
return promise;
}).then(function () {
Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_39__[/* default */ "a"].foldersReloadWithTimeout(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].foldersLoading);
}, function (errorCode) {
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].folderList.error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["getNotification"])(errorCode, '', errorDefCode));
Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_39__[/* default */ "a"].foldersReloadWithTimeout(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].foldersLoading);
});
};
_proto.reloadOpenPgpKeys = function reloadOpenPgpKeys() {
if (Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].capaOpenPGP()) {
var keys = [],
email = new Model_Email__WEBPACK_IMPORTED_MODULE_40__["EmailModel"](),
openpgpKeyring = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].openpgpKeyring,
openpgpKeys = openpgpKeyring ? openpgpKeyring.getAllKeys() : [];
___WEBPACK_IMPORTED_MODULE_10___default.a.each(openpgpKeys, function (oItem, iIndex) {
if (oItem && oItem.primaryKey) {
var aEmails = [],
aUsers = [],
primaryUser = oItem.getPrimaryUser(),
user = primaryUser && primaryUser.user ? primaryUser.user.userId.userid : oItem.users && oItem.users[0] ? oItem.users[0].userId.userid : '';
if (oItem.users) {
___WEBPACK_IMPORTED_MODULE_10___default.a.each(oItem.users, function (item) {
if (item.userId) {
email.clear();
email.parse(item.userId.userid);
if (email.validate()) {
aEmails.push(email.email);
aUsers.push(item.userId.userid);
}
}
});
}
if (aEmails.length) {
keys.push(new Model_OpenPgpKey__WEBPACK_IMPORTED_MODULE_44__[/* OpenPgpKeyModel */ "a"](iIndex, oItem.primaryKey.getFingerprint(), oItem.primaryKey.getKeyId().toHex().toLowerCase(), ___WEBPACK_IMPORTED_MODULE_10___default.a.uniq(___WEBPACK_IMPORTED_MODULE_10___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, oItem.getKeyIds(), function (item) {
return item && item.toHex ? item.toHex() : null;
}))), aUsers, aEmails, oItem.isPrivate(), oItem.armor(), user));
}
}
});
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["delegateRunOnDestroy"])(Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].openpgpkeys());
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].openpgpkeys(keys);
}
};
_proto.accountsCounts = function accountsCounts() {
return false; // AccountStore.accounts.loading(true);
//
// Remote.accountsCounts((sResult, oData) => {
//
// AccountStore.accounts.loading(false);
//
// if (StorageResultType.Success === sResult && oData.Result && oData.Result['Counts'])
// {
// var
// sEmail = AccountStore.email(),
// aAcounts = AccountStore.accounts()
// ;
//
// _.each(oData.Result['Counts'], (oItem) => {
//
// var oAccount = _.find(aAcounts, (oAccount) => {
// return oAccount && oItem[0] === oAccount.email && sEmail !== oAccount.email;
// });
//
// if (oAccount)
// {
// oAccount.count(pInt(oItem[1]));
// }
// });
// }
// });
};
_proto.accountsAndIdentities = function accountsAndIdentities(bBoot) {
var _this4 = this;
Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].accounts.loading(true);
Stores_User_Identity__WEBPACK_IMPORTED_MODULE_29__[/* default */ "a"].identities.loading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].accountsAndIdentities(function (sResult, oData) {
Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].accounts.loading(false);
Stores_User_Identity__WEBPACK_IMPORTED_MODULE_29__[/* default */ "a"].identities.loading(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === sResult && oData.Result) {
var counts = {},
sAccountEmail = Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].email();
var parentEmail = Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('ParentEmail');
parentEmail = '' === parentEmail ? sAccountEmail : parentEmail;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(oData.Result.Accounts)) {
___WEBPACK_IMPORTED_MODULE_10___default.a.each(Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].accounts(), function (oAccount) {
counts[oAccount.email] = oAccount.count();
});
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["delegateRunOnDestroy"])(Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].accounts());
Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].accounts(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, oData.Result.Accounts, function (sValue) {
return new Model_Account__WEBPACK_IMPORTED_MODULE_41__[/* AccountModel */ "a"](sValue, sValue !== parentEmail, counts[sValue] || 0);
}));
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isUnd"])(bBoot) ? false : !!bBoot) {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
return _this4.accountsCounts();
}, 1000 * 5);
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('interval.10m-after5m', function () {
return _this4.accountsCounts();
});
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(oData.Result.Identities)) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["delegateRunOnDestroy"])(Stores_User_Identity__WEBPACK_IMPORTED_MODULE_29__[/* default */ "a"].identities());
Stores_User_Identity__WEBPACK_IMPORTED_MODULE_29__[/* default */ "a"].identities(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, oData.Result.Identities, function (identityData) {
var id = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(identityData.Id),
email = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(identityData.Email),
identity = new Model_Identity__WEBPACK_IMPORTED_MODULE_42__[/* IdentityModel */ "a"](id, email);
identity.name(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(identityData.Name));
identity.replyTo(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(identityData.ReplyTo));
identity.bcc(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(identityData.Bcc));
identity.signature(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(identityData.Signature));
identity.signatureInsertBefore(!!identityData.SignatureInsertBefore);
return identity;
}));
}
}
});
};
_proto.templates = function templates() {
Stores_User_Template__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].templates.loading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].templates(function (result, data) {
Stores_User_Template__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].templates.loading(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === result && data.Result && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(data.Result.Templates)) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["delegateRunOnDestroy"])(Stores_User_Template__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].templates());
Stores_User_Template__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].templates(___WEBPACK_IMPORTED_MODULE_10___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, data.Result.Templates, function (templateData) {
var template = new Model_Template__WEBPACK_IMPORTED_MODULE_43__[/* TemplateModel */ "a"]();
return template.parse(templateData) ? template : null;
})));
}
});
};
_proto.quota = function quota() {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].quota(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === result && data && data.Result && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(data.Result) && 1 < data.Result.length && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isPosNumeric"])(data.Result[0], true) && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isPosNumeric"])(data.Result[1], true)) {
Stores_User_Quota__WEBPACK_IMPORTED_MODULE_34__[/* default */ "a"].populateData(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(data.Result[1]), Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(data.Result[0]));
}
});
}
/**
* @param {string} folder
* @param {Array=} list = []
*/
;
_proto.folderInformation = function folderInformation(folder, list) {
var _this5 = this;
if ('' !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["trim"])(folder)) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].folderInformation(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === result) {
if (data && data.Result && data.Result.Hash && data.Result.Folder) {
var uid = '',
check = false,
unreadCountChange = false;
var folderFromCache = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(data.Result.Folder);
if (folderFromCache) {
folderFromCache.interval = Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_18__["momentNowUnix"])();
if (data.Result.Hash) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* setFolderHash */ "q"])(data.Result.Folder, data.Result.Hash);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.MessageCount)) {
folderFromCache.messageCountAll(data.Result.MessageCount);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(data.Result.MessageUnseenCount)) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(folderFromCache.messageCountUnread()) !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(data.Result.MessageUnseenCount)) {
unreadCountChange = true;
}
folderFromCache.messageCountUnread(data.Result.MessageUnseenCount);
}
if (unreadCountChange) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* clearMessageFlagsFromCacheByFolder */ "c"])(folderFromCache.fullNameRaw);
}
if (data.Result.Flags) {
for (uid in data.Result.Flags) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["has"])(data.Result.Flags, uid)) {
check = true;
var flags = data.Result.Flags[uid];
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* storeMessageFlagsToCacheByFolderAndUid */ "v"])(folderFromCache.fullNameRaw, uid.toString(), [!flags.IsSeen, !!flags.IsFlagged, !!flags.IsAnswered, !!flags.IsForwarded, !!flags.IsReadReceipt]);
}
}
if (check) {
_this5.reloadFlagsCurrentMessageListAndMessageFromCache();
}
}
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].initUidNextAndNewMessages(folderFromCache.fullNameRaw, data.Result.UidNext, data.Result.NewMessages);
var hash = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderHash */ "g"])(data.Result.Folder);
if (data.Result.Hash !== hash || '' === hash || unreadCountChange) {
if (folderFromCache.fullNameRaw === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw()) {
_this5.reloadMessageList();
} else if (Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderInboxName */ "h"])() === folderFromCache.fullNameRaw) {
_this5.recacheInboxMessageList();
}
}
}
}
}
}, folder, list);
}
}
/**
* @param {boolean=} boot = false
*/
;
_proto.folderInformationMultiply = function folderInformationMultiply(boot) {
var _this6 = this;
if (boot === void 0) {
boot = false;
}
var folders = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].getNextFolderNames();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNonEmptyArray"])(folders)) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].folderInformationMultiply(function (sResult, oData) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === sResult) {
if (oData && oData.Result && oData.Result.List && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNonEmptyArray"])(oData.Result.List)) {
var utc = Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_18__["momentNowUnix"])();
___WEBPACK_IMPORTED_MODULE_10___default.a.each(oData.Result.List, function (item) {
var hash = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderHash */ "g"])(item.Folder),
folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(item.Folder);
var unreadCountChange = false;
if (folder) {
folder.interval = utc;
if (item.Hash) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* setFolderHash */ "q"])(item.Folder, item.Hash);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(item.MessageCount)) {
folder.messageCountAll(item.MessageCount);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNormal"])(item.MessageUnseenCount)) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(folder.messageCountUnread()) !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(item.MessageUnseenCount)) {
unreadCountChange = true;
}
folder.messageCountUnread(item.MessageUnseenCount);
}
if (unreadCountChange) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* clearMessageFlagsFromCacheByFolder */ "c"])(folder.fullNameRaw);
}
if (item.Hash !== hash || '' === hash) {
if (folder.fullNameRaw === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw()) {
_this6.reloadMessageList();
}
} else if (unreadCountChange) {
if (folder.fullNameRaw === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw()) {
var list = Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageList();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isNonEmptyArray"])(list)) {
_this6.folderInformation(folder.fullNameRaw, list);
}
}
}
}
});
if (boot) {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
return _this6.folderInformationMultiply(true);
}, 2000);
}
}
}
}, folders);
}
}
/**
* @param {string} sFolderFullNameRaw
* @param {number} iSetAction
* @param {Array=} messages = null
*/
;
_proto.messageListAction = function messageListAction(sFolderFullNameRaw, iSetAction, messages) {
var folder = null,
alreadyUnread = 0,
rootUids = [];
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isUnd"])(messages) || !messages) {
messages = Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].messageListChecked();
}
rootUids = ___WEBPACK_IMPORTED_MODULE_10___default.a.uniq(___WEBPACK_IMPORTED_MODULE_10___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, messages, function (oMessage) {
return oMessage && oMessage.uid ? oMessage.uid : null;
})));
if ('' !== sFolderFullNameRaw && 0 < rootUids.length) {
switch (iSetAction) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessageSetAction"].SetSeen:
___WEBPACK_IMPORTED_MODULE_10___default.a.each(rootUids, function (sSubUid) {
alreadyUnread += Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* storeMessageFlagsToCacheBySetAction */ "w"])(sFolderFullNameRaw, sSubUid, iSetAction);
});
folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(sFolderFullNameRaw);
if (folder) {
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread);
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messageSetSeen(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["noop"], sFolderFullNameRaw, rootUids, true);
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessageSetAction"].UnsetSeen:
___WEBPACK_IMPORTED_MODULE_10___default.a.each(rootUids, function (sSubUid) {
alreadyUnread += Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* storeMessageFlagsToCacheBySetAction */ "w"])(sFolderFullNameRaw, sSubUid, iSetAction);
});
folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderFromCacheList */ "e"])(sFolderFullNameRaw);
if (folder) {
folder.messageCountUnread(folder.messageCountUnread() - alreadyUnread + rootUids.length);
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messageSetSeen(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["noop"], sFolderFullNameRaw, rootUids, false);
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessageSetAction"].SetFlag:
___WEBPACK_IMPORTED_MODULE_10___default.a.each(rootUids, function (sSubUid) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* storeMessageFlagsToCacheBySetAction */ "w"])(sFolderFullNameRaw, sSubUid, iSetAction);
});
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messageSetFlagged(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["noop"], sFolderFullNameRaw, rootUids, true);
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_14__["MessageSetAction"].UnsetFlag:
___WEBPACK_IMPORTED_MODULE_10___default.a.each(rootUids, function (sSubUid) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* storeMessageFlagsToCacheBySetAction */ "w"])(sFolderFullNameRaw, sSubUid, iSetAction);
});
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].messageSetFlagged(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["noop"], sFolderFullNameRaw, rootUids, false);
break;
// no default
}
this.reloadFlagsCurrentMessageListAndMessageFromCache();
Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].message.viewTrigger(!Stores_User_Message__WEBPACK_IMPORTED_MODULE_33__[/* default */ "a"].message.viewTrigger());
}
};
_proto.googleConnect = function googleConnect() {
window__WEBPACK_IMPORTED_MODULE_9___default.a.open(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* socialGoogle */ "B"])(), 'Google', 'left=200,top=100,width=650,height=600,menubar=no,status=no,resizable=yes,scrollbars=yes');
};
_proto.twitterConnect = function twitterConnect() {
window__WEBPACK_IMPORTED_MODULE_9___default.a.open(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* socialTwitter */ "C"])(), 'Twitter', 'left=200,top=100,width=650,height=350,menubar=no,status=no,resizable=yes,scrollbars=yes');
};
_proto.facebookConnect = function facebookConnect() {
window__WEBPACK_IMPORTED_MODULE_9___default.a.open(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* socialFacebook */ "A"])(), 'Facebook', 'left=200,top=100,width=650,height=335,menubar=no,status=no,resizable=yes,scrollbars=yes');
}
/**
* @param {boolean=} fireAllActions = false
*/
;
_proto.socialUsers = function socialUsers(fireAllActions) {
if (fireAllActions === void 0) {
fireAllActions = false;
}
if (true === fireAllActions) {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].google.loading(true);
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].facebook.loading(true);
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].twitter.loading(true);
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].socialUsers(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === result && data && data.Result) {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].google.userName(data.Result.Google || '');
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].facebook.userName(data.Result.Facebook || '');
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].twitter.userName(data.Result.Twitter || '');
} else {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].google.userName('');
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].facebook.userName('');
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].twitter.userName('');
}
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].google.loading(false);
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].facebook.loading(false);
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].twitter.loading(false);
});
};
_proto.googleDisconnect = function googleDisconnect() {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].google.loading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].googleDisconnect(this.socialUsers);
};
_proto.facebookDisconnect = function facebookDisconnect() {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].facebook.loading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].facebookDisconnect(this.socialUsers);
};
_proto.twitterDisconnect = function twitterDisconnect() {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].twitter.loading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].twitterDisconnect(this.socialUsers);
}
/**
* @param {string} query
* @param {Function} autocompleteCallback
*/
;
_proto.getAutocomplete = function getAutocomplete(query, autocompleteCallback) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].suggestions(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Success === result && data && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(data.Result)) {
autocompleteCallback(___WEBPACK_IMPORTED_MODULE_10___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_7___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, data.Result, function (item) {
return item && item[0] ? new Model_Email__WEBPACK_IMPORTED_MODULE_40__["EmailModel"](item[0], item[1]) : null;
})));
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_14__["StorageResultType"].Abort !== result) {
autocompleteCallback([]);
}
}, query);
}
/**
* @param {string} sFullNameHash
* @param {boolean} bExpanded
*/
;
_proto.setExpandedFolder = function setExpandedFolder(sFullNameHash, bExpanded) {
var aExpandedList = Storage_Client__WEBPACK_IMPORTED_MODULE_35__[/* get */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_14__["ClientSideKeyName"].ExpandedFolders);
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["isArray"])(aExpandedList)) {
aExpandedList = [];
}
if (bExpanded) {
aExpandedList.push(sFullNameHash);
aExpandedList = ___WEBPACK_IMPORTED_MODULE_10___default.a.uniq(aExpandedList);
} else {
aExpandedList = ___WEBPACK_IMPORTED_MODULE_10___default.a.without(aExpandedList, sFullNameHash);
}
Storage_Client__WEBPACK_IMPORTED_MODULE_35__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_14__["ClientSideKeyName"].ExpandedFolders, aExpandedList);
};
_proto.initHorizontalLayoutResizer = function initHorizontalLayoutResizer(sClientSideKeyName) {
var top = null,
bottom = null;
var minHeight = 200,
maxHeight = 500,
fSetHeight = function fSetHeight(height) {
if (height) {
if (top) {
top.attr('style', 'height:' + height + 'px');
}
if (bottom) {
bottom.attr('style', 'top:' + (55
/* top toolbar */
+ height) + 'px');
}
}
},
fResizeCreateFunction = function fResizeCreateFunction(event) {
if (event && event.target) {
var _context;
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8___default()(_context = $__WEBPACK_IMPORTED_MODULE_11___default()(event.target)).call(_context, '.ui-resizable-handle').on('mousedown', function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].addClass('rl-resizer');
}).on('mouseup', function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].removeClass('rl-resizer');
});
}
},
fResizeStartFunction = function fResizeStartFunction() {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].addClass('rl-resizer');
},
fResizeResizeFunction = ___WEBPACK_IMPORTED_MODULE_10___default.a.debounce(function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].addClass('rl-resizer');
}, 500, true),
fResizeStopFunction = function fResizeStopFunction(oEvent, oObject) {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].removeClass('rl-resizer');
if (oObject && oObject.size && oObject.size.height) {
Storage_Client__WEBPACK_IMPORTED_MODULE_35__[/* set */ "b"](sClientSideKeyName, oObject.size.height);
fSetHeight(oObject.size.height);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["windowResize"])();
}
},
oOptions = {
helper: 'ui-resizable-helper-h',
minHeight: minHeight,
maxHeight: maxHeight,
handles: 's',
create: fResizeCreateFunction,
resize: fResizeResizeFunction,
start: fResizeStartFunction,
stop: fResizeStopFunction
},
fDisable = function fDisable(bDisable) {
if (bDisable) {
if (top && top.hasClass('ui-resizable')) {
top.resizable('destroy').removeAttr('style');
}
if (bottom) {
bottom.removeAttr('style');
}
} else if (Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].hasClass('rl-bottom-preview-pane')) {
top = $__WEBPACK_IMPORTED_MODULE_11___default()('.b-message-list-wrapper');
bottom = $__WEBPACK_IMPORTED_MODULE_11___default()('.b-message-view-wrapper');
if (!top.hasClass('ui-resizable')) {
top.resizable(oOptions);
}
var iHeight = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(Storage_Client__WEBPACK_IMPORTED_MODULE_35__[/* get */ "a"](sClientSideKeyName)) || 300;
fSetHeight(iHeight > minHeight ? iHeight : minHeight);
}
};
fDisable(false);
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('layout', function (layout) {
fDisable(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Layout"].BottomPreview !== layout);
});
};
_proto.initVerticalLayoutResizer = function initVerticalLayoutResizer(sClientSideKeyName) {
var disabledWidth = 60,
minWidth = 155,
lLeft = $__WEBPACK_IMPORTED_MODULE_11___default()('#rl-left'),
right = $__WEBPACK_IMPORTED_MODULE_11___default()('#rl-right'),
mLeftWidth = Storage_Client__WEBPACK_IMPORTED_MODULE_35__[/* get */ "a"](sClientSideKeyName) || null,
fSetWidth = function fSetWidth(iWidth) {
if (iWidth) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_15__["leftPanelWidth"])(iWidth);
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].removeClass('rl-resizer');
lLeft.css({
width: '' + iWidth + 'px'
});
right.css({
left: '' + iWidth + 'px'
});
}
},
fDisable = function fDisable(bDisable) {
if (bDisable) {
lLeft.resizable('disable');
fSetWidth(disabledWidth);
} else {
lLeft.resizable('enable');
var width = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(Storage_Client__WEBPACK_IMPORTED_MODULE_35__[/* get */ "a"](sClientSideKeyName)) || minWidth;
fSetWidth(width > minWidth ? width : minWidth);
}
},
fResizeCreateFunction = function fResizeCreateFunction(event) {
if (event && event.target) {
var _context2;
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8___default()(_context2 = $__WEBPACK_IMPORTED_MODULE_11___default()(event.target)).call(_context2, '.ui-resizable-handle').on('mousedown', function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].addClass('rl-resizer');
}).on('mouseup', function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].removeClass('rl-resizer');
});
}
},
fResizeResizeFunction = ___WEBPACK_IMPORTED_MODULE_10___default.a.debounce(function () {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].addClass('rl-resizer');
}, 500, true),
fResizeStartFunction = function fResizeStartFunction() {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].addClass('rl-resizer');
},
fResizeStopFunction = function fResizeStopFunction(event, obj) {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].removeClass('rl-resizer');
if (obj && obj.size && obj.size.width) {
Storage_Client__WEBPACK_IMPORTED_MODULE_35__[/* set */ "b"](sClientSideKeyName, obj.size.width);
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_15__["leftPanelWidth"])(obj.size.width);
right.css({
left: '' + obj.size.width + 'px'
});
lLeft.css({
position: '',
top: '',
left: '',
height: ''
});
}
};
if (null !== mLeftWidth) {
fSetWidth(mLeftWidth > minWidth ? mLeftWidth : minWidth);
}
lLeft.resizable({
helper: 'ui-resizable-helper-w',
minWidth: minWidth,
maxWidth: Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Size350px,
handles: 'e',
create: fResizeCreateFunction,
resize: fResizeResizeFunction,
start: fResizeStartFunction,
stop: fResizeStopFunction
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('left-panel.off', function () {
fDisable(true);
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('left-panel.on', function () {
fDisable(false);
});
};
_proto.logout = function logout() {
var _this7 = this;
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].logout(function () {
_this7.loginAndLogoutReload(false, true, Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('ParentEmail') && 0 < Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('ParentEmail').length);
});
};
_proto.bootstartTwoFactorScreen = function bootstartTwoFactorScreen() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["showScreenPopup"])(__webpack_require__(/*! View/Popup/TwoFactorConfiguration */ 430), [true]);
};
_proto.bootstartWelcomePopup = function bootstartWelcomePopup(url) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["showScreenPopup"])(__webpack_require__(/*! View/Popup/WelcomePage */ 560), [url]);
};
_proto.bootstartLoginScreen = function bootstartLoginScreen() {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].removeClass('rl-user-auth').addClass('rl-user-no-auth');
var customLoginLink = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["appSettingsGet"]('customLoginLink'));
if (!customLoginLink) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["startScreens"])([Screen_User_Login__WEBPACK_IMPORTED_MODULE_45__[/* LoginUserScreen */ "a"]]);
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_17__[/* runHook */ "f"])('rl-start-login-screens');
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('rl.bootstart-login-screens');
} else {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["routeOff"])();
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* root */ "w"])(), true);
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["routeOff"])();
___WEBPACK_IMPORTED_MODULE_10___default.a.defer(function () {
window__WEBPACK_IMPORTED_MODULE_9___default.a.location.href = customLoginLink;
});
}
};
_proto.bootend = function bootend() {
if (progressJs__WEBPACK_IMPORTED_MODULE_12___default.a) {
progressJs__WEBPACK_IMPORTED_MODULE_12___default.a.set(100).end();
}
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["hideLoading"])();
};
_proto.bootstart = function bootstart() {
var _this8 = this;
_AbstractApp.prototype.bootstart.call(this);
Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].populate();
Stores_User_Settings__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].populate();
Stores_User_Notification__WEBPACK_IMPORTED_MODULE_26__[/* default */ "a"].populate();
Stores_User_Account__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].populate();
Stores_User_Contact__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].populate();
var contactsSyncInterval = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pInt"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('ContactsSyncInterval'));
var jsHash = Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["appSettingsGet"]('jsHash'),
startupUrl = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["pString"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('StartupUrl')),
allowGoogle = Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('AllowGoogleSocial'),
allowFacebook = Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('AllowFacebookSocial'),
allowTwitter = Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('AllowTwitterSocial');
if (progressJs__WEBPACK_IMPORTED_MODULE_12___default.a) {
progressJs__WEBPACK_IMPORTED_MODULE_12___default.a.set(90);
}
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["leftPanelDisabled"].subscribe(function (value) {
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('left-panel.' + (value ? 'off' : 'on'));
});
this.setWindowTitle('');
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('Auth')) {
Common_Globals__WEBPACK_IMPORTED_MODULE_15__["$html"].addClass('rl-user-auth');
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Capa"].TwoFactor) && Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Capa"].TwoFactorForce) && Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('RequireTwoFactor')) {
this.bootend();
this.bootstartTwoFactorScreen();
} else {
this.setWindowTitle(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["i18n"])('TITLES/LOADING')); // require.ensure([], function() { // require code splitting
this.foldersReload(function (value) {
_this8.bootend();
if (value) {
if ('' !== startupUrl) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["routeOff"])();
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* root */ "w"])(startupUrl), true);
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["routeOn"])();
}
if (Common_Utils__WEBPACK_IMPORTED_MODULE_13__["jassl"] && window__WEBPACK_IMPORTED_MODULE_9___default.a.crypto && window__WEBPACK_IMPORTED_MODULE_9___default.a.crypto.getRandomValues && Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Capa"].OpenPGP)) {
var openpgpCallback = function openpgpCallback(openpgp) {
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].openpgp = openpgp;
if (window__WEBPACK_IMPORTED_MODULE_9___default.a.Worker) {
try {
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].openpgp.initWorker({
path: Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* openPgpWorkerJs */ "t"])()
});
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["log"])(e);
}
}
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].openpgpKeyring = new openpgp.Keyring();
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].capaOpenPGP(true);
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('openpgp.init');
_this8.reloadOpenPgpKeys();
};
if (window__WEBPACK_IMPORTED_MODULE_9___default.a.openpgp) {
openpgpCallback(window__WEBPACK_IMPORTED_MODULE_9___default.a.openpgp);
} else {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["jassl"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* openPgpJs */ "s"])()).then(function () {
if (window__WEBPACK_IMPORTED_MODULE_9___default.a.openpgp) {
openpgpCallback(window__WEBPACK_IMPORTED_MODULE_9___default.a.openpgp);
}
});
}
} else {
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_32__[/* default */ "a"].capaOpenPGP(false);
}
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_48__["startScreens"])([Screen_User_MailBox__WEBPACK_IMPORTED_MODULE_46__[/* MailBoxUserScreen */ "a"], Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Capa"].Settings) ? Screen_User_Settings__WEBPACK_IMPORTED_MODULE_47__[/* SettingsUserScreen */ "a"] : null // false ? AboutUserScreen : null
]);
if (allowGoogle || allowFacebook || allowTwitter) {
_this8.socialUsers(true);
}
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('interval.2m', function () {
return _this8.folderInformation(Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderInboxName */ "h"])());
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('interval.3m', function () {
var sF = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw();
if (Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderInboxName */ "h"])() !== sF) {
_this8.folderInformation(sF);
}
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('interval.2m-after5m', function () {
return _this8.folderInformationMultiply();
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('interval.15m', function () {
return _this8.quota();
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('interval.20m', function () {
return _this8.foldersReload();
});
contactsSyncInterval = 5 <= contactsSyncInterval ? contactsSyncInterval : 20;
contactsSyncInterval = 320 >= contactsSyncInterval ? contactsSyncInterval : 320;
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
return _this8.contactsSync();
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time10s);
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
return _this8.folderInformationMultiply(true);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Magics"].Time2s);
_babel_runtime_corejs3_core_js_stable_set_interval__WEBPACK_IMPORTED_MODULE_5___default()(function () {
return _this8.contactsSync();
}, contactsSyncInterval * 60000 + 5000);
_this8.accountsAndIdentities(true);
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
var sF = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_31__[/* default */ "a"].currentFolderFullNameRaw();
if (Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getFolderInboxName */ "h"])() !== sF) {
_this8.folderInformation(sF);
}
}, 1000);
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
return _this8.quota();
}, 5000);
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
return Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_38__[/* default */ "a"].appDelayStart(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["noop"]);
}, 35000);
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('rl.auto-logout', function () {
return _this8.logout();
});
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_17__[/* runHook */ "f"])('rl-start-user-screens');
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('rl.bootstart-user-screens');
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('WelcomePageUrl')) {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
return _this8.bootstartWelcomePopup(Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('WelcomePageUrl'));
}, 1000);
}
if (!!Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('AccountSignMe') && window__WEBPACK_IMPORTED_MODULE_9___default.a.navigator.registerProtocolHandler && Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_14__["Capa"].Composer)) {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
try {
window__WEBPACK_IMPORTED_MODULE_9___default.a.navigator.registerProtocolHandler('mailto', window__WEBPACK_IMPORTED_MODULE_9___default.a.location.protocol + '//' + window__WEBPACK_IMPORTED_MODULE_9___default.a.location.host + window__WEBPACK_IMPORTED_MODULE_9___default.a.location.pathname + '?mailto&to=%s', '' + (Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('Title') || 'RainLoop'));
} catch (e) {} // eslint-disable-line no-empty
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('MailToEmail')) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_13__["mailToHelper"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_36__["settingsGet"]('MailToEmail'), __webpack_require__(/*! View/Popup/Compose */ 132));
}
}, 500);
}
if (!Common_Globals__WEBPACK_IMPORTED_MODULE_15__["bMobileDevice"]) {
___WEBPACK_IMPORTED_MODULE_10___default.a.defer(function () {
return _this8.initVerticalLayoutResizer(Common_Enums__WEBPACK_IMPORTED_MODULE_14__["ClientSideKeyName"].FolderListSize);
});
}
} else {
_this8.logout();
}
}); // }); // require code splitting
}
} else {
this.bootend();
this.bootstartLoginScreen();
}
if (allowGoogle) {
window__WEBPACK_IMPORTED_MODULE_9___default.a['rl_' + jsHash + '_google_service'] = function () {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].google.loading(true);
_this8.socialUsers();
};
}
if (allowFacebook) {
window__WEBPACK_IMPORTED_MODULE_9___default.a['rl_' + jsHash + '_facebook_service'] = function () {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].facebook.loading(true);
_this8.socialUsers();
};
}
if (allowTwitter) {
window__WEBPACK_IMPORTED_MODULE_9___default.a['rl_' + jsHash + '_twitter_service'] = function () {
Stores_Social__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].twitter.loading(true);
_this8.socialUsers();
};
}
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('interval.1m', function () {
return Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_18__["reload"])();
});
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_17__[/* runHook */ "f"])('rl-start-screens');
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('rl.bootstart-end');
};
return AppUser;
}(App_Abstract__WEBPACK_IMPORTED_MODULE_49__[/* AbstractApp */ "a"]);
/* harmony default export */ __webpack_exports__["default"] = (new AppUser());
/***/ }),
/* 403 */,
/* 404 */,
/* 405 */
/*!******************************!*\
!*** ./dev/Common/Base64.js ***!
\******************************/
/*! exports provided: decode, encode, urlsafe_encode */
/*! exports used: urlsafe_encode */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* unused harmony export decode */
/* unused harmony export encode */
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return urlsafe_encode; });
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_1__);
// Base64 encode / decode
// http://www.webtoolkit.info/
var BASE_64_CHR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
/* eslint-disable */
var Base64 = {
// public method for urlsafe encoding
urlsafe_encode: function urlsafe_encode(input) {
return Base64.encode(input).replace(/[+]/g, '-').replace(/[\/]/g, '_').replace(/[=]/g, '');
},
// public method for encoding
encode: function encode(input) {
var output = '',
chr1,
chr2,
chr3,
enc1,
enc2,
enc3,
enc4,
i = 0;
input = Base64._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = (chr1 & 3) << 4 | chr2 >> 4;
enc3 = (chr2 & 15) << 2 | chr3 >> 6;
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + BASE_64_CHR.charAt(enc1) + BASE_64_CHR.charAt(enc2) + BASE_64_CHR.charAt(enc3) + BASE_64_CHR.charAt(enc4);
}
return output;
},
// public method for decoding
decode: function decode(input) {
var output = '',
chr1,
chr2,
chr3,
enc1,
enc2,
enc3,
enc4,
i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
while (i < input.length) {
enc1 = BASE_64_CHR.indexOf(input.charAt(i++));
enc2 = BASE_64_CHR.indexOf(input.charAt(i++));
enc3 = BASE_64_CHR.indexOf(input.charAt(i++));
enc4 = BASE_64_CHR.indexOf(input.charAt(i++));
chr1 = enc1 << 2 | enc2 >> 4;
chr2 = (enc2 & 15) << 4 | enc3 >> 2;
chr3 = (enc3 & 3) << 6 | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 !== 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 !== 64) {
output = output + String.fromCharCode(chr3);
}
}
return Base64._utf8_decode(output);
},
// private method for UTF-8 encoding
_utf8_encode: function _utf8_encode(string) {
string = string.replace(/\r\n/g, '\n');
var utftext = '',
n = 0,
l = string.length,
c = 0;
for (; n < l; n++) {
c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if (c > 127 && c < 2048) {
utftext += String.fromCharCode(c >> 6 | 192);
utftext += String.fromCharCode(c & 63 | 128);
} else {
utftext += String.fromCharCode(c >> 12 | 224);
utftext += String.fromCharCode(c >> 6 & 63 | 128);
utftext += String.fromCharCode(c & 63 | 128);
}
}
return utftext;
},
// private method for UTF-8 decoding
_utf8_decode: function _utf8_decode(utftext) {
var string = '',
i = 0,
c = 0,
c2 = 0,
c3 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
} else if (c > 191 && c < 224) {
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode((c & 31) << 6 | c2 & 63);
i += 2;
} else {
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode((c & 15) << 12 | (c2 & 63) << 6 | c3 & 63);
i += 3;
}
}
return string;
}
};
var decode = Base64.decode;
var encode = Base64.encode;
var urlsafe_encode = Base64.urlsafe_encode;
/* eslint-enable */
/***/ }),
/* 406 */
/*!****************************************!*\
!*** ./dev/Promises/User/Populator.js ***!
\****************************************/
/*! exports provided: default */
/*! exports used: default */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Storage_Client__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Storage/Client */ 60);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Model_Folder__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Model/Folder */ 440);
/* harmony import */ var Promises_AbstractBasic__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Promises/AbstractBasic */ 317);
var PromisesUserPopulator = /*#__PURE__*/function (_AbstractBasicPromise) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(PromisesUserPopulator, _AbstractBasicPromise);
function PromisesUserPopulator() {
return _AbstractBasicPromise.apply(this, arguments) || this;
}
var _proto = PromisesUserPopulator.prototype;
/**
* @param {string} sFullNameHash
* @param {Array?} expandedFolders
* @returns {boolean}
*/
_proto.isFolderExpanded = function isFolderExpanded(sFullNameHash, expandedFolders) {
return expandedFolders && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(expandedFolders) && -1 !== ___WEBPACK_IMPORTED_MODULE_1___default.a.indexOf(expandedFolders, sFullNameHash);
}
/**
* @param {string} sFolderFullNameRaw
* @returns {string}
*/
;
_proto.normalizeFolder = function normalizeFolder(sFolderFullNameRaw) {
return '' === sFolderFullNameRaw || Common_Consts__WEBPACK_IMPORTED_MODULE_2__[/* UNUSED_OPTION_VALUE */ "r"] === sFolderFullNameRaw || null !== Common_Cache__WEBPACK_IMPORTED_MODULE_5__[/* getFolderFromCacheList */ "e"](sFolderFullNameRaw) ? sFolderFullNameRaw : '';
}
/**
* @param {string} sNamespace
* @param {Array} aFolders
* @param {Array?} expandedFolders
* @returns {Array}
*/
;
_proto.folderResponseParseRec = function folderResponseParseRec(sNamespace, aFolders, expandedFolders) {
var _this = this;
var bDisplaySpecSetting = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].displaySpecSetting(),
aList = [];
___WEBPACK_IMPORTED_MODULE_1___default.a.each(aFolders, function (oFolder) {
if (oFolder) {
var oCacheFolder = Common_Cache__WEBPACK_IMPORTED_MODULE_5__[/* getFolderFromCacheList */ "e"](oFolder.FullNameRaw);
if (!oCacheFolder) {
oCacheFolder = Model_Folder__WEBPACK_IMPORTED_MODULE_11__[/* FolderModel */ "a"].newInstanceFromJson(oFolder);
if (oCacheFolder) {
Common_Cache__WEBPACK_IMPORTED_MODULE_5__[/* setFolderToCacheList */ "r"](oFolder.FullNameRaw, oCacheFolder);
Common_Cache__WEBPACK_IMPORTED_MODULE_5__[/* setFolderFullNameRaw */ "p"](oCacheFolder.fullNameHash, oFolder.FullNameRaw, oCacheFolder);
}
}
if (oCacheFolder) {
if (bDisplaySpecSetting) {
oCacheFolder.checkable(!!oFolder.Checkable);
} else {
oCacheFolder.checkable(true);
}
oCacheFolder.collapsed(!_this.isFolderExpanded(oCacheFolder.fullNameHash, expandedFolders));
if (oFolder.Extended) {
if (oFolder.Extended.Hash) {
Common_Cache__WEBPACK_IMPORTED_MODULE_5__[/* setFolderHash */ "q"](oCacheFolder.fullNameRaw, oFolder.Extended.Hash);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isNormal"])(oFolder.Extended.MessageCount)) {
oCacheFolder.messageCountAll(oFolder.Extended.MessageCount);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isNormal"])(oFolder.Extended.MessageUnseenCount)) {
oCacheFolder.messageCountUnread(oFolder.Extended.MessageUnseenCount);
}
}
if (oFolder.SubFolders && 'Collection/FolderCollection' === oFolder.SubFolders['@Object'] && oFolder.SubFolders['@Collection'] && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(oFolder.SubFolders['@Collection'])) {
oCacheFolder.subFolders(_this.folderResponseParseRec(sNamespace, oFolder.SubFolders['@Collection'], expandedFolders));
}
aList.push(oCacheFolder);
}
}
});
return aList;
};
_proto.foldersList = function foldersList(oData) {
if (oData && 'Collection/FolderCollection' === oData['@Object'] && oData['@Collection'] && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(oData['@Collection'])) {
var expandedFolders = Storage_Client__WEBPACK_IMPORTED_MODULE_7__[/* get */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ClientSideKeyName"].ExpandedFolders),
cnt = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(oData.CountRec);
var limit = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pInt"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["appSettingsGet"]('folderSpecLimit'));
limit = 100 < limit ? 100 : 10 > limit ? 10 : limit;
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].displaySpecSetting(0 >= cnt || limit < cnt);
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].folderList(this.folderResponseParseRec(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isUnd"])(oData.Namespace) ? '' : oData.Namespace, oData['@Collection'], expandedFolders)); // @todo optimization required
}
};
_proto.foldersAdditionalParameters = function foldersAdditionalParameters(oData) {
if (oData && oData && 'Collection/FolderCollection' === oData['@Object'] && oData['@Collection'] && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isArray"])(oData['@Collection'])) {
if (!Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isUnd"])(oData.Namespace)) {
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].namespace = oData.Namespace;
}
Stores_User_App__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].threadsAllowed(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["appSettingsGet"]('useImapThread') && oData.IsThreadsSupported && true);
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].folderList.optimized(!!oData.Optimized);
var update = false;
if (oData.SystemFolders && '' === '' + Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('SentFolder') + Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('DraftFolder') + Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('SpamFolder') + Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('TrashFolder') + Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('ArchiveFolder') + Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('NullFolder')) {
Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsSet"]('SentFolder', oData.SystemFolders[Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ServerFolderType"].SENT] || null);
Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsSet"]('DraftFolder', oData.SystemFolders[Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ServerFolderType"].DRAFTS] || null);
Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsSet"]('SpamFolder', oData.SystemFolders[Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ServerFolderType"].JUNK] || null);
Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsSet"]('TrashFolder', oData.SystemFolders[Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ServerFolderType"].TRASH] || null);
Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsSet"]('ArchiveFolder', oData.SystemFolders[Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ServerFolderType"].ALL] || null);
update = true;
}
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].sentFolder(this.normalizeFolder(Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('SentFolder')));
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].draftFolder(this.normalizeFolder(Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('DraftFolder')));
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].spamFolder(this.normalizeFolder(Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('SpamFolder')));
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].trashFolder(this.normalizeFolder(Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('TrashFolder')));
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].archiveFolder(this.normalizeFolder(Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["settingsGet"]('ArchiveFolder')));
if (update) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].saveSystemFolders(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["noop"], {
SentFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].sentFolder(),
DraftFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].draftFolder(),
SpamFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].spamFolder(),
TrashFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].trashFolder(),
ArchiveFolder: Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].archiveFolder(),
NullFolder: 'NullFolder'
});
}
Storage_Client__WEBPACK_IMPORTED_MODULE_7__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ClientSideKeyName"].FoldersLashHash, oData.FoldersHash);
}
};
return PromisesUserPopulator;
}(Promises_AbstractBasic__WEBPACK_IMPORTED_MODULE_12__[/* AbstractBasicPromises */ "a"]);
/* harmony default export */ __webpack_exports__["a"] = (new PromisesUserPopulator());
/***/ }),
/* 407 */
/*!*****************************!*\
!*** ./dev/Model/Filter.js ***!
\*****************************/
/*! exports provided: FilterModel, default */
/*! exports used: FilterModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return FilterModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Model_FilterCondition__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Model/FilterCondition */ 408);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var FilterModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(FilterModel, _AbstractModel);
function FilterModel() {
var _this;
_this = _AbstractModel.call(this, 'FilterModel') || this;
_this.enabled = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(true);
_this.id = '';
_this.name = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable('');
_this.name.error = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.name.focused = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.conditions = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observableArray([]);
_this.conditionsType = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterRulesType"].Any); // Actions
_this.actionValue = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable('');
_this.actionValue.error = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.actionValueSecond = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable('');
_this.actionValueThird = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable('');
_this.actionValueFourth = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable('');
_this.actionValueFourth.error = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.actionMarkAsRead = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.actionKeep = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(true);
_this.actionNoStop = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.actionType = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].MoveTo);
_this.actionType.subscribe(function () {
_this.actionValue('');
_this.actionValue.error(false);
_this.actionValueSecond('');
_this.actionValueThird('');
_this.actionValueFourth('');
_this.actionValueFourth.error(false);
});
var fGetRealFolderName = function fGetRealFolderName(folderFullNameRaw) {
var folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_12__[/* getFolderFromCacheList */ "e"])(folderFullNameRaw);
return folder ? folder.fullName.replace('.' === folder.delimiter ? /\./ : /[\\/]+/, ' / ') : folderFullNameRaw;
};
_this.nameSub = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].computed(function () {
var result = '';
var actionValue = _this.actionValue();
switch (_this.actionType()) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].MoveTo:
result = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_11__["i18n"])('SETTINGS_FILTERS/SUBNAME_MOVE_TO', {
FOLDER: fGetRealFolderName(actionValue)
});
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Forward:
result = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_11__["i18n"])('SETTINGS_FILTERS/SUBNAME_FORWARD_TO', {
EMAIL: actionValue
});
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Vacation:
result = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_11__["i18n"])('SETTINGS_FILTERS/SUBNAME_VACATION_MESSAGE');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Reject:
result = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_11__["i18n"])('SETTINGS_FILTERS/SUBNAME_REJECT');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Discard:
result = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_11__["i18n"])('SETTINGS_FILTERS/SUBNAME_DISCARD');
break;
// no default
}
return result ? '(' + result + ')' : '';
});
_this.actionTemplate = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].computed(function () {
var result = '';
switch (_this.actionType()) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Forward:
result = 'SettingsFiltersActionForward';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Vacation:
result = 'SettingsFiltersActionVacation';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Reject:
result = 'SettingsFiltersActionReject';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].None:
result = 'SettingsFiltersActionNone';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Discard:
result = 'SettingsFiltersActionDiscard';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].MoveTo:
default:
result = 'SettingsFiltersActionMoveToFolder';
break;
}
return result;
});
_this.regDisposables(_this.conditions.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["windowResizeCallback"]));
_this.regDisposables(_this.name.subscribe(function (sValue) {
_this.name.error('' === sValue);
}));
_this.regDisposables(_this.actionValue.subscribe(function (sValue) {
_this.actionValue.error('' === sValue);
}));
_this.regDisposables([_this.actionNoStop, _this.actionTemplate]);
_this.deleteAccess = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.canBeDeleted = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(true);
return _this;
}
var _proto = FilterModel.prototype;
_proto.generateID = function generateID() {
this.id = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["fakeMd5"])();
};
_proto.verify = function verify() {
if ('' === this.name()) {
this.name.error(true);
return false;
}
if (0 < this.conditions().length) {
if (_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_7___default.a).call(___WEBPACK_IMPORTED_MODULE_7___default.a, this.conditions(), function (cond) {
return cond && !cond.verify();
})) {
return false;
}
}
if ('' === this.actionValue()) {
if (-1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["inArray"])(this.actionType(), [Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].MoveTo, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Forward, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Reject, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Vacation])) {
this.actionValue.error(true);
return false;
}
}
if (Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Forward === this.actionType() && -1 === this.actionValue().indexOf('@')) {
this.actionValue.error(true);
return false;
}
if (Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Vacation === this.actionType() && '' !== this.actionValueFourth() && -1 === this.actionValueFourth().indexOf('@')) {
this.actionValueFourth.error(true);
return false;
}
this.name.error(false);
this.actionValue.error(false);
return true;
};
_proto.toJson = function toJson() {
return {
ID: this.id,
Enabled: this.enabled() ? '1' : '0',
Name: this.name(),
ConditionsType: this.conditionsType(),
Conditions: _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_7___default.a).call(___WEBPACK_IMPORTED_MODULE_7___default.a, this.conditions(), function (item) {
return item.toJson();
}),
ActionValue: this.actionValue(),
ActionValueSecond: this.actionValueSecond(),
ActionValueThird: this.actionValueThird(),
ActionValueFourth: this.actionValueFourth(),
ActionType: this.actionType(),
Stop: this.actionNoStop() ? '0' : '1',
Keep: this.actionKeep() ? '1' : '0',
MarkAsRead: this.actionMarkAsRead() ? '1' : '0'
};
};
_proto.addCondition = function addCondition() {
this.conditions.push(new Model_FilterCondition__WEBPACK_IMPORTED_MODULE_14__[/* FilterConditionModel */ "a"]());
};
_proto.removeCondition = function removeCondition(oConditionToDelete) {
this.conditions.remove(oConditionToDelete);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["delegateRunOnDestroy"])(oConditionToDelete);
};
_proto.setRecipients = function setRecipients() {
this.actionValueFourth(Stores_User_Account__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].accountsEmails().join(', '));
};
_proto.parse = function parse(json) {
var result = false;
if (json && 'Object/Filter' === json['@Object']) {
this.id = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.ID);
this.name(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.Name));
this.enabled(!!json.Enabled);
this.conditionsType(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.ConditionsType));
this.conditions([]);
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["isNonEmptyArray"])(json.Conditions)) {
this.conditions(___WEBPACK_IMPORTED_MODULE_7___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_7___default.a).call(___WEBPACK_IMPORTED_MODULE_7___default.a, json.Conditions, function (aData) {
var filterCondition = new Model_FilterCondition__WEBPACK_IMPORTED_MODULE_14__[/* FilterConditionModel */ "a"]();
return filterCondition && filterCondition.parse(aData) ? filterCondition : null;
})));
}
this.actionType(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.ActionType));
this.actionValue(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.ActionValue));
this.actionValueSecond(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.ActionValueSecond));
this.actionValueThird(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.ActionValueThird));
this.actionValueFourth(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_10__["pString"])(json.ActionValueFourth));
this.actionNoStop(!json.Stop);
this.actionKeep(!!json.Keep);
this.actionMarkAsRead(!!json.MarkAsRead);
result = true;
}
return result;
};
_proto.cloneSelf = function cloneSelf() {
var filter = new FilterModel();
filter.id = this.id;
filter.enabled(this.enabled());
filter.name(this.name());
filter.name.error(this.name.error());
filter.conditionsType(this.conditionsType());
filter.actionMarkAsRead(this.actionMarkAsRead());
filter.actionType(this.actionType());
filter.actionValue(this.actionValue());
filter.actionValue.error(this.actionValue.error());
filter.actionValueSecond(this.actionValueSecond());
filter.actionValueThird(this.actionValueThird());
filter.actionValueFourth(this.actionValueFourth());
filter.actionKeep(this.actionKeep());
filter.actionNoStop(this.actionNoStop());
filter.conditions(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_7___default.a).call(___WEBPACK_IMPORTED_MODULE_7___default.a, this.conditions(), function (item) {
return item.cloneSelf();
}));
return filter;
};
return FilterModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_15__[/* AbstractModel */ "a"]);
/***/ }),
/* 408 */
/*!**************************************!*\
!*** ./dev/Model/FilterCondition.js ***!
\**************************************/
/*! exports provided: FilterConditionModel, default */
/*! exports used: FilterConditionModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return FilterConditionModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var FilterConditionModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(FilterConditionModel, _AbstractModel);
function FilterConditionModel() {
var _this;
_this = _AbstractModel.call(this, 'FilterConditionModel') || this;
_this.field = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_3__["FilterConditionField"].From);
_this.type = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_3__["FilterConditionType"].Contains);
_this.value = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
_this.value.error = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
_this.valueSecond = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
_this.valueSecond.error = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
_this.template = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
var template = '';
switch (_this.field()) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_3__["FilterConditionField"].Size:
template = 'SettingsFiltersConditionSize';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_3__["FilterConditionField"].Header:
template = 'SettingsFiltersConditionMore';
break;
default:
template = 'SettingsFiltersConditionDefault';
break;
}
return template;
}, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.field.subscribe(function () {
_this.value('');
_this.valueSecond('');
});
_this.regDisposables([_this.template]);
return _this;
}
var _proto = FilterConditionModel.prototype;
_proto.verify = function verify() {
if ('' === this.value()) {
this.value.error(true);
return false;
}
if (Common_Enums__WEBPACK_IMPORTED_MODULE_3__["FilterConditionField"].Header === this.field() && '' === this.valueSecond()) {
this.valueSecond.error(true);
return false;
}
return true;
};
_proto.parse = function parse(json) {
if (json && json.Field && json.Type) {
this.field(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pString"])(json.Field));
this.type(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pString"])(json.Type));
this.value(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pString"])(json.Value));
this.valueSecond(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["pString"])(json.ValueSecond));
return true;
}
return false;
};
_proto.toJson = function toJson() {
return {
Field: this.field(),
Type: this.type(),
Value: this.value(),
ValueSecond: this.valueSecond()
};
};
_proto.cloneSelf = function cloneSelf() {
var filterCond = new FilterConditionModel();
filterCond.field(this.field());
filterCond.type(this.type());
filterCond.value(this.value());
filterCond.valueSecond(this.valueSecond());
return filterCond;
};
return FilterConditionModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_5__[/* AbstractModel */ "a"]);
/***/ }),
/* 409 */
/*!****************************!*\
!*** external "window.qr" ***!
\****************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports) {
module.exports = window.qr;
/***/ }),
/* 410 */,
/* 411 */,
/* 412 */,
/* 413 */,
/* 414 */,
/* 415 */,
/* 416 */,
/* 417 */,
/* 418 */,
/* 419 */,
/* 420 */,
/* 421 */,
/* 422 */,
/* 423 */,
/* 424 */,
/* 425 */,
/* 426 */
/*!*************************************************!*\
!*** ./dev/View/Popup/KeyboardShortcutsHelp.js ***!
\*************************************************/
/*! exports provided: KeyboardShortcutsHelpPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyboardShortcutsHelpPopupView", function() { return KeyboardShortcutsHelpPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return KeyboardShortcutsHelpPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var KeyboardShortcutsHelpPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__["popup"])({
name: 'View/Popup/KeyboardShortcutsHelp',
templateID: 'PopupsKeyboardShortcutsHelp'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(KeyboardShortcutsHelpPopupView, _AbstractViewNext);
function KeyboardShortcutsHelpPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_5__["KeyState"].PopupKeyboardShortcutsHelp;
return _this;
}
var _proto = KeyboardShortcutsHelpPopupView.prototype;
_proto.onBuild = function onBuild(dom) {
key__WEBPACK_IMPORTED_MODULE_4___default()('tab, shift+tab, left, right', Common_Enums__WEBPACK_IMPORTED_MODULE_5__["KeyState"].PopupKeyboardShortcutsHelp, ___WEBPACK_IMPORTED_MODULE_3___default.a.throttle(function (event, handler) {
if (event && handler) {
var _context;
var $tabs = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(dom).call(dom, '.nav.nav-tabs > li'),
isNext = handler && ('tab' === handler.shortcut || 'right' === handler.shortcut);
var index = $tabs.index(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()($tabs).call($tabs, '.active'));
if (!isNext && 0 < index) {
index -= 1;
} else if (isNext && index < $tabs.length - 1) {
index += 1;
} else {
index = isNext ? 0 : $tabs.length - 1;
}
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(_context = $tabs.eq(index)).call(_context, 'a[data-toggle="tab"]').tab('show');
return false;
}
return true;
}, Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Magics"].Time100ms));
};
return KeyboardShortcutsHelpPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_7__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 427 */
/*!************************************!*\
!*** ./dev/View/Popup/Contacts.js ***!
\************************************/
/*! exports provided: ContactsPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ContactsPopupView", function() { return ContactsPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ContactsPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.string.search.js */ 315);
/* harmony import */ var core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search_js__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Jua */ 205);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(Jua__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Selector__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Common/Selector */ 319);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Contact__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Stores/User/Contact */ 103);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Model_Email__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! Model/Email */ 82);
/* harmony import */ var Model_Contact__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! Model/Contact */ 451);
/* harmony import */ var Model_ContactProperty__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! Model/ContactProperty */ 310);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _class, _class2;
var ContactsPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["popup"])({
name: 'View/Popup/Contacts',
templateID: 'PopupsContacts'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["command"])(), _dec3 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["command"])(function (self) {
return 0 < self.contactsCheckedOrSelected().length;
}), _dec4 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["command"])(function (self) {
return 0 < self.contactsCheckedOrSelected().length;
}), _dec5 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["command"])(), _dec6 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["command"])(function (self) {
var bV = self.viewHasNonEmptyRequiredProperties(),
bReadOnly = self.viewReadOnly();
return !self.viewSaving() && bV && !bReadOnly;
}), _dec7 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["command"])(function (self) {
return !self.contacts.syncing() && !self.contacts.importing();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(ContactsPopupView, _AbstractViewNext);
function ContactsPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
var fFastClearEmptyListHelper = function fFastClearEmptyListHelper(list) {
if (list && 0 < list.length) {
_this.viewProperties.removeAll(list);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["delegateRunOnDestroy"])(list);
}
};
_this.bBackToCompose = false;
_this.sLastComposeFocusedField = '';
_this.allowContactsSync = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].allowContactsSync;
_this.enableContactsSync = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].enableContactsSync;
_this.allowExport = !Common_Globals__WEBPACK_IMPORTED_MODULE_18__["bMobileDevice"];
_this.search = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable('');
_this.contactsCount = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(0);
_this.contacts = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].contacts;
_this.currentContact = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(null);
_this.importUploaderButton = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(null);
_this.contactsPage = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(1);
_this.contactsPageCount = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
var iPage = window__WEBPACK_IMPORTED_MODULE_9___default.a.Math.ceil(_this.contactsCount() / Common_Consts__WEBPACK_IMPORTED_MODULE_17__[/* CONTACTS_PER_PAGE */ "c"]);
return 0 >= iPage ? 1 : iPage;
});
_this.contactsPagenator = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["computedPagenatorHelper"])(_this.contactsPage, _this.contactsPageCount));
_this.emptySelection = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(true);
_this.viewClearSearch = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.viewID = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable('');
_this.viewReadOnly = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.viewProperties = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observableArray([]);
_this.viewSaveTrigger = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["SaveSettingsStep"].Idle);
_this.viewPropertiesNames = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewProperties(), function (property) {
return -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["inArray"])(property.type(), [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].FirstName, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].LastName]);
});
});
_this.viewPropertiesOther = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewProperties(), function (property) {
return -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["inArray"])(property.type(), [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Nick]);
});
});
_this.viewPropertiesEmails = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewProperties(), function (property) {
return Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Email === property.type();
});
});
_this.viewPropertiesWeb = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewProperties(), function (property) {
return Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Web === property.type();
});
});
_this.viewHasNonEmptyRequiredProperties = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
var names = _this.viewPropertiesNames(),
emails = _this.viewPropertiesEmails(),
fFilter = function fFilter(property) {
return '' !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["trim"])(property.value());
};
return !!(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, names, fFilter) || _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, emails, fFilter));
});
_this.viewPropertiesPhones = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewProperties(), function (property) {
return Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Phone === property.type();
});
});
_this.viewPropertiesEmailsNonEmpty = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewPropertiesNames(), function (property) {
return '' !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["trim"])(property.value());
});
});
var propertyFocused = function propertyFocused(property) {
var focused = property.focused();
return '' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["trim"])(property.value()) && !focused;
};
_this.viewPropertiesEmailsEmptyAndOnFocused = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewPropertiesEmails(), propertyFocused);
});
_this.viewPropertiesPhonesEmptyAndOnFocused = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewPropertiesPhones(), propertyFocused);
});
_this.viewPropertiesWebEmptyAndOnFocused = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewPropertiesWeb(), propertyFocused);
});
_this.viewPropertiesOtherEmptyAndOnFocused = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewPropertiesOther(), propertyFocused);
});
_this.viewPropertiesEmailsEmptyAndOnFocused.subscribe(fFastClearEmptyListHelper);
_this.viewPropertiesPhonesEmptyAndOnFocused.subscribe(fFastClearEmptyListHelper);
_this.viewPropertiesWebEmptyAndOnFocused.subscribe(fFastClearEmptyListHelper);
_this.viewPropertiesOtherEmptyAndOnFocused.subscribe(fFastClearEmptyListHelper);
_this.viewSaving = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.useCheckboxesInList = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"].useCheckboxesInList;
_this.search.subscribe(function () {
_this.reloadContactList();
});
_this.contacts.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["windowResizeCallback"]);
_this.viewProperties.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["windowResizeCallback"]);
_this.contactsChecked = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.contacts(), function (item) {
return item.checked();
});
});
_this.contactsCheckedOrSelected = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
var checked = _this.contactsChecked(),
selected = _this.currentContact();
return ___WEBPACK_IMPORTED_MODULE_10___default.a.union(checked, selected ? [selected] : []);
});
_this.contactsCheckedOrSelectedUids = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.contactsCheckedOrSelected(), function (contact) {
return contact.idContact;
});
});
_this.selector = new Common_Selector__WEBPACK_IMPORTED_MODULE_19__[/* Selector */ "a"](_this.contacts, _this.currentContact, null, '.e-contact-item .actionHandle', '.e-contact-item.selected', '.e-contact-item .checkboxItem', '.e-contact-item.focused');
_this.selector.on('onItemSelect', function (contact) {
_this.populateViewContact(contact ? contact : null);
if (!contact) {
_this.emptySelection(true);
}
});
_this.selector.on('onItemGetUid', function (contact) {
return contact ? contact.generateUid() : '';
});
_this.bDropPageAfterDelete = false;
_this.watchDirty = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.watchHash = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.viewHash = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return '' + _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.viewProperties(), function (oItem) {
return oItem.value();
}).join('');
}); // this.saveCommandDebounce = _.debounce(_.bind(this.saveCommand, this), 1000);
_this.viewHash.subscribe(function () {
if (_this.watchHash() && !_this.viewReadOnly() && !_this.watchDirty()) {
_this.watchDirty(true);
}
});
_this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].ContactList;
return _this;
}
var _proto = ContactsPopupView.prototype;
_proto.newCommand = function newCommand() {
this.populateViewContact(null);
this.currentContact(null);
};
_proto.deleteCommand = function deleteCommand() {
this.deleteSelectedContacts();
this.emptySelection(true);
};
_proto.newMessageCommand = function newMessageCommand() {
if (!Storage_Settings__WEBPACK_IMPORTED_MODULE_25__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Composer)) {
return false;
}
var aE = [],
toEmails = null,
ccEmails = null,
bccEmails = null;
var aC = this.contactsCheckedOrSelected();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["isNonEmptyArray"])(aC)) {
aE = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, aC, function (oItem) {
if (oItem) {
var data = oItem.getNameAndEmailHelper(),
email = data ? new Model_Email__WEBPACK_IMPORTED_MODULE_26__["EmailModel"](data[0], data[1]) : null;
if (email && email.validate()) {
return email;
}
}
return null;
});
aE = ___WEBPACK_IMPORTED_MODULE_10___default.a.compact(aE);
}
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["isNonEmptyArray"])(aE)) {
this.bBackToCompose = false;
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["hideScreenPopup"])(ContactsPopupView);
switch (this.sLastComposeFocusedField) {
case 'cc':
ccEmails = aE;
break;
case 'bcc':
bccEmails = aE;
break;
case 'to':
default:
toEmails = aE;
break;
}
this.sLastComposeFocusedField = '';
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132), [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ComposeType"].Empty, null, toEmails, ccEmails, bccEmails]);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time200ms);
}
return true;
};
_proto.clearCommand = function clearCommand() {
this.search('');
};
_proto.saveCommand = function saveCommand() {
var _this2 = this;
this.viewSaving(true);
this.viewSaveTrigger(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["SaveSettingsStep"].Animate);
var requestUid = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["fakeMd5"])(),
properties = [];
___WEBPACK_IMPORTED_MODULE_10___default.a.each(this.viewProperties(), function (oItem) {
if (oItem.type() && oItem.type() !== Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].FullName && '' !== Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["trim"])(oItem.value())) {
properties.push([oItem.type(), oItem.value(), oItem.typeStr()]);
}
});
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].contactSave(function (sResult, oData) {
var res = false;
_this2.viewSaving(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["StorageResultType"].Success === sResult && oData && oData.Result && oData.Result.RequestUid === requestUid && 0 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["pInt"])(oData.Result.ResultID)) {
if ('' === _this2.viewID()) {
_this2.viewID(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["pInt"])(oData.Result.ResultID));
}
_this2.reloadContactList();
res = true;
}
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
_this2.viewSaveTrigger(res ? Common_Enums__WEBPACK_IMPORTED_MODULE_15__["SaveSettingsStep"].TrueResult : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["SaveSettingsStep"].FalseResult);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time350ms);
if (res) {
_this2.watchDirty(false);
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
_this2.viewSaveTrigger(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["SaveSettingsStep"].Idle);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time1s);
}
}, requestUid, this.viewID(), properties);
};
_proto.syncCommand = function syncCommand() {
var _this3 = this;
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_29__[/* getApp */ "a"])().contactsSync(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["StorageResultType"].Success !== result || !data || !data.Result) {
window__WEBPACK_IMPORTED_MODULE_9___default.a.alert(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_21__["getNotification"])(data && data.ErrorCode ? data.ErrorCode : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Notification"].ContactsSyncError));
}
_this3.reloadContactList(true);
});
};
_proto.getPropertyPlaceholder = function getPropertyPlaceholder(type) {
var result = '';
switch (type) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].LastName:
result = 'CONTACTS/PLACEHOLDER_ENTER_LAST_NAME';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].FirstName:
result = 'CONTACTS/PLACEHOLDER_ENTER_FIRST_NAME';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Nick:
result = 'CONTACTS/PLACEHOLDER_ENTER_NICK_NAME';
break;
// no default
}
return result;
};
_proto.addNewProperty = function addNewProperty(type, typeStr) {
this.viewProperties.push(new Model_ContactProperty__WEBPACK_IMPORTED_MODULE_28__[/* ContactPropertyModel */ "a"](type, typeStr || '', '', true, this.getPropertyPlaceholder(type)));
};
_proto.addNewOrFocusProperty = function addNewOrFocusProperty(type, typeStr) {
var item = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, this.viewProperties(), function (prop) {
return type === prop.type();
});
if (item) {
item.focused(true);
} else {
this.addNewProperty(type, typeStr);
}
};
_proto.addNewEmail = function addNewEmail() {
this.addNewProperty(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Email, 'Home');
};
_proto.addNewPhone = function addNewPhone() {
this.addNewProperty(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Phone, 'Mobile');
};
_proto.addNewWeb = function addNewWeb() {
this.addNewProperty(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Web);
};
_proto.addNewNickname = function addNewNickname() {
this.addNewOrFocusProperty(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Nick);
};
_proto.addNewNotes = function addNewNotes() {
this.addNewOrFocusProperty(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Note);
};
_proto.addNewBirthday = function addNewBirthday() {
this.addNewOrFocusProperty(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].Birthday);
};
_proto.exportVcf = function exportVcf() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_29__[/* getApp */ "a"])().download(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* exportContactsVcf */ "l"])());
};
_proto.exportCsv = function exportCsv() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_29__[/* getApp */ "a"])().download(Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* exportContactsCsv */ "k"])());
};
_proto.initUploader = function initUploader() {
var _this4 = this;
if (this.importUploaderButton()) {
var j = new Jua__WEBPACK_IMPORTED_MODULE_14___default.a({
'action': Object(Common_Links__WEBPACK_IMPORTED_MODULE_20__[/* uploadContacts */ "I"])(),
'name': 'uploader',
'queueSize': 1,
'multipleSizeLimit': 1,
'disableDragAndDrop': true,
'disableMultiple': true,
'disableDocumentDropPrevent': true,
'clickElement': this.importUploaderButton()
});
if (j) {
j.on('onStart', function () {
_this4.contacts.importing(true);
}).on('onComplete', function (id, result, data) {
_this4.contacts.importing(false);
_this4.reloadContactList();
if (!id || !result || !data || !data.Result) {
window__WEBPACK_IMPORTED_MODULE_9___default.a.alert(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_21__["i18n"])('CONTACTS/ERROR_IMPORT_FILE'));
}
});
}
}
};
_proto.removeCheckedOrSelectedContactsFromList = function removeCheckedOrSelectedContactsFromList() {
var _this5 = this;
var koContacts = this.contacts,
contacts = this.contactsCheckedOrSelected();
var currentContact = this.currentContact(),
count = this.contacts().length;
if (0 < contacts.length) {
___WEBPACK_IMPORTED_MODULE_10___default.a.each(contacts, function (contact) {
if (currentContact && currentContact.idContact === contact.idContact) {
currentContact = null;
_this5.currentContact(null);
}
contact.deleted(true);
count -= 1;
});
if (0 >= count) {
this.bDropPageAfterDelete = true;
}
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
___WEBPACK_IMPORTED_MODULE_10___default.a.each(contacts, function (contact) {
koContacts.remove(contact);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["delegateRunOnDestroy"])(contact);
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time500ms);
}
};
_proto.deleteSelectedContacts = function deleteSelectedContacts() {
if (0 < this.contactsCheckedOrSelected().length) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].contactsDelete(___WEBPACK_IMPORTED_MODULE_10___default.a.bind(this.deleteResponse, this), this.contactsCheckedOrSelectedUids());
this.removeCheckedOrSelectedContactsFromList();
}
}
/**
* @param {string} sResult
* @param {AjaxJsonDefaultResponse} oData
*/
;
_proto.deleteResponse = function deleteResponse(sResult, oData) {
var _this6 = this;
if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time500ms < (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["StorageResultType"].Success === sResult && oData && oData.Time ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["pInt"])(oData.Time) : 0)) {
this.reloadContactList(this.bDropPageAfterDelete);
} else {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
_this6.reloadContactList(_this6.bDropPageAfterDelete);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time500ms);
}
};
_proto.removeProperty = function removeProperty(oProp) {
this.viewProperties.remove(oProp);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["delegateRunOnDestroy"])(oProp);
}
/**
* @param {?ContactModel} contact
*/
;
_proto.populateViewContact = function populateViewContact(contact) {
var id = '',
lastName = '',
firstName = '';
var list = [];
this.watchHash(false);
this.emptySelection(false);
this.viewReadOnly(false);
if (contact) {
id = contact.idContact;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["isNonEmptyArray"])(contact.properties)) {
___WEBPACK_IMPORTED_MODULE_10___default.a.each(contact.properties, function (property) {
if (property && property[0]) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].LastName === property[0]) {
lastName = property[1];
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].FirstName === property[0]) {
firstName = property[1];
} else {
list.push(new Model_ContactProperty__WEBPACK_IMPORTED_MODULE_28__[/* ContactPropertyModel */ "a"](property[0], property[2] || '', property[1]));
}
}
});
}
this.viewReadOnly(!!contact.readOnly);
}
list.unshift(new Model_ContactProperty__WEBPACK_IMPORTED_MODULE_28__[/* ContactPropertyModel */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].LastName, '', lastName, false, this.getPropertyPlaceholder(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].LastName)));
list.unshift(new Model_ContactProperty__WEBPACK_IMPORTED_MODULE_28__[/* ContactPropertyModel */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].FirstName, '', firstName, !contact, this.getPropertyPlaceholder(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ContactPropertyType"].FirstName)));
this.viewID(id);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["delegateRunOnDestroy"])(this.viewProperties());
this.viewProperties([]);
this.viewProperties(list);
this.watchDirty(false);
this.watchHash(true);
}
/**
* @param {boolean=} dropPagePosition = false
*/
;
_proto.reloadContactList = function reloadContactList(dropPagePosition) {
var _this7 = this;
if (dropPagePosition === void 0) {
dropPagePosition = false;
}
var offset = (this.contactsPage() - 1) * Common_Consts__WEBPACK_IMPORTED_MODULE_17__[/* CONTACTS_PER_PAGE */ "c"];
this.bDropPageAfterDelete = false;
if (dropPagePosition) {
this.contactsPage(1);
offset = 0;
}
this.contacts.loading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].contacts(function (result, data) {
var count = 0,
list = [];
if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["StorageResultType"].Success === result && data && data.Result && data.Result.List) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["isNonEmptyArray"])(data.Result.List)) {
list = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_4___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, data.Result.List, function (item) {
var contact = new Model_Contact__WEBPACK_IMPORTED_MODULE_27__[/* ContactModel */ "a"]();
return contact.parse(item) ? contact : null;
});
list = ___WEBPACK_IMPORTED_MODULE_10___default.a.compact(list);
count = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["pInt"])(data.Result.Count);
count = 0 < count ? count : 0;
}
}
_this7.contactsCount(count);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["delegateRunOnDestroy"])(_this7.contacts());
_this7.contacts(list);
_this7.contacts.loading(false);
_this7.viewClearSearch('' !== _this7.search());
}, offset, Common_Consts__WEBPACK_IMPORTED_MODULE_17__[/* CONTACTS_PER_PAGE */ "c"], this.search());
};
_proto.onBuild = function onBuild(dom) {
var _this8 = this;
this.oContentVisible = $__WEBPACK_IMPORTED_MODULE_11___default()('.b-list-content', dom);
this.oContentScrollable = $__WEBPACK_IMPORTED_MODULE_11___default()('.content', this.oContentVisible);
this.selector.init(this.oContentVisible, this.oContentScrollable, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].ContactList);
key__WEBPACK_IMPORTED_MODULE_13___default()('delete', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].ContactList, function () {
_this8.deleteCommand();
return false;
});
key__WEBPACK_IMPORTED_MODULE_13___default()('c, w', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].ContactList, function () {
_this8.newMessageCommand();
return false;
});
var self = this;
dom.on('click', '.e-pagenator .e-page', function () {
// eslint-disable-line prefer-arrow-callback
var page = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (page) {
self.contactsPage(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["pInt"])(page.value));
self.reloadContactList();
}
});
this.initUploader();
};
_proto.onShow = function onShow(bBackToCompose, sLastComposeFocusedField) {
this.bBackToCompose = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["isUnd"])(bBackToCompose) ? false : !!bBackToCompose;
this.sLastComposeFocusedField = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["isUnd"])(sLastComposeFocusedField) ? '' : sLastComposeFocusedField;
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["routeOff"])();
this.reloadContactList(true);
};
_proto.onHide = function onHide() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["routeOn"])();
this.currentContact(null);
this.emptySelection(true);
this.search('');
this.contactsCount(0);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_16__["delegateRunOnDestroy"])(this.contacts());
this.contacts([]);
this.sLastComposeFocusedField = '';
if (this.bBackToCompose) {
this.bBackToCompose = false;
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_25__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Composer)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_30__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132));
}
}
};
return ContactsPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_31__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "newCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "newCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "deleteCommand", [_dec3], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "deleteCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "newMessageCommand", [_dec4], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "newMessageCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "clearCommand", [_dec5], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "clearCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "saveCommand", [_dec6], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "saveCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "syncCommand", [_dec7], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "syncCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 428 */
/*!****************************************!*\
!*** ./dev/View/Popup/FolderCreate.js ***!
\****************************************/
/*! exports provided: FolderCreateView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FolderCreateView", function() { return FolderCreateView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return FolderCreateView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Promises/User/Ajax */ 93);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var FolderCreateView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["popup"])({
name: 'View/Popup/FolderCreate',
templateID: 'PopupsFolderCreate'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["command"])(function (self) {
return self.simpleFolderNameValidation(self.folderName());
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(FolderCreateView, _AbstractViewNext);
function FolderCreateView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.folderName = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
_this.folderName.focused = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.selectedParentValue = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* UNUSED_OPTION_VALUE */ "r"]);
_this.parentFolderSelectList = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].computed(function () {
var top = [],
list = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].folderList(),
fRenameCallback = function fRenameCallback(oItem) {
return oItem ? oItem.isSystemFolder() ? oItem.name() + ' ' + oItem.manageFolderSystemName() : oItem.name() : '';
};
top.push(['', '']);
var fDisableCallback = null;
if ('' !== Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].namespace) {
fDisableCallback = function fDisableCallback(item) {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].namespace !== item.fullNameRaw.substr(0, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].namespace.length);
};
}
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["folderListOptionsBuilder"])([], list, [], top, null, fDisableCallback, null, fRenameCallback);
});
_this.defautOptionsAfterRender = Common_Utils__WEBPACK_IMPORTED_MODULE_8__["defautOptionsAfterRender"];
return _this;
}
var _proto = FolderCreateView.prototype;
_proto.createFolderCommand = function createFolderCommand() {
var parentFolderName = this.selectedParentValue();
if ('' === parentFolderName && 1 < Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].namespace.length) {
parentFolderName = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].namespace.substr(0, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].namespace.length - 1);
}
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_11__[/* getApp */ "a"])().foldersPromisesActionHelper(Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].folderCreate(this.folderName(), parentFolderName, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].foldersCreating), Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Notification"].CantCreateFolder);
this.cancelCommand();
};
_proto.simpleFolderNameValidation = function simpleFolderNameValidation(sName) {
return /^[^\\/]+$/g.test(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(sName));
};
_proto.clearPopup = function clearPopup() {
this.folderName('');
this.selectedParentValue('');
this.folderName.focused(false);
};
_proto.onShow = function onShow() {
this.clearPopup();
};
_proto.onShowWithDelay = function onShowWithDelay() {
if (!Common_Globals__WEBPACK_IMPORTED_MODULE_7__["bMobileDevice"]) {
this.folderName.focused(true);
}
};
return FolderCreateView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_13__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "createFolderCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "createFolderCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 429 */
/*!**********************************!*\
!*** ./dev/View/Popup/Filter.js ***!
\**********************************/
/*! exports provided: FilterPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterPopupView", function() { return FilterPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return FilterPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.filter.js */ 314);
/* harmony import */ var core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_User_Filter__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Stores/User/Filter */ 232);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var FilterPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_15__["popup"])({
name: 'View/Popup/Filter',
templateID: 'PopupsFilter'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_15__["command"])(), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(FilterPopupView, _AbstractViewNext);
function FilterPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.isNew = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(true);
_this.modules = Stores_User_Filter__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].modules;
_this.fTrueCallback = null;
_this.filter = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(null);
_this.allowMarkAsRead = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable(false);
_this.defautOptionsAfterRender = Common_Utils__WEBPACK_IMPORTED_MODULE_11__["defautOptionsAfterRender"];
_this.folderSelectList = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].folderMenuForFilters;
_this.selectedFolderValue = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observable('');
_this.selectedFolderValue.subscribe(function () {
if (_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_this).call(_this)) {
_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_this).call(_this).actionValue.error(false);
}
});
_this.actionTypeOptions = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observableArray([]);
_this.fieldOptions = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observableArray([]);
_this.typeOptions = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observableArray([]);
_this.typeOptionsSize = ko__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].observableArray([]);
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["initOnStartOrLangChange"])(___WEBPACK_IMPORTED_MODULE_7___default.a.bind(_this.populateOptions, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this)));
_this.modules.subscribe(_this.populateOptions, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
return _this;
}
var _proto = FilterPopupView.prototype;
_proto.saveFilterCommand = function saveFilterCommand() {
var _context;
if (_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context = this).call(_context)) {
var _context2, _context4;
if (Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].MoveTo === _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context2 = this).call(_context2).actionType()) {
var _context3;
_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context3 = this).call(_context3).actionValue(this.selectedFolderValue());
}
if (!_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context4 = this).call(_context4).verify()) {
return false;
}
if (this.fTrueCallback) {
var _context5;
this.fTrueCallback(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context5 = this).call(_context5));
}
if (this.modalVisibility()) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_11__["delegateRun"])(this, 'closeCommand');
}
}
return true;
};
_proto.populateOptions = function populateOptions() {
this.actionTypeOptions([]); // this.actionTypeOptions.push({'id': FiltersAction.None,
// 'name': i18n('POPUPS_FILTER/SELECT_ACTION_NONE')});
var modules = this.modules();
if (modules) {
if (modules.markasread) {
this.allowMarkAsRead(true);
}
if (modules.moveto) {
this.actionTypeOptions.push({
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].MoveTo,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_ACTION_MOVE_TO')
});
}
if (modules.redirect) {
this.actionTypeOptions.push({
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Forward,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_ACTION_FORWARD_TO')
});
}
if (modules.reject) {
this.actionTypeOptions.push({
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Reject,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_ACTION_REJECT')
});
}
if (modules.vacation) {
this.actionTypeOptions.push({
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Vacation,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_ACTION_VACATION_MESSAGE')
});
}
}
this.actionTypeOptions.push({
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FiltersAction"].Discard,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_ACTION_DISCARD')
});
this.fieldOptions([{
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionField"].From,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_FIELD_FROM')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionField"].Recipient,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_FIELD_RECIPIENTS')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionField"].Subject,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_FIELD_SUBJECT')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionField"].Size,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_FIELD_SIZE')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionField"].Header,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_FIELD_HEADER')
}]);
this.typeOptions([{
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionType"].Contains,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_TYPE_CONTAINS')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionType"].NotContains,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_TYPE_NOT_CONTAINS')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionType"].EqualTo,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_TYPE_EQUAL_TO')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionType"].NotEqualTo,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_TYPE_NOT_EQUAL_TO')
}]);
if (modules && modules.regex) {
this.typeOptions.push({
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionType"].Regex,
'name': 'Regex'
});
}
this.typeOptionsSize([{
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionType"].Over,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_TYPE_OVER')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_9__["FilterConditionType"].Under,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_12__["i18n"])('POPUPS_FILTER/SELECT_TYPE_UNDER')
}]);
};
_proto.removeCondition = function removeCondition(oConditionToDelete) {
var _context6;
if (_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context6 = this).call(_context6)) {
var _context7;
_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context7 = this).call(_context7).removeCondition(oConditionToDelete);
}
};
_proto.clearPopup = function clearPopup() {
var _context8;
this.isNew(true);
this.fTrueCallback = null;
_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context8 = this).call(_context8, null);
};
_proto.onShow = function onShow(oFilter, fTrueCallback, bEdit) {
var _context9;
this.clearPopup();
this.fTrueCallback = fTrueCallback;
_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context9 = this).call(_context9, oFilter);
if (oFilter) {
this.selectedFolderValue(oFilter.actionValue());
}
this.isNew(!bEdit);
if (!bEdit && oFilter) {
oFilter.name.focused(true);
}
};
_proto.onShowWithDelay = function onShowWithDelay() {
var _context10;
if (this.isNew() && _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context10 = this).call(_context10) && !Common_Globals__WEBPACK_IMPORTED_MODULE_10__["bMobileDevice"]) {
var _context11;
_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_3___default()(_context11 = this).call(_context11).name.focused(true);
}
};
return FilterPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_16__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "saveFilterCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_4___default()(_class2.prototype, "saveFilterCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 430 */
/*!**************************************************!*\
!*** ./dev/View/Popup/TwoFactorConfiguration.js ***!
\**************************************************/
/*! exports provided: TwoFactorConfigurationPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TwoFactorConfigurationPopupView", function() { return TwoFactorConfigurationPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return TwoFactorConfigurationPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var qr__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! qr */ 409);
/* harmony import */ var qr__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(qr__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var TwoFactorConfigurationPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__["popup"])({
name: 'View/Popup/TwoFactorConfiguration',
templateID: 'PopupsTwoFactorConfiguration'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(TwoFactorConfigurationPopupView, _AbstractViewNext);
function TwoFactorConfigurationPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.lock = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
_this.capaTwoFactor = Storage_Settings__WEBPACK_IMPORTED_MODULE_11__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].TwoFactor);
_this.processing = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
_this.clearing = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
_this.secreting = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
_this.viewUser = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable('');
_this.twoFactorStatus = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
_this.twoFactorTested = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
_this.viewSecret = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable('');
_this.viewBackupCodes = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable('');
_this.viewUrlTitle = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable('');
_this.viewUrl = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable('');
_this.viewEnable_ = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].observable(false);
_this.viewEnable = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].computed({
read: _this.viewEnable_,
write: function write(value) {
value = !!value;
if (value && _this.twoFactorTested()) {
_this.viewEnable_(value);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].enableTwoFactor(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["StorageResultType"].Success !== result || !data || !data.Result) {
_this.viewEnable_(false);
}
}, true);
} else {
if (!value) {
_this.viewEnable_(value);
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].enableTwoFactor(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["StorageResultType"].Success !== result || !data || !data.Result) {
_this.viewEnable_(false);
}
}, false);
}
}
});
_this.viewTwoFactorEnableTooltip = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["trigger"])();
return _this.twoFactorTested() || _this.viewEnable_() ? '' : Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_SECRET_TEST_BEFORE_DESC');
});
_this.viewTwoFactorStatus = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["trigger"])();
return Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])(_this.twoFactorStatus() ? 'POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_SECRET_CONFIGURED_DESC' : 'POPUPS_TWO_FACTOR_CFG/TWO_FACTOR_SECRET_NOT_CONFIGURED_DESC');
});
_this.twoFactorAllowedEnable = ko__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].computed(function () {
return _this.viewEnable() || _this.twoFactorTested();
});
_this.onResult = ___WEBPACK_IMPORTED_MODULE_5___default.a.bind(_this.onResult, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.onShowSecretResult = ___WEBPACK_IMPORTED_MODULE_5___default.a.bind(_this.onShowSecretResult, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
return _this;
}
var _proto = TwoFactorConfigurationPopupView.prototype;
_proto.showSecret = function showSecret() {
this.secreting(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].showTwoFactorSecret(this.onShowSecretResult);
};
_proto.hideSecret = function hideSecret() {
this.viewSecret('');
this.viewBackupCodes('');
this.viewUrlTitle('');
this.viewUrl('');
};
_proto.createTwoFactor = function createTwoFactor() {
this.processing(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].createTwoFactor(this.onResult);
};
_proto.logout = function logout() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_13__[/* getApp */ "a"])().logout();
};
_proto.testTwoFactor = function testTwoFactor() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_14__["showScreenPopup"])(__webpack_require__(/*! View/Popup/TwoFactorTest */ 556), [this.twoFactorTested]);
};
_proto.clearTwoFactor = function clearTwoFactor() {
this.viewSecret('');
this.viewBackupCodes('');
this.viewUrlTitle('');
this.viewUrl('');
this.twoFactorTested(false);
this.clearing(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].clearTwoFactor(this.onResult);
};
_proto.onShow = function onShow(bLock) {
this.lock(!!bLock);
this.viewSecret('');
this.viewBackupCodes('');
this.viewUrlTitle('');
this.viewUrl('');
};
_proto.onHide = function onHide() {
if (this.lock()) {
window__WEBPACK_IMPORTED_MODULE_4___default.a.location.reload();
}
};
_proto.getQr = function getQr() {
return 'otpauth://totp/' + window__WEBPACK_IMPORTED_MODULE_4___default.a.encodeURIComponent(this.viewUser()) + '?secret=' + window__WEBPACK_IMPORTED_MODULE_4___default.a.encodeURIComponent(this.viewSecret()) + '&issuer=' + window__WEBPACK_IMPORTED_MODULE_4___default.a.encodeURIComponent('');
};
_proto.onResult = function onResult(sResult, oData) {
this.processing(false);
this.clearing(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["StorageResultType"].Success === sResult && oData && oData.Result) {
this.viewUser(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["pString"])(oData.Result.User));
this.viewEnable_(!!oData.Result.Enable);
this.twoFactorStatus(!!oData.Result.IsSet);
this.twoFactorTested(!!oData.Result.Tested);
this.viewSecret(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["pString"])(oData.Result.Secret));
this.viewBackupCodes(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["pString"])(oData.Result.BackupCodes).replace(/[\s]+/g, ' '));
this.viewUrlTitle(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["pString"])(oData.Result.UrlTitle));
this.viewUrl(qr__WEBPACK_IMPORTED_MODULE_7___default.a.toDataURL({
level: 'M',
size: 8,
value: this.getQr()
}));
} else {
this.viewUser('');
this.viewEnable_(false);
this.twoFactorStatus(false);
this.twoFactorTested(false);
this.viewSecret('');
this.viewBackupCodes('');
this.viewUrlTitle('');
this.viewUrl('');
}
};
_proto.onShowSecretResult = function onShowSecretResult(result, data) {
this.secreting(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["StorageResultType"].Success === result && data && data.Result) {
this.viewSecret(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["pString"])(data.Result.Secret));
this.viewUrlTitle(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["pString"])(data.Result.UrlTitle));
this.viewUrl(qr__WEBPACK_IMPORTED_MODULE_7___default.a.toDataURL({
level: 'M',
size: 6,
value: this.getQr()
}));
} else {
this.viewSecret('');
this.viewUrlTitle('');
this.viewUrl('');
}
};
_proto.onBuild = function onBuild() {
if (this.capaTwoFactor) {
this.processing(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].getTwoFactor(this.onResult);
}
};
return TwoFactorConfigurationPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_15__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 431 */
/*!************************************!*\
!*** ./dev/View/Popup/Template.js ***!
\************************************/
/*! exports provided: TemplatePopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TemplatePopupView", function() { return TemplatePopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return TemplatePopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_HtmlEditor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/HtmlEditor */ 226);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var TemplatePopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_11__["popup"])({
name: 'View/Popup/Template',
templateID: 'PopupsTemplate'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_11__["command"])(function (self) {
return !self.submitRequest();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(TemplatePopupView, _AbstractViewNext);
function TemplatePopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.editor = null;
_this.signatureDom = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(null);
_this.id = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
_this.name = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
_this.name.error = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.name.focus = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.body = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
_this.body.loading = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.body.error = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.name.subscribe(function () {
_this.name.error(false);
});
_this.body.subscribe(function () {
_this.body.error(false);
});
_this.submitRequest = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
_this.submitError = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
return _this;
}
var _proto = TemplatePopupView.prototype;
_proto.addTemplateCommand = function addTemplateCommand() {
var _this2 = this;
this.populateBodyFromEditor();
this.name.error('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["trim"])(this.name()));
this.body.error('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["trim"])(this.body()) || ':HTML:' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["trim"])(this.body()));
if (this.name.error() || this.body.error()) {
return false;
}
this.submitRequest(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].templateSetup(function (result, data) {
_this2.submitRequest(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_5__["StorageResultType"].Success === result && data) {
if (data.Result) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_10__[/* getApp */ "a"])().templates();
_this2.cancelCommand();
} else if (data.ErrorCode) {
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["getNotification"])(data.ErrorCode));
}
} else {
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Notification"].UnknownError));
}
}, this.id(), this.name(), this.body());
return true;
};
_proto.clearPopup = function clearPopup() {
this.id('');
this.name('');
this.name.error(false);
this.body('');
this.body.loading(false);
this.body.error(false);
this.submitRequest(false);
this.submitError('');
if (this.editor) {
this.editor.setPlain('', false);
}
};
_proto.populateBodyFromEditor = function populateBodyFromEditor() {
if (this.editor) {
this.body(this.editor.getDataWithHtmlMark());
}
};
_proto.editorSetBody = function editorSetBody(sBody) {
var _this3 = this;
if (!this.editor && this.signatureDom()) {
this.editor = new Common_HtmlEditor__WEBPACK_IMPORTED_MODULE_8__["HtmlEditor"](this.signatureDom(), function () {
_this3.populateBodyFromEditor();
}, function () {
_this3.editor.setHtmlOrPlain(sBody);
});
} else {
this.editor.setHtmlOrPlain(sBody);
}
};
_proto.onShow = function onShow(template) {
var _this4 = this;
this.clearPopup();
if (template && template.id) {
this.id(template.id);
this.name(template.name);
this.body(template.body);
if (template.populated) {
this.editorSetBody(this.body());
} else {
this.body.loading(true);
this.body.error(false);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].templateGetById(function (result, data) {
_this4.body.loading(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_5__["StorageResultType"].Success === result && data && data.Result && 'Object/Template' === data.Result['@Object'] && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["isNormal"])(data.Result.Body)) {
template.body = data.Result.Body;
template.populated = true;
_this4.body(template.body);
_this4.body.error(false);
} else {
_this4.body('');
_this4.body.error(true);
}
_this4.editorSetBody(_this4.body());
}, this.id());
}
} else {
this.editorSetBody('');
}
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.name.focus(true);
};
return TemplatePopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_12__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "addTemplateCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "addTemplateCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 432 */,
/* 433 */,
/* 434 */,
/* 435 */,
/* 436 */
/*!******************************************!*\
!*** ./node_modules/classnames/index.js ***!
\******************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Copyright (c) 2018 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
'use strict';
var hasOwn = {}.hasOwnProperty;
function classNames() {
var classes = [];
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
if (!arg) continue;
var argType = typeof arg;
if (argType === 'string' || argType === 'number') {
classes.push(arg);
} else if (Array.isArray(arg)) {
if (arg.length) {
var inner = classNames.apply(null, arg);
if (inner) {
classes.push(inner);
}
}
} else if (argType === 'object') {
if (arg.toString === Object.prototype.toString) {
for (var key in arg) {
if (hasOwn.call(arg, key) && arg[key]) {
classes.push(key);
}
}
} else {
classes.push(arg.toString());
}
}
}
return classes.join(' ');
}
if ( true && module.exports) {
classNames.default = classNames;
module.exports = classNames;
} else if (true) {
// register as 'classnames', consistent with npm package name
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
return classNames;
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {}
}());
/***/ }),
/* 437 */
/*!**********************************************!*\
!*** ./node_modules/lozad/dist/lozad.min.js ***!
\**********************************************/
/*! no static exports found */
/*! exports used: default */
/***/ (function(module, exports, __webpack_require__) {
/*! lozad.js - v1.16.0 - 2020-09-06
* https://github.com/ApoorvSaxena/lozad.js
* Copyright (c) 2020 Apoorv Saxena; Licensed MIT */
!function(t,e){ true?module.exports=e():undefined}(this,function(){"use strict";
/**
* Detect IE browser
* @const {boolean}
* @private
*/var g="undefined"!=typeof document&&document.documentMode,f={rootMargin:"0px",threshold:0,load:function(t){if("picture"===t.nodeName.toLowerCase()){var e=t.querySelector("img"),r=!1;null===e&&(e=document.createElement("img"),r=!0),g&&t.getAttribute("data-iesrc")&&(e.src=t.getAttribute("data-iesrc")),t.getAttribute("data-alt")&&(e.alt=t.getAttribute("data-alt")),r&&t.append(e)}if("video"===t.nodeName.toLowerCase()&&!t.getAttribute("data-src")&&t.children){for(var a=t.children,o=void 0,i=0;i<=a.length-1;i++)(o=a[i].getAttribute("data-src"))&&(a[i].src=o);t.load()}t.getAttribute("data-poster")&&(t.poster=t.getAttribute("data-poster")),t.getAttribute("data-src")&&(t.src=t.getAttribute("data-src")),t.getAttribute("data-srcset")&&t.setAttribute("srcset",t.getAttribute("data-srcset"));var n=",";if(t.getAttribute("data-background-delimiter")&&(n=t.getAttribute("data-background-delimiter")),t.getAttribute("data-background-image"))t.style.backgroundImage="url('"+t.getAttribute("data-background-image").split(n).join("'),url('")+"')";else if(t.getAttribute("data-background-image-set")){var d=t.getAttribute("data-background-image-set").split(n),u=d[0].substr(0,d[0].indexOf(" "))||d[0];// Substring before ... 1x
u=-1===u.indexOf("url(")?"url("+u+")":u,1===d.length?t.style.backgroundImage=u:t.setAttribute("style",(t.getAttribute("style")||"")+"background-image: "+u+"; background-image: -webkit-image-set("+d+"); background-image: image-set("+d+")")}t.getAttribute("data-toggle-class")&&t.classList.toggle(t.getAttribute("data-toggle-class"))},loaded:function(){}};function A(t){t.setAttribute("data-loaded",!0)}var m=function(t){return"true"===t.getAttribute("data-loaded")},v=function(t){var e=1<arguments.length&&void 0!==arguments[1]?arguments[1]:document;return t instanceof Element?[t]:t instanceof NodeList?t:e.querySelectorAll(t)};return function(){var r,a,o=0<arguments.length&&void 0!==arguments[0]?arguments[0]:".lozad",t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=Object.assign({},f,t),i=e.root,n=e.rootMargin,d=e.threshold,u=e.load,g=e.loaded,s=void 0;"undefined"!=typeof window&&window.IntersectionObserver&&(s=new IntersectionObserver((r=u,a=g,function(t,e){t.forEach(function(t){(0<t.intersectionRatio||t.isIntersecting)&&(e.unobserve(t.target),m(t.target)||(r(t.target),A(t.target),a(t.target)))})}),{root:i,rootMargin:n,threshold:d}));for(var c,l=v(o,i),b=0;b<l.length;b++)(c=l[b]).getAttribute("data-placeholder-background")&&(c.style.background=c.getAttribute("data-placeholder-background"));return{observe:function(){for(var t=v(o,i),e=0;e<t.length;e++)m(t[e])||(s?s.observe(t[e]):(u(t[e]),A(t[e]),g(t[e])))},triggerLoad:function(t){m(t)||(u(t),A(t),g(t))},observer:s}}});
/***/ }),
/* 438 */
/*!**************************************************!*\
!*** ./dev/Common/ClientStorageDriver/Cookie.js ***!
\**************************************************/
/*! exports provided: CookieDriver, default */
/*! exports used: CookieDriver */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return CookieDriver; });
/* unused harmony export default */
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! js-cookie */ 321);
/* harmony import */ var js_cookie__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(js_cookie__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Consts */ 24);
var CookieDriver = /*#__PURE__*/function () {
function CookieDriver() {}
var _proto = CookieDriver.prototype;
/**
* @param {string} key
* @param {*} data
* @returns {boolean}
*/
_proto.set = function set(key, data) {
var result = false,
storageResult = null;
try {
storageResult = js_cookie__WEBPACK_IMPORTED_MODULE_1___default.a.getJSON(Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* CLIENT_SIDE_STORAGE_INDEX_NAME */ "b"]);
} catch (e) {} // eslint-disable-line no-empty
(storageResult || (storageResult = {}))[key] = data;
try {
js_cookie__WEBPACK_IMPORTED_MODULE_1___default.a.set(Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* CLIENT_SIDE_STORAGE_INDEX_NAME */ "b"], storageResult, {
expires: 30
});
result = true;
} catch (e) {} // eslint-disable-line no-empty
return result;
}
/**
* @param {string} key
* @returns {*}
*/
;
_proto.get = function get(key) {
var result = null;
try {
var storageResult = js_cookie__WEBPACK_IMPORTED_MODULE_1___default.a.getJSON(Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* CLIENT_SIDE_STORAGE_INDEX_NAME */ "b"]);
result = storageResult && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["isUnd"])(storageResult[key]) ? storageResult[key] : null;
} catch (e) {} // eslint-disable-line no-empty
return result;
}
/**
* @returns {boolean}
*/
;
CookieDriver.supported = function supported() {
return !!(window__WEBPACK_IMPORTED_MODULE_0___default.a.navigator && window__WEBPACK_IMPORTED_MODULE_0___default.a.navigator.cookieEnabled);
};
return CookieDriver;
}();
/***/ }),
/* 439 */
/*!********************************************************!*\
!*** ./dev/Common/ClientStorageDriver/LocalStorage.js ***!
\********************************************************/
/*! exports provided: LocalStorageDriver, default */
/*! exports used: LocalStorageDriver */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return LocalStorageDriver; });
/* unused harmony export default */
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Storage_RainLoop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Storage/RainLoop */ 163);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Consts */ 24);
var LocalStorageDriver = /*#__PURE__*/function () {
function LocalStorageDriver() {
this.s = null;
this.s = window__WEBPACK_IMPORTED_MODULE_0___default.a.localStorage || null;
}
/**
* @param {string} key
* @param {*} data
* @returns {boolean}
*/
var _proto = LocalStorageDriver.prototype;
_proto.set = function set(key, data) {
if (!this.s) {
return false;
}
var storageResult = null;
try {
var storageValue = this.s.getItem(Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* CLIENT_SIDE_STORAGE_INDEX_NAME */ "b"]) || null;
storageResult = null === storageValue ? null : window__WEBPACK_IMPORTED_MODULE_0___default.a.JSON.parse(storageValue);
} catch (e) {} // eslint-disable-line no-empty
(storageResult || (storageResult = {}))[key] = data;
try {
this.s.setItem(Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* CLIENT_SIDE_STORAGE_INDEX_NAME */ "b"], window__WEBPACK_IMPORTED_MODULE_0___default.a.JSON.stringify(storageResult));
return true;
} catch (e) {} // eslint-disable-line no-empty
return false;
}
/**
* @param {string} key
* @returns {*}
*/
;
_proto.get = function get(key) {
if (!this.s) {
return null;
}
try {
var storageValue = this.s.getItem(Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* CLIENT_SIDE_STORAGE_INDEX_NAME */ "b"]) || null,
storageResult = null === storageValue ? null : window__WEBPACK_IMPORTED_MODULE_0___default.a.JSON.parse(storageValue);
return storageResult && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_1__["isUnd"])(storageResult[key]) ? storageResult[key] : null;
} catch (e) {} // eslint-disable-line no-empty
return null;
}
/**
* @returns {boolean}
*/
;
LocalStorageDriver.supported = function supported() {
return Object(Storage_RainLoop__WEBPACK_IMPORTED_MODULE_2__[/* isStorageSupported */ "d"])('localStorage');
};
return LocalStorageDriver;
}();
/***/ }),
/* 440 */
/*!*****************************!*\
!*** ./dev/Model/Folder.js ***!
\*****************************/
/*! exports provided: FolderModel, default */
/*! exports used: FolderModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return FolderModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 203);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var FolderModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(FolderModel, _AbstractModel);
function FolderModel() {
var _this;
_this = _AbstractModel.call(this, 'FolderModel') || this;
_this.name = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable('');
_this.fullName = '';
_this.fullNameRaw = '';
_this.fullNameHash = '';
_this.delimiter = '';
_this.namespace = '';
_this.deep = 0;
_this.interval = 0;
_this.selectable = false;
_this.existen = true;
_this.type = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].User);
_this.focused = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.selected = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.edited = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.subScribed = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(true);
_this.checkable = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.subFolders = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observableArray([]);
_this.deleteAccess = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.actionBlink = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false).extend({
falseTimeout: 1000
});
_this.nameForEdit = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable('');
_this.privateMessageCountAll = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(0);
_this.privateMessageCountUnread = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(0);
_this.collapsedPrivate = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(true);
return _this;
}
/**
* @static
* @param {AjaxJsonFolder} json
* @returns {?FolderModel}
*/
FolderModel.newInstanceFromJson = function newInstanceFromJson(json) {
var folder = new FolderModel();
return folder.initByJson(json) ? folder.initComputed() : null;
}
/**
* @returns {FolderModel}
*/
;
var _proto = FolderModel.prototype;
_proto.initComputed = function initComputed() {
var _this2 = this;
var inboxFolderName = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_11__[/* getFolderInboxName */ "h"])();
this.isInbox = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Inbox === _this2.type();
});
this.hasSubScribedSubfolders = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return !!_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_6___default.a).call(___WEBPACK_IMPORTED_MODULE_6___default.a, _this2.subFolders(), function (oFolder) {
return (oFolder.subScribed() || oFolder.hasSubScribedSubfolders()) && !oFolder.isSystemFolder();
});
});
this.canBeEdited = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].User === _this2.type() && _this2.existen && _this2.selectable;
});
this.visible = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
var isSubScribed = _this2.subScribed(),
isSubFolders = _this2.hasSubScribedSubfolders();
return isSubScribed || isSubFolders && (!_this2.existen || !_this2.selectable);
});
this.isSystemFolder = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].User !== _this2.type();
});
this.hidden = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
var isSystem = _this2.isSystemFolder(),
isSubFolders = _this2.hasSubScribedSubfolders();
return isSystem && !isSubFolders || !_this2.selectable && !isSubFolders;
});
this.selectableForFolderList = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return !_this2.isSystemFolder() && _this2.selectable;
});
this.messageCountAll = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed({
read: this.privateMessageCountAll,
write: function write(iValue) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isPosNumeric"])(iValue, true)) {
_this2.privateMessageCountAll(iValue);
} else {
_this2.privateMessageCountAll.valueHasMutated();
}
}
}).extend({
notify: 'always'
});
this.messageCountUnread = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed({
read: this.privateMessageCountUnread,
write: function write(value) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_9__["isPosNumeric"])(value, true)) {
_this2.privateMessageCountUnread(value);
} else {
_this2.privateMessageCountUnread.valueHasMutated();
}
}
}).extend({
notify: 'always'
});
this.printableUnreadCount = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
var count = _this2.messageCountAll(),
unread = _this2.messageCountUnread(),
type = _this2.type();
if (0 < count) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Draft === type) {
return '' + count;
} else if (0 < unread && Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Trash !== type && Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Archive !== type && Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].SentItems !== type) {
return '' + unread;
}
}
return '';
});
this.canBeDeleted = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
var bSystem = _this2.isSystemFolder();
return !bSystem && 0 === _this2.subFolders().length && inboxFolderName !== _this2.fullNameRaw;
});
this.canBeSubScribed = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return !_this2.isSystemFolder() && _this2.selectable && inboxFolderName !== _this2.fullNameRaw;
});
this.canBeChecked = this.canBeSubScribed;
this.localName = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["trigger"])();
var name = _this2.name();
var type = _this2.type();
if (_this2.isSystemFolder()) {
switch (type) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Inbox:
name = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/INBOX_NAME');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].SentItems:
name = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/SENT_NAME');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Draft:
name = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/DRAFTS_NAME');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Spam:
name = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/SPAM_NAME');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Trash:
name = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/TRASH_NAME');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Archive:
name = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/ARCHIVE_NAME');
break;
// no default
}
}
return name;
});
this.manageFolderSystemName = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["trigger"])();
var suffix = '';
var type = _this2.type(),
name = _this2.name();
if (_this2.isSystemFolder()) {
switch (type) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Inbox:
suffix = '(' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/INBOX_NAME') + ')';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].SentItems:
suffix = '(' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/SENT_NAME') + ')';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Draft:
suffix = '(' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/DRAFTS_NAME') + ')';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Spam:
suffix = '(' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/SPAM_NAME') + ')';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Trash:
suffix = '(' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/TRASH_NAME') + ')';
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Archive:
suffix = '(' + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["i18n"])('FOLDER_LIST/ARCHIVE_NAME') + ')';
break;
// no default
}
}
if ('' !== suffix && '(' + name + ')' === suffix || '(inbox)' === suffix.toLowerCase()) {
suffix = '';
}
return suffix;
});
this.collapsed = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed({
read: function read() {
return !_this2.hidden() && _this2.collapsedPrivate();
},
write: function write(value) {
_this2.collapsedPrivate(value);
}
});
this.hasUnreadMessages = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return 0 < _this2.messageCountUnread() && '' !== _this2.printableUnreadCount();
});
this.hasSubScribedUnreadMessagesSubfolders = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
return !!_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_1___default()(___WEBPACK_IMPORTED_MODULE_6___default.a).call(___WEBPACK_IMPORTED_MODULE_6___default.a, _this2.subFolders(), function (folder) {
return folder.hasUnreadMessages() || folder.hasSubScribedUnreadMessagesSubfolders();
});
}); // subscribe
this.name.subscribe(function (value) {
_this2.nameForEdit(value);
});
this.edited.subscribe(function (value) {
if (value) {
_this2.nameForEdit(_this2.name());
}
});
this.messageCountUnread.subscribe(function (unread) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Inbox === _this2.type()) {
Common_Events__WEBPACK_IMPORTED_MODULE_12__[/* pub */ "a"]('mailbox.inbox-unread-count', [unread]);
}
});
return this;
}
/**
* @returns {string}
*/
;
_proto.collapsedCss = function collapsedCss() {
return this.hasSubScribedSubfolders() ? this.collapsed() ? 'icon-right-mini e-collapsed-sign' : 'icon-down-mini e-collapsed-sign' : 'icon-none e-collapsed-sign';
}
/**
* @param {AjaxJsonFolder} json
* @returns {boolean}
*/
;
_proto.initByJson = function initByJson(json) {
var bResult = false;
var sInboxFolderName = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_11__[/* getFolderInboxName */ "h"])();
if (json && 'Object/Folder' === json['@Object']) {
this.name(json.Name);
this.delimiter = json.Delimiter;
this.fullName = json.FullName;
this.fullNameRaw = json.FullNameRaw;
this.fullNameHash = json.FullNameHash;
this.deep = json.FullNameRaw.split(this.delimiter).length - 1;
this.selectable = !!json.IsSelectable;
this.existen = !!json.IsExists;
this.subScribed(!!json.IsSubscribed);
this.checkable(!!json.Checkable);
this.type(sInboxFolderName === this.fullNameRaw ? Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].Inbox : Common_Enums__WEBPACK_IMPORTED_MODULE_8__["FolderType"].User);
bResult = true;
}
return bResult;
}
/**
* @returns {string}
*/
;
_proto.printableFullName = function printableFullName() {
return this.fullName.split(this.delimiter).join(' / ');
};
return FolderModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_13__[/* AbstractModel */ "a"]);
/***/ }),
/* 441 */
/*!**************************************!*\
!*** ./dev/Promises/AbstractAjax.js ***!
\**************************************/
/*! exports provided: AbstractAjaxPromises, default */
/*! exports used: AbstractAjaxPromises */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AbstractAjaxPromises; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/promise */ 62);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Plugins */ 36);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Promises_AbstractBasic__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Promises/AbstractBasic */ 317);
var AbstractAjaxPromises = /*#__PURE__*/function (_AbstractBasicPromise) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AbstractAjaxPromises, _AbstractBasicPromise);
function AbstractAjaxPromises() {
var _this;
_this = _AbstractBasicPromise.call(this) || this;
_this.oRequests = {};
_this.clear();
return _this;
}
var _proto = AbstractAjaxPromises.prototype;
_proto.clear = function clear() {
this.oRequests = {};
};
_proto.abort = function abort(sAction, bClearOnly) {
if (this.oRequests[sAction]) {
if (!bClearOnly && this.oRequests[sAction].abort) {
this.oRequests[sAction].__aborted__ = true;
this.oRequests[sAction].abort();
}
this.oRequests[sAction] = null;
delete this.oRequests[sAction];
}
return this;
};
_proto.ajaxRequest = function ajaxRequest(action, isPost, timeOut, params, additionalGetString, fTrigger) {
var _this2 = this;
return new _babel_runtime_corejs3_core_js_stable_promise__WEBPACK_IMPORTED_MODULE_1___default.a(function (resolve, reject) {
var start = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["microtime"])();
timeOut = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isNormal"])(timeOut) ? timeOut : Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* DEFAULT_AJAX_TIMEOUT */ "g"];
additionalGetString = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isUnd"])(additionalGetString) ? '' : Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pString"])(additionalGetString);
if (isPost) {
params.XToken = Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["appSettingsGet"]('token');
}
Common_Plugins__WEBPACK_IMPORTED_MODULE_9__[/* runHook */ "f"]('ajax-default-request', [action, params, additionalGetString]);
_this2.setTrigger(fTrigger, true);
var oH = $__WEBPACK_IMPORTED_MODULE_3___default.a.ajax({
type: isPost ? 'POST' : 'GET',
url: Object(Common_Links__WEBPACK_IMPORTED_MODULE_4__[/* ajax */ "a"])(additionalGetString),
async: true,
dataType: 'json',
data: isPost ? params || {} : {},
timeout: timeOut,
global: true
}).always(function (data, textStatus) {
var isCached = false,
errorData = null;
if (data && data.Time) {
isCached = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pInt"])(data.Time) > Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["microtime"])() - start;
}
if (data && data.UpdateToken) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__ && Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.setClientSideToken) {
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.setClientSideToken(data.UpdateToken);
}
} // backward capability
var type = '';
switch (true) {
case 'success' === textStatus && data && data.Result && action === data.Action:
type = Common_Enums__WEBPACK_IMPORTED_MODULE_7__["StorageResultType"].Success;
break;
case 'abort' === textStatus && (!data || !data.__aborted__):
type = Common_Enums__WEBPACK_IMPORTED_MODULE_7__["StorageResultType"].Abort;
break;
default:
type = Common_Enums__WEBPACK_IMPORTED_MODULE_7__["StorageResultType"].Error;
break;
}
Common_Plugins__WEBPACK_IMPORTED_MODULE_9__[/* runHook */ "f"]('ajax-default-response', [action, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["StorageResultType"].Success === type ? data : null, type, isCached, params]);
if ('success' === textStatus) {
if (data && data.Result && action === data.Action) {
data.__cached__ = isCached;
resolve(data);
} else if (data && data.Action) {
errorData = data;
reject(data.ErrorCode ? data.ErrorCode : Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AjaxFalse);
} else {
errorData = data;
reject(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AjaxParse);
}
} else if ('timeout' === textStatus) {
errorData = data;
reject(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AjaxTimeout);
} else if ('abort' === textStatus) {
if (!data || !data.__aborted__) {
reject(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AjaxAbort);
}
} else {
errorData = data;
reject(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AjaxParse);
}
if (_this2.oRequests[action]) {
_this2.oRequests[action] = null;
delete _this2.oRequests[action];
}
_this2.setTrigger(fTrigger, false);
if (errorData) {
if (-1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["inArray"])(errorData.ErrorCode, [Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AuthError, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AccessError, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].ConnectionError, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].DomainNotAllowed, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].AccountNotAllowed, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].MailServerError, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].UnknownNotification, Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].UnknownError])) {
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].iAjaxErrorCount += 1;
}
if (Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].InvalidToken === errorData.ErrorCode) {
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].iTokenErrorCount += 1;
}
if (Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* TOKEN_ERROR_LIMIT */ "q"] < Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].iTokenErrorCount) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__ && Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.loginAndLogoutReload) {
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.loginAndLogoutReload(false, true);
}
}
if (errorData.ClearAuth || errorData.Logout || Common_Consts__WEBPACK_IMPORTED_MODULE_6__[/* AJAX_ERROR_LIMIT */ "a"] < Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].iAjaxErrorCount) {
if (Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__ && Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.clearClientSideToken) {
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.clearClientSideToken();
}
if (Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__ && !errorData.ClearAuth && Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.loginAndLogoutReload) {
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["data"].__APP__.loginAndLogoutReload(false, true);
}
}
}
});
if (oH) {
if (_this2.oRequests[action]) {
_this2.oRequests[action] = null;
delete _this2.oRequests[action];
}
_this2.oRequests[action] = oH;
}
});
};
_proto.getRequest = function getRequest(sAction, fTrigger, sAdditionalGetString, iTimeOut) {
sAdditionalGetString = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isUnd"])(sAdditionalGetString) ? '' : Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pString"])(sAdditionalGetString);
sAdditionalGetString = sAction + '/' + sAdditionalGetString;
return this.ajaxRequest(sAction, false, iTimeOut, null, sAdditionalGetString, fTrigger);
};
_proto.postRequest = function postRequest(action, fTrigger, params, timeOut) {
params = params || {};
params.Action = action;
return this.ajaxRequest(action, true, timeOut, params, '', fTrigger);
};
return AbstractAjaxPromises;
}(Promises_AbstractBasic__WEBPACK_IMPORTED_MODULE_11__[/* AbstractBasicPromises */ "a"]);
/***/ }),
/* 442 */
/*!******************************!*\
!*** ./dev/Model/Account.js ***!
\******************************/
/*! exports provided: AccountModel, default */
/*! exports used: AccountModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AccountModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var AccountModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AccountModel, _AbstractModel);
/**
* @param {string} email
* @param {boolean=} canBeDelete = true
* @param {number=} count = 0
*/
function AccountModel(email, canBeDelete, count) {
var _this;
if (canBeDelete === void 0) {
canBeDelete = true;
}
if (count === void 0) {
count = 0;
}
_this = _AbstractModel.call(this, 'AccountModel') || this;
_this.email = email;
_this.count = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(count);
_this.deleteAccess = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
_this.canBeDeleted = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(!!canBeDelete);
_this.canBeEdit = _this.canBeDeleted;
return _this;
}
/**
* @returns {string}
*/
var _proto = AccountModel.prototype;
_proto.changeAccountLink = function changeAccountLink() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_2__[/* change */ "i"])(this.email);
};
return AccountModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_3__[/* AbstractModel */ "a"]);
/***/ }),
/* 443 */
/*!*******************************!*\
!*** ./dev/Model/Identity.js ***!
\*******************************/
/*! exports provided: IdentityModel, default */
/*! exports used: IdentityModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return IdentityModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var IdentityModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(IdentityModel, _AbstractModel);
/**
* @param {string} id
* @param {string} email
*/
function IdentityModel(id, email) {
var _this;
_this = _AbstractModel.call(this, 'IdentityModel') || this;
_this.id = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(id || '');
_this.email = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(email);
_this.name = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
_this.replyTo = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
_this.bcc = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
_this.signature = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable('');
_this.signatureInsertBefore = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
_this.deleteAccess = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
_this.canBeDeleted = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return '' !== _this.id();
});
return _this;
}
/**
* @returns {string}
*/
var _proto = IdentityModel.prototype;
_proto.formattedName = function formattedName() {
var name = this.name(),
email = this.email();
return '' !== name ? name + ' (' + email + ')' : email;
};
return IdentityModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_3__[/* AbstractModel */ "a"]);
/***/ }),
/* 444 */
/*!*******************************!*\
!*** ./dev/Model/Template.js ***!
\*******************************/
/*! exports provided: TemplateModel, default */
/*! exports used: TemplateModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TemplateModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var TemplateModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(TemplateModel, _AbstractModel);
/**
* @param {string} id
* @param {string} name
* @param {string} body
*/
function TemplateModel(id, name, body) {
var _this;
_this = _AbstractModel.call(this, 'TemplateModel') || this;
_this.id = id;
_this.name = name;
_this.body = body;
_this.populated = true;
_this.deleteAccess = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
return _this;
}
/**
* @returns {boolean}
*/
var _proto = TemplateModel.prototype;
_proto.parse = function parse(json) {
var result = false;
if (json && 'Object/Template' === json['@Object']) {
this.id = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pString"])(json.ID);
this.name = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pString"])(json.Name);
this.body = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["pString"])(json.Body);
this.populated = !!json.Populated;
result = true;
}
return result;
};
return TemplateModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_4__[/* AbstractModel */ "a"]);
/***/ }),
/* 445 */
/*!*********************************!*\
!*** ./dev/Model/OpenPgpKey.js ***!
\*********************************/
/*! exports provided: OpenPgpKeyModel, default */
/*! exports used: OpenPgpKeyModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OpenPgpKeyModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_keys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/keys */ 308);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_keys__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_keys__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
var OpenPgpKeyModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(OpenPgpKeyModel, _AbstractModel);
/**
* @param {string} index
* @param {string} guID
* @param {string} ID
* @param {array} IDs
* @param {array} userIDs
* @param {array} emails
* @param {boolean} isPrivate
* @param {string} armor
* @param {string} userID
*/
function OpenPgpKeyModel(index, guID, ID, IDs, userIDs, emails, isPrivate, armor, userID) {
var _this;
_this = _AbstractModel.call(this, 'OpenPgpKeyModel') || this;
_this.index = index;
_this.id = ID;
_this.ids = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["isNonEmptyArray"])(IDs) ? IDs : [ID];
_this.guid = guID;
_this.user = '';
_this.users = userIDs;
_this.email = '';
_this.emails = emails;
_this.armor = armor;
_this.isPrivate = !!isPrivate;
_this.selectUser(userID);
_this.deleteAccess = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(false);
return _this;
}
var _proto = OpenPgpKeyModel.prototype;
_proto.getNativeKey = function getNativeKey() {
var key = null;
try {
key = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].openpgp.key.readArmored(this.armor);
if (key && !key.err && _babel_runtime_corejs3_core_js_stable_instance_keys__WEBPACK_IMPORTED_MODULE_1___default()(key) && _babel_runtime_corejs3_core_js_stable_instance_keys__WEBPACK_IMPORTED_MODULE_1___default()(key)[0]) {
return key;
}
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["log"])(e);
}
return null;
};
_proto.getNativeKeys = function getNativeKeys() {
var key = this.getNativeKey();
return key && _babel_runtime_corejs3_core_js_stable_instance_keys__WEBPACK_IMPORTED_MODULE_1___default()(key) ? _babel_runtime_corejs3_core_js_stable_instance_keys__WEBPACK_IMPORTED_MODULE_1___default()(key) : null;
};
_proto.select = function select(pattern, property) {
if (this[property]) {
var index = this[property].indexOf(pattern);
if (-1 !== index) {
this.user = this.users[index];
this.email = this.emails[index];
}
}
};
_proto.selectUser = function selectUser(user) {
this.select(user, 'users');
};
_proto.selectEmail = function selectEmail(email) {
this.select(email, 'emails');
};
return OpenPgpKeyModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_4__[/* AbstractModel */ "a"]);
/***/ }),
/* 446 */
/*!**********************************!*\
!*** ./dev/Screen/User/Login.js ***!
\**********************************/
/*! exports provided: LoginUserScreen, default */
/*! exports used: LoginUserScreen */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return LoginUserScreen; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Knoin_AbstractScreen__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Knoin/AbstractScreen */ 152);
/* harmony import */ var View_User_Login__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! View/User/Login */ 447);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Helper/Apps/User */ 22);
var LoginUserScreen = /*#__PURE__*/function (_AbstractScreen) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(LoginUserScreen, _AbstractScreen);
function LoginUserScreen() {
return _AbstractScreen.call(this, 'login', [View_User_Login__WEBPACK_IMPORTED_MODULE_2__[/* LoginUserView */ "a"]]) || this;
}
var _proto = LoginUserScreen.prototype;
_proto.onShow = function onShow() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__[/* getApp */ "a"])().setWindowTitle('');
};
return LoginUserScreen;
}(Knoin_AbstractScreen__WEBPACK_IMPORTED_MODULE_1__[/* AbstractScreen */ "a"]);
/***/ }),
/* 447 */
/*!********************************!*\
!*** ./dev/View/User/Login.js ***!
\********************************/
/*! exports provided: LoginUserView, default */
/*! exports used: LoginUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return LoginUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Plugins */ 36);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_Language__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Stores/Language */ 72);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Storage_Client__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Storage/Client */ 60);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2;
var LoginUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["view"])({
name: ['View/App/Login', 'View/User/Login'],
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["ViewType"].Center,
templateID: 'Login'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["command"])(function (self) {
return !self.submitRequest() && self.facebookLoginEnabled();
}), _dec3 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["command"])(function (self) {
return !self.submitRequest() && self.googleLoginEnabled();
}), _dec4 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["command"])(function (self) {
return !self.submitRequest() && self.googleGmailLoginEnabled();
}), _dec5 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["command"])(function (self) {
return !self.submitRequest() && self.twitterLoginEnabled();
}), _dec6 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["command"])(function (self) {
return !self.submitRequest();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(LoginUserView, _AbstractViewNext);
function LoginUserView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.hideSubmitButton = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["appSettingsGet"]('hideSubmitButton');
_this.welcome = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('UseLoginWelcomePage'));
_this.email = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.password = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.signMe = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.additionalCode = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.additionalCode.error = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.additionalCode.errorAnimation = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false).extend({
falseTimeout: 500
});
_this.additionalCode.focused = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.additionalCode.visibility = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.additionalCodeSignMe = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.logoImg = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('LoginLogo'));
_this.loginDescription = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('LoginDescription'));
_this.mobile = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["appSettingsGet"]('mobile');
_this.mobileDevice = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["appSettingsGet"]('mobileDevice');
_this.forgotPasswordLinkUrl = Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["appSettingsGet"]('forgotPasswordLinkUrl');
_this.registrationLinkUrl = Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["appSettingsGet"]('registrationLinkUrl');
_this.emailError = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.passwordError = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.emailErrorAnimation = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false).extend({
falseTimeout: 500
});
_this.passwordErrorAnimation = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false).extend({
falseTimeout: 500
});
_this.formHidden = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.formError = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].computed(function () {
return _this.emailErrorAnimation() || _this.passwordErrorAnimation() || _this.additionalCode.visibility() && _this.additionalCode.errorAnimation();
});
_this.emailFocus = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.passwordFocus = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.email.subscribe(function () {
_this.emailError(false);
_this.additionalCode('');
_this.additionalCode.visibility(false);
});
_this.password.subscribe(function () {
_this.passwordError(false);
});
_this.additionalCode.subscribe(function () {
_this.additionalCode.error(false);
});
_this.additionalCode.visibility.subscribe(function () {
_this.additionalCode.error(false);
});
_this.emailError.subscribe(function (bV) {
_this.emailErrorAnimation(!!bV);
});
_this.passwordError.subscribe(function (bV) {
_this.passwordErrorAnimation(!!bV);
});
_this.additionalCode.error.subscribe(function (bV) {
_this.additionalCode.errorAnimation(!!bV);
});
_this.submitRequest = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.submitError = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.submitErrorAddidional = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.submitError.subscribe(function (value) {
if ('' === value) {
_this.submitErrorAddidional('');
}
});
_this.allowLanguagesOnLogin = Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].allowLanguagesOnLogin;
_this.langRequest = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.language = Stores_Language__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].language;
_this.languages = Stores_Language__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].languages;
_this.bSendLanguage = false;
_this.languageFullName = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].computed(function () {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["convertLangName"])(_this.language());
});
_this.signMeType = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].Unused);
_this.signMeType.subscribe(function (iValue) {
_this.signMe(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].DefaultOn === iValue);
});
_this.signMeVisibility = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].Unused !== _this.signMeType();
});
_this.facebookLoginEnabled = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.googleLoginEnabled = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.googleGmailLoginEnabled = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.twitterLoginEnabled = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.socialLoginEnabled = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].computed(function () {
var bF = _this.facebookLoginEnabled(),
bG = _this.googleLoginEnabled(),
bT = _this.twitterLoginEnabled();
return bF || bG || bT;
});
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AdditionalLoginError') && !_this.submitError()) {
_this.submitError(Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AdditionalLoginError'));
}
return _this;
}
var _proto = LoginUserView.prototype;
_proto.windowOpenFeatures = function windowOpenFeatures(wh) {
return "left=200,top=100,width=" + wh + ",height=" + wh + ",menubar=no,status=no,resizable=yes,scrollbars=yes";
};
_proto.facebookCommand = function facebookCommand() {
window__WEBPACK_IMPORTED_MODULE_3___default.a.open(Object(Common_Links__WEBPACK_IMPORTED_MODULE_9__[/* socialFacebook */ "A"])(), 'Facebook', this.windowOpenFeatures(500));
return true;
};
_proto.googleCommand = function googleCommand() {
window__WEBPACK_IMPORTED_MODULE_3___default.a.open(Object(Common_Links__WEBPACK_IMPORTED_MODULE_9__[/* socialGoogle */ "B"])(), 'Google', this.windowOpenFeatures(550));
return true;
};
_proto.googleGmailCommand = function googleGmailCommand() {
window__WEBPACK_IMPORTED_MODULE_3___default.a.open(Object(Common_Links__WEBPACK_IMPORTED_MODULE_9__[/* socialGoogle */ "B"])(true), 'Google', this.windowOpenFeatures(550));
return true;
};
_proto.twitterCommand = function twitterCommand() {
window__WEBPACK_IMPORTED_MODULE_3___default.a.open(Object(Common_Links__WEBPACK_IMPORTED_MODULE_9__[/* socialTwitter */ "C"])(), 'Twitter', this.windowOpenFeatures(500));
return true;
};
_proto.submitCommand = function submitCommand() {
var _this2 = this;
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["triggerAutocompleteInputChange"])();
this.emailError(false);
this.passwordError(false);
this.emailError('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(this.email()));
this.passwordError('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(this.password()));
if (this.additionalCode.visibility()) {
this.additionalCode.error(false);
this.additionalCode.error('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(this.additionalCode()));
}
if (this.emailError() || this.passwordError() || this.additionalCode.visibility() && this.additionalCode.error()) {
switch (true) {
case this.emailError():
this.emailFocus(true);
break;
case this.passwordError():
this.passwordFocus(true);
break;
case this.additionalCode.visibility() && this.additionalCode.error():
this.additionalCode.focused(true);
break;
// no default
}
return false;
}
var pluginResultCode = 0,
pluginResultMessage = '';
var fSubmitResult = function fSubmitResult(iResultCode, sResultMessage) {
pluginResultCode = iResultCode || 0;
pluginResultMessage = sResultMessage || '';
};
Common_Plugins__WEBPACK_IMPORTED_MODULE_11__[/* runHook */ "f"]('user-login-submit', [fSubmitResult]);
if (0 < pluginResultCode) {
this.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["getNotification"])(pluginResultCode));
return false;
} else if ('' !== pluginResultMessage) {
this.submitError(pluginResultMessage);
return false;
}
this.submitRequest(true);
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["$win"].trigger('rl.tooltips.diactivate');
var fLoginRequest = function fLoginRequest(sLoginPassword) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_16__[/* default */ "a"].login(function (sResult, oData) {
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["$win"].trigger('rl.tooltips.diactivate');
Common_Globals__WEBPACK_IMPORTED_MODULE_8__["$win"].trigger('rl.tooltips.activate');
if (Common_Enums__WEBPACK_IMPORTED_MODULE_6__["StorageResultType"].Success === sResult && oData && 'Login' === oData.Action) {
if (oData.Result) {
if (oData.TwoFactorAuth) {
_this2.additionalCode('');
_this2.additionalCode.visibility(true);
_this2.submitRequest(false);
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
return _this2.additionalCode.focused(true);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].Time100ms);
} else if (oData.Admin) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().redirectToAdminPanel();
} else {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().loginAndLogoutReload(false);
}
} else if (oData.ErrorCode) {
_this2.submitRequest(false);
if (-1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["inArray"])(oData.ErrorCode, [Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Notification"].InvalidInputArgument])) {
oData.ErrorCode = Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Notification"].AuthError;
}
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["getNotificationFromResponse"])(oData));
if ('' === _this2.submitError()) {
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Notification"].UnknownError));
} else if (oData.ErrorMessageAdditional) {
_this2.submitErrorAddidional(oData.ErrorMessageAdditional);
}
} else {
_this2.submitRequest(false);
}
} else {
_this2.submitRequest(false);
_this2.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Notification"].UnknownError));
}
}, _this2.email(), '', sLoginPassword, !!_this2.signMe(), _this2.bSendLanguage ? _this2.language() : '', _this2.additionalCode.visibility() ? _this2.additionalCode() : '', _this2.additionalCode.visibility() ? !!_this2.additionalCodeSignMe() : false);
Storage_Client__WEBPACK_IMPORTED_MODULE_15__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_6__["ClientSideKeyName"].LastSignMe, _this2.signMe() ? '-1-' : '-0-');
};
fLoginRequest(this.password());
return true;
};
_proto.displayMainForm = function displayMainForm() {
this.welcome(false);
};
_proto.onShow = function onShow() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["routeOff"])();
};
_proto.onShowWithDelay = function onShowWithDelay() {
if ('' !== this.email() && '' !== this.password()) {
this.passwordFocus(true);
} else if ('' === this.email()) {
this.emailFocus(true);
} else if ('' === this.password()) {
this.passwordFocus(true);
} else {
this.emailFocus(true);
}
};
_proto.onHide = function onHide() {
this.emailFocus(false);
this.passwordFocus(false);
};
_proto.onBuild = function onBuild() {
var _this3 = this;
var signMeLocal = Storage_Client__WEBPACK_IMPORTED_MODULE_15__[/* get */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_6__["ClientSideKeyName"].LastSignMe),
signMe = (Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('SignMe') || 'unused').toLowerCase(),
jsHash = Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["appSettingsGet"]('jsHash'),
fSocial = function fSocial(iErrorCode) {
iErrorCode = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["pInt"])(iErrorCode);
if (0 === iErrorCode) {
_this3.submitRequest(true);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().loginAndLogoutReload(false);
} else {
_this3.submitError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["getNotification"])(iErrorCode));
}
};
this.facebookLoginEnabled(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AllowFacebookSocial'));
this.twitterLoginEnabled(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AllowTwitterSocial'));
this.googleLoginEnabled(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AllowGoogleSocial') && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AllowGoogleSocialAuth'));
this.googleGmailLoginEnabled(!!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AllowGoogleSocial') && !!Storage_Settings__WEBPACK_IMPORTED_MODULE_14__["settingsGet"]('AllowGoogleSocialAuthGmail'));
switch (signMe) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeTypeAsString"].DefaultOff:
case Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeTypeAsString"].DefaultOn:
this.signMeType(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeTypeAsString"].DefaultOn === signMe ? Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].DefaultOn : Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].DefaultOff);
switch (signMeLocal) {
case '-1-':
this.signMeType(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].DefaultOn);
break;
case '-0-':
this.signMeType(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].DefaultOff);
break;
// no default
}
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeTypeAsString"].Unused:
default:
this.signMeType(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["LoginSignMeType"].Unused);
break;
}
this.email(Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].devEmail);
this.password(Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].devPassword);
if (this.googleLoginEnabled() || this.googleGmailLoginEnabled()) {
window__WEBPACK_IMPORTED_MODULE_3___default.a['rl_' + jsHash + '_google_login_service'] = fSocial;
}
if (this.facebookLoginEnabled()) {
window__WEBPACK_IMPORTED_MODULE_3___default.a['rl_' + jsHash + '_facebook_login_service'] = fSocial;
}
if (this.twitterLoginEnabled()) {
window__WEBPACK_IMPORTED_MODULE_3___default.a['rl_' + jsHash + '_twitter_login_service'] = fSocial;
}
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
Stores_Language__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].language.subscribe(function (value) {
_this3.langRequest(true);
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_10__["reload"])(false, value).then(function () {
_this3.langRequest(false);
_this3.bSendLanguage = true;
}, function () {
_this3.langRequest(false);
});
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].Time50ms);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["triggerAutocompleteInputChange"])(true);
};
_proto.submitForm = function submitForm() {
this.submitCommand();
};
_proto.selectLanguage = function selectLanguage() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Languages */ 291), [this.language, this.languages(), Stores_Language__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].userLanguage()]);
};
_proto.selectLanguageOnTab = function selectLanguageOnTab(bShift) {
var _this4 = this;
if (!bShift) {
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
_this4.emailFocus(true);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].Time50ms);
return false;
}
return true;
};
return LoginUserView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_19__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "facebookCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "facebookCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "googleCommand", [_dec3], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "googleCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "googleGmailCommand", [_dec4], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "googleGmailCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "twitterCommand", [_dec5], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "twitterCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "submitCommand", [_dec6], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "submitCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 448 */
/*!************************************!*\
!*** ./dev/Screen/User/MailBox.js ***!
\************************************/
/*! exports provided: MailBoxUserScreen, default */
/*! exports used: MailBoxUserScreen */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MailBoxUserScreen; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var View_User_MailBox_SystemDropDown__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! View/User/MailBox/SystemDropDown */ 449);
/* harmony import */ var View_User_MailBox_FolderList__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! View/User/MailBox/FolderList */ 450);
/* harmony import */ var View_User_MailBox_MessageList__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! View/User/MailBox/MessageList */ 452);
/* harmony import */ var View_User_MailBox_MessageView__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! View/User/MailBox/MessageView */ 453);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractScreen__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Knoin/AbstractScreen */ 152);
var MailBoxUserScreen = /*#__PURE__*/function (_AbstractScreen) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(MailBoxUserScreen, _AbstractScreen);
function MailBoxUserScreen() {
return _AbstractScreen.call(this, 'mailbox', [View_User_MailBox_SystemDropDown__WEBPACK_IMPORTED_MODULE_16__[/* SystemDropDownMailBoxUserView */ "a"], View_User_MailBox_FolderList__WEBPACK_IMPORTED_MODULE_17__[/* FolderListMailBoxUserView */ "a"], View_User_MailBox_MessageList__WEBPACK_IMPORTED_MODULE_18__[/* MessageListMailBoxUserView */ "a"], View_User_MailBox_MessageView__WEBPACK_IMPORTED_MODULE_19__[/* MessageViewMailBoxUserView */ "a"]]) || this;
}
/**
* @returns {void}
*/
var _proto = MailBoxUserScreen.prototype;
_proto.updateWindowTitle = function updateWindowTitle() {
var foldersInboxUnreadCount = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].foldersInboxUnreadCount();
var email = Stores_User_Account__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].email();
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["appSettingsGet"]('listPermanentFiltered')) {
foldersInboxUnreadCount = 0;
}
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_20__[/* getApp */ "a"])().setWindowTitle(('' === email ? '' : '' + (0 < foldersInboxUnreadCount ? '(' + foldersInboxUnreadCount + ') ' : ' ') + email + ' - ') + Object(Common_Translator__WEBPACK_IMPORTED_MODULE_8__["i18n"])('TITLES/MAILBOX'));
}
/**
* @returns {void}
*/
;
_proto.onShow = function onShow() {
this.updateWindowTitle();
Stores_User_App__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Focused"].None);
Stores_User_App__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Focused"].MessageList);
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["appSettingsGet"]('mobile')) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_5__["leftPanelDisabled"])(true);
}
if (!Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Capa"].Folders)) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_5__["leftPanelType"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Capa"].Composer) || Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Capa"].Contacts) ? 'short' : 'none');
} else {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_5__["leftPanelType"])('');
}
}
/**
* @param {string} folderHash
* @param {number} page
* @param {string} search
* @returns {void}
*/
;
_proto.onRoute = function onRoute(folderHash, page, search) {
var threadUid = folderHash.replace(/^(.+)~([\d]+)$/, '$2');
var folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_7__[/* getFolderFromCacheList */ "e"])(Object(Common_Cache__WEBPACK_IMPORTED_MODULE_7__[/* getFolderFullNameRaw */ "f"])(folderHash.replace(/~([\d]+)$/, '')));
if (folder) {
if (folderHash === threadUid) {
threadUid = '';
}
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].currentFolder(folder);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].messageListPage(page);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].messageListSearch(search);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].messageListThreadUid(threadUid);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_20__[/* getApp */ "a"])().reloadMessageList();
}
}
/**
* @returns {void}
*/
;
_proto.onStart = function onStart() {
var _this = this;
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].folderList.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["windowResizeCallback"]);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].messageList.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["windowResizeCallback"]);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].message.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["windowResizeCallback"]);
___WEBPACK_IMPORTED_MODULE_3___default.a.delay(function () {
return Stores_User_Settings__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].layout.valueHasMutated();
}, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Magics"].Time50ms);
___WEBPACK_IMPORTED_MODULE_3___default.a.delay(function () {
return Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_21__["warmUpScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132));
}, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Magics"].Time500ms);
Common_Events__WEBPACK_IMPORTED_MODULE_9__[/* sub */ "b"]('mailbox.inbox-unread-count', function (count) {
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].foldersInboxUnreadCount(count);
var email = Stores_User_Account__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].email();
___WEBPACK_IMPORTED_MODULE_3___default.a.each(Stores_User_Account__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].accounts(), function (item) {
if (item && email === item.email) {
item.count(count);
}
});
_this.updateWindowTitle();
});
}
/**
* @returns {void}
*/
;
_proto.onBuild = function onBuild() {
if (!Common_Globals__WEBPACK_IMPORTED_MODULE_5__["bMobileDevice"] && !Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["appSettingsGet"]('mobile')) {
___WEBPACK_IMPORTED_MODULE_3___default.a.defer(function () {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_20__[/* getApp */ "a"])().initHorizontalLayoutResizer(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ClientSideKeyName"].MessageListSize);
});
}
Common_Globals__WEBPACK_IMPORTED_MODULE_5__["$html"].on('click', '#rl-right', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_5__["moveAction"])(false);
});
}
/**
* @returns {Array}
*/
;
_proto.routes = function routes() {
var inboxFolderName = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_7__[/* getFolderInboxName */ "h"])(),
fNormS = function fNormS(request, vals) {
vals[0] = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pString"])(vals[0]);
vals[1] = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pInt"])(vals[1]);
vals[1] = 0 >= vals[1] ? 1 : vals[1];
vals[2] = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pString"])(vals[2]);
if ('' === request) {
vals[0] = inboxFolderName;
vals[1] = 1;
}
return [Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["decodeURI"])(vals[0]), vals[1], Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["decodeURI"])(vals[2])];
},
fNormD = function fNormD(request, vals) {
vals[0] = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pString"])(vals[0]);
vals[1] = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["pString"])(vals[1]);
if ('' === request) {
vals[0] = inboxFolderName;
}
return [Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["decodeURI"])(vals[0]), 1, Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["decodeURI"])(vals[1])];
};
return [[/^([a-zA-Z0-9~]+)\/p([1-9][0-9]*)\/(.+)\/?$/, {
'normalize_': fNormS
}], [/^([a-zA-Z0-9~]+)\/p([1-9][0-9]*)$/, {
'normalize_': fNormS
}], [/^([a-zA-Z0-9~]+)\/(.+)\/?$/, {
'normalize_': fNormD
}], [/^([^/]*)$/, {
'normalize_': fNormS
}]];
};
return MailBoxUserScreen;
}(Knoin_AbstractScreen__WEBPACK_IMPORTED_MODULE_22__[/* AbstractScreen */ "a"]);
/***/ }),
/* 449 */
/*!*************************************************!*\
!*** ./dev/View/User/MailBox/SystemDropDown.js ***!
\*************************************************/
/*! exports provided: SystemDropDownMailBoxUserView, default */
/*! exports used: SystemDropDownMailBoxUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SystemDropDownMailBoxUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var View_User_AbstractSystemDropDown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! View/User/AbstractSystemDropDown */ 318);
var _dec, _class;
var SystemDropDownMailBoxUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_1__["view"])({
name: 'View/User/MailBox/SystemDropDown',
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_1__["ViewType"].Right,
templateID: 'SystemDropDown'
}), _dec(_class = /*#__PURE__*/function (_AbstractSystemDropDo) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(SystemDropDownMailBoxUserView, _AbstractSystemDropDo);
function SystemDropDownMailBoxUserView() {
return _AbstractSystemDropDo.apply(this, arguments) || this;
}
return SystemDropDownMailBoxUserView;
}(View_User_AbstractSystemDropDown__WEBPACK_IMPORTED_MODULE_2__[/* AbstractSystemDropDownUserView */ "a"])) || _class);
/***/ }),
/* 450 */
/*!*********************************************!*\
!*** ./dev/View/User/MailBox/FolderList.js ***!
\*********************************************/
/*! exports provided: FolderListMailBoxUserView, default */
/*! exports used: FolderListMailBoxUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return FolderListMailBoxUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var FolderListMailBoxUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["view"])({
name: 'View/User/MailBox/FolderList',
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["ViewType"].Left,
templateID: 'MailFolderList'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(FolderListMailBoxUserView, _AbstractViewNext);
function FolderListMailBoxUserView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.oContentVisible = null;
_this.oContentScrollable = null;
_this.composeInEdit = Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].composeInEdit;
_this.messageList = Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].messageList;
_this.folderList = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].folderList;
_this.folderListSystem = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].folderListSystem;
_this.foldersChanging = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].foldersChanging;
_this.moveAction = Common_Globals__WEBPACK_IMPORTED_MODULE_9__["moveAction"];
_this.foldersListWithSingleInboxRootFolder = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].foldersListWithSingleInboxRootFolder;
_this.leftPanelDisabled = Common_Globals__WEBPACK_IMPORTED_MODULE_9__["leftPanelDisabled"];
_this.iDropOverTimer = 0;
_this.allowComposer = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_16__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].Composer);
_this.allowContacts = !!Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].contactsIsAllowed();
_this.allowFolders = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_16__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].Folders);
_this.folderListFocused = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Focused"].FolderList === Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].focusedState();
});
_this.isInboxStarred = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].computed(function () {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].currentFolder() && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].currentFolder().isInbox() && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].messageListSearch()).indexOf('is:flagged');
});
return _this;
}
var _proto = FolderListMailBoxUserView.prototype;
_proto.onBuild = function onBuild(dom) {
this.oContentVisible = $__WEBPACK_IMPORTED_MODULE_4___default()('.b-content', dom);
this.oContentScrollable = $__WEBPACK_IMPORTED_MODULE_4___default()('.content', this.oContentVisible);
var self = this,
isMobile = Storage_Settings__WEBPACK_IMPORTED_MODULE_16__["appSettingsGet"]('mobile'),
fSelectFolder = function fSelectFolder(el, event, starred) {
var isMove = Object(Common_Globals__WEBPACK_IMPORTED_MODULE_9__["moveAction"])();
if (isMobile) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_9__["leftPanelDisabled"])(true);
}
event.preventDefault();
if (starred) {
event.stopPropagation();
}
var folder = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].dataFor(el);
if (folder) {
if (isMove) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_9__["moveAction"])(false);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().moveMessagesToFolder(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].currentFolderFullNameRaw(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails(), folder.fullNameRaw, false);
} else {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Layout"].NoPreview === Stores_User_Settings__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].layout()) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].message(null);
}
if (folder.fullNameRaw === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].currentFolderFullNameRaw()) {
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_11__[/* setFolderHash */ "q"])(folder.fullNameRaw, '');
}
if (starred) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* mailBox */ "o"])(folder.fullNameHash, 1, 'is:flagged'));
} else {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* mailBox */ "o"])(folder.fullNameHash));
}
}
Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Focused"].MessageList);
}
};
dom.on('click', '.b-folders .e-item .e-link .e-collapsed-sign', function (event) {
// eslint-disable-line prefer-arrow-callback
var folder = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (folder && event) {
var collapsed = folder.collapsed();
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().setExpandedFolder(folder.fullNameHash, collapsed);
folder.collapsed(!collapsed);
event.preventDefault();
event.stopPropagation();
}
}).on('click', '.b-folders .e-item .e-link.selectable .inbox-star-icon', function (event) {
// eslint-disable-line prefer-arrow-callback
fSelectFolder(this, event, !self.isInboxStarred()); // eslint-disable-line no-invalid-this
}).on('click', '.b-folders .e-item .e-link.selectable', function (event) {
// eslint-disable-line prefer-arrow-callback
fSelectFolder(this, event, false); // eslint-disable-line no-invalid-this
});
key__WEBPACK_IMPORTED_MODULE_6___default()('up, down', Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].FolderList, function (event, handler) {
var keyCode = handler && 'up' === handler.shortcut ? Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up : Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down,
$items = $__WEBPACK_IMPORTED_MODULE_4___default()('.b-folders .e-item .e-link:not(.hidden):visible', dom);
if (event && $items.length) {
var index = $items.index(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_1___default()($items).call($items, '.focused'));
if (-1 < index) {
$items.eq(index).removeClass('focused');
}
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Up === keyCode && 0 < index) {
index -= 1;
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["EventKeyCode"].Down === keyCode && index < $items.length - 1) {
index += 1;
}
$items.eq(index).addClass('focused');
self.scrollToFocused();
}
return false;
});
key__WEBPACK_IMPORTED_MODULE_6___default()('enter', Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].FolderList, function () {
var $items = $__WEBPACK_IMPORTED_MODULE_4___default()('.b-folders .e-item .e-link:not(.hidden).focused', dom);
if ($items.length && $items[0]) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Focused"].MessageList);
$items.click();
}
return false;
});
key__WEBPACK_IMPORTED_MODULE_6___default()('space', Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].FolderList, function () {
var $items = $__WEBPACK_IMPORTED_MODULE_4___default()('.b-folders .e-item .e-link:not(.hidden).focused', dom);
if ($items.length && $items[0]) {
var folder = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].dataFor($items[0]);
if (folder) {
var collapsed = folder.collapsed();
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().setExpandedFolder(folder.fullNameHash, collapsed);
folder.collapsed(!collapsed);
}
}
return false;
});
key__WEBPACK_IMPORTED_MODULE_6___default()('esc, tab, shift+tab, right', Common_Enums__WEBPACK_IMPORTED_MODULE_8__["KeyState"].FolderList, function () {
Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Focused"].MessageList);
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_9__["moveAction"])(false);
return false;
});
Stores_User_App__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].focusedState.subscribe(function (value) {
$__WEBPACK_IMPORTED_MODULE_4___default()('.b-folders .e-item .e-link.focused', dom).removeClass('focused');
if (Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Focused"].FolderList === value) {
$__WEBPACK_IMPORTED_MODULE_4___default()('.b-folders .e-item .e-link.selected', dom).addClass('focused');
}
});
};
_proto.messagesDropOver = function messagesDropOver(folder) {
window__WEBPACK_IMPORTED_MODULE_3___default.a.clearTimeout(this.iDropOverTimer);
if (folder && folder.collapsed()) {
this.iDropOverTimer = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_2___default()(function () {
folder.collapsed(false);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().setExpandedFolder(folder.fullNameHash, true);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["windowResize"])();
}, Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Magics"].Time500ms);
}
};
_proto.messagesDropOut = function messagesDropOut() {
window__WEBPACK_IMPORTED_MODULE_3___default.a.clearTimeout(this.iDropOverTimer);
};
_proto.scrollToFocused = function scrollToFocused() {
if (!this.oContentVisible || !this.oContentScrollable) {
return false;
}
var offset = 20,
focused = $__WEBPACK_IMPORTED_MODULE_4___default()('.e-item .e-link.focused', this.oContentScrollable),
pos = focused.position(),
visibleHeight = this.oContentVisible.height(),
focusedHeight = focused.outerHeight();
if (pos && (0 > pos.top || pos.top + focusedHeight > visibleHeight)) {
if (0 > pos.top) {
this.oContentScrollable.scrollTop(this.oContentScrollable.scrollTop() + pos.top - offset);
} else {
this.oContentScrollable.scrollTop(this.oContentScrollable.scrollTop() + pos.top - visibleHeight + focusedHeight + offset);
}
return true;
}
return false;
}
/**
* @param {FolderModel} toFolder
* @param {{helper:jQuery}} ui
* @returns {void}
*/
;
_proto.messagesDrop = function messagesDrop(toFolder, ui) {
if (toFolder && ui && ui.helper) {
var fromFolderFullNameRaw = ui.helper.data('rl-folder'),
copy = Common_Globals__WEBPACK_IMPORTED_MODULE_9__["$html"].hasClass('rl-ctrl-key-pressed'),
uids = ui.helper.data('rl-uids');
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["isNormal"])(fromFolderFullNameRaw) && '' !== fromFolderFullNameRaw && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["isArray"])(uids)) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_17__[/* getApp */ "a"])().moveMessagesToFolder(fromFolderFullNameRaw, uids, toFolder.fullNameRaw, copy);
}
}
};
_proto.composeClick = function composeClick() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_16__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_8__["Capa"].Composer)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132));
}
};
_proto.createFolder = function createFolder() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["showScreenPopup"])(__webpack_require__(/*! View/Popup/FolderCreate */ 428));
};
_proto.configureFolders = function configureFolders() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_10__[/* settings */ "z"])('folders'));
};
_proto.contactsClick = function contactsClick() {
if (this.allowContacts) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_18__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Contacts */ 427));
}
};
return FolderListMailBoxUserView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_19__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 451 */
/*!******************************!*\
!*** ./dev/Model/Contact.js ***!
\******************************/
/*! exports provided: ContactModel, default */
/*! exports used: ContactModel */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ContactModel; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Knoin/AbstractModel */ 67);
var ContactModel = /*#__PURE__*/function (_AbstractModel) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(ContactModel, _AbstractModel);
function ContactModel() {
var _this;
_this = _AbstractModel.call(this, 'ContactModel') || this;
_this.idContact = 0;
_this.display = '';
_this.properties = [];
_this.readOnly = false;
_this.focused = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.selected = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.checked = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.deleted = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
return _this;
}
/**
* @returns {Array|null}
*/
var _proto = ContactModel.prototype;
_proto.getNameAndEmailHelper = function getNameAndEmailHelper() {
var name = '',
email = '';
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isNonEmptyArray"])(this.properties)) {
___WEBPACK_IMPORTED_MODULE_2___default.a.each(this.properties, function (property) {
if (property) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ContactPropertyType"].FirstName === property[0]) {
name = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["trim"])(property[1] + ' ' + name);
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ContactPropertyType"].LastName === property[0]) {
name = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["trim"])(name + ' ' + property[1]);
} else if ('' === email && Common_Enums__WEBPACK_IMPORTED_MODULE_4__["ContactPropertyType"].Email === property[0]) {
email = property[1];
}
}
});
}
return '' === email ? null : [email, name];
}
/**
* @param {Object} oItem
* @returns {boolean}
*/
;
_proto.parse = function parse(json) {
var _this2 = this;
var result = false;
if (json && 'Object/Contact' === json['@Object']) {
this.idContact = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pInt"])(json.IdContact);
this.display = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pString"])(json.Display);
this.readOnly = !!json.ReadOnly;
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isNonEmptyArray"])(json.Properties)) {
___WEBPACK_IMPORTED_MODULE_2___default.a.each(json.Properties, function (property) {
if (property && property.Type && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isNormal"])(property.Value) && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["isNormal"])(property.TypeStr)) {
_this2.properties.push([Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pInt"])(property.Type), Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pString"])(property.Value), Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pString"])(property.TypeStr)]);
}
});
}
result = true;
}
return result;
}
/**
* @returns {string}
*/
;
_proto.srcAttr = function srcAttr() {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_6__[/* emptyContactPic */ "j"])();
}
/**
* @returns {string}
*/
;
_proto.generateUid = function generateUid() {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_5__["pString"])(this.idContact);
}
/**
* @return string
*/
;
_proto.lineAsCss = function lineAsCss() {
var result = [];
if (this.deleted()) {
result.push('deleted');
}
if (this.selected()) {
result.push('selected');
}
if (this.checked()) {
result.push('checked');
}
if (this.focused()) {
result.push('focused');
}
return result.join(' ');
};
return ContactModel;
}(Knoin_AbstractModel__WEBPACK_IMPORTED_MODULE_7__[/* AbstractModel */ "a"]);
/***/ }),
/* 452 */
/*!**********************************************!*\
!*** ./dev/View/User/MailBox/MessageList.js ***!
\**********************************************/
/*! exports provided: MessageListMailBoxUserView, default */
/*! exports used: MessageListMailBoxUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MessageListMailBoxUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/set-timeout */ 33);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/filter */ 28);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_12__);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Jua */ 205);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(Jua__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var ifvisible__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ifvisible */ 240);
/* harmony import */ var ifvisible__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(ifvisible__WEBPACK_IMPORTED_MODULE_14__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Selector__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Common/Selector */ 319);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Quota__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! Stores/User/Quota */ 239);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _class, _class2;
var canBeMovedHelper = function canBeMovedHelper(self) {
return self.canBeMoved();
};
var MessageListMailBoxUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["view"])({
name: 'View/User/MailBox/MessageList',
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["ViewType"].Right,
templateID: 'MailMessageList'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(), _dec3 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(), _dec4 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec5 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec6 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec7 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec8 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec9 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec10 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec11 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["command"])(canBeMovedHelper), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(MessageListMailBoxUserView, _AbstractViewNext);
function MessageListMailBoxUserView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.sLastUid = null;
_this.bPrefetch = false;
_this.emptySubjectValue = '';
_this.iGoToUpUpOrDownDownTimeout = 0;
_this.mobile = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["appSettingsGet"]('mobile');
_this.newMoveToFolder = Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].newMoveToFolder;
_this.allowReload = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Reload);
_this.allowSearch = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Search);
_this.allowSearchAdv = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].SearchAdv);
_this.allowComposer = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Composer);
_this.allowMessageListActions = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].MessageListActions);
_this.allowDangerousActions = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].DangerousActions);
_this.allowFolders = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Folders);
_this.popupVisibility = Common_Globals__WEBPACK_IMPORTED_MODULE_17__["popupVisibility"];
_this.message = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].message;
_this.messageList = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageList;
_this.messageListDisableAutoSelect = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListDisableAutoSelect;
_this.folderList = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].folderList;
_this.composeInEdit = Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].composeInEdit;
_this.leftPanelDisabled = Common_Globals__WEBPACK_IMPORTED_MODULE_17__["leftPanelDisabled"];
_this.selectorMessageSelected = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].selectorMessageSelected;
_this.selectorMessageFocused = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].selectorMessageFocused;
_this.isMessageSelected = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].isMessageSelected;
_this.messageListSearch = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListSearch;
_this.messageListThreadUid = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListThreadUid;
_this.messageListError = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListError;
_this.folderMenuForMove = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].folderMenuForMove;
_this.useCheckboxesInList = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_26__[/* default */ "a"].useCheckboxesInList;
_this.mainMessageListSearch = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].mainMessageListSearch;
_this.messageListEndFolder = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListEndFolder;
_this.messageListEndThreadUid = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListEndThreadUid;
_this.messageListChecked = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListChecked;
_this.messageListCheckedOrSelected = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelected;
_this.messageListCheckedOrSelectedUidsWithSubMails = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails;
_this.messageListCompleteLoadingThrottle = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCompleteLoadingThrottle;
_this.messageListCompleteLoadingThrottleForAnimation = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCompleteLoadingThrottleForAnimation;
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["initOnStartOrLangChange"])(function () {
_this.emptySubjectValue = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["i18n"])('MESSAGE_LIST/EMPTY_SUBJECT_TEXT');
});
_this.userQuota = Stores_User_Quota__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].quota;
_this.userUsageSize = Stores_User_Quota__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].usage;
_this.userUsageProc = Stores_User_Quota__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].percentage;
_this.moveDropdownTrigger = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].observable(false);
_this.moreDropdownTrigger = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].observable(false); // append drag and drop
_this.dragOver = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].observable(false).extend({
'throttle': 1
});
_this.dragOverEnter = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].observable(false).extend({
'throttle': 1
});
_this.dragOverArea = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].observable(null);
_this.dragOverBodyArea = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].observable(null);
_this.messageListItemTemplate = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return _this.mobile || Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Layout"].SidePreview === Stores_User_Settings__WEBPACK_IMPORTED_MODULE_26__[/* default */ "a"].layout() ? 'MailMessageListItem' : 'MailMessageListItemNoPreviewPane';
});
_this.messageListSearchDesc = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
var value = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListEndSearch();
return '' === value ? '' : Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["i18n"])('MESSAGE_LIST/SEARCH_RESULT_FOR', {
'SEARCH': value
});
});
_this.messageListPagenator = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["computedPagenatorHelper"])(Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListPage, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListPageCount));
_this.checkAll = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed({
read: function read() {
return 0 < Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListChecked().length;
},
write: function write(value) {
value = !!value;
___WEBPACK_IMPORTED_MODULE_9___default.a.each(Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageList(), function (message) {
message.checked(value);
});
}
});
_this.inputMessageListSearchFocus = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].observable(false);
_this.sLastSearchValue = '';
_this.inputProxyMessageListSearch = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed({
read: _this.mainMessageListSearch,
write: function write(value) {
_this.sLastSearchValue = value;
}
});
_this.isIncompleteChecked = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
var m = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageList().length,
c = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListChecked().length;
return 0 < m && 0 < c && m > c;
});
_this.hasMessages = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return 0 < _this.messageList().length;
});
_this.hasCheckedOrSelectedLines = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return 0 < _this.messageListCheckedOrSelected().length;
});
_this.isSpamFolder = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].spamFolder() === _this.messageListEndFolder() && '' !== Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].spamFolder();
});
_this.isSpamDisabled = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Common_Consts__WEBPACK_IMPORTED_MODULE_16__[/* UNUSED_OPTION_VALUE */ "r"] === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].spamFolder();
});
_this.isTrashFolder = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].trashFolder() === _this.messageListEndFolder() && '' !== Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].trashFolder();
});
_this.isDraftFolder = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].draftFolder() === _this.messageListEndFolder() && '' !== Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].draftFolder();
});
_this.isSentFolder = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].sentFolder() === _this.messageListEndFolder() && '' !== Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].sentFolder();
});
_this.isArchiveFolder = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].archiveFolder() === _this.messageListEndFolder() && '' !== Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].archiveFolder();
});
_this.isArchiveDisabled = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Common_Consts__WEBPACK_IMPORTED_MODULE_16__[/* UNUSED_OPTION_VALUE */ "r"] === Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].archiveFolder();
});
_this.isArchiveVisible = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return !_this.isArchiveFolder() && !_this.isArchiveDisabled() && !_this.isDraftFolder();
});
_this.isSpamVisible = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return !_this.isSpamFolder() && !_this.isSpamDisabled() && !_this.isDraftFolder() && !_this.isSentFolder();
});
_this.isUnSpamVisible = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return _this.isSpamFolder() && !_this.isSpamDisabled() && !_this.isDraftFolder() && !_this.isSentFolder();
});
_this.mobileCheckedStateShow = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
var checked = 0 < _this.messageListChecked().length;
return _this.mobile ? checked : true;
});
_this.mobileCheckedStateHide = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
var checked = 0 < _this.messageListChecked().length;
return _this.mobile ? !checked : true;
});
_this.messageListFocused = ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Focused"].MessageList === Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].focusedState();
});
_this.canBeMoved = _this.hasCheckedOrSelectedLines;
_this.quotaTooltip = ___WEBPACK_IMPORTED_MODULE_9___default.a.bind(_this.quotaTooltip, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.selector = new Common_Selector__WEBPACK_IMPORTED_MODULE_20__[/* Selector */ "a"](_this.messageList, _this.selectorMessageSelected, _this.selectorMessageFocused, '.messageListItem .actionHandle', '.messageListItem.selected', '.messageListItem .checkboxMessage', '.messageListItem.focused');
_this.selector.on('onItemSelect', function (message) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].selectMessage(message);
});
_this.selector.on('onItemGetUid', function (message) {
return message ? message.generateUid() : '';
});
_this.selector.on('onAutoSelect', function () {
return _this.useAutoSelect();
});
_this.selector.on('onUpUpOrDownDown', function (v) {
_this.goToUpUpOrDownDown(v);
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('mailbox.message-list.selector.go-down', function (select) {
_this.selector.goDown(select);
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('mailbox.message-list.selector.go-up', function (select) {
_this.selector.goUp(select);
});
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* sub */ "b"]('mailbox.message.show', function (sFolder, sUid) {
var message = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, _this.messageList(), function (item) {
return item && sFolder === item.folderFullNameRaw && sUid === item.uid;
});
if ('INBOX' === sFolder) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* mailBox */ "o"])(sFolder, 1));
}
if (message) {
_this.selector.selectMessageItem(message);
} else {
if ('INBOX' !== sFolder) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* mailBox */ "o"])(sFolder, 1));
}
Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].selectMessageByFolderAndUid(sFolder, sUid);
}
});
Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListEndHash.subscribe(function () {
_this.selector.scrollToTop();
});
return _this;
}
var _proto = MessageListMailBoxUserView.prototype;
_proto.clearCommand = function clearCommand() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].DangerousActions)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["showScreenPopup"])(__webpack_require__(/*! View/Popup/FolderClear */ 554), [Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolder()]);
}
};
_proto.reloadCommand = function reloadCommand() {
if (!Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCompleteLoadingThrottleForAnimation() && this.allowReload) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().reloadMessageList(false, true);
}
};
_proto.multyForwardCommand = function multyForwardCommand() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Composer)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132), [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["ComposeType"].ForwardAsAttachment, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelected()]);
}
};
_proto.deleteWithoutMoveCommand = function deleteWithoutMoveCommand() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].DangerousActions)) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().deleteMessagesFromFolder(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["FolderType"].Trash, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails(), false);
}
};
_proto.deleteCommand = function deleteCommand() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().deleteMessagesFromFolder(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["FolderType"].Trash, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails(), true);
};
_proto.archiveCommand = function archiveCommand() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().deleteMessagesFromFolder(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["FolderType"].Archive, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails(), true);
};
_proto.spamCommand = function spamCommand() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().deleteMessagesFromFolder(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["FolderType"].Spam, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails(), true);
};
_proto.notSpamCommand = function notSpamCommand() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().deleteMessagesFromFolder(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["FolderType"].NotSpam, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails(), true);
};
_proto.moveCommand = function moveCommand() {} // eslint-disable-line no-empty-function
;
_proto.moveNewCommand = function moveNewCommand(vm, event) {
if (this.newMoveToFolder() && this.mobileCheckedStateShow()) {
if (vm && event && event.preventDefault) {
event.preventDefault();
if (event.stopPropagation) {
event.stopPropagation();
}
}
if (Object(Common_Globals__WEBPACK_IMPORTED_MODULE_17__["moveAction"])()) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Focused"].MessageList);
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_17__["moveAction"])(false);
} else {
Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Focused"].FolderList);
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_17__["moveAction"])(true);
}
}
};
_proto.hideLeft = function hideLeft(item, event) {
event.preventDefault();
event.stopPropagation();
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_17__["leftPanelDisabled"])(true);
};
_proto.showLeft = function showLeft(item, event) {
event.preventDefault();
event.stopPropagation();
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_17__["leftPanelDisabled"])(false);
};
_proto.composeClick = function composeClick() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Composer)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132));
}
};
_proto.goToUpUpOrDownDown = function goToUpUpOrDownDown(up) {
var _this2 = this;
if (0 < this.messageListChecked().length) {
return false;
}
window__WEBPACK_IMPORTED_MODULE_8___default.a.clearTimeout(this.iGoToUpUpOrDownDownTimeout);
this.iGoToUpUpOrDownDownTimeout = _babel_runtime_corejs3_core_js_stable_set_timeout__WEBPACK_IMPORTED_MODULE_4___default()(function () {
var prev = null,
next = null,
temp = null,
current = null;
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, _this2.messageListPagenator(), function (item) {
if (item) {
if (current) {
next = item;
}
if (item.current) {
current = item;
prev = temp;
}
if (next) {
return true;
}
temp = item;
}
return false;
});
if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Layout"].NoPreview === Stores_User_Settings__WEBPACK_IMPORTED_MODULE_26__[/* default */ "a"].layout() && !_this2.message()) {
_this2.selector.iFocusedNextHelper = up ? -1 : 1;
} else {
_this2.selector.iSelectNextHelper = up ? -1 : 1;
}
if (up ? prev : next) {
_this2.selector.unselect();
_this2.gotoPage(up ? prev : next);
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time350ms);
return true;
};
_proto.useAutoSelect = function useAutoSelect() {
if (this.messageListDisableAutoSelect()) {
return false;
}
if (/is:unseen/.test(this.mainMessageListSearch())) {
return false;
}
return Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Layout"].NoPreview !== Stores_User_Settings__WEBPACK_IMPORTED_MODULE_26__[/* default */ "a"].layout();
};
_proto.searchEnterAction = function searchEnterAction() {
this.mainMessageListSearch(this.sLastSearchValue);
this.inputMessageListSearchFocus(false);
}
/**
* @returns {string}
*/
;
_proto.printableMessageCountForDeletion = function printableMessageCountForDeletion() {
var cnt = this.messageListCheckedOrSelectedUidsWithSubMails().length;
return 1 < cnt ? ' (' + (100 > cnt ? cnt : '99+') + ')' : ''; // eslint-disable-line no-magic-numbers
};
_proto.cancelSearch = function cancelSearch() {
this.mainMessageListSearch('');
this.inputMessageListSearchFocus(false);
};
_proto.cancelThreadUid = function cancelThreadUid() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameHash(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListPageBeforeThread(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListSearch()));
}
/**
* @param {string} sToFolderFullNameRaw
* @param {boolean} bCopy
* @returns {boolean}
*/
;
_proto.moveSelectedMessagesToFolder = function moveSelectedMessagesToFolder(sToFolderFullNameRaw, bCopy) {
if (this.canBeMoved()) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().moveMessagesToFolder(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails(), sToFolderFullNameRaw, bCopy);
}
return false;
};
_proto.dragAndDronHelper = function dragAndDronHelper(oMessageListItem) {
if (oMessageListItem) {
oMessageListItem.checked(true);
}
var el = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["draggablePlace"])(),
updateUidsInfo = function updateUidsInfo() {
var uids = Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails();
el.data('rl-uids', uids);
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(el).call(el, '.text').text('' + uids.length);
};
el.data('rl-folder', Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw());
updateUidsInfo();
___WEBPACK_IMPORTED_MODULE_9___default.a.defer(updateUidsInfo);
return el;
}
/**
* @param {string} sFolderFullNameRaw
* @param {number} iSetAction
* @param {Array=} aMessages = null
* @returns {void}
*/
;
_proto.setAction = function setAction(sFolderFullNameRaw, iSetAction, aMessages) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().messageListAction(sFolderFullNameRaw, iSetAction, aMessages);
}
/**
* @param {string} sFolderFullNameRaw
* @param {number} iSetAction
* @param {string} sThreadUid = ''
* @returns {void}
*/
;
_proto.setActionForAll = function setActionForAll(sFolderFullNameRaw, iSetAction, sThreadUid) {
if (sThreadUid === void 0) {
sThreadUid = '';
}
if ('' !== sFolderFullNameRaw) {
var cnt = 0;
var uids = [];
var folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_23__[/* getFolderFromCacheList */ "e"])(sFolderFullNameRaw);
if (folder) {
switch (iSetAction) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetSeen:
folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_23__[/* getFolderFromCacheList */ "e"])(sFolderFullNameRaw);
if (folder) {
___WEBPACK_IMPORTED_MODULE_9___default.a.each(Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageList(), function (message) {
if (message.unseen()) {
cnt += 1;
}
message.unseen(false);
uids.push(message.uid);
});
if (sThreadUid) {
folder.messageCountUnread(folder.messageCountUnread() - cnt);
if (0 > folder.messageCountUnread()) {
folder.messageCountUnread(0);
}
} else {
folder.messageCountUnread(0);
}
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_23__[/* clearMessageFlagsFromCacheByFolder */ "c"])(sFolderFullNameRaw);
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].messageSetSeenToAll(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["noop"], sFolderFullNameRaw, true, sThreadUid ? uids : null);
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetSeen:
folder = Object(Common_Cache__WEBPACK_IMPORTED_MODULE_23__[/* getFolderFromCacheList */ "e"])(sFolderFullNameRaw);
if (folder) {
___WEBPACK_IMPORTED_MODULE_9___default.a.each(Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageList(), function (message) {
if (!message.unseen()) {
cnt += 1;
}
message.unseen(true);
uids.push(message.uid);
});
if (sThreadUid) {
folder.messageCountUnread(folder.messageCountUnread() + cnt);
if (folder.messageCountAll() < folder.messageCountUnread()) {
folder.messageCountUnread(folder.messageCountAll());
}
} else {
folder.messageCountUnread(folder.messageCountAll());
}
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_23__[/* clearMessageFlagsFromCacheByFolder */ "c"])(sFolderFullNameRaw);
}
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].messageSetSeenToAll(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["noop"], sFolderFullNameRaw, false, sThreadUid ? uids : null);
break;
// no default
}
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().reloadFlagsCurrentMessageListAndMessageFromCache();
}
}
};
_proto.listSetSeen = function listSetSeen() {
this.setAction(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetSeen, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelected());
};
_proto.listSetAllSeen = function listSetAllSeen() {
this.setActionForAll(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetSeen, this.messageListEndThreadUid());
};
_proto.listUnsetSeen = function listUnsetSeen() {
this.setAction(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetSeen, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelected());
};
_proto.listSetFlags = function listSetFlags() {
this.setAction(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetFlag, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelected());
};
_proto.listUnsetFlags = function listUnsetFlags() {
this.setAction(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw(), Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetFlag, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelected());
};
_proto.flagMessages = function flagMessages(currentMessage) {
var checked = this.messageListCheckedOrSelected();
if (currentMessage) {
var checkedUids = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_5___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, checked, function (message) {
return message.uid;
});
if (0 < checkedUids.length && -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["inArray"])(currentMessage.uid, checkedUids)) {
this.setAction(currentMessage.folderFullNameRaw, currentMessage.flagged() ? Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetFlag : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetFlag, checked);
} else {
this.setAction(currentMessage.folderFullNameRaw, currentMessage.flagged() ? Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetFlag : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetFlag, [currentMessage]);
}
}
};
_proto.flagMessagesFast = function flagMessagesFast(bFlag) {
var checked = this.messageListCheckedOrSelected();
if (0 < checked.length) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["isUnd"])(bFlag)) {
var flagged = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, checked, function (message) {
return message.flagged();
});
this.setAction(checked[0].folderFullNameRaw, checked.length === flagged.length ? Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetFlag : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetFlag, checked);
} else {
this.setAction(checked[0].folderFullNameRaw, !bFlag ? Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetFlag : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetFlag, checked);
}
}
};
_proto.seenMessagesFast = function seenMessagesFast(seen) {
var checked = this.messageListCheckedOrSelected();
if (0 < checked.length) {
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["isUnd"])(seen)) {
var unseen = _babel_runtime_corejs3_core_js_stable_instance_filter__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, checked, function (message) {
return message.unseen();
});
this.setAction(checked[0].folderFullNameRaw, 0 < unseen.length ? Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetSeen : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetSeen, checked);
} else {
this.setAction(checked[0].folderFullNameRaw, seen ? Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].SetSeen : Common_Enums__WEBPACK_IMPORTED_MODULE_15__["MessageSetAction"].UnsetSeen, checked);
}
}
};
_proto.gotoPage = function gotoPage(page) {
if (page) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameHash(), page.value, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListSearch(), Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListThreadUid()));
}
};
_proto.gotoThread = function gotoThread(message) {
if (message && 0 < message.threadsLen()) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListPageBeforeThread(Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListPage());
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* mailBox */ "o"])(Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameHash(), 1, Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListSearch(), message.uid));
}
};
_proto.clearListIsVisible = function clearListIsVisible() {
return '' === this.messageListSearchDesc() && '' === this.messageListError() && '' === this.messageListEndThreadUid() && 0 < this.messageList().length && (this.isSpamFolder() || this.isTrashFolder());
};
_proto.onBuild = function onBuild(dom) {
var _this3 = this;
var self = this;
this.oContentVisible = $__WEBPACK_IMPORTED_MODULE_10___default()('.b-content', dom);
this.oContentScrollable = $__WEBPACK_IMPORTED_MODULE_10___default()('.content', this.oContentVisible);
this.selector.init(this.oContentVisible, this.oContentScrollable, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList);
if (this.mobile) {
dom.on('click', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_17__["leftPanelDisabled"])(true);
});
}
dom.on('click', '.messageList .b-message-list-wrapper', function () {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Focused"].MessageView === Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].focusedState()) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Focused"].MessageList);
}
}).on('click', '.e-pagenator .e-page', function () {
// eslint-disable-line prefer-arrow-callback
self.gotoPage(ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].dataFor(this)); // eslint-disable-line no-invalid-this
}).on('click', '.messageList .checkboxCkeckAll', function () {
_this3.checkAll(!_this3.checkAll());
}).on('click', '.messageList .messageListItem .flagParent', function () {
// eslint-disable-line prefer-arrow-callback
self.flagMessages(ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].dataFor(this)); // eslint-disable-line no-invalid-this
}).on('click', '.messageList .messageListItem .threads-len', function () {
// eslint-disable-line prefer-arrow-callback
self.gotoThread(ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].dataFor(this)); // eslint-disable-line no-invalid-this
}).on('dblclick', '.messageList .messageListItem .actionHandle', function () {
// eslint-disable-line prefer-arrow-callback
self.gotoThread(ko__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].dataFor(this)); // eslint-disable-line no-invalid-this
});
this.initUploaderForAppend();
this.initShortcuts();
if (!Common_Globals__WEBPACK_IMPORTED_MODULE_17__["bMobileDevice"] && ifvisible__WEBPACK_IMPORTED_MODULE_14___default.a && Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Prefetch)) {
ifvisible__WEBPACK_IMPORTED_MODULE_14___default.a.setIdleDuration(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].ifvisibleIdle10s);
ifvisible__WEBPACK_IMPORTED_MODULE_14___default.a.idle(function () {
_this3.prefetchNextTick();
});
}
};
_proto.initShortcuts = function initShortcuts() {
var _this4 = this;
key__WEBPACK_IMPORTED_MODULE_12___default()('enter', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, function () {
if (_this4.message() && _this4.useAutoSelect()) {
Common_Events__WEBPACK_IMPORTED_MODULE_21__[/* pub */ "a"]('mailbox.message-view.toggle-full-screen');
return false;
}
return true;
});
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].MessageListActions)) {
// archive (zip)
key__WEBPACK_IMPORTED_MODULE_12___default()('z', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
_this4.archiveCommand();
return false;
}); // delete
key__WEBPACK_IMPORTED_MODULE_12___default()('delete, shift+delete, shift+3', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, function (event, handler) {
if (event) {
if (0 < Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListCheckedOrSelected().length) {
if (handler && 'shift+delete' === handler.shortcut) {
_this4.deleteWithoutMoveCommand();
} else {
_this4.deleteCommand();
}
}
return false;
}
return true;
});
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Reload)) {
// check mail
key__WEBPACK_IMPORTED_MODULE_12___default()('ctrl+r, command+r', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].FolderList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
_this4.reloadCommand();
return false;
});
} // check all
key__WEBPACK_IMPORTED_MODULE_12___default()('ctrl+a, command+a', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, function () {
_this4.checkAll(!(_this4.checkAll() && !_this4.isIncompleteChecked()));
return false;
});
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Composer)) {
// write/compose (open compose popup)
key__WEBPACK_IMPORTED_MODULE_12___default()('w,c', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132));
return false;
});
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].MessageListActions)) {
// important - star/flag messages
key__WEBPACK_IMPORTED_MODULE_12___default()('i', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
_this4.flagMessagesFast();
return false;
});
}
key__WEBPACK_IMPORTED_MODULE_12___default()('t', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList], function () {
var message = _this4.selectorMessageSelected();
if (!message) {
message = _this4.selectorMessageFocused();
}
if (message && 0 < message.threadsLen()) {
_this4.gotoThread(message);
}
return false;
});
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].MessageListActions)) {
// move
key__WEBPACK_IMPORTED_MODULE_12___default()('m', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, function () {
if (_this4.newMoveToFolder()) {
_this4.moveNewCommand();
} else {
_this4.moveDropdownTrigger(true);
}
return false;
});
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].MessageListActions)) {
// read
key__WEBPACK_IMPORTED_MODULE_12___default()('q', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
_this4.seenMessagesFast(true);
return false;
}); // unread
key__WEBPACK_IMPORTED_MODULE_12___default()('u', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
_this4.seenMessagesFast(false);
return false;
});
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Composer)) {
key__WEBPACK_IMPORTED_MODULE_12___default()('shift+f', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
_this4.multyForwardCommand();
return false;
});
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].Search)) {
// search input focus
key__WEBPACK_IMPORTED_MODULE_12___default()('/', [Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView], function () {
_this4.inputMessageListSearchFocus(true);
return false;
});
} // cancel search
key__WEBPACK_IMPORTED_MODULE_12___default()('esc', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, function () {
if ('' !== _this4.messageListSearchDesc()) {
_this4.cancelSearch();
return false;
} else if ('' !== _this4.messageListEndThreadUid()) {
_this4.cancelThreadUid();
return false;
}
return true;
}); // change focused state
key__WEBPACK_IMPORTED_MODULE_12___default()('tab, shift+tab, left, right', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageList, function (event, handler) {
if (event && handler && ('shift+tab' === handler.shortcut || 'left' === handler.shortcut)) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Focused"].FolderList);
} else if (_this4.message()) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Focused"].MessageView);
}
return false;
});
key__WEBPACK_IMPORTED_MODULE_12___default()('ctrl+left, command+left', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView, Common_Utils__WEBPACK_IMPORTED_MODULE_18__["noopFalse"]);
key__WEBPACK_IMPORTED_MODULE_12___default()('ctrl+right, command+right', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].MessageView, Common_Utils__WEBPACK_IMPORTED_MODULE_18__["noopFalse"]);
};
_proto.prefetchNextTick = function prefetchNextTick() {
var _this5 = this;
if (ifvisible__WEBPACK_IMPORTED_MODULE_14___default.a && !this.bPrefetch && !ifvisible__WEBPACK_IMPORTED_MODULE_14___default.a.now() && this.viewModelVisibility()) {
var message = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_9___default.a).call(___WEBPACK_IMPORTED_MODULE_9___default.a, this.messageList(), function (item) {
return item && !Object(Common_Cache__WEBPACK_IMPORTED_MODULE_23__[/* hasRequestedMessage */ "m"])(item.folderFullNameRaw, item.uid);
});
if (message) {
this.bPrefetch = true;
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_23__[/* addRequestedMessage */ "b"])(message.folderFullNameRaw, message.uid);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_30__[/* default */ "a"].message(function (result, data) {
var next = !!(Common_Enums__WEBPACK_IMPORTED_MODULE_15__["StorageResultType"].Success === result && data && data.Result);
___WEBPACK_IMPORTED_MODULE_9___default.a.delay(function () {
_this5.bPrefetch = false;
if (next) {
_this5.prefetchNextTick();
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time1s);
}, message.folderFullNameRaw, message.uid);
}
}
};
_proto.advancedSearchClick = function advancedSearchClick() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Capa"].SearchAdv)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_32__["showScreenPopup"])(__webpack_require__(/*! View/Popup/AdvancedSearch */ 555), [this.mainMessageListSearch()]);
}
};
_proto.quotaTooltip = function quotaTooltip() {
return Object(Common_Translator__WEBPACK_IMPORTED_MODULE_22__["i18n"])('MESSAGE_LIST/QUOTA_SIZE', {
'SIZE': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["friendlySize"])(this.userUsageSize()),
'PROC': this.userUsageProc(),
'LIMIT': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_18__["friendlySize"])(this.userQuota())
});
};
_proto.initUploaderForAppend = function initUploaderForAppend() {
var _this6 = this;
if (!Storage_Settings__WEBPACK_IMPORTED_MODULE_29__["appSettingsGet"]('allowAppendMessage') || !this.dragOverArea()) {
return false;
}
var oJua = new Jua__WEBPACK_IMPORTED_MODULE_13___default.a({
action: Object(Common_Links__WEBPACK_IMPORTED_MODULE_19__[/* append */ "b"])(),
name: 'AppendFile',
queueSize: 1,
multipleSizeLimit: 1,
hidden: {
Folder: function Folder() {
return Stores_User_Folder__WEBPACK_IMPORTED_MODULE_27__[/* default */ "a"].currentFolderFullNameRaw();
}
},
dragAndDropElement: this.dragOverArea(),
dragAndDropBodyElement: this.dragOverBodyArea()
});
this.dragOver.subscribe(function (value) {
if (value) {
_this6.selector.scrollToTop();
}
});
oJua.on('onDragEnter', function () {
_this6.dragOverEnter(true);
}).on('onDragLeave', function () {
_this6.dragOverEnter(false);
}).on('onBodyDragEnter', function () {
_this6.dragOver(true);
}).on('onBodyDragLeave', function () {
_this6.dragOver(false);
}).on('onSelect', function (sUid, oData) {
if (sUid && oData && 'message/rfc822' === oData.Type) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].messageListLoading(true);
return true;
}
return false;
}).on('onComplete', function () {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_31__[/* getApp */ "a"])().reloadMessageList(true, true);
});
return !!oJua;
};
return MessageListMailBoxUserView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_33__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "clearCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "clearCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "reloadCommand", [_dec3], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "reloadCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "multyForwardCommand", [_dec4], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "multyForwardCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "deleteWithoutMoveCommand", [_dec5], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "deleteWithoutMoveCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "deleteCommand", [_dec6], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "deleteCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "archiveCommand", [_dec7], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "archiveCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "spamCommand", [_dec8], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "spamCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "notSpamCommand", [_dec9], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "notSpamCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "moveCommand", [_dec10], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "moveCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "moveNewCommand", [_dec11], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_7___default()(_class2.prototype, "moveNewCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 453 */
/*!**********************************************!*\
!*** ./dev/View/User/MailBox/MessageView.js ***!
\**********************************************/
/*! exports provided: MessageViewMailBoxUserView, default */
/*! exports used: MessageViewMailBoxUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MessageViewMailBoxUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Audio__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Common/Audio */ 83);
/* harmony import */ var Common_Events__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Common/Events */ 23);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Stores_Social__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Stores/Social */ 26);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Storage_Client__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! Storage/Client */ 60);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! Promises/User/Ajax */ 93);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class, _class2;
var MessageViewMailBoxUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["view"])({
name: 'View/User/MailBox/MessageView',
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["ViewType"].Right,
templateID: 'MailMessageView'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["command"])(), _dec3 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["command"])(function (self) {
return self.messageVisibility();
}), _dec4 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["command"])(function (self) {
return self.messageVisibility();
}), _dec5 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["command"])(function (self) {
return !self.messageListAndMessageViewLoading();
}), _dec6 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["command"])(function (self) {
return !self.messageListAndMessageViewLoading();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(MessageViewMailBoxUserView, _AbstractViewNext);
function MessageViewMailBoxUserView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
var lastEmail = '';
var createCommandReplyHelper = function createCommandReplyHelper(type) {
return Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["createCommand"])(function () {
_this.lastReplyAction(type);
_this.replyOrforward(type);
}, _this.canBeRepliedOrForwarded);
};
var createCommandActionHelper = function createCommandActionHelper(folderType, useFolder) {
return Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["createCommand"])(function () {
var message = _this.message();
if (message && _this.allowMessageListActions) {
_this.message(null);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_30__[/* getApp */ "a"])().deleteMessagesFromFolder(folderType, message.folderFullNameRaw, [message.uid], useFolder);
}
}, _this.messageVisibility);
};
_this.oDom = null;
_this.oHeaderDom = null;
_this.oMessageScrollerDom = null;
_this.bodyBackgroundColor = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.pswp = null;
_this.moveAction = Common_Globals__WEBPACK_IMPORTED_MODULE_13__["moveAction"];
_this.allowComposer = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].Composer);
_this.allowMessageActions = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].MessageActions);
_this.allowMessageListActions = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].MessageListActions);
_this.logoImg = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["trim"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["settingsGet"]('UserLogoMessage'));
_this.logoIframe = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["trim"])(Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["settingsGet"]('UserIframeMessage'));
_this.mobile = !!Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["appSettingsGet"]('mobile');
_this.attachmentsActions = Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].attachmentsActions;
_this.message = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message;
_this.messageListChecked = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageListChecked;
_this.hasCheckedMessages = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].hasCheckedMessages;
_this.messageListCheckedOrSelectedUidsWithSubMails = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageListCheckedOrSelectedUidsWithSubMails;
_this.messageLoadingThrottle = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageLoadingThrottle;
_this.messagesBodiesDom = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messagesBodiesDom;
_this.useThreads = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"].useThreads;
_this.replySameFolder = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"].replySameFolder;
_this.layout = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"].layout;
_this.usePreviewPane = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_22__[/* default */ "a"].usePreviewPane;
_this.isMessageSelected = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].isMessageSelected;
_this.messageActiveDom = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageActiveDom;
_this.messageError = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageError;
_this.fullScreenMode = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageFullScreenMode;
_this.messageListOfThreadsLoading = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
rateLimit: 1
});
_this.highlightUnselectedAttachments = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
falseTimeout: 2000
});
_this.showAttachmnetControls = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.showAttachmnetControlsState = function (v) {
Storage_Client__WEBPACK_IMPORTED_MODULE_26__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ClientSideKeyName"].MessageAttachmnetControls, !!v);
};
_this.allowAttachmnetControls = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return 0 < _this.attachmentsActions().length && Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].AttachmentsActions);
});
_this.downloadAsZipAllowed = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["inArray"])('zip', _this.attachmentsActions()) && _this.allowAttachmnetControls();
});
_this.downloadAsZipLoading = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.downloadAsZipError = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
falseTimeout: 7000
});
_this.saveToOwnCloudAllowed = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["inArray"])('owncloud', _this.attachmentsActions()) && _this.allowAttachmnetControls();
});
_this.saveToOwnCloudLoading = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.saveToOwnCloudSuccess = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
falseTimeout: 2000
});
_this.saveToOwnCloudError = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
falseTimeout: 7000
});
_this.saveToOwnCloudSuccess.subscribe(function (v) {
if (v) {
_this.saveToOwnCloudError(false);
}
});
_this.saveToOwnCloudError.subscribe(function (v) {
if (v) {
_this.saveToOwnCloudSuccess(false);
}
});
_this.saveToDropboxAllowed = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return -1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["inArray"])('dropbox', _this.attachmentsActions()) && _this.allowAttachmnetControls();
});
_this.saveToDropboxLoading = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.saveToDropboxSuccess = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
falseTimeout: 2000
});
_this.saveToDropboxError = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
falseTimeout: 7000
});
_this.saveToDropboxSuccess.subscribe(function (v) {
if (v) {
_this.saveToDropboxError(false);
}
});
_this.saveToDropboxError.subscribe(function (v) {
if (v) {
_this.saveToDropboxSuccess(false);
}
});
_this.showAttachmnetControls.subscribe(function (v) {
if (_this.message()) {
___WEBPACK_IMPORTED_MODULE_7___default.a.each(_this.message().attachments(), function (item) {
if (item) {
item.checked(!!v);
}
});
}
});
_this.lastReplyAction_ = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.lastReplyAction = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed({
read: _this.lastReplyAction_,
write: function write(value) {
_this.lastReplyAction_(-1 === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["inArray"])(value, [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].Reply, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].ReplyAll, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].Forward]) ? Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].Reply : value);
}
});
_this.lastReplyAction(Storage_Client__WEBPACK_IMPORTED_MODULE_26__[/* get */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ClientSideKeyName"].LastReplyAction) || Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].Reply);
_this.lastReplyAction_.subscribe(function (value) {
Storage_Client__WEBPACK_IMPORTED_MODULE_26__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ClientSideKeyName"].LastReplyAction, value);
});
_this.showFullInfo = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('1' === Storage_Client__WEBPACK_IMPORTED_MODULE_26__[/* get */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ClientSideKeyName"].MessageHeaderFullInfo));
_this.moreDropdownTrigger = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.messageDomFocused = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false).extend({
rateLimit: 0
});
_this.messageVisibility = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return !_this.messageLoadingThrottle() && !!_this.message();
});
_this.message.subscribe(function (message) {
if (!message) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].selectorMessageSelected(null);
}
});
_this.canBeRepliedOrForwarded = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
var v = _this.messageVisibility();
return !_this.isDraftFolder() && v;
}); // commands
_this.replyCommand = createCommandReplyHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].Reply);
_this.replyAllCommand = createCommandReplyHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].ReplyAll);
_this.forwardCommand = createCommandReplyHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].Forward);
_this.forwardAsAttachmentCommand = createCommandReplyHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].ForwardAsAttachment);
_this.editAsNewCommand = createCommandReplyHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].EditAsNew);
_this.deleteCommand = createCommandActionHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["FolderType"].Trash, true);
_this.deleteWithoutMoveCommand = createCommandActionHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["FolderType"].Trash, false);
_this.archiveCommand = createCommandActionHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["FolderType"].Archive, true);
_this.spamCommand = createCommandActionHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["FolderType"].Spam, true);
_this.notSpamCommand = createCommandActionHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["FolderType"].NotSpam, true);
_this.dropboxEnabled = Stores_Social__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].dropbox.enabled;
_this.dropboxApiKey = Stores_Social__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].dropbox.apiKey; // viewer
_this.viewBodyTopValue = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(0);
_this.viewFolder = '';
_this.viewUid = '';
_this.viewHash = '';
_this.viewSubject = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewFromShort = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewFromDkimData = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(['none', '']);
_this.viewToShort = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewFrom = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewTo = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewCc = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewBcc = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewReplyTo = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewTimeStamp = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(0);
_this.viewSize = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewLineAsCss = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewViewLink = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewUnsubscribeLink = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewDownloadLink = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable('');
_this.viewUserPic = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(Common_Consts__WEBPACK_IMPORTED_MODULE_11__[/* DATA_IMAGE_USER_DOT_PIC */ "f"]);
_this.viewUserPicVisible = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.viewIsImportant = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.viewIsFlagged = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].observable(false);
_this.viewFromDkimVisibility = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return 'none' !== _this.viewFromDkimData()[0];
});
_this.viewFromDkimStatusIconClass = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
switch (_this.viewFromDkimData()[0]) {
case 'none':
return 'icon-none iconcolor-display-none';
case 'pass':
return 'icon-ok iconcolor-green';
default:
return 'icon-warning-alt iconcolor-red';
}
});
_this.viewFromDkimStatusTitle = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
var status = _this.viewFromDkimData();
if (Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["isNonEmptyArray"])(status)) {
if (status[0] && status[1]) {
return status[1];
} else if (status[0]) {
return 'DKIM: ' + status[0];
}
}
return '';
});
_this.messageActiveDom.subscribe(function (dom) {
_this.bodyBackgroundColor(dom ? _this.detectDomBackgroundColor(dom) : '');
}, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
_this.message.subscribe(function (message) {
_this.messageActiveDom(null);
if (message) {
_this.showAttachmnetControls(false);
if (Storage_Client__WEBPACK_IMPORTED_MODULE_26__[/* get */ "a"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ClientSideKeyName"].MessageAttachmnetControls)) {
___WEBPACK_IMPORTED_MODULE_7___default.a.delay(function () {
_this.showAttachmnetControls(true);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time50ms);
}
if (_this.viewHash !== message.hash) {
_this.scrollMessageToTop();
}
_this.viewFolder = message.folderFullNameRaw;
_this.viewUid = message.uid;
_this.viewHash = message.hash;
_this.viewSubject(message.subject());
_this.viewFromShort(message.fromToLine(true, true));
_this.viewFromDkimData(message.fromDkimData());
_this.viewToShort(message.toToLine(true, true));
_this.viewFrom(message.fromToLine(false));
_this.viewTo(message.toToLine(false));
_this.viewCc(message.ccToLine(false));
_this.viewBcc(message.bccToLine(false));
_this.viewReplyTo(message.replyToToLine(false));
_this.viewTimeStamp(message.dateTimeStampInUTC());
_this.viewSize(message.friendlySize());
_this.viewLineAsCss(message.lineAsCss());
_this.viewViewLink(message.viewLink());
_this.viewUnsubscribeLink(message.getFirstUnsubsribeLink());
_this.viewDownloadLink(message.downloadLink());
_this.viewIsImportant(message.isImportant());
_this.viewIsFlagged(message.flagged());
lastEmail = message.fromAsSingleEmail();
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* getUserPic */ "k"])(lastEmail, function (pic, email) {
if (pic !== _this.viewUserPic() && lastEmail === email) {
_this.viewUserPicVisible(false);
_this.viewUserPic(Common_Consts__WEBPACK_IMPORTED_MODULE_11__[/* DATA_IMAGE_USER_DOT_PIC */ "f"]);
if ('' !== pic) {
_this.viewUserPicVisible(true);
_this.viewUserPic(pic);
}
}
});
} else {
_this.viewFolder = '';
_this.viewUid = '';
_this.viewHash = '';
_this.scrollMessageToTop();
}
});
_this.message.viewTrigger.subscribe(function () {
var message = _this.message();
if (message) {
_this.viewIsFlagged(message.flagged());
} else {
_this.viewIsFlagged(false);
}
});
_this.fullScreenMode.subscribe(function (value) {
Common_Globals__WEBPACK_IMPORTED_MODULE_13__["$html"].toggleClass('rl-message-fullscreen', value);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])();
});
_this.messageLoadingThrottle.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResizeCallback"]);
_this.messageFocused = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageView === Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].focusedState();
});
_this.messageListAndMessageViewLoading = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].computed(function () {
return Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageListCompleteLoadingThrottle() || Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].messageLoadingThrottle();
});
Common_Events__WEBPACK_IMPORTED_MODULE_16__[/* sub */ "b"]('mailbox.message-view.toggle-full-screen', function () {
_this.toggleFullScreen();
});
_this.attachmentPreview = ___WEBPACK_IMPORTED_MODULE_7___default.a.bind(_this.attachmentPreview, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
return _this;
}
var _proto = MessageViewMailBoxUserView.prototype;
_proto.closeMessageCommand = function closeMessageCommand() {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message(null);
};
_proto.messageVisibilityCommand = function messageVisibilityCommand() {} // eslint-disable-line no-empty-function
;
_proto.messageEditCommand = function messageEditCommand() {
this.editMessage();
};
_proto.goUpCommand = function goUpCommand() {
Common_Events__WEBPACK_IMPORTED_MODULE_16__[/* pub */ "a"]('mailbox.message-list.selector.go-up', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Layout"].NoPreview === this.layout() ? !!this.message() : true]);
};
_proto.goDownCommand = function goDownCommand() {
Common_Events__WEBPACK_IMPORTED_MODULE_16__[/* pub */ "a"]('mailbox.message-list.selector.go-down', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Layout"].NoPreview === this.layout() ? !!this.message() : true]);
};
_proto.detectDomBackgroundColor = function detectDomBackgroundColor(dom) {
var limit = 5,
result = '';
var fFindDom = function fFindDom(inputDom) {
var children = inputDom ? inputDom.children() : null;
return children && 1 === children.length && children.is('table,div,center') ? children : null;
},
fFindColor = function fFindColor(inputDom) {
var color = '';
if (inputDom) {
color = inputDom.css('background-color') || '';
if (!inputDom.is('table')) {
color = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["isTransparent"])(color) ? '' : color;
}
}
return color;
};
if (dom && 1 === dom.length) {
var aC = dom;
while ('' === result) {
limit -= 1;
if (0 >= limit) {
break;
}
aC = fFindDom(aC);
if (aC) {
result = fFindColor(aC);
} else {
break;
}
}
result = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["isTransparent"])(result) ? '' : result;
}
return result;
};
_proto.fullScreen = function fullScreen() {
this.fullScreenMode(true);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])();
};
_proto.unFullScreen = function unFullScreen() {
this.fullScreenMode(false);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])();
};
_proto.toggleFullScreen = function toggleFullScreen() {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["removeSelection"])();
this.fullScreenMode(!this.fullScreenMode());
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])();
}
/**
* @param {string} sType
* @returns {void}
*/
;
_proto.replyOrforward = function replyOrforward(sType) {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].Composer)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132), [sType, Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message()]);
}
};
_proto.checkHeaderHeight = function checkHeaderHeight() {
if (this.oHeaderDom) {
this.viewBodyTopValue(this.message() ? this.oHeaderDom.height() + Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Size20px
/* padding-(top/bottom): 20px */
+ Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Size1px
/* borded-bottom: 1px */
: 0);
}
} // displayMailToPopup(sMailToUrl) {
// sMailToUrl = sMailToUrl.replace(/\?.+$/, '');
//
// var
// sResult = '',
// aTo = [],
// EmailModel = require('Model/Email').default,
// fParseEmailLine = function(sLine) {
// return sLine ? _.compact(_.map([window.decodeURIComponent(sLine)], function(sItem) {
// var oEmailModel = new EmailModel();
// oEmailModel.parse(sItem);
// return '' !== oEmailModel.email ? oEmailModel : null;
// })) : null;
// }
// ;
//
// aTo = fParseEmailLine(sMailToUrl);
// sResult = aTo && aTo[0] ? aTo[0].email : '';
//
// return sResult;
// }
/**
* @param {Object} oAttachment
* @returns {boolean}
*/
;
_proto.attachmentPreview = function attachmentPreview(attachment) {
if (attachment && attachment.isImage() && !attachment.isLinked && this.message() && this.message().attachments()) {
var index = 0,
listIndex = 0;
var div = $__WEBPACK_IMPORTED_MODULE_8___default()('<div>'),
dynamicEls = ___WEBPACK_IMPORTED_MODULE_7___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_7___default.a).call(___WEBPACK_IMPORTED_MODULE_7___default.a, this.message().attachments(), function (item) {
if (item && !item.isLinked && item.isImage()) {
if (item === attachment) {
index = listIndex;
}
listIndex += 1;
return {
src: item.linkPreview(),
thumb: item.linkThumbnail(),
subHtml: item.fileName,
downloadUrl: item.linkPreview()
};
}
return null;
}));
if (0 < dynamicEls.length) {
div.on('onBeforeOpen.lg', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_13__["useKeyboardShortcuts"])(false);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["removeInFocus"])(true);
});
div.on('onCloseAfter.lg', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_13__["useKeyboardShortcuts"])(true);
});
div.lightGallery({
dynamic: true,
loadYoutubeThumbnail: false,
loadVimeoThumbnail: false,
thumbWidth: 80,
thumbContHeight: 95,
showThumbByDefault: false,
mode: 'lg-lollipop',
// 'lg-slide',
index: index,
dynamicEl: dynamicEls
});
}
return false;
}
return true;
};
_proto.onBuild = function onBuild(dom) {
var _this2 = this;
var self = this,
fCheckHeaderHeight = ___WEBPACK_IMPORTED_MODULE_7___default.a.bind(this.checkHeaderHeight, this);
this.oDom = dom;
this.fullScreenMode.subscribe(function (value) {
if (value && _this2.message()) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageView);
}
});
this.showAttachmnetControls.subscribe(fCheckHeaderHeight);
this.fullScreenMode.subscribe(fCheckHeaderHeight);
this.showFullInfo.subscribe(fCheckHeaderHeight);
this.message.subscribe(fCheckHeaderHeight);
Common_Events__WEBPACK_IMPORTED_MODULE_16__[/* sub */ "b"]('window.resize', ___WEBPACK_IMPORTED_MODULE_7___default.a.throttle(function () {
___WEBPACK_IMPORTED_MODULE_7___default.a.delay(fCheckHeaderHeight, 1);
___WEBPACK_IMPORTED_MODULE_7___default.a.delay(fCheckHeaderHeight, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time200ms);
___WEBPACK_IMPORTED_MODULE_7___default.a.delay(fCheckHeaderHeight, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time500ms);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time50ms));
this.showFullInfo.subscribe(function (value) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])();
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time200ms);
Storage_Client__WEBPACK_IMPORTED_MODULE_26__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ClientSideKeyName"].MessageHeaderFullInfo, value ? '1' : '0');
});
Stores_Social__WEBPACK_IMPORTED_MODULE_20__[/* default */ "a"].appendDropbox();
this.oHeaderDom = $__WEBPACK_IMPORTED_MODULE_8___default()('.messageItemHeader', dom);
this.oHeaderDom = this.oHeaderDom[0] ? this.oHeaderDom : null;
if (this.mobile) {
dom.on('click', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_13__["leftPanelDisabled"])(true);
});
}
dom.on('click', 'a', function (event) {
// eslint-disable-line prefer-arrow-callback
// setup maito protocol
return !(!!event && Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].EventWhichMouseMiddle !== event.which && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["mailToHelper"])($__WEBPACK_IMPORTED_MODULE_8___default()(this).attr('href'), Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].Composer) ? __webpack_require__(/*! View/Popup/Compose */ 132) : null // eslint-disable-line no-invalid-this
));
}).on('click', '.attachmentsPlace .attachmentIconParent', function (event) {
if (event && event.stopPropagation) {
event.stopPropagation();
}
}).on('click', '.attachmentsPlace .showPreplay', function (event) {
// eslint-disable-line prefer-arrow-callback
if (event && event.stopPropagation) {
event.stopPropagation();
}
var attachment = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (attachment && Common_Audio__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].supported) {
switch (true) {
case Common_Audio__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].supportedMp3 && attachment.isMp3():
Common_Audio__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].playMp3(attachment.linkDownload(), attachment.fileName);
break;
case Common_Audio__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].supportedOgg && attachment.isOgg():
Common_Audio__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].playOgg(attachment.linkDownload(), attachment.fileName);
break;
case Common_Audio__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].supportedWav && attachment.isWav():
Common_Audio__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].playWav(attachment.linkDownload(), attachment.fileName);
break;
// no default
}
}
}).on('click', '.attachmentsPlace .attachmentItem .attachmentNameParent', function () {
// eslint-disable-line prefer-arrow-callback
var attachment = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (attachment && attachment.download) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_30__[/* getApp */ "a"])().download(attachment.linkDownload());
}
}).on('click', '.messageItemHeader .subjectParent .flagParent', function () {
// eslint-disable-line prefer-arrow-callback
var message = self.message();
if (message) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_30__[/* getApp */ "a"])().messageListAction(message.folderFullNameRaw, message.flagged() ? Common_Enums__WEBPACK_IMPORTED_MODULE_12__["MessageSetAction"].UnsetFlag : Common_Enums__WEBPACK_IMPORTED_MODULE_12__["MessageSetAction"].SetFlag, [message]);
}
}).on('click', '.thread-list .flagParent', function () {
// eslint-disable-line prefer-arrow-callback
var message = ko__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (message && message.folder && message.uid) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_30__[/* getApp */ "a"])().messageListAction(message.folder, message.flagged() ? Common_Enums__WEBPACK_IMPORTED_MODULE_12__["MessageSetAction"].UnsetFlag : Common_Enums__WEBPACK_IMPORTED_MODULE_12__["MessageSetAction"].SetFlag, [message]);
}
self.threadsDropdownTrigger(true);
return false;
});
Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].focusedState.subscribe(function (value) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageView !== value) {
_this2.scrollMessageToTop();
_this2.scrollMessageToLeft();
}
});
Common_Globals__WEBPACK_IMPORTED_MODULE_13__["keyScopeReal"].subscribe(function (value) {
_this2.messageDomFocused(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView === value && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["inFocus"])());
});
this.oMessageScrollerDom = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(dom).call(dom, '.messageItem .content');
this.oMessageScrollerDom = this.oMessageScrollerDom && this.oMessageScrollerDom[0] ? this.oMessageScrollerDom : null;
this.initShortcuts();
}
/**
* @returns {boolean}
*/
;
_proto.escShortcuts = function escShortcuts() {
if (this.viewModelVisibility() && this.message()) {
if (this.fullScreenMode()) {
this.fullScreenMode(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Layout"].NoPreview !== this.layout()) {
Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageList);
}
} else if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Layout"].NoPreview === this.layout()) {
this.message(null);
} else {
Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageList);
}
return false;
}
return true;
};
_proto.initShortcuts = function initShortcuts() {
var _this3 = this;
// exit fullscreen, back
key__WEBPACK_IMPORTED_MODULE_10___default()('esc, backspace', Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView, ___WEBPACK_IMPORTED_MODULE_7___default.a.bind(this.escShortcuts, this)); // fullscreen
key__WEBPACK_IMPORTED_MODULE_10___default()('enter', Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView, function () {
_this3.toggleFullScreen();
return false;
}); // reply
key__WEBPACK_IMPORTED_MODULE_10___default()('r', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView], function () {
if (Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message()) {
_this3.replyCommand();
return false;
}
return true;
}); // replaAll
key__WEBPACK_IMPORTED_MODULE_10___default()('a', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView], function () {
if (Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message()) {
_this3.replyAllCommand();
return false;
}
return true;
}); // forward
key__WEBPACK_IMPORTED_MODULE_10___default()('f', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView], function () {
if (Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message()) {
_this3.forwardCommand();
return false;
}
return true;
}); // message information
key__WEBPACK_IMPORTED_MODULE_10___default()('ctrl+i, command+i', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView], function () {
if (Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message()) {
_this3.showFullInfo(!_this3.showFullInfo());
}
return false;
}); // toggle message blockquotes
key__WEBPACK_IMPORTED_MODULE_10___default()('b', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView], function () {
if (Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message() && Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message().body) {
var _context;
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_4___default()(_context = Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message().body).call(_context, '.rlBlockquoteSwitcher').click();
return false;
}
return true;
});
key__WEBPACK_IMPORTED_MODULE_10___default()('ctrl+up, command+up, ctrl+left, command+left', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView], function () {
_this3.goUpCommand();
return false;
});
key__WEBPACK_IMPORTED_MODULE_10___default()('ctrl+down, command+down, ctrl+right, command+right', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView], function () {
_this3.goDownCommand();
return false;
}); // print
key__WEBPACK_IMPORTED_MODULE_10___default()('ctrl+p, command+p', [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageList], function () {
if (_this3.message()) {
_this3.message().printMessage();
}
return false;
}); // delete
key__WEBPACK_IMPORTED_MODULE_10___default()('delete, shift+delete', Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView, function (event, handler) {
if (event) {
if (handler && 'shift+delete' === handler.shortcut) {
_this3.deleteWithoutMoveCommand();
} else {
_this3.deleteCommand();
}
return false;
}
return true;
}); // change focused state
key__WEBPACK_IMPORTED_MODULE_10___default()('tab, shift+tab, left', Common_Enums__WEBPACK_IMPORTED_MODULE_12__["KeyState"].MessageView, function (event, handler) {
if (!_this3.fullScreenMode() && _this3.message() && Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Layout"].NoPreview !== _this3.layout()) {
if (event && handler && 'left' === handler.shortcut) {
if (_this3.oMessageScrollerDom && 0 < _this3.oMessageScrollerDom.scrollLeft()) {
return true;
}
Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageList);
} else {
Stores_User_App__WEBPACK_IMPORTED_MODULE_21__[/* default */ "a"].focusedState(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Focused"].MessageList);
}
} else if (_this3.message() && Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Layout"].NoPreview === _this3.layout() && event && handler && 'left' === handler.shortcut) {
return true;
}
return false;
});
}
/**
* @returns {boolean}
*/
;
_proto.isDraftFolder = function isDraftFolder() {
return Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message() && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].draftFolder() === Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message().folderFullNameRaw;
}
/**
* @returns {boolean}
*/
;
_proto.isSentFolder = function isSentFolder() {
return Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message() && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].sentFolder() === Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message().folderFullNameRaw;
}
/**
* @returns {boolean}
*/
;
_proto.isSpamFolder = function isSpamFolder() {
return Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message() && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].spamFolder() === Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message().folderFullNameRaw;
}
/**
* @returns {boolean}
*/
;
_proto.isSpamDisabled = function isSpamDisabled() {
return Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message() && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].spamFolder() === Common_Consts__WEBPACK_IMPORTED_MODULE_11__[/* UNUSED_OPTION_VALUE */ "r"];
}
/**
* @returns {boolean}
*/
;
_proto.isArchiveFolder = function isArchiveFolder() {
return Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message() && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].archiveFolder() === Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message().folderFullNameRaw;
}
/**
* @returns {boolean}
*/
;
_proto.isArchiveDisabled = function isArchiveDisabled() {
return Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message() && Stores_User_Folder__WEBPACK_IMPORTED_MODULE_24__[/* default */ "a"].archiveFolder() === Common_Consts__WEBPACK_IMPORTED_MODULE_11__[/* UNUSED_OPTION_VALUE */ "r"];
}
/**
* @returns {boolean}
*/
;
_proto.isDraftOrSentFolder = function isDraftOrSentFolder() {
return this.isDraftFolder() || this.isSentFolder();
};
_proto.composeClick = function composeClick() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].Composer)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132));
}
};
_proto.editMessage = function editMessage() {
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_27__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Capa"].Composer) && Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_31__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Compose */ 132), [Common_Enums__WEBPACK_IMPORTED_MODULE_12__["ComposeType"].Draft, Stores_User_Message__WEBPACK_IMPORTED_MODULE_25__[/* default */ "a"].message()]);
}
};
_proto.scrollMessageToTop = function scrollMessageToTop() {
if (this.oMessageScrollerDom) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Size50px < this.oMessageScrollerDom.scrollTop()) {
this.oMessageScrollerDom.scrollTop(Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Size50px).animate({
'scrollTop': 0
}, Common_Enums__WEBPACK_IMPORTED_MODULE_12__["Magics"].Time200ms);
} else {
this.oMessageScrollerDom.scrollTop(0);
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])();
}
};
_proto.scrollMessageToLeft = function scrollMessageToLeft() {
if (this.oMessageScrollerDom) {
this.oMessageScrollerDom.scrollLeft(0);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["windowResize"])();
}
};
_proto.getAttachmentsHashes = function getAttachmentsHashes() {
var atts = this.message() ? this.message().attachments() : [];
return ___WEBPACK_IMPORTED_MODULE_7___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_3___default()(___WEBPACK_IMPORTED_MODULE_7___default.a).call(___WEBPACK_IMPORTED_MODULE_7___default.a, atts, function (item) {
return item && !item.isLinked && item.checked() ? item.download : '';
}));
};
_proto.downloadAsZip = function downloadAsZip() {
var _this4 = this;
var hashes = this.getAttachmentsHashes();
if (0 < hashes.length) {
Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_29__[/* default */ "a"].attachmentsActions('Zip', hashes, this.downloadAsZipLoading).then(function (result) {
if (result && result.Result && result.Result.Files && result.Result.Files[0] && result.Result.Files[0].Hash) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_30__[/* getApp */ "a"])().download(Object(Common_Links__WEBPACK_IMPORTED_MODULE_18__[/* attachmentDownload */ "c"])(result.Result.Files[0].Hash));
} else {
_this4.downloadAsZipError(true);
}
}).catch(function () {
_this4.downloadAsZipError(true);
});
} else {
this.highlightUnselectedAttachments(true);
}
};
_proto.saveToOwnCloud = function saveToOwnCloud() {
var _this5 = this;
var hashes = this.getAttachmentsHashes();
if (0 < hashes.length) {
Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_29__[/* default */ "a"].attachmentsActions('OwnCloud', hashes, this.saveToOwnCloudLoading).then(function (result) {
if (result && result.Result) {
_this5.saveToOwnCloudSuccess(true);
} else {
_this5.saveToOwnCloudError(true);
}
}).catch(function () {
_this5.saveToOwnCloudError(true);
});
} else {
this.highlightUnselectedAttachments(true);
}
};
_proto.saveToDropbox = function saveToDropbox() {
var _this6 = this;
var files = [],
hashes = this.getAttachmentsHashes();
if (0 < hashes.length) {
if (window__WEBPACK_IMPORTED_MODULE_6___default.a.Dropbox) {
Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_29__[/* default */ "a"].attachmentsActions('Dropbox', hashes, this.saveToDropboxLoading).then(function (result) {
if (result && result.Result && result.Result.Url && result.Result.ShortLife && result.Result.Files) {
if (window__WEBPACK_IMPORTED_MODULE_6___default.a.Dropbox && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["isArray"])(result.Result.Files)) {
___WEBPACK_IMPORTED_MODULE_7___default.a.each(result.Result.Files, function (item) {
files.push({
url: result.Result.Url + Object(Common_Links__WEBPACK_IMPORTED_MODULE_18__[/* attachmentDownload */ "c"])(item.Hash, result.Result.ShortLife),
filename: item.FileName
});
});
window__WEBPACK_IMPORTED_MODULE_6___default.a.Dropbox.save({
files: files,
progress: function progress() {
_this6.saveToDropboxLoading(true);
_this6.saveToDropboxError(false);
_this6.saveToDropboxSuccess(false);
},
cancel: function cancel() {
_this6.saveToDropboxSuccess(false);
_this6.saveToDropboxError(false);
_this6.saveToDropboxLoading(false);
},
success: function success() {
_this6.saveToDropboxSuccess(true);
_this6.saveToDropboxLoading(false);
},
error: function error() {
_this6.saveToDropboxError(true);
_this6.saveToDropboxLoading(false);
}
});
} else {
_this6.saveToDropboxError(true);
}
}
}).catch(function () {
_this6.saveToDropboxError(true);
});
}
} else {
this.highlightUnselectedAttachments(true);
}
}
/**
* @param {MessageModel} oMessage
* @returns {void}
*/
;
_proto.showImages = function showImages(message) {
if (message && message.showExternalImages) {
message.showExternalImages(true);
}
this.checkHeaderHeight();
}
/**
* @returns {string}
*/
;
_proto.printableCheckedMessageCount = function printableCheckedMessageCount() {
var cnt = this.messageListCheckedOrSelectedUidsWithSubMails().length;
return 0 < cnt ? 100 > cnt ? cnt : '99+' : ''; // eslint-disable-line no-magic-numbers
}
/**
* @param {MessageModel} oMessage
* @returns {void}
*/
;
_proto.readReceipt = function readReceipt(oMessage) {
if (oMessage && '' !== oMessage.readReceipt()) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_28__[/* default */ "a"].sendReadReceiptMessage(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["noop"], oMessage.folderFullNameRaw, oMessage.uid, oMessage.readReceipt(), Object(Common_Translator__WEBPACK_IMPORTED_MODULE_17__["i18n"])('READ_RECEIPT/SUBJECT', {
'SUBJECT': oMessage.subject()
}), Object(Common_Translator__WEBPACK_IMPORTED_MODULE_17__["i18n"])('READ_RECEIPT/BODY', {
'READ-RECEIPT': Stores_User_Account__WEBPACK_IMPORTED_MODULE_23__[/* default */ "a"].email()
}));
oMessage.isReadReceipt(true);
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_19__[/* storeMessageFlagsToCache */ "u"])(oMessage);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_30__[/* getApp */ "a"])().reloadFlagsCurrentMessageListAndMessageFromCache();
}
this.checkHeaderHeight();
};
return MessageViewMailBoxUserView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_32__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "closeMessageCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "closeMessageCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "messageVisibilityCommand", [_dec3], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "messageVisibilityCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "messageEditCommand", [_dec4], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "messageEditCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "goUpCommand", [_dec5], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "goUpCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "goDownCommand", [_dec6], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_5___default()(_class2.prototype, "goDownCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 454 */
/*!*************************************!*\
!*** ./dev/Screen/User/Settings.js ***!
\*************************************/
/*! exports provided: SettingsUserScreen, default */
/*! exports used: SettingsUserScreen */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SettingsUserScreen; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Plugins__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Plugins */ 36);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Screen_AbstractSettings__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Screen/AbstractSettings */ 304);
/* harmony import */ var Settings_User_General__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Settings/User/General */ 455);
/* harmony import */ var Settings_User_Contacts__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Settings/User/Contacts */ 456);
/* harmony import */ var Settings_User_Accounts__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Settings/User/Accounts */ 457);
/* harmony import */ var Settings_User_Filters__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Settings/User/Filters */ 458);
/* harmony import */ var Settings_User_Security__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Settings/User/Security */ 459);
/* harmony import */ var Settings_User_Social__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Settings/User/Social */ 460);
/* harmony import */ var Settings_User_ChangePassword__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Settings/User/ChangePassword */ 461);
/* harmony import */ var Settings_User_Templates__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Settings/User/Templates */ 462);
/* harmony import */ var Settings_User_Folders__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Settings/User/Folders */ 463);
/* harmony import */ var Settings_User_Themes__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Settings/User/Themes */ 464);
/* harmony import */ var Settings_User_OpenPgp__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Settings/User/OpenPgp */ 465);
/* harmony import */ var View_User_Settings_SystemDropDown__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! View/User/Settings/SystemDropDown */ 466);
/* harmony import */ var View_User_Settings_Menu__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! View/User/Settings/Menu */ 467);
/* harmony import */ var View_User_Settings_Pane__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! View/User/Settings/Pane */ 468);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! Helper/Apps/User */ 22);
var SettingsUserScreen = /*#__PURE__*/function (_AbstractSettingsScre) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(SettingsUserScreen, _AbstractSettingsScre);
function SettingsUserScreen() {
var _this;
_this = _AbstractSettingsScre.call(this, [View_User_Settings_SystemDropDown__WEBPACK_IMPORTED_MODULE_21__[/* SystemDropDownSettingsUserView */ "a"], View_User_Settings_Menu__WEBPACK_IMPORTED_MODULE_22__[/* MenuSettingsUserView */ "a"], View_User_Settings_Pane__WEBPACK_IMPORTED_MODULE_23__[/* PaneSettingsUserView */ "a"]]) || this;
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["initOnStartOrLangChange"])(function () {
_this.sSettingsTitle = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('TITLES/SETTINGS');
}, function () {
_this.setSettingsTitle();
});
return _this;
}
/**
* @param {Function=} fCallback
*/
var _proto = SettingsUserScreen.prototype;
_proto.setupSettings = function setupSettings(fCallback) {
if (fCallback === void 0) {
fCallback = null;
}
if (!Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].Settings)) {
if (fCallback) {
fCallback();
}
return false;
}
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_General__WEBPACK_IMPORTED_MODULE_10__[/* GeneralUserSettings */ "a"], 'SettingsGeneral', 'SETTINGS_LABELS/LABEL_GENERAL_NAME', 'general', true);
if (Stores_User_App__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].contactsIsAllowed()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Contacts__WEBPACK_IMPORTED_MODULE_11__[/* ContactsUserSettings */ "a"], 'SettingsContacts', 'SETTINGS_LABELS/LABEL_CONTACTS_NAME', 'contacts');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].AdditionalAccounts) || Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].Identities)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Accounts__WEBPACK_IMPORTED_MODULE_12__[/* AccountsUserSettings */ "a"], 'SettingsAccounts', Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].AdditionalAccounts) ? 'SETTINGS_LABELS/LABEL_ACCOUNTS_NAME' : 'SETTINGS_LABELS/LABEL_IDENTITIES_NAME', 'accounts');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].Sieve)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Filters__WEBPACK_IMPORTED_MODULE_13__[/* FiltersUserSettings */ "a"], 'SettingsFilters', 'SETTINGS_LABELS/LABEL_FILTERS_NAME', 'filters');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].AutoLogout) || Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].TwoFactor)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Security__WEBPACK_IMPORTED_MODULE_14__[/* SecurityUserSettings */ "a"], 'SettingsSecurity', 'SETTINGS_LABELS/LABEL_SECURITY_NAME', 'security');
}
if (Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].isRootAccount() && (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["settingsGet"]('AllowGoogleSocial') && Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["settingsGet"]('AllowGoogleSocialAuth') || Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["settingsGet"]('AllowFacebookSocial') || Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["settingsGet"]('AllowTwitterSocial'))) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Social__WEBPACK_IMPORTED_MODULE_15__[/* SocialUserSettings */ "a"], 'SettingsSocial', 'SETTINGS_LABELS/LABEL_SOCIAL_NAME', 'social');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["settingsGet"]('ChangePasswordIsAllowed')) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_ChangePassword__WEBPACK_IMPORTED_MODULE_16__[/* ChangePasswordUserSettings */ "a"], 'SettingsChangePassword', 'SETTINGS_LABELS/LABEL_CHANGE_PASSWORD_NAME', 'change-password');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].Templates)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Templates__WEBPACK_IMPORTED_MODULE_17__[/* TemplatesUserSettings */ "a"], 'SettingsTemplates', 'SETTINGS_LABELS/LABEL_TEMPLATES_NAME', 'templates');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].Folders)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Folders__WEBPACK_IMPORTED_MODULE_18__[/* FoldersUserSettings */ "a"], 'SettingsFolders', 'SETTINGS_LABELS/LABEL_FOLDERS_NAME', 'folders');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].Themes)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_Themes__WEBPACK_IMPORTED_MODULE_19__[/* ThemesUserSettings */ "a"], 'SettingsThemes', 'SETTINGS_LABELS/LABEL_THEMES_NAME', 'themes');
}
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["capa"](Common_Enums__WEBPACK_IMPORTED_MODULE_1__["Capa"].OpenPGP)) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["addSettingsViewModel"])(Settings_User_OpenPgp__WEBPACK_IMPORTED_MODULE_20__[/* OpenPgpUserSettings */ "a"], 'SettingsOpenPGP', 'SETTINGS_LABELS/LABEL_OPEN_PGP_NAME', 'openpgp');
}
Object(Common_Plugins__WEBPACK_IMPORTED_MODULE_3__[/* runSettingsViewModelHooks */ "g"])(false);
if (fCallback) {
fCallback();
}
return true;
};
_proto.onShow = function onShow() {
this.setSettingsTitle();
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_2__["keyScope"])(Common_Enums__WEBPACK_IMPORTED_MODULE_1__["KeyState"].Settings);
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_2__["leftPanelType"])('');
if (Storage_Settings__WEBPACK_IMPORTED_MODULE_7__["appSettingsGet"]('mobile')) {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_2__["leftPanelDisabled"])(true);
}
};
_proto.setSettingsTitle = function setSettingsTitle() {
var sEmail = Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].email();
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_24__[/* getApp */ "a"])().setWindowTitle(('' === sEmail ? '' : sEmail + ' - ') + this.sSettingsTitle);
};
return SettingsUserScreen;
}(Screen_AbstractSettings__WEBPACK_IMPORTED_MODULE_9__[/* AbstractSettingsScreen */ "a"]);
/***/ }),
/* 455 */
/*!**************************************!*\
!*** ./dev/Settings/User/General.js ***!
\**************************************/
/*! exports provided: GeneralUserSettings, default */
/*! exports used: GeneralUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return GeneralUserSettings; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Consts__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Consts */ 24);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_Language__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Stores/Language */ 72);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Stores_User_Identity__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Stores/User/Identity */ 102);
/* harmony import */ var Stores_User_Notification__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Stores/User/Notification */ 124);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
var GeneralUserSettings = /*#__PURE__*/function () {
function GeneralUserSettings() {
var _this = this;
this.language = Stores_Language__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].language;
this.languages = Stores_Language__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].languages;
this.messagesPerPage = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].messagesPerPage;
this.messagesPerPageArray = Common_Consts__WEBPACK_IMPORTED_MODULE_3__[/* MESSAGES_PER_PAGE_VALUES */ "j"];
this.editorDefaultType = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].editorDefaultType;
this.layout = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].layout;
this.usePreviewPane = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].usePreviewPane;
this.soundNotificationIsSupported = Stores_User_Notification__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].soundNotificationIsSupported;
this.enableSoundNotification = Stores_User_Notification__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].enableSoundNotification;
this.enableDesktopNotification = Stores_User_Notification__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].enableDesktopNotification;
this.isDesktopNotificationSupported = Stores_User_Notification__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].isDesktopNotificationSupported;
this.isDesktopNotificationDenied = Stores_User_Notification__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].isDesktopNotificationDenied;
this.showImages = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].showImages;
this.useCheckboxesInList = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].useCheckboxesInList;
this.threadsAllowed = Stores_User_App__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].threadsAllowed;
this.useThreads = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].useThreads;
this.replySameFolder = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].replySameFolder;
this.allowLanguagesOnSettings = Stores_User_App__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].allowLanguagesOnSettings;
this.languageFullName = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["convertLangName"])(_this.language());
});
this.languageTrigger = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].Idle).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Magics"].Time100ms
});
this.mppTrigger = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].Idle);
this.editorDefaultTypeTrigger = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].Idle);
this.layoutTrigger = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].Idle);
this.isAnimationSupported = Common_Globals__WEBPACK_IMPORTED_MODULE_4__["bAnimationSupported"];
this.identities = Stores_User_Identity__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].identities;
this.identityMain = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
var list = _this.identities();
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["isArray"])(list) ? _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_1___default.a).call(___WEBPACK_IMPORTED_MODULE_1___default.a, list, function (item) {
return item && '' === item.id();
}) : null;
});
this.identityMainDesc = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
var identity = _this.identityMain();
return identity ? identity.formattedName() : '---';
});
this.editorDefaultTypes = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["trigger"])();
return [{
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_5__["EditorDefaultType"].Html,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('SETTINGS_GENERAL/LABEL_EDITOR_HTML')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_5__["EditorDefaultType"].Plain,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('SETTINGS_GENERAL/LABEL_EDITOR_PLAIN')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_5__["EditorDefaultType"].HtmlForced,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('SETTINGS_GENERAL/LABEL_EDITOR_HTML_FORCED')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_5__["EditorDefaultType"].PlainForced,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('SETTINGS_GENERAL/LABEL_EDITOR_PLAIN_FORCED')
}];
});
this.layoutTypes = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["trigger"])();
return [{
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Layout"].NoPreview,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('SETTINGS_GENERAL/LABEL_LAYOUT_NO_SPLIT')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Layout"].SidePreview,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('SETTINGS_GENERAL/LABEL_LAYOUT_VERTICAL_SPLIT')
}, {
'id': Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Layout"].BottomPreview,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["i18n"])('SETTINGS_GENERAL/LABEL_LAYOUT_HORIZONTAL_SPLIT')
}];
});
}
var _proto = GeneralUserSettings.prototype;
_proto.editMainIdentity = function editMainIdentity() {
var identity = this.identityMain();
if (identity) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Identity */ 393), [identity]);
}
};
_proto.testSoundNotification = function testSoundNotification() {
Stores_User_Notification__WEBPACK_IMPORTED_MODULE_13__[/* default */ "a"].playSoundNotification(true);
};
_proto.onBuild = function onBuild() {
var _this2 = this;
___WEBPACK_IMPORTED_MODULE_1___default.a.delay(function () {
var f0 = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["settingsSaveHelperSimpleFunction"])(_this2.editorDefaultTypeTrigger, _this2),
f1 = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["settingsSaveHelperSimpleFunction"])(_this2.mppTrigger, _this2),
f2 = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["settingsSaveHelperSimpleFunction"])(_this2.layoutTrigger, _this2),
fReloadLanguageHelper = function fReloadLanguageHelper(saveSettingsStep) {
return function () {
_this2.languageTrigger(saveSettingsStep);
___WEBPACK_IMPORTED_MODULE_1___default.a.delay(function () {
return _this2.languageTrigger(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].Idle);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Magics"].Time1s);
};
};
_this2.language.subscribe(function (value) {
_this2.languageTrigger(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].Animate);
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_7__["reload"])(false, value).then(fReloadLanguageHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].TrueResult), fReloadLanguageHelper(Common_Enums__WEBPACK_IMPORTED_MODULE_5__["SaveSettingsStep"].FalseResult)).then(function () {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettings(null, {
'Language': value
});
});
});
_this2.editorDefaultType.subscribe(Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettingsHelper('EditorDefaultType', null, f0));
_this2.messagesPerPage.subscribe(Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettingsHelper('MPP', null, f1));
_this2.showImages.subscribe(Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettingsHelper('ShowImages', Common_Utils__WEBPACK_IMPORTED_MODULE_6__["boolToAjax"]));
_this2.useCheckboxesInList.subscribe(Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettingsHelper('UseCheckboxesInList', Common_Utils__WEBPACK_IMPORTED_MODULE_6__["boolToAjax"]));
_this2.enableDesktopNotification.subscribe(function (value) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["timeOutAction"])('SaveDesktopNotifications', function () {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettings(null, {
'DesktopNotifications': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["boolToAjax"])(value)
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Magics"].Time3s);
});
_this2.enableSoundNotification.subscribe(function (value) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["timeOutAction"])('SaveSoundNotification', function () {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettings(null, {
'SoundNotification': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["boolToAjax"])(value)
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Magics"].Time3s);
});
_this2.replySameFolder.subscribe(function (value) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["timeOutAction"])('SaveReplySameFolder', function () {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettings(null, {
'ReplySameFolder': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["boolToAjax"])(value)
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Magics"].Time3s);
});
_this2.useThreads.subscribe(function (value) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].messageList([]);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettings(null, {
'UseThreads': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["boolToAjax"])(value)
});
});
_this2.layout.subscribe(function (value) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_14__[/* default */ "a"].messageList([]);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_15__[/* default */ "a"].saveSettings(f2, {
'Layout': value
});
});
}, Common_Enums__WEBPACK_IMPORTED_MODULE_5__["Magics"].Time50ms);
};
_proto.onShow = function onShow() {
this.enableDesktopNotification.valueHasMutated();
};
_proto.selectLanguage = function selectLanguage() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Languages */ 291), [this.language, this.languages(), Stores_Language__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].userLanguage()]);
};
return GeneralUserSettings;
}();
/***/ }),
/* 456 */
/*!***************************************!*\
!*** ./dev/Settings/User/Contacts.js ***!
\***************************************/
/*! exports provided: ContactsUserSettings, default */
/*! exports used: ContactsUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ContactsUserSettings; });
/* unused harmony export default */
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Stores_User_App__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Stores/User/App */ 27);
/* harmony import */ var Stores_User_Contact__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Stores/User/Contact */ 103);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
var ContactsUserSettings = /*#__PURE__*/function () {
function ContactsUserSettings() {
var _this = this;
this.contactsAutosave = Stores_User_App__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].contactsAutosave;
this.allowContactsSync = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].allowContactsSync;
this.enableContactsSync = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].enableContactsSync;
this.contactsSyncUrl = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].contactsSyncUrl;
this.contactsSyncUser = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].contactsSyncUser;
this.contactsSyncPass = Stores_User_Contact__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].contactsSyncPass;
this.saveTrigger = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
return [_this.enableContactsSync() ? '1' : '0', _this.contactsSyncUrl(), _this.contactsSyncUser(), _this.contactsSyncPass()].join('|');
}).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Magics"].Time500ms
});
}
var _proto = ContactsUserSettings.prototype;
_proto.onBuild = function onBuild() {
var _this2 = this;
this.contactsAutosave.subscribe(function (value) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].saveSettings(null, {
'ContactsAutosave': Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["boolToAjax"])(value)
});
});
this.saveTrigger.subscribe(function () {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].saveContactsSyncData(null, _this2.enableContactsSync(), _this2.contactsSyncUrl(), _this2.contactsSyncUser(), _this2.contactsSyncPass());
});
};
return ContactsUserSettings;
}();
/***/ }),
/* 457 */
/*!***************************************!*\
!*** ./dev/Settings/User/Accounts.js ***!
\***************************************/
/*! exports provided: AccountsUserSettings, default */
/*! exports used: AccountsUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return AccountsUserSettings; });
/* unused harmony export default */
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! window */ 4);
/* harmony import */ var window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(window__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Stores/User/Account */ 46);
/* harmony import */ var Stores_User_Identity__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Stores/User/Identity */ 102);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var AccountsUserSettings = /*#__PURE__*/function () {
function AccountsUserSettings() {
this.allowAdditionalAccount = Object(Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["capa"])(Common_Enums__WEBPACK_IMPORTED_MODULE_3__["Capa"].AdditionalAccounts);
this.allowIdentities = Object(Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["capa"])(Common_Enums__WEBPACK_IMPORTED_MODULE_3__["Capa"].Identities);
this.accounts = Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].accounts;
this.identities = Stores_User_Identity__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].identities;
this.accountForDeletion = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(null).deleteAccessHelper();
this.identityForDeletion = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(null).deleteAccessHelper();
}
var _proto = AccountsUserSettings.prototype;
_proto.scrollableOptions = function scrollableOptions(wrapper) {
return {
handle: '.drag-handle',
containment: wrapper || 'parent',
axis: 'y'
};
};
_proto.addNewAccount = function addNewAccount() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Account */ 392));
};
_proto.editAccount = function editAccount(account) {
if (account && account.canBeEdit()) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Account */ 392), [account]);
}
};
_proto.addNewIdentity = function addNewIdentity() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Identity */ 393));
};
_proto.editIdentity = function editIdentity(identity) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Identity */ 393), [identity]);
}
/**
* @param {AccountModel} accountToRemove
* @returns {void}
*/
;
_proto.deleteAccount = function deleteAccount(accountToRemove) {
if (accountToRemove && accountToRemove.deleteAccess()) {
this.accountForDeletion(null);
if (accountToRemove) {
this.accounts.remove(function (account) {
return accountToRemove === account;
});
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].accountDelete(function (result, data) {
if (Common_Enums__WEBPACK_IMPORTED_MODULE_3__["StorageResultType"].Success === result && data && data.Result && data.Reload) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["routeOff"])();
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_4__[/* root */ "w"])(), true);
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["routeOff"])();
___WEBPACK_IMPORTED_MODULE_1___default.a.defer(function () {
return window__WEBPACK_IMPORTED_MODULE_0___default.a.location.reload();
});
} else {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__[/* getApp */ "a"])().accountsAndIdentities();
}
}, accountToRemove.email);
}
}
}
/**
* @param {IdentityModel} identityToRemove
* @returns {void}
*/
;
_proto.deleteIdentity = function deleteIdentity(identityToRemove) {
if (identityToRemove && identityToRemove.deleteAccess()) {
this.identityForDeletion(null);
if (identityToRemove) {
Stores_User_Identity__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].identities.remove(function (oIdentity) {
return identityToRemove === oIdentity;
});
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].identityDelete(function () {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__[/* getApp */ "a"])().accountsAndIdentities();
}, identityToRemove.id);
}
}
};
_proto.accountsAndIdentitiesAfterMove = function accountsAndIdentitiesAfterMove() {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].accountsAndIdentitiesSortOrder(null, Stores_User_Account__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].accountsEmails.peek(), Stores_User_Identity__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].identitiesIDS.peek());
};
_proto.onBuild = function onBuild(oDom) {
var self = this;
oDom.on('click', '.accounts-list .account-item .e-action', function () {
// eslint-disable-line prefer-arrow-callback
var account = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (account) {
self.editAccount(account);
}
}).on('click', '.identities-list .identity-item .e-action', function () {
// eslint-disable-line prefer-arrow-callback
var identity = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (identity) {
self.editIdentity(identity);
}
});
};
return AccountsUserSettings;
}();
/***/ }),
/* 458 */
/*!**************************************!*\
!*** ./dev/Settings/User/Filters.js ***!
\**************************************/
/*! exports provided: FiltersUserSettings, default */
/*! exports used: FiltersUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return FiltersUserSettings; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_User_Filter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Stores/User/Filter */ 232);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Model_Filter__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Model/Filter */ 407);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var _dec, _class;
var FiltersUserSettings = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["command"])(function (self) {
return self.haveChanges();
}), (_class = /*#__PURE__*/function () {
function FiltersUserSettings() {
var _this = this;
this.modules = Stores_User_Filter__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].modules;
this.filters = Stores_User_Filter__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].filters;
this.inited = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
this.serverError = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
this.serverErrorDesc = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
this.haveChanges = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
this.saveErrorText = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
this.filters.subscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["windowResizeCallback"]);
this.serverError.subscribe(function (value) {
if (!value) {
_this.serverErrorDesc('');
}
}, this);
this.filterRaw = Stores_User_Filter__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].raw;
this.filterRaw.capa = Stores_User_Filter__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].capa;
this.filterRaw.active = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
this.filterRaw.allow = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
this.filterRaw.error = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
this.filterForDeletion = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(null).deleteAccessHelper();
this.filters.subscribe(function () {
_this.haveChanges(true);
});
this.filterRaw.subscribe(function () {
_this.haveChanges(true);
_this.filterRaw.error(false);
});
this.haveChanges.subscribe(function () {
_this.saveErrorText('');
});
this.filterRaw.active.subscribe(function () {
_this.haveChanges(true);
_this.filterRaw.error(false);
});
}
var _proto = FiltersUserSettings.prototype;
_proto.saveChangesCommand = function saveChangesCommand() {
var _this2 = this;
if (!this.filters.saving()) {
if (this.filterRaw.active() && '' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["trim"])(this.filterRaw())) {
this.filterRaw.error(true);
return false;
}
this.filters.saving(true);
this.saveErrorText('');
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].filtersSave(function (result, data) {
_this2.filters.saving(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_7__["StorageResultType"].Success === result && data && data.Result) {
_this2.haveChanges(false);
_this2.updateList();
} else if (data && data.ErrorCode) {
_this2.saveErrorText(data.ErrorMessageAdditional || Object(Common_Translator__WEBPACK_IMPORTED_MODULE_8__["getNotification"])(data.ErrorCode));
} else {
_this2.saveErrorText(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_8__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].CantSaveFilters));
}
}, this.filters(), this.filterRaw(), this.filterRaw.active());
}
return true;
};
_proto.scrollableOptions = function scrollableOptions(wrapper) {
return {
handle: '.drag-handle',
containment: wrapper || 'parent',
axis: 'y'
};
};
_proto.updateList = function updateList() {
var _this3 = this;
if (!this.filters.loading()) {
this.filters.loading(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].filtersGet(function (result, data) {
_this3.filters.loading(false);
_this3.serverError(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_7__["StorageResultType"].Success === result && data && data.Result && Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["isArray"])(data.Result.Filters)) {
_this3.inited(true);
_this3.serverError(false);
_this3.filters(___WEBPACK_IMPORTED_MODULE_4___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_2___default()(___WEBPACK_IMPORTED_MODULE_4___default.a).call(___WEBPACK_IMPORTED_MODULE_4___default.a, data.Result.Filters, function (aItem) {
var filter = new Model_Filter__WEBPACK_IMPORTED_MODULE_11__[/* FilterModel */ "a"]();
return filter && filter.parse(aItem) ? filter : null;
})));
_this3.modules(data.Result.Modules ? data.Result.Modules : {});
_this3.filterRaw(data.Result.Raw || '');
_this3.filterRaw.capa(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["isArray"])(data.Result.Capa) ? data.Result.Capa.join(' ') : '');
_this3.filterRaw.active(!!data.Result.RawIsActive);
_this3.filterRaw.allow(!!data.Result.RawIsAllow);
} else {
_this3.filters([]);
_this3.modules({});
_this3.filterRaw('');
_this3.filterRaw.capa({});
_this3.serverError(true);
_this3.serverErrorDesc(data && data.ErrorCode ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_8__["getNotification"])(data.ErrorCode) : Object(Common_Translator__WEBPACK_IMPORTED_MODULE_8__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_7__["Notification"].CantGetFilters));
}
_this3.haveChanges(false);
});
}
};
_proto.deleteFilter = function deleteFilter(filter) {
this.filters.remove(filter);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRunOnDestroy"])(filter);
};
_proto.addFilter = function addFilter() {
var _this4 = this;
var filter = new Model_Filter__WEBPACK_IMPORTED_MODULE_11__[/* FilterModel */ "a"]();
filter.generateID();
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Filter */ 429), [filter, function () {
_this4.filters.push(filter);
_this4.filterRaw.active(false);
}, false]);
};
_proto.editFilter = function editFilter(filter) {
var _this5 = this;
var clonedFilter = filter.cloneSelf();
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Filter */ 429), [clonedFilter, function () {
var filters = _this5.filters(),
index = filters.indexOf(filter);
if (-1 < index && filters[index]) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRunOnDestroy"])(filters[index]);
filters[index] = clonedFilter;
_this5.filters(filters);
_this5.haveChanges(true);
}
}, true]);
};
_proto.onBuild = function onBuild(oDom) {
var self = this;
oDom.on('click', '.filter-item .e-action', function () {
// eslint-disable-line prefer-arrow-callback
var filter = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (filter) {
self.editFilter(filter);
}
});
};
_proto.onShow = function onShow() {
this.updateList();
};
return FiltersUserSettings;
}(), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "saveChangesCommand", [_dec], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class.prototype, "saveChangesCommand"), _class.prototype)), _class));
/***/ }),
/* 459 */
/*!***************************************!*\
!*** ./dev/Settings/User/Security.js ***!
\***************************************/
/*! exports provided: SecurityUserSettings, default */
/*! exports used: SecurityUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SecurityUserSettings; });
/* unused harmony export default */
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
var SecurityUserSettings = /*#__PURE__*/function () {
function SecurityUserSettings() {
this.capaAutoLogout = Object(Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["capa"])(Common_Enums__WEBPACK_IMPORTED_MODULE_3__["Capa"].AutoLogout);
this.capaTwoFactor = Object(Storage_Settings__WEBPACK_IMPORTED_MODULE_5__["capa"])(Common_Enums__WEBPACK_IMPORTED_MODULE_3__["Capa"].TwoFactor);
this.autoLogout = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].autoLogout;
this.autoLogout.trigger = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_3__["SaveSettingsStep"].Idle);
this.autoLogoutOptions = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["trigger"])();
return [{
'id': 0,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_NEVER_OPTION_NAME')
}, {
'id': 5,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_MINUTES_OPTION_NAME', {
'MINUTES': 5
})
}, {
'id': 10,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_MINUTES_OPTION_NAME', {
'MINUTES': 10
})
}, {
'id': 30,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_MINUTES_OPTION_NAME', {
'MINUTES': 30
})
}, {
'id': 60,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_MINUTES_OPTION_NAME', {
'MINUTES': 60
})
}, {
'id': 60 * 2,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_HOURS_OPTION_NAME', {
'HOURS': 2
})
}, {
'id': 60 * 5,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_HOURS_OPTION_NAME', {
'HOURS': 5
})
}, {
'id': 60 * 10,
'name': Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_SECURITY/AUTOLOGIN_HOURS_OPTION_NAME', {
'HOURS': 10
})
}];
});
}
var _proto = SecurityUserSettings.prototype;
_proto.configureTwoFactor = function configureTwoFactor() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__["showScreenPopup"])(__webpack_require__(/*! View/Popup/TwoFactorConfiguration */ 430));
};
_proto.onBuild = function onBuild() {
var _this = this;
if (this.capaAutoLogout) {
___WEBPACK_IMPORTED_MODULE_0___default.a.delay(function () {
var f0 = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_2__["settingsSaveHelperSimpleFunction"])(_this.autoLogout.trigger, _this);
_this.autoLogout.subscribe(Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].saveSettingsHelper('AutoLogout', Common_Utils__WEBPACK_IMPORTED_MODULE_2__["pInt"], f0));
});
}
};
return SecurityUserSettings;
}();
/***/ }),
/* 460 */
/*!*************************************!*\
!*** ./dev/Settings/User/Social.js ***!
\*************************************/
/*! exports provided: SocialUserSettings, default */
/*! exports used: SocialUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SocialUserSettings; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var Stores_Social__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Stores/Social */ 26);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _class;
var SocialUserSettings = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_4__["command"])(function (self) {
return !self.googleLoggined() && !self.googleActions();
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_4__["command"])(), _dec3 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_4__["command"])(function (self) {
return !self.facebookLoggined() && !self.facebookActions();
}), _dec4 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_4__["command"])(), _dec5 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_4__["command"])(function (self) {
return !self.twitterLoggined() && !self.twitterActions();
}), _dec6 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_4__["command"])(), (_class = /*#__PURE__*/function () {
function SocialUserSettings() {
this.googleEnable = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.enabled;
this.googleEnableAuth = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.capa.auth;
this.googleEnableAuthGmail = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.capa.authGmail;
this.googleEnableDrive = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.capa.drive;
this.googleEnablePreview = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.capa.preview;
this.googleActions = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.loading;
this.googleLoggined = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.loggined;
this.googleUserName = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].google.userName;
this.facebookEnable = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].facebook.enabled;
this.facebookActions = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].facebook.loading;
this.facebookLoggined = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].facebook.loggined;
this.facebookUserName = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].facebook.userName;
this.twitterEnable = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].twitter.enabled;
this.twitterActions = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].twitter.loading;
this.twitterLoggined = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].twitter.loggined;
this.twitterUserName = Stores_Social__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].twitter.userName;
}
var _proto = SocialUserSettings.prototype;
_proto.connectGoogleCommand = function connectGoogleCommand() {
if (!this.googleLoggined()) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__[/* getApp */ "a"])().googleConnect();
}
};
_proto.disconnectGoogleCommand = function disconnectGoogleCommand() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__[/* getApp */ "a"])().googleDisconnect();
};
_proto.connectFacebookCommand = function connectFacebookCommand() {
if (!this.facebookLoggined()) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__[/* getApp */ "a"])().facebookConnect();
}
};
_proto.disconnectFacebookCommand = function disconnectFacebookCommand() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__[/* getApp */ "a"])().facebookDisconnect();
};
_proto.connectTwitterCommand = function connectTwitterCommand() {
if (!this.twitterLoggined()) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__[/* getApp */ "a"])().twitterConnect();
}
};
_proto.disconnectTwitterCommand = function disconnectTwitterCommand() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_3__[/* getApp */ "a"])().twitterDisconnect();
};
return SocialUserSettings;
}(), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "connectGoogleCommand", [_dec], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype, "connectGoogleCommand"), _class.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "disconnectGoogleCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype, "disconnectGoogleCommand"), _class.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "connectFacebookCommand", [_dec3], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype, "connectFacebookCommand"), _class.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "disconnectFacebookCommand", [_dec4], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype, "disconnectFacebookCommand"), _class.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "connectTwitterCommand", [_dec5], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype, "connectTwitterCommand"), _class.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "disconnectTwitterCommand", [_dec6], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype, "disconnectTwitterCommand"), _class.prototype)), _class));
/***/ }),
/* 461 */
/*!*********************************************!*\
!*** ./dev/Settings/User/ChangePassword.js ***!
\*********************************************/
/*! exports provided: ChangePasswordUserSettings, default */
/*! exports used: ChangePasswordUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ChangePasswordUserSettings; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var _dec, _class;
var ChangePasswordUserSettings = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_8__["command"])(function (self) {
return !self.changeProcess() && '' !== self.currentPassword() && '' !== self.newPassword() && '' !== self.newPassword2();
}), (_class = /*#__PURE__*/function () {
function ChangePasswordUserSettings() {
var _this = this;
this.changeProcess = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
this.errorDescription = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
this.passwordMismatch = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
this.passwordUpdateError = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
this.passwordUpdateSuccess = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
this.currentPassword = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
this.currentPassword.error = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
this.newPassword = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
this.newPassword2 = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
this.currentPassword.subscribe(function () {
_this.passwordUpdateError(false);
_this.passwordUpdateSuccess(false);
_this.currentPassword.error(false);
});
this.newPassword.subscribe(function () {
_this.passwordUpdateError(false);
_this.passwordUpdateSuccess(false);
_this.passwordMismatch(false);
});
this.newPassword2.subscribe(function () {
_this.passwordUpdateError(false);
_this.passwordUpdateSuccess(false);
_this.passwordMismatch(false);
});
this.onChangePasswordResponse = ___WEBPACK_IMPORTED_MODULE_2___default.a.bind(this.onChangePasswordResponse, this);
}
var _proto = ChangePasswordUserSettings.prototype;
_proto.saveNewPasswordCommand = function saveNewPasswordCommand() {
if (this.newPassword() !== this.newPassword2()) {
this.passwordMismatch(true);
this.errorDescription(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_5__["i18n"])('SETTINGS_CHANGE_PASSWORD/ERROR_PASSWORD_MISMATCH'));
} else {
this.changeProcess(true);
this.passwordUpdateError(false);
this.passwordUpdateSuccess(false);
this.currentPassword.error(false);
this.passwordMismatch(false);
this.errorDescription('');
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].changePassword(this.onChangePasswordResponse, this.currentPassword(), this.newPassword());
}
};
_proto.onHide = function onHide() {
this.changeProcess(false);
this.currentPassword('');
this.newPassword('');
this.newPassword2('');
this.errorDescription('');
this.passwordMismatch(false);
this.currentPassword.error(false);
};
_proto.onChangePasswordResponse = function onChangePasswordResponse(result, data) {
this.changeProcess(false);
this.passwordMismatch(false);
this.errorDescription('');
this.currentPassword.error(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === result && data && data.Result) {
this.currentPassword('');
this.newPassword('');
this.newPassword2('');
this.passwordUpdateSuccess(true);
this.currentPassword.error(false);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_7__[/* getApp */ "a"])().setClientSideToken(data.Result);
} else {
if (data && Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].CurrentPasswordIncorrect === data.ErrorCode) {
this.currentPassword.error(true);
}
this.passwordUpdateError(true);
this.errorDescription(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_5__["getNotificationFromResponse"])(data, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].CouldNotSaveNewPassword));
}
};
return ChangePasswordUserSettings;
}(), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_class.prototype, "saveNewPasswordCommand", [_dec], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_1___default()(_class.prototype, "saveNewPasswordCommand"), _class.prototype)), _class));
/***/ }),
/* 462 */
/*!****************************************!*\
!*** ./dev/Settings/User/Templates.js ***!
\****************************************/
/*! exports provided: TemplatesUserSettings, default */
/*! exports used: TemplatesUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return TemplatesUserSettings; });
/* unused harmony export default */
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_User_Template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Stores/User/Template */ 206);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var TemplatesUserSettings = /*#__PURE__*/function () {
function TemplatesUserSettings() {
var _this = this;
this.templates = Stores_User_Template__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].templates;
this.processText = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].computed(function () {
return Stores_User_Template__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].templates.loading() ? Object(Common_Translator__WEBPACK_IMPORTED_MODULE_1__["i18n"])('SETTINGS_TEMPLETS/LOADING_PROCESS') : '';
});
this.visibility = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].computed(function () {
return '' === _this.processText() ? 'hidden' : 'visible';
});
this.templateForDeletion = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].observable(null).deleteAccessHelper();
}
var _proto = TemplatesUserSettings.prototype;
_proto.scrollableOptions = function scrollableOptions(sWrapper) {
return {
handle: '.drag-handle',
containment: sWrapper || 'parent',
axis: 'y'
};
};
_proto.addNewTemplate = function addNewTemplate() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_5__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Template */ 431));
};
_proto.editTemplate = function editTemplate(oTemplateItem) {
if (oTemplateItem) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_5__["showScreenPopup"])(__webpack_require__(/*! View/Popup/Template */ 431), [oTemplateItem]);
}
};
_proto.deleteTemplate = function deleteTemplate(templateToRemove) {
var _this2 = this;
if (templateToRemove && templateToRemove.deleteAccess()) {
this.templateForDeletion(null);
if (templateToRemove) {
this.templates.remove(function (template) {
return templateToRemove === template;
});
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].templateDelete(function () {
_this2.reloadTemplates();
}, templateToRemove.id);
}
}
};
_proto.reloadTemplates = function reloadTemplates() {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_4__[/* getApp */ "a"])().templates();
};
_proto.onBuild = function onBuild(oDom) {
var self = this;
oDom.on('click', '.templates-list .template-item .e-action', function () {
// eslint-disable-line prefer-arrow-callback
var template = ko__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"].dataFor(this); // eslint-disable-line no-invalid-this
if (template) {
self.editTemplate(template);
}
});
this.reloadTemplates();
};
return TemplatesUserSettings;
}();
/***/ }),
/* 463 */
/*!**************************************!*\
!*** ./dev/Settings/User/Folders.js ***!
\**************************************/
/*! exports provided: FoldersUserSettings, default */
/*! exports used: FoldersUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return FoldersUserSettings; });
/* unused harmony export default */
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Storage_Client__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Storage/Client */ 60);
/* harmony import */ var Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Stores/User/Folder */ 11);
/* harmony import */ var Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Promises/User/Ajax */ 93);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var FoldersUserSettings = /*#__PURE__*/function () {
function FoldersUserSettings() {
this.displaySpecSetting = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].displaySpecSetting;
this.folderList = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].folderList;
this.folderListHelp = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('').extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Magics"].Time100ms
});
this.loading = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].computed(function () {
var loading = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].foldersLoading(),
creating = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].foldersCreating(),
deleting = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].foldersDeleting(),
renaming = Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].foldersRenaming();
return loading || creating || deleting || renaming;
});
this.folderForDeletion = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(null).deleteAccessHelper();
this.folderForEdit = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(null).extend({
toggleSubscribeProperty: [this, 'edited']
});
this.useImapSubscribe = !!Object(Storage_Settings__WEBPACK_IMPORTED_MODULE_6__["appSettingsGet"])('useImapSubscribe');
}
var _proto = FoldersUserSettings.prototype;
_proto.folderEditOnEnter = function folderEditOnEnter(folder) {
var nameToEdit = folder ? Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["trim"])(folder.nameForEdit()) : '';
if ('' !== nameToEdit && folder.name() !== nameToEdit) {
Storage_Client__WEBPACK_IMPORTED_MODULE_7__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_2__["ClientSideKeyName"].FoldersLashHash, '');
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_11__[/* getApp */ "a"])().foldersPromisesActionHelper(Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].folderRename(folder.fullNameRaw, nameToEdit, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].foldersRenaming), Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Notification"].CantRenameFolder);
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_5__[/* removeFolderFromCacheList */ "o"])(folder.fullNameRaw);
folder.name(nameToEdit);
}
folder.edited(false);
};
_proto.folderEditOnEsc = function folderEditOnEsc(folder) {
if (folder) {
folder.edited(false);
}
};
_proto.onShow = function onShow() {
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].folderList.error('');
};
_proto.onBuild = function onBuild(oDom) {
var _this = this;
oDom.on('mouseover', '.delete-folder-parent', function () {
_this.folderListHelp(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_FOLDERS/HELP_DELETE_FOLDER'));
}).on('mouseover', '.subscribe-folder-parent', function () {
_this.folderListHelp(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_FOLDERS/HELP_SHOW_HIDE_FOLDER'));
}).on('mouseover', '.check-folder-parent', function () {
_this.folderListHelp(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["i18n"])('SETTINGS_FOLDERS/HELP_CHECK_FOR_NEW_MESSAGES'));
}).on('mouseout', '.subscribe-folder-parent, .check-folder-parent, .delete-folder-parent', function () {
_this.folderListHelp('');
});
};
_proto.createFolder = function createFolder() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["showScreenPopup"])(__webpack_require__(/*! View/Popup/FolderCreate */ 428));
};
_proto.systemFolder = function systemFolder() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["showScreenPopup"])(__webpack_require__(/*! View/Popup/FolderSystem */ 316));
};
_proto.deleteFolder = function deleteFolder(folderToRemove) {
if (folderToRemove && folderToRemove.canBeDeleted() && folderToRemove.deleteAccess() && 0 === folderToRemove.privateMessageCountAll()) {
this.folderForDeletion(null);
if (folderToRemove) {
var fRemoveFolder = function fRemoveFolder(folder) {
if (folderToRemove === folder) {
return true;
}
folder.subFolders.remove(fRemoveFolder);
return false;
};
Storage_Client__WEBPACK_IMPORTED_MODULE_7__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_2__["ClientSideKeyName"].FoldersLashHash, '');
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].folderList.remove(fRemoveFolder);
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_11__[/* getApp */ "a"])().foldersPromisesActionHelper(Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_9__[/* default */ "a"].folderDelete(folderToRemove.fullNameRaw, Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].foldersDeleting), Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Notification"].CantDeleteFolder);
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_5__[/* removeFolderFromCacheList */ "o"])(folderToRemove.fullNameRaw);
}
} else if (0 < folderToRemove.privateMessageCountAll()) {
Stores_User_Folder__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].folderList.error(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_4__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_2__["Notification"].CantDeleteNonEmptyFolder));
}
};
_proto.subscribeFolder = function subscribeFolder(folder) {
Storage_Client__WEBPACK_IMPORTED_MODULE_7__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_2__["ClientSideKeyName"].FoldersLashHash, '');
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].folderSetSubscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["noop"], folder.fullNameRaw, true);
folder.subScribed(true);
};
_proto.unSubscribeFolder = function unSubscribeFolder(folder) {
Storage_Client__WEBPACK_IMPORTED_MODULE_7__[/* set */ "b"](Common_Enums__WEBPACK_IMPORTED_MODULE_2__["ClientSideKeyName"].FoldersLashHash, '');
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].folderSetSubscribe(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["noop"], folder.fullNameRaw, false);
folder.subScribed(false);
};
_proto.checkableTrueFolder = function checkableTrueFolder(folder) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].folderSetCheckable(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["noop"], folder.fullNameRaw, true);
folder.checkable(true);
};
_proto.checkableFalseFolder = function checkableFalseFolder(folder) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_10__[/* default */ "a"].folderSetCheckable(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["noop"], folder.fullNameRaw, false);
folder.checkable(false);
};
return FoldersUserSettings;
}();
/***/ }),
/* 464 */
/*!*************************************!*\
!*** ./dev/Settings/User/Themes.js ***!
\*************************************/
/*! exports provided: ThemesUserSettings, default */
/*! exports used: ThemesUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return ThemesUserSettings; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Jua */ 205);
/* harmony import */ var Jua__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(Jua__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Stores_Theme__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Stores/Theme */ 123);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
var ThemesUserSettings = /*#__PURE__*/function () {
function ThemesUserSettings() {
var _this = this;
this.theme = Stores_Theme__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].theme;
this.themes = Stores_Theme__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].themes;
this.themesObjects = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observableArray([]);
this.background = {};
this.background.name = Stores_Theme__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].themeBackgroundName;
this.background.hash = Stores_Theme__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].themeBackgroundHash;
this.background.uploaderButton = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(null);
this.background.loading = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(false);
this.background.error = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable('');
this.capaUserBackground = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(Object(Storage_Settings__WEBPACK_IMPORTED_MODULE_10__["capa"])(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Capa"].UserBackground));
this.themeTrigger = ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["SaveSettingsStep"].Idle).extend({
throttle: Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].Time100ms
});
this.iTimer = 0;
this.oThemeAjaxRequest = null;
this.theme.subscribe(function (value) {
___WEBPACK_IMPORTED_MODULE_2___default.a.each(_this.themesObjects(), function (theme) {
theme.selected(value === theme.name);
});
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["changeTheme"])(value, _this.themeTrigger);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].saveSettings(null, {
'Theme': value
});
});
this.background.hash.subscribe(function (value) {
var $bg = $__WEBPACK_IMPORTED_MODULE_3___default()('#rl-bg');
if (!value) {
if ($bg.data('backstretch')) {
$bg.backstretch('destroy').attr('style', '');
}
} else {
$bg.attr('style', 'background-image: none !important;').backstretch(Object(Common_Links__WEBPACK_IMPORTED_MODULE_8__[/* userBackground */ "J"])(value), {
fade: Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].Time1s,
centeredX: true,
centeredY: true
}).removeAttr('style');
}
});
}
var _proto = ThemesUserSettings.prototype;
_proto.onBuild = function onBuild() {
var currentTheme = this.theme();
this.themesObjects(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_2___default.a).call(___WEBPACK_IMPORTED_MODULE_2___default.a, this.themes(), function (theme) {
return {
name: theme,
nameDisplay: Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["convertThemeName"])(theme),
selected: ko__WEBPACK_IMPORTED_MODULE_4__[/* default */ "a"].observable(theme === currentTheme),
themePreviewSrc: Object(Common_Links__WEBPACK_IMPORTED_MODULE_8__[/* themePreviewLink */ "F"])(theme)
};
}));
this.initUploader();
};
_proto.onShow = function onShow() {
this.background.error('');
};
_proto.clearBackground = function clearBackground() {
var _this2 = this;
if (this.capaUserBackground()) {
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].clearUserBackground(function () {
_this2.background.name('');
_this2.background.hash('');
});
}
};
_proto.initUploader = function initUploader() {
var _this3 = this;
if (this.background.uploaderButton() && this.capaUserBackground()) {
var oJua = new Jua__WEBPACK_IMPORTED_MODULE_5___default.a({
'action': Object(Common_Links__WEBPACK_IMPORTED_MODULE_8__[/* uploadBackground */ "H"])(),
'name': 'uploader',
'queueSize': 1,
'multipleSizeLimit': 1,
'disableDragAndDrop': true,
'disableMultiple': true,
'clickElement': this.background.uploaderButton()
});
oJua.on('onStart', function () {
_this3.background.loading(true);
_this3.background.error('');
return true;
}).on('onComplete', function (id, result, data) {
_this3.background.loading(false);
if (result && id && data && data.Result && data.Result.Name && data.Result.Hash) {
_this3.background.name(data.Result.Name);
_this3.background.hash(data.Result.Hash);
} else {
_this3.background.name('');
_this3.background.hash('');
var errorMsg = '';
if (data.ErrorCode) {
switch (data.ErrorCode) {
case Common_Enums__WEBPACK_IMPORTED_MODULE_6__["UploadErrorCode"].FileIsTooBig:
errorMsg = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SETTINGS_THEMES/ERROR_FILE_IS_TOO_BIG');
break;
case Common_Enums__WEBPACK_IMPORTED_MODULE_6__["UploadErrorCode"].FileType:
errorMsg = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SETTINGS_THEMES/ERROR_FILE_TYPE_ERROR');
break;
// no default
}
}
if (!errorMsg && data.ErrorMessage) {
errorMsg = data.ErrorMessage;
}
_this3.background.error(errorMsg || Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SETTINGS_THEMES/ERROR_UNKNOWN'));
}
return true;
});
}
};
return ThemesUserSettings;
}();
/***/ }),
/* 465 */
/*!**************************************!*\
!*** ./dev/Settings/User/OpenPgp.js ***!
\**************************************/
/*! exports provided: OpenPgpUserSettings, default */
/*! exports used: OpenPgpUserSettings */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OpenPgpUserSettings; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Stores_User_Settings__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Stores/User/Settings */ 35);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/Knoin */ 8);
var OpenPgpUserSettings = /*#__PURE__*/function () {
function OpenPgpUserSettings() {
this.openpgpkeys = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpkeys;
this.openpgpkeysPublic = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpkeysPublic;
this.openpgpkeysPrivate = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpkeysPrivate;
this.openPgpKeyForDeletion = ko__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].observable(null).deleteAccessHelper();
this.allowDraftAutosave = Stores_User_Settings__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].allowDraftAutosave;
this.isHttps = Common_Globals__WEBPACK_IMPORTED_MODULE_5__["bIsHttps"];
}
var _proto = OpenPgpUserSettings.prototype;
_proto.addOpenPgpKey = function addOpenPgpKey() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/AddOpenPgpKey */ 557));
};
_proto.generateOpenPgpKey = function generateOpenPgpKey() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/NewOpenPgpKey */ 558));
};
_proto.viewOpenPgpKey = function viewOpenPgpKey(openPgpKey) {
if (openPgpKey) {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["showScreenPopup"])(__webpack_require__(/*! View/Popup/ViewOpenPgpKey */ 559), [openPgpKey]);
}
}
/**
* @param {OpenPgpKeyModel} openPgpKeyToRemove
* @returns {void}
*/
;
_proto.deleteOpenPgpKey = function deleteOpenPgpKey(openPgpKeyToRemove) {
if (openPgpKeyToRemove && openPgpKeyToRemove.deleteAccess()) {
this.openPgpKeyForDeletion(null);
if (openPgpKeyToRemove && Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpKeyring) {
var findedItem = _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_0___default()(___WEBPACK_IMPORTED_MODULE_1___default.a).call(___WEBPACK_IMPORTED_MODULE_1___default.a, Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpkeys(), function (key) {
return openPgpKeyToRemove === key;
});
if (findedItem) {
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpkeys.remove(findedItem);
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_3__["delegateRunOnDestroy"])(findedItem);
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpKeyring[findedItem.isPrivate ? 'privateKeys' : 'publicKeys'].removeForId(findedItem.guid);
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].openpgpKeyring.store();
}
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__[/* getApp */ "a"])().reloadOpenPgpKeys();
}
}
};
_proto.onBuild = function onBuild() {
var _this = this;
___WEBPACK_IMPORTED_MODULE_1___default.a.delay(function () {
_this.allowDraftAutosave.subscribe(Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].saveSettingsHelper('AllowDraftAutosave', Common_Utils__WEBPACK_IMPORTED_MODULE_3__["boolToAjax"]));
}, Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Magics"].Time50ms);
};
return OpenPgpUserSettings;
}();
/***/ }),
/* 466 */
/*!**************************************************!*\
!*** ./dev/View/User/Settings/SystemDropDown.js ***!
\**************************************************/
/*! exports provided: SystemDropDownSettingsUserView, default */
/*! exports used: SystemDropDownSettingsUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return SystemDropDownSettingsUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var View_User_AbstractSystemDropDown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! View/User/AbstractSystemDropDown */ 318);
var _dec, _class;
var SystemDropDownSettingsUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_1__["view"])({
name: 'View/User/Settings/SystemDropDown',
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_1__["ViewType"].Right,
templateID: 'SystemDropDown'
}), _dec(_class = /*#__PURE__*/function (_AbstractSystemDropDo) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(SystemDropDownSettingsUserView, _AbstractSystemDropDo);
function SystemDropDownSettingsUserView() {
return _AbstractSystemDropDo.apply(this, arguments) || this;
}
return SystemDropDownSettingsUserView;
}(View_User_AbstractSystemDropDown__WEBPACK_IMPORTED_MODULE_2__[/* AbstractSystemDropDownUserView */ "a"])) || _class);
/***/ }),
/* 467 */
/*!****************************************!*\
!*** ./dev/View/User/Settings/Menu.js ***!
\****************************************/
/*! exports provided: MenuSettingsUserView, default */
/*! exports used: MenuSettingsUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return MenuSettingsUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.link.js */ 204);
/* harmony import */ var core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link_js__WEBPACK_IMPORTED_MODULE_1__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var MenuSettingsUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["view"])({
name: 'View/User/Settings/Menu',
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["ViewType"].Left,
templateID: 'SettingsMenu'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(MenuSettingsUserView, _AbstractViewNext);
/**
* @param {Object} screen
*/
function MenuSettingsUserView(screen) {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.leftPanelDisabled = Common_Globals__WEBPACK_IMPORTED_MODULE_5__["leftPanelDisabled"];
_this.mobile = Storage_Settings__WEBPACK_IMPORTED_MODULE_8__["appSettingsGet"]('mobile');
_this.menu = screen.menu;
return _this;
}
var _proto = MenuSettingsUserView.prototype;
_proto.onBuild = function onBuild(dom) {
if (this.mobile) {
dom.on('click', '.b-settings-menu .e-item.selectable', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_5__["leftPanelDisabled"])(true);
});
}
key__WEBPACK_IMPORTED_MODULE_3___default()('up, down', Common_Enums__WEBPACK_IMPORTED_MODULE_4__["KeyState"].Settings, Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["settingsMenuKeysHandler"])($__WEBPACK_IMPORTED_MODULE_2___default()('.b-settings-menu .e-item', dom)));
};
_proto.link = function link(route) {
return Object(Common_Links__WEBPACK_IMPORTED_MODULE_6__[/* settings */ "z"])(route);
};
_proto.backToMailBoxClick = function backToMailBoxClick() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_6__[/* inbox */ "m"])(Object(Common_Cache__WEBPACK_IMPORTED_MODULE_7__[/* getFolderInboxName */ "h"])()));
};
return MenuSettingsUserView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_10__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 468 */
/*!****************************************!*\
!*** ./dev/View/User/Settings/Pane.js ***!
\****************************************/
/*! exports provided: PaneSettingsUserView, default */
/*! exports used: PaneSettingsUserView */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return PaneSettingsUserView; });
/* unused harmony export default */
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var Common_Links__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! Common/Links */ 15);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Storage_Settings__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Storage/Settings */ 5);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var PaneSettingsUserView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__["view"])({
name: 'View/User/Settings/Pane',
type: Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__["ViewType"].Right,
templateID: 'SettingsPane'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(PaneSettingsUserView, _AbstractViewNext);
function PaneSettingsUserView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.mobile = Storage_Settings__WEBPACK_IMPORTED_MODULE_4__["appSettingsGet"]('mobile');
_this.leftPanelDisabled = Common_Globals__WEBPACK_IMPORTED_MODULE_3__["leftPanelDisabled"];
return _this;
}
var _proto = PaneSettingsUserView.prototype;
_proto.onShow = function onShow() {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].message(null);
};
_proto.hideLeft = function hideLeft(item, event) {
event.preventDefault();
event.stopPropagation();
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["leftPanelDisabled"])(true);
};
_proto.showLeft = function showLeft(item, event) {
event.preventDefault();
event.stopPropagation();
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["leftPanelDisabled"])(false);
};
_proto.onBuild = function onBuild(dom) {
if (this.mobile) {
dom.on('click', function () {
Object(Common_Globals__WEBPACK_IMPORTED_MODULE_3__["leftPanelDisabled"])(true);
});
}
};
_proto.backToMailBoxClick = function backToMailBoxClick() {
Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_6__["setHash"])(Object(Common_Links__WEBPACK_IMPORTED_MODULE_1__[/* inbox */ "m"])(Object(Common_Cache__WEBPACK_IMPORTED_MODULE_2__[/* getFolderInboxName */ "h"])()));
};
return PaneSettingsUserView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_7__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 469 */,
/* 470 */,
/* 471 */,
/* 472 */,
/* 473 */,
/* 474 */,
/* 475 */,
/* 476 */,
/* 477 */,
/* 478 */,
/* 479 */,
/* 480 */,
/* 481 */,
/* 482 */,
/* 483 */,
/* 484 */,
/* 485 */,
/* 486 */,
/* 487 */,
/* 488 */,
/* 489 */,
/* 490 */,
/* 491 */,
/* 492 */,
/* 493 */,
/* 494 */,
/* 495 */,
/* 496 */,
/* 497 */,
/* 498 */,
/* 499 */,
/* 500 */,
/* 501 */,
/* 502 */,
/* 503 */,
/* 504 */,
/* 505 */,
/* 506 */,
/* 507 */,
/* 508 */,
/* 509 */,
/* 510 */,
/* 511 */,
/* 512 */,
/* 513 */,
/* 514 */,
/* 515 */,
/* 516 */,
/* 517 */,
/* 518 */,
/* 519 */,
/* 520 */,
/* 521 */,
/* 522 */,
/* 523 */,
/* 524 */,
/* 525 */,
/* 526 */,
/* 527 */,
/* 528 */,
/* 529 */,
/* 530 */,
/* 531 */,
/* 532 */,
/* 533 */,
/* 534 */,
/* 535 */,
/* 536 */,
/* 537 */,
/* 538 */,
/* 539 */,
/* 540 */,
/* 541 */,
/* 542 */,
/* 543 */,
/* 544 */,
/* 545 */,
/* 546 */,
/* 547 */,
/* 548 */
/*!********************!*\
!*** ./dev/app.js ***!
\********************/
/*! no exports provided */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! bootstrap */ 292);
/* harmony import */ var App_User__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! App/User */ 402);
Object(bootstrap__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(App_User__WEBPACK_IMPORTED_MODULE_1__["default"]);
/***/ }),
/* 549 */
/*!******************************************!*\
!*** ./dev/View/Popup/MessageOpenPgp.js ***!
\******************************************/
/*! exports provided: MessageOpenPgpPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MessageOpenPgpPopupView", function() { return MessageOpenPgpPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return MessageOpenPgpPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var MessageOpenPgpPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["popup"])({
name: 'View/Popup/MessageOpenPgp',
templateID: 'PopupsMessageOpenPgp'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["command"])(function (self) {
return !self.submitRequest();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(MessageOpenPgpPopupView, _AbstractViewNext);
function MessageOpenPgpPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.notification = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.selectedKey = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(null);
_this.privateKeys = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observableArray([]);
_this.password = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.password.focus = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.buttonFocus = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.resultCallback = null;
_this.submitRequest = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_9__["KeyState"].PopupMessageOpenPGP;
return _this;
}
var _proto = MessageOpenPgpPopupView.prototype;
_proto.doCommand = function doCommand() {
var _this2 = this;
this.submitRequest(true);
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
var privateKey = null;
try {
if (_this2.resultCallback && _this2.selectedKey()) {
var privateKeys = _this2.selectedKey().getNativeKeys();
privateKey = privateKeys && privateKeys[0] ? privateKeys[0] : null;
if (privateKey) {
try {
if (!privateKey.decrypt(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["pString"])(_this2.password()))) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["log"])('Error: Private key cannot be decrypted');
privateKey = null;
}
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["log"])(e);
privateKey = null;
}
} else {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["log"])('Error: Private key cannot be found');
}
}
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["log"])(e);
privateKey = null;
}
_this2.submitRequest(false);
_this2.cancelCommand();
_this2.resultCallback(privateKey);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_9__["Magics"].Time100ms);
};
_proto.clearPopup = function clearPopup() {
this.notification('');
this.password('');
this.password.focus(false);
this.buttonFocus(false);
this.selectedKey(false);
this.submitRequest(false);
this.resultCallback = null;
this.privateKeys([]);
};
_proto.onBuild = function onBuild(oDom) {
var _this3 = this;
key__WEBPACK_IMPORTED_MODULE_6___default()('tab,shift+tab', Common_Enums__WEBPACK_IMPORTED_MODULE_9__["KeyState"].PopupMessageOpenPGP, function () {
switch (true) {
case _this3.password.focus():
_this3.buttonFocus(true);
break;
case _this3.buttonFocus():
_this3.password.focus(true);
break;
// no default
}
return false;
});
var self = this;
oDom.on('click', '.key-list__item', function () {
var _context;
// eslint-disable-line prefer-arrow-callback
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(oDom).call(oDom, '.key-list__item .key-list__item__radio').addClass('icon-radio-unchecked').removeClass('icon-radio-checked');
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context = $__WEBPACK_IMPORTED_MODULE_7___default()(this)).call(_context, '.key-list__item__radio') // eslint-disable-line no-invalid-this
.removeClass('icon-radio-unchecked').addClass('icon-radio-checked');
self.selectedKey(ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].dataFor(this)); // eslint-disable-line no-invalid-this
self.password.focus(true);
});
};
_proto.onHideWithDelay = function onHideWithDelay() {
this.clearPopup();
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.password.focus(true); // this.buttonFocus(true);
};
_proto.onShow = function onShow(fCallback, privateKeys) {
this.clearPopup();
this.resultCallback = fCallback;
this.privateKeys(privateKeys);
if (this.viewModelDom) {
var _context2;
_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_2___default()(_context2 = this.viewModelDom).call(_context2, '.key-list__item').first().click();
}
};
return MessageOpenPgpPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "doCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_3___default()(_class2.prototype, "doCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 550 */
/*!***********************************************************!*\
!*** ./node_modules/core-js-pure/stable/instance/keys.js ***!
\***********************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/web.dom-collections.iterator */ 161);
var keys = __webpack_require__(/*! ../array/virtual/keys */ 551);
var classof = __webpack_require__(/*! ../../internals/classof */ 92);
var ArrayPrototype = Array.prototype;
var DOMIterables = {
DOMTokenList: true,
NodeList: true
};
module.exports = function (it) {
var own = it.keys;
return it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.keys)
// eslint-disable-next-line no-prototype-builtins
|| DOMIterables.hasOwnProperty(classof(it)) ? keys : own;
};
/***/ }),
/* 551 */
/*!****************************************************************!*\
!*** ./node_modules/core-js-pure/stable/array/virtual/keys.js ***!
\****************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
var parent = __webpack_require__(/*! ../../../es/array/virtual/keys */ 552);
module.exports = parent;
/***/ }),
/* 552 */
/*!************************************************************!*\
!*** ./node_modules/core-js-pure/es/array/virtual/keys.js ***!
\************************************************************/
/*! no static exports found */
/*! all exports used */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../../modules/es.array.iterator */ 201);
var entryVirtual = __webpack_require__(/*! ../../../internals/entry-virtual */ 71);
module.exports = entryVirtual('Array').keys;
/***/ }),
/* 553 */
/*!******************************************!*\
!*** ./dev/View/Popup/ComposeOpenPgp.js ***!
\******************************************/
/*! exports provided: ComposeOpenPgpPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComposeOpenPgpPopupView", function() { return ComposeOpenPgpPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ComposeOpenPgpPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/assertThisInitialized */ 29);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 203);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/map */ 17);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/concat */ 175);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_7__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/instance/find */ 12);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8__);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_9__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_10__);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! $ */ 7);
/* harmony import */ var $__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n($__WEBPACK_IMPORTED_MODULE_11__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_13__);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Model_Email__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! Model/Email */ 82);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _dec3, _dec4, _dec5, _class, _class2;
var KEY_NAME_SUBSTR = -8;
var ComposeOpenPgpPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_19__["popup"])({
name: 'View/Popup/ComposeOpenPgp',
templateID: 'PopupsComposeOpenPgp'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_19__["command"])(function (self) {
return !self.submitRequest() && (self.sign() || self.encrypt());
}), _dec3 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_19__["command"])(), _dec4 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_19__["command"])(), _dec5 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_19__["command"])(), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(ComposeOpenPgpPopupView, _AbstractViewNext);
function ComposeOpenPgpPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.publicKeysOptionsCaption = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/ADD_A_PUBLICK_KEY');
_this.privateKeysOptionsCaption = Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/SELECT_A_PRIVATE_KEY');
_this.notification = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable('');
_this.sign = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.encrypt = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.password = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable('');
_this.password.focus = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.buttonFocus = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.text = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable('');
_this.selectedPrivateKey = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(null);
_this.selectedPublicKey = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(null);
_this.signKey = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(null);
_this.encryptKeys = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observableArray([]);
_this.encryptKeysView = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
return ___WEBPACK_IMPORTED_MODULE_10___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, _this.encryptKeys(), function (oKey) {
return oKey ? oKey.key : null;
}));
});
_this.privateKeysOptions = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
var opts = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].openpgpkeysPrivate(), function (oKey, iIndex) {
if (_this.signKey() && _this.signKey().key.id === oKey.id) {
return null;
}
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, oKey.users, function (user) {
return {
'id': oKey.guid,
'name': '(' + oKey.id.substr(KEY_NAME_SUBSTR).toUpperCase() + ') ' + user,
'key': oKey,
'class': iIndex % 2 ? 'odd' : 'even'
};
});
});
return ___WEBPACK_IMPORTED_MODULE_10___default.a.compact(___WEBPACK_IMPORTED_MODULE_10___default.a.flatten(opts, true));
});
_this.publicKeysOptions = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].computed(function () {
var opts = _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].openpgpkeysPublic(), function (oKey, index) {
if (-1 < Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["inArray"])(oKey, _this.encryptKeysView())) {
return null;
}
return _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, oKey.users, function (user) {
return {
'id': oKey.guid,
'name': '(' + oKey.id.substr(KEY_NAME_SUBSTR).toUpperCase() + ') ' + user,
'key': oKey,
'class': index % 2 ? 'odd' : 'even'
};
});
});
return ___WEBPACK_IMPORTED_MODULE_10___default.a.compact(___WEBPACK_IMPORTED_MODULE_10___default.a.flatten(opts, true));
});
_this.submitRequest = ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(false);
_this.resultCallback = null;
_this.selectedPrivateKey.subscribe(function (value) {
if (value) {
_this.selectCommand();
_this.updateCommand();
}
});
_this.selectedPublicKey.subscribe(function (value) {
if (value) {
_this.addCommand();
}
});
_this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].PopupComposeOpenPGP;
_this.defautOptionsAfterRender = Common_Utils__WEBPACK_IMPORTED_MODULE_14__["defautOptionsAfterRender"];
_this.addOptionClass = function (domOption, item) {
_this.defautOptionsAfterRender(domOption, item);
if (item && !Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["isUnd"])(item.class) && domOption) {
$__WEBPACK_IMPORTED_MODULE_11___default()(domOption).addClass(item.class);
}
};
_this.deletePublickKey = ___WEBPACK_IMPORTED_MODULE_10___default.a.bind(_this.deletePublickKey, Object(_babel_runtime_corejs3_helpers_esm_assertThisInitialized__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(_this));
return _this;
}
var _proto = ComposeOpenPgpPopupView.prototype;
_proto.doCommand = function doCommand() {
var _this2 = this;
var result = true,
privateKey = null,
aPublicKeys = [];
this.submitRequest(true);
if (result && this.sign()) {
if (!this.signKey()) {
this.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/NO_PRIVATE_KEY_FOUND'));
result = false;
} else if (!this.signKey().key) {
this.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/NO_PRIVATE_KEY_FOUND_FOR', {
'EMAIL': this.signKey().email
}));
result = false;
}
if (result) {
var privateKeys = this.signKey().key.getNativeKeys();
privateKey = privateKeys[0] || null;
try {
if (privateKey) {
privateKey.decrypt(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["pString"])(this.password()));
}
} catch (e) {
privateKey = null;
}
if (!privateKey) {
this.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/NO_PRIVATE_KEY_FOUND'));
result = false;
}
}
}
if (result && this.encrypt()) {
if (0 === this.encryptKeys().length) {
this.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/NO_PUBLIC_KEYS_FOUND'));
result = false;
} else if (this.encryptKeys()) {
aPublicKeys = [];
___WEBPACK_IMPORTED_MODULE_10___default.a.each(this.encryptKeys(), function (oKey) {
if (oKey && oKey.key) {
aPublicKeys = _babel_runtime_corejs3_core_js_stable_instance_concat__WEBPACK_IMPORTED_MODULE_7___default()(aPublicKeys).call(aPublicKeys, ___WEBPACK_IMPORTED_MODULE_10___default.a.compact(___WEBPACK_IMPORTED_MODULE_10___default.a.flatten(oKey.key.getNativeKeys())));
} else if (oKey && oKey.email) {
_this2.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/NO_PUBLIC_KEYS_FOUND_FOR', {
'EMAIL': oKey.email
}));
result = false;
}
});
if (result && (0 === aPublicKeys.length || this.encryptKeys().length !== aPublicKeys.length)) {
result = false;
}
}
}
if (result && this.resultCallback) {
___WEBPACK_IMPORTED_MODULE_10___default.a.delay(function () {
var pgpPromise = null;
try {
if (privateKey && 0 === aPublicKeys.length) {
pgpPromise = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].openpgp.sign({
data: _this2.text(),
privateKeys: [privateKey]
});
} else if (privateKey && 0 < aPublicKeys.length) {
pgpPromise = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].openpgp.encrypt({
data: _this2.text(),
publicKeys: aPublicKeys,
privateKeys: [privateKey]
});
} else if (!privateKey && 0 < aPublicKeys.length) {
pgpPromise = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].openpgp.encrypt({
data: _this2.text(),
publicKeys: aPublicKeys
});
}
} catch (e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["log"])(e);
_this2.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/PGP_ERROR', {
'ERROR': '' + e
}));
}
if (pgpPromise) {
try {
pgpPromise.then(function (mData) {
_this2.resultCallback(mData.data);
_this2.cancelCommand();
}).catch(function (e) {
_this2.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/PGP_ERROR', {
'ERROR': '' + e
}));
});
} catch (e) {
_this2.notification(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_16__["i18n"])('PGP_NOTIFICATIONS/PGP_ERROR', {
'ERROR': '' + e
}));
}
}
_this2.submitRequest(false);
}, Common_Enums__WEBPACK_IMPORTED_MODULE_15__["Magics"].Time20ms);
} else {
this.submitRequest(false);
}
return result;
};
_proto.selectCommand = function selectCommand() {
var keyId = this.selectedPrivateKey(),
option = keyId ? _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, this.privateKeysOptions(), function (item) {
return item && keyId === item.id;
}) : null;
if (option) {
this.signKey({
'empty': !option.key,
'selected': ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(!!option.key),
'users': option.key.users,
'hash': option.key.id.substr(KEY_NAME_SUBSTR).toUpperCase(),
'key': option.key
});
}
};
_proto.addCommand = function addCommand() {
var keyId = this.selectedPublicKey(),
keys = this.encryptKeys(),
option = keyId ? _babel_runtime_corejs3_core_js_stable_instance_find__WEBPACK_IMPORTED_MODULE_8___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, this.publicKeysOptions(), function (item) {
return item && keyId === item.id;
}) : null;
if (option) {
keys.push({
'empty': !option.key,
'selected': ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(!!option.key),
'removable': ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(!this.sign() || !this.signKey() || this.signKey().key.id !== option.key.id),
'users': option.key.users,
'hash': option.key.id.substr(KEY_NAME_SUBSTR).toUpperCase(),
'key': option.key
});
this.encryptKeys(keys);
}
};
_proto.updateCommand = function updateCommand() {
var _this3 = this;
___WEBPACK_IMPORTED_MODULE_10___default.a.each(this.encryptKeys(), function (oKey) {
oKey.removable(!_this3.sign() || !_this3.signKey() || _this3.signKey().key.id !== oKey.key.id);
});
};
_proto.deletePublickKey = function deletePublickKey(publicKey) {
this.encryptKeys.remove(publicKey);
};
_proto.clearPopup = function clearPopup() {
this.notification('');
this.sign(false);
this.encrypt(false);
this.password('');
this.password.focus(false);
this.buttonFocus(false);
this.signKey(null);
this.encryptKeys([]);
this.text('');
this.resultCallback = null;
};
_proto.onBuild = function onBuild() {
var _this4 = this;
key__WEBPACK_IMPORTED_MODULE_13___default()('tab,shift+tab', Common_Enums__WEBPACK_IMPORTED_MODULE_15__["KeyState"].PopupComposeOpenPGP, function () {
switch (true) {
case _this4.password.focus():
_this4.buttonFocus(true);
break;
case _this4.buttonFocus():
_this4.password.focus(true);
break;
// no default
}
return false;
});
};
_proto.onHideWithDelay = function onHideWithDelay() {
this.clearPopup();
};
_proto.onShowWithDelay = function onShowWithDelay() {
if (this.sign()) {
this.password.focus(true);
} else {
this.buttonFocus(true);
}
};
_proto.onShow = function onShow(fCallback, sText, identity, sTo, sCc, sBcc) {
var _this5 = this;
this.clearPopup();
var rec = [],
emailLine = '';
var email = new Model_Email__WEBPACK_IMPORTED_MODULE_18__["EmailModel"]();
this.resultCallback = fCallback;
if ('' !== sTo) {
rec.push(sTo);
}
if ('' !== sCc) {
rec.push(sCc);
}
if ('' !== sBcc) {
rec.push(sBcc);
}
rec = rec.join(', ').split(',');
rec = ___WEBPACK_IMPORTED_MODULE_10___default.a.compact(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, rec, function (value) {
email.clear();
email.parse(Object(Common_Utils__WEBPACK_IMPORTED_MODULE_14__["trim"])(value));
return '' === email.email ? false : email.email;
}));
if (identity && identity.email()) {
emailLine = identity.email();
rec.unshift(emailLine);
var keys = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].findAllPrivateKeysByEmailNotNative(emailLine);
if (keys && keys[0]) {
this.signKey({
'users': keys[0].users || [emailLine],
'hash': keys[0].id.substr(KEY_NAME_SUBSTR).toUpperCase(),
'key': keys[0]
});
}
}
if (this.signKey()) {
this.sign(true);
}
if (rec && 0 < rec.length) {
this.encryptKeys(___WEBPACK_IMPORTED_MODULE_10___default.a.uniq(___WEBPACK_IMPORTED_MODULE_10___default.a.compact(___WEBPACK_IMPORTED_MODULE_10___default.a.flatten(_babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, rec, function (recEmail) {
var keys = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_17__[/* default */ "a"].findAllPublicKeysByEmailNotNative(recEmail);
return keys ? _babel_runtime_corejs3_core_js_stable_instance_map__WEBPACK_IMPORTED_MODULE_6___default()(___WEBPACK_IMPORTED_MODULE_10___default.a).call(___WEBPACK_IMPORTED_MODULE_10___default.a, keys, function (publicKey) {
return {
'empty': !publicKey,
'selected': ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(!!publicKey),
'removable': ko__WEBPACK_IMPORTED_MODULE_12__[/* default */ "a"].observable(!_this5.sign() || !_this5.signKey() || _this5.signKey().key.id !== publicKey.id),
'users': publicKey ? publicKey.users || [recEmail] : [recEmail],
'hash': publicKey ? publicKey.id.substr(KEY_NAME_SUBSTR).toUpperCase() : '',
'key': publicKey
};
}) : [];
}), true)), function (encryptKey) {
return encryptKey.hash;
}));
if (0 < this.encryptKeys().length) {
this.encrypt(true);
}
}
this.text(sText);
};
return ComposeOpenPgpPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_20__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "doCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, "doCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "selectCommand", [_dec3], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, "selectCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "addCommand", [_dec4], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, "addCommand"), _class2.prototype), Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"])(_class2.prototype, "updateCommand", [_dec5], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_9___default()(_class2.prototype, "updateCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 554 */
/*!***************************************!*\
!*** ./dev/View/Popup/FolderClear.js ***!
\***************************************/
/*! exports provided: FolderClearPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FolderClearPopupView", function() { return FolderClearPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return FolderClearPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Cache__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Cache */ 14);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var FolderClearPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["popup"])({
name: 'View/Popup/FolderClear',
templateID: 'PopupsFolderClear'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["command"])(function (self) {
var folder = self.selectedFolder(),
isClearing = self.clearingProcess();
return !isClearing && null !== folder;
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(FolderClearPopupView, _AbstractViewNext);
function FolderClearPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.selectedFolder = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(null);
_this.clearingProcess = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.clearingError = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.folderFullNameForClear = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].computed(function () {
var folder = _this.selectedFolder();
return folder ? folder.printableFullName() : '';
});
_this.folderNameForClear = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].computed(function () {
var folder = _this.selectedFolder();
return folder ? folder.localName() : '';
});
_this.dangerDescHtml = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].computed(function () {
return Object(Common_Translator__WEBPACK_IMPORTED_MODULE_5__["i18n"])('POPUPS_CLEAR_FOLDER/DANGER_DESC_HTML_1', {
'FOLDER': _this.folderNameForClear()
});
});
return _this;
}
var _proto = FolderClearPopupView.prototype;
_proto.clearCommand = function clearCommand() {
var _this2 = this;
var folderToClear = this.selectedFolder();
if (folderToClear) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].message(null);
Stores_User_Message__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].messageList([]);
this.clearingProcess(true);
folderToClear.messageCountAll(0);
folderToClear.messageCountUnread(0);
Object(Common_Cache__WEBPACK_IMPORTED_MODULE_6__[/* setFolderHash */ "q"])(folderToClear.fullNameRaw, '');
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].folderClear(function (result, data) {
_this2.clearingProcess(false);
if (Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === result && data && data.Result) {
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__[/* getApp */ "a"])().reloadMessageList(true);
_this2.cancelCommand();
} else {
if (data && data.ErrorCode) {
_this2.clearingError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_5__["getNotification"])(data.ErrorCode));
} else {
_this2.clearingError(Object(Common_Translator__WEBPACK_IMPORTED_MODULE_5__["getNotification"])(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["Notification"].MailServerError));
}
}
}, folderToClear.fullNameRaw);
}
};
_proto.clearPopup = function clearPopup() {
this.clearingProcess(false);
this.selectedFolder(null);
};
_proto.onShow = function onShow(folder) {
this.clearPopup();
if (folder) {
this.selectedFolder(folder);
}
};
return FolderClearPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "clearCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "clearCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 555 */
/*!******************************************!*\
!*** ./dev/View/Popup/AdvancedSearch.js ***!
\******************************************/
/*! exports provided: AdvancedSearchPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AdvancedSearchPopupView", function() { return AdvancedSearchPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return AdvancedSearchPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split.js */ 203);
/* harmony import */ var core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.array.join.js */ 77);
/* harmony import */ var core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join_js__WEBPACK_IMPORTED_MODULE_5__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_6__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Common_Translator__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Common/Translator */ 9);
/* harmony import */ var Common_Momentor__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Common/Momentor */ 61);
/* harmony import */ var Stores_User_Message__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Stores/User/Message */ 13);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var AdvancedSearchPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["popup"])({
name: 'View/Popup/AdvancedSearch',
templateID: 'PopupsAdvancedSearch'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_12__["command"])(), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AdvancedSearchPopupView, _AbstractViewNext);
function AdvancedSearchPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.fromFocus = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.from = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable('');
_this.to = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable('');
_this.subject = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable('');
_this.text = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable('');
_this.selectedDateValue = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(-1);
_this.hasAttachment = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.starred = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.unseen = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].observable(false);
_this.selectedDates = ko__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].computed(function () {
Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["trigger"])();
return [{
id: -1,
name: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SEARCH/LABEL_ADV_DATE_ALL')
}, {
id: 3,
name: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SEARCH/LABEL_ADV_DATE_3_DAYS')
}, {
id: 7,
name: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SEARCH/LABEL_ADV_DATE_7_DAYS')
}, {
id: 30,
name: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SEARCH/LABEL_ADV_DATE_MONTH')
}, {
id: 90,
name: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SEARCH/LABEL_ADV_DATE_3_MONTHS')
}, {
id: 180,
name: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SEARCH/LABEL_ADV_DATE_6_MONTHS')
}, {
id: 365,
name: Object(Common_Translator__WEBPACK_IMPORTED_MODULE_9__["i18n"])('SEARCH/LABEL_ADV_DATE_YEAR')
}];
});
return _this;
}
var _proto = AdvancedSearchPopupView.prototype;
_proto.searchCommand = function searchCommand() {
var search = this.buildSearchString();
if ('' !== search) {
Stores_User_Message__WEBPACK_IMPORTED_MODULE_11__[/* default */ "a"].mainMessageListSearch(search);
}
this.cancelCommand();
};
_proto.parseSearchStringValue = function parseSearchStringValue(search) {
var _this2 = this;
var parts = (search || '').split(/[\s]+/g);
___WEBPACK_IMPORTED_MODULE_6___default.a.each(parts, function (part) {
switch (part) {
case 'has:attachment':
_this2.hasAttachment(true);
break;
case 'is:unseen,flagged':
_this2.starred(true);
/* falls through */
case 'is:unseen':
_this2.unseen(true);
break;
// no default
}
});
};
_proto.buildSearchStringValue = function buildSearchStringValue(value) {
if (-1 < value.indexOf(' ')) {
value = '"' + value + '"';
}
return value;
};
_proto.buildSearchString = function buildSearchString() {
var result = [],
from_ = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(this.from()),
to = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(this.to()),
subject = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(this.subject()),
text = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(this.text()),
isPart = [],
hasPart = [];
if (from_ && '' !== from_) {
result.push('from:' + this.buildSearchStringValue(from_));
}
if (to && '' !== to) {
result.push('to:' + this.buildSearchStringValue(to));
}
if (subject && '' !== subject) {
result.push('subject:' + this.buildSearchStringValue(subject));
}
if (this.hasAttachment()) {
hasPart.push('attachment');
}
if (this.unseen()) {
isPart.push('unseen');
}
if (this.starred()) {
isPart.push('flagged');
}
if (0 < hasPart.length) {
result.push('has:' + hasPart.join(','));
}
if (0 < isPart.length) {
result.push('is:' + isPart.join(','));
}
if (-1 < this.selectedDateValue()) {
result.push('date:' + Object(Common_Momentor__WEBPACK_IMPORTED_MODULE_10__["searchSubtractFormatDateHelper"])(this.selectedDateValue()) + '/');
}
if (text && '' !== text) {
result.push('text:' + this.buildSearchStringValue(text));
}
return Object(Common_Utils__WEBPACK_IMPORTED_MODULE_8__["trim"])(result.join(' '));
};
_proto.clearPopup = function clearPopup() {
this.from('');
this.to('');
this.subject('');
this.text('');
this.selectedDateValue(-1);
this.hasAttachment(false);
this.starred(false);
this.unseen(false);
this.fromFocus(true);
};
_proto.onShow = function onShow(search) {
this.clearPopup();
this.parseSearchStringValue(search);
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.fromFocus(true);
};
return AdvancedSearchPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_13__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "searchCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "searchCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 556 */
/*!*****************************************!*\
!*** ./dev/View/Popup/TwoFactorTest.js ***!
\*****************************************/
/*! exports provided: TwoFactorTestPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TwoFactorTestPopupView", function() { return TwoFactorTestPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return TwoFactorTestPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Globals__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Common/Globals */ 6);
/* harmony import */ var Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Remote/User/Ajax */ 16);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var TwoFactorTestPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_7__["popup"])({
name: 'View/Popup/TwoFactorTest',
templateID: 'PopupsTwoFactorTest'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_7__["command"])(function (self) {
return '' !== self.code() && !self.testing();
}), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(TwoFactorTestPopupView, _AbstractViewNext);
function TwoFactorTestPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.code = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable('');
_this.code.focused = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
_this.code.status = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(null);
_this.koTestedTrigger = null;
_this.testing = ko__WEBPACK_IMPORTED_MODULE_3__[/* default */ "a"].observable(false);
return _this;
}
var _proto = TwoFactorTestPopupView.prototype;
_proto.testCodeCommand = function testCodeCommand() {
var _this2 = this;
this.testing(true);
Remote_User_Ajax__WEBPACK_IMPORTED_MODULE_6__[/* default */ "a"].testTwoFactor(function (result, data) {
_this2.testing(false);
_this2.code.status(Common_Enums__WEBPACK_IMPORTED_MODULE_4__["StorageResultType"].Success === result && data && !!data.Result);
if (_this2.koTestedTrigger && _this2.code.status()) {
_this2.koTestedTrigger(true);
}
}, this.code());
};
_proto.clearPopup = function clearPopup() {
this.code('');
this.code.focused(false);
this.code.status(null);
this.testing(false);
this.koTestedTrigger = null;
};
_proto.onShow = function onShow(koTestedTrigger) {
this.clearPopup();
this.koTestedTrigger = koTestedTrigger;
};
_proto.onShowWithDelay = function onShowWithDelay() {
if (!Common_Globals__WEBPACK_IMPORTED_MODULE_5__["bMobileDevice"]) {
this.code.focused(true);
}
};
return TwoFactorTestPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_8__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "testCodeCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "testCodeCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 557 */
/*!*****************************************!*\
!*** ./dev/View/Popup/AddOpenPgpKey.js ***!
\*****************************************/
/*! exports provided: AddOpenPgpKeyPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AddOpenPgpKeyPopupView", function() { return AddOpenPgpKeyPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return AddOpenPgpKeyPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ 45);
/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ 59);
/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var AddOpenPgpKeyPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["popup"])({
name: 'View/Popup/AddOpenPgpKey',
templateID: 'PopupsAddOpenPgpKey'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_9__["command"])(), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(AddOpenPgpKeyPopupView, _AbstractViewNext);
function AddOpenPgpKeyPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.key = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.key.focus = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.key.error = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.key.errorMessage = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.key.subscribe(function () {
_this.key.error(false);
_this.key.errorMessage('');
});
return _this;
}
var _proto = AddOpenPgpKeyPopupView.prototype;
_proto.addOpenPgpKeyCommand = function addOpenPgpKeyCommand() {
// eslint-disable-next-line max-len
var reg = /[-]{3,6}BEGIN[\s]PGP[\s](PRIVATE|PUBLIC)[\s]KEY[\s]BLOCK[-]{3,6}[\s\S]+?[-]{3,6}END[\s]PGP[\s](PRIVATE|PUBLIC)[\s]KEY[\s]BLOCK[-]{3,6}/gi,
openpgpKeyring = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_7__[/* default */ "a"].openpgpKeyring;
var keyTrimmed = Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["trim"])(this.key());
if (/[\n]/.test(keyTrimmed)) {
keyTrimmed = keyTrimmed.replace(/[\r]+/g, '').replace(/[\n]{2,}/g, '\n\n');
}
this.key.error('' === keyTrimmed);
this.key.errorMessage('');
if (!openpgpKeyring || this.key.error()) {
return false;
}
var match = null,
count = 30,
done = false;
do {
match = reg.exec(keyTrimmed);
if (match && 0 < count) {
if (match[0] && match[1] && match[2] && match[1] === match[2]) {
var err = null;
if ('PRIVATE' === match[1]) {
err = openpgpKeyring.privateKeys.importKey(match[0]);
} else if ('PUBLIC' === match[1]) {
err = openpgpKeyring.publicKeys.importKey(match[0]);
}
if (err) {
this.key.error(true);
this.key.errorMessage(err && err[0] ? '' + err[0] : '');
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["log"])(err);
}
}
count -= 1;
done = false;
} else {
done = true;
}
} while (!done);
openpgpKeyring.store();
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_8__[/* getApp */ "a"])().reloadOpenPgpKeys();
if (this.key.error()) {
return false;
}
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_6__["delegateRun"])(this, 'cancelCommand');
return true;
};
_proto.clearPopup = function clearPopup() {
this.key('');
this.key.error(false);
this.key.errorMessage('');
};
_proto.onShow = function onShow() {
this.clearPopup();
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.key.focus(true);
};
return AddOpenPgpKeyPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_10__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "addOpenPgpKeyCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "addOpenPgpKeyCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 558 */
/*!*****************************************!*\
!*** ./dev/View/Popup/NewOpenPgpKey.js ***!
\*****************************************/
/*! exports provided: NewOpenPgpKeyPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NewOpenPgpKeyPopupView", function() { return NewOpenPgpKeyPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return NewOpenPgpKeyPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/applyDecoratedDescriptor */ 19);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor */ 20);
/* harmony import */ var _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ 48);
/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_3__);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! _ */ 3);
/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(___WEBPACK_IMPORTED_MODULE_4__);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! Stores/User/Pgp */ 41);
/* harmony import */ var Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! Helper/Apps/User */ 22);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _dec2, _class, _class2;
var NewOpenPgpKeyPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["popup"])({
name: 'View/Popup/NewOpenPgpKey',
templateID: 'PopupsNewOpenPgpKey'
}), _dec2 = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_10__["command"])(), _dec(_class = (_class2 = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(NewOpenPgpKeyPopupView, _AbstractViewNext);
function NewOpenPgpKeyPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.email = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.email.focus = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.email.error = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.name = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.password = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.keyBitLength = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].BitLength2048);
_this.submitRequest = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable(false);
_this.submitError = ko__WEBPACK_IMPORTED_MODULE_5__[/* default */ "a"].observable('');
_this.email.subscribe(function () {
_this.email.error(false);
});
return _this;
}
var _proto = NewOpenPgpKeyPopupView.prototype;
_proto.generateOpenPgpKeyCommand = function generateOpenPgpKeyCommand() {
var _this2 = this;
var userId = {},
openpgpKeyring = Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].openpgpKeyring;
this.email.error('' === Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(this.email()));
if (!openpgpKeyring || this.email.error()) {
return false;
}
userId.email = this.email();
if ('' !== this.name()) {
userId.name = this.name();
}
this.submitRequest(true);
this.submitError('');
___WEBPACK_IMPORTED_MODULE_4___default.a.delay(function () {
try {
Stores_User_Pgp__WEBPACK_IMPORTED_MODULE_8__[/* default */ "a"].openpgp.generateKey({
userIds: [userId],
numBits: Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["pInt"])(_this2.keyBitLength()),
passphrase: Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["trim"])(_this2.password())
}).then(function (keyPair) {
_this2.submitRequest(false);
if (keyPair && keyPair.privateKeyArmored) {
openpgpKeyring.privateKeys.importKey(keyPair.privateKeyArmored);
openpgpKeyring.publicKeys.importKey(keyPair.publicKeyArmored);
openpgpKeyring.store();
Object(Helper_Apps_User__WEBPACK_IMPORTED_MODULE_9__[/* getApp */ "a"])().reloadOpenPgpKeys();
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["delegateRun"])(_this2, 'cancelCommand');
}
}).catch(function (e) {
_this2.submitRequest(false);
_this2.showError(e);
});
} catch (e) {
_this2.submitRequest(false);
_this2.showError(e);
}
}, Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].Time100ms);
return true;
};
_proto.showError = function showError(e) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_7__["log"])(e);
if (e && e.message) {
this.submitError(e.message);
}
};
_proto.clearPopup = function clearPopup() {
this.name('');
this.password('');
this.email('');
this.email.error(false);
this.keyBitLength(Common_Enums__WEBPACK_IMPORTED_MODULE_6__["Magics"].BitLength2048);
this.submitError('');
};
_proto.onShow = function onShow() {
this.clearPopup();
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.email.focus(true);
};
return NewOpenPgpKeyPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_11__[/* AbstractViewNext */ "a"]), (Object(_babel_runtime_corejs3_helpers_esm_applyDecoratedDescriptor__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(_class2.prototype, "generateOpenPgpKeyCommand", [_dec2], _babel_runtime_corejs3_core_js_stable_object_get_own_property_descriptor__WEBPACK_IMPORTED_MODULE_2___default()(_class2.prototype, "generateOpenPgpKeyCommand"), _class2.prototype)), _class2)) || _class);
/***/ }),
/* 559 */
/*!******************************************!*\
!*** ./dev/View/Popup/ViewOpenPgpKey.js ***!
\******************************************/
/*! exports provided: ViewOpenPgpKeyPopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ViewOpenPgpKeyPopupView", function() { return ViewOpenPgpKeyPopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ViewOpenPgpKeyPopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! key */ 21);
/* harmony import */ var key__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(key__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var Common_Enums__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Common/Enums */ 0);
/* harmony import */ var Common_Utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Common/Utils */ 2);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var ViewOpenPgpKeyPopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_5__["popup"])({
name: 'View/Popup/ViewOpenPgpKey',
templateID: 'PopupsViewOpenPgpKey'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(ViewOpenPgpKeyPopupView, _AbstractViewNext);
function ViewOpenPgpKeyPopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.key = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.keyDom = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(null);
_this.sDefaultKeyScope = Common_Enums__WEBPACK_IMPORTED_MODULE_3__["KeyState"].PopupViewOpenPGP;
return _this;
}
var _proto = ViewOpenPgpKeyPopupView.prototype;
_proto.clearPopup = function clearPopup() {
this.key('');
};
_proto.selectKey = function selectKey() {
var el = this.keyDom();
if (el) {
Object(Common_Utils__WEBPACK_IMPORTED_MODULE_4__["selectElement"])(el);
}
};
_proto.onShow = function onShow(openPgpKey) {
this.clearPopup();
if (openPgpKey) {
this.key(openPgpKey.armor);
}
};
_proto.onBuild = function onBuild() {
var _this2 = this;
key__WEBPACK_IMPORTED_MODULE_2___default()('ctrl+a, command+a', Common_Enums__WEBPACK_IMPORTED_MODULE_3__["KeyState"].PopupViewOpenPGP, function () {
_this2.selectKey();
return false;
});
};
return ViewOpenPgpKeyPopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_6__[/* AbstractViewNext */ "a"])) || _class);
/***/ }),
/* 560 */
/*!***************************************!*\
!*** ./dev/View/Popup/WelcomePage.js ***!
\***************************************/
/*! exports provided: WelcomePagePopupView, default */
/*! all exports used */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "WelcomePagePopupView", function() { return WelcomePagePopupView; });
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return WelcomePagePopupView; });
/* harmony import */ var _babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime-corejs3/helpers/esm/inheritsLoose */ 10);
/* harmony import */ var ko__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ko */ 1);
/* harmony import */ var Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! Promises/User/Ajax */ 93);
/* harmony import */ var Knoin_Knoin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! Knoin/Knoin */ 8);
/* harmony import */ var Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! Knoin/AbstractViewNext */ 25);
var _dec, _class;
var WelcomePagePopupView = (_dec = Object(Knoin_Knoin__WEBPACK_IMPORTED_MODULE_3__["popup"])({
name: 'View/Popup/WelcomePage',
templateID: 'PopupsWelcomePage'
}), _dec(_class = /*#__PURE__*/function (_AbstractViewNext) {
Object(_babel_runtime_corejs3_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(WelcomePagePopupView, _AbstractViewNext);
function WelcomePagePopupView() {
var _this;
_this = _AbstractViewNext.call(this) || this;
_this.welcomePageURL = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable('');
_this.closeFocused = ko__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"].observable(false);
return _this;
}
var _proto = WelcomePagePopupView.prototype;
_proto.clearPopup = function clearPopup() {
this.welcomePageURL('');
this.closeFocused(false);
}
/**
* @param {string} sUrl
* @returns {void}
*/
;
_proto.onShow = function onShow(sUrl) {
this.clearPopup();
this.welcomePageURL(sUrl);
};
_proto.onShowWithDelay = function onShowWithDelay() {
this.closeFocused(true);
};
_proto.onHide = function onHide() {
Promises_User_Ajax__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"].welcomeClose();
};
return WelcomePagePopupView;
}(Knoin_AbstractViewNext__WEBPACK_IMPORTED_MODULE_4__[/* AbstractViewNext */ "a"])) || _class);
/***/ })
/******/ ]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbW1vbi9FbnVtcy5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvRXh0ZXJuYWwva28uanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbW1vbi9VdGlscy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5kb3cuX1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvd1wiIiwid2VicGFjazovLy8uL2Rldi9TdG9yYWdlL1NldHRpbmdzLmpzIiwid2VicGFjazovLy8uL2Rldi9Db21tb24vR2xvYmFscy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5kb3cualF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vLy4vZGV2L0tub2luL0tub2luLmpzIiwid2VicGFjazovLy8uL2Rldi9Db21tb24vVHJhbnNsYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2VzbS9pbmhlcml0c0xvb3NlLmpzIiwid2VicGFjazovLy8uL2Rldi9TdG9yZXMvVXNlci9Gb2xkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvaW5zdGFuY2UvZmluZC5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU3RvcmVzL1VzZXIvTWVzc2FnZS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tbW9uL0NhY2hlLmpzIiwid2VicGFjazovLy8uL2Rldi9Db21tb24vTGlua3MuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1JlbW90ZS9Vc2VyL0FqYXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvaW5zdGFuY2UvbWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2hlbHBlcnMvZXNtL2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy5rZXlcIiIsIndlYnBhY2s6Ly8vLi9kZXYvSGVscGVyL0FwcHMvVXNlci5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tbW9uL0V2ZW50cy5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tbW9uL0NvbnN0cy5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvS25vaW4vQWJzdHJhY3RWaWV3TmV4dC5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU3RvcmVzL1NvY2lhbC5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU3RvcmVzL1VzZXIvQXBwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2luc3RhbmNlL2ZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9oZWxwZXJzL2VzbS9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbXBvbmVudC9BYnN0cmFjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9zZXQtdGltZW91dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9leHBvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1N0b3Jlcy9Vc2VyL1NldHRpbmdzLmpzIiwid2VicGFjazovLy8uL2Rldi9Db21tb24vUGx1Z2lucy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZmFpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sLmpzIiwid2VicGFjazovLy8uL2Rldi9TdG9yZXMvVXNlci9QZ3AuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FuLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1N0b3Jlcy9Vc2VyL0FjY291bnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLm5hbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvcGF0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZGVzY3JpcHRvcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaGFzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kZXNjcmlwdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL3NldC1pbnRlcnZhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hbi1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcucmVwbGFjZS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU3RvcmFnZS9DbGllbnQuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbW1vbi9Nb21lbnRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9wcm9taXNlLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy5oYXNoZXJcIiIsIndlYnBhY2s6Ly8vLi9kZXYvSGVscGVyL01lc3NhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2V4cG9ydC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvS25vaW4vQWJzdHJhY3RNb2RlbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYS1mdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lbnRyeS12aXJ0dWFsLmpzIiwid2VicGFjazovLy8uL2Rldi9TdG9yZXMvTGFuZ3VhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLXJhdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9nZXQtYnVpbHQtaW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuam9pbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L01vZGVsL0VtYWlsLmpzIiwid2VicGFjazovLy8uL2Rldi9Db21tb24vQXVkaW8uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLWxlbmd0aC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaXMtcHVyZS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tcG9uZW50L0Fic3RyYWN0SW5wdXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3RvLW9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy90by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvY2xhc3NvZi5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvUHJvbWlzZXMvVXNlci9BamF4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LWdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pcy1wdXJlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93Lm1vbWVudFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndpbmRvdy5wcm9ncmVzc0pzXCIiLCJ3ZWJwYWNrOi8vLy4vZGV2L1N0b3Jlcy9Vc2VyL0lkZW50aXR5LmpzIiwid2VicGFjazovLy8uL2Rldi9TdG9yZXMvVXNlci9Db250YWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zaGFyZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2l0ZXJhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvcmVkZWZpbmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW51bS1idWcta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXRlcmF0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2NsYXNzb2YtcmF3LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvdG8tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMucmVnZXhwLnRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hcnJheS1tZXRob2QtdXNlcy10by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbW1vbi9KYXNzbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9pbnN0YW5jZS92YWx1ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1N0b3Jlcy9UaGVtZS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU3RvcmVzL1VzZXIvTm90aWZpY2F0aW9uLmpzIiwid2VicGFjazovLy8od2VicGFjaykvYnVpbGRpbi9nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2luZGV4ZWQtb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2EtZnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvQ29tcG9zZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tcHJpbWl0aXZlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VpZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zaGFyZWQta2V5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3NoYXJlZC1zdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy90by1pbnRlZ2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2hpZGRlbi1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zZXQtdG8tc3RyaW5nLXRhZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9wZXJmb3JtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0tub2luL0Fic3RyYWN0U2NyZWVuLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2luc3RhbmNlL3RyaW0uanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93LnNzbVwiIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy90by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1N0b3JhZ2UvUmFpbkxvb3AuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3BhdGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2VuZ2luZS11c2VyLWFnZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkdmFuY2Utc3RyaW5nLWluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2FycmF5LWl0ZXJhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1hcnJheS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzLXN0YWJsZS9pbnN0YW5jZS9jb25jYXQuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93LmNyb3Nzcm9hZHNcIiIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tcG9uZW50L0Fic3RyYWN0Q2hlY2tib3guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2VtYWlsanMtYWRkcmVzc3BhcnNlci9kaXN0L2FkZHJlc3NwYXJzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1wcm9wZXJ0eS1pcy1lbnVtZXJhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtZm9yY2VkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jbGFzc29mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9pdGVyYXRvcnMtY29yZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvd2ViLnRpbWVycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvc2hhcmVkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3VpZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2h0bWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9uYXRpdmUtcHJvbWlzZS1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zcGVjaWVzLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3Rhc2suanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZW5naW5lLWlzLWlvcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2l0ZXJhdG9ycy1jb3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvcmVnZXhwLWZsYWdzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmxpbmsuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93Lkp1YVwiIiwid2VicGFjazovLy8uL2Rldi9TdG9yZXMvVXNlci9UZW1wbGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvTW9kZWwvQXR0YWNobWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvbmF0aXZlLXdlYWstbWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9jb3B5LWNvbnN0cnVjdG9yLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL293bi1rZXlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1uYW1lcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctbXVsdGlieXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9kb20taXRlcmFibGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9yZWdleHAtc3RpY2t5LWhlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbXBvbmVudC9DaGVja2JveC5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tbW9uL0h0bWxFZGl0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy1zdGFibGUvaW5zdGFuY2UvcmVkdWNlLmpzIiwid2VicGFjazovLy8uL2Rldi9FeHRlcm5hbC9PcGVudGlwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9waWthZGF5L3Bpa2FkYXkuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93LkF1dG9saW5rZXJcIiIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tbW9uL01pbWUuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1N0b3Jlcy9Vc2VyL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvb2JqZWN0LWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaHRtbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yLmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1BvcHVwL0Fzay5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU3RvcmVzL1VzZXIvUXVvdGEuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwid2luZG93LmlmdmlzaWJsZVwiIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2lzLXJlZ2V4cC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hLXBvc3NpYmxlLXByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9zZXQtdGltZW91dC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9wcm9taXNlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvcHJvbWlzZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3NldC1nbG9iYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hcnJheS1pbmNsdWRlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pcy1hcnJheS1pdGVyYXRvci1tZXRob2QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvdXNlLXN5bWJvbC1hcy11aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvZ2V0LWl0ZXJhdG9yLW1ldGhvZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9pdGVyYXRvci1jbG9zZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMub2JqZWN0LnRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucHJvbWlzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9yZWRlZmluZS1hbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvb2JqZWN0LXRvLXN0cmluZy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zZXQtc3BlY2llcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hbi1pbnN0YW5jZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvbWljcm90YXNrLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2VuZ2luZS1pcy13ZWJvcy13ZWJraXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvaG9zdC1yZXBvcnQtZXJyb3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL25hdGl2ZS13ZWFrLW1hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucHJvbWlzZS5hbGwtc2V0dGxlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMucHJvbWlzZS5hbnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLnByb21pc2UuZmluYWxseS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuc3RyaW5nLml0ZXJhdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2dldC1zdWJzdGl0dXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvc2V0LWludGVydmFsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL3doaXRlc3BhY2VzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2FycmF5LXNwZWNpZXMtY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2luc3RhbmNlL3JlZHVjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvTGFuZ3VhZ2VzLmpzIiwid2VicGFjazovLy8uL2Rldi9ib290c3RyYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy9vYmplY3QvY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2hlbHBlcnMvZXNtL3NldFByb3RvdHlwZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMvb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1N0b3Jlcy9BYnN0cmFjdEFwcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzL2luc3RhbmNlL2Zvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMvb2JqZWN0L2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy9pbnN0YW5jZS9yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy9pbnN0YW5jZS9yZXZlcnNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMvaW5zdGFuY2Uvc2xpY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL2Rldi9SZW1vdGUvQWJzdHJhY3RBamF4LmpzIiwid2VicGFjazovLy8uL2Rldi9TY3JlZW4vQWJzdHJhY3RTZXR0aW5ncy5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQXBwL0Fic3RyYWN0LmpzIiwid2VicGFjazovLy8uL2Rldi9Lbm9pbi9BYnN0cmFjdEJvb3QuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbXBvbmVudC9BYnN0cmFjdFJhZGlvLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AYmFiZWwvcnVudGltZS1jb3JlanMzL2NvcmUtanMtc3RhYmxlL2luc3RhbmNlL2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L01vZGVsL0NvbXBvc2VBdHRhY2htZW50LmpzIiwid2VicGFjazovLy8uL2Rldi9Nb2RlbC9Db250YWN0UHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuc2VhcmNoLmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1BvcHVwL0ZvbGRlclN5c3RlbS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvUHJvbWlzZXMvQWJzdHJhY3RCYXNpYy5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvVmlldy9Vc2VyL0Fic3RyYWN0U3lzdGVtRHJvcERvd24uanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbW1vbi9TZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvTW9kZWwvTWVzc2FnZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvanMtY29va2llL3NyYy9qcy5jb29raWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2NyZWF0ZS1odG1sLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9zdHJpbmctaHRtbC1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvdHJpbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2luc3RhbmNlL3RyaW0uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9zdHJpbmcvdmlydHVhbC90cmltLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5zdHJpbmcudHJpbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zdHJpbmctdHJpbS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ludGVybmFscy9zdHJpbmctdHJpbS1mb3JjZWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvZmluZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2luc3RhbmNlL2ZpbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9hcnJheS92aXJ0dWFsL2ZpbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLmFycmF5LmZpbmQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvY29uY2F0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvaW5zdGFuY2UvY29uY2F0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvYXJyYXkvdmlydHVhbC9jb25jYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLmFycmF5LmNvbmNhdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS92YWx1ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvYXJyYXkvdmlydHVhbC92YWx1ZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9hcnJheS92aXJ0dWFsL3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS9yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9hcnJheS92aXJ0dWFsL3JlZHVjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuYXJyYXkucmVkdWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2FycmF5LXJlZHVjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS9tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9pbnN0YW5jZS9tYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9hcnJheS92aXJ0dWFsL21hcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuYXJyYXkubWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvaXMtYXJyYXkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2ludGVybmFscy9hcnJheS1mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9pbnRlcm5hbHMvc2FtZS12YWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvSHRtbC9QcmV2aWV3TWVzc2FnZS5odG1sIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL2ZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2luc3RhbmNlL2ZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2FycmF5L3ZpcnR1YWwvZmlsdGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9mZWF0dXJlcy9vYmplY3QvY3JlYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvb2JqZWN0L2NyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMub2JqZWN0LmNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ZlYXR1cmVzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvb2JqZWN0L3NldC1wcm90b3R5cGUtb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLm9iamVjdC5zZXQtcHJvdG90eXBlLW9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZmVhdHVyZXMvaW5zdGFuY2UvZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvYXJyYXkvdmlydHVhbC9mb3ItZWFjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2FycmF5L3ZpcnR1YWwvZm9yLWVhY2guanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9tb2R1bGVzL2VzLmFycmF5LmZvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvaW50ZXJuYWxzL2FycmF5LWZvci1lYWNoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZmVhdHVyZXMvb2JqZWN0L2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9vYmplY3Qva2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMub2JqZWN0LmtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9mZWF0dXJlcy9pbnN0YW5jZS9yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9mZWF0dXJlcy9pbnN0YW5jZS9yZXZlcnNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvaW5zdGFuY2UvcmV2ZXJzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2VzL2FycmF5L3ZpcnR1YWwvcmV2ZXJzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL21vZHVsZXMvZXMuYXJyYXkucmV2ZXJzZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ZlYXR1cmVzL2luc3RhbmNlL3NsaWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvZXMvaW5zdGFuY2Uvc2xpY2UuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9hcnJheS92aXJ0dWFsL3NsaWNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5hcnJheS5zbGljZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL2ZlYXR1cmVzL29iamVjdC9kZWZpbmUtcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5vYmplY3QuZGVmaW5lLXByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvc3RhYmxlL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3IuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzLXB1cmUvbW9kdWxlcy9lcy5vYmplY3QuZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yLmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1BvcHVwL0FjY291bnQuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvSWRlbnRpdHkuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbXBvbmVudC9TYXZlVHJpZ2dlci5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tcG9uZW50L0lucHV0LmpzIiwid2VicGFjazovLy8uL2Rldi9Db21wb25lbnQvU2VsZWN0LmpzIiwid2VicGFjazovLy8uL2Rldi9Db21wb25lbnQvUmFkaW8uanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbXBvbmVudC9UZXh0QXJlYS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tcG9uZW50L0RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbXBvbmVudC9TY3JpcHQuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbXBvbmVudC9NYXRlcmlhbERlc2lnbi9DaGVja2JveC5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQXBwL1VzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L0NvbW1vbi9CYXNlNjQuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1Byb21pc2VzL1VzZXIvUG9wdWxhdG9yLmpzIiwid2VicGFjazovLy8uL2Rldi9Nb2RlbC9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L01vZGVsL0ZpbHRlckNvbmRpdGlvbi5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5kb3cucXJcIiIsIndlYnBhY2s6Ly8vLi9kZXYvVmlldy9Qb3B1cC9LZXlib2FyZFNob3J0Y3V0c0hlbHAuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvQ29udGFjdHMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvRm9sZGVyQ3JlYXRlLmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1BvcHVwL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvVmlldy9Qb3B1cC9Ud29GYWN0b3JDb25maWd1cmF0aW9uLmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1BvcHVwL1RlbXBsYXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9sb3phZC9kaXN0L2xvemFkLm1pbi5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvQ29tbW9uL0NsaWVudFN0b3JhZ2VEcml2ZXIvQ29va2llLmpzIiwid2VicGFjazovLy8uL2Rldi9Db21tb24vQ2xpZW50U3RvcmFnZURyaXZlci9Mb2NhbFN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L01vZGVsL0ZvbGRlci5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvUHJvbWlzZXMvQWJzdHJhY3RBamF4LmpzIiwid2VicGFjazovLy8uL2Rldi9Nb2RlbC9BY2NvdW50LmpzIiwid2VicGFjazovLy8uL2Rldi9Nb2RlbC9JZGVudGl0eS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvTW9kZWwvVGVtcGxhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L01vZGVsL09wZW5QZ3BLZXkuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NjcmVlbi9Vc2VyL0xvZ2luLmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1VzZXIvTG9naW4uanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NjcmVlbi9Vc2VyL01haWxCb3guanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvVXNlci9NYWlsQm94L1N5c3RlbURyb3BEb3duLmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1VzZXIvTWFpbEJveC9Gb2xkZXJMaXN0LmpzIiwid2VicGFjazovLy8uL2Rldi9Nb2RlbC9Db250YWN0LmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1VzZXIvTWFpbEJveC9NZXNzYWdlTGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvVmlldy9Vc2VyL01haWxCb3gvTWVzc2FnZVZpZXcuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NjcmVlbi9Vc2VyL1NldHRpbmdzLmpzIiwid2VicGFjazovLy8uL2Rldi9TZXR0aW5ncy9Vc2VyL0dlbmVyYWwuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NldHRpbmdzL1VzZXIvQ29udGFjdHMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NldHRpbmdzL1VzZXIvQWNjb3VudHMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NldHRpbmdzL1VzZXIvRmlsdGVycy5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU2V0dGluZ3MvVXNlci9TZWN1cml0eS5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvU2V0dGluZ3MvVXNlci9Tb2NpYWwuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NldHRpbmdzL1VzZXIvQ2hhbmdlUGFzc3dvcmQuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NldHRpbmdzL1VzZXIvVGVtcGxhdGVzLmpzIiwid2VicGFjazovLy8uL2Rldi9TZXR0aW5ncy9Vc2VyL0ZvbGRlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1NldHRpbmdzL1VzZXIvVGhlbWVzLmpzIiwid2VicGFjazovLy8uL2Rldi9TZXR0aW5ncy9Vc2VyL09wZW5QZ3AuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvVXNlci9TZXR0aW5ncy9TeXN0ZW1Ecm9wRG93bi5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvVmlldy9Vc2VyL1NldHRpbmdzL01lbnUuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvVXNlci9TZXR0aW5ncy9QYW5lLmpzIiwid2VicGFjazovLy8uL2Rldi9hcHAuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvTWVzc2FnZU9wZW5QZ3AuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2Uva2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy1wdXJlL3N0YWJsZS9hcnJheS92aXJ0dWFsL2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMtcHVyZS9lcy9hcnJheS92aXJ0dWFsL2tleXMuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvQ29tcG9zZU9wZW5QZ3AuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvRm9sZGVyQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvQWR2YW5jZWRTZWFyY2guanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvVHdvRmFjdG9yVGVzdC5qcyIsIndlYnBhY2s6Ly8vLi9kZXYvVmlldy9Qb3B1cC9BZGRPcGVuUGdwS2V5LmpzIiwid2VicGFjazovLy8uL2Rldi9WaWV3L1BvcHVwL05ld09wZW5QZ3BLZXkuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvVmlld09wZW5QZ3BLZXkuanMiLCJ3ZWJwYWNrOi8vLy4vZGV2L1ZpZXcvUG9wdXAvV2VsY29tZVBhZ2UuanMiXSwibmFtZXMiOlsiRmlsZVR5cGUiLCJTdG9yYWdlUmVzdWx0VHlwZSIsIkZvY3VzZWQiLCJTdGF0ZSIsIlN0YXRlVHlwZSIsIkNhcGEiLCJLZXlTdGF0ZSIsIkZvbGRlclR5cGUiLCJTZXJ2ZXJGb2xkZXJUeXBlIiwiTG9naW5TaWduTWVUeXBlQXNTdHJpbmciLCJMb2dpblNpZ25NZVR5cGUiLCJDb21wb3NlVHlwZSIsIlVwbG9hZEVycm9yQ29kZSIsIlNldFN5c3RlbUZvbGRlcnNOb3RpZmljYXRpb24iLCJDbGllbnRTaWRlS2V5TmFtZSIsIkV2ZW50S2V5Q29kZSIsIk1lc3NhZ2VTZXRBY3Rpb24iLCJNZXNzYWdlU2VsZWN0QWN0aW9uIiwiRGVza3RvcE5vdGlmaWNhdGlvbiIsIk1lc3NhZ2VQcmlvcml0eSIsIkVkaXRvckRlZmF1bHRUeXBlIiwiU2VydmVyU2VjdXJlIiwiU2VhcmNoRGF0ZVR5cGUiLCJTYXZlU2V0dGluZ3NTdGVwIiwiTGF5b3V0IiwiRmlsdGVyQ29uZGl0aW9uRmllbGQiLCJGaWx0ZXJDb25kaXRpb25UeXBlIiwiRmlsdGVyc0FjdGlvbiIsIkZpbHRlclJ1bGVzVHlwZSIsIlNpZ25lZFZlcmlmeVN0YXR1cyIsIkNvbnRhY3RQcm9wZXJ0eVR5cGUiLCJNYWdpY3MiLCJQb3J0cyIsIk5vdGlmaWNhdGlvbiIsImtvIiwid2luZG93IiwiJHdpbiIsIiQiLCJmRGlzcG9zYWxUb29sdGlwSGVscGVyIiwiZWxlbWVudCIsInV0aWxzIiwiZG9tTm9kZURpc3Bvc2FsIiwiYWRkRGlzcG9zZUNhbGxiYWNrIiwiX19vcGVudGlwIiwiZGVhY3RpdmF0ZSIsImJpbmRpbmdIYW5kbGVycyIsInVwZGF0ZVdpZHRoIiwiaW5pdCIsImZWYWx1ZUFjY2Vzc29yIiwiJGVsIiwiZlZhbHVlIiwiZkluaXQiLCJ3aWR0aCIsIlRpbWU1MDBtcyIsIm9uIiwib2ZmIiwiZWRpdG9yIiwiSHRtbEVkaXRvciIsInJlcXVpcmUiLCJkZWZhdWx0IiwiZlVwZGF0ZUVkaXRvclZhbHVlIiwiX19lZGl0b3IiLCJzZXRIdG1sT3JQbGFpbiIsImZVcGRhdGVLb1ZhbHVlIiwiZ2V0RGF0YVdpdGhIdG1sTWFyayIsImZPblJlYWR5IiwiaXNPYnNlcnZhYmxlIiwiX19mZXRjaEVkaXRvclZhbHVlIiwic3Vic2NyaWJlIiwianNvbiIsInRleHQiLCJKU09OIiwic3RyaW5naWZ5IiwidW53cmFwIiwidXBkYXRlIiwic2Nyb2xsZXJTaGFkb3dzIiwibGltaXQiLCJjb250IiwiZkZ1bmMiLCJfIiwidGhyb3R0bGUiLCJ0b2dnbGVDbGFzcyIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsInBpa2FkYXkiLCJmQWxsQmluZGluZ3NBY2Nlc3NvciIsInZpZXdNb2RlbCIsImJpbmRpbmdDb250ZXh0IiwidGV4dElucHV0IiwiUGlrYWRheSIsIl9fcGlrYWRheSIsImZpZWxkIiwidmlzaWJsZUFuaW1hdGVkIiwiYWRkQ2xhc3MiLCJzaG93IiwiaGlkZSIsImRlbGF5IiwicmVtb3ZlQ2xhc3MiLCJ0b29sdGlwIiwiaXNNb2JpbGUiLCJkYXRhIiwiaXNJMThOIiwiR2xvYmFscyIsImJNb2JpbGVEZXZpY2UiLCJzVmFsdWUiLCJpc0Z1bmN0aW9uIiwiT3BlbnRpcCIsImRyb3Bkb3duVmlzaWJpbGl0eSIsInYiLCJzZXRDb250ZW50IiwiYWN0aXZhdGUiLCJUcmFuc2xhdG9yIiwiaTE4biIsInRyaWdnZXIiLCJ0b29sdGlwRXJyb3JUaXAiLCJzdHlsZSIsImhpZGVPbiIsInRpcEpvaW50IiwiZG9jdW1lbnQiLCJ2YWx1ZSIsIm9wZW5UaXBzIiwiaXMiLCJUaW1lMTAwbXMiLCJyZWdpc3RyYXRlQm9vdHN0cmFwRHJvcGRvd24iLCJhQm9vdHN0cmFwRHJvcGRvd25zIiwicHVzaCIsImNsaWNrIiwiZGV0ZWN0RHJvcGRvd25WaXNpYmlsaXR5Iiwib3BlbkRyb3Bkb3duVHJpZ2dlciIsImhhc0NsYXNzIiwiZHJvcGRvd24iLCJmb2N1cyIsImRyb3Bkb3duQ2xvc2VyIiwiY2xvc2VzdCIsInBvcG92ZXIiLCJjc3N0ZXh0Iiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJyZXNpemVjcm9wIiwib25LZXlEb3duIiwiZXZlbnQiLCJjYWxsIiwib25FbnRlciIsInBhcnNlSW50Iiwia2V5Q29kZSIsIm9uU3BhY2UiLCJvblRhYiIsInNoaWZ0S2V5Iiwib25Fc2MiLCJjbGlja09uVHJ1ZSIsIm1vZGFsIiwiVXRpbHMiLCJ3aW5kb3dSZXNpemVDYWxsYmFjayIsIiRodG1sIiwibW9tZW50IiwibW9tZW50VG9Ob2RlIiwiaTE4bkluaXQiLCJpMThuVG9Ob2RlcyIsInRyYW5zbGF0b3JJbml0IiwiaTE4blVwZGF0ZSIsImxpbmsiLCJhdHRyIiwidGl0bGUiLCJ0ZXh0RiIsImluaXREb20iLCJpbml0Rml4ZWRUcmlnZ2VyIiwidmFsdWVzIiwidG9wIiwiJGNvbnRhaW5lciIsInJlc2l6ZSIsIm9mZnNldCIsImNzcyIsImluaXRSZXNpemVUcmlnZ2VyIiwib0VsZW1lbnQiLCJwSW50Iiwic2l6ZSIsImhlaWdodCIsImFwcGVuZERvbSIsImVtcHR5IiwiYXBwZW5kIiwiZHJhZ2dhYmxlIiwidHJpZ2dlclpvbmUiLCJzY3JvbGxTcGVlZCIsImZBbGxWYWx1ZUZ1bmMiLCJkcm9wcGFibGVTZWxlY3RvciIsImNvbmYiLCJkaXN0YW5jZSIsImhhbmRsZSIsImN1cnNvckF0IiwibGVmdCIsInJlZnJlc2hQb3NpdGlvbnMiLCJzY3JvbGwiLCJkcmFnIiwic3RvcCIsImhlbHBlciIsImVhY2giLCIkdGhpcyIsImJvdHRvbVBvcyIsImNsZWFySW50ZXJ2YWwiLCJwYWdlWCIsInBhZ2VZIiwibW92ZVVwIiwid2luZG93UmVzaXplIiwibW92ZURvd24iLCJ0YXJnZXQiLCJkYXRhRm9yIiwicmVtb3ZlSW5Gb2N1cyIsImRyb3BwYWJsZSIsImZWYWx1ZUZ1bmMiLCJmT3ZlckNhbGxiYWNrIiwiZHJvcHBhYmxlT3ZlciIsImZPdXRDYWxsYmFjayIsImRyb3BwYWJsZU91dCIsInRvbGVyYW5jZSIsImhvdmVyQ2xhc3MiLCJkcm9wIiwib3ZlciIsIm91dCIsInVpIiwibmFubyIsIlNldHRpbmdzIiwiYkRpc2FibGVOYW5vU2Nyb2xsIiwiYXBwU2V0dGluZ3NHZXQiLCJuYW5vU2Nyb2xsZXIiLCJpT1NOYXRpdmVTY3JvbGxpbmciLCJwcmV2ZW50UGFnZVNjcm9sbGluZyIsInNhdmVUcmlnZ2VyIiwidG9TdHJpbmciLCJlbmQiLCJlbWFpbHNUYWdzIiwiRW1haWxNb2RlbCIsImZBbGxCaW5kaW5ncyIsImZBdXRvQ29tcGxldGVTb3VyY2UiLCJhdXRvQ29tcGxldGVTb3VyY2UiLCJpbnB1dERlbGltaXRlcnMiLCJmRm9jdXNDYWxsYmFjayIsImZvY3VzZWQiLCJpbnB1dG9zYXVydXMiLCJwYXJzZU9uQmx1ciIsImFsbG93RHJhZ0FuZERyb3AiLCJmb2N1c0NhbGxiYWNrIiwic3BsaXRIb29rIiwiaW5kZXhPZiIsInN1YnN0ciIsInNwbGl0RW1haWxMaW5lIiwicGFyc2VIb29rIiwiaW5wdXQiLCJmbGF0dGVuIiwiaW5wdXRWYWx1ZSIsInBhcnNlRW1haWxMaW5lIiwibGVuZ3RoIiwiaXRlbSIsImlzT2JqZWN0IiwidG9MaW5lIiwiY2hhbmdlIiwiJG9FbCIsInZhbCIsImNvbW1hbmQiLCJqcUVsZW1lbnQiLCJpc0NvbW1hbmQiLCJFcnJvciIsImVuYWJsZWQiLCJvYnNlcnZhYmxlIiwiY2FuRXhlY3V0ZSIsIl9fcmVhbENhbkV4ZWN1dGUiLCJjb21wdXRlZCIsInJlc3VsdCIsInByb3AiLCJleHRlbmRlcnMiLCJ0cmltbWVyIiwicmVhZCIsIndyaXRlIiwibmV3VmFsdWUiLCJwb3NJbnRlcmVyIiwiZGVmYXVsdFZhbCIsImxpbWl0ZWRMaXN0IiwiY3VycmVudFZhbHVlIiwibGlzdCIsImlzTm9uRW1wdHlBcnJheSIsImluQXJyYXkiLCJleHRlbmQiLCJub3RpZnkiLCJ2YWx1ZUhhc011dGF0ZWQiLCJyZXZlcnNpYmxlIiwiY29tbWl0IiwicmV2ZXJzZSIsImNvbW1pdGVkVmFsdWUiLCJ0b2dnbGVTdWJzY3JpYmUiLCJvcHRpb25zIiwidG9nZ2xlU3Vic2NyaWJlUHJvcGVydHkiLCJwcmV2IiwibmV4dCIsImZhbHNlVGltZW91dCIsIm9wdGlvbiIsImlGYWxzZVRpbWVvdXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0Iiwic3BlY2lhbFRocm90dGxlIiwiaVNwZWNpYWxUaHJvdHRsZVRpbWVvdXRWYWx1ZSIsImlTcGVjaWFsVGhyb3R0bGVUaW1lb3V0IiwidmFsdWVGb3JSZWFkIiwiYlZhbHVlIiwiaWRsZVRyaWdnZXIiLCJJZGxlIiwiZm4iLCJ2YWxpZGF0ZU5vbmUiLCJoYXNFcnJvciIsInZhbGlkYXRlRW1haWwiLCJ0ZXN0IiwidmFsaWRhdGVTaW1wbGVFbWFpbCIsImRlbGV0ZUFjY2Vzc0hlbHBlciIsInZhbGlkYXRlRnVuYyIsImhhc0Z1bmNFcnJvciIsInRyaW0iLCJpc0FycmF5IiwiaXNGdW5jIiwiaXNVbmQiLCJpc1VuZGVmaW5lZCIsImlzTnVsbCIsImhhcyIsImJpbmQiLCJub29wIiwibm9vcFRydWUiLCJub29wRmFsc2UiLCJzaWxlbnRUcnlDYXRjaCIsImZ1bmMiLCJlIiwiaXNOb3JtYWwiLCJpc1Bvc051bWVyaWMiLCJpbmNsdWRlWmVybyIsImRlZmF1bHRWYWx1ciIsImlzTmFOIiwicFN0cmluZyIsInBCb29sIiwiYm9vbFRvQWpheCIsImVuY29kZVVSSUNvbXBvbmVudCIsImNvbXBvbmVudCIsImRlY29kZVVSSUNvbXBvbmVudCIsImRlY29kZVVSSSIsInVybCIsImVuY29kZVVSSSIsInNpbXBsZVF1ZXJ5UGFyc2VyIiwicXVlcnlTdHJpbmciLCJpbmRleCIsImxlbiIsInRlbXAiLCJxdWVyaWVzIiwic3BsaXQiLCJwYXJhbXMiLCJmYWtlTWQ1IiwibGluZSIsImxpbmVMZW4iLCJNYXRoIiwicm91bmQiLCJyYW5kb20iLCJlbmNvZGVIdG1sIiwiZXNjYXBlIiwic3BsaXRQbGFpblRleHQiLCJwcmVmaXgiLCJzdWJUZXh0Iiwic3BhY2VQb3MiLCJuZXdMaW5lUG9zIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJ0aW1lT3V0QWN0aW9uIiwidGltZU91dHMiLCJhY3Rpb24iLCJmRnVuY3Rpb24iLCJ0aW1lT3V0IiwidGltZU91dEFjdGlvblNlY29uZCIsImRlTW9kdWxlIiwibSIsImluRm9jdXMiLCJhY3RpdmVFbGVtZW50IiwiX19pbkZvY3VzQ2FjaGUiLCJmb3JjZSIsImJsdXIiLCJhY3RpdmVFbCIsInJlbW92ZVNlbGVjdGlvbiIsImdldFNlbGVjdGlvbiIsInNlbCIsInJlbW92ZUFsbFJhbmdlcyIsInNlbGVjdGlvbiIsInJlcGx5U3ViamVjdEFkZCIsInN1YmplY3QiLCJ0b1VwcGVyQ2FzZSIsInJlcGxhY2UiLCJyZSIsImZ3ZCIsInBhcnRzIiwicHJlZml4SXNSZSIsInBhcnQiLCJ0cmltbWVkUGFydCIsImpvaW4iLCJyb3VuZE51bWJlciIsIm51bSIsImRlYyIsInBvdyIsImZyaWVuZGx5U2l6ZSIsInNpemVJbkJ5dGVzIiwibG9nIiwiZGVzYyIsImNvbnNvbGUiLCJkZWxlZ2F0ZVJ1biIsIm9iamVjdCIsIm1ldGhvZE5hbWUiLCJraWxsQ3RybEFDdHJsUyIsImN0cmxLZXkiLCJhbHRLZXkiLCJrZXkiLCJ3aGljaCIsIlMiLCJwcmV2ZW50RGVmYXVsdCIsIkEiLCJzZW5kZXIiLCJzcmNFbGVtZW50IiwiY29udGVudEVkaXRhYmxlIiwidGFnTmFtZSIsIm1hdGNoIiwiY2xlYXIiLCJjcmVhdGVDb21tYW5kTGVnYWN5IiwiY29udGV4dCIsImZFeGVjdXRlIiwiZkNhbkV4ZWN1dGUiLCJmUmVzdWx0IiwiZk5vbkVtcHR5IiwiYXJncyIsImFwcGx5IiwiY29udmVydFRoZW1lTmFtZSIsIm1lbW9pemUiLCJ0aGVtZSIsInF1b3RlTmFtZSIsIm5hbWUiLCJtaWNyb3RpbWUiLCJEYXRlIiwiZ2V0VGltZSIsInRpbWVzdGFtcCIsImNvbnZlcnRMYW5nTmFtZSIsImxhbmd1YWdlIiwiaXNFbmciLCJkcmFnZ2FibGVQbGFjZSIsImFwcGVuZFRvIiwiZGVmYXV0T3B0aW9uc0FmdGVyUmVuZGVyIiwiZG9tSXRlbSIsImRpc2FibGVkIiwiY2xlYXJCcVN3aXRjaGVyIiwiYm9keSIsInJlbW92ZSIsInJlbW92ZUF0dHIiLCJwcmV2aWV3TWVzc2FnZSIsImlzSHRtbCIsInByaW50IiwiZGF0ZSIsImZyb21DcmVkcyIsInRvQ3JlZHMiLCJ0b0xhYmVsIiwiY2NDbGFzcyIsImNjQ3JlZHMiLCJjY0xhYmVsIiwid2luIiwib3BlbiIsImRvYyIsImJvZHlDbG9uZSIsImNsb25lIiwiYm9keUNsYXNzIiwiaHRtbCIsImNsb3NlIiwic2V0dGluZ3NTYXZlSGVscGVyRnVuY3Rpb24iLCJmQ2FsbGJhY2siLCJrb1RyaWdnZXIiLCJ0aW1lciIsInR5cGUiLCJjYWNoZWQiLCJyZXF1ZXN0QWN0aW9uIiwicmVxdWVzdFBhcmFtZXRlcnMiLCJSZXN1bHQiLCJUcnVlUmVzdWx0IiwiRmFsc2VSZXN1bHQiLCJzZXR0aW5nc1NhdmVIZWxwZXJTaW1wbGVGdW5jdGlvbiIsInNldHRpbmdzU2F2ZUhlbHBlclN1YnNjcmliZUZ1bmN0aW9uIiwicmVtb3RlIiwic2V0dGluZ05hbWUiLCJmVHJpZ2dlckZ1bmN0aW9uIiwic2F2ZUFkbWluQ29uZmlnIiwic2F2ZVNldHRpbmdzIiwiZmluZEVtYWlsQW5kTGlua3MiLCJBdXRvbGlua2VyIiwibmV3V2luZG93Iiwic3RyaXBQcmVmaXgiLCJ1cmxzIiwiZW1haWwiLCJtZW50aW9uIiwicGhvbmUiLCJoYXNodGFnIiwicmVwbGFjZUZuIiwiZ2V0VHlwZSIsIm1hdGNoZWRUZXh0IiwiaHRtbFRvUGxhaW4iLCJwb3MiLCJpUDEiLCJpUDIiLCJpUDMiLCJjb252ZXJ0QmxvY2txdW90ZSIsImJsb2NrcXVvdGVUZXh0IiwiY29udmVydERpdnMiLCJkaXZUZXh0IiwiY29udmVydFByZSIsImZpeEF0dGlidXRlVmFsdWUiLCJjb252ZXJ0TGlua3MiLCIkZGl2IiwicGxhaW5Ub0h0bWwiLCJwbGFpbiIsImZpbmRFbWFpbEFuZExpbmtzSW5UZXh0IiwiYkluIiwiYkRvIiwiYlN0YXJ0IiwiYU5leHRUZXh0Iiwic0xpbmUiLCJpSW5kZXgiLCJhVGV4dCIsImZvbGRlckxpc3RPcHRpb25zQnVpbGRlciIsImFTeXN0ZW0iLCJhTGlzdCIsImFEaXNhYmxlZCIsImFIZWFkZXJMaW5lcyIsImlVbkRlZXAiLCJmRGlzYWJsZUNhbGxiYWNrIiwiZlZpc2libGVDYWxsYmFjayIsImZSZW5hbWVDYWxsYmFjayIsImJTeXN0ZW0iLCJiQnVpbGRVbnZpc2libGUiLCJvSXRlbSIsImJTZXAiLCJpTGVuIiwiYVJlc3VsdCIsInNEZWVwUHJlZml4IiwiaWQiLCJzeXN0ZW0iLCJzZXBvcmF0b3IiLCJmdWxsTmFtZVJhdyIsInNlbGVjdGFibGUiLCJzdWJTY3JpYmVkIiwiZXhpc3RlbiIsImhhc1N1YlNjcmliZWRTdWJmb2xkZXJzIiwiVXNlciIsIkFycmF5IiwiZGVlcCIsInN1YkZvbGRlcnMiLCJzZWxlY3RFbGVtZW50IiwicmFuZ2UiLCJjcmVhdGVSYW5nZSIsInNlbGVjdE5vZGVDb250ZW50cyIsImFkZFJhbmdlIiwiY3JlYXRlVGV4dFJhbmdlIiwibW92ZVRvRWxlbWVudFRleHQiLCJzZWxlY3QiLCJkZWJvdW5jZSIsIkdsb2JhbHNEYXRhIiwidHJpZ2dlckF1dG9jb21wbGV0ZUlucHV0Q2hhbmdlIiwiY29uZmlndXJhdGlvblNjcmlwdFRhZ0NhY2hlIiwiZ2V0Q29uZmlndXJhdGlvbkZyb21TY3JpcHRUYWciLCJjb25maWd1cmF0aW9uIiwicGFyc2UiLCJkaXNwb3NlT25lIiwicHJvcE9yVmFsdWUiLCJkaXNwb3NhYmxlIiwiZGlzcG9zZSIsImRpc3Bvc2VPYmplY3QiLCJkaXNwb3NhYmxlcyIsIm9iamVjdEZvckVhY2giLCJkZWxlZ2F0ZVJ1bk9uRGVzdHJveSIsIm9iamVjdE9yT2JqZWN0cyIsIm9uRGVzdHJveSIsImFwcGVuZFN0eWxlcyIsIiRzdHlsZVRhZyIsIl9fdGhlbWVUaW1lciIsIl9fdGhlbWVBamF4IiwiY2hhbmdlVGhlbWUiLCJ0aGVtZVRyaWdnZXIiLCJ0aGVtZUxpbmsiLCJjbGVhclRpbWVyIiwidGhlbWVTdHlsZSIsIkFuaW1hdGUiLCJhYm9ydCIsImFqYXgiLCJkYXRhVHlwZSIsInRoZW4iLCJhZnRlciIsImNvbXB1dGVkUGFnZW5hdG9ySGVscGVyIiwia29DdXJyZW50UGFnZSIsImtvUGFnZUNvdW50IiwiY3VycmVudFBhZ2UiLCJwYWdlQ291bnQiLCJmQWRkIiwiY3VzdG9tTmFtZSIsImN1cnJlbnQiLCJjdXN0b20iLCJ1bnNoaWZ0IiwiZ2V0RmlsZUV4dGVuc2lvbiIsImZpbGVOYW1lIiwidG9Mb3dlckNhc2UiLCJwb3AiLCJtaW1lQ29udGVudFR5cGUiLCJleHQiLCJNaW1lIiwiaXNUcmFuc3BhcmVudCIsImNvbG9yIiwiZ2V0UmVhbEhlaWdodCIsIiRoY29udCIsInJlc2l6ZUFuZENyb3AiLCJpbWciLCJJbWFnZSIsIm9ubG9hZCIsImRpZmYiLCJjYW52YXMiLCJjcmVhdGVFbGVtZW50IiwiY3R4IiwiZ2V0Q29udGV4dCIsImZpbGxTdHlsZSIsImZpbGxSZWN0IiwiZHJhd0ltYWdlIiwidG9EYXRhVVJMIiwic3JjIiwibWFpbFRvSGVscGVyIiwibWFpbFRvVXJsIiwiUG9wdXBDb21wb3NlVmlld01vZGVsIiwidG8iLCJjYyIsImJjYyIsInF1ZXJ5Iiwic2hvd1NjcmVlblBvcHVwIiwiRW1wdHkiLCJkb21SZWFkeSIsInRpbWVvdXQiLCJTdHJpbmciLCJzdHIiLCJzdGFydCIsIlNFVFRJTkdTIiwiX19ybGFoX2RhdGEiLCJBUFBfU0VUVElOR1MiLCJTeXN0ZW0iLCJzZXR0aW5nc0dldCIsInNldHRpbmdzU2V0IiwiY2FwYSIsIl9fc2l6ZXMiLCIkZG9jIiwiJGJvZHkiLCJwb3NpdGlvbiIsInN0YXJ0TWljcm90aW1lIiwicmF0ZUxpbWl0IiwidXNlS2V5Ym9hcmRTaG9ydGN1dHMiLCJzVXNlckFnZW50IiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwiYklFIiwiYkNocm9tZSIsImJTYWZhcmkiLCJiQW5pbWF0aW9uU3VwcG9ydGVkIiwiYlhNTEh0dHBSZXF1ZXN0U3VwcG9ydGVkIiwiWE1MSHR0cFJlcXVlc3QiLCJiSXNIdHRwcyIsImxvY2F0aW9uIiwicHJvdG9jb2wiLCJodG1sRWRpdG9yRGVmYXVsdENvbmZpZyIsImdyb3VwcyIsImh0bWxFZGl0b3JMYW5nc01hcCIsImJBbGxvd1BkZlByZXZpZXciLCJtaW1lVHlwZXMiLCJWSUVXX01PREVMUyIsInNldHRpbmdzIiwibW92ZUFjdGlvbiIsImxlZnRQYW5lbERpc2FibGVkIiwibGVmdFBhbmVsVHlwZSIsImxlZnRQYW5lbFdpZHRoIiwicG9wdXBWaXNpYmlsaXR5TmFtZXMiLCJvYnNlcnZhYmxlQXJyYXkiLCJwb3B1cFZpc2liaWxpdHkiLCJrZXlTY29wZVJlYWwiLCJBbGwiLCJrZXlTY29wZUZha2UiLCJrZXlTY29wZSIsIk1lbnUiLCJDb21wb3NlIiwiZmlsdGVyIiwiZWwiLCJjbGFzc05hbWUiLCJzZXRTY29wZSIsImdldFNjb3BlIiwiX19BUFBfXyIsImlBamF4RXJyb3JDb3VudCIsImlUb2tlbkVycm9yQ291bnQiLCJpTWVzc2FnZUJvZHlDYWNoZUNvdW50IiwiYlVubG9hZCIsImN1cnJlbnRTY3JlZW4iLCJkZWZhdWx0U2NyZWVuTmFtZSIsIlNDUkVFTlMiLCJWaWV3VHlwZSIsIlBvcHVwIiwiTGVmdCIsIlJpZ2h0IiwiQ2VudGVyIiwiaGlkZUxvYWRpbmciLCJjcmVhdGVDb21tYW5kIiwiYWRkU2V0dGluZ3NWaWV3TW9kZWwiLCJTZXR0aW5nc1ZpZXdNb2RlbENsYXNzIiwidGVtcGxhdGUiLCJsYWJlbE5hbWUiLCJyb3V0ZSIsImlzRGVmYXVsdCIsIl9fcmxTZXR0aW5nc0RhdGEiLCJMYWJlbCIsIlRlbXBsYXRlIiwiUm91dGUiLCJJc0RlZmF1bHQiLCJyZW1vdmVTZXR0aW5nc1ZpZXdNb2RlbCIsImRpc2FibGVTZXR0aW5nc1ZpZXdNb2RlbCIsInJvdXRlT2ZmIiwiaGFzaGVyIiwiY2hhbmdlZCIsImFjdGl2ZSIsInJvdXRlT24iLCJzY3JlZW4iLCJzY3JlZW5OYW1lIiwiZ2V0U2NyZWVuUG9wdXAiLCJQb3B1Vmlld01vZGVsQ2xhc3MiLCJoaWRlU2NyZWVuUG9wdXAiLCJWaWV3TW9kZWxDbGFzc1RvSGlkZSIsIk1vZGFsVmlldyIsIl9fdm0iLCJfX2RvbSIsIm1vZGFsVmlzaWJpbGl0eSIsInZtUnVuSG9vayIsImhvb2tOYW1lIiwiVmlld01vZGVsQ2xhc3MiLCJfX25hbWVzIiwicnVuSG9vayIsImJ1aWxkVmlld01vZGVsIiwidm1TY3JlZW4iLCJfX2J1aWxkZWQiLCJ2bURvbSIsInZtIiwiX190eXBlIiwidm1QbGFjZSIsIm9uU2hvd1RyaWdnZXIiLCJvbkhpZGVUcmlnZ2VyIiwidmlld01vZGVsTmFtZSIsIl9fbmFtZSIsInZpZXdNb2RlbE5hbWVzIiwidmlld01vZGVsVGVtcGxhdGVJRCIsIl9fdGVtcGxhdGVJRCIsInZpZXdNb2RlbFBvc2l0aW9uIiwidmlld01vZGVsRG9tIiwiY2FuY2VsQ29tbWFuZCIsImNsb3NlQ29tbWFuZCIsInN0b3JlQW5kU2V0S2V5U2NvcGUiLCJyZXN0b3JlS2V5U2NvcGUiLCJhcHBseUJpbmRpbmdBY2Nlc3NvcnNUb05vZGUiLCJyZWdpc3RlclBvcHVwS2V5RG93biIsIlZpZXdNb2RlbENsYXNzVG9TaG93Iiwid2FybVVwU2NyZWVuUG9wdXAiLCJpc1BvcHVwVmlzaWJsZSIsInNjcmVlbk9uUm91dGUiLCJzdWJQYXJ0IiwiaXNTYW1lU2NyZWVuIiwiY3Jvc3MiLCJfX3N0YXJ0ZWQiLCJ2aWV3TW9kZWxzIiwiZGVmZXIiLCJ2aWV3TW9kZWxWaXNpYmlsaXR5IiwiX19jcm9zcyIsInN0YXJ0U2NyZWVucyIsInNjcmVlbnNDbGFzc2VzIiwiQ1NjcmVlbiIsIl9fc3RhcnQiLCJjcm9zc3JvYWRzIiwiY3JlYXRlIiwiYWRkUm91dGUiLCJpbml0aWFsaXplZCIsImFkZCIsInNldEhhc2giLCJoYXNoIiwic2lsZW5jZSIsImNtZCIsInZpZXdEZWNvcmF0b3IiLCJ0ZW1wbGF0ZUlEIiwicG9wdXBEZWNvcmF0b3IiLCJjb21tYW5kRGVjb3JhdG9yIiwiZGVzY3JpcHRvciIsImluaXRpYWxpemVyIiwibm9ybUNhbkV4ZWN1dGUiLCJzZXR0aW5nc01lbnVLZXlzSGFuZGxlciIsIiRpdGVtcyIsImhhbmRsZXIiLCJ1cCIsInNob3J0Y3V0IiwicmVzdWx0SGFzaCIsImVxIiwiVGltZTIwMG1zIiwiSTE4Tl9EQVRBIiwicmFpbmxvb3BJMThOIiwiSTE4Tl9OT1RJRklDQVRJT05fREFUQSIsIkkxOE5fTk9USUZJQ0FUSU9OX01BUCIsIkludmFsaWRUb2tlbiIsIkF1dGhFcnJvciIsIkFjY2Vzc0Vycm9yIiwiQ29ubmVjdGlvbkVycm9yIiwiQ2FwdGNoYUVycm9yIiwiU29jaWFsRmFjZWJvb2tMb2dpbkFjY2Vzc0Rpc2FibGUiLCJTb2NpYWxUd2l0dGVyTG9naW5BY2Nlc3NEaXNhYmxlIiwiU29jaWFsR29vZ2xlTG9naW5BY2Nlc3NEaXNhYmxlIiwiRG9tYWluTm90QWxsb3dlZCIsIkFjY291bnROb3RBbGxvd2VkIiwiQWNjb3VudFR3b0ZhY3RvckF1dGhSZXF1aXJlZCIsIkFjY291bnRUd29GYWN0b3JBdXRoRXJyb3IiLCJDb3VsZE5vdFNhdmVOZXdQYXNzd29yZCIsIkN1cnJlbnRQYXNzd29yZEluY29ycmVjdCIsIk5ld1Bhc3N3b3JkU2hvcnQiLCJOZXdQYXNzd29yZFdlYWsiLCJOZXdQYXNzd29yZEZvcmJpZGRlbiIsIkNvbnRhY3RzU3luY0Vycm9yIiwiQ2FudEdldE1lc3NhZ2VMaXN0IiwiQ2FudEdldE1lc3NhZ2UiLCJDYW50RGVsZXRlTWVzc2FnZSIsIkNhbnRNb3ZlTWVzc2FnZSIsIkNhbnRDb3B5TWVzc2FnZSIsIkNhbnRTYXZlTWVzc2FnZSIsIkNhbnRTZW5kTWVzc2FnZSIsIkludmFsaWRSZWNpcGllbnRzIiwiQ2FudFNhdmVGaWx0ZXJzIiwiQ2FudEdldEZpbHRlcnMiLCJGaWx0ZXJzQXJlTm90Q29ycmVjdCIsIkNhbnRDcmVhdGVGb2xkZXIiLCJDYW50UmVuYW1lRm9sZGVyIiwiQ2FudERlbGV0ZUZvbGRlciIsIkNhbnREZWxldGVOb25FbXB0eUZvbGRlciIsIkNhbnRTdWJzY3JpYmVGb2xkZXIiLCJDYW50VW5zdWJzY3JpYmVGb2xkZXIiLCJDYW50U2F2ZVNldHRpbmdzIiwiQ2FudFNhdmVQbHVnaW5TZXR0aW5ncyIsIkRvbWFpbkFscmVhZHlFeGlzdHMiLCJDYW50SW5zdGFsbFBhY2thZ2UiLCJDYW50RGVsZXRlUGFja2FnZSIsIkludmFsaWRQbHVnaW5QYWNrYWdlIiwiVW5zdXBwb3J0ZWRQbHVnaW5QYWNrYWdlIiwiTGljZW5zaW5nU2VydmVySXNVbmF2YWlsYWJsZSIsIkxpY2Vuc2luZ0V4cGlyZWQiLCJMaWNlbnNpbmdCYW5uZWQiLCJEZW1vU2VuZE1lc3NhZ2VFcnJvciIsIkRlbW9BY2NvdW50RXJyb3IiLCJBY2NvdW50QWxyZWFkeUV4aXN0cyIsIkFjY291bnREb2VzTm90RXhpc3QiLCJNYWlsU2VydmVyRXJyb3IiLCJJbnZhbGlkSW5wdXRBcmd1bWVudCIsIlVua25vd25Ob3RpZmljYXRpb24iLCJVbmtub3duRXJyb3IiLCJ2YWx1ZUxpc3QiLCJkZWZhdWxWYWx1ZSIsInZhbHVlTmFtZSIsImkxOG5Ub05vZGUiLCJlbGVtZW50cyIsImFuaW1hdGUiLCJsZXR0ZXJmeCIsInJlbG9hZERhdGEiLCJtb21lbnRvclJlbG9hZCIsImluaXROb3RpZmljYXRpb25MYW5ndWFnZSIsImZvckVhY2giLCJpbml0T25TdGFydE9yTGFuZ0NoYW5nZSIsInN0YXJ0Q2FsbGJhY2siLCJsYW5nQ2FsbGJhY2siLCJnZXROb3RpZmljYXRpb24iLCJjb2RlIiwibWVzc2FnZSIsImRlZkNvZGUiLCJDbGllbnRWaWV3RXJyb3IiLCJnZXROb3RpZmljYXRpb25Gcm9tUmVzcG9uc2UiLCJyZXNwb25zZSIsIkVycm9yQ29kZSIsIkVycm9yTWVzc2FnZSIsImdldFVwbG9hZEVycm9yRGVzY0J5Q29kZSIsIkZpbGVJc1Rvb0JpZyIsIkZpbGVQYXJ0aWFsbHlVcGxvYWRlZCIsIkZpbGVOb1VwbG9hZGVkIiwiTWlzc2luZ1RlbXBGb2xkZXIiLCJGaWxlT25TYXZlaW5nRXJyb3IiLCJyZWxvYWQiLCJhZG1pbiIsInJlc29sdmUiLCJyZWplY3QiLCJsYW5nTGluayIsImNhY2hlIiwiaXNSdGwiLCJGb2xkZXJVc2VyU3RvcmUiLCJkaXNwbGF5U3BlY1NldHRpbmciLCJzZW50Rm9sZGVyIiwiZHJhZnRGb2xkZXIiLCJzcGFtRm9sZGVyIiwidHJhc2hGb2xkZXIiLCJhcmNoaXZlRm9sZGVyIiwibmFtZXNwYWNlIiwiZm9sZGVyTGlzdCIsIm9wdGltaXplZCIsImVycm9yIiwiZm9sZGVyc0xvYWRpbmciLCJmb2xkZXJzQ3JlYXRpbmciLCJmb2xkZXJzRGVsZXRpbmciLCJmb2xkZXJzUmVuYW1pbmciLCJmb2xkZXJzSW5ib3hVbnJlYWRDb3VudCIsImN1cnJlbnRGb2xkZXIiLCJzaWV2ZUFsbG93RmlsZWludG9JbmJveCIsImNvbXB1dGVycyIsInN1YnNjcmliZXJzIiwiZHJhZnRGb2xkZXJOb3RFbmFibGVkIiwiVU5VU0VEX09QVElPTl9WQUxVRSIsImZvbGRlcnNMaXN0V2l0aFNpbmdsZUluYm94Um9vdEZvbGRlciIsImZvbGRlciIsImlzU3lzdGVtRm9sZGVyIiwidmlzaWJsZSIsImN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdyIsImN1cnJlbnRGb2xkZXJGdWxsTmFtZSIsImZ1bGxOYW1lIiwiY3VycmVudEZvbGRlckZ1bGxOYW1lSGFzaCIsImZ1bGxOYW1lSGFzaCIsImZvbGRlcnNDaGFuZ2luZyIsImxvYWRpbmciLCJjcmVhdGluZyIsImRlbGV0aW5nIiwicmVuYW1pbmciLCJmb2xkZXJMaXN0U3lzdGVtTmFtZXMiLCJnZXRGb2xkZXJJbmJveE5hbWUiLCJmb2xkZXJzIiwiZm9sZGVyTGlzdFN5c3RlbSIsImNvbXBhY3QiLCJnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0IiwiZm9sZGVyTWVudUZvck1vdmUiLCJsb2NhbE5hbWUiLCJmb2xkZXJNZW51Rm9yRmlsdGVycyIsImZSZW1vdmVTeXN0ZW1Gb2xkZXJUeXBlIiwiZlNldFN5c3RlbUZvbGRlclR5cGUiLCJTZW50SXRlbXMiLCJEcmFmdCIsIlNwYW0iLCJUcmFzaCIsIkFyY2hpdmUiLCJnZXROZXh0Rm9sZGVyTmFtZXMiLCJ1dGMiLCJtb21lbnROb3dVbml4IiwidGltZW91dHMiLCJpbmJveEZvbGRlck5hbWUiLCJmU2VhcmNoRnVuY3Rpb24iLCJpbnRlcnZhbCIsImNoZWNrYWJsZSIsInNvcnQiLCJhIiwiYiIsImFJdGVtIiwidW5pcSIsIk1lc3NhZ2VVc2VyU3RvcmUiLCJzdGF0aWNNZXNzYWdlIiwiTWVzc2FnZU1vZGVsIiwibWVzc2FnZUxpc3QiLCJtZXNzYWdlTGlzdENvdW50IiwibWVzc2FnZUxpc3RTZWFyY2giLCJtZXNzYWdlTGlzdFRocmVhZFVpZCIsIm1lc3NhZ2VMaXN0UGFnZSIsIm1lc3NhZ2VMaXN0UGFnZUJlZm9yZVRocmVhZCIsIm1lc3NhZ2VMaXN0RXJyb3IiLCJtZXNzYWdlTGlzdEVuZEZvbGRlciIsIm1lc3NhZ2VMaXN0RW5kU2VhcmNoIiwibWVzc2FnZUxpc3RFbmRUaHJlYWRVaWQiLCJtZXNzYWdlTGlzdEVuZFBhZ2UiLCJtZXNzYWdlTGlzdExvYWRpbmciLCJtZXNzYWdlTGlzdElzTm90Q29tcGxldGVkIiwibWVzc2FnZUxpc3RDb21wbGV0ZUxvYWRpbmdUaHJvdHRsZSIsIm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nVGhyb3R0bGVGb3JBbmltYXRpb24iLCJtZXNzYWdlTGlzdERpc2FibGVBdXRvU2VsZWN0Iiwic2VsZWN0b3JNZXNzYWdlU2VsZWN0ZWQiLCJzZWxlY3Rvck1lc3NhZ2VGb2N1c2VkIiwidmlld1RyaWdnZXIiLCJtZXNzYWdlRXJyb3IiLCJtZXNzYWdlQ3VycmVudExvYWRpbmciLCJtZXNzYWdlTG9hZGluZ1Rocm90dGxlIiwiVGltZTUwbXMiLCJtZXNzYWdlRnVsbFNjcmVlbk1vZGUiLCJtZXNzYWdlc0JvZGllc0RvbSIsIm1lc3NhZ2VBY3RpdmVEb20iLCJvbk1lc3NhZ2VSZXNwb25zZSIsInB1cmdlTWVzc2FnZUJvZHlDYWNoZVRocm90dGxlIiwicHVyZ2VNZXNzYWdlQm9keUNhY2hlIiwiVGltZTMwcyIsIm1lc3NhZ2VMb2FkaW5nIiwibWVzc2FnZUxpc3RFbmRIYXNoIiwibWVzc2FnZUxpc3RQYWdlQ291bnQiLCJwYWdlIiwiY2VpbCIsIlNldHRpbmdzU3RvcmUiLCJtZXNzYWdlc1BlclBhZ2UiLCJtYWluTWVzc2FnZUxpc3RTZWFyY2giLCJtYWlsQm94IiwiRm9sZGVyU3RvcmUiLCJtZXNzYWdlTGlzdENvbXBsZXRlTG9hZGluZyIsIm9uZSIsInR3byIsImlzTWVzc2FnZVNlbGVjdGVkIiwibWVzc2FnZUxpc3RDaGVja2VkIiwiY2hlY2tlZCIsImhhc0NoZWNrZWRNZXNzYWdlcyIsIm1lc3NhZ2VMaXN0Q2hlY2tlZE9yU2VsZWN0ZWQiLCJzZWxlY3RlZE1lc3NhZ2UiLCJmb2N1c2VkTWVzc2FnZSIsInVuaW9uIiwibWVzc2FnZUxpc3RDaGVja2VkT3JTZWxlY3RlZFVpZHNXaXRoU3ViTWFpbHMiLCJ1aWQiLCJ0aHJlYWRzTGVuIiwidGhyZWFkcyIsIm5ld0ZvckFuaW1hdGlvbiIsIk5vUHJldmlldyIsImxheW91dCIsIkFwcFN0b3JlIiwiZm9jdXNlZFN0YXRlIiwiTWVzc2FnZVZpZXciLCJNZXNzYWdlTGlzdCIsImhpZGVNZXNzYWdlQm9kaWVzIiwiZG9tIiwiZm9sZGVyRnVsbE5hbWVSYXciLCJjb3VudCIsIk1FU1NBR0VfQk9EWV9DQUNIRV9MSU1JVCIsIm1lc3NhZ2VzRG9tIiwiVGltZTM1MG1zIiwiaW5pdFVpZE5leHRBbmROZXdNZXNzYWdlcyIsInVpZE5leHQiLCJuZXdNZXNzYWdlcyIsImFkZE5ld01lc3NhZ2VDYWNoZSIsIlVpZCIsIk5vdGlmaWNhdGlvblN0b3JlIiwicGxheVNvdW5kTm90aWZpY2F0aW9uIiwiZGlzcGxheURlc2t0b3BOb3RpZmljYXRpb24iLCJub3RpZmljYXRpb25NYWlsSWNvbiIsIkFjY291bnRTdG9yZSIsIk1lc3NhZ2VIZWxwZXIiLCJGcm9tIiwiU3ViamVjdCIsIkZvbGRlciIsInNldEZvbGRlclVpZE5leHQiLCJyZW1vdmVNZXNzYWdlc0Zyb21MaXN0IiwiZnJvbUZvbGRlckZ1bGxOYW1lUmF3IiwidWlkRm9yUmVtb3ZlIiwidG9Gb2xkZXJGdWxsTmFtZVJhdyIsImNvcHkiLCJtVmFsdWUiLCJ1bnNlZW5Db3VudCIsImN1cnJlbnRNZXNzYWdlIiwiZnJvbUZvbGRlciIsInRvRm9sZGVyIiwibWVzc2FnZXMiLCJ1bnNlZW4iLCJtZXNzYWdlQ291bnRBbGwiLCJtZXNzYWdlQ291bnRVbnJlYWQiLCJhY3Rpb25CbGluayIsImRlbGV0ZWQiLCJzZXRGb2xkZXJIYXNoIiwiaW5pdEJsb2NrcXVvdGVTd2l0Y2hlciIsIm1lc3NhZ2VUZXh0Qm9keSIsIiRvTGlzdCIsInBhcmVudCIsImgiLCJpbnNlcnRCZWZvcmUiLCJiZWZvcmUiLCJpbml0T3BlblBncENvbnRyb2xzIiwiUGdwU3RvcmUiLCJpbml0TWVzc2FnZUJvZHlDb250cm9scyIsInNldE1lc3NhZ2UiLCJpc05ldyIsInJlc3VsdEh0bWwiLCJwZ3BTaWduZWQiLCJuZXdJbnN0YW5jZUZyb21Kc29uIiwiaW5pdE1lc3NhZ2VGbGFnc0Zyb21DYWNoZSIsInBvcHVsYXRlQnlNZXNzYWdlTGlzdEl0ZW0iLCJpbml0VXBkYXRlQnlNZXNzYWdlSnNvbiIsImFkZFJlcXVlc3RlZE1lc3NhZ2UiLCJpbml0RmxhZ3NCeUpzb24iLCJ0ZXh0Qm9keSIsIkh0bWwiLCJQbGFpbiIsImlzUGdwU2lnbmVkIiwiaXNQZ3BFbmNyeXB0ZWQiLCJjYXBhT3BlblBHUCIsImhhc0ltYWdlcyIsIkhhc0V4dGVybmFscyIsInN0b3JlRGF0YUluRG9tIiwiSGFzSW50ZXJuYWxzIiwic2hvd0ludGVybmFsSW1hZ2VzIiwic2hvd0ltYWdlcyIsInNob3dFeHRlcm5hbEltYWdlcyIsImZldGNoRGF0YUZyb21Eb20iLCJoYXNVbnNlZW5TdWJNZXNzYWdlIiwiZ2V0QXBwIiwibWVzc2FnZUxpc3RBY3Rpb24iLCJTZXRTZWVuIiwic3ViTWVzc2FnZSIsInNlbGVjdE1lc3NhZ2UiLCJvTWVzc2FnZSIsInBvcHVsYXRlTWVzc2FnZUJvZHkiLCJzZWxlY3RNZXNzYWdlQnlGb2xkZXJBbmRVaWQiLCJzRm9sZGVyIiwic1VpZCIsIlJlbW90ZSIsInNSZXN1bHQiLCJvRGF0YSIsImJDYWNoZWQiLCJTdWNjZXNzIiwiVW5sb2FkIiwiQWJvcnQiLCJjYWxjdWxhdGVNZXNzYWdlTGlzdEhhc2giLCJmbGFnSGFzaCIsInNldE1lc3NhZ2VMaXN0IiwibmV3Q291bnQiLCJ1bnJlYWRDb3VudENoYW5nZSIsImlDb3VudCIsIk1lc3NhZ2VSZXN1bHRDb3VudCIsImlPZmZzZXQiLCJPZmZzZXQiLCJGb2xkZXJIYXNoIiwiTWVzc2FnZUNvdW50IiwiTWVzc2FnZVVuc2VlbkNvdW50IiwiVWlkTmV4dCIsIk5ld01lc3NhZ2VzIiwiY2xlYXJNZXNzYWdlRmxhZ3NGcm9tQ2FjaGVCeUZvbGRlciIsImpzb25NZXNzYWdlIiwiaGFzTmV3TWVzc2FnZUFuZFJlbW92ZUZyb21DYWNoZSIsInN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZSIsIlNlYXJjaCIsIlRocmVhZFVpZCIsImNsZWFyTmV3TWVzc2FnZUNhY2hlIiwidXNlVGhyZWFkcyIsImZvbGRlckluZm9ybWF0aW9uIiwiRk9MREVSU19DQUNIRSIsIkZPTERFUlNfTkFNRV9DQUNIRSIsIkZPTERFUlNfSEFTSF9DQUNIRSIsIkZPTERFUlNfVUlEX05FWFRfQ0FDSEUiLCJNRVNTQUdFX0ZMQUdTX0NBQ0hFIiwiTkVXX01FU1NBR0VfQ0FDSEUiLCJSRVFVRVNURURfTUVTU0FHRV9DQUNIRSIsImNhcGFHcmF2YXRhciIsIkdyYXZhdGFyIiwiZ2V0VXNlclBpYyIsImNhbGxiYWNrIiwiTGlua3MiLCJnZXRNZXNzYWdlS2V5IiwiaGFzUmVxdWVzdGVkTWVzc2FnZSIsImdldEZvbGRlckZ1bGxOYW1lUmF3IiwiZm9sZGVySGFzaCIsInNldEZvbGRlckZ1bGxOYW1lUmF3IiwiZ2V0Rm9sZGVySGFzaCIsImdldEZvbGRlclVpZE5leHQiLCJzZXRGb2xkZXJUb0NhY2hlTGlzdCIsInJlbW92ZUZvbGRlckZyb21DYWNoZUxpc3QiLCJnZXRNZXNzYWdlRmxhZ3NGcm9tQ2FjaGUiLCJmb2xkZXJGdWxsTmFtZSIsInNldE1lc3NhZ2VGbGFnc1RvQ2FjaGUiLCJmbGFnc0NhY2hlIiwiZmxhZ3MiLCJmbGFnZ2VkIiwiaXNTaW1wbGVNZXNzYWdlIiwiYW5zd2VyZWQiLCJmb3J3YXJkZWQiLCJpc1JlYWRSZWNlaXB0IiwiZGVsZXRlZE1hcmsiLCJ1bnNlZW5TdWJVaWQiLCJzU3ViVWlkIiwic3ViRmxhZ3MiLCJmbGFnZ2VkU3ViVWlkIiwiaGFzRmxhZ2dlZFN1Yk1lc3NhZ2UiLCJzdG9yZU1lc3NhZ2VGbGFnc1RvQ2FjaGVCeUZvbGRlckFuZFVpZCIsInN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZUJ5U2V0QWN0aW9uIiwic2V0QWN0aW9uIiwidW5yZWFkIiwiVW5zZXRTZWVuIiwiU2V0RmxhZyIsIlVuc2V0RmxhZyIsIlJPT1QiLCJIQVNIX1BSRUZJWCIsIlNFUlZFUl9QUkVGSVgiLCJTVUJfUVVFUllfUFJFRklYIiwiVkVSU0lPTiIsIldFQl9QUkVGSVgiLCJWRVJTSU9OX1BSRUZJWCIsIlNUQVRJQ19QUkVGSVgiLCJBRE1JTl9IT1NUX1VTRSIsIkFETUlOX1BBVEgiLCJBVVRIX1BSRUZJWCIsInBvcHVsYXRlQXV0aFN1ZmZpeCIsInN1YlF1ZXJ5UHJlZml4Iiwicm9vdCIsInN0YXJ0dXBVcmwiLCJyb290QWRtaW4iLCJyb290VXNlciIsImF0dGFjaG1lbnRSYXciLCJkb3dubG9hZCIsImN1c3RvbVNwZWNTdWZmaXgiLCJhdHRhY2htZW50RG93bmxvYWQiLCJhdHRhY2htZW50UHJldmlldyIsImF0dGFjaG1lbnRUaHVtYm5haWxQcmV2aWV3IiwiYXR0YWNobWVudFByZXZpZXdBc1BsYWluIiwiYXR0YWNobWVudEZyYW1lZCIsInNlcnZlclJlcXVlc3QiLCJ1cGxvYWQiLCJ1cGxvYWRDb250YWN0cyIsInVwbG9hZEJhY2tncm91bmQiLCJtZXNzYWdlVmlld0xpbmsiLCJyZXF1ZXN0SGFzaCIsIm1lc3NhZ2VEb3dubG9hZExpbmsiLCJhdmF0YXJMaW5rIiwicHVibGljTGluayIsInVzZXJCYWNrZ3JvdW5kIiwicGhwSW5mbyIsImxhbmciLCJpc0FkbWluIiwiZXhwb3J0Q29udGFjdHNWY2YiLCJleHBvcnRDb250YWN0c0NzdiIsInNvY2lhbEdvb2dsZSIsInhhdXRoIiwic29jaWFsVHdpdHRlciIsInNvY2lhbEZhY2Vib29rIiwic3RhdGljUHJlZml4IiwicGF0aCIsImVtcHR5Q29udGFjdFBpYyIsInNvdW5kIiwib3BlblBncEpzIiwib3BlblBncFdvcmtlckpzIiwib3BlblBncFdvcmtlclBhdGgiLCJ0aGVtZVByZXZpZXdMaW5rIiwiaW5ib3giLCJhYm91dCIsInNlYXJjaCIsInRocmVhZFVpZCIsInJlc3VsdFRocmVhZFVpZCIsIlJlbW90ZVVzZXJBamF4Iiwib1JlcXVlc3RzIiwiZGVmYXVsdFJlcXVlc3QiLCJsb2dpbiIsInNFbWFpbCIsInNMb2dpbiIsInNQYXNzd29yZCIsImJTaWduTWUiLCJzTGFuZ3VhZ2UiLCJzQWRkaXRpb25hbENvZGUiLCJiQWRkaXRpb25hbENvZGVTaWduTWUiLCJnZXRUd29GYWN0b3IiLCJjcmVhdGVUd29GYWN0b3IiLCJjbGVhclR3b0ZhY3RvciIsInNob3dUd29GYWN0b3JTZWNyZXQiLCJ0ZXN0VHdvRmFjdG9yIiwic0NvZGUiLCJlbmFibGVUd29GYWN0b3IiLCJiRW5hYmxlIiwiY2xlYXJUd29GYWN0b3JJbmZvIiwiY29udGFjdHNTeW5jIiwiQ09OVEFDVFNfU1lOQ19BSkFYX1RJTUVPVVQiLCJzYXZlQ29udGFjdHNTeW5jRGF0YSIsInNVcmwiLCJzVXNlciIsImFjY291bnRTZXR1cCIsImJOZXciLCJhY2NvdW50RGVsZXRlIiwic0VtYWlsVG9EZWxldGUiLCJhY2NvdW50c0FuZElkZW50aXRpZXNTb3J0T3JkZXIiLCJhQWNjb3VudHMiLCJhSWRlbnRpdGllcyIsImlkZW50aXR5VXBkYXRlIiwic0lkIiwic05hbWUiLCJzUmVwbHlUbyIsInNCY2MiLCJzU2lnbmF0dXJlIiwiYlNpZ25hdHVyZUluc2VydEJlZm9yZSIsImlkZW50aXR5RGVsZXRlIiwic0lkVG9EZWxldGUiLCJhY2NvdW50c0FuZElkZW50aXRpZXMiLCJhY2NvdW50c0NvdW50cyIsImZpbHRlcnNTYXZlIiwiZmlsdGVycyIsInJhdyIsImlzUmF3SXNBY3RpdmUiLCJ0b0pzb24iLCJmaWx0ZXJzR2V0IiwidGVtcGxhdGVzIiwidGVtcGxhdGVHZXRCeUlkIiwic0lEIiwidGVtcGxhdGVEZWxldGUiLCJ0ZW1wbGF0ZVNldHVwIiwic0JvZHkiLCJzRm9sZGVyRnVsbE5hbWVSYXciLCJpTGltaXQiLCJzU2VhcmNoIiwic1RocmVhZFVpZCIsImJTaWxlbnQiLCJ0aHJlYWRzQWxsb3dlZCIsImluYm94VWlkTmV4dCIsIkRFRkFVTFRfQUpBWF9USU1FT1VUIiwiU0VBUkNIX0FKQVhfVElNRU9VVCIsIkJhc2U2NCIsInByb2plY3RIYXNoIiwiZnJvbUNoYXJDb2RlIiwiTGltaXQiLCJVc2VUaHJlYWRzIiwibWVzc2FnZVVwbG9hZEF0dGFjaG1lbnRzIiwiYURvd25sb2FkcyIsImlVaWQiLCJjb21wb3NlVXBsb2FkRXh0ZXJuYWxzIiwiYUV4dGVybmFscyIsImNvbXBvc2VVcGxvYWREcml2ZSIsInNBY2Nlc3NUb2tlbiIsInJlcXVlc3QiLCJ1aWRzIiwibWVzc2FnZUxpc3RJdGVtIiwicmVsb2FkRmxhZ3NDdXJyZW50TWVzc2FnZUxpc3RBbmRNZXNzYWdlRnJvbUNhY2hlIiwiZm9sZGVySW5mb3JtYXRpb25NdWx0aXBseSIsImFGb2xkZXJzIiwibG9nb3V0IiwibWVzc2FnZVNldEZsYWdnZWQiLCJhVWlkcyIsImJTZXRGbGFnZ2VkIiwibWVzc2FnZVNldFNlZW4iLCJiU2V0U2VlbiIsIm1lc3NhZ2VTZXRTZWVuVG9BbGwiLCJhVGhyZWFkVWlkcyIsInNhdmVNZXNzYWdlIiwic0lkZW50aXR5SUQiLCJzTWVzc2FnZUZvbGRlciIsInNNZXNzYWdlVWlkIiwic0RyYWZ0Rm9sZGVyIiwic1RvIiwic0NjIiwic1N1YmplY3QiLCJiVGV4dElzSHRtbCIsInNUZXh0IiwiYUF0dGFjaG1lbnRzIiwiYURyYWZ0SW5mbyIsInNJblJlcGx5VG8iLCJzUmVmZXJlbmNlcyIsImJNYXJrQXNJbXBvcnRhbnQiLCJTQVZFX01FU1NBR0VfQUpBWF9USU1FT1VUIiwic2VuZFJlYWRSZWNlaXB0TWVzc2FnZSIsInNSZWFkUmVjZWlwdCIsInNlbmRNZXNzYWdlIiwic1NlbnRGb2xkZXIiLCJiUmVxdWVzdERzbiIsImJSZXF1ZXN0UmVhZFJlY2VpcHQiLCJTRU5EX01FU1NBR0VfQUpBWF9USU1FT1VUIiwic2F2ZVN5c3RlbUZvbGRlcnMiLCJzYXZlU2V0dGluZ3NIZWxwZXIiLCJ2YWx1ZUZuIiwiY2hhbmdlUGFzc3dvcmQiLCJwcmV2UGFzc3dvcmQiLCJuZXdQYXNzd29yZCIsImZvbGRlckNsZWFyIiwiZm9sZGVyU2V0U3Vic2NyaWJlIiwiYlN1YnNjcmliZSIsImZvbGRlclNldENoZWNrYWJsZSIsImJDaGVja2FibGUiLCJtZXNzYWdlc01vdmUiLCJzVG9Gb2xkZXIiLCJzTGVhcm5pbmciLCJiTWFya0FzUmVhZCIsIm1lc3NhZ2VzQ29weSIsIm1lc3NhZ2VzRGVsZXRlIiwiYXBwRGVsYXlTdGFydCIsInF1b3RhIiwiY29udGFjdHMiLCJjb250YWN0U2F2ZSIsInNSZXF1ZXN0VWlkIiwiYVByb3BlcnRpZXMiLCJjb250YWN0c0RlbGV0ZSIsInN1Z2dlc3Rpb25zIiwic1F1ZXJ5IiwiaVBhZ2UiLCJjbGVhclVzZXJCYWNrZ3JvdW5kIiwiZmFjZWJvb2tVc2VyIiwiZmFjZWJvb2tEaXNjb25uZWN0IiwidHdpdHRlclVzZXIiLCJ0d2l0dGVyRGlzY29ubmVjdCIsImdvb2dsZVVzZXIiLCJnb29nbGVEaXNjb25uZWN0Iiwic29jaWFsVXNlcnMiLCJBYnN0cmFjdEFqYXhSZW1vdGUiLCJTVUJTIiwic3ViIiwic3ViRnVuYyIsInN1Yk5hbWUiLCJwdWIiLCJQbHVnaW5zIiwiaXRlbXMiLCJNRVNTQUdFU19QRVJfUEFHRSIsIk1FU1NBR0VTX1BFUl9QQUdFX1ZBTFVFUyIsIkNPTlRBQ1RTX1BFUl9QQUdFIiwiQ0xJRU5UX1NJREVfU1RPUkFHRV9JTkRFWF9OQU1FIiwiSU1BUF9ERUZBVUxUX1BPUlQiLCJJTUFQX0RFRkFVTFRfU0VDVVJFX1BPUlQiLCJTTVRQX0RFRkFVTFRfUE9SVCIsIlNNVFBfREVGQVVMVF9TRUNVUkVfUE9SVCIsIlNJRVZFX0RFRkFVTFRfUE9SVCIsIkFKQVhfRVJST1JfTElNSVQiLCJUT0tFTl9FUlJPUl9MSU1JVCIsIlJBSU5MT09QX1RSSUFMX0tFWSIsIkRBVEFfSU1BR0VfVVNFUl9ET1RfUElDIiwiREFUQV9JTUFHRV9UUkFOU1BfUElDIiwiREFUQV9JTUFHRV9MQVpZX1BMQUNFSE9MREVSX1BJQyIsIkFic3RyYWN0Vmlld05leHQiLCJiRGlzYWJlQ2xvc2VPbkVzYyIsInNEZWZhdWx0S2V5U2NvcGUiLCJOb25lIiwic0N1cnJlbnRLZXlTY29wZSIsIkVzYyIsIkJhY2tzcGFjZSIsIlNvY2lhbFN0b3JlIiwiZ29vZ2xlIiwidHdpdHRlciIsImZhY2Vib29rIiwiZHJvcGJveCIsImNsaWVudElEIiwiY2xpZW50U2VjcmV0IiwiYXBpS2V5IiwidXNlck5hbWUiLCJsb2dnaW5lZCIsImF1dGgiLCJhdXRoR21haWwiLCJkcml2ZSIsInByZXZpZXciLCJjbGllbnRTZXR0aW5ncyIsImFwaUtleVNldHRpbmdzIiwiYXBwSUQiLCJhcHBTZWNyZXQiLCJzdXBwb3J0ZWQiLCJjb25zdW1lcktleSIsImNvbnN1bWVyU2VjcmV0IiwicG9wdWxhdGUiLCJhcHBlbmREcm9wYm94IiwiRHJvcGJveCIsImdldEVsZW1lbnRCeUlkIiwic2NyaXB0IiwiYXBwZW5kQ2hpbGQiLCJBcHBVc2VyU3RvcmUiLCJjdXJyZW50QXVkaW8iLCJGb2xkZXJMaXN0IiwiY29tcG9zZUluRWRpdCIsImNvbnRhY3RzQXV0b3NhdmUiLCJ1c2VMb2NhbFByb3h5Rm9yRXh0ZXJuYWxJbWFnZXMiLCJjb250YWN0c0lzQWxsb3dlZCIsImF0dGFjaG1lbnRzQWN0aW9ucyIsImRldkVtYWlsIiwiZGV2UGFzc3dvcmQiLCJBYnN0cmFjdEFwcFN0b3JlIiwiQWJzdHJhY3RDb21wb25lbnQiLCJmdW5jVG9EaXNwb3NlIiwiY29tcG9uZW50RXhwb3J0SGVscGVyIiwiQ2xhc3NPYmplY3QiLCJjcmVhdGVWaWV3TW9kZWwiLCJjb21wb25lbnRJbmZvIiwiaW5saW5lIiwiU2V0dGluZ3NVc2VyU3RvcmUiLCJpQXV0b0xvZ291dFRpbWVyIiwiU2lkZVByZXZpZXciLCJCb3R0b21QcmV2aWV3IiwiZWRpdG9yRGVmYXVsdFR5cGUiLCJIdG1sRm9yY2VkIiwiUGxhaW5Gb3JjZWQiLCJ1c2VDaGVja2JveGVzSW5MaXN0IiwiYWxsb3dEcmFmdEF1dG9zYXZlIiwicmVwbHlTYW1lRm9sZGVyIiwiYXV0b0xvZ291dCIsIlRpbWUzMG1Jbk1pbiIsInVzZVByZXZpZXdQYW5lIiwiRXZlbnRzIiwiVGltZTFtIiwiU0lNUExFX0hPT0tTIiwiVVNFUl9WSUVXX01PREVMU19IT09LUyIsIkFETUlOX1ZJRVdfTU9ERUxTX0hPT0tTIiwiYWRkSG9vayIsIm1haW5TZXR0aW5nc0dldCIsInJlbW90ZVJlcXVlc3QiLCJwYXJhbWV0ZXJzIiwiYWRkU2V0dGluZ3NWaWV3TW9kZWxGb3JBZG1pbiIsInJ1blNldHRpbmdzVmlld01vZGVsSG9va3MiLCJLbm9pbiIsInZpZXciLCJwbHVnaW5TZWN0aW9uIiwicGx1Z2lucyIsIlBncFVzZXJTdG9yZSIsIm9wZW5wZ3AiLCJvcGVucGdwa2V5cyIsIm9wZW5wZ3BLZXlyaW5nIiwib3BlbnBncGtleXNQdWJsaWMiLCJpc1ByaXZhdGUiLCJvcGVucGdwa2V5c1ByaXZhdGUiLCJpc1N1cHBvcnRlZCIsImZpbmRLZXlCeUhleCIsImtleXMiLCJpZHMiLCJmaW5kUHVibGljS2V5QnlIZXgiLCJmaW5kUHJpdmF0ZUtleUJ5SGV4IiwiZmluZFB1YmxpY0tleXNCeUVtYWlsIiwiZW1haWxzIiwiZ2V0TmF0aXZlS2V5cyIsImZpbmRQdWJsaWNLZXlzQnlTaWduaW5nS2V5SWRzIiwic2lnbmluZ0tleUlkcyIsInRvSGV4IiwiZmluZFByaXZhdGVLZXlzQnlFbmNyeXB0aW9uS2V5SWRzIiwiZW5jcnlwdGlvbktleUlkcyIsInJlY2lwaWVudHMiLCJyZXR1cm5XcmFwS2V5cyIsImZpbmRBbGxQcml2YXRlS2V5c0J5RW1haWxOb3ROYXRpdmUiLCJmaW5kUHVibGljS2V5QnlFbWFpbE5vdE5hdGl2ZSIsImZpbmRQcml2YXRlS2V5QnlFbWFpbE5vdE5hdGl2ZSIsImZpbmRBbGxQdWJsaWNLZXlzQnlFbWFpbE5vdE5hdGl2ZSIsImZpbmRQcml2YXRlS2V5QnlFbWFpbCIsInBhc3N3b3JkIiwicHJpdmF0ZUtleSIsImRlY3J5cHQiLCJmaW5kU2VsZlByaXZhdGVLZXkiLCJkZWNyeXB0TWVzc2FnZSIsImdldEVuY3J5cHRpb25LZXlJZHMiLCJwcml2YXRlS2V5cyIsImRlY3J5cHRlZEtleSIsImRlY3J5cHRlZE1lc3NhZ2UiLCJwcmltYXJ5S2V5Iiwia2V5aWQiLCJ2ZXJpZnlNZXNzYWdlIiwib1ZhbGlkS2V5IiwiYVNpZ25pbmdLZXlJZHMiLCJnZXRTaWduaW5nS2V5SWRzIiwicHVibGljS2V5cyIsInZlcmlmeSIsInZhbGlkIiwiY29udHJvbHNIZWxwZXIiLCJ2ZXJDb250cm9sIiwic3VjY2VzcyIsImRvbUNvbnRyb2xFbmNyeXB0ZWRDbGlja0hlbHBlciIsInN0b3JlIiwiYXJtb3JlZE1lc3NhZ2UiLCJyZWFkQXJtb3JlZCIsImdldFRleHQiLCJ2YWxpZFByaXZhdGVLZXkiLCJ2YWxpZFB1YmxpY0tleSIsInVzZXIiLCJrZXlJZHMiLCJhZGRpdGlvbmFsIiwiZG9tQ29udHJvbFNpZ25lZENsaWNrSGVscGVyIiwiY2xlYXJ0ZXh0IiwidmFsaWRLZXkiLCJyYWluTG9vcE1lc3NhZ2UiLCJlbmNyeXB0ZWQiLCJzaWduZWQiLCJnZXRFbWFpbHMiLCJkb21UZXh0IiwiQWNjb3VudFVzZXJTdG9yZSIsInBhcmVudEVtYWlsIiwic2lnbmF0dXJlIiwiYWNjb3VudHMiLCJhY2NvdW50c0VtYWlscyIsImFjY291bnRzVW5yZWFkQ291bnQiLCJpc1Jvb3RBY2NvdW50IiwiU3VwcG9ydGVkU3RvcmFnZURyaXZlciIsIkxvY2FsU3RvcmFnZURyaXZlciIsIkNvb2tpZURyaXZlciIsIlN0b3JhZ2VEcml2ZXIiLCJkcml2ZXIiLCJzZXQiLCJnZXQiLCJfbW9tZW50IiwiX21vbWVudE5vdyIsInVwZGF0ZU1vbWVudE5vdyIsInVwZGF0ZU1vbWVudE5vd1VuaXgiLCJ1bml4IiwibW9tZW50Tm93Iiwic2VhcmNoU3VidHJhY3RGb3JtYXREYXRlSGVscGVyIiwic3VidHJhY3QiLCJmb3JtYXQiLCJmb3JtYXRDdXN0b21TaG9ydERhdGUiLCJub3ciLCJmcm9tTm93IiwiVElNRSIsInllYXIiLCJ0aW1lU3RhbXBJblVUQyIsImZvcm1hdFN0ciIsInRpbWUiLCJlbWFpbEFycmF5VG9TdHJpbmciLCJmcmllbmRseVZpZXciLCJ3cmFwV2l0aExpbmsiLCJlbWFpbEFycmF5VG9TdHJpbmdDbGVhciIsImVtYWlsQXJyYXlGcm9tSnNvbiIsInJlcGx5SGVscGVyIiwiaW5wdXRFbWFpbHMiLCJ1bmljIiwibG9jYWxFbWFpbHMiLCJBYnN0cmFjdE1vZGVsIiwibW9kZWxOYW1lIiwic01vZGVsTmFtZSIsInJlZ0Rpc3Bvc2FibGVzIiwiTGFuZ3VhZ2VTdG9yZSIsImxhbmd1YWdlcyIsImxhbmd1YWdlc0FkbWluIiwibGFuZ3VhZ2VBZG1pbiIsInVzZXJMYW5ndWFnZSIsInVzZXJMYW5ndWFnZUFkbWluIiwiYUxhbmd1YWdlcyIsImFMYW5ndWFnZXNBZG1pbiIsImRraW1TdGF0dXMiLCJka2ltVmFsdWUiLCJjbGVhckR1cGxpY2F0ZU5hbWUiLCJpbml0QnlKc29uIiwidmFsaWRhdGUiLCJ3aXRob3V0TmFtZSIsIk5hbWUiLCJFbWFpbCIsIkRraW1TdGF0dXMiLCJEa2ltVmFsdWUiLCJ1c2VFbmNvZGVIdG1sIiwicGFyc2VkUmVzdWx0IiwiYWRkcmVzc3BhcnNlciIsImV4aXN0cyIsImFkZHJlc3MiLCJlbWFpbEFkZHJlc3MiLCJBdWRpbyIsIm5vdGlmaWNhdG9yIiwicGxheWVyIiwic3VwcG9ydGVkTXAzIiwic3VwcG9ydGVkT2dnIiwic3VwcG9ydGVkV2F2Iiwic3VwcG9ydGVkTm90aWZpY2F0aW9uIiwiY3JlYXRlTmV3T2JqZWN0IiwicGxheSIsImNhblBsYXlUeXBlIiwic3RvcEZuIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBhdXNlIiwicHJlbG9hZCIsImxvb3AiLCJhdXRvcGxheSIsIm11dGVkIiwicGF1c2VkIiwiY2xlYXJOYW1lIiwicGxheU1wMyIsInBsYXlPZ2ciLCJwbGF5V2F2IiwicGxheU5vdGlmaWNhdGlvbiIsIkFic3RyYWN0SW5wdXQiLCJsYWJlbCIsInByZUxhYmVsIiwiZW5hYmxlIiwicGxhY2Vob2xkZXIiLCJsYWJlbGVkIiwicHJlTGFiZWxlZCIsInRyaWdnZXJlZCIsImNsYXNzRm9yVHJpZ2dlciIsInN1ZmZpeFZhbHVlIiwic2V0VHJpZ2dlclN0YXRlIiwiVXNlckFqYXhVc2VyUHJvbWlzZXMiLCJmb2xkZXJzVGltZW91dCIsImZvbGRlcnNSZWxvYWQiLCJmVHJpZ2dlciIsInBvc3RSZXF1ZXN0IiwiUHJvbWlzZXNQb3B1bGF0b3IiLCJmb2xkZXJzTGlzdCIsImZvbGRlcnNBZGRpdGlvbmFsUGFyYW1ldGVycyIsImZvbGRlcnNSZWxvYWRXaXRoVGltZW91dCIsInNldFRyaWdnZXIiLCJmb2xkZXJEZWxldGUiLCJmb2xkZXJDcmVhdGUiLCJzTmV3Rm9sZGVyTmFtZSIsInNQYXJlbnROYW1lIiwiZm9sZGVyUmVuYW1lIiwic1ByZXZGb2xkZXJGdWxsTmFtZVJhdyIsInNBY3Rpb24iLCJhSGFzaGVzIiwid2VsY29tZUNsb3NlIiwiQWJzdHJhY3RBamF4UHJvbWlzZXMiLCJJZGVudGl0eVVzZXJTdG9yZSIsImlkZW50aXRpZXMiLCJpZGVudGl0aWVzSURTIiwiQ29udGFjdFVzZXJTdG9yZSIsImltcG9ydGluZyIsInN5bmNpbmciLCJleHBvcnRpbmdWY2YiLCJleHBvcnRpbmdDc3YiLCJhbGxvd0NvbnRhY3RzU3luYyIsImVuYWJsZUNvbnRhY3RzU3luYyIsImNvbnRhY3RzU3luY1VybCIsImNvbnRhY3RzU3luY1VzZXIiLCJjb250YWN0c1N5bmNQYXNzIiwiamFzc2wiLCJhc3luYyIsImFsbCIsIm9uZXJyb3IiLCJUaGVtZVN0b3JlIiwidGhlbWVzIiwidGhlbWVCYWNrZ3JvdW5kTmFtZSIsInRoZW1lQmFja2dyb3VuZEhhc2giLCJOb3RpZmljYXRpb25Vc2VyU3RvcmUiLCJlbmFibGVTb3VuZE5vdGlmaWNhdGlvbiIsInNvdW5kTm90aWZpY2F0aW9uSXNTdXBwb3J0ZWQiLCJhbGxvd0Rlc2t0b3BOb3RpZmljYXRpb24iLCJkZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbnMiLCJOb3RTdXBwb3J0ZWQiLCJOb3RpZmljYXRpb25DbGFzcyIsIm5vdGlmaWNhdGlvbkNsYXNzIiwicGVybWlzc2lvbiIsIkFsbG93ZWQiLCJEZW5pZWQiLCJOb3RBbGxvd2VkIiwid2Via2l0Tm90aWZpY2F0aW9ucyIsImNoZWNrUGVybWlzc2lvbiIsImVuYWJsZURlc2t0b3BOb3RpZmljYXRpb24iLCJyZXF1ZXN0UGVybWlzc2lvbiIsImluaXROb3RpZmljYXRpb25QbGF5ZXIiLCJpc0Rlc2t0b3BOb3RpZmljYXRpb25TdXBwb3J0ZWQiLCJpc0Rlc2t0b3BOb3RpZmljYXRpb25EZW5pZWQiLCJza2lwU2V0dGluZyIsImltYWdlU3JjIiwibmVzc2FnZURhdGEiLCJub3RpZmljYXRpb24iLCJpY29uIiwib25jbGljayIsImxvY2FsTm90aWZpY2F0aW9ucyIsImNhbmNlbCIsIlRpbWU3cyIsIkNvbXBvc2VQb3B1cFZpZXciLCJwb3B1cCIsInNlbGYiLCJjYW5CZVNlbnRPclNhdmVkIiwiaXNEcmFmdEZvbGRlck1lc3NhZ2UiLCJhbGxvd0NvbnRhY3RzIiwiZHJvcGJveEVuYWJsZWQiLCJkcml2ZUVuYWJsZWQiLCJmRW1haWxPdXRJbkhlbHBlciIsImlkZW50aXR5IiwiaXNJbiIsImlkZW50aXR5RW1haWwiLCJvTGFzdE1lc3NhZ2UiLCJvRWRpdG9yIiwiYkZyb21EcmFmdCIsInNMYXN0Rm9jdXNlZEZpZWxkIiwicmVzaXplclRyaWdnZXIiLCJhbGxvd0ZvbGRlcnMiLCJGb2xkZXJzIiwiYlNraXBOZXh0SGlkZSIsImlkZW50aXRpZXNEcm9wZG93blRyaWdnZXIiLCJyZXBseVRvIiwicmVxdWVzdERzbiIsInJlcXVlc3RSZWFkUmVjZWlwdCIsIm1hcmtBc0ltcG9ydGFudCIsInNlbmRFcnJvciIsInNlbmRTdWNjZXNzQnV0U2F2ZUVycm9yIiwic2F2ZWRFcnJvciIsInNlbmRCdXR0b25TdWNjZXNzIiwic2VuZEVycm9yRGVzYyIsInNhdmVkRXJyb3JEZXNjIiwic2F2ZWRUaW1lIiwic2F2ZWRUaW1lVGV4dCIsIm1vbWVudG9yRm9ybWF0IiwiZW1wdHlUb0Vycm9yIiwiZW1wdHlUb0Vycm9yVG9vbHRpcCIsImF0dGFjaG1lbnRzSW5Qcm9jZXNzRXJyb3IiLCJhdHRhY2htZW50c0luRXJyb3JFcnJvciIsImF0dGFjaG1lbnRzRXJyb3JUb29sdGlwIiwic2hvd0NjIiwic2hvd0JjYyIsInNob3dSZXBseVRvIiwiZHJhZnRVaWQiLCJzZW5kaW5nIiwic2F2aW5nIiwiYXR0YWNobWVudHMiLCJhdHRhY2htZW50c0luUHJvY2VzcyIsImNvbXBsZXRlIiwiYXR0YWNobWVudHNJblJlYWR5IiwiYXR0YWNobWVudHNJbkVycm9yIiwiYXR0YWNobWVudHNDb3VudCIsImF0dGFjaG1lbnRzSW5FcnJvckNvdW50IiwiYXR0YWNobWVudHNJblByb2Nlc3NDb3VudCIsImF0dGFjaG1lbnRzUGxhY2UiLCJjb21wb3NlVXBsb2FkZXJCdXR0b24iLCJjb21wb3NlVXBsb2FkZXJEcm9wUGxhY2UiLCJkcmFnQW5kRHJvcEVuYWJsZWQiLCJkcmFnQW5kRHJvcE92ZXIiLCJkcmFnQW5kRHJvcFZpc2libGUiLCJhdHRhY2hlTXVsdGlwbGVBbGxvd2VkIiwiYWRkQXR0YWNobWVudEVuYWJsZWQiLCJjb21wb3NlRWRpdG9yQXJlYSIsIklkZW50aXR5U3RvcmUiLCJpZGVudGl0aWVzT3B0aW9ucyIsImZvcm1hdHRlZE5hbWUiLCJjdXJyZW50SWRlbnRpdHkiLCJjdXJyZW50SWRlbnRpdHlWaWV3IiwicmVzaXplciIsInNlbmRNZXNzYWdlUmVzcG9uc2UiLCJzYXZlTWVzc2FnZVJlc3BvbnNlIiwiaXNFbXB0eUZvcm0iLCJzYXZlQ29tbWFuZCIsImRyb3Bib3hBcGlLZXkiLCJkcml2ZVZpc2libGUiLCJkcml2ZUNhbGxiYWNrIiwib25NZXNzYWdlVXBsb2FkQXR0YWNobWVudHMiLCJ0cnlUb0Nsb3NlUG9wdXAiLCJlbWFpbHNTb3VyY2UiLCJhdXRvc2F2ZUZ1bmN0aW9uIiwiaVRpbWVyIiwic2VuZENvbW1hbmQiLCJTZW50IiwiZ2V0RGF0YSIsInByZXBlYXJBdHRhY2htZW50c0ZvclNlbmRPclNhdmUiLCJhdXRvc2F2ZVN0YXJ0IiwiZGVsZXRlQ29tbWFuZCIsIlBvcHVwc0Fza1ZpZXdNb2RlbCIsImRlbGV0ZU1lc3NhZ2VzRnJvbUZvbGRlcldpdGhvdXRDaGVjayIsInNraXBDb21tYW5kIiwiY29udGFjdHNDb21tYW5kIiwiZHJvcGJveENvbW1hbmQiLCJjaG9vc2UiLCJmaWxlcyIsImFkZERyb3Bib3hBdHRhY2htZW50IiwibGlua1R5cGUiLCJtdWx0aXNlbGVjdCIsImRyaXZlQ29tbWFuZCIsImRyaXZlT3BlblBvcHVwIiwiYXV0b3NhdmVTdG9wIiwiZlJlc3BvbnNlIiwiZ2V0QXV0b2NvbXBsZXRlIiwidGVybSIsImFEYXRhIiwib0VtYWlsSXRlbSIsIm9wZW5PcGVuUGdwUG9wdXAiLCJzZXRQbGFpbiIsInJlbG9hZERyYWZ0Rm9sZGVyIiwicmVsb2FkTWVzc2FnZUxpc3QiLCJmaW5kSWRlbnRpdHlCeU1lc3NhZ2UiLCJjb21wb3NlVHlwZSIsInJlc3VsdEluZGV4IiwicmVzdWx0SWRlbnRpdHkiLCJpZGVudGl0aWVzQ2FjaGUiLCJmRWFjaEhlbHBlciIsIlJlcGx5IiwiUmVwbHlBbGwiLCJGb3J3YXJkIiwiRm9yd2FyZEFzQXR0YWNobWVudCIsImRlbGl2ZXJlZFRvIiwiZnJvbSIsInNlbGVjdElkZW50aXR5Iiwic2V0U2lnbmF0dXJlRnJvbUlkZW50aXR5Iiwic3RhdHVzUmVzdWx0IiwiTmV3Rm9sZGVyIiwiTmV3VWlkIiwiTWVzc2FnZVN0b3JlIiwib25IaWRlIiwicmVzZXQiLCJmT25Jbml0IiwiYkh0bWwiLCJjb252ZXJTaWduYXR1cmUiLCJmcm9tTGluZSIsIm1vbWVudHMiLCJtb21lbnRSZWd4IiwiZW1haWxBcnJheVRvU3RyaW5nTGluZUhlbHBlciIsImV4ZWMiLCJzZXRTaWduYXR1cmUiLCJzaWduYXR1cmVJbnNlcnRCZWZvcmUiLCJvblNob3ciLCJvTWVzc2FnZU9yQXJyYXkiLCJhVG9FbWFpbHMiLCJhQ2NFbWFpbHMiLCJhQmNjRW1haWxzIiwic0N1c3RvbVN1YmplY3QiLCJzQ3VzdG9tUGxhaW5UZXh0IiwiaW5pdE9uU2hvdyIsImFkZEVtYWlsc1RvIiwib25XYXJtVXAiLCJtb2RlVG9nZ2xlIiwiZktvVmFsdWUiLCJiRnJpZW5kbHkiLCJzVHlwZSIsInNGcm9tIiwic0RhdGUiLCJzUmVwbHlUaXRsZSIsImV4Y2x1ZGVFbWFpbCIsIm1FbWFpbCIsImxpbmVDb21wb3NlVHlwZSIsImRhdGVUaW1lU3RhbXBJblVUQyIsImNsb25lZFRleHQiLCJyZXNwbHlBbGxQYXJ0cyIsInJlcGx5RW1haWxzIiwicHJlcGVhck1lc3NhZ2VBdHRhY2htZW50cyIsInNNZXNzYWdlSWQiLCJyZXBseUFsbEVtYWlscyIsInJlZmVyZW5jZXMiLCJFZGl0QXNOZXciLCJmcm9tVG9MaW5lIiwidG9Ub0xpbmUiLCJjY1RvTGluZSIsInNldEh0bWwiLCJzZXRGb2N1c0luUG9wdXAiLCJhZGRNZXNzYWdlQXNBdHRhY2htZW50IiwiZG93bmxvYWRzIiwiZ2V0QXR0YWNobWVudHNEb3dubG9hZHNGb3JVcGxvYWQiLCJ0ZW1wTmFtZSIsImF0dGFjaG1lbnQiLCJnZXRBdHRhY2htZW50QnlJZCIsIndhaXRpbmciLCJ1cGxvYWRpbmciLCJzZXRNZXNzYWdlQXR0YWNobWVudEZhaWxlZERvd25sb2FkVGV4dCIsIm9uU2hvd1dpdGhEZWxheSIsIm9uQnVpbGQiLCJpbml0VXBsb2FkZXIiLCJoYXNGb2N1cyIsImdldFNjcmlwdCIsImdhcGkiLCJUaW1lNXMiLCJhY2Nlc3NUb2tlbiIsInBpY2tlciIsIlJlc3BvbnNlIiwiQUNUSU9OIiwiQWN0aW9uIiwiUElDS0VEIiwiRE9DVU1FTlRTIiwic2V0UmVxdWVzdEhlYWRlciIsInJlc3BvbnNlVGV4dCIsImZFeHBvcnQiLCJtaW1lVHlwZSIsImV4cG9ydExpbmtzIiwiZG93bmxvYWRVcmwiLCJhZGREcml2ZUF0dGFjaG1lbnQiLCJzZW5kIiwiZHJpdmVDcmVhdGVQaWtlciIsImF1dGhUb2tlbiIsImFjY2Vzc190b2tlbiIsImxvYWQiLCJkcml2ZVBpY2tlciIsIlBpY2tlckJ1aWxkZXIiLCJhZGRWaWV3IiwiVmlld0lkIiwiRE9DUyIsInNldEFwcElkIiwic2V0T0F1dGhUb2tlbiIsInNldENhbGxiYWNrIiwiZW5hYmxlRmVhdHVyZSIsIkZlYXR1cmUiLCJOQVZfSElEREVOIiwiYnVpbGQiLCJzZXRWaXNpYmxlIiwiZ2V0VG9rZW4iLCJhdXRoUmVzdWx0IiwidG9rZW4iLCJhdXRob3JpemUiLCJjYW5jZWxBdHRhY2htZW50SGVscGVyIiwib0p1YSIsInVwbG9hZENhY2hlIiwiYXR0YWNobWVudFNpemVMaW1pdCIsIkp1YSIsImxvYWRlZCIsInRvdGFsIiwicHJvZ3Jlc3MiLCJmbG9vciIsIkZpbGVOYW1lIiwiU2l6ZSIsIkNvbXBvc2VBdHRhY2htZW50TW9kZWwiLCJlcnJvckNvZGUiLCJhdHRhY2htZW50SnNvbiIsIkF0dGFjaG1lbnQiLCJpbml0QnlVcGxvYWRKc29uIiwiaXNEcmFnQW5kRHJvcFN1cHBvcnRlZCIsImlzSW5saW5lIiwiQ0lEIiwiY29udGVudExvY2F0aW9uIiwiZnJvbU1lc3NhZ2UiLCJhZGRBdHRhY2htZW50SGVscGVyIiwiZHJvcGJveEZpbGUiLCJtU2l6ZSIsImJ5dGVzIiwiZHJpdmVGaWxlIiwiZmlsZVNpemUiLCJpc0xpbmtlZCIsImVzdGltYXRlZFNpemUiLCJjaWQiLCJyZW1vdmVMaW5rZWRBdHRhY2htZW50cyIsImFycmFjaG1lbnQiLCJpbmNsdWRlQXR0YWNobWVudEluUHJvZ3Jlc3MiLCJ3aXRob3V0QXR0YWNobWVudCIsIkFic3RyYWN0U2NyZWVuIiwib0Nyb3NzIiwic1NjcmVlbk5hbWUiLCJhVmlld01vZGVscyIsInJvdXRlcyIsImZNYXRjaGVyIiwib25Sb3V0ZSIsInJ1bGVzIiwiU1RPUkFHRV9LRVkiLCJUSU1FX0tFWSIsImlzU3RvcmFnZVN1cHBvcnRlZCIsInN0b3JhZ2VOYW1lIiwic3RvcmFnZUlzQXZhaWxhYmxlIiwic2V0SXRlbSIsInMiLCJnZXRJdGVtIiwicmVtb3ZlSXRlbSIsIlNFU1NfU1RPUkFHRSIsInNlc3Npb25TdG9yYWdlIiwiV0lOX1NUT1JBR0UiLCJfX2dldCIsIl9fc2V0Iiwic2V0VGltZXN0YW1wIiwiZ2V0VGltZXN0YW1wIiwiZ2V0SGFzaCIsImFwcERhdGEiLCJjbGVhckhhc2giLCJjaGVja1RpbWVzdGFtcCIsIkFic3RyYWN0Q2hlY2tib3giLCJkaXNhYmxlIiwicmVhZE9ubHkiLCJpbnZlcnRlZCIsImxhYmVsQW5pbWF0ZWQiLCJUZW1wbGF0ZVVzZXJTdG9yZSIsInRlbXBsYXRlc05hbWVzIiwic2tpcEZpcnN0Iiwic3RhdGljRmlsZVR5cGUiLCJVbmtub3duIiwibWltZVR5cGVQYXJ0cyIsIlZpZGVvIiwiQ29kZSIsIkVtbCIsIlRleHQiLCJQZGYiLCJDZXJ0aWZpY2F0ZSIsIkNlcnRpZmljYXRlQmluIiwiV29yZFRleHQiLCJTaGVldCIsIlByZXNlbnRhdGlvbiIsInN0YXRpY0ljb25DbGFzcyIsImZpbGVUeXBlIiwicmVzdWx0VGV4dCIsInJlc3VsdENsYXNzIiwic3RhdGljQ29tYmluZWRJY29uQ2xhc3MiLCJ0eXBlcyIsIkF0dGFjaG1lbnRNb2RlbCIsImZpbGVOYW1lRXh0IiwiaXNUaHVtYm5haWwiLCJjaWRXaXRoT3V0VGFncyIsIm1pbWVJbmRleCIsImZyYW1lZCIsImJSZXN1bHQiLCJNaW1lVHlwZSIsIkVzdGltYXRlZFNpemUiLCJJc0lubGluZSIsIklzTGlua2VkIiwiSXNUaHVtYm5haWwiLCJDb250ZW50TG9jYXRpb24iLCJEb3dubG9hZCIsIk1pbWVJbmRleCIsIkZyYW1lZCIsImlzSW1hZ2UiLCJpc01wMyIsImlzT2dnIiwiaXNXYXYiLCJoYXNUaHVtYm5haWwiLCJpc1RleHQiLCJpc1BkZiIsImlzRnJhbWVkIiwiZ29vZ2xlUHJldmlld1N1cHBvcnRlZCIsImhhc1ByZXZpZXciLCJoYXNQcmVwbGF5IiwibGlua0Rvd25sb2FkIiwibGlua1ByZXZpZXciLCJsaW5rVGh1bWJuYWlsIiwibGlua1RodW1ibmFpbFByZXZpZXdTdHlsZSIsImxpbmtGcmFtZWQiLCJsaW5rUHJldmlld0FzUGxhaW4iLCJsaW5rUHJldmlld01haW4iLCJnZW5lcmF0ZVRyYW5zZmVyRG93bmxvYWRVcmwiLCJob3N0IiwicGF0aG5hbWUiLCJldmVudERyYWdTdGFydCIsImxvY2FsRXZlbnQiLCJvcmlnaW5hbEV2ZW50IiwiZGF0YVRyYW5zZmVyIiwic2V0RGF0YSIsImljb25DbGFzcyIsImljb25UZXh0IiwiQ2hlY2tib3hDb21wb25lbnQiLCJvbkJsdXIiLCJvblJlYWR5Iiwib25Nb2RlQ2hhbmdlIiwiYmx1clRpbWVyIiwiX19yZXNpemFibGUiLCJfX2luaXRlZCIsIiRlbGVtZW50IiwicmVzaXplRWRpdG9yIiwicnVuT25CbHVyIiwiYmx1clRyaWdnZXIiLCJmb2N1c1RyaWdnZXIiLCJtb2RlIiwiY2xlYXJDYWNoZWRTaWduYXR1cmUiLCJleGVjQ29tbWFuZCIsImNsZWFyQ2FjaGUiLCJjaGVja0RpcnR5IiwicmVzZXREaXJ0eSIsIndyYXBJc0h0bWwiLCJfX3BsYWluIiwiZ2V0UmF3RGF0YSIsInNldE1vZGUiLCJyZXBsYWNlSHRtbCIsImZpbmQiLCJzZXRSYXdEYXRhIiwiaW5pdEZ1bmMiLCJjb25maWciLCJhbGxvd1NvdXJjZSIsImJpdGkiLCJ0b29sYmFyR3JvdXBzIiwiX19jZmdJbml0ZWQiLCJyZW1vdmVCdXR0b25zIiwicmVtb3ZlUGx1Z2lucyIsImVudGVyTW9kZSIsIkNLRURJVE9SIiwiRU5URVJfQlIiLCJzaGlmdEVudGVyTW9kZSIsIkVOVEVSX1AiLCJlbnYiLCJpc0NvbXBhdGlibGUiLCJUYWIiLCJGaWxlUmVhZGVyIiwiZ2V0RmlsZXNDb3VudCIsImZpbGUiLCJnZXRGaWxlIiwiaW1hZ2VJZCIsInJlYWRlciIsIm9ubG9hZGVuZCIsInJlYWRBc0RhdGFVUkwiLCJyZW1vdmVNZW51SXRlbSIsIl9faW5pdEVkaXRvciIsImZvY3VzTWFuYWdlciIsImlubmVySGVpZ2h0Iiwic2V0UmVhZE9ubHkiLCJzdHlsZXMiLCJyYWlubG9vcCIsInJhaW5sb29wVGlwIiwicmFpbmxvb3BFcnJvclRpcCIsIkZpbHRlclVzZXJTdG9yZSIsIm1vZHVsZXMiLCJBc2tQb3B1cFZpZXciLCJhc2tEZXNjIiwieWVzQnV0dG9uIiwibm9CdXR0b24iLCJ5ZXNGb2N1cyIsIm5vRm9jdXMiLCJmWWVzQWN0aW9uIiwiZk5vQWN0aW9uIiwiYkZvY3VzWWVzT25TaG93IiwiUG9wdXBBc2siLCJjbGVhclBvcHVwIiwieWVzQ2xpY2siLCJub0NsaWNrIiwiZlllc0Z1bmMiLCJmTm9GdW5jIiwiaXNGb2N1c1llc09uU2hvdyIsIlF1b3RhVXNlclN0b3JlIiwidXNhZ2UiLCJwZXJjZW50YWdlIiwicG9wdWxhdGVEYXRhIiwiQml0TGVuZ3RoMTAyNCIsIkxhbmd1YWdlc1BvcHVwVmlldyIsImZMYW5nIiwibGFuZ3MiLCJzZWxlY3RlZCIsInNldExhbmd1YWdlU2VsZWN0aW9uIiwibGFuZ3VhZ2VUb29sdGlwTmFtZSIsImN1cnJlbnRMYW5nIiwib25CZWZvcmVTaG93IiwiZkxhbmd1YWdlIiwiY2hhbmdlTGFuZ3VhZ2UiLCJBcHAiLCJybCIsInBsdWdpblNldHRpbmdzR2V0IiwicGx1Z2luUmVtb3RlUmVxdWVzdCIsIkVudW1zIiwiYm9vdHN0YXJ0IiwiVGltZTEwbXMiLCJfX0FQUF9CT09UIiwiZkVycm9yQ2FsbGJhY2siLCJyYWlubG9vcFRFTVBMQVRFUyIsImlubmVySFRNTCIsImFsbG93TGFuZ3VhZ2VzT25TZXR0aW5ncyIsImFsbG93TGFuZ3VhZ2VzT25Mb2dpbiIsIm5ld01vdmVUb0ZvbGRlciIsImludGVyZmFjZUFuaW1hdGlvbiIsImFuaW0iLCJkZWZhdWx0UmVzcG9uc2UiLCJzUmVxdWVzdEFjdGlvbiIsIm9SZXF1ZXN0UGFyYW1ldGVycyIsImZDYWxsIiwibG9naW5BbmRMb2dvdXRSZWxvYWQiLCJDbGVhckF1dGgiLCJMb2dvdXQiLCJjbGVhckNsaWVudFNpZGVUb2tlbiIsImFqYXhSZXF1ZXN0IiwiZlJlc3VsdENhbGxiYWNrIiwiaVRpbWVPdXQiLCJzR2V0QWRkIiwiYWJvcnRBY3Rpb25zIiwiaXNQb3N0IiwiaGVhZGVycyIsImFjdGlvblRvQWJvcnQiLCJfX2Fib3J0ZWQiLCJYVG9rZW4iLCJvRGVmQWpheCIsImdsb2JhbCIsImFsd2F5cyIsIlRpbWUiLCJVcGRhdGVUb2tlbiIsInNldENsaWVudFNpZGVUb2tlbiIsImNhdGNoIiwib1BhcmFtZXRlcnMiLCJpVGltZW91dCIsImFBYm9ydEFjdGlvbnMiLCJnZXRQdWJsaWNLZXkiLCJqc1ZlcnNpb24iLCJzVmVyc2lvbiIsIkFic3RyYWN0U2V0dGluZ3NTY3JlZW4iLCJtZW51Iiwib0N1cnJlbnRTdWJTY3JlZW4iLCJvVmlld01vZGVsUGxhY2UiLCJzZXR1cFNldHRpbmdzIiwic2V0dGluZ3NTY3JlZW4iLCJSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbCIsInZpZXdNb2RlbFBsYWNlIiwiU2V0dGluZ3NWaWV3TW9kZWwiLCJEaXNhYmxlZFNldHRpbmdzVmlld01vZGVsIiwidG1wbCIsIlJlbW92ZVNldHRpbmdzVmlld01vZGVsIiwiRGVmYXVsdFZpZXdNb2RlbCIsImRlZmF1bHRSb3V0ZSIsInN1Ym5hbWUiLCJub3JtYWxpemVfIiwicnF1ZXN0IiwidmFscyIsIkFic3RyYWN0QXBwIiwiZ29vZ2xlUHJldmlld1N1cHBvcnRlZENhY2hlIiwiaXNMb2NhbEF1dG9jb21wbGV0ZSIsImlmcmFtZSIsImxhc3RFcnJvclRpbWUiLCJpSCIsImlXIiwiZ2V0QXBwbGljYXRpb25Db25maWd1cmF0aW9uIiwiZGVmYXVsdF8iLCJhcHBsaWNhdGlvbkNvbmZpZ3VyYXRpb24iLCJvTGluayIsImhyZWYiLCJjcmVhdGVFdmVudCIsIm9FIiwiTW91c2VFdmVudHMiLCJpbml0RXZlbnQiLCJkaXNwYXRjaEV2ZW50Iiwic2V0V2luZG93VGl0bGUiLCJyZWRpcmVjdFRvQWRtaW5QYW5lbCIsIl9fcmxhaF9jbGVhciIsIl9fcmxhaF9zZXQiLCJpbklmcmFtZSIsImN1c3RvbUxvZ291dExpbmsiLCJoaXN0b3J5QmFjayIsImhpc3RvcnkiLCJiYWNrIiwibW9iaWxlIiwiY29tcG9uZW50cyIsInJlZ2lzdGVyIiwiVGltZTFzIiwic3NtIiwiYWRkU3RhdGUiLCJvbkxlYXZlIiwiQWJzdHJhY3RCb290IiwiQWJzdHJhY3RSYWRpbyIsInByb2dyZXNzVGV4dCIsInAiLCJwcm9ncmVzc1N0eWxlIiwibG9jYWxTaXplIiwiZmlsZUV4dCIsIlRlbXBOYW1lIiwiQ29udGFjdFByb3BlcnR5TW9kZWwiLCJ0eXBlU3RyIiwicGxhY2Vob2xkZXJWYWx1ZSIsImxhcmdlVmFsdWUiLCJOb3RlIiwiRm9sZGVyU3lzdGVtUG9wdXBWaWV3Iiwic0Nob29zZU9uVGV4dCIsInNVbnVzZVRleHQiLCJmb2xkZXJTZWxlY3RMaXN0IiwiZlNldFN5c3RlbUZvbGRlcnMiLCJmU2F2ZVN5c3RlbUZvbGRlcnMiLCJTZW50Rm9sZGVyIiwiRHJhZnRGb2xkZXIiLCJTcGFtRm9sZGVyIiwiVHJhc2hGb2xkZXIiLCJBcmNoaXZlRm9sZGVyIiwiTnVsbEZvbGRlciIsIm5vdGlmaWNhdGlvblR5cGUiLCJBYnN0cmFjdEJhc2ljUHJvbWlzZXMiLCJvUHJvbWlzZXNTdGFjayIsImZhc3RSZXNvbHZlIiwibURhdGEiLCJmYXN0UmVqZWN0IiwiQWJzdHJhY3RTeXN0ZW1Ecm9wRG93blVzZXJWaWV3IiwibG9nb0ltZyIsImxvZ29UaXRsZSIsIm1vYmlsZURldmljZSIsImFsbG93U2V0dGluZ3MiLCJhbGxvd0hlbHAiLCJIZWxwIiwiYWNjb3VudEVtYWlsIiwiYWNjb3VudE1lbnVEcm9wZG93blRyaWdnZXIiLCJjYXBhQWRkaXRpb25hbEFjY291bnRzIiwiQWRkaXRpb25hbEFjY291bnRzIiwiYWRkQWNjb3VudENsaWNrIiwic3RvcFBsYXkiLCJhY2NvdW50Q2xpY2siLCJhY2NvdW50IiwiZW1haWxUaXRsZSIsInNldHRpbmdzQ2xpY2siLCJzZXR0aW5nc0hlbHAiLCJsb2dvdXRDbGljayIsIlNlbGVjdG9yIiwia29MaXN0Iiwia29TZWxlY3RlZEl0ZW0iLCJrb0ZvY3VzZWRJdGVtIiwic0l0ZW1TZWxlY3RvciIsInNJdGVtU2VsZWN0ZWRTZWxlY3RvciIsInNJdGVtQ2hlY2tlZFNlbGVjdG9yIiwic0l0ZW1Gb2N1c2VkU2VsZWN0b3IiLCJsaXN0Q2hlY2tlZCIsImlzTGlzdENoZWNrZWQiLCJmb2N1c2VkSXRlbSIsInNlbGVjdGVkSXRlbSIsIml0ZW1TZWxlY3RlZFRocm90dGxlIiwic2VsZWN0ZWRJdGVtVXNlQ2FsbGJhY2siLCJpU2VsZWN0TmV4dEhlbHBlciIsImlGb2N1c2VkTmV4dEhlbHBlciIsIm9Db250ZW50VmlzaWJsZSIsIm9Db250ZW50U2Nyb2xsYWJsZSIsInNMYXN0VWlkIiwib0NhbGxiYWNrcyIsIml0ZW1TZWxlY3RlZCIsImF1dG9TZWxlY3QiLCJzdWJJdGVtIiwiZ2V0SXRlbVVpZCIsImFDYWNoZSIsImFDaGVja2VkQ2FjaGUiLCJtRm9jdXNlZCIsIm1TZWxlY3RlZCIsImFJdGVtcyIsImdldE5leHQiLCJpc05leHRGb2N1c2VkIiwiaXNDaGVja2VkIiwiaXNTZWxlY3RlZCIsInNjcm9sbFRvRm9jdXNlZCIsIm9uSXRlbVNlbGVjdCIsImdvRG93biIsImZvcmNlU2VsZWN0IiwibmV3U2VsZWN0UG9zaXRpb24iLCJEb3duIiwiZ29VcCIsIlVwIiwidW5zZWxlY3QiLCJjb250ZW50VmlzaWJsZSIsImNvbnRlbnRTY3JvbGxhYmxlIiwiYWN0aW9uQ2xpY2siLCJjdXJyZW50VGFyZ2V0IiwiZXZlbnRLZXkiLCJJbnNlcnQiLCJTcGFjZSIsIkhvbWUiLCJFbmQiLCJQYWdlVXAiLCJQYWdlRG93biIsInNoaWZ0Iiwib25BdXRvU2VsZWN0IiwiZG9VcFVwT3JEb3duRG93biIsIm9uVXBVcE9yRG93bkRvd24iLCJnZXRJdGVtVWlkQ2FsbGJhY2siLCJvbkl0ZW1HZXRVaWQiLCJpRXZlbnRLZXlDb2RlIiwiYlNoaWZ0S2V5IiwiYkZvcmNlU2VsZWN0IiwiaXNOZXh0IiwiaXNTdG9wIiwicGFnZVN0ZXAiLCJsaXN0TGVuIiwiJGZvY3VzZWQiLCJ2aXNpYmxlSGVpZ2h0IiwiZm9jdXNlZEhlaWdodCIsIm91dGVySGVpZ2h0Iiwic2Nyb2xsVG9Ub3AiLCJmYXN0IiwiZXZlbnRDbGlja0Z1bmN0aW9uIiwiY2hhbmdlUmFuZ2UiLCJpc0luUmFuZ2UiLCJsaXN0SXRlbSIsImxpbmVVaWQiLCJtZXRhS2V5Iiwic2VsZWN0TWVzc2FnZUl0ZW0iLCJldmVudE5hbWUiLCJtZXNzYWdlSXRlbSIsInN1YmplY3RQcmVmaXgiLCJzdWJqZWN0U3VmZml4IiwicHJpb3JpdHkiLCJOb3JtYWwiLCJwcm94eSIsImZyb21FbWFpbFN0cmluZyIsImZyb21DbGVhckVtYWlsU3RyaW5nIiwidG9FbWFpbHNTdHJpbmciLCJ0b0NsZWFyRW1haWxzU3RyaW5nIiwic2VuZGVyRW1haWxzU3RyaW5nIiwic2VuZGVyQ2xlYXJFbWFpbHNTdHJpbmciLCJ1bnN1YnNyaWJlTGlua3MiLCJoYXNBdHRhY2htZW50cyIsImF0dGFjaG1lbnRzU3BlY0RhdGEiLCJhdHRhY2htZW50SWNvbkNsYXNzIiwicGdwU2lnbmVkVmVyaWZ5U3RhdHVzIiwicGdwU2lnbmVkVmVyaWZ5VXNlciIsInJlYWRSZWNlaXB0IiwiaXNJbXBvcnRhbnQiLCJIaWdoIiwib01lc3NhZ2VNb2RlbCIsInByb3BlcnRpZXMiLCJjYXJyeSIsInByb3BlcnR5IiwiZ2V0UmVjaXBpZW50c0VtYWlscyIsImNvbXB1dGVTZW5kZXJFbWFpbCIsIlByaW9yaXR5IiwiTG93IiwiSGFzaCIsIlJlcXVlc3RIYXNoIiwiRXh0ZXJuYWxQcm94eSIsIlRvIiwiQ2MiLCJCY2MiLCJSZXBseVRvIiwiRGVsaXZlcmVkVG8iLCJVbnN1YnNyaWJlTGlua3MiLCJTdWJqZWN0UGFydHMiLCJEYXRlVGltZVN0YW1wSW5VVEMiLCJIYXNBdHRhY2htZW50cyIsIkF0dGFjaG1lbnRzU3BlY0RhdGEiLCJUaHJlYWRzIiwiRHJhZnRJbmZvIiwiTWVzc2FnZUlkIiwiSW5SZXBseVRvIiwiUmVmZXJlbmNlcyIsIlBncFNpZ25lZCIsIlBncEVuY3J5cHRlZCIsImZvdW5kZWRDSURzIiwiRm91bmRlZENJRHMiLCJpbml0QXR0YWNobWVudHNGcm9tSnNvbiIsIkF0dGFjaG1lbnRzIiwiUmVhZFJlY2VpcHQiLCJoYXNVbnN1YnNyaWJlTGlua3MiLCJnZXRGaXJzdFVuc3Vic3JpYmVMaW5rIiwiSXNTZWVuIiwiSXNGbGFnZ2VkIiwiSXNBbnN3ZXJlZCIsIklzRm9yd2FyZGVkIiwiSXNSZWFkUmVjZWlwdCIsIklzRGVsZXRlZCIsImZyb21Ea2ltRGF0YSIsImJjY1RvTGluZSIsInJlcGx5VG9Ub0xpbmUiLCJsaW5lQXNDc3MiLCJjbGFzc25hbWVzIiwiaGFzVmlzaWJsZUF0dGFjaG1lbnRzIiwiZmluZEF0dGFjaG1lbnRCeUNpZCIsImZpbmRBdHRhY2htZW50QnlDb250ZW50TG9jYXRpb24iLCJtZXNzYWdlSWQiLCJpblJlcGx5VG8iLCJmcm9tQXNTaW5nbGVFbWFpbCIsInZpZXdMaW5rIiwiZG93bmxvYWRMaW5rIiwiZXhjbHVkZUVtYWlscyIsImxhc3QiLCJ0b1Jlc3VsdCIsImNjUmVzdWx0IiwidGV4dEJvZHlUb1N0cmluZyIsImF0dGFjaG1lbnRzVG9TdHJpbmdMaW5lIiwiYXR0YWNoTGluZXMiLCJ2aWV3UG9wdXBNZXNzYWdlIiwic2hvd0xhenlFeHRlcm5hbEltYWdlc0luQm9keSIsImNjTGluZSIsInByaW50TWVzc2FnZSIsImdlbmVyYXRlVWlkIiwibG96YWQiLCJ0aHJlc2hvbGQiLCJkYXRhc2V0Iiwib3JpZ2luYWwiLCJvcGFjaXR5Iiwib2JzZXJ2ZSIsImxhenkiLCJyZXBsYWNlUGxhbmVUZXh0Qm9keSIsIkFjY291bnRQb3B1cFZpZXciLCJzdWJtaXRSZXF1ZXN0IiwiZW1haWxFcnJvciIsInBhc3N3b3JkRXJyb3IiLCJzdWJtaXRFcnJvciIsInN1Ym1pdEVycm9yQWRkaXRpb25hbCIsImVtYWlsRm9jdXMiLCJhZGRBY2NvdW50Q29tbWFuZCIsIkVycm9yTWVzc2FnZUFkZGl0aW9uYWwiLCJjYW5CZUVkaXQiLCJJZGVudGl0eVBvcHVwVmlldyIsImVkaXQiLCJvd25lciIsImFkZE9yRWRpdElkZW50aXR5Q29tbWFuZCIsIm9uSGlkZVdpdGhEZWxheSIsIlNhdmVUcmlnZ2VyQ29tcG9uZW50IiwidmVydGljYWxBbGlnbiIsInNldFN0YXRlIiwiSW5wdXRDb21wb25lbnQiLCJTZWxlY3RDb21wb25lbnQiLCJvcHRpb25zVGV4dCIsIm9wdGlvbnNWYWx1ZSIsIm9wdGlvbnNDYXB0aW9uIiwiUmFkaW9Db21wb25lbnQiLCJERUZBVUxUX1JPV1MiLCJUZXh0QXJlYUNvbXBvbmVudCIsInJvd3MiLCJzcGVsbGNoZWNrIiwiRGF0ZUNvbXBvbmVudCIsIlNjcmlwdENvbXBvbmVudCIsInRlbXBsYXRlTm9kZXMiLCJvdXRlckhUTUwiLCJyZXBsYWNlV2l0aCIsIm5vZGVWYWx1ZSIsIkNoZWNrYm94TWF0ZXJpYWxEZXNpZ25Db21wb25lbnQiLCJhbmltYXRpb25Cb3giLCJhbmltYXRpb25DaGVja21hcmsiLCJhbmltYXRpb25Cb3hTZXRUcnVlIiwiYW5pbWF0aW9uQ2hlY2ttYXJrU2V0VHJ1ZSIsInRyaWdnZXJBbmltYXRpb24iLCJib3giLCJBcHBVc2VyIiwibW92ZUNhY2hlIiwicXVvdGFEZWJvdW5jZSIsIm1vdmVPckRlbGV0ZVJlc3BvbnNlSGVscGVyIiwibWVzc2FnZXNNb3ZlVHJpZ2dlciIsIlRpbWUybSIsIlRpbWUzbSIsIlRpbWU1bSIsIlRpbWUxMG0iLCJUaW1lMTVtIiwiVGltZTIwbSIsIndha2VVcCIsIlRpbWU2MG0iLCJiYWNrc3RyZXRjaCIsImZhZGUiLCJjZW50ZXJlZFgiLCJjZW50ZXJlZFkiLCJiRHJvcFBhZ2VQb3NpdGlvbiIsImJEcm9wQ3VycmVuRm9sZGVyQ2FjaGUiLCJyZWNhY2hlSW5ib3hNZXNzYWdlTGlzdCIsImZSZXN1bHRGdW5jIiwib0NvbnRhY3RzIiwiQ29udGFjdFN0b3JlIiwic1RyYXNoRm9sZGVyIiwic1NwYW1Gb2xkZXIiLCJpc1NwYW0iLCJpc1RyYXNoIiwiaXNIYW0iLCJtZXNzYWdlc01vdmVIZWxwZXIiLCJ1aWRzRm9yTW92ZSIsIm1lc3NhZ2VzQ29weUhlbHBlciIsInNGcm9tRm9sZGVyRnVsbE5hbWVSYXciLCJzVG9Gb2xkZXJGdWxsTmFtZVJhdyIsImFVaWRGb3JDb3B5IiwibWVzc2FnZXNEZWxldGVIZWxwZXIiLCJhVWlkRm9yUmVtb3ZlIiwiYWxlcnQiLCJkZWxldGVNZXNzYWdlc0Zyb21Gb2xkZXIiLCJpRGVsZXRlVHlwZSIsImJVc2VGb2xkZXIiLCJvTW92ZUZvbGRlciIsIm5TZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uIiwiTm90U3BhbSIsIm1vdmVNZXNzYWdlc1RvRm9sZGVyIiwiYVVpZEZvck1vdmUiLCJiQ29weSIsIm9Gcm9tRm9sZGVyIiwib1RvRm9sZGVyIiwicHJvbSIsIlByb21pc2VzIiwiZm9sZGVyc1Byb21pc2VzQWN0aW9uSGVscGVyIiwicHJvbWlzZSIsImVycm9yRGVmQ29kZSIsInJlbG9hZE9wZW5QZ3BLZXlzIiwib3BlbnBncEtleXMiLCJnZXRBbGxLZXlzIiwiYUVtYWlscyIsImFVc2VycyIsInByaW1hcnlVc2VyIiwiZ2V0UHJpbWFyeVVzZXIiLCJ1c2VySWQiLCJ1c2VyaWQiLCJ1c2VycyIsIk9wZW5QZ3BLZXlNb2RlbCIsImdldEZpbmdlcnByaW50IiwiZ2V0S2V5SWQiLCJnZXRLZXlJZHMiLCJhcm1vciIsImJCb290IiwiY291bnRzIiwic0FjY291bnRFbWFpbCIsIkFjY291bnRzIiwib0FjY291bnQiLCJBY2NvdW50TW9kZWwiLCJJZGVudGl0aWVzIiwiaWRlbnRpdHlEYXRhIiwiSWQiLCJJZGVudGl0eU1vZGVsIiwiU2lnbmF0dXJlIiwiU2lnbmF0dXJlSW5zZXJ0QmVmb3JlIiwiVGVtcGxhdGVTdG9yZSIsIlRlbXBsYXRlcyIsInRlbXBsYXRlRGF0YSIsIlRlbXBsYXRlTW9kZWwiLCJRdW90YVN0b3JlIiwiY2hlY2siLCJmb2xkZXJGcm9tQ2FjaGUiLCJGbGFncyIsImJvb3QiLCJMaXN0IiwiaVNldEFjdGlvbiIsImFscmVhZHlVbnJlYWQiLCJyb290VWlkcyIsImdvb2dsZUNvbm5lY3QiLCJ0d2l0dGVyQ29ubmVjdCIsImZhY2Vib29rQ29ubmVjdCIsImZpcmVBbGxBY3Rpb25zIiwiR29vZ2xlIiwiRmFjZWJvb2siLCJUd2l0dGVyIiwiYXV0b2NvbXBsZXRlQ2FsbGJhY2siLCJzZXRFeHBhbmRlZEZvbGRlciIsInNGdWxsTmFtZUhhc2giLCJiRXhwYW5kZWQiLCJhRXhwYW5kZWRMaXN0IiwiTG9jYWwiLCJFeHBhbmRlZEZvbGRlcnMiLCJ3aXRob3V0IiwiaW5pdEhvcml6b250YWxMYXlvdXRSZXNpemVyIiwic0NsaWVudFNpZGVLZXlOYW1lIiwiYm90dG9tIiwibWluSGVpZ2h0IiwibWF4SGVpZ2h0IiwiZlNldEhlaWdodCIsImZSZXNpemVDcmVhdGVGdW5jdGlvbiIsImZSZXNpemVTdGFydEZ1bmN0aW9uIiwiZlJlc2l6ZVJlc2l6ZUZ1bmN0aW9uIiwiZlJlc2l6ZVN0b3BGdW5jdGlvbiIsIm9FdmVudCIsIm9PYmplY3QiLCJvT3B0aW9ucyIsImhhbmRsZXMiLCJmRGlzYWJsZSIsImJEaXNhYmxlIiwicmVzaXphYmxlIiwiaUhlaWdodCIsImluaXRWZXJ0aWNhbExheW91dFJlc2l6ZXIiLCJkaXNhYmxlZFdpZHRoIiwibWluV2lkdGgiLCJsTGVmdCIsInJpZ2h0IiwibUxlZnRXaWR0aCIsImZTZXRXaWR0aCIsImlXaWR0aCIsIm9iaiIsIm1heFdpZHRoIiwiU2l6ZTM1MHB4IiwiYm9vdHN0YXJ0VHdvRmFjdG9yU2NyZWVuIiwiYm9vdHN0YXJ0V2VsY29tZVBvcHVwIiwiYm9vdHN0YXJ0TG9naW5TY3JlZW4iLCJjdXN0b21Mb2dpbkxpbmsiLCJMb2dpblVzZXJTY3JlZW4iLCJib290ZW5kIiwicHJvZ3Jlc3NKcyIsImNvbnRhY3RzU3luY0ludGVydmFsIiwianNIYXNoIiwiYWxsb3dHb29nbGUiLCJhbGxvd0ZhY2Vib29rIiwiYWxsb3dUd2l0dGVyIiwiVHdvRmFjdG9yIiwiVHdvRmFjdG9yRm9yY2UiLCJjcnlwdG8iLCJnZXRSYW5kb21WYWx1ZXMiLCJPcGVuUEdQIiwib3BlbnBncENhbGxiYWNrIiwiV29ya2VyIiwiaW5pdFdvcmtlciIsIktleXJpbmciLCJNYWlsQm94VXNlclNjcmVlbiIsIlNldHRpbmdzVXNlclNjcmVlbiIsInNGIiwiVGltZTEwcyIsIlRpbWUycyIsInJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyIiwiQ29tcG9zZXIiLCJGb2xkZXJMaXN0U2l6ZSIsIm1vbWVudFJlbG9hZCIsIkJBU0VfNjRfQ0hSIiwidXJsc2FmZV9lbmNvZGUiLCJlbmNvZGUiLCJvdXRwdXQiLCJjaHIxIiwiY2hyMiIsImNocjMiLCJlbmMxIiwiZW5jMiIsImVuYzMiLCJlbmM0IiwiaSIsIl91dGY4X2VuY29kZSIsImNoYXJDb2RlQXQiLCJjaGFyQXQiLCJkZWNvZGUiLCJfdXRmOF9kZWNvZGUiLCJzdHJpbmciLCJ1dGZ0ZXh0IiwibiIsImwiLCJjIiwiYzIiLCJjMyIsIlByb21pc2VzVXNlclBvcHVsYXRvciIsImlzRm9sZGVyRXhwYW5kZWQiLCJleHBhbmRlZEZvbGRlcnMiLCJub3JtYWxpemVGb2xkZXIiLCJDYWNoZSIsImZvbGRlclJlc3BvbnNlUGFyc2VSZWMiLCJzTmFtZXNwYWNlIiwiYkRpc3BsYXlTcGVjU2V0dGluZyIsIm9Gb2xkZXIiLCJvQ2FjaGVGb2xkZXIiLCJGdWxsTmFtZVJhdyIsIkZvbGRlck1vZGVsIiwiQ2hlY2thYmxlIiwiY29sbGFwc2VkIiwiRXh0ZW5kZWQiLCJTdWJGb2xkZXJzIiwiY250IiwiQ291bnRSZWMiLCJOYW1lc3BhY2UiLCJJc1RocmVhZHNTdXBwb3J0ZWQiLCJPcHRpbWl6ZWQiLCJTeXN0ZW1Gb2xkZXJzIiwiU0VOVCIsIkRSQUZUUyIsIkpVTksiLCJUUkFTSCIsIkFMTCIsIkZvbGRlcnNMYXNoSGFzaCIsIkZvbGRlcnNIYXNoIiwiRmlsdGVyTW9kZWwiLCJjb25kaXRpb25zIiwiY29uZGl0aW9uc1R5cGUiLCJBbnkiLCJhY3Rpb25WYWx1ZSIsImFjdGlvblZhbHVlU2Vjb25kIiwiYWN0aW9uVmFsdWVUaGlyZCIsImFjdGlvblZhbHVlRm91cnRoIiwiYWN0aW9uTWFya0FzUmVhZCIsImFjdGlvbktlZXAiLCJhY3Rpb25Ob1N0b3AiLCJhY3Rpb25UeXBlIiwiTW92ZVRvIiwiZkdldFJlYWxGb2xkZXJOYW1lIiwiZGVsaW1pdGVyIiwibmFtZVN1YiIsIkZPTERFUiIsIkVNQUlMIiwiVmFjYXRpb24iLCJSZWplY3QiLCJEaXNjYXJkIiwiYWN0aW9uVGVtcGxhdGUiLCJkZWxldGVBY2Nlc3MiLCJjYW5CZURlbGV0ZWQiLCJnZW5lcmF0ZUlEIiwiY29uZCIsIklEIiwiRW5hYmxlZCIsIkNvbmRpdGlvbnNUeXBlIiwiQ29uZGl0aW9ucyIsIkFjdGlvblZhbHVlIiwiQWN0aW9uVmFsdWVTZWNvbmQiLCJBY3Rpb25WYWx1ZVRoaXJkIiwiQWN0aW9uVmFsdWVGb3VydGgiLCJBY3Rpb25UeXBlIiwiU3RvcCIsIktlZXAiLCJNYXJrQXNSZWFkIiwiYWRkQ29uZGl0aW9uIiwiRmlsdGVyQ29uZGl0aW9uTW9kZWwiLCJyZW1vdmVDb25kaXRpb24iLCJvQ29uZGl0aW9uVG9EZWxldGUiLCJzZXRSZWNpcGllbnRzIiwiZmlsdGVyQ29uZGl0aW9uIiwiY2xvbmVTZWxmIiwiQ29udGFpbnMiLCJ2YWx1ZVNlY29uZCIsIkhlYWRlciIsIkZpZWxkIiwiVHlwZSIsIlZhbHVlIiwiVmFsdWVTZWNvbmQiLCJmaWx0ZXJDb25kIiwiS2V5Ym9hcmRTaG9ydGN1dHNIZWxwUG9wdXBWaWV3IiwiUG9wdXBLZXlib2FyZFNob3J0Y3V0c0hlbHAiLCIkdGFicyIsInRhYiIsIkNvbnRhY3RzUG9wdXBWaWV3IiwiY29udGFjdHNDaGVja2VkT3JTZWxlY3RlZCIsImJWIiwidmlld0hhc05vbkVtcHR5UmVxdWlyZWRQcm9wZXJ0aWVzIiwiYlJlYWRPbmx5Iiwidmlld1JlYWRPbmx5Iiwidmlld1NhdmluZyIsImZGYXN0Q2xlYXJFbXB0eUxpc3RIZWxwZXIiLCJ2aWV3UHJvcGVydGllcyIsInJlbW92ZUFsbCIsImJCYWNrVG9Db21wb3NlIiwic0xhc3RDb21wb3NlRm9jdXNlZEZpZWxkIiwiYWxsb3dFeHBvcnQiLCJjb250YWN0c0NvdW50IiwiY3VycmVudENvbnRhY3QiLCJpbXBvcnRVcGxvYWRlckJ1dHRvbiIsImNvbnRhY3RzUGFnZSIsImNvbnRhY3RzUGFnZUNvdW50IiwiY29udGFjdHNQYWdlbmF0b3IiLCJlbXB0eVNlbGVjdGlvbiIsInZpZXdDbGVhclNlYXJjaCIsInZpZXdJRCIsInZpZXdTYXZlVHJpZ2dlciIsInZpZXdQcm9wZXJ0aWVzTmFtZXMiLCJGaXJzdE5hbWUiLCJMYXN0TmFtZSIsInZpZXdQcm9wZXJ0aWVzT3RoZXIiLCJOaWNrIiwidmlld1Byb3BlcnRpZXNFbWFpbHMiLCJ2aWV3UHJvcGVydGllc1dlYiIsIldlYiIsIm5hbWVzIiwiZkZpbHRlciIsInZpZXdQcm9wZXJ0aWVzUGhvbmVzIiwiUGhvbmUiLCJ2aWV3UHJvcGVydGllc0VtYWlsc05vbkVtcHR5IiwicHJvcGVydHlGb2N1c2VkIiwidmlld1Byb3BlcnRpZXNFbWFpbHNFbXB0eUFuZE9uRm9jdXNlZCIsInZpZXdQcm9wZXJ0aWVzUGhvbmVzRW1wdHlBbmRPbkZvY3VzZWQiLCJ2aWV3UHJvcGVydGllc1dlYkVtcHR5QW5kT25Gb2N1c2VkIiwidmlld1Byb3BlcnRpZXNPdGhlckVtcHR5QW5kT25Gb2N1c2VkIiwicmVsb2FkQ29udGFjdExpc3QiLCJjb250YWN0c0NoZWNrZWQiLCJjb250YWN0c0NoZWNrZWRPclNlbGVjdGVkVWlkcyIsImNvbnRhY3QiLCJpZENvbnRhY3QiLCJzZWxlY3RvciIsInBvcHVsYXRlVmlld0NvbnRhY3QiLCJiRHJvcFBhZ2VBZnRlckRlbGV0ZSIsIndhdGNoRGlydHkiLCJ3YXRjaEhhc2giLCJ2aWV3SGFzaCIsIkNvbnRhY3RMaXN0IiwibmV3Q29tbWFuZCIsImRlbGV0ZVNlbGVjdGVkQ29udGFjdHMiLCJuZXdNZXNzYWdlQ29tbWFuZCIsImFFIiwidG9FbWFpbHMiLCJjY0VtYWlscyIsImJjY0VtYWlscyIsImFDIiwiZ2V0TmFtZUFuZEVtYWlsSGVscGVyIiwiY2xlYXJDb21tYW5kIiwicmVxdWVzdFVpZCIsIkZ1bGxOYW1lIiwicmVzIiwiUmVxdWVzdFVpZCIsIlJlc3VsdElEIiwic3luY0NvbW1hbmQiLCJnZXRQcm9wZXJ0eVBsYWNlaG9sZGVyIiwiYWRkTmV3UHJvcGVydHkiLCJhZGROZXdPckZvY3VzUHJvcGVydHkiLCJhZGROZXdFbWFpbCIsImFkZE5ld1Bob25lIiwiYWRkTmV3V2ViIiwiYWRkTmV3Tmlja25hbWUiLCJhZGROZXdOb3RlcyIsImFkZE5ld0JpcnRoZGF5IiwiQmlydGhkYXkiLCJleHBvcnRWY2YiLCJleHBvcnRDc3YiLCJqIiwicmVtb3ZlQ2hlY2tlZE9yU2VsZWN0ZWRDb250YWN0c0Zyb21MaXN0Iiwia29Db250YWN0cyIsImRlbGV0ZVJlc3BvbnNlIiwicmVtb3ZlUHJvcGVydHkiLCJvUHJvcCIsImxhc3ROYW1lIiwiZmlyc3ROYW1lIiwiZHJvcFBhZ2VQb3NpdGlvbiIsIkNvbnRhY3RNb2RlbCIsIkNvdW50IiwiRm9sZGVyQ3JlYXRlVmlldyIsInNpbXBsZUZvbGRlck5hbWVWYWxpZGF0aW9uIiwiZm9sZGVyTmFtZSIsInNlbGVjdGVkUGFyZW50VmFsdWUiLCJwYXJlbnRGb2xkZXJTZWxlY3RMaXN0IiwibWFuYWdlRm9sZGVyU3lzdGVtTmFtZSIsImNyZWF0ZUZvbGRlckNvbW1hbmQiLCJwYXJlbnRGb2xkZXJOYW1lIiwiRmlsdGVyUG9wdXBWaWV3IiwiRmlsdGVyU3RvcmUiLCJmVHJ1ZUNhbGxiYWNrIiwiYWxsb3dNYXJrQXNSZWFkIiwic2VsZWN0ZWRGb2xkZXJWYWx1ZSIsImFjdGlvblR5cGVPcHRpb25zIiwiZmllbGRPcHRpb25zIiwidHlwZU9wdGlvbnMiLCJ0eXBlT3B0aW9uc1NpemUiLCJwb3B1bGF0ZU9wdGlvbnMiLCJzYXZlRmlsdGVyQ29tbWFuZCIsIm1hcmthc3JlYWQiLCJtb3ZldG8iLCJyZWRpcmVjdCIsInZhY2F0aW9uIiwiUmVjaXBpZW50IiwiTm90Q29udGFpbnMiLCJFcXVhbFRvIiwiTm90RXF1YWxUbyIsInJlZ2V4IiwiUmVnZXgiLCJPdmVyIiwiVW5kZXIiLCJvRmlsdGVyIiwiYkVkaXQiLCJUd29GYWN0b3JDb25maWd1cmF0aW9uUG9wdXBWaWV3IiwibG9jayIsImNhcGFUd29GYWN0b3IiLCJwcm9jZXNzaW5nIiwiY2xlYXJpbmciLCJzZWNyZXRpbmciLCJ2aWV3VXNlciIsInR3b0ZhY3RvclN0YXR1cyIsInR3b0ZhY3RvclRlc3RlZCIsInZpZXdTZWNyZXQiLCJ2aWV3QmFja3VwQ29kZXMiLCJ2aWV3VXJsVGl0bGUiLCJ2aWV3VXJsIiwidmlld0VuYWJsZV8iLCJ2aWV3RW5hYmxlIiwidmlld1R3b0ZhY3RvckVuYWJsZVRvb2x0aXAiLCJ0cmFuc2xhdG9yVHJpZ2dlciIsInZpZXdUd29GYWN0b3JTdGF0dXMiLCJ0d29GYWN0b3JBbGxvd2VkRW5hYmxlIiwib25SZXN1bHQiLCJvblNob3dTZWNyZXRSZXN1bHQiLCJzaG93U2VjcmV0IiwiaGlkZVNlY3JldCIsImJMb2NrIiwiZ2V0UXIiLCJFbmFibGUiLCJJc1NldCIsIlRlc3RlZCIsIlNlY3JldCIsIkJhY2t1cENvZGVzIiwiVXJsVGl0bGUiLCJxciIsImxldmVsIiwiVGVtcGxhdGVQb3B1cFZpZXciLCJzaWduYXR1cmVEb20iLCJhZGRUZW1wbGF0ZUNvbW1hbmQiLCJwb3B1bGF0ZUJvZHlGcm9tRWRpdG9yIiwiZWRpdG9yU2V0Qm9keSIsInBvcHVsYXRlZCIsIkJvZHkiLCJzdG9yYWdlUmVzdWx0IiwiQ29va2llcyIsImdldEpTT04iLCJleHBpcmVzIiwiY29va2llRW5hYmxlZCIsImxvY2FsU3RvcmFnZSIsInN0b3JhZ2VWYWx1ZSIsImVkaXRlZCIsIm5hbWVGb3JFZGl0IiwicHJpdmF0ZU1lc3NhZ2VDb3VudEFsbCIsInByaXZhdGVNZXNzYWdlQ291bnRVbnJlYWQiLCJjb2xsYXBzZWRQcml2YXRlIiwiaW5pdENvbXB1dGVkIiwiaXNJbmJveCIsIkluYm94IiwiY2FuQmVFZGl0ZWQiLCJpc1N1YlNjcmliZWQiLCJpc1N1YkZvbGRlcnMiLCJoaWRkZW4iLCJpc1N5c3RlbSIsInNlbGVjdGFibGVGb3JGb2xkZXJMaXN0IiwiaVZhbHVlIiwicHJpbnRhYmxlVW5yZWFkQ291bnQiLCJjYW5CZVN1YlNjcmliZWQiLCJjYW5CZUNoZWNrZWQiLCJzdWZmaXgiLCJoYXNVbnJlYWRNZXNzYWdlcyIsImhhc1N1YlNjcmliZWRVbnJlYWRNZXNzYWdlc1N1YmZvbGRlcnMiLCJjb2xsYXBzZWRDc3MiLCJzSW5ib3hGb2xkZXJOYW1lIiwiRGVsaW1pdGVyIiwiRnVsbE5hbWVIYXNoIiwiSXNTZWxlY3RhYmxlIiwiSXNFeGlzdHMiLCJJc1N1YnNjcmliZWQiLCJwcmludGFibGVGdWxsTmFtZSIsImJDbGVhck9ubHkiLCJfX2Fib3J0ZWRfXyIsImFkZGl0aW9uYWxHZXRTdHJpbmciLCJvSCIsInRleHRTdGF0dXMiLCJpc0NhY2hlZCIsImVycm9yRGF0YSIsIl9fY2FjaGVkX18iLCJBamF4RmFsc2UiLCJBamF4UGFyc2UiLCJBamF4VGltZW91dCIsIkFqYXhBYm9ydCIsImdldFJlcXVlc3QiLCJzQWRkaXRpb25hbEdldFN0cmluZyIsImNhbkJlRGVsZXRlIiwiY2hhbmdlQWNjb3VudExpbmsiLCJQb3B1bGF0ZWQiLCJndUlEIiwiSURzIiwidXNlcklEcyIsInVzZXJJRCIsImd1aWQiLCJzZWxlY3RVc2VyIiwiZ2V0TmF0aXZlS2V5IiwiZXJyIiwicGF0dGVybiIsInNlbGVjdEVtYWlsIiwiTG9naW5Vc2VyVmlldyIsImZhY2Vib29rTG9naW5FbmFibGVkIiwiZ29vZ2xlTG9naW5FbmFibGVkIiwiZ29vZ2xlR21haWxMb2dpbkVuYWJsZWQiLCJ0d2l0dGVyTG9naW5FbmFibGVkIiwiaGlkZVN1Ym1pdEJ1dHRvbiIsIndlbGNvbWUiLCJzaWduTWUiLCJhZGRpdGlvbmFsQ29kZSIsImVycm9yQW5pbWF0aW9uIiwidmlzaWJpbGl0eSIsImFkZGl0aW9uYWxDb2RlU2lnbk1lIiwibG9naW5EZXNjcmlwdGlvbiIsImZvcmdvdFBhc3N3b3JkTGlua1VybCIsInJlZ2lzdHJhdGlvbkxpbmtVcmwiLCJlbWFpbEVycm9yQW5pbWF0aW9uIiwicGFzc3dvcmRFcnJvckFuaW1hdGlvbiIsImZvcm1IaWRkZW4iLCJmb3JtRXJyb3IiLCJwYXNzd29yZEZvY3VzIiwic3VibWl0RXJyb3JBZGRpZGlvbmFsIiwibGFuZ1JlcXVlc3QiLCJiU2VuZExhbmd1YWdlIiwibGFuZ3VhZ2VGdWxsTmFtZSIsInNpZ25NZVR5cGUiLCJVbnVzZWQiLCJEZWZhdWx0T24iLCJzaWduTWVWaXNpYmlsaXR5Iiwic29jaWFsTG9naW5FbmFibGVkIiwiYkYiLCJiRyIsImJUIiwid2luZG93T3BlbkZlYXR1cmVzIiwid2giLCJmYWNlYm9va0NvbW1hbmQiLCJnb29nbGVDb21tYW5kIiwiZ29vZ2xlR21haWxDb21tYW5kIiwidHdpdHRlckNvbW1hbmQiLCJzdWJtaXRDb21tYW5kIiwicGx1Z2luUmVzdWx0Q29kZSIsInBsdWdpblJlc3VsdE1lc3NhZ2UiLCJmU3VibWl0UmVzdWx0IiwiaVJlc3VsdENvZGUiLCJzUmVzdWx0TWVzc2FnZSIsImZMb2dpblJlcXVlc3QiLCJzTG9naW5QYXNzd29yZCIsIlR3b0ZhY3RvckF1dGgiLCJBZG1pbiIsIkxhc3RTaWduTWUiLCJkaXNwbGF5TWFpbkZvcm0iLCJzaWduTWVMb2NhbCIsImZTb2NpYWwiLCJpRXJyb3JDb2RlIiwiRGVmYXVsdE9mZiIsInRyYW5zbGF0b3JSZWxvYWQiLCJzdWJtaXRGb3JtIiwic2VsZWN0TGFuZ3VhZ2UiLCJzZWxlY3RMYW5ndWFnZU9uVGFiIiwiYlNoaWZ0IiwiU3lzdGVtRHJvcERvd25NYWlsQm94VXNlclZpZXciLCJGb2xkZXJMaXN0TWFpbEJveFVzZXJWaWV3IiwiTWVzc2FnZUxpc3RNYWlsQm94VXNlclZpZXciLCJNZXNzYWdlVmlld01haWxCb3hVc2VyVmlldyIsInVwZGF0ZVdpbmRvd1RpdGxlIiwiQ29udGFjdHMiLCJvblN0YXJ0IiwiTWVzc2FnZUxpc3RTaXplIiwiZk5vcm1TIiwiZk5vcm1EIiwiaURyb3BPdmVyVGltZXIiLCJhbGxvd0NvbXBvc2VyIiwiZm9sZGVyTGlzdEZvY3VzZWQiLCJpc0luYm94U3RhcnJlZCIsImZTZWxlY3RGb2xkZXIiLCJzdGFycmVkIiwiaXNNb3ZlIiwic3RvcFByb3BhZ2F0aW9uIiwibWVzc2FnZXNEcm9wT3ZlciIsIm1lc3NhZ2VzRHJvcE91dCIsIm1lc3NhZ2VzRHJvcCIsImNvbXBvc2VDbGljayIsImNyZWF0ZUZvbGRlciIsImNvbmZpZ3VyZUZvbGRlcnMiLCJjb250YWN0c0NsaWNrIiwiZGlzcGxheSIsIklkQ29udGFjdCIsIkRpc3BsYXkiLCJSZWFkT25seSIsIlByb3BlcnRpZXMiLCJUeXBlU3RyIiwic3JjQXR0ciIsImNhbkJlTW92ZWRIZWxwZXIiLCJjYW5CZU1vdmVkIiwiYlByZWZldGNoIiwiZW1wdHlTdWJqZWN0VmFsdWUiLCJpR29Ub1VwVXBPckRvd25Eb3duVGltZW91dCIsImFsbG93UmVsb2FkIiwiUmVsb2FkIiwiYWxsb3dTZWFyY2giLCJhbGxvd1NlYXJjaEFkdiIsIlNlYXJjaEFkdiIsImFsbG93TWVzc2FnZUxpc3RBY3Rpb25zIiwiTWVzc2FnZUxpc3RBY3Rpb25zIiwiYWxsb3dEYW5nZXJvdXNBY3Rpb25zIiwiRGFuZ2Vyb3VzQWN0aW9ucyIsInVzZXJRdW90YSIsInVzZXJVc2FnZVNpemUiLCJ1c2VyVXNhZ2VQcm9jIiwibW92ZURyb3Bkb3duVHJpZ2dlciIsIm1vcmVEcm9wZG93blRyaWdnZXIiLCJkcmFnT3ZlciIsImRyYWdPdmVyRW50ZXIiLCJkcmFnT3ZlckFyZWEiLCJkcmFnT3ZlckJvZHlBcmVhIiwibWVzc2FnZUxpc3RJdGVtVGVtcGxhdGUiLCJtZXNzYWdlTGlzdFNlYXJjaERlc2MiLCJtZXNzYWdlTGlzdFBhZ2VuYXRvciIsImNoZWNrQWxsIiwiaW5wdXRNZXNzYWdlTGlzdFNlYXJjaEZvY3VzIiwic0xhc3RTZWFyY2hWYWx1ZSIsImlucHV0UHJveHlNZXNzYWdlTGlzdFNlYXJjaCIsImlzSW5jb21wbGV0ZUNoZWNrZWQiLCJoYXNNZXNzYWdlcyIsImhhc0NoZWNrZWRPclNlbGVjdGVkTGluZXMiLCJpc1NwYW1Gb2xkZXIiLCJpc1NwYW1EaXNhYmxlZCIsImlzVHJhc2hGb2xkZXIiLCJpc0RyYWZ0Rm9sZGVyIiwiaXNTZW50Rm9sZGVyIiwiaXNBcmNoaXZlRm9sZGVyIiwiaXNBcmNoaXZlRGlzYWJsZWQiLCJpc0FyY2hpdmVWaXNpYmxlIiwiaXNTcGFtVmlzaWJsZSIsImlzVW5TcGFtVmlzaWJsZSIsIm1vYmlsZUNoZWNrZWRTdGF0ZVNob3ciLCJtb2JpbGVDaGVja2VkU3RhdGVIaWRlIiwibWVzc2FnZUxpc3RGb2N1c2VkIiwicXVvdGFUb29sdGlwIiwidXNlQXV0b1NlbGVjdCIsImdvVG9VcFVwT3JEb3duRG93biIsInJlbG9hZENvbW1hbmQiLCJtdWx0eUZvcndhcmRDb21tYW5kIiwiZGVsZXRlV2l0aG91dE1vdmVDb21tYW5kIiwiYXJjaGl2ZUNvbW1hbmQiLCJzcGFtQ29tbWFuZCIsIm5vdFNwYW1Db21tYW5kIiwibW92ZUNvbW1hbmQiLCJtb3ZlTmV3Q29tbWFuZCIsImhpZGVMZWZ0Iiwic2hvd0xlZnQiLCJnb3RvUGFnZSIsInNlYXJjaEVudGVyQWN0aW9uIiwicHJpbnRhYmxlTWVzc2FnZUNvdW50Rm9yRGVsZXRpb24iLCJjYW5jZWxTZWFyY2giLCJjYW5jZWxUaHJlYWRVaWQiLCJtb3ZlU2VsZWN0ZWRNZXNzYWdlc1RvRm9sZGVyIiwiZHJhZ0FuZERyb25IZWxwZXIiLCJvTWVzc2FnZUxpc3RJdGVtIiwidXBkYXRlVWlkc0luZm8iLCJhTWVzc2FnZXMiLCJzZXRBY3Rpb25Gb3JBbGwiLCJsaXN0U2V0U2VlbiIsImxpc3RTZXRBbGxTZWVuIiwibGlzdFVuc2V0U2VlbiIsImxpc3RTZXRGbGFncyIsImxpc3RVbnNldEZsYWdzIiwiZmxhZ01lc3NhZ2VzIiwiY2hlY2tlZFVpZHMiLCJmbGFnTWVzc2FnZXNGYXN0IiwiYkZsYWciLCJzZWVuTWVzc2FnZXNGYXN0Iiwic2VlbiIsImdvdG9UaHJlYWQiLCJjbGVhckxpc3RJc1Zpc2libGUiLCJpbml0VXBsb2FkZXJGb3JBcHBlbmQiLCJpbml0U2hvcnRjdXRzIiwiaWZ2aXNpYmxlIiwiUHJlZmV0Y2giLCJzZXRJZGxlRHVyYXRpb24iLCJpZnZpc2libGVJZGxlMTBzIiwiaWRsZSIsInByZWZldGNoTmV4dFRpY2siLCJhZHZhbmNlZFNlYXJjaENsaWNrIiwicXVldWVTaXplIiwibXVsdGlwbGVTaXplTGltaXQiLCJkcmFnQW5kRHJvcEVsZW1lbnQiLCJkcmFnQW5kRHJvcEJvZHlFbGVtZW50IiwibWVzc2FnZVZpc2liaWxpdHkiLCJtZXNzYWdlTGlzdEFuZE1lc3NhZ2VWaWV3TG9hZGluZyIsImxhc3RFbWFpbCIsImNyZWF0ZUNvbW1hbmRSZXBseUhlbHBlciIsImxhc3RSZXBseUFjdGlvbiIsInJlcGx5T3Jmb3J3YXJkIiwiY2FuQmVSZXBsaWVkT3JGb3J3YXJkZWQiLCJjcmVhdGVDb21tYW5kQWN0aW9uSGVscGVyIiwiZm9sZGVyVHlwZSIsInVzZUZvbGRlciIsIm9Eb20iLCJvSGVhZGVyRG9tIiwib01lc3NhZ2VTY3JvbGxlckRvbSIsImJvZHlCYWNrZ3JvdW5kQ29sb3IiLCJwc3dwIiwiYWxsb3dNZXNzYWdlQWN0aW9ucyIsIk1lc3NhZ2VBY3Rpb25zIiwibG9nb0lmcmFtZSIsImZ1bGxTY3JlZW5Nb2RlIiwibWVzc2FnZUxpc3RPZlRocmVhZHNMb2FkaW5nIiwiaGlnaGxpZ2h0VW5zZWxlY3RlZEF0dGFjaG1lbnRzIiwic2hvd0F0dGFjaG1uZXRDb250cm9scyIsInNob3dBdHRhY2htbmV0Q29udHJvbHNTdGF0ZSIsIk1lc3NhZ2VBdHRhY2htbmV0Q29udHJvbHMiLCJhbGxvd0F0dGFjaG1uZXRDb250cm9scyIsIkF0dGFjaG1lbnRzQWN0aW9ucyIsImRvd25sb2FkQXNaaXBBbGxvd2VkIiwiZG93bmxvYWRBc1ppcExvYWRpbmciLCJkb3dubG9hZEFzWmlwRXJyb3IiLCJzYXZlVG9Pd25DbG91ZEFsbG93ZWQiLCJzYXZlVG9Pd25DbG91ZExvYWRpbmciLCJzYXZlVG9Pd25DbG91ZFN1Y2Nlc3MiLCJzYXZlVG9Pd25DbG91ZEVycm9yIiwic2F2ZVRvRHJvcGJveEFsbG93ZWQiLCJzYXZlVG9Ecm9wYm94TG9hZGluZyIsInNhdmVUb0Ryb3Bib3hTdWNjZXNzIiwic2F2ZVRvRHJvcGJveEVycm9yIiwibGFzdFJlcGx5QWN0aW9uXyIsIkxhc3RSZXBseUFjdGlvbiIsInNob3dGdWxsSW5mbyIsIk1lc3NhZ2VIZWFkZXJGdWxsSW5mbyIsIm1lc3NhZ2VEb21Gb2N1c2VkIiwicmVwbHlDb21tYW5kIiwicmVwbHlBbGxDb21tYW5kIiwiZm9yd2FyZENvbW1hbmQiLCJmb3J3YXJkQXNBdHRhY2htZW50Q29tbWFuZCIsImVkaXRBc05ld0NvbW1hbmQiLCJ2aWV3Qm9keVRvcFZhbHVlIiwidmlld0ZvbGRlciIsInZpZXdVaWQiLCJ2aWV3U3ViamVjdCIsInZpZXdGcm9tU2hvcnQiLCJ2aWV3RnJvbURraW1EYXRhIiwidmlld1RvU2hvcnQiLCJ2aWV3RnJvbSIsInZpZXdUbyIsInZpZXdDYyIsInZpZXdCY2MiLCJ2aWV3UmVwbHlUbyIsInZpZXdUaW1lU3RhbXAiLCJ2aWV3U2l6ZSIsInZpZXdMaW5lQXNDc3MiLCJ2aWV3Vmlld0xpbmsiLCJ2aWV3VW5zdWJzY3JpYmVMaW5rIiwidmlld0Rvd25sb2FkTGluayIsInZpZXdVc2VyUGljIiwidmlld1VzZXJQaWNWaXNpYmxlIiwidmlld0lzSW1wb3J0YW50Iiwidmlld0lzRmxhZ2dlZCIsInZpZXdGcm9tRGtpbVZpc2liaWxpdHkiLCJ2aWV3RnJvbURraW1TdGF0dXNJY29uQ2xhc3MiLCJ2aWV3RnJvbURraW1TdGF0dXNUaXRsZSIsInN0YXR1cyIsImRldGVjdERvbUJhY2tncm91bmRDb2xvciIsInNjcm9sbE1lc3NhZ2VUb1RvcCIsInBpYyIsIm1lc3NhZ2VGb2N1c2VkIiwidG9nZ2xlRnVsbFNjcmVlbiIsImNsb3NlTWVzc2FnZUNvbW1hbmQiLCJtZXNzYWdlVmlzaWJpbGl0eUNvbW1hbmQiLCJtZXNzYWdlRWRpdENvbW1hbmQiLCJlZGl0TWVzc2FnZSIsImdvVXBDb21tYW5kIiwiZ29Eb3duQ29tbWFuZCIsImZGaW5kRG9tIiwiaW5wdXREb20iLCJjaGlsZHJlbiIsImZGaW5kQ29sb3IiLCJmdWxsU2NyZWVuIiwidW5GdWxsU2NyZWVuIiwiY2hlY2tIZWFkZXJIZWlnaHQiLCJTaXplMjBweCIsIlNpemUxcHgiLCJsaXN0SW5kZXgiLCJkaXYiLCJkeW5hbWljRWxzIiwidGh1bWIiLCJzdWJIdG1sIiwibGlnaHRHYWxsZXJ5IiwiZHluYW1pYyIsImxvYWRZb3V0dWJlVGh1bWJuYWlsIiwibG9hZFZpbWVvVGh1bWJuYWlsIiwidGh1bWJXaWR0aCIsInRodW1iQ29udEhlaWdodCIsInNob3dUaHVtYkJ5RGVmYXVsdCIsImR5bmFtaWNFbCIsImZDaGVja0hlYWRlckhlaWdodCIsIkV2ZW50V2hpY2hNb3VzZU1pZGRsZSIsInRocmVhZHNEcm9wZG93blRyaWdnZXIiLCJzY3JvbGxNZXNzYWdlVG9MZWZ0IiwiZXNjU2hvcnRjdXRzIiwic2Nyb2xsTGVmdCIsImlzRHJhZnRPclNlbnRGb2xkZXIiLCJTaXplNTBweCIsImdldEF0dGFjaG1lbnRzSGFzaGVzIiwiYXR0cyIsImRvd25sb2FkQXNaaXAiLCJoYXNoZXMiLCJGaWxlcyIsInNhdmVUb093bkNsb3VkIiwic2F2ZVRvRHJvcGJveCIsIlVybCIsIlNob3J0TGlmZSIsImZpbGVuYW1lIiwic2F2ZSIsInByaW50YWJsZUNoZWNrZWRNZXNzYWdlQ291bnQiLCJTeXN0ZW1Ecm9wRG93blNldHRpbmdzVXNlclZpZXciLCJNZW51U2V0dGluZ3NVc2VyVmlldyIsIlBhbmVTZXR0aW5nc1VzZXJWaWV3Iiwic1NldHRpbmdzVGl0bGUiLCJzZXRTZXR0aW5nc1RpdGxlIiwiR2VuZXJhbFVzZXJTZXR0aW5ncyIsIkNvbnRhY3RzVXNlclNldHRpbmdzIiwiQWNjb3VudHNVc2VyU2V0dGluZ3MiLCJTaWV2ZSIsIkZpbHRlcnNVc2VyU2V0dGluZ3MiLCJBdXRvTG9nb3V0IiwiU2VjdXJpdHlVc2VyU2V0dGluZ3MiLCJTb2NpYWxVc2VyU2V0dGluZ3MiLCJDaGFuZ2VQYXNzd29yZFVzZXJTZXR0aW5ncyIsIlRlbXBsYXRlc1VzZXJTZXR0aW5ncyIsIkZvbGRlcnNVc2VyU2V0dGluZ3MiLCJUaGVtZXMiLCJUaGVtZXNVc2VyU2V0dGluZ3MiLCJPcGVuUGdwVXNlclNldHRpbmdzIiwibWVzc2FnZXNQZXJQYWdlQXJyYXkiLCJsYW5ndWFnZVRyaWdnZXIiLCJtcHBUcmlnZ2VyIiwiZWRpdG9yRGVmYXVsdFR5cGVUcmlnZ2VyIiwibGF5b3V0VHJpZ2dlciIsImlzQW5pbWF0aW9uU3VwcG9ydGVkIiwiaWRlbnRpdHlNYWluIiwiaWRlbnRpdHlNYWluRGVzYyIsImVkaXRvckRlZmF1bHRUeXBlcyIsImxheW91dFR5cGVzIiwiZWRpdE1haW5JZGVudGl0eSIsInRlc3RTb3VuZE5vdGlmaWNhdGlvbiIsImYwIiwiZjEiLCJmMiIsImZSZWxvYWRMYW5ndWFnZUhlbHBlciIsInNhdmVTZXR0aW5nc1N0ZXAiLCJUaW1lM3MiLCJhbGxvd0FkZGl0aW9uYWxBY2NvdW50IiwiYWxsb3dJZGVudGl0aWVzIiwiYWNjb3VudEZvckRlbGV0aW9uIiwiaWRlbnRpdHlGb3JEZWxldGlvbiIsInNjcm9sbGFibGVPcHRpb25zIiwid3JhcHBlciIsImNvbnRhaW5tZW50IiwiYXhpcyIsImFkZE5ld0FjY291bnQiLCJlZGl0QWNjb3VudCIsImFkZE5ld0lkZW50aXR5IiwiZWRpdElkZW50aXR5IiwiZGVsZXRlQWNjb3VudCIsImFjY291bnRUb1JlbW92ZSIsImRlbGV0ZUlkZW50aXR5IiwiaWRlbnRpdHlUb1JlbW92ZSIsIm9JZGVudGl0eSIsImFjY291bnRzQW5kSWRlbnRpdGllc0FmdGVyTW92ZSIsInBlZWsiLCJoYXZlQ2hhbmdlcyIsImluaXRlZCIsInNlcnZlckVycm9yIiwic2VydmVyRXJyb3JEZXNjIiwic2F2ZUVycm9yVGV4dCIsImZpbHRlclJhdyIsImFsbG93IiwiZmlsdGVyRm9yRGVsZXRpb24iLCJzYXZlQ2hhbmdlc0NvbW1hbmQiLCJ1cGRhdGVMaXN0IiwiRmlsdGVycyIsIk1vZHVsZXMiLCJSYXciLCJSYXdJc0FjdGl2ZSIsIlJhd0lzQWxsb3ciLCJkZWxldGVGaWx0ZXIiLCJhZGRGaWx0ZXIiLCJlZGl0RmlsdGVyIiwiY2xvbmVkRmlsdGVyIiwiY2FwYUF1dG9Mb2dvdXQiLCJTZXR0aW5zU3RvcmUiLCJhdXRvTG9nb3V0T3B0aW9ucyIsImNvbmZpZ3VyZVR3b0ZhY3RvciIsImdvb2dsZUxvZ2dpbmVkIiwiZ29vZ2xlQWN0aW9ucyIsImZhY2Vib29rTG9nZ2luZWQiLCJmYWNlYm9va0FjdGlvbnMiLCJ0d2l0dGVyTG9nZ2luZWQiLCJ0d2l0dGVyQWN0aW9ucyIsImdvb2dsZUVuYWJsZSIsImdvb2dsZUVuYWJsZUF1dGgiLCJnb29nbGVFbmFibGVBdXRoR21haWwiLCJnb29nbGVFbmFibGVEcml2ZSIsImdvb2dsZUVuYWJsZVByZXZpZXciLCJnb29nbGVVc2VyTmFtZSIsImZhY2Vib29rRW5hYmxlIiwiZmFjZWJvb2tVc2VyTmFtZSIsInR3aXR0ZXJFbmFibGUiLCJ0d2l0dGVyVXNlck5hbWUiLCJjb25uZWN0R29vZ2xlQ29tbWFuZCIsImRpc2Nvbm5lY3RHb29nbGVDb21tYW5kIiwiY29ubmVjdEZhY2Vib29rQ29tbWFuZCIsImRpc2Nvbm5lY3RGYWNlYm9va0NvbW1hbmQiLCJjb25uZWN0VHdpdHRlckNvbW1hbmQiLCJkaXNjb25uZWN0VHdpdHRlckNvbW1hbmQiLCJjaGFuZ2VQcm9jZXNzIiwiY3VycmVudFBhc3N3b3JkIiwibmV3UGFzc3dvcmQyIiwiZXJyb3JEZXNjcmlwdGlvbiIsInBhc3N3b3JkTWlzbWF0Y2giLCJwYXNzd29yZFVwZGF0ZUVycm9yIiwicGFzc3dvcmRVcGRhdGVTdWNjZXNzIiwib25DaGFuZ2VQYXNzd29yZFJlc3BvbnNlIiwic2F2ZU5ld1Bhc3N3b3JkQ29tbWFuZCIsInByb2Nlc3NUZXh0IiwidGVtcGxhdGVGb3JEZWxldGlvbiIsInNXcmFwcGVyIiwiYWRkTmV3VGVtcGxhdGUiLCJlZGl0VGVtcGxhdGUiLCJvVGVtcGxhdGVJdGVtIiwiZGVsZXRlVGVtcGxhdGUiLCJ0ZW1wbGF0ZVRvUmVtb3ZlIiwicmVsb2FkVGVtcGxhdGVzIiwiZm9sZGVyTGlzdEhlbHAiLCJmb2xkZXJGb3JEZWxldGlvbiIsImZvbGRlckZvckVkaXQiLCJ1c2VJbWFwU3Vic2NyaWJlIiwiZm9sZGVyRWRpdE9uRW50ZXIiLCJuYW1lVG9FZGl0IiwiZm9sZGVyRWRpdE9uRXNjIiwic3lzdGVtRm9sZGVyIiwiZGVsZXRlRm9sZGVyIiwiZm9sZGVyVG9SZW1vdmUiLCJmUmVtb3ZlRm9sZGVyIiwic3Vic2NyaWJlRm9sZGVyIiwidW5TdWJzY3JpYmVGb2xkZXIiLCJjaGVja2FibGVUcnVlRm9sZGVyIiwiY2hlY2thYmxlRmFsc2VGb2xkZXIiLCJ0aGVtZXNPYmplY3RzIiwiYmFja2dyb3VuZCIsInVwbG9hZGVyQnV0dG9uIiwiY2FwYVVzZXJCYWNrZ3JvdW5kIiwiVXNlckJhY2tncm91bmQiLCJvVGhlbWVBamF4UmVxdWVzdCIsIiRiZyIsImN1cnJlbnRUaGVtZSIsIm5hbWVEaXNwbGF5IiwidGhlbWVQcmV2aWV3U3JjIiwiY2xlYXJCYWNrZ3JvdW5kIiwiZXJyb3JNc2ciLCJvcGVuUGdwS2V5Rm9yRGVsZXRpb24iLCJpc0h0dHBzIiwiYWRkT3BlblBncEtleSIsImdlbmVyYXRlT3BlblBncEtleSIsInZpZXdPcGVuUGdwS2V5Iiwib3BlblBncEtleSIsImRlbGV0ZU9wZW5QZ3BLZXkiLCJvcGVuUGdwS2V5VG9SZW1vdmUiLCJmaW5kZWRJdGVtIiwicmVtb3ZlRm9ySWQiLCJiYWNrVG9NYWlsQm94Q2xpY2siLCJib290c3RyYXAiLCJNZXNzYWdlT3BlblBncFBvcHVwVmlldyIsInNlbGVjdGVkS2V5IiwiYnV0dG9uRm9jdXMiLCJyZXN1bHRDYWxsYmFjayIsIlBvcHVwTWVzc2FnZU9wZW5QR1AiLCJkb0NvbW1hbmQiLCJmaXJzdCIsIktFWV9OQU1FX1NVQlNUUiIsIkNvbXBvc2VPcGVuUGdwUG9wdXBWaWV3Iiwic2lnbiIsImVuY3J5cHQiLCJwdWJsaWNLZXlzT3B0aW9uc0NhcHRpb24iLCJwcml2YXRlS2V5c09wdGlvbnNDYXB0aW9uIiwic2VsZWN0ZWRQcml2YXRlS2V5Iiwic2VsZWN0ZWRQdWJsaWNLZXkiLCJzaWduS2V5IiwiZW5jcnlwdEtleXMiLCJlbmNyeXB0S2V5c1ZpZXciLCJvS2V5IiwicHJpdmF0ZUtleXNPcHRpb25zIiwib3B0cyIsInB1YmxpY0tleXNPcHRpb25zIiwic2VsZWN0Q29tbWFuZCIsInVwZGF0ZUNvbW1hbmQiLCJhZGRDb21tYW5kIiwiUG9wdXBDb21wb3NlT3BlblBHUCIsImFkZE9wdGlvbkNsYXNzIiwiZG9tT3B0aW9uIiwiY2xhc3MiLCJkZWxldGVQdWJsaWNrS2V5IiwiYVB1YmxpY0tleXMiLCJwZ3BQcm9taXNlIiwiVGltZTIwbXMiLCJrZXlJZCIsInJlbW92YWJsZSIsInB1YmxpY0tleSIsInJlYyIsImVtYWlsTGluZSIsInJlY0VtYWlsIiwiZW5jcnlwdEtleSIsIkZvbGRlckNsZWFyUG9wdXBWaWV3Iiwic2VsZWN0ZWRGb2xkZXIiLCJpc0NsZWFyaW5nIiwiY2xlYXJpbmdQcm9jZXNzIiwiY2xlYXJpbmdFcnJvciIsImZvbGRlckZ1bGxOYW1lRm9yQ2xlYXIiLCJmb2xkZXJOYW1lRm9yQ2xlYXIiLCJkYW5nZXJEZXNjSHRtbCIsImZvbGRlclRvQ2xlYXIiLCJBZHZhbmNlZFNlYXJjaFBvcHVwVmlldyIsImZyb21Gb2N1cyIsInNlbGVjdGVkRGF0ZVZhbHVlIiwiaGFzQXR0YWNobWVudCIsInNlbGVjdGVkRGF0ZXMiLCJzZWFyY2hDb21tYW5kIiwiYnVpbGRTZWFyY2hTdHJpbmciLCJwYXJzZVNlYXJjaFN0cmluZ1ZhbHVlIiwiYnVpbGRTZWFyY2hTdHJpbmdWYWx1ZSIsImZyb21fIiwiaXNQYXJ0IiwiaGFzUGFydCIsIlR3b0ZhY3RvclRlc3RQb3B1cFZpZXciLCJ0ZXN0aW5nIiwia29UZXN0ZWRUcmlnZ2VyIiwidGVzdENvZGVDb21tYW5kIiwiQWRkT3BlblBncEtleVBvcHVwVmlldyIsImVycm9yTWVzc2FnZSIsImFkZE9wZW5QZ3BLZXlDb21tYW5kIiwicmVnIiwia2V5VHJpbW1lZCIsImRvbmUiLCJpbXBvcnRLZXkiLCJOZXdPcGVuUGdwS2V5UG9wdXBWaWV3Iiwia2V5Qml0TGVuZ3RoIiwiQml0TGVuZ3RoMjA0OCIsImdlbmVyYXRlT3BlblBncEtleUNvbW1hbmQiLCJnZW5lcmF0ZUtleSIsInVzZXJJZHMiLCJudW1CaXRzIiwicGFzc3BocmFzZSIsImtleVBhaXIiLCJwcml2YXRlS2V5QXJtb3JlZCIsInB1YmxpY0tleUFybW9yZWQiLCJzaG93RXJyb3IiLCJWaWV3T3BlblBncEtleVBvcHVwVmlldyIsImtleURvbSIsIlBvcHVwVmlld09wZW5QR1AiLCJzZWxlY3RLZXkiLCJXZWxjb21lUGFnZVBvcHVwVmlldyIsIndlbGNvbWVQYWdlVVJMIiwiY2xvc2VGb2N1c2VkIl0sIm1hcHBpbmdzIjoiO1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7O0FDbEZBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFB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QUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLHdDQUF3QztBQUN4QztBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEMsOENBQThDOztBQUUxRjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsT0FBTztBQUMxQjtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCLFFBQVE7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOztBQUVBLHNCQUFzQiw0QkFBNEI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7OztBQUdMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLGdEQUFnRDtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTREO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdEQUF3RCxnQkFBZ0I7QUFDeEU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLG9EQUFvRCxnQkFBZ0I7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxTQUFTOztBQUVUOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0EsMkJBQTJCLDRCQUE0QjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQSxTQUFTOztBQUVUO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSwyQkFBMkIseUJBQXlCO0FBQ3BEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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LFlBQUwsQ0FBa0IsS0FBbEI7QUFDQTtBQUVEO0FBQ0Q7QUFDQTtBQUNBOzs7U0FDQzVzRCxNLEdBQUEsZ0JBQU81bEIsSUFBUCxFQUFhO0FBQ1osU0FBSzYzQixVQUFMO0FBRUEsU0FBSzA2QyxjQUFMLENBQW9CdnlFLElBQXBCO0FBQ0EsRzs7U0FFRHVvQixlLEdBQUEsMkJBQWtCO0FBQ2pCLFNBQUtpcUQsWUFBTCxDQUFrQixJQUFsQjtBQUNBLEc7O1NBRUR4dEQsTSxHQUFBLGtCQUFTO0FBQ1IrdEIsc0VBQVEsQ0FBQ2g1QixZQUFUO0FBQ0EsRzs7O0VBOUJpQzNRLCtFIiwiZmlsZSI6ImpzL2FwcC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwicmFpbmxvb3Avdi8wLjAuMC9zdGF0aWMvanMvXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA1NDgpO1xuIiwiLyogZXNsaW50IHF1b3RlLXByb3BzOiAwICovXG5cbi8qKlxuICogQGVudW0ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IEZpbGVUeXBlID0ge1xuXHQnVW5rbm93bic6ICd1bmtub3duJyxcblx0J1RleHQnOiAndGV4dCcsXG5cdCdIdG1sJzogJ2h0bWwnLFxuXHQnQ29kZSc6ICdjb2RlJyxcblx0J0VtbCc6ICdlbWwnLFxuXHQnV29yZFRleHQnOiAnd29yZC10ZXh0Jyxcblx0J1BkZic6ICdwZGYnLFxuXHQnSW1hZ2UnOiAnaW1hZ2UnLFxuXHQnQXVkaW8nOiAnYXVkaW8nLFxuXHQnVmlkZW8nOiAndmlkZW8nLFxuXHQnU2hlZXQnOiAnc2hlZXQnLFxuXHQnUHJlc2VudGF0aW9uJzogJ3ByZXNlbnRhdGlvbicsXG5cdCdDZXJ0aWZpY2F0ZSc6ICdjZXJ0aWZpY2F0ZScsXG5cdCdDZXJ0aWZpY2F0ZUJpbic6ICdjZXJ0aWZpY2F0ZS1iaW4nLFxuXHQnQXJjaGl2ZSc6ICdhcmNoaXZlJ1xufTtcblxuLyoqXG4gKiBAZW51bSB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgU3RvcmFnZVJlc3VsdFR5cGUgPSB7XG5cdCdTdWNjZXNzJzogJ3N1Y2Nlc3MnLFxuXHQnQWJvcnQnOiAnYWJvcnQnLFxuXHQnRXJyb3InOiAnZXJyb3InLFxuXHQnVW5sb2FkJzogJ3VubG9hZCdcbn07XG5cbi8qKlxuICogQGVudW0ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IEZvY3VzZWQgPSB7XG5cdCdOb25lJzogJ25vbmUnLFxuXHQnTWVzc2FnZUxpc3QnOiAnbWVzc2FnZS1saXN0Jyxcblx0J01lc3NhZ2VWaWV3JzogJ21lc3NhZ2UtdmlldycsXG5cdCdGb2xkZXJMaXN0JzogJ2ZvbGRlci1saXN0J1xufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgU3RhdGUgPSB7XG5cdCdFbXB0eSc6IDEwLFxuXHQnTG9naW4nOiAyMCxcblx0J0F1dGgnOiAzMFxufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgU3RhdGVUeXBlID0ge1xuXHQnV2VibWFpbCc6IDAsXG5cdCdBZG1pbic6IDFcbn07XG5cbi8qKlxuICogQGVudW0ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IENhcGEgPSB7XG5cdCdUd29GYWN0b3InOiAnVFdPX0ZBQ1RPUicsXG5cdCdUd29GYWN0b3JGb3JjZSc6ICdUV09fRkFDVE9SX0ZPUkNFJyxcblx0J09wZW5QR1AnOiAnT1BFTl9QR1AnLFxuXHQnUHJlZmV0Y2gnOiAnUFJFRkVUQ0gnLFxuXHQnR3JhdmF0YXInOiAnR1JBVkFUQVInLFxuXHQnRm9sZGVycyc6ICdGT0xERVJTJyxcblx0J0NvbXBvc2VyJzogJ0NPTVBPU0VSJyxcblx0J0NvbnRhY3RzJzogJ0NPTlRBQ1RTJyxcblx0J1JlbG9hZCc6ICdSRUxPQUQnLFxuXHQnU2VhcmNoJzogJ1NFQVJDSCcsXG5cdCdTZWFyY2hBZHYnOiAnU0VBUkNIX0FEVicsXG5cdCdNZXNzYWdlQWN0aW9ucyc6ICdNRVNTQUdFX0FDVElPTlMnLFxuXHQnTWVzc2FnZUxpc3RBY3Rpb25zJzogJ01FU1NBR0VMSVNUX0FDVElPTlMnLFxuXHQnQXR0YWNobWVudHNBY3Rpb25zJzogJ0FUVEFDSE1FTlRTX0FDVElPTlMnLFxuXHQnRGFuZ2Vyb3VzQWN0aW9ucyc6ICdEQU5HRVJPVVNfQUNUSU9OUycsXG5cdCdTZXR0aW5ncyc6ICdTRVRUSU5HUycsXG5cdCdIZWxwJzogJ0hFTFAnLFxuXHQnVGhlbWVzJzogJ1RIRU1FUycsXG5cdCdVc2VyQmFja2dyb3VuZCc6ICdVU0VSX0JBQ0tHUk9VTkQnLFxuXHQnU2lldmUnOiAnU0lFVkUnLFxuXHQnRmlsdGVycyc6ICdGSUxURVJTJyxcblx0J0F0dGFjaG1lbnRUaHVtYm5haWxzJzogJ0FUVEFDSE1FTlRfVEhVTUJOQUlMUycsXG5cdCdUZW1wbGF0ZXMnOiAnVEVNUExBVEVTJyxcblx0J0F1dG9Mb2dvdXQnOiAnQVVUT0xPR09VVCcsXG5cdCdBZGRpdGlvbmFsQWNjb3VudHMnOiAnQURESVRJT05BTF9BQ0NPVU5UUycsXG5cdCdJZGVudGl0aWVzJzogJ0lERU5USVRJRVMnXG59O1xuXG4vKipcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBLZXlTdGF0ZSA9IHtcblx0J0FsbCc6ICdhbGwnLFxuXHQnTm9uZSc6ICdub25lJyxcblx0J0NvbnRhY3RMaXN0JzogJ2NvbnRhY3QtbGlzdCcsXG5cdCdNZXNzYWdlTGlzdCc6ICdtZXNzYWdlLWxpc3QnLFxuXHQnRm9sZGVyTGlzdCc6ICdmb2xkZXItbGlzdCcsXG5cdCdNZXNzYWdlVmlldyc6ICdtZXNzYWdlLXZpZXcnLFxuXHQnQ29tcG9zZSc6ICdjb21wb3NlJyxcblx0J1NldHRpbmdzJzogJ3NldHRpbmdzJyxcblx0J01lbnUnOiAnbWVudScsXG5cdCdQb3B1cENvbXBvc2VPcGVuUEdQJzogJ2NvbXBvc2Utb3Blbi1wZ3AnLFxuXHQnUG9wdXBNZXNzYWdlT3BlblBHUCc6ICdtZXNzYWdlLW9wZW4tcGdwJyxcblx0J1BvcHVwVmlld09wZW5QR1AnOiAndmlldy1vcGVuLXBncCcsXG5cdCdQb3B1cEtleWJvYXJkU2hvcnRjdXRzSGVscCc6ICdwb3B1cC1rZXlib2FyZC1zaG9ydGN1dHMtaGVscCcsXG5cdCdQb3B1cEFzayc6ICdwb3B1cC1hc2snXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBGb2xkZXJUeXBlID0ge1xuXHQnSW5ib3gnOiAxMCxcblx0J1NlbnRJdGVtcyc6IDExLFxuXHQnRHJhZnQnOiAxMixcblx0J1RyYXNoJzogMTMsXG5cdCdTcGFtJzogMTQsXG5cdCdBcmNoaXZlJzogMTUsXG5cdCdOb3RTcGFtJzogODAsXG5cdCdVc2VyJzogOTlcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNlcnZlckZvbGRlclR5cGUgPSB7XG5cdCdVU0VSJzogMCxcblx0J0lOQk9YJzogMSxcblx0J1NFTlQnOiAyLFxuXHQnRFJBRlRTJzogMyxcblx0J0pVTksnOiA0LFxuXHQnVFJBU0gnOiA1LFxuXHQnSU1QT1JUQU5UJzogMTAsXG5cdCdGTEFHR0VEJzogMTEsXG5cdCdBTEwnOiAxMlxufTtcblxuLyoqXG4gKiBAZW51bSB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgTG9naW5TaWduTWVUeXBlQXNTdHJpbmcgPSB7XG5cdCdEZWZhdWx0T2ZmJzogJ2RlZmF1bHRvZmYnLFxuXHQnRGVmYXVsdE9uJzogJ2RlZmF1bHRvbicsXG5cdCdVbnVzZWQnOiAndW51c2VkJ1xufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgTG9naW5TaWduTWVUeXBlID0ge1xuXHQnRGVmYXVsdE9mZic6IDAsXG5cdCdEZWZhdWx0T24nOiAxLFxuXHQnVW51c2VkJzogMlxufTtcblxuLyoqXG4gKiBAZW51bSB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgQ29tcG9zZVR5cGUgPSB7XG5cdCdFbXB0eSc6ICdlbXB0eScsXG5cdCdSZXBseSc6ICdyZXBseScsXG5cdCdSZXBseUFsbCc6ICdyZXBseWFsbCcsXG5cdCdGb3J3YXJkJzogJ2ZvcndhcmQnLFxuXHQnRm9yd2FyZEFzQXR0YWNobWVudCc6ICdmb3J3YXJkLWFzLWF0dGFjaG1lbnQnLFxuXHQnRHJhZnQnOiAnZHJhZnQnLFxuXHQnRWRpdEFzTmV3JzogJ2VkaXRhc25ldydcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IFVwbG9hZEVycm9yQ29kZSA9IHtcblx0J05vcm1hbCc6IDAsXG5cdCdGaWxlSXNUb29CaWcnOiAxLFxuXHQnRmlsZVBhcnRpYWxseVVwbG9hZGVkJzogMixcblx0J0ZpbGVOb1VwbG9hZGVkJzogMyxcblx0J01pc3NpbmdUZW1wRm9sZGVyJzogNCxcblx0J0ZpbGVPblNhdmVpbmdFcnJvcic6IDUsXG5cdCdGaWxlVHlwZSc6IDk4LFxuXHQnVW5rbm93bic6IDk5XG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBTZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uID0ge1xuXHQnTm9uZSc6IDAsXG5cdCdTZW50JzogMSxcblx0J0RyYWZ0JzogMixcblx0J1NwYW0nOiAzLFxuXHQnVHJhc2gnOiA0LFxuXHQnQXJjaGl2ZSc6IDVcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IENsaWVudFNpZGVLZXlOYW1lID0ge1xuXHQnRm9sZGVyc0xhc2hIYXNoJzogMCxcblx0J01lc3NhZ2VzSW5ib3hMYXN0SGFzaCc6IDEsXG5cdCdNYWlsQm94TGlzdFNpemUnOiAyLFxuXHQnRXhwYW5kZWRGb2xkZXJzJzogMyxcblx0J0ZvbGRlckxpc3RTaXplJzogNCxcblx0J01lc3NhZ2VMaXN0U2l6ZSc6IDUsXG5cdCdMYXN0UmVwbHlBY3Rpb24nOiA2LFxuXHQnTGFzdFNpZ25NZSc6IDcsXG5cdCdDb21wb3NlTGFzdElkZW50aXR5SUQnOiA4LFxuXHQnTWVzc2FnZUhlYWRlckZ1bGxJbmZvJzogOSxcblx0J01lc3NhZ2VBdHRhY2htbmV0Q29udHJvbHMnOiAxMFxufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgRXZlbnRLZXlDb2RlID0ge1xuXHQnQmFja3NwYWNlJzogOCxcblx0J1RhYic6IDksXG5cdCdFbnRlcic6IDEzLFxuXHQnRXNjJzogMjcsXG5cdCdQYWdlVXAnOiAzMyxcblx0J1BhZ2VEb3duJzogMzQsXG5cdCdMZWZ0JzogMzcsXG5cdCdSaWdodCc6IDM5LFxuXHQnVXAnOiAzOCxcblx0J0Rvd24nOiA0MCxcblx0J0VuZCc6IDM1LFxuXHQnSG9tZSc6IDM2LFxuXHQnU3BhY2UnOiAzMixcblx0J0luc2VydCc6IDQ1LFxuXHQnRGVsZXRlJzogNDYsXG5cdCdBJzogNjUsXG5cdCdTJzogODNcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2VTZXRBY3Rpb24gPSB7XG5cdCdTZXRTZWVuJzogMCxcblx0J1Vuc2V0U2Vlbic6IDEsXG5cdCdTZXRGbGFnJzogMixcblx0J1Vuc2V0RmxhZyc6IDNcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2VTZWxlY3RBY3Rpb24gPSB7XG5cdCdBbGwnOiAwLFxuXHQnTm9uZSc6IDEsXG5cdCdJbnZlcnQnOiAyLFxuXHQnVW5zZWVuJzogMyxcblx0J1NlZW4nOiA0LFxuXHQnRmxhZ2dlZCc6IDUsXG5cdCdVbmZsYWdnZWQnOiA2XG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBEZXNrdG9wTm90aWZpY2F0aW9uID0ge1xuXHQnQWxsb3dlZCc6IDAsXG5cdCdOb3RBbGxvd2VkJzogMSxcblx0J0RlbmllZCc6IDIsXG5cdCdOb3RTdXBwb3J0ZWQnOiA5XG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlUHJpb3JpdHkgPSB7XG5cdCdMb3cnOiA1LFxuXHQnTm9ybWFsJzogMyxcblx0J0hpZ2gnOiAxXG59O1xuXG4vKipcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBFZGl0b3JEZWZhdWx0VHlwZSA9IHtcblx0J0h0bWwnOiAnSHRtbCcsXG5cdCdQbGFpbic6ICdQbGFpbicsXG5cdCdIdG1sRm9yY2VkJzogJ0h0bWxGb3JjZWQnLFxuXHQnUGxhaW5Gb3JjZWQnOiAnUGxhaW5Gb3JjZWQnXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBTZXJ2ZXJTZWN1cmUgPSB7XG5cdCdOb25lJzogMCxcblx0J1NTTCc6IDEsXG5cdCdUTFMnOiAyXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBTZWFyY2hEYXRlVHlwZSA9IHtcblx0J0FsbCc6IC0xLFxuXHQnRGF5czMnOiAzLFxuXHQnRGF5czcnOiA3LFxuXHQnTW9udGgnOiAzMFxufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgU2F2ZVNldHRpbmdzU3RlcCA9IHtcblx0J0FuaW1hdGUnOiAtMixcblx0J0lkbGUnOiAtMSxcblx0J1RydWVSZXN1bHQnOiAxLFxuXHQnRmFsc2VSZXN1bHQnOiAwXG59O1xuXG4vKipcbiAqIEBlbnVtIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBjb25zdCBMYXlvdXQgPSB7XG5cdCdOb1ByZXZpZXcnOiAwLFxuXHQnU2lkZVByZXZpZXcnOiAxLFxuXHQnQm90dG9tUHJldmlldyc6IDJcbn07XG5cbi8qKlxuICogQGVudW0ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IEZpbHRlckNvbmRpdGlvbkZpZWxkID0ge1xuXHQnRnJvbSc6ICdGcm9tJyxcblx0J1JlY2lwaWVudCc6ICdSZWNpcGllbnQnLFxuXHQnU3ViamVjdCc6ICdTdWJqZWN0Jyxcblx0J0hlYWRlcic6ICdIZWFkZXInLFxuXHQnU2l6ZSc6ICdTaXplJ1xufTtcblxuLyoqXG4gKiBAZW51bSB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgRmlsdGVyQ29uZGl0aW9uVHlwZSA9IHtcblx0J0NvbnRhaW5zJzogJ0NvbnRhaW5zJyxcblx0J05vdENvbnRhaW5zJzogJ05vdENvbnRhaW5zJyxcblx0J0VxdWFsVG8nOiAnRXF1YWxUbycsXG5cdCdOb3RFcXVhbFRvJzogJ05vdEVxdWFsVG8nLFxuXHQnUmVnZXgnOiAnUmVnZXgnLFxuXHQnT3Zlcic6ICdPdmVyJyxcblx0J1VuZGVyJzogJ1VuZGVyJ1xufTtcblxuLyoqXG4gKiBAZW51bSB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3QgRmlsdGVyc0FjdGlvbiA9IHtcblx0J05vbmUnOiAnTm9uZScsXG5cdCdNb3ZlVG8nOiAnTW92ZVRvJyxcblx0J0Rpc2NhcmQnOiAnRGlzY2FyZCcsXG5cdCdWYWNhdGlvbic6ICdWYWNhdGlvbicsXG5cdCdSZWplY3QnOiAnUmVqZWN0Jyxcblx0J0ZvcndhcmQnOiAnRm9yd2FyZCdcbn07XG5cbi8qKlxuICogQGVudW0ge3N0cmluZ31cbiAqL1xuZXhwb3J0IGNvbnN0IEZpbHRlclJ1bGVzVHlwZSA9IHtcblx0J0FsbCc6ICdBbGwnLFxuXHQnQW55JzogJ0FueSdcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IFNpZ25lZFZlcmlmeVN0YXR1cyA9IHtcblx0J1Vua25vd25QdWJsaWNLZXlzJzogLTQsXG5cdCdVbmtub3duUHJpdmF0ZUtleSc6IC0zLFxuXHQnVW52ZXJpZmllZCc6IC0yLFxuXHQnRXJyb3InOiAtMSxcblx0J05vbmUnOiAwLFxuXHQnU3VjY2Vzcyc6IDFcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IENvbnRhY3RQcm9wZXJ0eVR5cGUgPSB7XG5cdCdVbmtub3duJzogMCxcblxuXHQnRnVsbE5hbWUnOiAxMCxcblxuXHQnRmlyc3ROYW1lJzogMTUsXG5cdCdMYXN0TmFtZSc6IDE2LFxuXHQnTWlkZGxlTmFtZSc6IDE2LFxuXHQnTmljayc6IDE4LFxuXG5cdCdOYW1lUHJlZml4JzogMjAsXG5cdCdOYW1lU3VmZml4JzogMjEsXG5cblx0J0VtYWlsJzogMzAsXG5cdCdQaG9uZSc6IDMxLFxuXHQnV2ViJzogMzIsXG5cblx0J0JpcnRoZGF5JzogNDAsXG5cblx0J0ZhY2Vib29rJzogOTAsXG5cdCdTa3lwZSc6IDkxLFxuXHQnR2l0SHViJzogOTIsXG5cblx0J05vdGUnOiAxMTAsXG5cblx0J0N1c3RvbSc6IDI1MFxufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgTWFnaWNzID0ge1xuXHQnRXZlbnRXaGljaE1vdXNlTWlkZGxlJzogMyxcblx0J2lmdmlzaWJsZUlkbGUxMHMnOiAxMCxcblxuXHQnQml0TGVuZ3RoMjA0OCc6IDIwNDgsXG5cdCdCaXRMZW5ndGgxMDI0JzogMTAyNCxcblxuXHQnU2l6ZTM1MHB4JzogMzUwLFxuXHQnU2l6ZTUwcHgnOiA1MCxcblx0J1NpemUyMHB4JzogMjAsXG5cdCdTaXplMXB4JzogMSxcblxuXHQnVGltZTMwbUluTWluJzogMzAsXG5cblx0J1RpbWU2MG0nOiA2MDAwMCAqIDYwLFxuXHQnVGltZTMwbSc6IDYwMDAwICogMzAsXG5cdCdUaW1lMjBtJzogNjAwMDAgKiAyMCxcblx0J1RpbWUxNW0nOiA2MDAwMCAqIDE1LFxuXHQnVGltZTEwbSc6IDYwMDAwICogMTAsXG5cdCdUaW1lNW0nOiA2MDAwMCAqIDUsXG5cdCdUaW1lM20nOiA2MDAwMCAqIDMsXG5cdCdUaW1lMm0nOiA2MDAwMCAqIDIsXG5cdCdUaW1lMW0nOiA2MDAwMCxcblx0J1RpbWUzMHMnOiAzMDAwMCxcblx0J1RpbWUxMHMnOiAxMDAwMCxcblx0J1RpbWU3cyc6IDcwMDAsXG5cdCdUaW1lNXMnOiA1MDAwLFxuXHQnVGltZTNzJzogMzAwMCxcblx0J1RpbWUxcyc6IDEwMDAsXG5cdCdUaW1lNTAwbXMnOiA1MDAsXG5cdCdUaW1lMzUwbXMnOiAzNTAsXG5cdCdUaW1lMjUwbXMnOiAyNTAsXG5cdCdUaW1lMjAwbXMnOiAyMDAsXG5cdCdUaW1lMTAwbXMnOiAxMDAsXG5cdCdUaW1lNTBtcyc6IDUwLFxuXHQnVGltZTIwbXMnOiAyMCxcblx0J1RpbWUxMG1zJzogMTAsXG5cdCdUaW1lMW1zJzogMVxufTtcblxuLyoqXG4gKiBAZW51bSB7bnVtYmVyfVxuICovXG5leHBvcnQgY29uc3QgUG9ydHMgPSB7XG5cdCdJbWFwJzogMTQzLFxuXHQnSW1hcFNzbCc6IDk5Myxcblx0J1NtdHAnOiAyNSxcblx0J1NtdHBTc2wnOiA0NjUsXG5cdCdTbXRwU3RhcnRUbHMnOiA1ODdcbn07XG5cbi8qKlxuICogQGVudW0ge251bWJlcn1cbiAqL1xuZXhwb3J0IGNvbnN0IE5vdGlmaWNhdGlvbiA9IHtcblx0J0ludmFsaWRUb2tlbic6IDEwMSxcblx0J0F1dGhFcnJvcic6IDEwMixcblx0J0FjY2Vzc0Vycm9yJzogMTAzLFxuXHQnQ29ubmVjdGlvbkVycm9yJzogMTA0LFxuXHQnQ2FwdGNoYUVycm9yJzogMTA1LFxuXHQnU29jaWFsRmFjZWJvb2tMb2dpbkFjY2Vzc0Rpc2FibGUnOiAxMDYsXG5cdCdTb2NpYWxUd2l0dGVyTG9naW5BY2Nlc3NEaXNhYmxlJzogMTA3LFxuXHQnU29jaWFsR29vZ2xlTG9naW5BY2Nlc3NEaXNhYmxlJzogMTA4LFxuXHQnRG9tYWluTm90QWxsb3dlZCc6IDEwOSxcblx0J0FjY291bnROb3RBbGxvd2VkJzogMTEwLFxuXG5cdCdBY2NvdW50VHdvRmFjdG9yQXV0aFJlcXVpcmVkJzogMTIwLFxuXHQnQWNjb3VudFR3b0ZhY3RvckF1dGhFcnJvcic6IDEyMSxcblxuXHQnQ291bGROb3RTYXZlTmV3UGFzc3dvcmQnOiAxMzAsXG5cdCdDdXJyZW50UGFzc3dvcmRJbmNvcnJlY3QnOiAxMzEsXG5cdCdOZXdQYXNzd29yZFNob3J0JzogMTMyLFxuXHQnTmV3UGFzc3dvcmRXZWFrJzogMTMzLFxuXHQnTmV3UGFzc3dvcmRGb3JiaWRkZW4nOiAxMzQsXG5cblx0J0NvbnRhY3RzU3luY0Vycm9yJzogMTQwLFxuXG5cdCdDYW50R2V0TWVzc2FnZUxpc3QnOiAyMDEsXG5cdCdDYW50R2V0TWVzc2FnZSc6IDIwMixcblx0J0NhbnREZWxldGVNZXNzYWdlJzogMjAzLFxuXHQnQ2FudE1vdmVNZXNzYWdlJzogMjA0LFxuXHQnQ2FudENvcHlNZXNzYWdlJzogMjA1LFxuXG5cdCdDYW50U2F2ZU1lc3NhZ2UnOiAzMDEsXG5cdCdDYW50U2VuZE1lc3NhZ2UnOiAzMDIsXG5cdCdJbnZhbGlkUmVjaXBpZW50cyc6IDMwMyxcblxuXHQnQ2FudFNhdmVGaWx0ZXJzJzogMzUxLFxuXHQnQ2FudEdldEZpbHRlcnMnOiAzNTIsXG5cdCdGaWx0ZXJzQXJlTm90Q29ycmVjdCc6IDM1NSxcblxuXHQnQ2FudENyZWF0ZUZvbGRlcic6IDQwMCxcblx0J0NhbnRSZW5hbWVGb2xkZXInOiA0MDEsXG5cdCdDYW50RGVsZXRlRm9sZGVyJzogNDAyLFxuXHQnQ2FudFN1YnNjcmliZUZvbGRlcic6IDQwMyxcblx0J0NhbnRVbnN1YnNjcmliZUZvbGRlcic6IDQwNCxcblx0J0NhbnREZWxldGVOb25FbXB0eUZvbGRlcic6IDQwNSxcblxuXHQnQ2FudFNhdmVTZXR0aW5ncyc6IDUwMSxcblx0J0NhbnRTYXZlUGx1Z2luU2V0dGluZ3MnOiA1MDIsXG5cblx0J0RvbWFpbkFscmVhZHlFeGlzdHMnOiA2MDEsXG5cblx0J0NhbnRJbnN0YWxsUGFja2FnZSc6IDcwMSxcblx0J0NhbnREZWxldGVQYWNrYWdlJzogNzAyLFxuXHQnSW52YWxpZFBsdWdpblBhY2thZ2UnOiA3MDMsXG5cdCdVbnN1cHBvcnRlZFBsdWdpblBhY2thZ2UnOiA3MDQsXG5cblx0J0xpY2Vuc2luZ1NlcnZlcklzVW5hdmFpbGFibGUnOiA3MTAsXG5cdCdMaWNlbnNpbmdFeHBpcmVkJzogNzExLFxuXHQnTGljZW5zaW5nQmFubmVkJzogNzEyLFxuXG5cdCdEZW1vU2VuZE1lc3NhZ2VFcnJvcic6IDc1MCxcblx0J0RlbW9BY2NvdW50RXJyb3InOiA3NTEsXG5cblx0J0FjY291bnRBbHJlYWR5RXhpc3RzJzogODAxLFxuXHQnQWNjb3VudERvZXNOb3RFeGlzdCc6IDgwMixcblxuXHQnTWFpbFNlcnZlckVycm9yJzogOTAxLFxuXHQnQ2xpZW50Vmlld0Vycm9yJzogOTAyLFxuXHQnSW52YWxpZElucHV0QXJndW1lbnQnOiA5MDMsXG5cblx0J0FqYXhGYWxzZSc6IDk1MCxcblx0J0FqYXhBYm9ydCc6IDk1MSxcblx0J0FqYXhQYXJzZSc6IDk1Mixcblx0J0FqYXhUaW1lb3V0JzogOTUzLFxuXG5cdCdVbmtub3duTm90aWZpY2F0aW9uJzogOTk5LFxuXHQnVW5rbm93bkVycm9yJzogOTk5XG59O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgJCBmcm9tICckJztcbmltcG9ydCBPcGVudGlwIGZyb20gJ09wZW50aXAnO1xuaW1wb3J0IFBpa2FkYXkgZnJvbSAncGlrYWRheSc7XG5cbmltcG9ydCB7IFNhdmVTZXR0aW5nc1N0ZXAsIE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5cbmNvbnN0IGtvID0gd2luZG93LmtvLFxuXHQkd2luID0gJCh3aW5kb3cpLFxuXHRmRGlzcG9zYWxUb29sdGlwSGVscGVyID0gKGVsZW1lbnQpID0+IHtcblx0XHRrby51dGlscy5kb21Ob2RlRGlzcG9zYWwuYWRkRGlzcG9zZUNhbGxiYWNrKGVsZW1lbnQsICgpID0+IHtcblx0XHRcdGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX19vcGVudGlwKSB7XG5cdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLmRlYWN0aXZhdGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fTtcblxua28uYmluZGluZ0hhbmRsZXJzLnVwZGF0ZVdpZHRoID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCAkZWwgPSAkKGVsZW1lbnQpLFxuXHRcdFx0ZlZhbHVlID0gZlZhbHVlQWNjZXNzb3IoKSxcblx0XHRcdGZJbml0ID0gKCkgPT4ge1xuXHRcdFx0XHRmVmFsdWUoJGVsLndpZHRoKCkpO1xuXHRcdFx0XHR3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0ZlZhbHVlKCRlbC53aWR0aCgpKTtcblx0XHRcdFx0fSwgTWFnaWNzLlRpbWU1MDBtcyk7XG5cdFx0XHR9O1xuXG5cdFx0JHdpbi5vbigncmVzaXplJywgZkluaXQpO1xuXHRcdGZJbml0KCk7XG5cblx0XHRrby51dGlscy5kb21Ob2RlRGlzcG9zYWwuYWRkRGlzcG9zZUNhbGxiYWNrKGVsZW1lbnQsICgpID0+IHtcblx0XHRcdCR3aW4ub2ZmKCdyZXNpemUnLCBmSW5pdCk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5lZGl0b3IgPSB7XG5cdGluaXQ6IChlbGVtZW50LCBmVmFsdWVBY2Nlc3NvcikgPT4ge1xuXHRcdGxldCBlZGl0b3IgPSBudWxsO1xuXG5cdFx0Y29uc3QgZlZhbHVlID0gZlZhbHVlQWNjZXNzb3IoKSxcblx0XHRcdEh0bWxFZGl0b3IgPSByZXF1aXJlKCdDb21tb24vSHRtbEVkaXRvcicpLmRlZmF1bHQsXG5cdFx0XHRmVXBkYXRlRWRpdG9yVmFsdWUgPSAoKSA9PiB7XG5cdFx0XHRcdGlmIChmVmFsdWUgJiYgZlZhbHVlLl9fZWRpdG9yKSB7XG5cdFx0XHRcdFx0ZlZhbHVlLl9fZWRpdG9yLnNldEh0bWxPclBsYWluKGZWYWx1ZSgpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGZVcGRhdGVLb1ZhbHVlID0gKCkgPT4ge1xuXHRcdFx0XHRpZiAoZlZhbHVlICYmIGZWYWx1ZS5fX2VkaXRvcikge1xuXHRcdFx0XHRcdGZWYWx1ZShmVmFsdWUuX19lZGl0b3IuZ2V0RGF0YVdpdGhIdG1sTWFyaygpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGZPblJlYWR5ID0gKCkgPT4ge1xuXHRcdFx0XHRmVmFsdWUuX19lZGl0b3IgPSBlZGl0b3I7XG5cdFx0XHRcdGZVcGRhdGVFZGl0b3JWYWx1ZSgpO1xuXHRcdFx0fTtcblxuXHRcdGlmIChrby5pc09ic2VydmFibGUoZlZhbHVlKSAmJiBIdG1sRWRpdG9yKSB7XG5cdFx0XHRlZGl0b3IgPSBuZXcgSHRtbEVkaXRvcihlbGVtZW50LCBmVXBkYXRlS29WYWx1ZSwgZk9uUmVhZHksIGZVcGRhdGVLb1ZhbHVlKTtcblxuXHRcdFx0ZlZhbHVlLl9fZmV0Y2hFZGl0b3JWYWx1ZSA9IGZVcGRhdGVLb1ZhbHVlO1xuXG5cdFx0XHRmVmFsdWUuc3Vic2NyaWJlKGZVcGRhdGVFZGl0b3JWYWx1ZSk7XG5cblx0XHRcdC8vIGtvLnV0aWxzLmRvbU5vZGVEaXNwb3NhbC5hZGREaXNwb3NlQ2FsbGJhY2soZWxlbWVudCwgKCkgPT4ge1xuXHRcdFx0Ly8gfSk7XG5cdFx0fVxuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuanNvbiA9IHtcblx0aW5pdDogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0JChlbGVtZW50KS50ZXh0KHdpbmRvdy5KU09OLnN0cmluZ2lmeShrby51bndyYXAoZlZhbHVlQWNjZXNzb3IoKSkpKTtcblx0fSxcblx0dXBkYXRlOiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHQkKGVsZW1lbnQpLnRleHQod2luZG93LkpTT04uc3RyaW5naWZ5KGtvLnVud3JhcChmVmFsdWVBY2Nlc3NvcigpKSkpO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuc2Nyb2xsZXJTaGFkb3dzID0ge1xuXHRpbml0OiAoZWxlbWVudCkgPT4ge1xuXHRcdGNvbnN0IGxpbWl0ID0gOCxcblx0XHRcdCRlbCA9ICQoZWxlbWVudCksXG5cdFx0XHRjb250ID0gJGVsLmZpbmQoJ1tkYXRhLXNjcm9sbGVyLXNoYWRvd3MtY29udGVudF0nKVswXSB8fCBudWxsLFxuXHRcdFx0ZkZ1bmMgPSBfLnRocm90dGxlKCgpID0+IHtcblx0XHRcdFx0JGVsXG5cdFx0XHRcdFx0LnRvZ2dsZUNsYXNzKCdzY3JvbGxlci1zaGFkb3ctdG9wJywgbGltaXQgPCBjb250LnNjcm9sbFRvcClcblx0XHRcdFx0XHQudG9nZ2xlQ2xhc3MoJ3Njcm9sbGVyLXNoYWRvdy1ib3R0b20nLCBjb250LnNjcm9sbFRvcCArIGxpbWl0IDwgY29udC5zY3JvbGxIZWlnaHQgLSBjb250LmNsaWVudEhlaWdodCk7XG5cdFx0XHR9LCAxMDApO1xuXG5cdFx0aWYgKGNvbnQpIHtcblx0XHRcdCQoY29udCkub24oJ3Njcm9sbCByZXNpemUnLCBmRnVuYyk7XG5cdFx0XHQkd2luLm9uKCdyZXNpemUnLCBmRnVuYyk7XG5cblx0XHRcdGtvLnV0aWxzLmRvbU5vZGVEaXNwb3NhbC5hZGREaXNwb3NlQ2FsbGJhY2soY29udCwgKCkgPT4ge1xuXHRcdFx0XHQkKGNvbnQpLm9mZigpO1xuXHRcdFx0XHQkd2luLm9mZigncmVzaXplJywgZkZ1bmMpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMucGlrYWRheSA9IHtcblx0aW5pdDogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yLCBmQWxsQmluZGluZ3NBY2Nlc3Nvciwgdmlld01vZGVsLCBiaW5kaW5nQ29udGV4dCkgPT4ge1xuXHRcdGtvLmJpbmRpbmdIYW5kbGVycy50ZXh0SW5wdXQuaW5pdChlbGVtZW50LCBmVmFsdWVBY2Nlc3NvciwgZkFsbEJpbmRpbmdzQWNjZXNzb3IsIHZpZXdNb2RlbCwgYmluZGluZ0NvbnRleHQpO1xuXG5cdFx0aWYgKFBpa2FkYXkpIHtcblx0XHRcdGVsZW1lbnQuX19waWthZGF5ID0gbmV3IFBpa2FkYXkoe1xuXHRcdFx0XHRmaWVsZDogZWxlbWVudFxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMudmlzaWJsZUFuaW1hdGVkID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCAkZWwgPSAkKGVsZW1lbnQpO1xuXHRcdCRlbC5hZGRDbGFzcygncmwtYW5pbWF0ZWQtaW5pdGVkJyk7XG5cdFx0aWYgKGtvLnVud3JhcChmVmFsdWVBY2Nlc3NvcigpKSkge1xuXHRcdFx0JGVsLnNob3coKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGVsLmhpZGUoKTtcblx0XHR9XG5cdH0sXG5cdHVwZGF0ZTogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0Y29uc3QgJGVsID0gJChlbGVtZW50KTtcblx0XHRpZiAoa28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpKSB7XG5cdFx0XHQkZWwuYWRkQ2xhc3MoJ3JsLWFuaW1hdGVkLWhpZGRlbicpLnNob3coKTtcblx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHQkZWwucmVtb3ZlQ2xhc3MoJ3JsLWFuaW1hdGVkLWhpZGRlbicpO1xuXHRcdFx0fSwgMTApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkZWwuaGlkZSgpLnJlbW92ZUNsYXNzKCdybC1hbmltYXRlZC1oaWRkZW4nKTtcblx0XHR9XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy50b29sdGlwID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCAkZWwgPSAkKGVsZW1lbnQpLFxuXHRcdFx0ZlZhbHVlID0gZlZhbHVlQWNjZXNzb3IoKSxcblx0XHRcdGlzTW9iaWxlID0gJ29uJyA9PT0gKCRlbC5kYXRhKCd0b29sdGlwLW1vYmlsZScpIHx8ICdvZmYnKSxcblx0XHRcdGlzSTE4TiA9ICdvbicgPT09ICgkZWwuZGF0YSgndG9vbHRpcC1pMThuJykgfHwgJ29uJyksXG5cdFx0XHRHbG9iYWxzID0gcmVxdWlyZSgnQ29tbW9uL0dsb2JhbHMnKTtcblxuXHRcdGlmICghR2xvYmFscy5iTW9iaWxlRGV2aWNlIHx8IGlzTW9iaWxlKSB7XG5cdFx0XHRjb25zdCBzVmFsdWUgPSAha28uaXNPYnNlcnZhYmxlKGZWYWx1ZSkgJiYgXy5pc0Z1bmN0aW9uKGZWYWx1ZSkgPyBmVmFsdWUoKSA6IGtvLnVud3JhcChmVmFsdWUpO1xuXG5cdFx0XHRlbGVtZW50Ll9fb3BlbnRpcCA9IG5ldyBPcGVudGlwKGVsZW1lbnQsIHtcblx0XHRcdFx0J3N0eWxlJzogJ3JhaW5sb29wVGlwJyxcblx0XHRcdFx0J2VsZW1lbnQnOiBlbGVtZW50LFxuXHRcdFx0XHQndGlwSm9pbnQnOiAkZWwuZGF0YSgndG9vbHRpcC1qb2luJykgfHwgJ2JvdHRvbSdcblx0XHRcdH0pO1xuXG5cdFx0XHRHbG9iYWxzLmRyb3Bkb3duVmlzaWJpbGl0eS5zdWJzY3JpYmUoKHYpID0+IHtcblx0XHRcdFx0aWYgKHYpIHtcblx0XHRcdFx0XHRlbGVtZW50Ll9fb3BlbnRpcC5oaWRlKCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoJycgPT09IHNWYWx1ZSkge1xuXHRcdFx0XHRlbGVtZW50Ll9fb3BlbnRpcC5oaWRlKCk7XG5cdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLmRlYWN0aXZhdGUoKTtcblx0XHRcdFx0ZWxlbWVudC5fX29wZW50aXAuc2V0Q29udGVudCgnJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRlbGVtZW50Ll9fb3BlbnRpcC5hY3RpdmF0ZSgpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoaXNJMThOKSB7XG5cdFx0XHRcdGNvbnN0IFRyYW5zbGF0b3IgPSByZXF1aXJlKCdDb21tb24vVHJhbnNsYXRvcicpO1xuXG5cdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLnNldENvbnRlbnQoVHJhbnNsYXRvci5pMThuKHNWYWx1ZSkpO1xuXG5cdFx0XHRcdFRyYW5zbGF0b3IudHJpZ2dlci5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLnNldENvbnRlbnQoVHJhbnNsYXRvci5pMThuKHNWYWx1ZSkpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRHbG9iYWxzLmRyb3Bkb3duVmlzaWJpbGl0eS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0XHRcdGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX19vcGVudGlwKSB7XG5cdFx0XHRcdFx0XHRlbGVtZW50Ll9fb3BlbnRpcC5zZXRDb250ZW50KFRyYW5zbGF0b3IuaTE4bihzVmFsdWUpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudC5fX29wZW50aXAuc2V0Q29udGVudChzVmFsdWUpO1xuXHRcdFx0fVxuXG5cdFx0XHQkd2luLm9uKCdybC50b29sdGlwcy5kaWFjdGl2YXRlJywgKCkgPT4ge1xuXHRcdFx0XHRlbGVtZW50Ll9fb3BlbnRpcC5oaWRlKCk7XG5cdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLmRlYWN0aXZhdGUoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHQkd2luLm9uKCdybC50b29sdGlwcy5hY3RpdmF0ZScsICgpID0+IHtcblx0XHRcdFx0ZWxlbWVudC5fX29wZW50aXAuYWN0aXZhdGUoKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblx0dXBkYXRlOiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCAkZWwgPSAkKGVsZW1lbnQpLFxuXHRcdFx0ZlZhbHVlID0gZlZhbHVlQWNjZXNzb3IoKSxcblx0XHRcdGlzTW9iaWxlID0gJ29uJyA9PT0gKCRlbC5kYXRhKCd0b29sdGlwLW1vYmlsZScpIHx8ICdvZmYnKSxcblx0XHRcdGlzSTE4TiA9ICdvbicgPT09ICgkZWwuZGF0YSgndG9vbHRpcC1pMThuJykgfHwgJ29uJyksXG5cdFx0XHRHbG9iYWxzID0gcmVxdWlyZSgnQ29tbW9uL0dsb2JhbHMnKTtcblxuXHRcdGlmICgoIUdsb2JhbHMuYk1vYmlsZURldmljZSB8fCBpc01vYmlsZSkgJiYgZWxlbWVudC5fX29wZW50aXApIHtcblx0XHRcdGNvbnN0IHNWYWx1ZSA9ICFrby5pc09ic2VydmFibGUoZlZhbHVlKSAmJiBfLmlzRnVuY3Rpb24oZlZhbHVlKSA/IGZWYWx1ZSgpIDoga28udW53cmFwKGZWYWx1ZSk7XG5cdFx0XHRpZiAoc1ZhbHVlKSB7XG5cdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLnNldENvbnRlbnQoaXNJMThOID8gcmVxdWlyZSgnQ29tbW9uL1RyYW5zbGF0b3InKS5pMThuKHNWYWx1ZSkgOiBzVmFsdWUpO1xuXHRcdFx0XHRlbGVtZW50Ll9fb3BlbnRpcC5hY3RpdmF0ZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZWxlbWVudC5fX29wZW50aXAuaGlkZSgpO1xuXHRcdFx0XHRlbGVtZW50Ll9fb3BlbnRpcC5kZWFjdGl2YXRlKCk7XG5cdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLnNldENvbnRlbnQoJycpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLnRvb2x0aXBFcnJvclRpcCA9IHtcblx0aW5pdDogZnVuY3Rpb24oZWxlbWVudCkge1xuXHRcdGNvbnN0ICRlbCA9ICQoZWxlbWVudCk7XG5cblx0XHRlbGVtZW50Ll9fb3BlbnRpcCA9IG5ldyBPcGVudGlwKGVsZW1lbnQsIHtcblx0XHRcdHN0eWxlOiAncmFpbmxvb3BFcnJvclRpcCcsXG5cdFx0XHRoaWRlT246ICdtb3VzZW91dCBjbGljaycsXG5cdFx0XHRlbGVtZW50OiBlbGVtZW50LFxuXHRcdFx0dGlwSm9pbnQ6ICRlbC5kYXRhKCd0b29sdGlwLWpvaW4nKSB8fCAndG9wJ1xuXHRcdH0pO1xuXG5cdFx0ZWxlbWVudC5fX29wZW50aXAuZGVhY3RpdmF0ZSgpO1xuXG5cdFx0JCh3aW5kb3cuZG9jdW1lbnQpLm9uKCdjbGljaycsICgpID0+IHtcblx0XHRcdGlmIChlbGVtZW50ICYmIGVsZW1lbnQuX19vcGVudGlwKSB7XG5cdFx0XHRcdGVsZW1lbnQuX19vcGVudGlwLmhpZGUoKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGZEaXNwb3NhbFRvb2x0aXBIZWxwZXIoZWxlbWVudCk7XG5cdH0sXG5cdHVwZGF0ZTogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0Y29uc3QgJGVsID0gJChlbGVtZW50KSxcblx0XHRcdGZWYWx1ZSA9IGZWYWx1ZUFjY2Vzc29yKCksXG5cdFx0XHR2YWx1ZSA9ICFrby5pc09ic2VydmFibGUoZlZhbHVlKSAmJiBfLmlzRnVuY3Rpb24oZlZhbHVlKSA/IGZWYWx1ZSgpIDoga28udW53cmFwKGZWYWx1ZSksXG5cdFx0XHRvcGVuVGlwcyA9IGVsZW1lbnQuX19vcGVudGlwO1xuXG5cdFx0aWYgKG9wZW5UaXBzKSB7XG5cdFx0XHRpZiAoJycgPT09IHZhbHVlKSB7XG5cdFx0XHRcdG9wZW5UaXBzLmhpZGUoKTtcblx0XHRcdFx0b3BlblRpcHMuZGVhY3RpdmF0ZSgpO1xuXHRcdFx0XHRvcGVuVGlwcy5zZXRDb250ZW50KCcnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRcdGlmICgkZWwuaXMoJzp2aXNpYmxlJykpIHtcblx0XHRcdFx0XHRcdG9wZW5UaXBzLnNldENvbnRlbnQodmFsdWUpO1xuXHRcdFx0XHRcdFx0b3BlblRpcHMuYWN0aXZhdGUoKTtcblx0XHRcdFx0XHRcdG9wZW5UaXBzLnNob3coKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0b3BlblRpcHMuaGlkZSgpO1xuXHRcdFx0XHRcdFx0b3BlblRpcHMuZGVhY3RpdmF0ZSgpO1xuXHRcdFx0XHRcdFx0b3BlblRpcHMuc2V0Q29udGVudCgnJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LCBNYWdpY3MuVGltZTEwMG1zKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5yZWdpc3RyYXRlQm9vdHN0cmFwRHJvcGRvd24gPSB7XG5cdGluaXQ6IChlbGVtZW50KSA9PiB7XG5cdFx0Y29uc3QgR2xvYmFscyA9IHJlcXVpcmUoJ0NvbW1vbi9HbG9iYWxzJyk7XG5cdFx0aWYgKEdsb2JhbHMgJiYgR2xvYmFscy5kYXRhLmFCb290c3RyYXBEcm9wZG93bnMpIHtcblx0XHRcdEdsb2JhbHMuZGF0YS5hQm9vdHN0cmFwRHJvcGRvd25zLnB1c2goJChlbGVtZW50KSk7XG5cblx0XHRcdCQoZWxlbWVudCkuY2xpY2soKCkgPT4ge1xuXHRcdFx0XHRyZXF1aXJlKCdDb21tb24vVXRpbHMnKS5kZXRlY3REcm9wZG93blZpc2liaWxpdHkoKTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBrby51dGlscy5kb21Ob2RlRGlzcG9zYWwuYWRkRGlzcG9zZUNhbGxiYWNrKGVsZW1lbnQsICgpID0+IHtcblx0XHRcdC8vIH0pO1xuXHRcdH1cblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLm9wZW5Ecm9wZG93blRyaWdnZXIgPSB7XG5cdHVwZGF0ZTogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0aWYgKGtvLnVud3JhcChmVmFsdWVBY2Nlc3NvcigpKSkge1xuXHRcdFx0Y29uc3QgJGVsID0gJChlbGVtZW50KTtcblx0XHRcdGlmICghJGVsLmhhc0NsYXNzKCdvcGVuJykpIHtcblx0XHRcdFx0JGVsLmZpbmQoJy5kcm9wZG93bi10b2dnbGUnKS5kcm9wZG93bigndG9nZ2xlJyk7XG5cdFx0XHR9XG5cblx0XHRcdCRlbC5maW5kKCcuZHJvcGRvd24tdG9nZ2xlJykuZm9jdXMoKTtcblxuXHRcdFx0cmVxdWlyZSgnQ29tbW9uL1V0aWxzJykuZGV0ZWN0RHJvcGRvd25WaXNpYmlsaXR5KCk7XG5cdFx0XHRmVmFsdWVBY2Nlc3NvcigpKGZhbHNlKTtcblx0XHR9XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5kcm9wZG93bkNsb3NlciA9IHtcblx0aW5pdDogKGVsZW1lbnQpID0+IHtcblx0XHQkKGVsZW1lbnQpXG5cdFx0XHQuY2xvc2VzdCgnLmRyb3Bkb3duJylcblx0XHRcdC5vbignY2xpY2snLCAnLmUtaXRlbScsICgpID0+IHtcblx0XHRcdFx0JChlbGVtZW50KS5kcm9wZG93bigndG9nZ2xlJyk7XG5cdFx0XHR9KTtcblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLnBvcG92ZXIgPSB7XG5cdGluaXQ6IGZ1bmN0aW9uKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSB7XG5cdFx0JChlbGVtZW50KS5wb3BvdmVyKGtvLnVud3JhcChmVmFsdWVBY2Nlc3NvcigpKSk7XG5cblx0XHRrby51dGlscy5kb21Ob2RlRGlzcG9zYWwuYWRkRGlzcG9zZUNhbGxiYWNrKGVsZW1lbnQsICgpID0+IHtcblx0XHRcdCQoZWxlbWVudCkucG9wb3ZlcignZGVzdHJveScpO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuY3NzdGV4dCA9IHt9O1xua28uYmluZGluZ0hhbmRsZXJzLmNzc3RleHQuaW5pdCA9IGtvLmJpbmRpbmdIYW5kbGVycy5jc3N0ZXh0LnVwZGF0ZSA9IChlbGVtZW50LCBmVmFsdWVBY2Nlc3NvcikgPT4ge1xuXHRpZiAoZWxlbWVudCAmJiBlbGVtZW50LnN0eWxlU2hlZXQgJiYgJ3VuZGVmaW5lZCcgIT09IHR5cGVvZiBlbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCkge1xuXHRcdGVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0ga28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpO1xuXHR9IGVsc2Uge1xuXHRcdCQoZWxlbWVudCkudGV4dChrby51bndyYXAoZlZhbHVlQWNjZXNzb3IoKSkpO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMucmVzaXplY3JvcCA9IHtcblx0aW5pdDogKGVsZW1lbnQpID0+IHtcblx0XHQkKGVsZW1lbnQpXG5cdFx0XHQuYWRkQ2xhc3MoJ3Jlc2l6ZWNyb3AnKVxuXHRcdFx0LnJlc2l6ZWNyb3Aoe1xuXHRcdFx0XHQnd2lkdGgnOiAnMTAwJyxcblx0XHRcdFx0J2hlaWdodCc6ICcxMDAnLFxuXHRcdFx0XHQnd3JhcHBlckNTUyc6IHtcblx0XHRcdFx0XHQnYm9yZGVyLXJhZGl1cyc6ICcxMHB4J1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0fSxcblx0dXBkYXRlOiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRmVmFsdWVBY2Nlc3NvcigpKCk7XG5cdFx0JChlbGVtZW50KS5yZXNpemVjcm9wKHtcblx0XHRcdCd3aWR0aCc6ICcxMDAnLFxuXHRcdFx0J2hlaWdodCc6ICcxMDAnXG5cdFx0fSk7XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5vbktleURvd24gPSB7XG5cdGluaXQ6IChlbGVtZW50LCBmVmFsdWVBY2Nlc3NvciwgZkFsbEJpbmRpbmdzQWNjZXNzb3IsIHZpZXdNb2RlbCkgPT4ge1xuXHRcdCQoZWxlbWVudCkub24oJ2tleWRvd24ua29PbktleURvd24nLCAoZXZlbnQpID0+IHtcblx0XHRcdGlmIChldmVudCkge1xuXHRcdFx0XHRyZXR1cm4gZlZhbHVlQWNjZXNzb3IoKS5jYWxsKHZpZXdNb2RlbCwgZXZlbnQpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9KTtcblxuXHRcdGtvLnV0aWxzLmRvbU5vZGVEaXNwb3NhbC5hZGREaXNwb3NlQ2FsbGJhY2soZWxlbWVudCwgKCkgPT4ge1xuXHRcdFx0JChlbGVtZW50KS5vZmYoJ2tleWRvd24ua29PbktleURvd24nKTtcblx0XHR9KTtcblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLm9uRW50ZXIgPSB7XG5cdGluaXQ6IChlbGVtZW50LCBmVmFsdWVBY2Nlc3NvciwgZkFsbEJpbmRpbmdzQWNjZXNzb3IsIHZpZXdNb2RlbCkgPT4ge1xuXHRcdCQoZWxlbWVudCkub24oJ2tleXByZXNzLmtvT25FbnRlcicsIChldmVudCkgPT4ge1xuXHRcdFx0aWYgKGV2ZW50ICYmIDEzID09PSB3aW5kb3cucGFyc2VJbnQoZXZlbnQua2V5Q29kZSwgMTApKSB7XG5cdFx0XHRcdCQoZWxlbWVudCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHRcdGZWYWx1ZUFjY2Vzc29yKCkuY2FsbCh2aWV3TW9kZWwpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0a28udXRpbHMuZG9tTm9kZURpc3Bvc2FsLmFkZERpc3Bvc2VDYWxsYmFjayhlbGVtZW50LCAoKSA9PiB7XG5cdFx0XHQkKGVsZW1lbnQpLm9mZigna2V5cHJlc3Mua29PbkVudGVyJyk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5vblNwYWNlID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IsIGZBbGxCaW5kaW5nc0FjY2Vzc29yLCB2aWV3TW9kZWwpID0+IHtcblx0XHQkKGVsZW1lbnQpLm9uKCdrZXl1cC5rb09uU3BhY2UnLCAoZXZlbnQpID0+IHtcblx0XHRcdGlmIChldmVudCAmJiAzMiA9PT0gd2luZG93LnBhcnNlSW50KGV2ZW50LmtleUNvZGUsIDEwKSkge1xuXHRcdFx0XHRmVmFsdWVBY2Nlc3NvcigpLmNhbGwodmlld01vZGVsLCBldmVudCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRrby51dGlscy5kb21Ob2RlRGlzcG9zYWwuYWRkRGlzcG9zZUNhbGxiYWNrKGVsZW1lbnQsICgpID0+IHtcblx0XHRcdCQoZWxlbWVudCkub2ZmKCdrZXl1cC5rb09uU3BhY2UnKTtcblx0XHR9KTtcblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLm9uVGFiID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IsIGZBbGxCaW5kaW5nc0FjY2Vzc29yLCB2aWV3TW9kZWwpID0+IHtcblx0XHQkKGVsZW1lbnQpLm9uKCdrZXlkb3duLmtvT25UYWInLCAoZXZlbnQpID0+IHtcblx0XHRcdGlmIChldmVudCAmJiA5ID09PSB3aW5kb3cucGFyc2VJbnQoZXZlbnQua2V5Q29kZSwgMTApKSB7XG5cdFx0XHRcdHJldHVybiBmVmFsdWVBY2Nlc3NvcigpLmNhbGwodmlld01vZGVsLCAhIWV2ZW50LnNoaWZ0S2V5KTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0pO1xuXG5cdFx0a28udXRpbHMuZG9tTm9kZURpc3Bvc2FsLmFkZERpc3Bvc2VDYWxsYmFjayhlbGVtZW50LCAoKSA9PiB7XG5cdFx0XHQkKGVsZW1lbnQpLm9mZigna2V5ZG93bi5rb09uVGFiJyk7XG5cdFx0fSk7XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5vbkVzYyA9IHtcblx0aW5pdDogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yLCBmQWxsQmluZGluZ3NBY2Nlc3Nvciwgdmlld01vZGVsKSA9PiB7XG5cdFx0JChlbGVtZW50KS5vbigna2V5dXAua29PbkVzYycsIChldmVudCkgPT4ge1xuXHRcdFx0aWYgKGV2ZW50ICYmIDI3ID09PSB3aW5kb3cucGFyc2VJbnQoZXZlbnQua2V5Q29kZSwgMTApKSB7XG5cdFx0XHRcdCQoZWxlbWVudCkudHJpZ2dlcignY2hhbmdlJyk7XG5cdFx0XHRcdGZWYWx1ZUFjY2Vzc29yKCkuY2FsbCh2aWV3TW9kZWwpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0a28udXRpbHMuZG9tTm9kZURpc3Bvc2FsLmFkZERpc3Bvc2VDYWxsYmFjayhlbGVtZW50LCAoKSA9PiB7XG5cdFx0XHQkKGVsZW1lbnQpLm9mZigna2V5dXAua29PbkVzYycpO1xuXHRcdH0pO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuY2xpY2tPblRydWUgPSB7XG5cdHVwZGF0ZTogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0aWYgKGtvLnVud3JhcChmVmFsdWVBY2Nlc3NvcigpKSkge1xuXHRcdFx0JChlbGVtZW50KS5jbGljaygpO1xuXHRcdH1cblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLm1vZGFsID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCBHbG9iYWxzID0gcmVxdWlyZSgnQ29tbW9uL0dsb2JhbHMnKSxcblx0XHRcdFV0aWxzID0gcmVxdWlyZSgnQ29tbW9uL1V0aWxzJyk7XG5cblx0XHQkKGVsZW1lbnQpXG5cdFx0XHQudG9nZ2xlQ2xhc3MoJ2ZhZGUnLCAhR2xvYmFscy5iTW9iaWxlRGV2aWNlKVxuXHRcdFx0Lm1vZGFsKHtcblx0XHRcdFx0J2tleWJvYXJkJzogZmFsc2UsXG5cdFx0XHRcdCdzaG93Jzoga28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpXG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdzaG93bi5rb01vZGFsJywgVXRpbHMud2luZG93UmVzaXplQ2FsbGJhY2spXG5cdFx0XHQuZmluZCgnLmNsb3NlJylcblx0XHRcdC5vbignY2xpY2sua29Nb2RhbCcsICgpID0+IHtcblx0XHRcdFx0ZlZhbHVlQWNjZXNzb3IoKShmYWxzZSk7XG5cdFx0XHR9KTtcblxuXHRcdGtvLnV0aWxzLmRvbU5vZGVEaXNwb3NhbC5hZGREaXNwb3NlQ2FsbGJhY2soZWxlbWVudCwgKCkgPT4ge1xuXHRcdFx0JChlbGVtZW50KVxuXHRcdFx0XHQub2ZmKCdzaG93bi5rb01vZGFsJylcblx0XHRcdFx0LmZpbmQoJy5jbG9zZScpXG5cdFx0XHRcdC5vZmYoJ2NsaWNrLmtvTW9kYWwnKTtcblx0XHR9KTtcblx0fSxcblx0dXBkYXRlOiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCBHbG9iYWxzID0gcmVxdWlyZSgnQ29tbW9uL0dsb2JhbHMnKTtcblxuXHRcdCQoZWxlbWVudCkubW9kYWwoa28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpID8gJ3Nob3cnIDogJ2hpZGUnKTtcblxuXHRcdGlmIChHbG9iYWxzLiRodG1sLmhhc0NsYXNzKCdybC1hbmltJykpIHtcblx0XHRcdEdsb2JhbHMuJGh0bWwuYWRkQ2xhc3MoJ3JsLW1vZGFsLWFuaW1hdGlvbicpO1xuXHRcdFx0Xy5kZWxheSgoKSA9PiB7XG5cdFx0XHRcdEdsb2JhbHMuJGh0bWwucmVtb3ZlQ2xhc3MoJ3JsLW1vZGFsLWFuaW1hdGlvbicpO1xuXHRcdFx0fSwgTWFnaWNzLlRpbWU1MDBtcyk7XG5cdFx0fVxuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMubW9tZW50ID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRyZXF1aXJlKCdDb21tb24vTW9tZW50b3InKS5tb21lbnRUb05vZGUoXG5cdFx0XHQkKGVsZW1lbnQpXG5cdFx0XHRcdC5hZGRDbGFzcygnbW9tZW50Jylcblx0XHRcdFx0LmRhdGEoJ21vbWVudC10aW1lJywga28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpKVxuXHRcdCk7XG5cdH0sXG5cdHVwZGF0ZTogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0cmVxdWlyZSgnQ29tbW9uL01vbWVudG9yJykubW9tZW50VG9Ob2RlKCQoZWxlbWVudCkuZGF0YSgnbW9tZW50LXRpbWUnLCBrby51bndyYXAoZlZhbHVlQWNjZXNzb3IoKSkpKTtcblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLmkxOG5Jbml0ID0ge1xuXHRpbml0OiAoZWxlbWVudCkgPT4ge1xuXHRcdHJlcXVpcmUoJ0NvbW1vbi9UcmFuc2xhdG9yJykuaTE4blRvTm9kZXMoZWxlbWVudCk7XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy50cmFuc2xhdG9ySW5pdCA9IHtcblx0aW5pdDogKGVsZW1lbnQpID0+IHtcblx0XHRyZXF1aXJlKCdDb21tb24vVHJhbnNsYXRvcicpLmkxOG5Ub05vZGVzKGVsZW1lbnQpO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuaTE4blVwZGF0ZSA9IHtcblx0dXBkYXRlOiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRrby51bndyYXAoZlZhbHVlQWNjZXNzb3IoKSk7XG5cdFx0cmVxdWlyZSgnQ29tbW9uL1RyYW5zbGF0b3InKS5pMThuVG9Ob2RlcyhlbGVtZW50KTtcblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLmxpbmsgPSB7XG5cdHVwZGF0ZTogZnVuY3Rpb24oZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpIHtcblx0XHQkKGVsZW1lbnQpLmF0dHIoJ2hyZWYnLCBrby51bndyYXAoZlZhbHVlQWNjZXNzb3IoKSkpO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMudGl0bGUgPSB7XG5cdHVwZGF0ZTogZnVuY3Rpb24oZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpIHtcblx0XHQkKGVsZW1lbnQpLmF0dHIoJ3RpdGxlJywga28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpKTtcblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLnRleHRGID0ge1xuXHRpbml0OiBmdW5jdGlvbihlbGVtZW50LCBmVmFsdWVBY2Nlc3Nvcikge1xuXHRcdCQoZWxlbWVudCkudGV4dChrby51bndyYXAoZlZhbHVlQWNjZXNzb3IoKSkpO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuaW5pdERvbSA9IHtcblx0aW5pdDogZnVuY3Rpb24oZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpIHtcblx0XHRmVmFsdWVBY2Nlc3NvcigpKGVsZW1lbnQpO1xuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuaW5pdEZpeGVkVHJpZ2dlciA9IHtcblx0aW5pdDogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0Y29uc3QgdmFsdWVzID0ga28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpLFxuXHRcdFx0JGVsID0gJChlbGVtZW50KSxcblx0XHRcdHRvcCA9IHZhbHVlc1sxXSB8fCAwO1xuXG5cdFx0bGV0ICRjb250YWluZXIgPSAkKHZhbHVlc1swXSB8fCBudWxsKTtcblx0XHQkY29udGFpbmVyID0gJGNvbnRhaW5lclswXSA/ICRjb250YWluZXIgOiBudWxsO1xuXHRcdGlmICgkY29udGFpbmVyKSB7XG5cdFx0XHQkd2luLnJlc2l6ZSgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG9mZnNldCA9ICRjb250YWluZXIgPyAkY29udGFpbmVyLm9mZnNldCgpIDogbnVsbDtcblx0XHRcdFx0aWYgKG9mZnNldCAmJiBvZmZzZXQudG9wKSB7XG5cdFx0XHRcdFx0JGVsLmNzcygndG9wJywgb2Zmc2V0LnRvcCArIHRvcCk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLmluaXRSZXNpemVUcmlnZ2VyID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCB2YWx1ZXMgPSBrby51bndyYXAoZlZhbHVlQWNjZXNzb3IoKSk7XG5cdFx0JChlbGVtZW50KS5jc3Moe1xuXHRcdFx0J2hlaWdodCc6IHZhbHVlc1sxXSxcblx0XHRcdCdtaW4taGVpZ2h0JzogdmFsdWVzWzFdXG5cdFx0fSk7XG5cdH0sXG5cdHVwZGF0ZTogKG9FbGVtZW50LCBmVmFsdWVBY2Nlc3NvcikgPT4ge1xuXHRcdGNvbnN0IFV0aWxzID0gcmVxdWlyZSgnQ29tbW9uL1V0aWxzJyksXG5cdFx0XHRHbG9iYWxzID0gcmVxdWlyZSgnQ29tbW9uL0dsb2JhbHMnKSxcblx0XHRcdHZhbHVlcyA9IGtvLnVud3JhcChmVmFsdWVBY2Nlc3NvcigpKTtcblxuXHRcdGxldCB2YWx1ZSA9IFV0aWxzLnBJbnQodmFsdWVzWzFdKSxcblx0XHRcdHNpemUgPSAwLFxuXHRcdFx0b2Zmc2V0ID0gJChvRWxlbWVudCkub2Zmc2V0KCkudG9wO1xuXG5cdFx0aWYgKDAgPCBvZmZzZXQpIHtcblx0XHRcdG9mZnNldCArPSBVdGlscy5wSW50KHZhbHVlc1syXSk7XG5cdFx0XHRzaXplID0gR2xvYmFscy4kd2luLmhlaWdodCgpIC0gb2Zmc2V0O1xuXG5cdFx0XHRpZiAodmFsdWUgPCBzaXplKSB7XG5cdFx0XHRcdHZhbHVlID0gc2l6ZTtcblx0XHRcdH1cblxuXHRcdFx0JChvRWxlbWVudCkuY3NzKHtcblx0XHRcdFx0J2hlaWdodCc6IHZhbHVlLFxuXHRcdFx0XHQnbWluLWhlaWdodCc6IHZhbHVlXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5hcHBlbmREb20gPSB7XG5cdHVwZGF0ZTogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yKSA9PiB7XG5cdFx0JChlbGVtZW50KVxuXHRcdFx0LmhpZGUoKVxuXHRcdFx0LmVtcHR5KClcblx0XHRcdC5hcHBlbmQoa28udW53cmFwKGZWYWx1ZUFjY2Vzc29yKCkpKVxuXHRcdFx0LnNob3coKTtcblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLmRyYWdnYWJsZSA9IHtcblx0aW5pdDogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yLCBmQWxsQmluZGluZ3NBY2Nlc3NvcikgPT4ge1xuXHRcdGNvbnN0IEdsb2JhbHMgPSByZXF1aXJlKCdDb21tb24vR2xvYmFscycpLFxuXHRcdFx0VXRpbHMgPSByZXF1aXJlKCdDb21tb24vVXRpbHMnKTtcblxuXHRcdGlmICghR2xvYmFscy5iTW9iaWxlRGV2aWNlKSB7XG5cdFx0XHRjb25zdCB0cmlnZ2VyWm9uZSA9IDEwMCxcblx0XHRcdFx0c2Nyb2xsU3BlZWQgPSAzLFxuXHRcdFx0XHRmQWxsVmFsdWVGdW5jID0gZkFsbEJpbmRpbmdzQWNjZXNzb3IoKSxcblx0XHRcdFx0ZHJvcHBhYmxlU2VsZWN0b3IgPSBmQWxsVmFsdWVGdW5jICYmIGZBbGxWYWx1ZUZ1bmMuZHJvcHBhYmxlU2VsZWN0b3IgPyBmQWxsVmFsdWVGdW5jLmRyb3BwYWJsZVNlbGVjdG9yIDogJycsXG5cdFx0XHRcdGNvbmYgPSB7XG5cdFx0XHRcdFx0ZGlzdGFuY2U6IDIwLFxuXHRcdFx0XHRcdGhhbmRsZTogJy5kcmFnSGFuZGxlJyxcblx0XHRcdFx0XHRjdXJzb3JBdDogeyB0b3A6IDIyLCBsZWZ0OiAzIH0sXG5cdFx0XHRcdFx0cmVmcmVzaFBvc2l0aW9uczogdHJ1ZSxcblx0XHRcdFx0XHRzY3JvbGw6IHRydWUsXG5cdFx0XHRcdFx0ZHJhZzogbnVsbCxcblx0XHRcdFx0XHRzdG9wOiBudWxsLFxuXHRcdFx0XHRcdGhlbHBlcjogbnVsbFxuXHRcdFx0XHR9O1xuXG5cdFx0XHRpZiAoZHJvcHBhYmxlU2VsZWN0b3IpIHtcblx0XHRcdFx0Y29uZi5kcmFnID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0JChkcm9wcGFibGVTZWxlY3RvcikuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGNvbnN0ICR0aGlzID0gJCh0aGlzKSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0XHRcdFx0b2Zmc2V0ID0gJHRoaXMub2Zmc2V0KCksXG5cdFx0XHRcdFx0XHRcdGJvdHRvbVBvcyA9IG9mZnNldC50b3AgKyAkdGhpcy5oZWlnaHQoKTtcblxuXHRcdFx0XHRcdFx0d2luZG93LmNsZWFySW50ZXJ2YWwoJHRoaXMuZGF0YSgndGltZXJTY3JvbGwnKSk7XG5cdFx0XHRcdFx0XHQkdGhpcy5kYXRhKCd0aW1lclNjcm9sbCcsIGZhbHNlKTtcblxuXHRcdFx0XHRcdFx0aWYgKGV2ZW50LnBhZ2VYID49IG9mZnNldC5sZWZ0ICYmIGV2ZW50LnBhZ2VYIDw9IG9mZnNldC5sZWZ0ICsgJHRoaXMud2lkdGgoKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnQucGFnZVkgPj0gYm90dG9tUG9zIC0gdHJpZ2dlclpvbmUgJiYgZXZlbnQucGFnZVkgPD0gYm90dG9tUG9zKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgbW92ZVVwID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuc2Nyb2xsVG9wKCR0aGlzLnNjcm9sbFRvcCgpICsgc2Nyb2xsU3BlZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0VXRpbHMud2luZG93UmVzaXplKCk7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLmRhdGEoJ3RpbWVyU2Nyb2xsJywgd2luZG93LnNldEludGVydmFsKG1vdmVVcCwgMTApKTtcblx0XHRcdFx0XHRcdFx0XHRtb3ZlVXAoKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmIChldmVudC5wYWdlWSA+PSBvZmZzZXQudG9wICYmIGV2ZW50LnBhZ2VZIDw9IG9mZnNldC50b3AgKyB0cmlnZ2VyWm9uZSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IG1vdmVEb3duID0gKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuc2Nyb2xsVG9wKCR0aGlzLnNjcm9sbFRvcCgpIC0gc2Nyb2xsU3BlZWQpO1xuXHRcdFx0XHRcdFx0XHRcdFx0VXRpbHMud2luZG93UmVzaXplKCk7XG5cdFx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLmRhdGEoJ3RpbWVyU2Nyb2xsJywgd2luZG93LnNldEludGVydmFsKG1vdmVEb3duLCAxMCkpO1xuXHRcdFx0XHRcdFx0XHRcdG1vdmVEb3duKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fTtcblxuXHRcdFx0XHRjb25mLnN0b3AgPSAoKSA9PiB7XG5cdFx0XHRcdFx0JChkcm9wcGFibGVTZWxlY3RvcikuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdGNvbnN0ICR0aGlzID0gJCh0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0XHRcdHdpbmRvdy5jbGVhckludGVydmFsKCR0aGlzLmRhdGEoJ3RpbWVyU2Nyb2xsJykpO1xuXHRcdFx0XHRcdFx0JHRoaXMuZGF0YSgndGltZXJTY3JvbGwnLCBmYWxzZSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdGNvbmYuaGVscGVyID0gKGV2ZW50KSA9PiBmVmFsdWVBY2Nlc3NvcigpKGV2ZW50ICYmIGV2ZW50LnRhcmdldCA/IGtvLmRhdGFGb3IoZXZlbnQudGFyZ2V0KSA6IG51bGwpO1xuXG5cdFx0XHQkKGVsZW1lbnQpXG5cdFx0XHRcdC5kcmFnZ2FibGUoY29uZilcblx0XHRcdFx0Lm9uKCdtb3VzZWRvd24ua29EcmFnZ2FibGUnLCAoKSA9PiB7XG5cdFx0XHRcdFx0VXRpbHMucmVtb3ZlSW5Gb2N1cygpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0a28udXRpbHMuZG9tTm9kZURpc3Bvc2FsLmFkZERpc3Bvc2VDYWxsYmFjayhlbGVtZW50LCAoKSA9PiB7XG5cdFx0XHRcdCQoZWxlbWVudClcblx0XHRcdFx0XHQub2ZmKCdtb3VzZWRvd24ua29EcmFnZ2FibGUnKVxuXHRcdFx0XHRcdC5kcmFnZ2FibGUoJ2Rlc3Ryb3knKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLmRyb3BwYWJsZSA9IHtcblx0aW5pdDogKGVsZW1lbnQsIGZWYWx1ZUFjY2Vzc29yLCBmQWxsQmluZGluZ3NBY2Nlc3NvcikgPT4ge1xuXHRcdGNvbnN0IEdsb2JhbHMgPSByZXF1aXJlKCdDb21tb24vR2xvYmFscycpO1xuXHRcdGlmICghR2xvYmFscy5iTW9iaWxlRGV2aWNlKSB7XG5cdFx0XHRjb25zdCBmVmFsdWVGdW5jID0gZlZhbHVlQWNjZXNzb3IoKSxcblx0XHRcdFx0ZkFsbFZhbHVlRnVuYyA9IGZBbGxCaW5kaW5nc0FjY2Vzc29yKCksXG5cdFx0XHRcdGZPdmVyQ2FsbGJhY2sgPSBmQWxsVmFsdWVGdW5jICYmIGZBbGxWYWx1ZUZ1bmMuZHJvcHBhYmxlT3ZlciA/IGZBbGxWYWx1ZUZ1bmMuZHJvcHBhYmxlT3ZlciA6IG51bGwsXG5cdFx0XHRcdGZPdXRDYWxsYmFjayA9IGZBbGxWYWx1ZUZ1bmMgJiYgZkFsbFZhbHVlRnVuYy5kcm9wcGFibGVPdXQgPyBmQWxsVmFsdWVGdW5jLmRyb3BwYWJsZU91dCA6IG51bGwsXG5cdFx0XHRcdGNvbmYgPSB7XG5cdFx0XHRcdFx0dG9sZXJhbmNlOiAncG9pbnRlcicsXG5cdFx0XHRcdFx0aG92ZXJDbGFzczogJ2Ryb3BwYWJsZUhvdmVyJyxcblx0XHRcdFx0XHRkcm9wOiBudWxsLFxuXHRcdFx0XHRcdG92ZXI6IG51bGwsXG5cdFx0XHRcdFx0b3V0OiBudWxsXG5cdFx0XHRcdH07XG5cblx0XHRcdGlmIChmVmFsdWVGdW5jKSB7XG5cdFx0XHRcdGNvbmYuZHJvcCA9IChldmVudCwgdWkpID0+IHtcblx0XHRcdFx0XHRmVmFsdWVGdW5jKGV2ZW50LCB1aSk7XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0aWYgKGZPdmVyQ2FsbGJhY2spIHtcblx0XHRcdFx0XHRjb25mLm92ZXIgPSAoZXZlbnQsIHVpKSA9PiB7XG5cdFx0XHRcdFx0XHRmT3ZlckNhbGxiYWNrKGV2ZW50LCB1aSk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChmT3V0Q2FsbGJhY2spIHtcblx0XHRcdFx0XHRjb25mLm91dCA9IChldmVudCwgdWkpID0+IHtcblx0XHRcdFx0XHRcdGZPdXRDYWxsYmFjayhldmVudCwgdWkpO1xuXHRcdFx0XHRcdH07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQkKGVsZW1lbnQpLmRyb3BwYWJsZShjb25mKTtcblxuXHRcdFx0XHRrby51dGlscy5kb21Ob2RlRGlzcG9zYWwuYWRkRGlzcG9zZUNhbGxiYWNrKGVsZW1lbnQsICgpID0+IHtcblx0XHRcdFx0XHQkKGVsZW1lbnQpLmRyb3BwYWJsZSgnZGVzdHJveScpO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5uYW5vID0ge1xuXHRpbml0OiAoZWxlbWVudCkgPT4ge1xuXHRcdGNvbnN0IEdsb2JhbHMgPSByZXF1aXJlKCdDb21tb24vR2xvYmFscycpLFxuXHRcdFx0U2V0dGluZ3MgPSByZXF1aXJlKCdTdG9yYWdlL1NldHRpbmdzJyk7XG5cblx0XHRpZiAoIUdsb2JhbHMuYkRpc2FibGVOYW5vU2Nyb2xsICYmICFTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgndXNlTmF0aXZlU2Nyb2xsYmFycycpKSB7XG5cdFx0XHQkKGVsZW1lbnQpXG5cdFx0XHRcdC5hZGRDbGFzcygnbmFubycpXG5cdFx0XHRcdC5uYW5vU2Nyb2xsZXIoe1xuXHRcdFx0XHRcdGlPU05hdGl2ZVNjcm9sbGluZzogZmFsc2UsXG5cdFx0XHRcdFx0cHJldmVudFBhZ2VTY3JvbGxpbmc6IHRydWVcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59O1xuXG5rby5iaW5kaW5nSGFuZGxlcnMuc2F2ZVRyaWdnZXIgPSB7XG5cdGluaXQ6IChlbGVtZW50KSA9PiB7XG5cdFx0Y29uc3QgJGVsID0gJChlbGVtZW50KTtcblxuXHRcdCRlbC5kYXRhKFxuXHRcdFx0J3NhdmUtdHJpZ2dlci10eXBlJyxcblx0XHRcdCRlbC5pcygnaW5wdXRbdHlwZT10ZXh0XSxpbnB1dFt0eXBlPWVtYWlsXSxpbnB1dFt0eXBlPXBhc3N3b3JkXSxzZWxlY3QsdGV4dGFyZWEnKSA/ICdpbnB1dCcgOiAnY3VzdG9tJ1xuXHRcdCk7XG5cblx0XHRpZiAoJ2N1c3RvbScgPT09ICRlbC5kYXRhKCdzYXZlLXRyaWdnZXItdHlwZScpKSB7XG5cdFx0XHQkZWxcblx0XHRcdFx0LmFwcGVuZChcblx0XHRcdFx0XHQnJm5ic3A7Jm5ic3A7JyArXG5cdFx0XHRcdFx0XHQnPGkgY2xhc3M9XCJpY29uLXNwaW5uZXIgYW5pbWF0ZWRcIj48L2k+JyArXG5cdFx0XHRcdFx0XHQnPGkgY2xhc3M9XCJpY29uLXJlbW92ZSBlcnJvclwiPjwvaT4nICtcblx0XHRcdFx0XHRcdCc8aSBjbGFzcz1cImljb24tb2sgc3VjY2Vzc1wiPjwvaT4nXG5cdFx0XHRcdClcblx0XHRcdFx0LmFkZENsYXNzKCdzZXR0aW5ncy1zYXZlZC10cmlnZ2VyJyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCRlbC5hZGRDbGFzcygnc2V0dGluZ3Mtc2F2ZWQtdHJpZ2dlci1pbnB1dCcpO1xuXHRcdH1cblx0fSxcblx0dXBkYXRlOiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCB2YWx1ZSA9IGtvLnVud3JhcChmVmFsdWVBY2Nlc3NvcigpKSxcblx0XHRcdCRlbCA9ICQoZWxlbWVudCk7XG5cblx0XHRpZiAoJ2N1c3RvbScgPT09ICRlbC5kYXRhKCdzYXZlLXRyaWdnZXItdHlwZScpKSB7XG5cdFx0XHRzd2l0Y2ggKHZhbHVlLnRvU3RyaW5nKCkpIHtcblx0XHRcdFx0Y2FzZSAnMSc6XG5cdFx0XHRcdFx0JGVsXG5cdFx0XHRcdFx0XHQuZmluZCgnLmFuaW1hdGVkLC5lcnJvcicpXG5cdFx0XHRcdFx0XHQuaGlkZSgpXG5cdFx0XHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ3Zpc2libGUnKVxuXHRcdFx0XHRcdFx0LmVuZCgpXG5cdFx0XHRcdFx0XHQuZmluZCgnLnN1Y2Nlc3MnKVxuXHRcdFx0XHRcdFx0LnNob3coKVxuXHRcdFx0XHRcdFx0LmFkZENsYXNzKCd2aXNpYmxlJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJzAnOlxuXHRcdFx0XHRcdCRlbFxuXHRcdFx0XHRcdFx0LmZpbmQoJy5hbmltYXRlZCwuc3VjY2VzcycpXG5cdFx0XHRcdFx0XHQuaGlkZSgpXG5cdFx0XHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ3Zpc2libGUnKVxuXHRcdFx0XHRcdFx0LmVuZCgpXG5cdFx0XHRcdFx0XHQuZmluZCgnLmVycm9yJylcblx0XHRcdFx0XHRcdC5zaG93KClcblx0XHRcdFx0XHRcdC5hZGRDbGFzcygndmlzaWJsZScpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICctMic6XG5cdFx0XHRcdFx0JGVsXG5cdFx0XHRcdFx0XHQuZmluZCgnLmVycm9yLC5zdWNjZXNzJylcblx0XHRcdFx0XHRcdC5oaWRlKClcblx0XHRcdFx0XHRcdC5yZW1vdmVDbGFzcygndmlzaWJsZScpXG5cdFx0XHRcdFx0XHQuZW5kKClcblx0XHRcdFx0XHRcdC5maW5kKCcuYW5pbWF0ZWQnKVxuXHRcdFx0XHRcdFx0LnNob3coKVxuXHRcdFx0XHRcdFx0LmFkZENsYXNzKCd2aXNpYmxlJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0JGVsXG5cdFx0XHRcdFx0XHQuZmluZCgnLmFuaW1hdGVkJylcblx0XHRcdFx0XHRcdC5oaWRlKClcblx0XHRcdFx0XHRcdC5lbmQoKVxuXHRcdFx0XHRcdFx0LmZpbmQoJy5lcnJvciwuc3VjY2VzcycpXG5cdFx0XHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ3Zpc2libGUnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0c3dpdGNoICh2YWx1ZS50b1N0cmluZygpKSB7XG5cdFx0XHRcdGNhc2UgJzEnOlxuXHRcdFx0XHRcdCRlbC5hZGRDbGFzcygnc3VjY2VzcycpLnJlbW92ZUNsYXNzKCdlcnJvcicpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICcwJzpcblx0XHRcdFx0XHQkZWwuYWRkQ2xhc3MoJ2Vycm9yJykucmVtb3ZlQ2xhc3MoJ3N1Y2Nlc3MnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnLTInOlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdCRlbC5yZW1vdmVDbGFzcygnZXJyb3Igc3VjY2VzcycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufTtcblxua28uYmluZGluZ0hhbmRsZXJzLmVtYWlsc1RhZ3MgPSB7XG5cdGluaXQ6IChlbGVtZW50LCBmVmFsdWVBY2Nlc3NvciwgZkFsbEJpbmRpbmdzQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCBVdGlscyA9IHJlcXVpcmUoJ0NvbW1vbi9VdGlscycpLFxuXHRcdFx0RW1haWxNb2RlbCA9IHJlcXVpcmUoJ01vZGVsL0VtYWlsJykuZGVmYXVsdCxcblx0XHRcdCRlbCA9ICQoZWxlbWVudCksXG5cdFx0XHRmVmFsdWUgPSBmVmFsdWVBY2Nlc3NvcigpLFxuXHRcdFx0ZkFsbEJpbmRpbmdzID0gZkFsbEJpbmRpbmdzQWNjZXNzb3IoKSxcblx0XHRcdGZBdXRvQ29tcGxldGVTb3VyY2UgPSBmQWxsQmluZGluZ3MuYXV0b0NvbXBsZXRlU291cmNlIHx8IG51bGwsXG5cdFx0XHRpbnB1dERlbGltaXRlcnMgPSBbJywnLCAnOycsICdcXG4nXSxcblx0XHRcdGZGb2N1c0NhbGxiYWNrID0gKHZhbHVlKSA9PiB7XG5cdFx0XHRcdGlmIChmVmFsdWUgJiYgZlZhbHVlLmZvY3VzZWQpIHtcblx0XHRcdFx0XHRmVmFsdWUuZm9jdXNlZCghIXZhbHVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdCRlbC5pbnB1dG9zYXVydXMoe1xuXHRcdFx0cGFyc2VPbkJsdXI6IHRydWUsXG5cdFx0XHRhbGxvd0RyYWdBbmREcm9wOiB0cnVlLFxuXHRcdFx0Zm9jdXNDYWxsYmFjazogZkZvY3VzQ2FsbGJhY2ssXG5cdFx0XHRpbnB1dERlbGltaXRlcnM6IGlucHV0RGVsaW1pdGVycyxcblx0XHRcdGF1dG9Db21wbGV0ZVNvdXJjZTogZkF1dG9Db21wbGV0ZVNvdXJjZSxcblx0XHRcdHNwbGl0SG9vazogKHZhbHVlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IHYgPSBVdGlscy50cmltKHZhbHVlKTtcblx0XHRcdFx0aWYgKHYgJiYgLTEgPCBpbnB1dERlbGltaXRlcnMuaW5kZXhPZih2LnN1YnN0cigtMSkpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIEVtYWlsTW9kZWwuc3BsaXRFbWFpbExpbmUodmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fSxcblx0XHRcdHBhcnNlSG9vazogKGlucHV0KSA9PlxuXHRcdFx0XHRfLm1hcChcblx0XHRcdFx0XHRfLmZsYXR0ZW4oXG5cdFx0XHRcdFx0XHRfLm1hcChpbnB1dCwgKGlucHV0VmFsdWUpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdmFsdWVzID0gRW1haWxNb2RlbC5wYXJzZUVtYWlsTGluZShpbnB1dFZhbHVlKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlcy5sZW5ndGggPyB2YWx1ZXMgOiBpbnB1dFZhbHVlO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdChpdGVtKSA9PiAoXy5pc09iamVjdChpdGVtKSA/IFtpdGVtLnRvTGluZShmYWxzZSksIGl0ZW1dIDogW2l0ZW0sIG51bGxdKVxuXHRcdFx0XHQpLFxuXHRcdFx0Y2hhbmdlOiAoZXZlbnQpID0+IHtcblx0XHRcdFx0JGVsLmRhdGEoJ0VtYWlsc1RhZ3NWYWx1ZScsIGV2ZW50LnRhcmdldC52YWx1ZSk7XG5cdFx0XHRcdGZWYWx1ZShldmVudC50YXJnZXQudmFsdWUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aWYgKGZWYWx1ZSAmJiBmVmFsdWUuZm9jdXNlZCAmJiBmVmFsdWUuZm9jdXNlZC5zdWJzY3JpYmUpIHtcblx0XHRcdGZWYWx1ZS5mb2N1c2VkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdFx0JGVsLmlucHV0b3NhdXJ1cyh2YWx1ZSA/ICdmb2N1cycgOiAnYmx1cicpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXHR1cGRhdGU6IChlbGVtZW50LCBmVmFsdWVBY2Nlc3NvcikgPT4ge1xuXHRcdGNvbnN0ICRvRWwgPSAkKGVsZW1lbnQpLFxuXHRcdFx0ZlZhbHVlID0gZlZhbHVlQWNjZXNzb3IoKSxcblx0XHRcdHZhbHVlID0ga28udW53cmFwKGZWYWx1ZSk7XG5cblx0XHRpZiAoJG9FbC5kYXRhKCdFbWFpbHNUYWdzVmFsdWUnKSAhPT0gdmFsdWUpIHtcblx0XHRcdCRvRWwudmFsKHZhbHVlKTtcblx0XHRcdCRvRWwuZGF0YSgnRW1haWxzVGFnc1ZhbHVlJywgdmFsdWUpO1xuXHRcdFx0JG9FbC5pbnB1dG9zYXVydXMoJ3JlZnJlc2gnKTtcblx0XHR9XG5cdH1cbn07XG5cbmtvLmJpbmRpbmdIYW5kbGVycy5jb21tYW5kID0ge1xuXHRpbml0OiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IsIGZBbGxCaW5kaW5nc0FjY2Vzc29yLCB2aWV3TW9kZWwsIGJpbmRpbmdDb250ZXh0KSA9PiB7XG5cdFx0Y29uc3QganFFbGVtZW50ID0gJChlbGVtZW50KSxcblx0XHRcdGNvbW1hbmQgPSBmVmFsdWVBY2Nlc3NvcigpO1xuXG5cdFx0aWYgKCFjb21tYW5kIHx8ICFjb21tYW5kLmlzQ29tbWFuZCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdWYWx1ZSBzaG91bGQgYmUgYSBjb21tYW5kJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb21tYW5kLmVuYWJsZWQpIHtcblx0XHRcdGNvbW1hbmQuZW5hYmxlZCA9IGtvLm9ic2VydmFibGUodHJ1ZSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFjb21tYW5kLmNhbkV4ZWN1dGUpIHtcblx0XHRcdGNvbnN0IF9fcmVhbENhbkV4ZWN1dGUgPSBjb21tYW5kLl9fcmVhbENhbkV4ZWN1dGU7XG5cdFx0XHRpZiAoXy5pc0Z1bmN0aW9uKF9fcmVhbENhbkV4ZWN1dGUpKSB7XG5cdFx0XHRcdGNvbW1hbmQuY2FuRXhlY3V0ZSA9IGtvLmNvbXB1dGVkKCgpID0+IGNvbW1hbmQuZW5hYmxlZCgpICYmIF9fcmVhbENhbkV4ZWN1dGUuY2FsbCh2aWV3TW9kZWwsIHZpZXdNb2RlbCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29tbWFuZC5jYW5FeGVjdXRlID0ga28uY29tcHV0ZWQoKCkgPT4gY29tbWFuZC5lbmFibGVkKCkgJiYgISFfX3JlYWxDYW5FeGVjdXRlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRqcUVsZW1lbnQuYWRkQ2xhc3MoJ2NvbW1hbmQnKTtcblx0XHRrby5iaW5kaW5nSGFuZGxlcnNbanFFbGVtZW50LmlzKCdmb3JtJykgPyAnc3VibWl0JyA6ICdjbGljayddLmluaXQoXG5cdFx0XHRlbGVtZW50LFxuXHRcdFx0ZlZhbHVlQWNjZXNzb3IsXG5cdFx0XHRmQWxsQmluZGluZ3NBY2Nlc3Nvcixcblx0XHRcdHZpZXdNb2RlbCxcblx0XHRcdGJpbmRpbmdDb250ZXh0XG5cdFx0KTtcblx0fSxcblx0dXBkYXRlOiAoZWxlbWVudCwgZlZhbHVlQWNjZXNzb3IpID0+IHtcblx0XHRjb25zdCBqcUVsZW1lbnQgPSAkKGVsZW1lbnQpLFxuXHRcdFx0Y29tbWFuZCA9IGZWYWx1ZUFjY2Vzc29yKCk7XG5cblx0XHRsZXQgcmVzdWx0ID0gY29tbWFuZC5lbmFibGVkKCk7XG5cblx0XHRqcUVsZW1lbnQudG9nZ2xlQ2xhc3MoJ2NvbW1hbmQtbm90LWVuYWJsZWQnLCAhcmVzdWx0KTtcblxuXHRcdGlmIChyZXN1bHQpIHtcblx0XHRcdHJlc3VsdCA9IGNvbW1hbmQuY2FuRXhlY3V0ZSgpO1xuXHRcdFx0anFFbGVtZW50LnRvZ2dsZUNsYXNzKCdjb21tYW5kLWNhbi1ub3QtYmUtZXhlY3V0ZScsICFyZXN1bHQpO1xuXHRcdH1cblxuXHRcdGpxRWxlbWVudC50b2dnbGVDbGFzcygnY29tbWFuZC1kaXNhYmxlZCBkaXNhYmxlIGRpc2FibGVkJywgIXJlc3VsdCkudG9nZ2xlQ2xhc3MoJ25vLWRpc2FibGVkJywgISFyZXN1bHQpO1xuXG5cdFx0aWYgKGpxRWxlbWVudC5pcygnaW5wdXQnKSB8fCBqcUVsZW1lbnQuaXMoJ2J1dHRvbicpKSB7XG5cdFx0XHRqcUVsZW1lbnQucHJvcCgnZGlzYWJsZWQnLCAhcmVzdWx0KTtcblx0XHR9XG5cdH1cbn07XG5cbi8vIGV4dGVuZGVyc1xuXG5rby5leHRlbmRlcnMudHJpbW1lciA9ICh0YXJnZXQpID0+IHtcblx0Y29uc3QgVXRpbHMgPSByZXF1aXJlKCdDb21tb24vVXRpbHMnKSxcblx0XHRyZXN1bHQgPSBrby5jb21wdXRlZCh7XG5cdFx0XHRyZWFkOiB0YXJnZXQsXG5cdFx0XHR3cml0ZTogKG5ld1ZhbHVlKSA9PiB7XG5cdFx0XHRcdHRhcmdldChVdGlscy50cmltKG5ld1ZhbHVlLnRvU3RyaW5nKCkpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRyZXN1bHQodGFyZ2V0KCkpO1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxua28uZXh0ZW5kZXJzLnBvc0ludGVyZXIgPSAodGFyZ2V0LCBkZWZhdWx0VmFsKSA9PiB7XG5cdGNvbnN0IFV0aWxzID0gcmVxdWlyZSgnQ29tbW9uL1V0aWxzJyksXG5cdFx0cmVzdWx0ID0ga28uY29tcHV0ZWQoe1xuXHRcdFx0cmVhZDogdGFyZ2V0LFxuXHRcdFx0d3JpdGU6IChuZXdWYWx1ZSkgPT4ge1xuXHRcdFx0XHRsZXQgdmFsID0gVXRpbHMucEludChuZXdWYWx1ZS50b1N0cmluZygpLCBkZWZhdWx0VmFsKTtcblx0XHRcdFx0aWYgKDAgPj0gdmFsKSB7XG5cdFx0XHRcdFx0dmFsID0gZGVmYXVsdFZhbDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh2YWwgPT09IHRhcmdldCgpICYmICcnICsgdmFsICE9PSAnJyArIG5ld1ZhbHVlKSB7XG5cdFx0XHRcdFx0dGFyZ2V0KHZhbCArIDEpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGFyZ2V0KHZhbCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0cmVzdWx0KHRhcmdldCgpKTtcblx0cmV0dXJuIHJlc3VsdDtcbn07XG5cbmtvLmV4dGVuZGVycy5saW1pdGVkTGlzdCA9ICh0YXJnZXQsIGxpbWl0ZWRMaXN0KSA9PiB7XG5cdGNvbnN0IFV0aWxzID0gcmVxdWlyZSgnQ29tbW9uL1V0aWxzJyksXG5cdFx0cmVzdWx0ID0ga29cblx0XHRcdC5jb21wdXRlZCh7XG5cdFx0XHRcdHJlYWQ6IHRhcmdldCxcblx0XHRcdFx0d3JpdGU6IChuZXdWYWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGtvLnVud3JhcCh0YXJnZXQpLFxuXHRcdFx0XHRcdFx0bGlzdCA9IGtvLnVud3JhcChsaW1pdGVkTGlzdCk7XG5cblx0XHRcdFx0XHRpZiAoVXRpbHMuaXNOb25FbXB0eUFycmF5KGxpc3QpKSB7XG5cdFx0XHRcdFx0XHRpZiAoLTEgPCBVdGlscy5pbkFycmF5KG5ld1ZhbHVlLCBsaXN0KSkge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQobmV3VmFsdWUpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmICgtMSA8IFV0aWxzLmluQXJyYXkoY3VycmVudFZhbHVlLCBsaXN0KSkge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQoY3VycmVudFZhbHVlICsgJyAnKTtcblx0XHRcdFx0XHRcdFx0dGFyZ2V0KGN1cnJlbnRWYWx1ZSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQobGlzdFswXSArICcgJyk7XG5cdFx0XHRcdFx0XHRcdHRhcmdldChsaXN0WzBdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGFyZ2V0KCcnKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuZXh0ZW5kKHsgbm90aWZ5OiAnYWx3YXlzJyB9KTtcblxuXHRyZXN1bHQodGFyZ2V0KCkpO1xuXG5cdGlmICghcmVzdWx0LnZhbHVlSGFzTXV0YXRlZCkge1xuXHRcdHJlc3VsdC52YWx1ZUhhc011dGF0ZWQgPSAoKSA9PiB7XG5cdFx0XHR0YXJnZXQudmFsdWVIYXNNdXRhdGVkKCk7XG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5rby5leHRlbmRlcnMucmV2ZXJzaWJsZSA9ICh0YXJnZXQpID0+IHtcblx0bGV0IHZhbHVlID0gdGFyZ2V0KCk7XG5cblx0dGFyZ2V0LmNvbW1pdCA9ICgpID0+IHtcblx0XHR2YWx1ZSA9IHRhcmdldCgpO1xuXHR9O1xuXG5cdHRhcmdldC5yZXZlcnNlID0gKCkgPT4ge1xuXHRcdHRhcmdldCh2YWx1ZSk7XG5cdH07XG5cblx0dGFyZ2V0LmNvbW1pdGVkVmFsdWUgPSAoKSA9PiB2YWx1ZTtcblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbmtvLmV4dGVuZGVycy50b2dnbGVTdWJzY3JpYmUgPSAodGFyZ2V0LCBvcHRpb25zKSA9PiB7XG5cdHRhcmdldC5zdWJzY3JpYmUob3B0aW9uc1sxXSwgb3B0aW9uc1swXSwgJ2JlZm9yZUNoYW5nZScpO1xuXHR0YXJnZXQuc3Vic2NyaWJlKG9wdGlvbnNbMl0sIG9wdGlvbnNbMF0pO1xuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxua28uZXh0ZW5kZXJzLnRvZ2dsZVN1YnNjcmliZVByb3BlcnR5ID0gKHRhcmdldCwgb3B0aW9ucykgPT4ge1xuXHRjb25zdCBwcm9wID0gb3B0aW9uc1sxXTtcblx0aWYgKHByb3ApIHtcblx0XHR0YXJnZXQuc3Vic2NyaWJlKFxuXHRcdFx0KHByZXYpID0+IHtcblx0XHRcdFx0aWYgKHByZXYgJiYgcHJldltwcm9wXSkge1xuXHRcdFx0XHRcdHByZXZbcHJvcF0oZmFsc2UpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b3B0aW9uc1swXSxcblx0XHRcdCdiZWZvcmVDaGFuZ2UnXG5cdFx0KTtcblxuXHRcdHRhcmdldC5zdWJzY3JpYmUoKG5leHQpID0+IHtcblx0XHRcdGlmIChuZXh0ICYmIG5leHRbcHJvcF0pIHtcblx0XHRcdFx0bmV4dFtwcm9wXSh0cnVlKTtcblx0XHRcdH1cblx0XHR9LCBvcHRpb25zWzBdKTtcblx0fVxuXG5cdHJldHVybiB0YXJnZXQ7XG59O1xuXG5rby5leHRlbmRlcnMuZmFsc2VUaW1lb3V0ID0gKHRhcmdldCwgb3B0aW9uKSA9PiB7XG5cdHRhcmdldC5pRmFsc2VUaW1lb3V0VGltZW91dCA9IDA7XG5cdHRhcmdldC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KHRhcmdldC5pRmFsc2VUaW1lb3V0VGltZW91dCk7XG5cdFx0XHR0YXJnZXQuaUZhbHNlVGltZW91dFRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRhcmdldChmYWxzZSk7XG5cdFx0XHRcdHRhcmdldC5pRmFsc2VUaW1lb3V0VGltZW91dCA9IDA7XG5cdFx0XHR9LCByZXF1aXJlKCdDb21tb24vVXRpbHMnKS5wSW50KG9wdGlvbikpO1xuXHRcdH1cblx0fSk7XG5cblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbmtvLmV4dGVuZGVycy5zcGVjaWFsVGhyb3R0bGUgPSAodGFyZ2V0LCBvcHRpb24pID0+IHtcblx0dGFyZ2V0LmlTcGVjaWFsVGhyb3R0bGVUaW1lb3V0VmFsdWUgPSByZXF1aXJlKCdDb21tb24vVXRpbHMnKS5wSW50KG9wdGlvbik7XG5cdGlmICgwIDwgdGFyZ2V0LmlTcGVjaWFsVGhyb3R0bGVUaW1lb3V0VmFsdWUpIHtcblx0XHR0YXJnZXQuaVNwZWNpYWxUaHJvdHRsZVRpbWVvdXQgPSAwO1xuXHRcdHRhcmdldC52YWx1ZUZvclJlYWQgPSBrby5vYnNlcnZhYmxlKCEhdGFyZ2V0KCkpLmV4dGVuZCh7IHRocm90dGxlOiAxMCB9KTtcblxuXHRcdHJldHVybiBrby5jb21wdXRlZCh7XG5cdFx0XHRyZWFkOiB0YXJnZXQudmFsdWVGb3JSZWFkLFxuXHRcdFx0d3JpdGU6IChiVmFsdWUpID0+IHtcblx0XHRcdFx0aWYgKGJWYWx1ZSkge1xuXHRcdFx0XHRcdHRhcmdldC52YWx1ZUZvclJlYWQoYlZhbHVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpZiAodGFyZ2V0LnZhbHVlRm9yUmVhZCgpKSB7XG5cdFx0XHRcdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KHRhcmdldC5pU3BlY2lhbFRocm90dGxlVGltZW91dCk7XG5cdFx0XHRcdFx0XHR0YXJnZXQuaVNwZWNpYWxUaHJvdHRsZVRpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRhcmdldC52YWx1ZUZvclJlYWQoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHR0YXJnZXQuaVNwZWNpYWxUaHJvdHRsZVRpbWVvdXQgPSAwO1xuXHRcdFx0XHRcdFx0fSwgdGFyZ2V0LmlTcGVjaWFsVGhyb3R0bGVUaW1lb3V0VmFsdWUpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0YXJnZXQudmFsdWVGb3JSZWFkKGJWYWx1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRyZXR1cm4gdGFyZ2V0O1xufTtcblxua28uZXh0ZW5kZXJzLmlkbGVUcmlnZ2VyID0gKHRhcmdldCkgPT4ge1xuXHR0YXJnZXQudHJpZ2dlciA9IGtvLm9ic2VydmFibGUoU2F2ZVNldHRpbmdzU3RlcC5JZGxlKTtcblx0cmV0dXJuIHRhcmdldDtcbn07XG5cbi8vIGZ1bmN0aW9uc1xuXG5rby5vYnNlcnZhYmxlLmZuLmlkbGVUcmlnZ2VyID0gZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzLmV4dGVuZCh7ICdpZGxlVHJpZ2dlcic6IHRydWUgfSk7XG59O1xuXG5rby5vYnNlcnZhYmxlLmZuLnZhbGlkYXRlTm9uZSA9IGZ1bmN0aW9uKCkge1xuXHR0aGlzLmhhc0Vycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdHJldHVybiB0aGlzO1xufTtcblxua28ub2JzZXJ2YWJsZS5mbi52YWxpZGF0ZUVtYWlsID0gZnVuY3Rpb24oKSB7XG5cdHRoaXMuaGFzRXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHR0aGlzLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHR0aGlzLmhhc0Vycm9yKCcnICE9PSB2YWx1ZSAmJiAhL15bXkBcXHNdK0BbXkBcXHNdKyQvLnRlc3QodmFsdWUpKTtcblx0fSk7XG5cblx0dGhpcy52YWx1ZUhhc011dGF0ZWQoKTtcblx0cmV0dXJuIHRoaXM7XG59O1xuXG5rby5vYnNlcnZhYmxlLmZuLnZhbGlkYXRlU2ltcGxlRW1haWwgPSBmdW5jdGlvbigpIHtcblx0dGhpcy5oYXNFcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdHRoaXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdHRoaXMuaGFzRXJyb3IoJycgIT09IHZhbHVlICYmICEvXi4rQC4rJC8udGVzdCh2YWx1ZSkpO1xuXHR9KTtcblxuXHR0aGlzLnZhbHVlSGFzTXV0YXRlZCgpO1xuXHRyZXR1cm4gdGhpcztcbn07XG5cbmtvLm9ic2VydmFibGUuZm4uZGVsZXRlQWNjZXNzSGVscGVyID0gZnVuY3Rpb24oKSB7XG5cdHRoaXMuZXh0ZW5kKHsgZmFsc2VUaW1lb3V0OiAzMDAwIH0pLmV4dGVuZCh7IHRvZ2dsZVN1YnNjcmliZVByb3BlcnR5OiBbdGhpcywgJ2RlbGV0ZUFjY2VzcyddIH0pO1xuXHRyZXR1cm4gdGhpcztcbn07XG5cbmtvLm9ic2VydmFibGUuZm4udmFsaWRhdGVGdW5jID0gZnVuY3Rpb24oZkZ1bmMpIHtcblx0dGhpcy5oYXNGdW5jRXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRpZiAoXy5pc0Z1bmN0aW9uKGZGdW5jKSkge1xuXHRcdHRoaXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0dGhpcy5oYXNGdW5jRXJyb3IoIWZGdW5jKHZhbHVlKSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnZhbHVlSGFzTXV0YXRlZCgpO1xuXHR9XG5cblx0cmV0dXJuIHRoaXM7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBrbztcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCAkIGZyb20gJyQnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IEF1dG9saW5rZXIgZnJvbSAnQXV0b2xpbmtlcic7XG5cbmltcG9ydCB7ICR3aW4sICRkaXYsICRoY29udCwgZHJvcGRvd25WaXNpYmlsaXR5LCBkYXRhIGFzIEdsb2JhbHNEYXRhIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0IHsgQ29tcG9zZVR5cGUsIEV2ZW50S2V5Q29kZSwgU2F2ZVNldHRpbmdzU3RlcCwgRm9sZGVyVHlwZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBNaW1lIH0gZnJvbSAnQ29tbW9uL01pbWUnO1xuaW1wb3J0IHsgamFzc2wgfSBmcm9tICdDb21tb24vSmFzc2wnO1xuXG5jb25zdCB0cmltID0gJC50cmltO1xuY29uc3QgaW5BcnJheSA9ICQuaW5BcnJheTtcbmNvbnN0IGlzQXJyYXkgPSBfLmlzQXJyYXk7XG5jb25zdCBpc09iamVjdCA9IF8uaXNPYmplY3Q7XG5jb25zdCBpc0Z1bmMgPSBfLmlzRnVuY3Rpb247XG5jb25zdCBpc1VuZCA9IF8uaXNVbmRlZmluZWQ7XG5jb25zdCBpc051bGwgPSBfLmlzTnVsbDtcbmNvbnN0IGhhcyA9IF8uaGFzO1xuY29uc3QgYmluZCA9IF8uYmluZDtcbmNvbnN0IG5vb3AgPSAoKSA9PiB7fTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eS1mdW5jdGlvblxuY29uc3Qgbm9vcFRydWUgPSAoKSA9PiB0cnVlO1xuY29uc3Qgbm9vcEZhbHNlID0gKCkgPT4gZmFsc2U7XG5cbmV4cG9ydCB7IHRyaW0sIGluQXJyYXksIGlzQXJyYXksIGlzT2JqZWN0LCBpc0Z1bmMsIGlzVW5kLCBpc051bGwsIGhhcywgYmluZCwgbm9vcCwgbm9vcFRydWUsIG5vb3BGYWxzZSwgamFzc2wgfTtcblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaWxlbnRUcnlDYXRjaChmdW5jKSB7XG5cdHRyeSB7XG5cdFx0ZnVuYygpO1xuXHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vcm1hbCh2YWx1ZSkge1xuXHRyZXR1cm4gIWlzVW5kKHZhbHVlKSAmJiAhaXNOdWxsKHZhbHVlKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKX0gdmFsdWVcbiAqIEBwYXJhbSB7Ym9vbGVhbj19IGluY2x1ZGVaZXJvID0gdHJ1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Bvc051bWVyaWModmFsdWUsIGluY2x1ZGVaZXJvID0gdHJ1ZSkge1xuXHRyZXR1cm4gIWlzTm9ybWFsKHZhbHVlKVxuXHRcdD8gZmFsc2Vcblx0XHQ6IGluY2x1ZGVaZXJvXG5cdFx0PyAvXlswLTldKiQvLnRlc3QodmFsdWUudG9TdHJpbmcoKSlcblx0XHQ6IC9eWzEtOV0rWzAtOV0qJC8udGVzdCh2YWx1ZS50b1N0cmluZygpKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcGFyYW0ge251bWJlcj19IGRlZmF1bHRWYWx1ciA9IDBcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwSW50KHZhbHVlLCBkZWZhdWx0VmFsdXIgPSAwKSB7XG5cdGNvbnN0IHJlc3VsdCA9IGlzTm9ybWFsKHZhbHVlKSAmJiAnJyAhPT0gdmFsdWUgPyB3aW5kb3cucGFyc2VJbnQodmFsdWUsIDEwKSA6IGRlZmF1bHRWYWx1cjtcblx0cmV0dXJuIHdpbmRvdy5pc05hTihyZXN1bHQpID8gZGVmYXVsdFZhbHVyIDogcmVzdWx0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwU3RyaW5nKHZhbHVlKSB7XG5cdHJldHVybiBpc05vcm1hbCh2YWx1ZSkgPyAnJyArIHZhbHVlIDogJyc7XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwQm9vbCh2YWx1ZSkge1xuXHRyZXR1cm4gISF2YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0geyp9IHZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYm9vbFRvQWpheCh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgPyAnMScgOiAnMCc7XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSB2YWx1ZXNcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb25FbXB0eUFycmF5KHZhbHVlcykge1xuXHRyZXR1cm4gaXNBcnJheSh2YWx1ZXMpICYmIDAgPCB2YWx1ZXMubGVuZ3RoO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVVUklDb21wb25lbnQoY29tcG9uZW50KSB7XG5cdHJldHVybiB3aW5kb3cuZW5jb2RlVVJJQ29tcG9uZW50KGNvbXBvbmVudCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY29kZVVSSUNvbXBvbmVudChjb21wb25lbnQpIHtcblx0cmV0dXJuIHdpbmRvdy5kZWNvZGVVUklDb21wb25lbnQoY29tcG9uZW50KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdXJsXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjb2RlVVJJKHVybCkge1xuXHRyZXR1cm4gd2luZG93LmRlY29kZVVSSSh1cmwpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB1cmxcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmNvZGVVUkkodXJsKSB7XG5cdHJldHVybiB3aW5kb3cuZW5jb2RlVVJJKHVybCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5U3RyaW5nXG4gKiBAcmV0dXJucyB7T2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2ltcGxlUXVlcnlQYXJzZXIocXVlcnlTdHJpbmcpIHtcblx0bGV0IGluZGV4ID0gMCxcblx0XHRsZW4gPSAwLFxuXHRcdHRlbXAgPSBudWxsO1xuXG5cdGNvbnN0IHF1ZXJpZXMgPSBxdWVyeVN0cmluZy5zcGxpdCgnJicpLFxuXHRcdHBhcmFtcyA9IHt9O1xuXG5cdGZvciAobGVuID0gcXVlcmllcy5sZW5ndGg7IGluZGV4IDwgbGVuOyBpbmRleCsrKSB7XG5cdFx0dGVtcCA9IHF1ZXJpZXNbaW5kZXhdLnNwbGl0KCc9Jyk7XG5cdFx0cGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudCh0ZW1wWzBdKV0gPSBkZWNvZGVVUklDb21wb25lbnQodGVtcFsxXSk7XG5cdH1cblxuXHRyZXR1cm4gcGFyYW1zO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyPX0gbGVuID0gMzJcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmYWtlTWQ1KGxlbiA9IDMyKSB7XG5cdGNvbnN0IGxpbmUgPSAnMDEyMzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Jyxcblx0XHRsaW5lTGVuID0gbGluZS5sZW5ndGg7XG5cblx0bGVuID0gcEludChsZW4pO1xuXG5cdGxldCByZXN1bHQgPSAnJztcblx0d2hpbGUgKHJlc3VsdC5sZW5ndGggPCBsZW4pIHtcblx0XHRyZXN1bHQgKz0gbGluZS5zdWJzdHIod2luZG93Lk1hdGgucm91bmQod2luZG93Lk1hdGgucmFuZG9tKCkgKiBsaW5lTGVuKSwgMSk7XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW5jb2RlSHRtbCh0ZXh0KSB7XG5cdHJldHVybiBpc05vcm1hbCh0ZXh0KSA/IF8uZXNjYXBlKHRleHQudG9TdHJpbmcoKSkgOiAnJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICogQHBhcmFtIHtudW1iZXI9fSBsZW4gPSAxMDBcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdFBsYWluVGV4dCh0ZXh0LCBsZW4gPSAxMDApIHtcblx0bGV0IHByZWZpeCA9ICcnLFxuXHRcdHN1YlRleHQgPSAnJyxcblx0XHRyZXN1bHQgPSB0ZXh0LFxuXHRcdHNwYWNlUG9zID0gMCxcblx0XHRuZXdMaW5lUG9zID0gMDtcblxuXHR3aGlsZSAocmVzdWx0Lmxlbmd0aCA+IGxlbikge1xuXHRcdHN1YlRleHQgPSByZXN1bHQuc3Vic3RyaW5nKDAsIGxlbik7XG5cdFx0c3BhY2VQb3MgPSBzdWJUZXh0Lmxhc3RJbmRleE9mKCcgJyk7XG5cdFx0bmV3TGluZVBvcyA9IHN1YlRleHQubGFzdEluZGV4T2YoJ1xcbicpO1xuXG5cdFx0aWYgKC0xICE9PSBuZXdMaW5lUG9zKSB7XG5cdFx0XHRzcGFjZVBvcyA9IG5ld0xpbmVQb3M7XG5cdFx0fVxuXG5cdFx0aWYgKC0xID09PSBzcGFjZVBvcykge1xuXHRcdFx0c3BhY2VQb3MgPSBsZW47XG5cdFx0fVxuXG5cdFx0cHJlZml4ICs9IHN1YlRleHQuc3Vic3RyaW5nKDAsIHNwYWNlUG9zKSArICdcXG4nO1xuXHRcdHJlc3VsdCA9IHJlc3VsdC5zdWJzdHJpbmcoc3BhY2VQb3MgKyAxKTtcblx0fVxuXG5cdHJldHVybiBwcmVmaXggKyByZXN1bHQ7XG59XG5cbmNvbnN0IHRpbWVPdXRBY3Rpb24gPSAoZnVuY3Rpb24oKSB7XG5cdGNvbnN0IHRpbWVPdXRzID0ge307XG5cdHJldHVybiAoYWN0aW9uLCBmRnVuY3Rpb24sIHRpbWVPdXQpID0+IHtcblx0XHR0aW1lT3V0c1thY3Rpb25dID0gaXNVbmQodGltZU91dHNbYWN0aW9uXSkgPyAwIDogdGltZU91dHNbYWN0aW9uXTtcblx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVPdXRzW2FjdGlvbl0pO1xuXHRcdHRpbWVPdXRzW2FjdGlvbl0gPSB3aW5kb3cuc2V0VGltZW91dChmRnVuY3Rpb24sIHRpbWVPdXQpO1xuXHR9O1xufSkoKTtcblxuY29uc3QgdGltZU91dEFjdGlvblNlY29uZCA9IChmdW5jdGlvbigpIHtcblx0Y29uc3QgdGltZU91dHMgPSB7fTtcblx0cmV0dXJuIChhY3Rpb24sIGZGdW5jdGlvbiwgdGltZU91dCkgPT4ge1xuXHRcdGlmICghdGltZU91dHNbYWN0aW9uXSkge1xuXHRcdFx0dGltZU91dHNbYWN0aW9uXSA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0ZkZ1bmN0aW9uKCk7XG5cdFx0XHRcdHRpbWVPdXRzW2FjdGlvbl0gPSAwO1xuXHRcdFx0fSwgdGltZU91dCk7XG5cdFx0fVxuXHR9O1xufSkoKTtcblxuZXhwb3J0IHsgdGltZU91dEFjdGlvbiwgdGltZU91dEFjdGlvblNlY29uZCB9O1xuXG4vKipcbiAqIEBwYXJhbSB7YW55fSBtXG4gKiBAcmV0dXJucyB7YW55fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVNb2R1bGUobSkge1xuXHRyZXR1cm4gKG0gJiYgbS5kZWZhdWx0ID8gbS5kZWZhdWx0IDogbSkgfHwgJyc7XG59XG5cbi8qKlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbkZvY3VzKCkge1xuXHR0cnkge1xuXHRcdGlmICh3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuXHRcdFx0aWYgKGlzVW5kKHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50Ll9faW5Gb2N1c0NhY2hlKSkge1xuXHRcdFx0XHR3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5fX2luRm9jdXNDYWNoZSA9ICQod2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpLmlzKFxuXHRcdFx0XHRcdCdpbnB1dCx0ZXh0YXJlYSxpZnJhbWUsLmNrZV9lZGl0YWJsZSdcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuICEhd2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuX19pbkZvY3VzQ2FjaGU7XG5cdFx0fVxuXHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cblx0cmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gZm9yY2VcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlSW5Gb2N1cyhmb3JjZSkge1xuXHRpZiAod2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgYWN0aXZlRWwgPSAkKHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50KTtcblx0XHRcdGlmIChhY3RpdmVFbCAmJiBhY3RpdmVFbC5pcygnaW5wdXQsdGV4dGFyZWEnKSkge1xuXHRcdFx0XHR3aW5kb3cuZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5ibHVyKCk7XG5cdFx0XHR9IGVsc2UgaWYgKGZvcmNlKSB7XG5cdFx0XHRcdHdpbmRvdy5kb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cdH1cbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVNlbGVjdGlvbigpIHtcblx0dHJ5IHtcblx0XHRpZiAod2luZG93ICYmIHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcblx0XHRcdGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblx0XHRcdGlmIChzZWwgJiYgc2VsLnJlbW92ZUFsbFJhbmdlcykge1xuXHRcdFx0XHRzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIGlmICh3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LnNlbGVjdGlvbiAmJiB3aW5kb3cuZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KSB7XG5cdFx0XHR3aW5kb3cuZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCk7XG5cdFx0fVxuXHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeFxuICogQHBhcmFtIHtzdHJpbmd9IHN1YmplY3RcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBseVN1YmplY3RBZGQocHJlZml4LCBzdWJqZWN0KSB7XG5cdHByZWZpeCA9IHRyaW0ocHJlZml4LnRvVXBwZXJDYXNlKCkpO1xuXHRzdWJqZWN0ID0gdHJpbShzdWJqZWN0LnJlcGxhY2UoL1tcXHNdKy9nLCAnICcpKTtcblxuXHRsZXQgZHJvcCA9IGZhbHNlLFxuXHRcdHJlID0gJ1JFJyA9PT0gcHJlZml4LFxuXHRcdGZ3ZCA9ICdGV0QnID09PSBwcmVmaXg7XG5cblx0Y29uc3QgcGFydHMgPSBbXSxcblx0XHRwcmVmaXhJc1JlID0gIWZ3ZDtcblxuXHRpZiAoJycgIT09IHN1YmplY3QpIHtcblx0XHRfLmVhY2goc3ViamVjdC5zcGxpdCgnOicpLCAocGFydCkgPT4ge1xuXHRcdFx0Y29uc3QgdHJpbW1lZFBhcnQgPSB0cmltKHBhcnQpO1xuXHRcdFx0aWYgKCFkcm9wICYmICgvXihSRXxGV0QpJC9pLnRlc3QodHJpbW1lZFBhcnQpIHx8IC9eKFJFfEZXRClbWyhdW1xcZF0rW1xcXSldJC9pLnRlc3QodHJpbW1lZFBhcnQpKSkge1xuXHRcdFx0XHRpZiAoIXJlKSB7XG5cdFx0XHRcdFx0cmUgPSAhIS9eUkUvaS50ZXN0KHRyaW1tZWRQYXJ0KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghZndkKSB7XG5cdFx0XHRcdFx0ZndkID0gISEvXkZXRC9pLnRlc3QodHJpbW1lZFBhcnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRwYXJ0cy5wdXNoKHBhcnQpO1xuXHRcdFx0XHRkcm9wID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGlmIChwcmVmaXhJc1JlKSB7XG5cdFx0cmUgPSBmYWxzZTtcblx0fSBlbHNlIHtcblx0XHRmd2QgPSBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0cmltKChwcmVmaXhJc1JlID8gJ1JlOiAnIDogJ0Z3ZDogJykgKyAocmUgPyAnUmU6ICcgOiAnJykgKyAoZndkID8gJ0Z3ZDogJyA6ICcnKSArIHRyaW0ocGFydHMuam9pbignOicpKSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IG51bVxuICogQHBhcmFtIHtudW1iZXJ9IGRlY1xuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJvdW5kTnVtYmVyKG51bSwgZGVjKSB7XG5cdHJldHVybiB3aW5kb3cuTWF0aC5yb3VuZChudW0gKiB3aW5kb3cuTWF0aC5wb3coMTAsIGRlYykpIC8gd2luZG93Lk1hdGgucG93KDEwLCBkZWMpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7KG51bWJlcnxzdHJpbmcpfSBzaXplSW5CeXRlc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyaWVuZGx5U2l6ZShzaXplSW5CeXRlcykge1xuXHRzaXplSW5CeXRlcyA9IHBJbnQoc2l6ZUluQnl0ZXMpO1xuXG5cdHN3aXRjaCAodHJ1ZSkge1xuXHRcdGNhc2UgMTA3Mzc0MTgyNCA8PSBzaXplSW5CeXRlczpcblx0XHRcdHJldHVybiByb3VuZE51bWJlcihzaXplSW5CeXRlcyAvIDEwNzM3NDE4MjQsIDEpICsgJ0dCJztcblx0XHRjYXNlIDEwNDg1NzYgPD0gc2l6ZUluQnl0ZXM6XG5cdFx0XHRyZXR1cm4gcm91bmROdW1iZXIoc2l6ZUluQnl0ZXMgLyAxMDQ4NTc2LCAxKSArICdNQic7XG5cdFx0Y2FzZSAxMDI0IDw9IHNpemVJbkJ5dGVzOlxuXHRcdFx0cmV0dXJuIHJvdW5kTnVtYmVyKHNpemVJbkJ5dGVzIC8gMTAyNCwgMCkgKyAnS0InO1xuXHRcdC8vIG5vIGRlZmF1bHRcblx0fVxuXG5cdHJldHVybiBzaXplSW5CeXRlcyArICdCJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZGVzY1xuICovXG5leHBvcnQgZnVuY3Rpb24gbG9nKGRlc2MpIHtcblx0aWYgKHdpbmRvdy5jb25zb2xlICYmIHdpbmRvdy5jb25zb2xlLmxvZykge1xuXHRcdHdpbmRvdy5jb25zb2xlLmxvZyhkZXNjKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7P30gb2JqZWN0XG4gKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kTmFtZVxuICogQHBhcmFtIHtBcnJheT19IHBhcmFtc1xuICogQHBhcmFtIHtudW1iZXI9fSBkZWxheSA9IDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGVnYXRlUnVuKG9iamVjdCwgbWV0aG9kTmFtZSwgcGFyYW1zLCBkZWxheSA9IDApIHtcblx0aWYgKG9iamVjdCAmJiBvYmplY3RbbWV0aG9kTmFtZV0pIHtcblx0XHRkZWxheSA9IHBJbnQoZGVsYXkpO1xuXHRcdHBhcmFtcyA9IGlzQXJyYXkocGFyYW1zKSA/IHBhcmFtcyA6IFtdO1xuXG5cdFx0aWYgKDAgPj0gZGVsYXkpIHtcblx0XHRcdG9iamVjdFttZXRob2ROYW1lXSguLi5wYXJhbXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdFx0b2JqZWN0W21ldGhvZE5hbWVdKC4uLnBhcmFtcyk7XG5cdFx0XHR9LCBkZWxheSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHs/fSBldmVudFxuICovXG5leHBvcnQgZnVuY3Rpb24ga2lsbEN0cmxBQ3RybFMoZXZlbnQpIHtcblx0ZXZlbnQgPSBldmVudCB8fCB3aW5kb3cuZXZlbnQ7XG5cdGlmIChldmVudCAmJiBldmVudC5jdHJsS2V5ICYmICFldmVudC5zaGlmdEtleSAmJiAhZXZlbnQuYWx0S2V5KSB7XG5cdFx0Y29uc3Qga2V5ID0gZXZlbnQua2V5Q29kZSB8fCBldmVudC53aGljaDtcblx0XHRpZiAoa2V5ID09PSBFdmVudEtleUNvZGUuUykge1xuXHRcdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRcdHJldHVybjtcblx0XHR9IGVsc2UgaWYgKGtleSA9PT0gRXZlbnRLZXlDb2RlLkEpIHtcblx0XHRcdGNvbnN0IHNlbmRlciA9IGV2ZW50LnRhcmdldCB8fCBldmVudC5zcmNFbGVtZW50O1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRzZW5kZXIgJiZcblx0XHRcdFx0KCd0cnVlJyA9PT0gJycgKyBzZW5kZXIuY29udGVudEVkaXRhYmxlIHx8IChzZW5kZXIudGFnTmFtZSAmJiBzZW5kZXIudGFnTmFtZS5tYXRjaCgvSU5QVVR8VEVYVEFSRUEvaSkpKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24pIHtcblx0XHRcdFx0d2luZG93LmdldFNlbGVjdGlvbigpLnJlbW92ZUFsbFJhbmdlcygpO1xuXHRcdFx0fSBlbHNlIGlmICh3aW5kb3cuZG9jdW1lbnQuc2VsZWN0aW9uICYmIHdpbmRvdy5kb2N1bWVudC5zZWxlY3Rpb24uY2xlYXIpIHtcblx0XHRcdFx0d2luZG93LmRvY3VtZW50LnNlbGVjdGlvbi5jbGVhcigpO1xuXHRcdFx0fVxuXG5cdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7KE9iamVjdHxudWxsfHVuZGVmaW5lZCl9IGNvbnRleHRcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZFeGVjdXRlXG4gKiBAcGFyYW0geyhGdW5jdGlvbnxib29sZWFufG51bGwpPX0gZkNhbkV4ZWN1dGUgPSB0cnVlXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb21tYW5kTGVnYWN5KGNvbnRleHQsIGZFeGVjdXRlLCBmQ2FuRXhlY3V0ZSA9IHRydWUpIHtcblx0bGV0IGZSZXN1bHQgPSBudWxsO1xuXHRjb25zdCBmTm9uRW1wdHkgPSAoLi4uYXJncykgPT4ge1xuXHRcdGlmIChmUmVzdWx0ICYmIGZSZXN1bHQuY2FuRXhlY3V0ZSAmJiBmUmVzdWx0LmNhbkV4ZWN1dGUoKSkge1xuXHRcdFx0ZkV4ZWN1dGUuYXBwbHkoY29udGV4dCwgYXJncyk7XG5cdFx0fVxuXHRcdHJldHVybiBmYWxzZTtcblx0fTtcblxuXHRmUmVzdWx0ID0gZkV4ZWN1dGUgPyBmTm9uRW1wdHkgOiBub29wO1xuXHRmUmVzdWx0LmVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKHRydWUpO1xuXHRmUmVzdWx0LmlzQ29tbWFuZCA9IHRydWU7XG5cblx0aWYgKGlzRnVuYyhmQ2FuRXhlY3V0ZSkpIHtcblx0XHRmUmVzdWx0LmNhbkV4ZWN1dGUgPSBrby5jb21wdXRlZCgoKSA9PiBmUmVzdWx0ICYmIGZSZXN1bHQuZW5hYmxlZCgpICYmIGZDYW5FeGVjdXRlLmNhbGwoY29udGV4dCkpO1xuXHR9IGVsc2Uge1xuXHRcdGZSZXN1bHQuY2FuRXhlY3V0ZSA9IGtvLmNvbXB1dGVkKCgpID0+IGZSZXN1bHQgJiYgZlJlc3VsdC5lbmFibGVkKCkgJiYgISFmQ2FuRXhlY3V0ZSk7XG5cdH1cblxuXHRyZXR1cm4gZlJlc3VsdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGhlbWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBjb252ZXJ0VGhlbWVOYW1lID0gXy5tZW1vaXplKCh0aGVtZSkgPT4ge1xuXHRpZiAoJ0BjdXN0b20nID09PSB0aGVtZS5zdWJzdHIoLTcpKSB7XG5cdFx0dGhlbWUgPSB0cmltKHRoZW1lLnN1YnN0cmluZygwLCB0aGVtZS5sZW5ndGggLSA3KSk7XG5cdH1cblxuXHRyZXR1cm4gdHJpbShcblx0XHR0aGVtZVxuXHRcdFx0LnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgJyAnKVxuXHRcdFx0LnJlcGxhY2UoLyhbQS1aXSkvZywgJyAkMScpXG5cdFx0XHQucmVwbGFjZSgvW1xcc10rL2csICcgJylcblx0KTtcbn0pO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcXVvdGVOYW1lKG5hbWUpIHtcblx0cmV0dXJuIG5hbWUucmVwbGFjZSgvW1wiXS9nLCAnXFxcXFwiJyk7XG59XG5cbi8qKlxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pY3JvdGltZSgpIHtcblx0cmV0dXJuIG5ldyB3aW5kb3cuRGF0ZSgpLmdldFRpbWUoKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdGltZXN0YW1wKCkge1xuXHRyZXR1cm4gd2luZG93Lk1hdGgucm91bmQobWljcm90aW1lKCkgLyAxMDAwKTtcbn1cblxuLyoqXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0VuZyA9IGZhbHNlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udmVydExhbmdOYW1lKGxhbmd1YWdlLCBpc0VuZyA9IGZhbHNlKSB7XG5cdHJldHVybiByZXF1aXJlKCdDb21tb24vVHJhbnNsYXRvcicpLmkxOG4oXG5cdFx0J0xBTkdTX05BTUVTJyArICh0cnVlID09PSBpc0VuZyA/ICdfRU4nIDogJycpICsgJy9MQU5HXycgKyBsYW5ndWFnZS50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgJ18nKSxcblx0XHRudWxsLFxuXHRcdGxhbmd1YWdlXG5cdCk7XG59XG5cbi8qKlxuICogQHJldHVybnMge29iamVjdH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRyYWdnYWJsZVBsYWNlKCkge1xuXHRyZXR1cm4gJChcblx0XHQnPGRpdiBjbGFzcz1cImRyYWdnYWJsZVBsYWNlXCI+JyArXG5cdFx0XHQnPHNwYW4gY2xhc3M9XCJ0ZXh0XCI+PC9zcGFuPiZuYnNwOycgK1xuXHRcdFx0JzxpIGNsYXNzPVwiaWNvbi1jb3B5IGljb24td2hpdGUgdmlzaWJsZS1vbi1jdHJsXCI+PC9pPicgK1xuXHRcdFx0JzxpIGNsYXNzPVwiaWNvbi1tYWlsIGljb24td2hpdGUgaGlkZGVuLW9uLWN0cmxcIj48L2k+JyArXG5cdFx0XHQnPC9kaXY+J1xuXHQpLmFwcGVuZFRvKCcjcmwtaGlkZGVuJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRvbU9wdGlvblxuICogQHBhcmFtIHtvYmplY3R9IGl0ZW1cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVmYXV0T3B0aW9uc0FmdGVyUmVuZGVyKGRvbUl0ZW0sIGl0ZW0pIHtcblx0aWYgKGl0ZW0gJiYgIWlzVW5kKGl0ZW0uZGlzYWJsZWQpICYmIGRvbUl0ZW0pIHtcblx0XHQkKGRvbUl0ZW0pXG5cdFx0XHQudG9nZ2xlQ2xhc3MoJ2Rpc2FibGVkJywgaXRlbS5kaXNhYmxlZClcblx0XHRcdC5wcm9wKCdkaXNhYmxlZCcsIGl0ZW0uZGlzYWJsZWQpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG4gKiBAcGFyYW0ge09iamVjdH0gYm9keVxuICogQHBhcmFtIHtib29sZWFufSBpc0h0bWxcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJpbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQnFTd2l0Y2hlcihib2R5KSB7XG5cdGJvZHkuZmluZCgnYmxvY2txdW90ZS5ybC1icS1zd2l0Y2hlcicpLnJlbW92ZUNsYXNzKCdybC1icS1zd2l0Y2hlciBoaWRkZW4tYnEnKTtcblx0Ym9keVxuXHRcdC5maW5kKCcucmxCbG9ja3F1b3RlU3dpdGNoZXInKVxuXHRcdC5vZmYoJy5ybEJsb2NrcXVvdGVTd2l0Y2hlcicpXG5cdFx0LnJlbW92ZSgpO1xuXHRib2R5LmZpbmQoJ1tkYXRhLWh0bWwtZWRpdG9yLWZvbnQtd3JhcHBlcl0nKS5yZW1vdmVBdHRyKCdkYXRhLWh0bWwtZWRpdG9yLWZvbnQtd3JhcHBlcicpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBtZXNzYWdlRGF0YVxuICogQHBhcmFtIHtPYmplY3R9IGJvZHlcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNIdG1sXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHByaW50XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByZXZpZXdNZXNzYWdlKFxuXHR7IHRpdGxlLCBzdWJqZWN0LCBkYXRlLCBmcm9tQ3JlZHMsIHRvQ3JlZHMsIHRvTGFiZWwsIGNjQ2xhc3MsIGNjQ3JlZHMsIGNjTGFiZWwgfSxcblx0Ym9keSxcblx0aXNIdG1sLFxuXHRwcmludFxuKSB7XG5cdGNvbnN0IHdpbiA9IHdpbmRvdy5vcGVuKCcnKSxcblx0XHRkb2MgPSB3aW4uZG9jdW1lbnQsXG5cdFx0Ym9keUNsb25lID0gYm9keS5jbG9uZSgpLFxuXHRcdGJvZHlDbGFzcyA9IGlzSHRtbCA/ICdodG1sJyA6ICdwbGFpbic7XG5cblx0Y2xlYXJCcVN3aXRjaGVyKGJvZHlDbG9uZSk7XG5cblx0Y29uc3QgaHRtbCA9IGJvZHlDbG9uZSA/IGJvZHlDbG9uZS5odG1sKCkgOiAnJztcblxuXHRkb2Mud3JpdGUoXG5cdFx0ZGVNb2R1bGUocmVxdWlyZSgnSHRtbC9QcmV2aWV3TWVzc2FnZS5odG1sJykpXG5cdFx0XHQucmVwbGFjZSgne3t0aXRsZX19JywgZW5jb2RlSHRtbCh0aXRsZSkpXG5cdFx0XHQucmVwbGFjZSgne3tzdWJqZWN0fX0nLCBlbmNvZGVIdG1sKHN1YmplY3QpKVxuXHRcdFx0LnJlcGxhY2UoJ3t7ZGF0ZX19JywgZW5jb2RlSHRtbChkYXRlKSlcblx0XHRcdC5yZXBsYWNlKCd7e2Zyb21DcmVkc319JywgZW5jb2RlSHRtbChmcm9tQ3JlZHMpKVxuXHRcdFx0LnJlcGxhY2UoJ3t7dG9DcmVkc319JywgZW5jb2RlSHRtbCh0b0NyZWRzKSlcblx0XHRcdC5yZXBsYWNlKCd7e3RvTGFiZWx9fScsIGVuY29kZUh0bWwodG9MYWJlbCkpXG5cdFx0XHQucmVwbGFjZSgne3tjY0NsYXNzfX0nLCBlbmNvZGVIdG1sKGNjQ2xhc3MpKVxuXHRcdFx0LnJlcGxhY2UoJ3t7Y2NDcmVkc319JywgZW5jb2RlSHRtbChjY0NyZWRzKSlcblx0XHRcdC5yZXBsYWNlKCd7e2NjTGFiZWx9fScsIGVuY29kZUh0bWwoY2NMYWJlbCkpXG5cdFx0XHQucmVwbGFjZSgne3tib2R5Q2xhc3N9fScsIGJvZHlDbGFzcylcblx0XHRcdC5yZXBsYWNlKCd7e2h0bWx9fScsIGh0bWwpXG5cdCk7XG5cblx0ZG9jLmNsb3NlKCk7XG5cblx0aWYgKHByaW50KSB7XG5cdFx0d2luZG93LnNldFRpbWVvdXQoKCkgPT4gd2luLnByaW50KCksIDEwMCk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmQ2FsbGJhY2tcbiAqIEBwYXJhbSB7P30ga29UcmlnZ2VyXG4gKiBAcGFyYW0gez99IGNvbnRleHQgPSBudWxsXG4gKiBAcGFyYW0ge251bWJlcj19IHRpbWVyID0gMTAwMFxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0dGluZ3NTYXZlSGVscGVyRnVuY3Rpb24oZkNhbGxiYWNrLCBrb1RyaWdnZXIsIGNvbnRleHQgPSBudWxsLCB0aW1lciA9IDEwMDApIHtcblx0dGltZXIgPSBwSW50KHRpbWVyKTtcblx0cmV0dXJuICh0eXBlLCBkYXRhLCBjYWNoZWQsIHJlcXVlc3RBY3Rpb24sIHJlcXVlc3RQYXJhbWV0ZXJzKSA9PiB7XG5cdFx0a29UcmlnZ2VyLmNhbGwoY29udGV4dCwgZGF0YSAmJiBkYXRhLlJlc3VsdCA/IFNhdmVTZXR0aW5nc1N0ZXAuVHJ1ZVJlc3VsdCA6IFNhdmVTZXR0aW5nc1N0ZXAuRmFsc2VSZXN1bHQpO1xuXHRcdGlmIChmQ2FsbGJhY2spIHtcblx0XHRcdGZDYWxsYmFjay5jYWxsKGNvbnRleHQsIHR5cGUsIGRhdGEsIGNhY2hlZCwgcmVxdWVzdEFjdGlvbiwgcmVxdWVzdFBhcmFtZXRlcnMpO1xuXHRcdH1cblx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdGtvVHJpZ2dlci5jYWxsKGNvbnRleHQsIFNhdmVTZXR0aW5nc1N0ZXAuSWRsZSk7XG5cdFx0fSwgdGltZXIpO1xuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBrb1RyaWdnZXJcbiAqIEBwYXJhbSB7bWl4ZWR9IGNvbnRleHRcbiAqIEByZXR1cm5zIHttaXhlZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHRpbmdzU2F2ZUhlbHBlclNpbXBsZUZ1bmN0aW9uKGtvVHJpZ2dlciwgY29udGV4dCkge1xuXHRyZXR1cm4gc2V0dGluZ3NTYXZlSGVscGVyRnVuY3Rpb24obnVsbCwga29UcmlnZ2VyLCBjb250ZXh0LCAxMDAwKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVtb3RlXG4gKiBAcGFyYW0ge3N0cmluZ30gc2V0dGluZ05hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBmVHJpZ2dlckZ1bmN0aW9uXG4gKiBAcmV0dXJucyB7ZnVuY3Rpb259XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXR0aW5nc1NhdmVIZWxwZXJTdWJzY3JpYmVGdW5jdGlvbihyZW1vdGUsIHNldHRpbmdOYW1lLCB0eXBlLCBmVHJpZ2dlckZ1bmN0aW9uKSB7XG5cdHJldHVybiAodmFsdWUpID0+IHtcblx0XHRpZiAocmVtb3RlKSB7XG5cdFx0XHRzd2l0Y2ggKHR5cGUpIHtcblx0XHRcdFx0Y2FzZSAnYm9vbCc6XG5cdFx0XHRcdGNhc2UgJ2Jvb2xlYW4nOlxuXHRcdFx0XHRcdHZhbHVlID0gdmFsdWUgPyAnMScgOiAnMCc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ2ludCc6XG5cdFx0XHRcdGNhc2UgJ2ludGVnZXInOlxuXHRcdFx0XHRjYXNlICdudW1iZXInOlxuXHRcdFx0XHRcdHZhbHVlID0gcEludCh2YWx1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ3RyaW0nOlxuXHRcdFx0XHRcdHZhbHVlID0gdHJpbSh2YWx1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0dmFsdWUgPSBwU3RyaW5nKHZhbHVlKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGF0YSA9IHt9O1xuXHRcdFx0ZGF0YVtzZXR0aW5nTmFtZV0gPSB2YWx1ZTtcblxuXHRcdFx0aWYgKHJlbW90ZS5zYXZlQWRtaW5Db25maWcpIHtcblx0XHRcdFx0cmVtb3RlLnNhdmVBZG1pbkNvbmZpZyhmVHJpZ2dlckZ1bmN0aW9uIHx8IG51bGwsIGRhdGEpO1xuXHRcdFx0fSBlbHNlIGlmIChyZW1vdGUuc2F2ZVNldHRpbmdzKSB7XG5cdFx0XHRcdHJlbW90ZS5zYXZlU2V0dGluZ3MoZlRyaWdnZXJGdW5jdGlvbiB8fCBudWxsLCBkYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGh0bWxcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kRW1haWxBbmRMaW5rcyhodG1sKSB7XG5cdHJldHVybiBBdXRvbGlua2VyXG5cdFx0PyBBdXRvbGlua2VyLmxpbmsoaHRtbCwge1xuXHRcdFx0XHRuZXdXaW5kb3c6IHRydWUsXG5cdFx0XHRcdHN0cmlwUHJlZml4OiBmYWxzZSxcblx0XHRcdFx0dXJsczogdHJ1ZSxcblx0XHRcdFx0ZW1haWw6IHRydWUsXG5cdFx0XHRcdG1lbnRpb246IGZhbHNlLFxuXHRcdFx0XHRwaG9uZTogZmFsc2UsXG5cdFx0XHRcdGhhc2h0YWc6IGZhbHNlLFxuXHRcdFx0XHRyZXBsYWNlRm46IGZ1bmN0aW9uKG1hdGNoKSB7XG5cdFx0XHRcdFx0cmV0dXJuICEobWF0Y2ggJiYgJ3VybCcgPT09IG1hdGNoLmdldFR5cGUoKSAmJiBtYXRjaC5tYXRjaGVkVGV4dCAmJiAwICE9PSBtYXRjaC5tYXRjaGVkVGV4dC5pbmRleE9mKCdodHRwJykpO1xuXHRcdFx0XHR9XG5cdFx0ICB9KVxuXHRcdDogaHRtbDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gaHRtbFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGh0bWxUb1BsYWluKGh0bWwpIHtcblx0bGV0IHBvcyA9IDAsXG5cdFx0bGltaXQgPSAwLFxuXHRcdGlQMSA9IDAsXG5cdFx0aVAyID0gMCxcblx0XHRpUDMgPSAwLFxuXHRcdHRleHQgPSAnJztcblxuXHRjb25zdCBjb252ZXJ0QmxvY2txdW90ZSA9IChibG9ja3F1b3RlVGV4dCkgPT4ge1xuXHRcdGJsb2NrcXVvdGVUZXh0ID0gJz4gJyArIHRyaW0oYmxvY2txdW90ZVRleHQpLnJlcGxhY2UoL1xcbi9nbSwgJ1xcbj4gJyk7XG5cdFx0cmV0dXJuIGJsb2NrcXVvdGVUZXh0LnJlcGxhY2UoLyhefFxcbikoWz4gXSspL2dtLCAoLi4uYXJncykgPT5cblx0XHRcdGFyZ3MgJiYgMiA8IGFyZ3MubGVuZ3RoID8gYXJnc1sxXSArIHRyaW0oYXJnc1syXS5yZXBsYWNlKC9bXFxzXS9nLCAnJykpICsgJyAnIDogJydcblx0XHQpO1xuXHR9O1xuXG5cdGNvbnN0IGNvbnZlcnREaXZzID0gKC4uLmFyZ3MpID0+IHtcblx0XHRpZiAoYXJncyAmJiAxIDwgYXJncy5sZW5ndGgpIHtcblx0XHRcdGxldCBkaXZUZXh0ID0gdHJpbShhcmdzWzFdKTtcblx0XHRcdGlmICgwIDwgZGl2VGV4dC5sZW5ndGgpIHtcblx0XHRcdFx0ZGl2VGV4dCA9IGRpdlRleHQucmVwbGFjZSgvPGRpdltePl0qPihbXFxzXFxTXFxyXFxuXSopPFxcL2Rpdj4vZ2ltLCBjb252ZXJ0RGl2cyk7XG5cdFx0XHRcdGRpdlRleHQgPSAnXFxuJyArIHRyaW0oZGl2VGV4dCkgKyAnXFxuJztcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGRpdlRleHQ7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICcnO1xuXHR9O1xuXG5cdGNvbnN0IGNvbnZlcnRQcmUgPSAoLi4uYXJncykgPT5cblx0XHRcdGFyZ3MgJiYgMSA8IGFyZ3MubGVuZ3RoXG5cdFx0XHRcdD8gYXJnc1sxXVxuXHRcdFx0XHRcdFx0LnRvU3RyaW5nKClcblx0XHRcdFx0XHRcdC5yZXBsYWNlKC9bXFxuXS9nbSwgJzxiciAvPicpXG5cdFx0XHRcdFx0XHQucmVwbGFjZSgvW1xccl0vZ20sICcnKVxuXHRcdFx0XHQ6ICcnLFxuXHRcdGZpeEF0dGlidXRlVmFsdWUgPSAoLi4uYXJncykgPT4gKGFyZ3MgJiYgMSA8IGFyZ3MubGVuZ3RoID8gJycgKyBhcmdzWzFdICsgXy5lc2NhcGUoYXJnc1syXSkgOiAnJyksXG5cdFx0Y29udmVydExpbmtzID0gKC4uLmFyZ3MpID0+IChhcmdzICYmIDEgPCBhcmdzLmxlbmd0aCA/IHRyaW0oYXJnc1sxXSkgOiAnJyk7XG5cblx0dGV4dCA9IGh0bWxcblx0XHQucmVwbGFjZSgvPHBbXj5dKj48XFwvcD4vZ2ksICcnKVxuXHRcdC5yZXBsYWNlKC88cHJlW14+XSo+KFtcXHNcXFNcXHJcXG5cXHRdKik8XFwvcHJlPi9naW0sIGNvbnZlcnRQcmUpXG5cdFx0LnJlcGxhY2UoL1tcXHNdKy9nbSwgJyAnKVxuXHRcdC5yZXBsYWNlKC8oKD86aHJlZnxkYXRhKVxccz89XFxzPykoXCJbXlwiXSs/XCJ8J1teJ10rPycpL2dpbSwgZml4QXR0aWJ1dGVWYWx1ZSlcblx0XHQucmVwbGFjZSgvPGJyW14+XSo+L2dpbSwgJ1xcbicpXG5cdFx0LnJlcGxhY2UoLzxcXC9oW1xcZF0+L2dpLCAnXFxuJylcblx0XHQucmVwbGFjZSgvPFxcL3A+L2dpLCAnXFxuXFxuJylcblx0XHQucmVwbGFjZSgvPHVsW14+XSo+L2dpbSwgJ1xcbicpXG5cdFx0LnJlcGxhY2UoLzxcXC91bD4vZ2ksICdcXG4nKVxuXHRcdC5yZXBsYWNlKC88bGlbXj5dKj4vZ2ltLCAnICogJylcblx0XHQucmVwbGFjZSgvPFxcL2xpPi9naSwgJ1xcbicpXG5cdFx0LnJlcGxhY2UoLzxcXC90ZD4vZ2ksICdcXG4nKVxuXHRcdC5yZXBsYWNlKC88XFwvdHI+L2dpLCAnXFxuJylcblx0XHQucmVwbGFjZSgvPGhyW14+XSo+L2dpbSwgJ1xcbl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19cXG5cXG4nKVxuXHRcdC5yZXBsYWNlKC88ZGl2W14+XSo+KFtcXHNcXFNcXHJcXG5dKik8XFwvZGl2Pi9naW0sIGNvbnZlcnREaXZzKVxuXHRcdC5yZXBsYWNlKC88YmxvY2txdW90ZVtePl0qPi9naW0sICdcXG5fX2JxX19zdGFydF9fXFxuJylcblx0XHQucmVwbGFjZSgvPFxcL2Jsb2NrcXVvdGU+L2dpbSwgJ1xcbl9fYnFfX2VuZF9fXFxuJylcblx0XHQucmVwbGFjZSgvPGEgW14+XSo+KFtcXHNcXFNcXHJcXG5dKj8pPFxcL2E+L2dpbSwgY29udmVydExpbmtzKVxuXHRcdC5yZXBsYWNlKC88XFwvZGl2Pi9naSwgJ1xcbicpXG5cdFx0LnJlcGxhY2UoLyZuYnNwOy9naSwgJyAnKVxuXHRcdC5yZXBsYWNlKC8mcXVvdDsvZ2ksICdcIicpXG5cdFx0LnJlcGxhY2UoLzxbXj5dKj4vZ20sICcnKTtcblxuXHR0ZXh0ID0gJGRpdi5odG1sKHRleHQpLnRleHQoKTtcblxuXHR0ZXh0ID0gdGV4dFxuXHRcdC5yZXBsYWNlKC9cXG5bIFxcdF0rL2dtLCAnXFxuJylcblx0XHQucmVwbGFjZSgvW1xcbl17Myx9L2dtLCAnXFxuXFxuJylcblx0XHQucmVwbGFjZSgvJmd0Oy9naSwgJz4nKVxuXHRcdC5yZXBsYWNlKC8mbHQ7L2dpLCAnPCcpXG5cdFx0LnJlcGxhY2UoLyZhbXA7L2dpLCAnJicpO1xuXG5cdHRleHQgPSBzcGxpdFBsYWluVGV4dCh0ZXh0KTtcblxuXHRwb3MgPSAwO1xuXHRsaW1pdCA9IDgwMDtcblxuXHR3aGlsZSAoMCA8IGxpbWl0KSB7XG5cdFx0bGltaXQgLT0gMTtcblx0XHRpUDEgPSB0ZXh0LmluZGV4T2YoJ19fYnFfX3N0YXJ0X18nLCBwb3MpO1xuXHRcdGlmICgtMSA8IGlQMSkge1xuXHRcdFx0aVAyID0gdGV4dC5pbmRleE9mKCdfX2JxX19zdGFydF9fJywgaVAxICsgNSk7XG5cdFx0XHRpUDMgPSB0ZXh0LmluZGV4T2YoJ19fYnFfX2VuZF9fJywgaVAxICsgNSk7XG5cblx0XHRcdGlmICgoLTEgPT09IGlQMiB8fCBpUDMgPCBpUDIpICYmIGlQMSA8IGlQMykge1xuXHRcdFx0XHR0ZXh0ID0gdGV4dC5zdWJzdHJpbmcoMCwgaVAxKSArIGNvbnZlcnRCbG9ja3F1b3RlKHRleHQuc3Vic3RyaW5nKGlQMSArIDEzLCBpUDMpKSArIHRleHQuc3Vic3RyaW5nKGlQMyArIDExKTtcblxuXHRcdFx0XHRwb3MgPSAwO1xuXHRcdFx0fSBlbHNlIGlmICgtMSA8IGlQMiAmJiBpUDIgPCBpUDMpIHtcblx0XHRcdFx0cG9zID0gaVAyIC0gMTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBvcyA9IDA7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxuXG5cdHRleHQgPSB0ZXh0LnJlcGxhY2UoL19fYnFfX3N0YXJ0X18vZ20sICcnKS5yZXBsYWNlKC9fX2JxX19lbmRfXy9nbSwgJycpO1xuXG5cdHJldHVybiB0ZXh0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbGFpblxuICogQHBhcmFtIHtib29sZWFufSBmaW5kRW1haWxBbmRMaW5rc0luVGV4dCA9IGZhbHNlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGxhaW5Ub0h0bWwocGxhaW4sIGZpbmRFbWFpbEFuZExpbmtzSW5UZXh0ID0gZmFsc2UpIHtcblx0cGxhaW4gPSBwbGFpbi50b1N0cmluZygpLnJlcGxhY2UoL1xcci9nLCAnJyk7XG5cdHBsYWluID0gcGxhaW4ucmVwbGFjZSgvXj5bPiBdPisvZ20sIChbbWF0Y2hdKSA9PiAobWF0Y2ggPyBtYXRjaC5yZXBsYWNlKC9bIF0rL2csICcnKSA6IG1hdGNoKSk7XG5cblx0bGV0IGJJbiA9IGZhbHNlLFxuXHRcdGJEbyA9IHRydWUsXG5cdFx0YlN0YXJ0ID0gdHJ1ZSxcblx0XHRhTmV4dFRleHQgPSBbXSxcblx0XHRzTGluZSA9ICcnLFxuXHRcdGlJbmRleCA9IDAsXG5cdFx0YVRleHQgPSBwbGFpbi5zcGxpdCgnXFxuJyk7XG5cblx0ZG8ge1xuXHRcdGJEbyA9IGZhbHNlO1xuXHRcdGFOZXh0VGV4dCA9IFtdO1xuXHRcdGZvciAoaUluZGV4ID0gMDsgaUluZGV4IDwgYVRleHQubGVuZ3RoOyBpSW5kZXgrKykge1xuXHRcdFx0c0xpbmUgPSBhVGV4dFtpSW5kZXhdO1xuXHRcdFx0YlN0YXJ0ID0gJz4nID09PSBzTGluZS5zdWJzdHIoMCwgMSk7XG5cdFx0XHRpZiAoYlN0YXJ0ICYmICFiSW4pIHtcblx0XHRcdFx0YkRvID0gdHJ1ZTtcblx0XHRcdFx0YkluID0gdHJ1ZTtcblx0XHRcdFx0YU5leHRUZXh0LnB1c2goJ35+fmJsb2NrcXVvdGV+fn4nKTtcblx0XHRcdFx0YU5leHRUZXh0LnB1c2goc0xpbmUuc3Vic3RyKDEpKTtcblx0XHRcdH0gZWxzZSBpZiAoIWJTdGFydCAmJiBiSW4pIHtcblx0XHRcdFx0aWYgKCcnICE9PSBzTGluZSkge1xuXHRcdFx0XHRcdGJJbiA9IGZhbHNlO1xuXHRcdFx0XHRcdGFOZXh0VGV4dC5wdXNoKCd+fn4vYmxvY2txdW90ZX5+ficpO1xuXHRcdFx0XHRcdGFOZXh0VGV4dC5wdXNoKHNMaW5lKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRhTmV4dFRleHQucHVzaChzTGluZSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYlN0YXJ0ICYmIGJJbikge1xuXHRcdFx0XHRhTmV4dFRleHQucHVzaChzTGluZS5zdWJzdHIoMSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0YU5leHRUZXh0LnB1c2goc0xpbmUpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChiSW4pIHtcblx0XHRcdGJJbiA9IGZhbHNlO1xuXHRcdFx0YU5leHRUZXh0LnB1c2goJ35+fi9ibG9ja3F1b3Rlfn5+Jyk7XG5cdFx0fVxuXG5cdFx0YVRleHQgPSBhTmV4dFRleHQ7XG5cdH0gd2hpbGUgKGJEbyk7XG5cblx0cGxhaW4gPSBhVGV4dC5qb2luKCdcXG4nKTtcblxuXHRwbGFpbiA9IHBsYWluXG5cdFx0Ly8gLnJlcGxhY2UoL35+flxcL2Jsb2NrcXVvdGV+fn5cXG5+fn5ibG9ja3F1b3Rlfn5+L2csICdcXG4nKVxuXHRcdC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG5cdFx0LnJlcGxhY2UoLz4vZywgJyZndDsnKVxuXHRcdC5yZXBsYWNlKC88L2csICcmbHQ7Jylcblx0XHQucmVwbGFjZSgvfn5+YmxvY2txdW90ZX5+fltcXHNdKi9nLCAnPGJsb2NrcXVvdGU+Jylcblx0XHQucmVwbGFjZSgvW1xcc10qfn5+XFwvYmxvY2txdW90ZX5+fi9nLCAnPC9ibG9ja3F1b3RlPicpXG5cdFx0LnJlcGxhY2UoL1xcbi9nLCAnPGJyIC8+Jyk7XG5cblx0cmV0dXJuIGZpbmRFbWFpbEFuZExpbmtzSW5UZXh0ID8gZmluZEVtYWlsQW5kTGlua3MocGxhaW4pIDogcGxhaW47XG59XG5cbndpbmRvd1sncmFpbmxvb3BfVXRpbHNfaHRtbFRvUGxhaW4nXSA9IGh0bWxUb1BsYWluOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGRvdC1ub3RhdGlvblxud2luZG93WydyYWlubG9vcF9VdGlsc19wbGFpblRvSHRtbCddID0gcGxhaW5Ub0h0bWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZG90LW5vdGF0aW9uXG5cbi8qKlxuICogQHBhcmFtIHtBcnJheX0gYVN5c3RlbVxuICogQHBhcmFtIHtBcnJheX0gYUxpc3RcbiAqIEBwYXJhbSB7QXJyYXk9fSBhRGlzYWJsZWRcbiAqIEBwYXJhbSB7QXJyYXk9fSBhSGVhZGVyTGluZXNcbiAqIEBwYXJhbSB7P251bWJlcj19IGlVbkRlZXBcbiAqIEBwYXJhbSB7RnVuY3Rpb249fSBmRGlzYWJsZUNhbGxiYWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9uPX0gZlZpc2libGVDYWxsYmFja1xuICogQHBhcmFtIHtGdW5jdGlvbj19IGZSZW5hbWVDYWxsYmFja1xuICogQHBhcmFtIHtib29sZWFuPX0gYlN5c3RlbVxuICogQHBhcmFtIHtib29sZWFuPX0gYkJ1aWxkVW52aXNpYmxlXG4gKiBAcmV0dXJucyB7QXJyYXl9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb2xkZXJMaXN0T3B0aW9uc0J1aWxkZXIoXG5cdGFTeXN0ZW0sXG5cdGFMaXN0LFxuXHRhRGlzYWJsZWQsXG5cdGFIZWFkZXJMaW5lcyxcblx0aVVuRGVlcCxcblx0ZkRpc2FibGVDYWxsYmFjayxcblx0ZlZpc2libGVDYWxsYmFjayxcblx0ZlJlbmFtZUNhbGxiYWNrLFxuXHRiU3lzdGVtLFxuXHRiQnVpbGRVbnZpc2libGVcbikge1xuXHRsZXQgLyoqXG5cdFx0ICogQHR5cGUgez9Gb2xkZXJNb2RlbH1cblx0XHQgKi9cblx0XHRvSXRlbSA9IG51bGwsXG5cdFx0YlNlcCA9IGZhbHNlLFxuXHRcdGlJbmRleCA9IDAsXG5cdFx0aUxlbiA9IDAsXG5cdFx0YVJlc3VsdCA9IFtdO1xuXG5cdGNvbnN0IHNEZWVwUHJlZml4ID0gJ1xcdTAwQTBcXHUwMEEwXFx1MDBBMCc7XG5cblx0YkJ1aWxkVW52aXNpYmxlID0gaXNVbmQoYkJ1aWxkVW52aXNpYmxlKSA/IGZhbHNlIDogISFiQnVpbGRVbnZpc2libGU7XG5cdGJTeXN0ZW0gPSAhaXNOb3JtYWwoYlN5c3RlbSkgPyAwIDwgYVN5c3RlbS5sZW5ndGggOiBiU3lzdGVtO1xuXHRpVW5EZWVwID0gIWlzTm9ybWFsKGlVbkRlZXApID8gMCA6IGlVbkRlZXA7XG5cdGZEaXNhYmxlQ2FsbGJhY2sgPSBpc05vcm1hbChmRGlzYWJsZUNhbGxiYWNrKSA/IGZEaXNhYmxlQ2FsbGJhY2sgOiBudWxsO1xuXHRmVmlzaWJsZUNhbGxiYWNrID0gaXNOb3JtYWwoZlZpc2libGVDYWxsYmFjaykgPyBmVmlzaWJsZUNhbGxiYWNrIDogbnVsbDtcblx0ZlJlbmFtZUNhbGxiYWNrID0gaXNOb3JtYWwoZlJlbmFtZUNhbGxiYWNrKSA/IGZSZW5hbWVDYWxsYmFjayA6IG51bGw7XG5cblx0aWYgKCFpc0FycmF5KGFEaXNhYmxlZCkpIHtcblx0XHRhRGlzYWJsZWQgPSBbXTtcblx0fVxuXG5cdGlmICghaXNBcnJheShhSGVhZGVyTGluZXMpKSB7XG5cdFx0YUhlYWRlckxpbmVzID0gW107XG5cdH1cblxuXHRmb3IgKGlJbmRleCA9IDAsIGlMZW4gPSBhSGVhZGVyTGluZXMubGVuZ3RoOyBpSW5kZXggPCBpTGVuOyBpSW5kZXgrKykge1xuXHRcdGFSZXN1bHQucHVzaCh7XG5cdFx0XHRpZDogYUhlYWRlckxpbmVzW2lJbmRleF1bMF0sXG5cdFx0XHRuYW1lOiBhSGVhZGVyTGluZXNbaUluZGV4XVsxXSxcblx0XHRcdHN5c3RlbTogZmFsc2UsXG5cdFx0XHRzZXBvcmF0b3I6IGZhbHNlLFxuXHRcdFx0ZGlzYWJsZWQ6IGZhbHNlXG5cdFx0fSk7XG5cdH1cblxuXHRiU2VwID0gdHJ1ZTtcblx0Zm9yIChpSW5kZXggPSAwLCBpTGVuID0gYVN5c3RlbS5sZW5ndGg7IGlJbmRleCA8IGlMZW47IGlJbmRleCsrKSB7XG5cdFx0b0l0ZW0gPSBhU3lzdGVtW2lJbmRleF07XG5cdFx0aWYgKGZWaXNpYmxlQ2FsbGJhY2sgPyBmVmlzaWJsZUNhbGxiYWNrKG9JdGVtKSA6IHRydWUpIHtcblx0XHRcdGlmIChiU2VwICYmIDAgPCBhUmVzdWx0Lmxlbmd0aCkge1xuXHRcdFx0XHRhUmVzdWx0LnB1c2goe1xuXHRcdFx0XHRcdGlkOiAnLS0tJyxcblx0XHRcdFx0XHRuYW1lOiAnLS0tJyxcblx0XHRcdFx0XHRzeXN0ZW06IGZhbHNlLFxuXHRcdFx0XHRcdHNlcG9yYXRvcjogdHJ1ZSxcblx0XHRcdFx0XHRkaXNhYmxlZDogdHJ1ZVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0YlNlcCA9IGZhbHNlO1xuXHRcdFx0YVJlc3VsdC5wdXNoKHtcblx0XHRcdFx0aWQ6IG9JdGVtLmZ1bGxOYW1lUmF3LFxuXHRcdFx0XHRuYW1lOiBmUmVuYW1lQ2FsbGJhY2sgPyBmUmVuYW1lQ2FsbGJhY2sob0l0ZW0pIDogb0l0ZW0ubmFtZSgpLFxuXHRcdFx0XHRzeXN0ZW06IHRydWUsXG5cdFx0XHRcdHNlcG9yYXRvcjogZmFsc2UsXG5cdFx0XHRcdGRpc2FibGVkOlxuXHRcdFx0XHRcdCFvSXRlbS5zZWxlY3RhYmxlIHx8XG5cdFx0XHRcdFx0LTEgPCBpbkFycmF5KG9JdGVtLmZ1bGxOYW1lUmF3LCBhRGlzYWJsZWQpIHx8XG5cdFx0XHRcdFx0KGZEaXNhYmxlQ2FsbGJhY2sgPyBmRGlzYWJsZUNhbGxiYWNrKG9JdGVtKSA6IGZhbHNlKVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0YlNlcCA9IHRydWU7XG5cdGZvciAoaUluZGV4ID0gMCwgaUxlbiA9IGFMaXN0Lmxlbmd0aDsgaUluZGV4IDwgaUxlbjsgaUluZGV4KyspIHtcblx0XHRvSXRlbSA9IGFMaXN0W2lJbmRleF07XG5cdFx0Ly8gaWYgKG9JdGVtLnN1YlNjcmliZWQoKSB8fCAhb0l0ZW0uZXhpc3RlbiB8fCBiQnVpbGRVbnZpc2libGUpXG5cdFx0aWYgKFxuXHRcdFx0KG9JdGVtLnN1YlNjcmliZWQoKSB8fCAhb0l0ZW0uZXhpc3RlbiB8fCBiQnVpbGRVbnZpc2libGUpICYmXG5cdFx0XHQob0l0ZW0uc2VsZWN0YWJsZSB8fCBvSXRlbS5oYXNTdWJTY3JpYmVkU3ViZm9sZGVycygpKVxuXHRcdCkge1xuXHRcdFx0aWYgKGZWaXNpYmxlQ2FsbGJhY2sgPyBmVmlzaWJsZUNhbGxiYWNrKG9JdGVtKSA6IHRydWUpIHtcblx0XHRcdFx0aWYgKEZvbGRlclR5cGUuVXNlciA9PT0gb0l0ZW0udHlwZSgpIHx8ICFiU3lzdGVtIHx8IG9JdGVtLmhhc1N1YlNjcmliZWRTdWJmb2xkZXJzKCkpIHtcblx0XHRcdFx0XHRpZiAoYlNlcCAmJiAwIDwgYVJlc3VsdC5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGFSZXN1bHQucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGlkOiAnLS0tJyxcblx0XHRcdFx0XHRcdFx0bmFtZTogJy0tLScsXG5cdFx0XHRcdFx0XHRcdHN5c3RlbTogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdHNlcG9yYXRvcjogdHJ1ZSxcblx0XHRcdFx0XHRcdFx0ZGlzYWJsZWQ6IHRydWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGJTZXAgPSBmYWxzZTtcblx0XHRcdFx0XHRhUmVzdWx0LnB1c2goe1xuXHRcdFx0XHRcdFx0aWQ6IG9JdGVtLmZ1bGxOYW1lUmF3LFxuXHRcdFx0XHRcdFx0bmFtZTpcblx0XHRcdFx0XHRcdFx0bmV3IHdpbmRvdy5BcnJheShvSXRlbS5kZWVwICsgMSAtIGlVbkRlZXApLmpvaW4oc0RlZXBQcmVmaXgpICtcblx0XHRcdFx0XHRcdFx0KGZSZW5hbWVDYWxsYmFjayA/IGZSZW5hbWVDYWxsYmFjayhvSXRlbSkgOiBvSXRlbS5uYW1lKCkpLFxuXHRcdFx0XHRcdFx0c3lzdGVtOiBmYWxzZSxcblx0XHRcdFx0XHRcdHNlcG9yYXRvcjogZmFsc2UsXG5cdFx0XHRcdFx0XHRkaXNhYmxlZDpcblx0XHRcdFx0XHRcdFx0IW9JdGVtLnNlbGVjdGFibGUgfHxcblx0XHRcdFx0XHRcdFx0LTEgPCBpbkFycmF5KG9JdGVtLmZ1bGxOYW1lUmF3LCBhRGlzYWJsZWQpIHx8XG5cdFx0XHRcdFx0XHRcdChmRGlzYWJsZUNhbGxiYWNrID8gZkRpc2FibGVDYWxsYmFjayhvSXRlbSkgOiBmYWxzZSlcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChvSXRlbS5zdWJTY3JpYmVkKCkgJiYgMCA8IG9JdGVtLnN1YkZvbGRlcnMoKS5sZW5ndGgpIHtcblx0XHRcdGFSZXN1bHQgPSBhUmVzdWx0LmNvbmNhdChcblx0XHRcdFx0Zm9sZGVyTGlzdE9wdGlvbnNCdWlsZGVyKFxuXHRcdFx0XHRcdFtdLFxuXHRcdFx0XHRcdG9JdGVtLnN1YkZvbGRlcnMoKSxcblx0XHRcdFx0XHRhRGlzYWJsZWQsXG5cdFx0XHRcdFx0W10sXG5cdFx0XHRcdFx0aVVuRGVlcCxcblx0XHRcdFx0XHRmRGlzYWJsZUNhbGxiYWNrLFxuXHRcdFx0XHRcdGZWaXNpYmxlQ2FsbGJhY2ssXG5cdFx0XHRcdFx0ZlJlbmFtZUNhbGxiYWNrLFxuXHRcdFx0XHRcdGJTeXN0ZW0sXG5cdFx0XHRcdFx0YkJ1aWxkVW52aXNpYmxlXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGFSZXN1bHQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnRcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0RWxlbWVudChlbGVtZW50KSB7XG5cdGxldCBzZWwgPSBudWxsLFxuXHRcdHJhbmdlID0gbnVsbDtcblxuXHRpZiAod2luZG93LmdldFNlbGVjdGlvbikge1xuXHRcdHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblx0XHRzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG5cdFx0cmFuZ2UgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblx0XHRyYW5nZS5zZWxlY3ROb2RlQ29udGVudHMoZWxlbWVudCk7XG5cdFx0c2VsLmFkZFJhbmdlKHJhbmdlKTtcblx0fSBlbHNlIGlmICh3aW5kb3cuZG9jdW1lbnQuc2VsZWN0aW9uKSB7XG5cdFx0cmFuZ2UgPSB3aW5kb3cuZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKTtcblx0XHRyYW5nZS5tb3ZlVG9FbGVtZW50VGV4dChlbGVtZW50KTtcblx0XHRyYW5nZS5zZWxlY3QoKTtcblx0fVxufVxuXG5leHBvcnQgY29uc3QgZGV0ZWN0RHJvcGRvd25WaXNpYmlsaXR5ID0gXy5kZWJvdW5jZSgoKSA9PiB7XG5cdGRyb3Bkb3duVmlzaWJpbGl0eSghIV8uZmluZChHbG9iYWxzRGF0YS5hQm9vdHN0cmFwRHJvcGRvd25zLCAoaXRlbSkgPT4gaXRlbS5oYXNDbGFzcygnb3BlbicpKSk7XG59LCA1MCk7XG5cbi8qKlxuICogQHBhcmFtIHtib29sZWFuPX0gZGVsYXkgPSBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJpZ2dlckF1dG9jb21wbGV0ZUlucHV0Q2hhbmdlKGRlbGF5ID0gZmFsc2UpIHtcblx0Y29uc3QgZkZ1bmMgPSAoKSA9PiB7XG5cdFx0JCgnLmNoZWNrQXV0b2NvbXBsZXRlJykudHJpZ2dlcignY2hhbmdlJyk7XG5cdH07XG5cblx0aWYgKGRlbGF5KSB7XG5cdFx0Xy5kZWxheShmRnVuYywgMTAwKTtcblx0fSBlbHNlIHtcblx0XHRmRnVuYygpO1xuXHR9XG59XG5cbmNvbnN0IGNvbmZpZ3VyYXRpb25TY3JpcHRUYWdDYWNoZSA9IHt9O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb25maWd1cmF0aW9uXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlndXJhdGlvbkZyb21TY3JpcHRUYWcoY29uZmlndXJhdGlvbikge1xuXHRpZiAoIWNvbmZpZ3VyYXRpb25TY3JpcHRUYWdDYWNoZVtjb25maWd1cmF0aW9uXSkge1xuXHRcdGNvbmZpZ3VyYXRpb25TY3JpcHRUYWdDYWNoZVtjb25maWd1cmF0aW9uXSA9ICQoXG5cdFx0XHQnc2NyaXB0W3R5cGU9XCJhcHBsaWNhdGlvbi9qc29uXCJdW2RhdGEtY29uZmlndXJhdGlvbj1cIicgKyBjb25maWd1cmF0aW9uICsgJ1wiXSdcblx0XHQpO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShjb25maWd1cmF0aW9uU2NyaXB0VGFnQ2FjaGVbY29uZmlndXJhdGlvbl0udGV4dCgpKTtcblx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXG5cdHJldHVybiB7fTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge21peGVkfSBtUHJvcE9yVmFsdWVcbiAqIEBwYXJhbSB7bWl4ZWR9IHZhbHVlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNwb3NlT25lKHByb3BPclZhbHVlLCB2YWx1ZSkge1xuXHRjb25zdCBkaXNwb3NhYmxlID0gdmFsdWUgfHwgcHJvcE9yVmFsdWU7XG5cdGlmIChkaXNwb3NhYmxlICYmICdmdW5jdGlvbicgPT09IHR5cGVvZiBkaXNwb3NhYmxlLmRpc3Bvc2UpIHtcblx0XHRkaXNwb3NhYmxlLmRpc3Bvc2UoKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3Bvc2VPYmplY3Qob2JqZWN0KSB7XG5cdGlmIChvYmplY3QpIHtcblx0XHRpZiAoaXNBcnJheShvYmplY3QuZGlzcG9zYWJsZXMpKSB7XG5cdFx0XHRfLmVhY2gob2JqZWN0LmRpc3Bvc2FibGVzLCBkaXNwb3NlT25lKTtcblx0XHR9XG5cblx0XHRrby51dGlscy5vYmplY3RGb3JFYWNoKG9iamVjdCwgZGlzcG9zZU9uZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge09iamVjdHxBcnJheX0gb2JqZWN0T3JPYmplY3RzXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlbGVnYXRlUnVuT25EZXN0cm95KG9iamVjdE9yT2JqZWN0cykge1xuXHRpZiAob2JqZWN0T3JPYmplY3RzKSB7XG5cdFx0aWYgKGlzQXJyYXkob2JqZWN0T3JPYmplY3RzKSkge1xuXHRcdFx0Xy5lYWNoKG9iamVjdE9yT2JqZWN0cywgKGl0ZW0pID0+IHtcblx0XHRcdFx0ZGVsZWdhdGVSdW5PbkRlc3Ryb3koaXRlbSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2UgaWYgKG9iamVjdE9yT2JqZWN0cyAmJiBvYmplY3RPck9iamVjdHMub25EZXN0cm95KSB7XG5cdFx0XHRvYmplY3RPck9iamVjdHMub25EZXN0cm95KCk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9ICRzdHlsZVRhZ1xuICogQHBhcmFtIHtzdHJpbmd9IGNzc1xuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRTdHlsZXMoJHN0eWxlVGFnLCBjc3MpIHtcblx0aWYgKCRzdHlsZVRhZyAmJiAkc3R5bGVUYWdbMF0pIHtcblx0XHRpZiAoJHN0eWxlVGFnWzBdLnN0eWxlU2hlZXQgJiYgIWlzVW5kKCRzdHlsZVRhZ1swXS5zdHlsZVNoZWV0LmNzc1RleHQpKSB7XG5cdFx0XHQkc3R5bGVUYWdbMF0uc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkc3R5bGVUYWcudGV4dChjc3MpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cmV0dXJuIGZhbHNlO1xufVxuXG5sZXQgX190aGVtZVRpbWVyID0gMCxcblx0X190aGVtZUFqYXggPSBudWxsO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtmdW5jdGlvbj19IHRoZW1lVHJpZ2dlciA9IG5vb3BcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlVGhlbWUodmFsdWUsIHRoZW1lVHJpZ2dlciA9IG5vb3ApIHtcblx0Y29uc3QgdGhlbWVMaW5rID0gJCgnI2FwcC10aGVtZS1saW5rJyksXG5cdFx0Y2xlYXJUaW1lciA9ICgpID0+IHtcblx0XHRcdF9fdGhlbWVUaW1lciA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHRoZW1lVHJpZ2dlcihTYXZlU2V0dGluZ3NTdGVwLklkbGUpLCAxMDAwKTtcblx0XHRcdF9fdGhlbWVBamF4ID0gbnVsbDtcblx0XHR9O1xuXG5cdGxldCB0aGVtZVN0eWxlID0gJCgnI2FwcC10aGVtZS1zdHlsZScpLFxuXHRcdHVybCA9IHRoZW1lTGluay5hdHRyKCdocmVmJyk7XG5cblx0aWYgKCF1cmwpIHtcblx0XHR1cmwgPSB0aGVtZVN0eWxlLmF0dHIoJ2RhdGEtaHJlZicpO1xuXHR9XG5cblx0aWYgKHVybCkge1xuXHRcdHVybCA9IHVybC50b1N0cmluZygpLnJlcGxhY2UoL1xcLy1cXC9bXi9dK1xcLy1cXC8vLCAnLy0vJyArIHZhbHVlICsgJy8tLycpO1xuXHRcdHVybCA9IHVybC5yZXBsYWNlKC9cXC9Dc3NcXC9bXi9dK1xcL1VzZXJcXC8vLCAnL0Nzcy8wL1VzZXIvJyk7XG5cdFx0dXJsID0gdXJsLnJlcGxhY2UoL1xcL0hhc2hcXC9bXi9dK1xcLy8sICcvSGFzaC8tLycpO1xuXG5cdFx0aWYgKCdKc29uLycgIT09IHVybC5zdWJzdHJpbmcodXJsLmxlbmd0aCAtIDUsIHVybC5sZW5ndGgpKSB7XG5cdFx0XHR1cmwgKz0gJ0pzb24vJztcblx0XHR9XG5cblx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KF9fdGhlbWVUaW1lcik7XG5cblx0XHR0aGVtZVRyaWdnZXIoU2F2ZVNldHRpbmdzU3RlcC5BbmltYXRlKTtcblxuXHRcdGlmIChfX3RoZW1lQWpheCAmJiBfX3RoZW1lQWpheC5hYm9ydCkge1xuXHRcdFx0X190aGVtZUFqYXguYWJvcnQoKTtcblx0XHR9XG5cblx0XHRfX3RoZW1lQWpheCA9ICQuYWpheCh7XG5cdFx0XHR1cmw6IHVybCxcblx0XHRcdGRhdGFUeXBlOiAnanNvbidcblx0XHR9KVxuXHRcdFx0LnRoZW4oKGRhdGEpID0+IHtcblx0XHRcdFx0aWYgKGRhdGEgJiYgaXNBcnJheShkYXRhKSAmJiAyID09PSBkYXRhLmxlbmd0aCkge1xuXHRcdFx0XHRcdGlmICh0aGVtZUxpbmsgJiYgdGhlbWVMaW5rWzBdICYmICghdGhlbWVTdHlsZSB8fCAhdGhlbWVTdHlsZVswXSkpIHtcblx0XHRcdFx0XHRcdHRoZW1lU3R5bGUgPSAkKCc8c3R5bGUgaWQ9XCJhcHAtdGhlbWUtc3R5bGVcIj48L3N0eWxlPicpO1xuXHRcdFx0XHRcdFx0dGhlbWVMaW5rLmFmdGVyKHRoZW1lU3R5bGUpO1xuXHRcdFx0XHRcdFx0dGhlbWVMaW5rLnJlbW92ZSgpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICh0aGVtZVN0eWxlICYmIHRoZW1lU3R5bGVbMF0pIHtcblx0XHRcdFx0XHRcdGlmIChhcHBlbmRTdHlsZXModGhlbWVTdHlsZSwgZGF0YVsxXSkpIHtcblx0XHRcdFx0XHRcdFx0dGhlbWVTdHlsZS5hdHRyKCdkYXRhLWhyZWYnLCB1cmwpLmF0dHIoJ2RhdGEtdGhlbWUnLCBkYXRhWzBdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGVtZVRyaWdnZXIoU2F2ZVNldHRpbmdzU3RlcC5UcnVlUmVzdWx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC50aGVuKGNsZWFyVGltZXIsIGNsZWFyVGltZXIpO1xuXHR9XG59XG5cbi8qKlxuICogQHJldHVybnMge2Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZWRQYWdlbmF0b3JIZWxwZXIoa29DdXJyZW50UGFnZSwga29QYWdlQ291bnQpIHtcblx0cmV0dXJuICgpID0+IHtcblx0XHRjb25zdCBjdXJyZW50UGFnZSA9IGtvQ3VycmVudFBhZ2UoKSxcblx0XHRcdHBhZ2VDb3VudCA9IGtvUGFnZUNvdW50KCksXG5cdFx0XHRyZXN1bHQgPSBbXSxcblx0XHRcdGZBZGQgPSAoaW5kZXgsIHB1c2ggPSB0cnVlLCBjdXN0b21OYW1lID0gJycpID0+IHtcblx0XHRcdFx0Y29uc3QgZGF0YSA9IHtcblx0XHRcdFx0XHRjdXJyZW50OiBpbmRleCA9PT0gY3VycmVudFBhZ2UsXG5cdFx0XHRcdFx0bmFtZTogJycgPT09IGN1c3RvbU5hbWUgPyBpbmRleC50b1N0cmluZygpIDogY3VzdG9tTmFtZS50b1N0cmluZygpLFxuXHRcdFx0XHRcdGN1c3RvbTogJycgIT09IGN1c3RvbU5hbWUsXG5cdFx0XHRcdFx0dGl0bGU6ICcnID09PSBjdXN0b21OYW1lID8gJycgOiBpbmRleC50b1N0cmluZygpLFxuXHRcdFx0XHRcdHZhbHVlOiBpbmRleC50b1N0cmluZygpXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0aWYgKHB1c2gpIHtcblx0XHRcdFx0XHRyZXN1bHQucHVzaChkYXRhKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXN1bHQudW5zaGlmdChkYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdGxldCBwcmV2ID0gMCxcblx0XHRcdG5leHQgPSAwLFxuXHRcdFx0bGltaXQgPSAyO1xuXG5cdFx0aWYgKDEgPCBwYWdlQ291bnQgfHwgKDAgPCBwYWdlQ291bnQgJiYgcGFnZUNvdW50IDwgY3VycmVudFBhZ2UpKSB7XG5cdFx0XHRpZiAocGFnZUNvdW50IDwgY3VycmVudFBhZ2UpIHtcblx0XHRcdFx0ZkFkZChwYWdlQ291bnQpO1xuXHRcdFx0XHRwcmV2ID0gcGFnZUNvdW50O1xuXHRcdFx0XHRuZXh0ID0gcGFnZUNvdW50O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKDMgPj0gY3VycmVudFBhZ2UgfHwgcGFnZUNvdW50IC0gMiA8PSBjdXJyZW50UGFnZSkge1xuXHRcdFx0XHRcdGxpbWl0ICs9IDI7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmQWRkKGN1cnJlbnRQYWdlKTtcblx0XHRcdFx0cHJldiA9IGN1cnJlbnRQYWdlO1xuXHRcdFx0XHRuZXh0ID0gY3VycmVudFBhZ2U7XG5cdFx0XHR9XG5cblx0XHRcdHdoaWxlICgwIDwgbGltaXQpIHtcblx0XHRcdFx0cHJldiAtPSAxO1xuXHRcdFx0XHRuZXh0ICs9IDE7XG5cblx0XHRcdFx0aWYgKDAgPCBwcmV2KSB7XG5cdFx0XHRcdFx0ZkFkZChwcmV2LCBmYWxzZSk7XG5cdFx0XHRcdFx0bGltaXQgLT0gMTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChwYWdlQ291bnQgPj0gbmV4dCkge1xuXHRcdFx0XHRcdGZBZGQobmV4dCwgdHJ1ZSk7XG5cdFx0XHRcdFx0bGltaXQgLT0gMTtcblx0XHRcdFx0fSBlbHNlIGlmICgwID49IHByZXYpIHtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoMyA9PT0gcHJldikge1xuXHRcdFx0XHRmQWRkKDIsIGZhbHNlKTtcblx0XHRcdH0gZWxzZSBpZiAoMyA8IHByZXYpIHtcblx0XHRcdFx0ZkFkZChNYXRoLnJvdW5kKChwcmV2IC0gMSkgLyAyKSwgZmFsc2UsICcuLi4nKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHBhZ2VDb3VudCAtIDIgPT09IG5leHQpIHtcblx0XHRcdFx0ZkFkZChwYWdlQ291bnQgLSAxLCB0cnVlKTtcblx0XHRcdH0gZWxzZSBpZiAocGFnZUNvdW50IC0gMiA+IG5leHQpIHtcblx0XHRcdFx0ZkFkZChNYXRoLnJvdW5kKChwYWdlQ291bnQgKyBuZXh0KSAvIDIpLCB0cnVlLCAnLi4uJyk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGZpcnN0IGFuZCBsYXN0XG5cdFx0XHRpZiAoMSA8IHByZXYpIHtcblx0XHRcdFx0ZkFkZCgxLCBmYWxzZSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChwYWdlQ291bnQgPiBuZXh0KSB7XG5cdFx0XHRcdGZBZGQocGFnZUNvdW50LCB0cnVlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlTmFtZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZpbGVFeHRlbnNpb24oZmlsZU5hbWUpIHtcblx0ZmlsZU5hbWUgPSB0cmltKGZpbGVOYW1lKS50b0xvd2VyQ2FzZSgpO1xuXG5cdGNvbnN0IHJlc3VsdCA9IGZpbGVOYW1lLnNwbGl0KCcuJykucG9wKCk7XG5cdHJldHVybiByZXN1bHQgPT09IGZpbGVOYW1lID8gJycgOiByZXN1bHQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGVOYW1lXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWltZUNvbnRlbnRUeXBlKGZpbGVOYW1lKSB7XG5cdGxldCBleHQgPSAnJyxcblx0XHRyZXN1bHQgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcblxuXHRmaWxlTmFtZSA9IHRyaW0oZmlsZU5hbWUpLnRvTG93ZXJDYXNlKCk7XG5cblx0aWYgKCd3aW5tYWlsLmRhdCcgPT09IGZpbGVOYW1lKSB7XG5cdFx0cmV0dXJuICdhcHBsaWNhdGlvbi9tcy10bmVmJztcblx0fVxuXG5cdGV4dCA9IGdldEZpbGVFeHRlbnNpb24oZmlsZU5hbWUpO1xuXHRpZiAoZXh0ICYmIDAgPCBleHQubGVuZ3RoICYmICFpc1VuZChNaW1lW2V4dF0pKSB7XG5cdFx0cmVzdWx0ID0gTWltZVtleHRdO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gY29sb3JcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUcmFuc3BhcmVudChjb2xvcikge1xuXHRyZXR1cm4gJ3JnYmEoMCwgMCwgMCwgMCknID09PSBjb2xvciB8fCAndHJhbnNwYXJlbnQnID09PSBjb2xvcjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge09iamVjdH0gJGVsXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVhbEhlaWdodCgkZWwpIHtcblx0JGVsXG5cdFx0LmNsb25lKClcblx0XHQuc2hvdygpXG5cdFx0LmFwcGVuZFRvKCRoY29udCk7XG5cdGNvbnN0IHJlc3VsdCA9ICRoY29udC5oZWlnaHQoKTtcblx0JGhjb250LmVtcHR5KCk7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHVybFxuICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmQ2FsbGJhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc2l6ZUFuZENyb3AodXJsLCB2YWx1ZSwgZkNhbGxiYWNrKSB7XG5cdGNvbnN0IGltZyA9IG5ldyB3aW5kb3cuSW1hZ2UoKTtcblx0aW1nLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHRcdGxldCBkaWZmID0gWzAsIDBdO1xuXG5cdFx0Y29uc3QgY2FudmFzID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpLFxuXHRcdFx0Y3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cblx0XHRjYW52YXMud2lkdGggPSB2YWx1ZTtcblx0XHRjYW52YXMuaGVpZ2h0ID0gdmFsdWU7XG5cblx0XHRpZiAodGhpcy53aWR0aCA+IHRoaXMuaGVpZ2h0KSB7XG5cdFx0XHRkaWZmID0gW3RoaXMud2lkdGggLSB0aGlzLmhlaWdodCwgMF07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGRpZmYgPSBbMCwgdGhpcy5oZWlnaHQgLSB0aGlzLndpZHRoXTtcblx0XHR9XG5cblx0XHRjdHguZmlsbFN0eWxlID0gJyNmZmYnO1xuXHRcdGN0eC5maWxsUmVjdCgwLCAwLCB2YWx1ZSwgdmFsdWUpO1xuXHRcdGN0eC5kcmF3SW1hZ2UodGhpcywgZGlmZlswXSAvIDIsIGRpZmZbMV0gLyAyLCB0aGlzLndpZHRoIC0gZGlmZlswXSwgdGhpcy5oZWlnaHQgLSBkaWZmWzFdLCAwLCAwLCB2YWx1ZSwgdmFsdWUpO1xuXG5cdFx0ZkNhbGxiYWNrKGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL2pwZWcnKSk7XG5cdH07XG5cblx0aW1nLnNyYyA9IHVybDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFpbFRvVXJsXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBQb3B1cENvbXBvc2VWaWV3TW9kZWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFpbFRvSGVscGVyKG1haWxUb1VybCwgUG9wdXBDb21wb3NlVmlld01vZGVsKSB7XG5cdGlmIChcblx0XHRtYWlsVG9VcmwgJiZcblx0XHQnbWFpbHRvOicgPT09XG5cdFx0XHRtYWlsVG9Vcmxcblx0XHRcdFx0LnRvU3RyaW5nKClcblx0XHRcdFx0LnN1YnN0cigwLCA3KVxuXHRcdFx0XHQudG9Mb3dlckNhc2UoKVxuXHQpIHtcblx0XHRpZiAoIVBvcHVwQ29tcG9zZVZpZXdNb2RlbCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0bWFpbFRvVXJsID0gbWFpbFRvVXJsLnRvU3RyaW5nKCkuc3Vic3RyKDcpO1xuXG5cdFx0bGV0IHRvID0gW10sXG5cdFx0XHRjYyA9IG51bGwsXG5cdFx0XHRiY2MgPSBudWxsLFxuXHRcdFx0cGFyYW1zID0ge307XG5cblx0XHRjb25zdCBlbWFpbCA9IG1haWxUb1VybC5yZXBsYWNlKC9cXD8uKyQvLCAnJyksXG5cdFx0XHRxdWVyeSA9IG1haWxUb1VybC5yZXBsYWNlKC9eW14/XSpcXD8vLCAnJyksXG5cdFx0XHRFbWFpbE1vZGVsID0gcmVxdWlyZSgnTW9kZWwvRW1haWwnKS5kZWZhdWx0O1xuXG5cdFx0cGFyYW1zID0gc2ltcGxlUXVlcnlQYXJzZXIocXVlcnkpO1xuXG5cdFx0aWYgKCFpc1VuZChwYXJhbXMudG8pKSB7XG5cdFx0XHR0byA9IEVtYWlsTW9kZWwucGFyc2VFbWFpbExpbmUoZGVjb2RlVVJJQ29tcG9uZW50KGVtYWlsICsgJywnICsgcGFyYW1zLnRvKSk7XG5cdFx0XHR0byA9IF8udmFsdWVzKFxuXHRcdFx0XHR0by5yZWR1Y2UoKHJlc3VsdCwgdmFsdWUpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdGlmIChyZXN1bHRbdmFsdWUuZW1haWxdKSB7XG5cdFx0XHRcdFx0XHRcdGlmICghcmVzdWx0W3ZhbHVlLmVtYWlsXS5uYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0W3ZhbHVlLmVtYWlsXSA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRbdmFsdWUuZW1haWxdID0gdmFsdWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHRcdH0sIHt9KVxuXHRcdFx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dG8gPSBFbWFpbE1vZGVsLnBhcnNlRW1haWxMaW5lKGVtYWlsKTtcblx0XHR9XG5cblx0XHRpZiAoIWlzVW5kKHBhcmFtcy5jYykpIHtcblx0XHRcdGNjID0gRW1haWxNb2RlbC5wYXJzZUVtYWlsTGluZShkZWNvZGVVUklDb21wb25lbnQocGFyYW1zLmNjKSk7XG5cdFx0fVxuXG5cdFx0aWYgKCFpc1VuZChwYXJhbXMuYmNjKSkge1xuXHRcdFx0YmNjID0gRW1haWxNb2RlbC5wYXJzZUVtYWlsTGluZShkZWNvZGVVUklDb21wb25lbnQocGFyYW1zLmJjYykpO1xuXHRcdH1cblxuXHRcdHJlcXVpcmUoJ0tub2luL0tub2luJykuc2hvd1NjcmVlblBvcHVwKFBvcHVwQ29tcG9zZVZpZXdNb2RlbCwgW1xuXHRcdFx0Q29tcG9zZVR5cGUuRW1wdHksXG5cdFx0XHRudWxsLFxuXHRcdFx0dG8sXG5cdFx0XHRjYyxcblx0XHRcdGJjYyxcblx0XHRcdGlzVW5kKHBhcmFtcy5zdWJqZWN0KSA/IG51bGwgOiBwU3RyaW5nKGRlY29kZVVSSUNvbXBvbmVudChwYXJhbXMuc3ViamVjdCkpLFxuXHRcdFx0aXNVbmQocGFyYW1zLmJvZHkpID8gbnVsbCA6IHBsYWluVG9IdG1sKHBTdHJpbmcoZGVjb2RlVVJJQ29tcG9uZW50KHBhcmFtcy5ib2R5KSkpXG5cdFx0XSk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmblxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkb21SZWFkeShmbikge1xuXHQkKCgpID0+IGZuKCkpO1xuXHQvL1xuXHQvL1x0aWYgKCdsb2FkaW5nJyAhPT0gd2luZG93LmRvY3VtZW50LnJlYWR5U3RhdGUpXG5cdC8vXHR7XG5cdC8vXHRcdGZuKCk7XG5cdC8vXHR9XG5cdC8vXHRlbHNlXG5cdC8vXHR7XG5cdC8vXHRcdHdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgZm4pO1xuXHQvL1x0fVxufVxuXG5leHBvcnQgY29uc3Qgd2luZG93UmVzaXplID0gXy5kZWJvdW5jZSgodGltZW91dCkgPT4ge1xuXHRpZiAoaXNVbmQodGltZW91dCkgfHwgaXNOdWxsKHRpbWVvdXQpKSB7XG5cdFx0JHdpbi5yZXNpemUoKTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHQkd2luLnJlc2l6ZSgpO1xuXHRcdH0sIHRpbWVvdXQpO1xuXHR9XG59LCA1MCk7XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3aW5kb3dSZXNpemVDYWxsYmFjaygpIHtcblx0d2luZG93UmVzaXplKCk7XG59XG5cbmxldCBzdWJzdHIgPSB3aW5kb3cuU3RyaW5nLnN1YnN0cjtcbmlmICgnYicgIT09ICdhYicuc3Vic3RyKC0xKSkge1xuXHRzdWJzdHIgPSAoc3RyLCBzdGFydCwgbGVuZ3RoKSA9PiB7XG5cdFx0c3RhcnQgPSAwID4gc3RhcnQgPyBzdHIubGVuZ3RoICsgc3RhcnQgOiBzdGFydDtcblx0XHRyZXR1cm4gc3RyLnN1YnN0cihzdGFydCwgbGVuZ3RoKTtcblx0fTtcblxuXHR3aW5kb3cuU3RyaW5nLnN1YnN0ciA9IHN1YnN0cjtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gd2luZG93Ll87IiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3c7IiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IHsgaXNVbmQsIGlzTm9ybWFsLCBpc0FycmF5LCBpbkFycmF5IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxubGV0IFNFVFRJTkdTID0gd2luZG93Ll9fcmxhaF9kYXRhKCkgfHwgbnVsbDtcblNFVFRJTkdTID0gaXNOb3JtYWwoU0VUVElOR1MpID8gU0VUVElOR1MgOiB7fTtcblxubGV0IEFQUF9TRVRUSU5HUyA9IFNFVFRJTkdTLlN5c3RlbSB8fCBudWxsO1xuQVBQX1NFVFRJTkdTID0gaXNOb3JtYWwoQVBQX1NFVFRJTkdTKSA/IEFQUF9TRVRUSU5HUyA6IHt9O1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldHRpbmdzR2V0KG5hbWUpIHtcblx0cmV0dXJuIGlzVW5kKFNFVFRJTkdTW25hbWVdKSA/IG51bGwgOiBTRVRUSU5HU1tuYW1lXTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHsqfSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0dGluZ3NTZXQobmFtZSwgdmFsdWUpIHtcblx0U0VUVElOR1NbbmFtZV0gPSB2YWx1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMgeyp9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBTZXR0aW5nc0dldChuYW1lKSB7XG5cdHJldHVybiBpc1VuZChBUFBfU0VUVElOR1NbbmFtZV0pID8gbnVsbCA6IEFQUF9TRVRUSU5HU1tuYW1lXTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYXBhKG5hbWUpIHtcblx0Y29uc3QgdmFsdWVzID0gc2V0dGluZ3NHZXQoJ0NhcGEnKTtcblx0cmV0dXJuIGlzQXJyYXkodmFsdWVzKSAmJiBpc05vcm1hbChuYW1lKSAmJiAtMSA8IGluQXJyYXkobmFtZSwgdmFsdWVzKTtcbn1cbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga2V5IGZyb20gJ2tleSc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IHsgS2V5U3RhdGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuXG5jb25zdCAkd2luID0gJCh3aW5kb3cpO1xuJHdpbi5fX3NpemVzID0gWzAsIDBdO1xuXG5leHBvcnQgeyAkd2luIH07XG5cbmV4cG9ydCBjb25zdCAkZG9jID0gJCh3aW5kb3cuZG9jdW1lbnQpO1xuXG5leHBvcnQgY29uc3QgJGh0bWwgPSAkKCdodG1sJyk7XG5cbmV4cG9ydCBjb25zdCAkYm9keSA9ICQoJ2JvZHknKTtcblxuZXhwb3J0IGNvbnN0ICRkaXYgPSAkKCc8ZGl2PjwvZGl2PicpO1xuXG5leHBvcnQgY29uc3QgJGhjb250ID0gJCgnPGRpdj48L2Rpdj4nKTtcbiRoY29udFxuXHQuYXR0cignYXJlYScsICdoaWRkZW4nKVxuXHQuY3NzKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIGxlZnQ6IC01MDAwIH0pXG5cdC5hcHBlbmRUbygkYm9keSk7XG5cbmV4cG9ydCBjb25zdCBzdGFydE1pY3JvdGltZSA9IG5ldyB3aW5kb3cuRGF0ZSgpLmdldFRpbWUoKTtcblxuLyoqXG4gKiBAdHlwZSB7P31cbiAqL1xuZXhwb3J0IGNvbnN0IGRyb3Bkb3duVmlzaWJpbGl0eSA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IHJhdGVMaW1pdDogMCB9KTtcblxuLyoqXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZUtleWJvYXJkU2hvcnRjdXRzID0ga28ub2JzZXJ2YWJsZSh0cnVlKTtcblxuLyoqXG4gKiBAdHlwZSB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3Qgc1VzZXJBZ2VudCA9XG5cdCgnbmF2aWdhdG9yJyBpbiB3aW5kb3cgJiYgJ3VzZXJBZ2VudCcgaW4gd2luZG93Lm5hdmlnYXRvciAmJiB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKSB8fCAnJztcblxuLyoqXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGJJRSA9IC0xIDwgc1VzZXJBZ2VudC5pbmRleE9mKCdtc2llJyk7XG5cbi8qKlxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBiQ2hyb21lID0gLTEgPCBzVXNlckFnZW50LmluZGV4T2YoJ2Nocm9tZScpO1xuXG4vKipcbiAqIEB0eXBlIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgYlNhZmFyaSA9ICFiQ2hyb21lICYmIC0xIDwgc1VzZXJBZ2VudC5pbmRleE9mKCdzYWZhcmknKTtcblxuLyoqXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGJNb2JpbGVEZXZpY2UgPVxuXHQoL2FuZHJvaWQvaSkudGVzdChzVXNlckFnZW50KSB8fFxuXHQoL2lwaG9uZS9pKS50ZXN0KHNVc2VyQWdlbnQpIHx8XG5cdCgvaXBvZC9pKS50ZXN0KHNVc2VyQWdlbnQpIHx8XG5cdCgvaXBhZC9pKS50ZXN0KHNVc2VyQWdlbnQpIHx8XG5cdCgvYmxhY2tiZXJyeS9pKS50ZXN0KHNVc2VyQWdlbnQpO1xuXG4vKipcbiAqIEB0eXBlIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgYkRpc2FibGVOYW5vU2Nyb2xsID0gYk1vYmlsZURldmljZTtcblxuLyoqXG4gKiBAdHlwZSB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGJBbmltYXRpb25TdXBwb3J0ZWQgPVxuXHQhYk1vYmlsZURldmljZSAmJiAkaHRtbC5oYXNDbGFzcygnY3NzdHJhbnNpdGlvbnMnKSAmJiAkaHRtbC5oYXNDbGFzcygnY3NzYW5pbWF0aW9ucycpO1xuXG4vKipcbiAqIEB0eXBlIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgYlhNTEh0dHBSZXF1ZXN0U3VwcG9ydGVkID0gISF3aW5kb3cuWE1MSHR0cFJlcXVlc3Q7XG5cbi8qKlxuICogQHR5cGUge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBiSXNIdHRwcyA9XG5cdHdpbmRvdy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQubG9jYXRpb24gPyAnaHR0cHM6JyA9PT0gd2luZG93LmRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sIDogZmFsc2U7XG5cbi8qKlxuICogQHR5cGUge09iamVjdH1cbiAqL1xuZXhwb3J0IGNvbnN0IGh0bWxFZGl0b3JEZWZhdWx0Q29uZmlnID0ge1xuXHQndGl0bGUnOiBmYWxzZSxcblx0J3N0eWxlc1NldCc6IGZhbHNlLFxuXHQnY3VzdG9tQ29uZmlnJzogJycsXG5cdCdjb250ZW50c0Nzcyc6ICcnLFxuXHQndG9vbGJhckdyb3Vwcyc6IFtcblx0XHR7IG5hbWU6ICdzcGVjJyB9LFxuXHRcdHsgbmFtZTogJ3N0eWxlcycgfSxcblx0XHR7IG5hbWU6ICdiYXNpY3N0eWxlcycsIGdyb3VwczogWydiYXNpY3N0eWxlcycsICdjbGVhbnVwJywgJ2JpZGknXSB9LFxuXHRcdHsgbmFtZTogJ2NvbG9ycycgfSxcblx0XHRiTW9iaWxlRGV2aWNlID8ge30gOiB7IG5hbWU6ICdwYXJhZ3JhcGgnLCBncm91cHM6IFsnbGlzdCcsICdpbmRlbnQnLCAnYmxvY2tzJywgJ2FsaWduJ10gfSxcblx0XHR7IG5hbWU6ICdsaW5rcycgfSxcblx0XHR7IG5hbWU6ICdpbnNlcnQnIH0sXG5cdFx0eyBuYW1lOiAnZG9jdW1lbnQnLCBncm91cHM6IFsnbW9kZScsICdkb2N1bWVudCcsICdkb2N0b29scyddIH0sXG5cdFx0eyBuYW1lOiAnb3RoZXJzJyB9XG5cdF0sXG5cblx0J3JlbW92ZVBsdWdpbnMnOiAnbGlzdHN0eWxlJyxcblx0J3JlbW92ZUJ1dHRvbnMnOiAnRm9ybWF0LFVuZG8sUmVkbyxDdXQsQ29weSxQYXN0ZSxBbmNob3IsU3RyaWtlLFN1YnNjcmlwdCxTdXBlcnNjcmlwdCxJbWFnZSxTZWxlY3RBbGwsU291cmNlJyxcblx0J3JlbW92ZURpYWxvZ1RhYnMnOiAnbGluazphZHZhbmNlZDtsaW5rOnRhcmdldDtpbWFnZTphZHZhbmNlZDtpbWFnZXM6YWR2YW5jZWQnLFxuXG5cdCdleHRyYVBsdWdpbnMnOiAncGxhaW4sc2lnbmF0dXJlJyxcblxuXHQnYWxsb3dlZENvbnRlbnQnOiB0cnVlLFxuXHQnZXh0cmFBbGxvd2VkQ29udGVudCc6IHRydWUsXG5cblx0J2ZpbGxFbXB0eUJsb2Nrcyc6IGZhbHNlLFxuXHQnaWdub3JlRW1wdHlQYXJhZ3JhcGgnOiB0cnVlLFxuXHQnZGlzYWJsZU5hdGl2ZVNwZWxsQ2hlY2tlcic6IGZhbHNlLFxuXG5cdCdjb2xvckJ1dHRvbl9lbmFibGVBdXRvbWF0aWMnOiBmYWxzZSxcblx0J2NvbG9yQnV0dG9uX2VuYWJsZU1vcmUnOiB0cnVlLFxuXG5cdCdmb250X2RlZmF1bHRMYWJlbCc6ICdBcmlhbCcsXG5cdCdmb250U2l6ZV9kZWZhdWx0TGFiZWwnOiAnMTMnLFxuXHQnZm9udFNpemVfc2l6ZXMnOiAnMTAvMTBweDsxMi8xMnB4OzEzLzEzcHg7MTQvMTRweDsxNi8xNnB4OzE4LzE4cHg7MjAvMjBweDsyNC8yNHB4OzI4LzI4cHg7MzYvMzZweDs0OC80OHB4J1xufTtcblxuLyoqXG4gKiBAdHlwZSB7T2JqZWN0fVxuICovXG5leHBvcnQgY29uc3QgaHRtbEVkaXRvckxhbmdzTWFwID0ge1xuXHQnYXJfc2EnOiAnYXItc2EnLFxuXHQnYmdfYmcnOiAnYmcnLFxuXHQnY3NfQ1onOiAnY3MnLFxuXHQnZGVfZGUnOiAnZGUnLFxuXHQnZWxfZ3InOiAnZWwnLFxuXHQnZXNfZXMnOiAnZXMnLFxuXHQnZXRfZWUnOiAnZXQnLFxuXHQnZnJfZnInOiAnZnInLFxuXHQnaHVfaHUnOiAnaHUnLFxuXHQnaXNfaXMnOiAnaXMnLFxuXHQnaXRfaXQnOiAnaXQnLFxuXHQnamFfanAnOiAnamEnLFxuXHQna29fa3InOiAna28nLFxuXHQnbHRfbHQnOiAnbHQnLFxuXHQnbHZfbHYnOiAnbHYnLFxuXHQnZmFfaXInOiAnZmEnLFxuXHQnbmJfbm8nOiAnbmInLFxuXHQnbmxfbmwnOiAnbmwnLFxuXHQncGxfcGwnOiAncGwnLFxuXHQncHRfYnInOiAncHQtYnInLFxuXHQncHRfcHQnOiAncHQnLFxuXHQncm9fcm8nOiAncm8nLFxuXHQncnVfcnUnOiAncnUnLFxuXHQnc2tfc2snOiAnc2snLFxuXHQnc2xfc2knOiAnc2wnLFxuXHQnc3Zfc2UnOiAnc3YnLFxuXHQndHJfdHInOiAndHInLFxuXHQndWtfdWEnOiAndWsnLFxuXHQnemhfY24nOiAnemgtY24nLFxuXHQnemhfdHcnOiAnemgnXG59O1xuXG4vKipcbiAqIEB0eXBlIHtib29sZWFufVxuICovXG5sZXQgYkFsbG93UGRmUHJldmlldyA9ICFiTW9iaWxlRGV2aWNlO1xuXG5pZiAoYkFsbG93UGRmUHJldmlldyAmJiB3aW5kb3cubmF2aWdhdG9yICYmIHdpbmRvdy5uYXZpZ2F0b3IubWltZVR5cGVzKSB7XG5cdGJBbGxvd1BkZlByZXZpZXcgPSAhIV8uZmluZCh3aW5kb3cubmF2aWdhdG9yLm1pbWVUeXBlcywgKHR5cGUpID0+IHR5cGUgJiYgJ2FwcGxpY2F0aW9uL3BkZicgPT09IHR5cGUudHlwZSk7XG5cblx0aWYgKCFiQWxsb3dQZGZQcmV2aWV3KSB7XG5cdFx0YkFsbG93UGRmUHJldmlldyA9ICd1bmRlZmluZWQnICE9PSB0eXBlb2Ygd2luZG93Lm5hdmlnYXRvci5taW1lVHlwZXNbJ2FwcGxpY2F0aW9uL3BkZiddO1xuXHR9XG59XG5cbmV4cG9ydCB7IGJBbGxvd1BkZlByZXZpZXcgfTtcblxuZXhwb3J0IGNvbnN0IFZJRVdfTU9ERUxTID0ge1xuXHRzZXR0aW5nczogW10sXG5cdCdzZXR0aW5ncy1yZW1vdmVkJzogW10sXG5cdCdzZXR0aW5ncy1kaXNhYmxlZCc6IFtdXG59O1xuXG5leHBvcnQgY29uc3QgbW92ZUFjdGlvbiA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuZXhwb3J0IGNvbnN0IGxlZnRQYW5lbERpc2FibGVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5leHBvcnQgY29uc3QgbGVmdFBhbmVsVHlwZSA9IGtvLm9ic2VydmFibGUoJycpO1xuZXhwb3J0IGNvbnN0IGxlZnRQYW5lbFdpZHRoID0ga28ub2JzZXJ2YWJsZSgwKTtcblxubGVmdFBhbmVsRGlzYWJsZWQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRpZiAodmFsdWUgJiYgbW92ZUFjdGlvbigpKSB7XG5cdFx0bW92ZUFjdGlvbihmYWxzZSk7XG5cdH1cbn0pO1xuXG5tb3ZlQWN0aW9uLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0aWYgKHZhbHVlICYmIGxlZnRQYW5lbERpc2FibGVkKCkpIHtcblx0XHRsZWZ0UGFuZWxEaXNhYmxlZChmYWxzZSk7XG5cdH1cbn0pO1xuXG4vLyBwb3B1cHNcbmV4cG9ydCBjb25zdCBwb3B1cFZpc2liaWxpdHlOYW1lcyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cbmV4cG9ydCBjb25zdCBwb3B1cFZpc2liaWxpdHkgPSBrby5jb21wdXRlZCgoKSA9PiAwIDwgcG9wdXBWaXNpYmlsaXR5TmFtZXMoKS5sZW5ndGgpO1xuXG5wb3B1cFZpc2liaWxpdHkuc3Vic2NyaWJlKChiVmFsdWUpID0+IHtcblx0JGh0bWwudG9nZ2xlQ2xhc3MoJ3JsLW1vZGFsJywgYlZhbHVlKTtcbn0pO1xuXG4vLyBrZXlzXG5leHBvcnQgY29uc3Qga2V5U2NvcGVSZWFsID0ga28ub2JzZXJ2YWJsZShLZXlTdGF0ZS5BbGwpO1xuZXhwb3J0IGNvbnN0IGtleVNjb3BlRmFrZSA9IGtvLm9ic2VydmFibGUoS2V5U3RhdGUuQWxsKTtcblxuZXhwb3J0IGNvbnN0IGtleVNjb3BlID0ga28uY29tcHV0ZWQoe1xuXHRyZWFkOiAoKSA9PiBrZXlTY29wZUZha2UoKSxcblx0d3JpdGU6ICh2YWx1ZSkgPT4ge1xuXHRcdGlmIChLZXlTdGF0ZS5NZW51ICE9PSB2YWx1ZSkge1xuXHRcdFx0aWYgKEtleVN0YXRlLkNvbXBvc2UgPT09IHZhbHVlKSB7XG5cdFx0XHRcdC8vIGRpc2FibGVLZXlGaWx0ZXJcblx0XHRcdFx0a2V5LmZpbHRlciA9ICgpID0+IHVzZUtleWJvYXJkU2hvcnRjdXRzKCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHQvLyByZXN0b3JlS2V5RmlsdGVyXG5cdFx0XHRcdGtleS5maWx0ZXIgPSAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRpZiAodXNlS2V5Ym9hcmRTaG9ydGN1dHMoKSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgZWwgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudCxcblx0XHRcdFx0XHRcdFx0dGFnTmFtZSA9IGVsID8gZWwudGFnTmFtZS50b1VwcGVyQ2FzZSgpIDogJyc7XG5cblx0XHRcdFx0XHRcdHJldHVybiAhKFxuXHRcdFx0XHRcdFx0XHQnSU5QVVQnID09PSB0YWdOYW1lIHx8XG5cdFx0XHRcdFx0XHRcdCdTRUxFQ1QnID09PSB0YWdOYW1lIHx8XG5cdFx0XHRcdFx0XHRcdCdURVhUQVJFQScgPT09IHRhZ05hbWUgfHxcblx0XHRcdFx0XHRcdFx0KGVsICYmICdESVYnID09PSB0YWdOYW1lICYmICgnZWRpdG9ySHRtbEFyZWEnID09PSBlbC5jbGFzc05hbWUgfHwgJ3RydWUnID09PSAnJyArIGVsLmNvbnRlbnRFZGl0YWJsZSkpXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0a2V5U2NvcGVGYWtlKHZhbHVlKTtcblx0XHRcdGlmIChkcm9wZG93blZpc2liaWxpdHkoKSkge1xuXHRcdFx0XHR2YWx1ZSA9IEtleVN0YXRlLk1lbnU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0a2V5U2NvcGVSZWFsKHZhbHVlKTtcblx0fVxufSk7XG5cbmtleVNjb3BlUmVhbC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdC8vXHR3aW5kb3cuY29uc29sZS5sb2coJ2tleVNjb3BlPScgKyBzVmFsdWUpOyAvLyBERUJVR1xuXHRrZXkuc2V0U2NvcGUodmFsdWUpO1xufSk7XG5cbmRyb3Bkb3duVmlzaWJpbGl0eS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdGlmICh2YWx1ZSkge1xuXHRcdGtleVNjb3BlKEtleVN0YXRlLk1lbnUpO1xuXHR9IGVsc2UgaWYgKEtleVN0YXRlLk1lbnUgPT09IGtleS5nZXRTY29wZSgpKSB7XG5cdFx0a2V5U2NvcGUoa2V5U2NvcGVGYWtlKCkpO1xuXHR9XG59KTtcblxuLyoqXG4gKiBAdHlwZSB7Kn1cbiAqL1xuZXhwb3J0IGNvbnN0IGRhdGEgPSB7XG5cdF9fQVBQX186IG51bGwsXG5cdGlBamF4RXJyb3JDb3VudDogMCxcblx0aVRva2VuRXJyb3JDb3VudDogMCxcblx0YUJvb3RzdHJhcERyb3Bkb3duczogW10sXG5cdGlNZXNzYWdlQm9keUNhY2hlQ291bnQ6IDAsXG5cdGJVbmxvYWQ6IGZhbHNlXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3cualF1ZXJ5OyIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IGhhc2hlciBmcm9tICdoYXNoZXInO1xuaW1wb3J0IGNyb3Nzcm9hZHMgZnJvbSAnY3Jvc3Nyb2Fkcyc7XG5cbmltcG9ydCB7IE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBydW5Ib29rIH0gZnJvbSAnQ29tbW9uL1BsdWdpbnMnO1xuaW1wb3J0IHsgJGh0bWwsIFZJRVdfTU9ERUxTLCBwb3B1cFZpc2liaWxpdHlOYW1lcyB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcblxuaW1wb3J0IHsgaXNBcnJheSwgaXNVbmQsIHBTdHJpbmcsIGxvZywgaXNGdW5jLCBjcmVhdGVDb21tYW5kTGVnYWN5LCBkZWxlZ2F0ZVJ1biwgaXNOb25FbXB0eUFycmF5IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxubGV0IGN1cnJlbnRTY3JlZW4gPSBudWxsLFxuXHRkZWZhdWx0U2NyZWVuTmFtZSA9ICcnO1xuXG5jb25zdCBTQ1JFRU5TID0ge307XG5cbmV4cG9ydCBjb25zdCBWaWV3VHlwZSA9IHtcblx0UG9wdXA6ICdQb3B1cHMnLFxuXHRMZWZ0OiAnTGVmdCcsXG5cdFJpZ2h0OiAnUmlnaHQnLFxuXHRDZW50ZXI6ICdDZW50ZXInXG59O1xuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGlkZUxvYWRpbmcoKSB7XG5cdCQoJyNybC1jb250ZW50JykuYWRkQ2xhc3MoJ3JsLWNvbnRlbnQtc2hvdycpO1xuXHQkKCcjcmwtbG9hZGluZycpXG5cdFx0LmhpZGUoKVxuXHRcdC5yZW1vdmUoKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmRXhlY3V0ZVxuICogQHBhcmFtIHsoRnVuY3Rpb258Ym9vbGVhbnxudWxsKT19IGZDYW5FeGVjdXRlID0gdHJ1ZVxuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ29tbWFuZChmRXhlY3V0ZSwgZkNhbkV4ZWN1dGUgPSB0cnVlKSB7XG5cdHJldHVybiBjcmVhdGVDb21tYW5kTGVnYWN5KG51bGwsIGZFeGVjdXRlLCBmQ2FuRXhlY3V0ZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gU2V0dGluZ3NWaWV3TW9kZWxDbGFzc1xuICogQHBhcmFtIHtzdHJpbmd9IHRlbXBsYXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWxOYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gcm91dGVcbiAqIEBwYXJhbSB7Ym9vbGVhbj19IGlzRGVmYXVsdCA9IGZhbHNlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFNldHRpbmdzVmlld01vZGVsKFNldHRpbmdzVmlld01vZGVsQ2xhc3MsIHRlbXBsYXRlLCBsYWJlbE5hbWUsIHJvdXRlLCBpc0RlZmF1bHQgPSBmYWxzZSkge1xuXHRTZXR0aW5nc1ZpZXdNb2RlbENsYXNzLl9fcmxTZXR0aW5nc0RhdGEgPSB7XG5cdFx0TGFiZWw6IGxhYmVsTmFtZSxcblx0XHRUZW1wbGF0ZTogdGVtcGxhdGUsXG5cdFx0Um91dGU6IHJvdXRlLFxuXHRcdElzRGVmYXVsdDogISFpc0RlZmF1bHRcblx0fTtcblxuXHRWSUVXX01PREVMUy5zZXR0aW5ncy5wdXNoKFNldHRpbmdzVmlld01vZGVsQ2xhc3MpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFNldHRpbmdzVmlld01vZGVsQ2xhc3NcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU2V0dGluZ3NWaWV3TW9kZWwoU2V0dGluZ3NWaWV3TW9kZWxDbGFzcykge1xuXHRWSUVXX01PREVMU1snc2V0dGluZ3MtcmVtb3ZlZCddLnB1c2goU2V0dGluZ3NWaWV3TW9kZWxDbGFzcyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gU2V0dGluZ3NWaWV3TW9kZWxDbGFzc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaXNhYmxlU2V0dGluZ3NWaWV3TW9kZWwoU2V0dGluZ3NWaWV3TW9kZWxDbGFzcykge1xuXHRWSUVXX01PREVMU1snc2V0dGluZ3MtZGlzYWJsZWQnXS5wdXNoKFNldHRpbmdzVmlld01vZGVsQ2xhc3MpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91dGVPZmYoKSB7XG5cdGhhc2hlci5jaGFuZ2VkLmFjdGl2ZSA9IGZhbHNlO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcm91dGVPbigpIHtcblx0aGFzaGVyLmNoYW5nZWQuYWN0aXZlID0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc2NyZWVuTmFtZVxuICogQHJldHVybnMgez9PYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzY3JlZW4oc2NyZWVuTmFtZSkge1xuXHRyZXR1cm4gJycgIT09IHNjcmVlbk5hbWUgJiYgIWlzVW5kKFNDUkVFTlNbc2NyZWVuTmFtZV0pID8gU0NSRUVOU1tzY3JlZW5OYW1lXSA6IG51bGw7XG59XG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gVmlld01vZGVsQ2xhc3NUb1Nob3dcbiAqIEByZXR1cm5zIHtGdW5jdGlvbnxudWxsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyZWVuUG9wdXAoUG9wdVZpZXdNb2RlbENsYXNzKSB7XG5cdGxldCByZXN1bHQgPSBudWxsO1xuXHRpZiAoUG9wdVZpZXdNb2RlbENsYXNzKSB7XG5cdFx0cmVzdWx0ID0gUG9wdVZpZXdNb2RlbENsYXNzO1xuXHRcdGlmIChQb3B1Vmlld01vZGVsQ2xhc3MuZGVmYXVsdCkge1xuXHRcdFx0cmVzdWx0ID0gUG9wdVZpZXdNb2RlbENsYXNzLmRlZmF1bHQ7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBWaWV3TW9kZWxDbGFzc1RvSGlkZVxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoaWRlU2NyZWVuUG9wdXAoVmlld01vZGVsQ2xhc3NUb0hpZGUpIHtcblx0Y29uc3QgTW9kYWxWaWV3ID0gZ2V0U2NyZWVuUG9wdXAoVmlld01vZGVsQ2xhc3NUb0hpZGUpO1xuXHRpZiAoTW9kYWxWaWV3ICYmIE1vZGFsVmlldy5fX3ZtICYmIE1vZGFsVmlldy5fX2RvbSkge1xuXHRcdE1vZGFsVmlldy5fX3ZtLm1vZGFsVmlzaWJpbGl0eShmYWxzZSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gaG9va05hbWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFZpZXdNb2RlbENsYXNzXG4gKiBAcGFyYW0ge21peGVkPX0gcGFyYW1zID0gbnVsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gdm1SdW5Ib29rKGhvb2tOYW1lLCBWaWV3TW9kZWxDbGFzcywgcGFyYW1zID0gbnVsbCkge1xuXHRfLmVhY2goVmlld01vZGVsQ2xhc3MuX19uYW1lcywgKG5hbWUpID0+IHtcblx0XHRydW5Ib29rKGhvb2tOYW1lLCBbbmFtZSwgVmlld01vZGVsQ2xhc3MuX192bSwgcGFyYW1zXSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFZpZXdNb2RlbENsYXNzXG4gKiBAcGFyYW0ge09iamVjdD19IHZtU2NyZWVuXG4gKiBAcmV0dXJucyB7Kn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVmlld01vZGVsKFZpZXdNb2RlbENsYXNzLCB2bVNjcmVlbikge1xuXHRpZiAoVmlld01vZGVsQ2xhc3MgJiYgIVZpZXdNb2RlbENsYXNzLl9fYnVpbGRlZCkge1xuXHRcdGxldCB2bURvbSA9IG51bGw7XG5cdFx0Y29uc3Qgdm0gPSBuZXcgVmlld01vZGVsQ2xhc3Modm1TY3JlZW4pLFxuXHRcdFx0cG9zaXRpb24gPSBWaWV3TW9kZWxDbGFzcy5fX3R5cGUgfHwgJycsXG5cdFx0XHR2bVBsYWNlID0gcG9zaXRpb24gPyAkKCcjcmwtY29udGVudCAjcmwtJyArIHBvc2l0aW9uLnRvTG93ZXJDYXNlKCkpIDogbnVsbDtcblxuXHRcdFZpZXdNb2RlbENsYXNzLl9fYnVpbGRlZCA9IHRydWU7XG5cdFx0Vmlld01vZGVsQ2xhc3MuX192bSA9IHZtO1xuXG5cdFx0dm0ub25TaG93VHJpZ2dlciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHZtLm9uSGlkZVRyaWdnZXIgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHZtLnZpZXdNb2RlbE5hbWUgPSBWaWV3TW9kZWxDbGFzcy5fX25hbWU7XG5cdFx0dm0udmlld01vZGVsTmFtZXMgPSBWaWV3TW9kZWxDbGFzcy5fX25hbWVzO1xuXHRcdHZtLnZpZXdNb2RlbFRlbXBsYXRlSUQgPSBWaWV3TW9kZWxDbGFzcy5fX3RlbXBsYXRlSUQ7XG5cdFx0dm0udmlld01vZGVsUG9zaXRpb24gPSBWaWV3TW9kZWxDbGFzcy5fX3R5cGU7XG5cblx0XHRpZiAodm1QbGFjZSAmJiAxID09PSB2bVBsYWNlLmxlbmd0aCkge1xuXHRcdFx0dm1Eb20gPSAkKCc8ZGl2PjwvZGl2PicpXG5cdFx0XHRcdC5hZGRDbGFzcygncmwtdmlldy1tb2RlbCcpXG5cdFx0XHRcdC5hZGRDbGFzcygnUkwtJyArIHZtLnZpZXdNb2RlbFRlbXBsYXRlSUQpXG5cdFx0XHRcdC5oaWRlKCk7XG5cdFx0XHR2bURvbS5hcHBlbmRUbyh2bVBsYWNlKTtcblxuXHRcdFx0dm0udmlld01vZGVsRG9tID0gdm1Eb207XG5cdFx0XHRWaWV3TW9kZWxDbGFzcy5fX2RvbSA9IHZtRG9tO1xuXG5cdFx0XHRpZiAoVmlld1R5cGUuUG9wdXAgPT09IHBvc2l0aW9uKSB7XG5cdFx0XHRcdHZtLmNhbmNlbENvbW1hbmQgPSB2bS5jbG9zZUNvbW1hbmQgPSBjcmVhdGVDb21tYW5kKCgpID0+IHtcblx0XHRcdFx0XHRoaWRlU2NyZWVuUG9wdXAoVmlld01vZGVsQ2xhc3MpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHR2bS5tb2RhbFZpc2liaWxpdHkuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0dm0udmlld01vZGVsRG9tLnNob3coKTtcblx0XHRcdFx0XHRcdHZtLnN0b3JlQW5kU2V0S2V5U2NvcGUoKTtcblxuXHRcdFx0XHRcdFx0cG9wdXBWaXNpYmlsaXR5TmFtZXMucHVzaCh2bS52aWV3TW9kZWxOYW1lKTtcblx0XHRcdFx0XHRcdHZtLnZpZXdNb2RlbERvbS5jc3MoJ3otaW5kZXgnLCAzMDAwICsgcG9wdXBWaXNpYmlsaXR5TmFtZXMoKS5sZW5ndGggKyAxMCk7XG5cblx0XHRcdFx0XHRcdGlmICh2bS5vblNob3dUcmlnZ2VyKSB7XG5cdFx0XHRcdFx0XHRcdHZtLm9uU2hvd1RyaWdnZXIoIXZtLm9uU2hvd1RyaWdnZXIoKSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGRlbGVnYXRlUnVuKHZtLCAnb25TaG93V2l0aERlbGF5JywgW10sIDUwMCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGRlbGVnYXRlUnVuKHZtLCAnb25IaWRlJyk7XG5cdFx0XHRcdFx0XHRkZWxlZ2F0ZVJ1bih2bSwgJ29uSGlkZVdpdGhEZWxheScsIFtdLCA1MDApO1xuXG5cdFx0XHRcdFx0XHRpZiAodm0ub25IaWRlVHJpZ2dlcikge1xuXHRcdFx0XHRcdFx0XHR2bS5vbkhpZGVUcmlnZ2VyKCF2bS5vbkhpZGVUcmlnZ2VyKCkpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR2bS5yZXN0b3JlS2V5U2NvcGUoKTtcblxuXHRcdFx0XHRcdFx0dm1SdW5Ib29rKCd2aWV3LW1vZGVsLW9uLWhpZGUnLCBWaWV3TW9kZWxDbGFzcyk7XG5cblx0XHRcdFx0XHRcdHBvcHVwVmlzaWJpbGl0eU5hbWVzLnJlbW92ZSh2bS52aWV3TW9kZWxOYW1lKTtcblx0XHRcdFx0XHRcdHZtLnZpZXdNb2RlbERvbS5jc3MoJ3otaW5kZXgnLCAyMDAwKTtcblxuXHRcdFx0XHRcdFx0Xy5kZWxheSgoKSA9PiB2bS52aWV3TW9kZWxEb20uaGlkZSgpLCAzMDApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdHZtUnVuSG9vaygndmlldy1tb2RlbC1wcmUtYnVpbGQnLCBWaWV3TW9kZWxDbGFzcywgdm1Eb20pO1xuXG5cdFx0XHRrby5hcHBseUJpbmRpbmdBY2Nlc3NvcnNUb05vZGUoXG5cdFx0XHRcdHZtRG9tWzBdLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHJhbnNsYXRvckluaXQ6IHRydWUsXG5cdFx0XHRcdFx0dGVtcGxhdGU6ICgpID0+ICh7IG5hbWU6IHZtLnZpZXdNb2RlbFRlbXBsYXRlSUQgfSlcblx0XHRcdFx0fSxcblx0XHRcdFx0dm1cblx0XHRcdCk7XG5cblx0XHRcdGRlbGVnYXRlUnVuKHZtLCAnb25CdWlsZCcsIFt2bURvbV0pO1xuXHRcdFx0aWYgKHZtICYmIFZpZXdUeXBlLlBvcHVwID09PSBwb3NpdGlvbikge1xuXHRcdFx0XHR2bS5yZWdpc3RlclBvcHVwS2V5RG93bigpO1xuXHRcdFx0fVxuXG5cdFx0XHR2bVJ1bkhvb2soJ3ZpZXctbW9kZWwtcG9zdC1idWlsZCcsIFZpZXdNb2RlbENsYXNzLCB2bURvbSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGxvZygnQ2Fubm90IGZpbmQgdmlldyBtb2RlbCBwb3NpdGlvbjogJyArIHBvc2l0aW9uKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gVmlld01vZGVsQ2xhc3MgPyBWaWV3TW9kZWxDbGFzcy5fX3ZtIDogbnVsbDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBWaWV3TW9kZWxDbGFzc1RvU2hvd1xuICogQHBhcmFtIHtBcnJheT19IHBhcmFtc1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG93U2NyZWVuUG9wdXAoVmlld01vZGVsQ2xhc3NUb1Nob3csIHBhcmFtcyA9IFtdKSB7XG5cdGNvbnN0IE1vZGFsVmlldyA9IGdldFNjcmVlblBvcHVwKFZpZXdNb2RlbENsYXNzVG9TaG93KTtcblx0aWYgKE1vZGFsVmlldykge1xuXHRcdGJ1aWxkVmlld01vZGVsKE1vZGFsVmlldyk7XG5cblx0XHRpZiAoTW9kYWxWaWV3Ll9fdm0gJiYgTW9kYWxWaWV3Ll9fZG9tKSB7XG5cdFx0XHRkZWxlZ2F0ZVJ1bihNb2RhbFZpZXcuX192bSwgJ29uQmVmb3JlU2hvdycsIHBhcmFtcyB8fCBbXSk7XG5cblx0XHRcdE1vZGFsVmlldy5fX3ZtLm1vZGFsVmlzaWJpbGl0eSh0cnVlKTtcblxuXHRcdFx0ZGVsZWdhdGVSdW4oTW9kYWxWaWV3Ll9fdm0sICdvblNob3cnLCBwYXJhbXMgfHwgW10pO1xuXG5cdFx0XHR2bVJ1bkhvb2soJ3ZpZXctbW9kZWwtb24tc2hvdycsIE1vZGFsVmlldywgcGFyYW1zIHx8IFtdKTtcblx0XHR9XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBWaWV3TW9kZWxDbGFzc1RvU2hvd1xuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB3YXJtVXBTY3JlZW5Qb3B1cChWaWV3TW9kZWxDbGFzc1RvU2hvdykge1xuXHRjb25zdCBNb2RhbFZpZXcgPSBnZXRTY3JlZW5Qb3B1cChWaWV3TW9kZWxDbGFzc1RvU2hvdyk7XG5cdGlmIChNb2RhbFZpZXcpIHtcblx0XHRidWlsZFZpZXdNb2RlbChNb2RhbFZpZXcpO1xuXG5cdFx0aWYgKE1vZGFsVmlldy5fX3ZtICYmIE1vZGFsVmlldy5fX2RvbSkge1xuXHRcdFx0ZGVsZWdhdGVSdW4oTW9kYWxWaWV3Ll9fdm0sICdvbldhcm1VcCcpO1xuXHRcdH1cblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFZpZXdNb2RlbENsYXNzVG9TaG93XG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUG9wdXBWaXNpYmxlKFZpZXdNb2RlbENsYXNzVG9TaG93KSB7XG5cdGNvbnN0IE1vZGFsVmlldyA9IGdldFNjcmVlblBvcHVwKFZpZXdNb2RlbENsYXNzVG9TaG93KTtcblx0cmV0dXJuIE1vZGFsVmlldyAmJiBNb2RhbFZpZXcuX192bSA/IE1vZGFsVmlldy5fX3ZtLm1vZGFsVmlzaWJpbGl0eSgpIDogZmFsc2U7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHNjcmVlbk5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdWJQYXJ0XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcmVlbk9uUm91dGUoc2NyZWVuTmFtZSwgc3ViUGFydCkge1xuXHRsZXQgdm1TY3JlZW4gPSBudWxsLFxuXHRcdGlzU2FtZVNjcmVlbiA9IGZhbHNlLFxuXHRcdGNyb3NzID0gbnVsbDtcblxuXHRpZiAoJycgPT09IHBTdHJpbmcoc2NyZWVuTmFtZSkpIHtcblx0XHRzY3JlZW5OYW1lID0gZGVmYXVsdFNjcmVlbk5hbWU7XG5cdH1cblxuXHRpZiAoJycgIT09IHNjcmVlbk5hbWUpIHtcblx0XHR2bVNjcmVlbiA9IHNjcmVlbihzY3JlZW5OYW1lKTtcblx0XHRpZiAoIXZtU2NyZWVuKSB7XG5cdFx0XHR2bVNjcmVlbiA9IHNjcmVlbihkZWZhdWx0U2NyZWVuTmFtZSk7XG5cdFx0XHRpZiAodm1TY3JlZW4pIHtcblx0XHRcdFx0c3ViUGFydCA9IHNjcmVlbk5hbWUgKyAnLycgKyBzdWJQYXJ0O1xuXHRcdFx0XHRzY3JlZW5OYW1lID0gZGVmYXVsdFNjcmVlbk5hbWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKHZtU2NyZWVuICYmIHZtU2NyZWVuLl9fc3RhcnRlZCkge1xuXHRcdFx0aXNTYW1lU2NyZWVuID0gY3VycmVudFNjcmVlbiAmJiB2bVNjcmVlbiA9PT0gY3VycmVudFNjcmVlbjtcblxuXHRcdFx0aWYgKCF2bVNjcmVlbi5fX2J1aWxkZWQpIHtcblx0XHRcdFx0dm1TY3JlZW4uX19idWlsZGVkID0gdHJ1ZTtcblxuXHRcdFx0XHRpZiAoaXNOb25FbXB0eUFycmF5KHZtU2NyZWVuLnZpZXdNb2RlbHMoKSkpIHtcblx0XHRcdFx0XHRfLmVhY2godm1TY3JlZW4udmlld01vZGVscygpLCAoVmlld01vZGVsQ2xhc3MpID0+IHtcblx0XHRcdFx0XHRcdGJ1aWxkVmlld01vZGVsKFZpZXdNb2RlbENsYXNzLCB2bVNjcmVlbik7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkZWxlZ2F0ZVJ1bih2bVNjcmVlbiwgJ29uQnVpbGQnKTtcblx0XHRcdH1cblxuXHRcdFx0Xy5kZWZlcigoKSA9PiB7XG5cdFx0XHRcdC8vIGhpZGUgc2NyZWVuXG5cdFx0XHRcdGlmIChjdXJyZW50U2NyZWVuICYmICFpc1NhbWVTY3JlZW4pIHtcblx0XHRcdFx0XHRkZWxlZ2F0ZVJ1bihjdXJyZW50U2NyZWVuLCAnb25IaWRlJyk7XG5cdFx0XHRcdFx0ZGVsZWdhdGVSdW4oY3VycmVudFNjcmVlbiwgJ29uSGlkZVdpdGhEZWxheScsIFtdLCA1MDApO1xuXG5cdFx0XHRcdFx0aWYgKGN1cnJlbnRTY3JlZW4ub25IaWRlVHJpZ2dlcikge1xuXHRcdFx0XHRcdFx0Y3VycmVudFNjcmVlbi5vbkhpZGVUcmlnZ2VyKCFjdXJyZW50U2NyZWVuLm9uSGlkZVRyaWdnZXIoKSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGlzTm9uRW1wdHlBcnJheShjdXJyZW50U2NyZWVuLnZpZXdNb2RlbHMoKSkpIHtcblx0XHRcdFx0XHRcdF8uZWFjaChjdXJyZW50U2NyZWVuLnZpZXdNb2RlbHMoKSwgKFZpZXdNb2RlbENsYXNzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRWaWV3TW9kZWxDbGFzcy5fX3ZtICYmXG5cdFx0XHRcdFx0XHRcdFx0Vmlld01vZGVsQ2xhc3MuX19kb20gJiZcblx0XHRcdFx0XHRcdFx0XHRWaWV3VHlwZS5Qb3B1cCAhPT0gVmlld01vZGVsQ2xhc3MuX192bS52aWV3TW9kZWxQb3NpdGlvblxuXHRcdFx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdFx0XHRWaWV3TW9kZWxDbGFzcy5fX2RvbS5oaWRlKCk7XG5cdFx0XHRcdFx0XHRcdFx0Vmlld01vZGVsQ2xhc3MuX192bS52aWV3TW9kZWxWaXNpYmlsaXR5KGZhbHNlKTtcblxuXHRcdFx0XHRcdFx0XHRcdGRlbGVnYXRlUnVuKFZpZXdNb2RlbENsYXNzLl9fdm0sICdvbkhpZGUnKTtcblx0XHRcdFx0XHRcdFx0XHRkZWxlZ2F0ZVJ1bihWaWV3TW9kZWxDbGFzcy5fX3ZtLCAnb25IaWRlV2l0aERlbGF5JywgW10sIDUwMCk7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoVmlld01vZGVsQ2xhc3MuX192bS5vbkhpZGVUcmlnZ2VyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRWaWV3TW9kZWxDbGFzcy5fX3ZtLm9uSGlkZVRyaWdnZXIoIVZpZXdNb2RlbENsYXNzLl9fdm0ub25IaWRlVHJpZ2dlcigpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyAtLVxuXG5cdFx0XHRcdGN1cnJlbnRTY3JlZW4gPSB2bVNjcmVlbjtcblxuXHRcdFx0XHQvLyBzaG93IHNjcmVlblxuXHRcdFx0XHRpZiAoY3VycmVudFNjcmVlbiAmJiAhaXNTYW1lU2NyZWVuKSB7XG5cdFx0XHRcdFx0ZGVsZWdhdGVSdW4oY3VycmVudFNjcmVlbiwgJ29uU2hvdycpO1xuXHRcdFx0XHRcdGlmIChjdXJyZW50U2NyZWVuLm9uU2hvd1RyaWdnZXIpIHtcblx0XHRcdFx0XHRcdGN1cnJlbnRTY3JlZW4ub25TaG93VHJpZ2dlcighY3VycmVudFNjcmVlbi5vblNob3dUcmlnZ2VyKCkpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJ1bkhvb2soJ3NjcmVlbi1vbi1zaG93JywgW2N1cnJlbnRTY3JlZW4uc2NyZWVuTmFtZSgpLCBjdXJyZW50U2NyZWVuXSk7XG5cblx0XHRcdFx0XHRpZiAoaXNOb25FbXB0eUFycmF5KGN1cnJlbnRTY3JlZW4udmlld01vZGVscygpKSkge1xuXHRcdFx0XHRcdFx0Xy5lYWNoKGN1cnJlbnRTY3JlZW4udmlld01vZGVscygpLCAoVmlld01vZGVsQ2xhc3MpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0XHRcdFZpZXdNb2RlbENsYXNzLl9fdm0gJiZcblx0XHRcdFx0XHRcdFx0XHRWaWV3TW9kZWxDbGFzcy5fX2RvbSAmJlxuXHRcdFx0XHRcdFx0XHRcdFZpZXdUeXBlLlBvcHVwICE9PSBWaWV3TW9kZWxDbGFzcy5fX3ZtLnZpZXdNb2RlbFBvc2l0aW9uXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdGRlbGVnYXRlUnVuKFZpZXdNb2RlbENsYXNzLl9fdm0sICdvbkJlZm9yZVNob3cnKTtcblxuXHRcdFx0XHRcdFx0XHRcdFZpZXdNb2RlbENsYXNzLl9fZG9tLnNob3coKTtcblx0XHRcdFx0XHRcdFx0XHRWaWV3TW9kZWxDbGFzcy5fX3ZtLnZpZXdNb2RlbFZpc2liaWxpdHkodHJ1ZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRkZWxlZ2F0ZVJ1bihWaWV3TW9kZWxDbGFzcy5fX3ZtLCAnb25TaG93Jyk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKFZpZXdNb2RlbENsYXNzLl9fdm0ub25TaG93VHJpZ2dlcikge1xuXHRcdFx0XHRcdFx0XHRcdFx0Vmlld01vZGVsQ2xhc3MuX192bS5vblNob3dUcmlnZ2VyKCFWaWV3TW9kZWxDbGFzcy5fX3ZtLm9uU2hvd1RyaWdnZXIoKSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0ZGVsZWdhdGVSdW4oVmlld01vZGVsQ2xhc3MuX192bSwgJ29uU2hvd1dpdGhEZWxheScsIFtdLCAyMDApO1xuXHRcdFx0XHRcdFx0XHRcdHZtUnVuSG9vaygndmlldy1tb2RlbC1vbi1zaG93JywgVmlld01vZGVsQ2xhc3MpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gLS1cblxuXHRcdFx0XHRjcm9zcyA9IHZtU2NyZWVuICYmIHZtU2NyZWVuLl9fY3Jvc3MgPyB2bVNjcmVlbi5fX2Nyb3NzKCkgOiBudWxsO1xuXHRcdFx0XHRpZiAoY3Jvc3MpIHtcblx0XHRcdFx0XHRjcm9zcy5wYXJzZShzdWJQYXJ0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheX0gc2NyZWVuc0NsYXNzZXNcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRTY3JlZW5zKHNjcmVlbnNDbGFzc2VzKSB7XG5cdF8uZWFjaChzY3JlZW5zQ2xhc3NlcywgKENTY3JlZW4pID0+IHtcblx0XHRpZiAoQ1NjcmVlbikge1xuXHRcdFx0Y29uc3Qgdm1TY3JlZW4gPSBuZXcgQ1NjcmVlbigpLFxuXHRcdFx0XHRzY3JlZW5OYW1lID0gdm1TY3JlZW4gPyB2bVNjcmVlbi5zY3JlZW5OYW1lKCkgOiAnJztcblxuXHRcdFx0aWYgKHZtU2NyZWVuICYmICcnICE9PSBzY3JlZW5OYW1lKSB7XG5cdFx0XHRcdGlmICgnJyA9PT0gZGVmYXVsdFNjcmVlbk5hbWUpIHtcblx0XHRcdFx0XHRkZWZhdWx0U2NyZWVuTmFtZSA9IHNjcmVlbk5hbWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRTQ1JFRU5TW3NjcmVlbk5hbWVdID0gdm1TY3JlZW47XG5cdFx0XHR9XG5cdFx0fVxuXHR9KTtcblxuXHRfLmVhY2goU0NSRUVOUywgKHZtU2NyZWVuKSA9PiB7XG5cdFx0aWYgKHZtU2NyZWVuICYmICF2bVNjcmVlbi5fX3N0YXJ0ZWQgJiYgdm1TY3JlZW4uX19zdGFydCkge1xuXHRcdFx0dm1TY3JlZW4uX19zdGFydGVkID0gdHJ1ZTtcblx0XHRcdHZtU2NyZWVuLl9fc3RhcnQoKTtcblxuXHRcdFx0cnVuSG9vaygnc2NyZWVuLXByZS1zdGFydCcsIFt2bVNjcmVlbi5zY3JlZW5OYW1lKCksIHZtU2NyZWVuXSk7XG5cdFx0XHRkZWxlZ2F0ZVJ1bih2bVNjcmVlbiwgJ29uU3RhcnQnKTtcblx0XHRcdHJ1bkhvb2soJ3NjcmVlbi1wb3N0LXN0YXJ0JywgW3ZtU2NyZWVuLnNjcmVlbk5hbWUoKSwgdm1TY3JlZW5dKTtcblx0XHR9XG5cdH0pO1xuXG5cdGNvbnN0IGNyb3NzID0gY3Jvc3Nyb2Fkcy5jcmVhdGUoKTtcblx0Y3Jvc3MuYWRkUm91dGUoL14oW2EtekEtWjAtOS1dKilcXC8/KC4qKSQvLCBzY3JlZW5PblJvdXRlKTtcblxuXHRoYXNoZXIuaW5pdGlhbGl6ZWQuYWRkKGNyb3NzLnBhcnNlLCBjcm9zcyk7XG5cdGhhc2hlci5jaGFuZ2VkLmFkZChjcm9zcy5wYXJzZSwgY3Jvc3MpO1xuXHRoYXNoZXIuaW5pdCgpO1xuXG5cdF8uZGVsYXkoKCkgPT4gJGh0bWwucmVtb3ZlQ2xhc3MoJ3JsLXN0YXJ0ZWQtdHJpZ2dlcicpLmFkZENsYXNzKCdybC1zdGFydGVkJyksIDEwMCk7XG5cdF8uZGVsYXkoKCkgPT4gJGh0bWwuYWRkQ2xhc3MoJ3JsLXN0YXJ0ZWQtZGVsYXknKSwgMjAwKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc0hhc2hcbiAqIEBwYXJhbSB7Ym9vbGVhbj19IHNpbGVuY2UgPSBmYWxzZVxuICogQHBhcmFtIHtib29sZWFuPX0gcmVwbGFjZSA9IGZhbHNlXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEhhc2goaGFzaCwgc2lsZW5jZSA9IGZhbHNlLCByZXBsYWNlID0gZmFsc2UpIHtcblx0aGFzaCA9ICcjJyA9PT0gaGFzaC5zdWJzdHIoMCwgMSkgPyBoYXNoLnN1YnN0cigxKSA6IGhhc2g7XG5cdGhhc2ggPSAnLycgPT09IGhhc2guc3Vic3RyKDAsIDEpID8gaGFzaC5zdWJzdHIoMSkgOiBoYXNoO1xuXG5cdGNvbnN0IGNtZCA9IHJlcGxhY2UgPyAncmVwbGFjZUhhc2gnIDogJ3NldEhhc2gnO1xuXG5cdGlmIChzaWxlbmNlKSB7XG5cdFx0aGFzaGVyLmNoYW5nZWQuYWN0aXZlID0gZmFsc2U7XG5cdFx0aGFzaGVyW2NtZF0oaGFzaCk7XG5cdFx0aGFzaGVyLmNoYW5nZWQuYWN0aXZlID0gdHJ1ZTtcblx0fSBlbHNlIHtcblx0XHRoYXNoZXIuY2hhbmdlZC5hY3RpdmUgPSB0cnVlO1xuXHRcdGhhc2hlcltjbWRdKGhhc2gpO1xuXHRcdGhhc2hlci5zZXRIYXNoKGhhc2gpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiB2aWV3RGVjb3JhdG9yKHsgbmFtZSwgdHlwZSwgdGVtcGxhdGVJRCB9KSB7XG5cdHJldHVybiAodGFyZ2V0KSA9PiB7XG5cdFx0aWYgKHRhcmdldCkge1xuXHRcdFx0aWYgKG5hbWUpIHtcblx0XHRcdFx0aWYgKGlzQXJyYXkobmFtZSkpIHtcblx0XHRcdFx0XHR0YXJnZXQuX19uYW1lcyA9IG5hbWU7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGFyZ2V0Ll9fbmFtZXMgPSBbbmFtZV07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0YXJnZXQuX19uYW1lID0gdGFyZ2V0Ll9fbmFtZXNbMF07XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0eXBlKSB7XG5cdFx0XHRcdHRhcmdldC5fX3R5cGUgPSB0eXBlO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGVtcGxhdGVJRCkge1xuXHRcdFx0XHR0YXJnZXQuX190ZW1wbGF0ZUlEID0gdGVtcGxhdGVJRDtcblx0XHRcdH1cblx0XHR9XG5cdH07XG59XG5cbi8qKlxuICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuICogQHJldHVybnMge0Z1bmN0aW9ufVxuICovXG5mdW5jdGlvbiBwb3B1cERlY29yYXRvcih7IG5hbWUsIHRlbXBsYXRlSUQgfSkge1xuXHRyZXR1cm4gdmlld0RlY29yYXRvcih7IG5hbWUsIHR5cGU6IFZpZXdUeXBlLlBvcHVwLCB0ZW1wbGF0ZUlEIH0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbkV4ZWN1dGVcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gY29tbWFuZERlY29yYXRvcihjYW5FeGVjdXRlID0gdHJ1ZSkge1xuXHRyZXR1cm4gKHRhcmdldCwga2V5LCBkZXNjcmlwdG9yKSA9PiB7XG5cdFx0aWYgKCFrZXkgfHwgIWtleS5tYXRjaCgvQ29tbWFuZCQvKSkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGBuYW1lIFwiJHtrZXl9XCIgc2hvdWxkIGVuZCB3aXRoIENvbW1hbmQgc3VmZml4YCk7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdmFsdWUgPSBkZXNjcmlwdG9yLnZhbHVlIHx8IGRlc2NyaXB0b3IuaW5pdGlhbGl6ZXIoKSxcblx0XHRcdG5vcm1DYW5FeGVjdXRlID0gaXNGdW5jKGNhbkV4ZWN1dGUpID8gY2FuRXhlY3V0ZSA6ICgpID0+ICEhY2FuRXhlY3V0ZTtcblxuXHRcdGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiguLi5hcmdzKSB7XG5cdFx0XHRpZiAobm9ybUNhbkV4ZWN1dGUuY2FsbCh0aGlzLCB0aGlzKSkge1xuXHRcdFx0XHR2YWx1ZS5hcHBseSh0aGlzLCBhcmdzKTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cblx0XHRkZXNjcmlwdG9yLnZhbHVlLl9fcmVhbENhbkV4ZWN1dGUgPSBub3JtQ2FuRXhlY3V0ZTtcblx0XHRkZXNjcmlwdG9yLnZhbHVlLmlzQ29tbWFuZCA9IHRydWU7XG5cblx0XHRyZXR1cm4gZGVzY3JpcHRvcjtcblx0fTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge21pY2VkfSAkaXRlbXNcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn1cbiAqL1xuZnVuY3Rpb24gc2V0dGluZ3NNZW51S2V5c0hhbmRsZXIoJGl0ZW1zKSB7XG5cdHJldHVybiBfLnRocm90dGxlKChldmVudCwgaGFuZGxlcikgPT4ge1xuXHRcdGNvbnN0IHVwID0gaGFuZGxlciAmJiAndXAnID09PSBoYW5kbGVyLnNob3J0Y3V0O1xuXG5cdFx0aWYgKGV2ZW50ICYmICRpdGVtcy5sZW5ndGgpIHtcblx0XHRcdGxldCBpbmRleCA9ICRpdGVtcy5pbmRleCgkaXRlbXMuZmlsdGVyKCcuc2VsZWN0ZWQnKSk7XG5cdFx0XHRpZiAodXAgJiYgMCA8IGluZGV4KSB7XG5cdFx0XHRcdGluZGV4IC09IDE7XG5cdFx0XHR9IGVsc2UgaWYgKCF1cCAmJiBpbmRleCA8ICRpdGVtcy5sZW5ndGggLSAxKSB7XG5cdFx0XHRcdGluZGV4ICs9IDE7XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IHJlc3VsdEhhc2ggPSAkaXRlbXMuZXEoaW5kZXgpLmF0dHIoJ2hyZWYnKTtcblx0XHRcdGlmIChyZXN1bHRIYXNoKSB7XG5cdFx0XHRcdHNldEhhc2gocmVzdWx0SGFzaCwgZmFsc2UsIHRydWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSwgTWFnaWNzLlRpbWUyMDBtcyk7XG59XG5cbmV4cG9ydCB7XG5cdGNvbW1hbmREZWNvcmF0b3IsXG5cdGNvbW1hbmREZWNvcmF0b3IgYXMgY29tbWFuZCxcblx0dmlld0RlY29yYXRvcixcblx0dmlld0RlY29yYXRvciBhcyB2aWV3LFxuXHR2aWV3RGVjb3JhdG9yIGFzIHZpZXdNb2RlbCxcblx0cG9wdXBEZWNvcmF0b3IsXG5cdHBvcHVwRGVjb3JhdG9yIGFzIHBvcHVwLFxuXHRzZXR0aW5nc01lbnVLZXlzSGFuZGxlclxufTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uLCBVcGxvYWRFcnJvckNvZGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgcEludCwgaXNVbmQsIGlzTnVsbCwgaGFzLCBtaWNyb3RpbWUsIGluQXJyYXkgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgJGh0bWwsIGJBbmltYXRpb25TdXBwb3J0ZWQgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5pbXBvcnQgeyByZWxvYWQgYXMgbW9tZW50b3JSZWxvYWQgfSBmcm9tICdDb21tb24vTW9tZW50b3InO1xuaW1wb3J0IHsgbGFuZ0xpbmsgfSBmcm9tICdDb21tb24vTGlua3MnO1xuXG5sZXQgSTE4Tl9EQVRBID0gd2luZG93LnJhaW5sb29wSTE4TiB8fCB7fTtcblxuY29uc3QgSTE4Tl9OT1RJRklDQVRJT05fREFUQSA9IHt9O1xuY29uc3QgSTE4Tl9OT1RJRklDQVRJT05fTUFQID0gW1xuXHRbTm90aWZpY2F0aW9uLkludmFsaWRUb2tlbiwgJ05PVElGSUNBVElPTlMvSU5WQUxJRF9UT0tFTiddLFxuXHRbTm90aWZpY2F0aW9uLkludmFsaWRUb2tlbiwgJ05PVElGSUNBVElPTlMvSU5WQUxJRF9UT0tFTiddLFxuXHRbTm90aWZpY2F0aW9uLkF1dGhFcnJvciwgJ05PVElGSUNBVElPTlMvQVVUSF9FUlJPUiddLFxuXHRbTm90aWZpY2F0aW9uLkFjY2Vzc0Vycm9yLCAnTk9USUZJQ0FUSU9OUy9BQ0NFU1NfRVJST1InXSxcblx0W05vdGlmaWNhdGlvbi5Db25uZWN0aW9uRXJyb3IsICdOT1RJRklDQVRJT05TL0NPTk5FQ1RJT05fRVJST1InXSxcblx0W05vdGlmaWNhdGlvbi5DYXB0Y2hhRXJyb3IsICdOT1RJRklDQVRJT05TL0NBUFRDSEFfRVJST1InXSxcblx0W05vdGlmaWNhdGlvbi5Tb2NpYWxGYWNlYm9va0xvZ2luQWNjZXNzRGlzYWJsZSwgJ05PVElGSUNBVElPTlMvU09DSUFMX0ZBQ0VCT09LX0xPR0lOX0FDQ0VTU19ESVNBQkxFJ10sXG5cdFtOb3RpZmljYXRpb24uU29jaWFsVHdpdHRlckxvZ2luQWNjZXNzRGlzYWJsZSwgJ05PVElGSUNBVElPTlMvU09DSUFMX1RXSVRURVJfTE9HSU5fQUNDRVNTX0RJU0FCTEUnXSxcblx0W05vdGlmaWNhdGlvbi5Tb2NpYWxHb29nbGVMb2dpbkFjY2Vzc0Rpc2FibGUsICdOT1RJRklDQVRJT05TL1NPQ0lBTF9HT09HTEVfTE9HSU5fQUNDRVNTX0RJU0FCTEUnXSxcblx0W05vdGlmaWNhdGlvbi5Eb21haW5Ob3RBbGxvd2VkLCAnTk9USUZJQ0FUSU9OUy9ET01BSU5fTk9UX0FMTE9XRUQnXSxcblx0W05vdGlmaWNhdGlvbi5BY2NvdW50Tm90QWxsb3dlZCwgJ05PVElGSUNBVElPTlMvQUNDT1VOVF9OT1RfQUxMT1dFRCddLFxuXG5cdFtOb3RpZmljYXRpb24uQWNjb3VudFR3b0ZhY3RvckF1dGhSZXF1aXJlZCwgJ05PVElGSUNBVElPTlMvQUNDT1VOVF9UV09fRkFDVE9SX0FVVEhfUkVRVUlSRUQnXSxcblx0W05vdGlmaWNhdGlvbi5BY2NvdW50VHdvRmFjdG9yQXV0aEVycm9yLCAnTk9USUZJQ0FUSU9OUy9BQ0NPVU5UX1RXT19GQUNUT1JfQVVUSF9FUlJPUiddLFxuXG5cdFtOb3RpZmljYXRpb24uQ291bGROb3RTYXZlTmV3UGFzc3dvcmQsICdOT1RJRklDQVRJT05TL0NPVUxEX05PVF9TQVZFX05FV19QQVNTV09SRCddLFxuXHRbTm90aWZpY2F0aW9uLkN1cnJlbnRQYXNzd29yZEluY29ycmVjdCwgJ05PVElGSUNBVElPTlMvQ1VSUkVOVF9QQVNTV09SRF9JTkNPUlJFQ1QnXSxcblx0W05vdGlmaWNhdGlvbi5OZXdQYXNzd29yZFNob3J0LCAnTk9USUZJQ0FUSU9OUy9ORVdfUEFTU1dPUkRfU0hPUlQnXSxcblx0W05vdGlmaWNhdGlvbi5OZXdQYXNzd29yZFdlYWssICdOT1RJRklDQVRJT05TL05FV19QQVNTV09SRF9XRUFLJ10sXG5cdFtOb3RpZmljYXRpb24uTmV3UGFzc3dvcmRGb3JiaWRkZW4sICdOT1RJRklDQVRJT05TL05FV19QQVNTV09SRF9GT1JCSURERU5UJ10sXG5cblx0W05vdGlmaWNhdGlvbi5Db250YWN0c1N5bmNFcnJvciwgJ05PVElGSUNBVElPTlMvQ09OVEFDVFNfU1lOQ19FUlJPUiddLFxuXG5cdFtOb3RpZmljYXRpb24uQ2FudEdldE1lc3NhZ2VMaXN0LCAnTk9USUZJQ0FUSU9OUy9DQU5UX0dFVF9NRVNTQUdFX0xJU1QnXSxcblx0W05vdGlmaWNhdGlvbi5DYW50R2V0TWVzc2FnZSwgJ05PVElGSUNBVElPTlMvQ0FOVF9HRVRfTUVTU0FHRSddLFxuXHRbTm90aWZpY2F0aW9uLkNhbnREZWxldGVNZXNzYWdlLCAnTk9USUZJQ0FUSU9OUy9DQU5UX0RFTEVURV9NRVNTQUdFJ10sXG5cdFtOb3RpZmljYXRpb24uQ2FudE1vdmVNZXNzYWdlLCAnTk9USUZJQ0FUSU9OUy9DQU5UX01PVkVfTUVTU0FHRSddLFxuXHRbTm90aWZpY2F0aW9uLkNhbnRDb3B5TWVzc2FnZSwgJ05PVElGSUNBVElPTlMvQ0FOVF9NT1ZFX01FU1NBR0UnXSxcblxuXHRbTm90aWZpY2F0aW9uLkNhbnRTYXZlTWVzc2FnZSwgJ05PVElGSUNBVElPTlMvQ0FOVF9TQVZFX01FU1NBR0UnXSxcblx0W05vdGlmaWNhdGlvbi5DYW50U2VuZE1lc3NhZ2UsICdOT1RJRklDQVRJT05TL0NBTlRfU0VORF9NRVNTQUdFJ10sXG5cdFtOb3RpZmljYXRpb24uSW52YWxpZFJlY2lwaWVudHMsICdOT1RJRklDQVRJT05TL0lOVkFMSURfUkVDSVBJRU5UUyddLFxuXG5cdFtOb3RpZmljYXRpb24uQ2FudFNhdmVGaWx0ZXJzLCAnTk9USUZJQ0FUSU9OUy9DQU5UX1NBVkVfRklMVEVSUyddLFxuXHRbTm90aWZpY2F0aW9uLkNhbnRHZXRGaWx0ZXJzLCAnTk9USUZJQ0FUSU9OUy9DQU5UX0dFVF9GSUxURVJTJ10sXG5cdFtOb3RpZmljYXRpb24uRmlsdGVyc0FyZU5vdENvcnJlY3QsICdOT1RJRklDQVRJT05TL0ZJTFRFUlNfQVJFX05PVF9DT1JSRUNUJ10sXG5cblx0W05vdGlmaWNhdGlvbi5DYW50Q3JlYXRlRm9sZGVyLCAnTk9USUZJQ0FUSU9OUy9DQU5UX0NSRUFURV9GT0xERVInXSxcblx0W05vdGlmaWNhdGlvbi5DYW50UmVuYW1lRm9sZGVyLCAnTk9USUZJQ0FUSU9OUy9DQU5UX1JFTkFNRV9GT0xERVInXSxcblx0W05vdGlmaWNhdGlvbi5DYW50RGVsZXRlRm9sZGVyLCAnTk9USUZJQ0FUSU9OUy9DQU5UX0RFTEVURV9GT0xERVInXSxcblx0W05vdGlmaWNhdGlvbi5DYW50RGVsZXRlTm9uRW1wdHlGb2xkZXIsICdOT1RJRklDQVRJT05TL0NBTlRfREVMRVRFX05PTl9FTVBUWV9GT0xERVInXSxcblx0W05vdGlmaWNhdGlvbi5DYW50U3Vic2NyaWJlRm9sZGVyLCAnTk9USUZJQ0FUSU9OUy9DQU5UX1NVQlNDUklCRV9GT0xERVInXSxcblx0W05vdGlmaWNhdGlvbi5DYW50VW5zdWJzY3JpYmVGb2xkZXIsICdOT1RJRklDQVRJT05TL0NBTlRfVU5TVUJTQ1JJQkVfRk9MREVSJ10sXG5cblx0W05vdGlmaWNhdGlvbi5DYW50U2F2ZVNldHRpbmdzLCAnTk9USUZJQ0FUSU9OUy9DQU5UX1NBVkVfU0VUVElOR1MnXSxcblx0W05vdGlmaWNhdGlvbi5DYW50U2F2ZVBsdWdpblNldHRpbmdzLCAnTk9USUZJQ0FUSU9OUy9DQU5UX1NBVkVfUExVR0lOX1NFVFRJTkdTJ10sXG5cblx0W05vdGlmaWNhdGlvbi5Eb21haW5BbHJlYWR5RXhpc3RzLCAnTk9USUZJQ0FUSU9OUy9ET01BSU5fQUxSRUFEWV9FWElTVFMnXSxcblxuXHRbTm90aWZpY2F0aW9uLkNhbnRJbnN0YWxsUGFja2FnZSwgJ05PVElGSUNBVElPTlMvQ0FOVF9JTlNUQUxMX1BBQ0tBR0UnXSxcblx0W05vdGlmaWNhdGlvbi5DYW50RGVsZXRlUGFja2FnZSwgJ05PVElGSUNBVElPTlMvQ0FOVF9ERUxFVEVfUEFDS0FHRSddLFxuXHRbTm90aWZpY2F0aW9uLkludmFsaWRQbHVnaW5QYWNrYWdlLCAnTk9USUZJQ0FUSU9OUy9JTlZBTElEX1BMVUdJTl9QQUNLQUdFJ10sXG5cdFtOb3RpZmljYXRpb24uVW5zdXBwb3J0ZWRQbHVnaW5QYWNrYWdlLCAnTk9USUZJQ0FUSU9OUy9VTlNVUFBPUlRFRF9QTFVHSU5fUEFDS0FHRSddLFxuXG5cdFtOb3RpZmljYXRpb24uTGljZW5zaW5nU2VydmVySXNVbmF2YWlsYWJsZSwgJ05PVElGSUNBVElPTlMvTElDRU5TSU5HX1NFUlZFUl9JU19VTkFWQUlMQUJMRSddLFxuXHRbTm90aWZpY2F0aW9uLkxpY2Vuc2luZ0V4cGlyZWQsICdOT1RJRklDQVRJT05TL0xJQ0VOU0lOR19FWFBJUkVEJ10sXG5cdFtOb3RpZmljYXRpb24uTGljZW5zaW5nQmFubmVkLCAnTk9USUZJQ0FUSU9OUy9MSUNFTlNJTkdfQkFOTkVEJ10sXG5cblx0W05vdGlmaWNhdGlvbi5EZW1vU2VuZE1lc3NhZ2VFcnJvciwgJ05PVElGSUNBVElPTlMvREVNT19TRU5EX01FU1NBR0VfRVJST1InXSxcblx0W05vdGlmaWNhdGlvbi5EZW1vQWNjb3VudEVycm9yLCAnTk9USUZJQ0FUSU9OUy9ERU1PX0FDQ09VTlRfRVJST1InXSxcblxuXHRbTm90aWZpY2F0aW9uLkFjY291bnRBbHJlYWR5RXhpc3RzLCAnTk9USUZJQ0FUSU9OUy9BQ0NPVU5UX0FMUkVBRFlfRVhJU1RTJ10sXG5cdFtOb3RpZmljYXRpb24uQWNjb3VudERvZXNOb3RFeGlzdCwgJ05PVElGSUNBVElPTlMvQUNDT1VOVF9ET0VTX05PVF9FWElTVCddLFxuXG5cdFtOb3RpZmljYXRpb24uTWFpbFNlcnZlckVycm9yLCAnTk9USUZJQ0FUSU9OUy9NQUlMX1NFUlZFUl9FUlJPUiddLFxuXHRbTm90aWZpY2F0aW9uLkludmFsaWRJbnB1dEFyZ3VtZW50LCAnTk9USUZJQ0FUSU9OUy9JTlZBTElEX0lOUFVUX0FSR1VNRU5UJ10sXG5cdFtOb3RpZmljYXRpb24uVW5rbm93bk5vdGlmaWNhdGlvbiwgJ05PVElGSUNBVElPTlMvVU5LTk9XTl9FUlJPUiddLFxuXHRbTm90aWZpY2F0aW9uLlVua25vd25FcnJvciwgJ05PVElGSUNBVElPTlMvVU5LTk9XTl9FUlJPUiddXG5dO1xuXG5leHBvcnQgY29uc3QgdHJpZ2dlciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAqIEBwYXJhbSB7T2JqZWN0PX0gdmFsdWVMaXN0XG4gKiBAcGFyYW0ge3N0cmluZz19IGRlZmF1bFZhbHVlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaTE4bihrZXksIHZhbHVlTGlzdCwgZGVmYXVsVmFsdWUpIHtcblx0bGV0IHZhbHVlTmFtZSA9ICcnLFxuXHRcdHJlc3VsdCA9IEkxOE5fREFUQVtrZXldO1xuXG5cdGlmIChpc1VuZChyZXN1bHQpKSB7XG5cdFx0cmVzdWx0ID0gaXNVbmQoZGVmYXVsVmFsdWUpID8ga2V5IDogZGVmYXVsVmFsdWU7XG5cdH1cblxuXHRpZiAoIWlzVW5kKHZhbHVlTGlzdCkgJiYgIWlzTnVsbCh2YWx1ZUxpc3QpKSB7XG5cdFx0Zm9yICh2YWx1ZU5hbWUgaW4gdmFsdWVMaXN0KSB7XG5cdFx0XHRpZiAoaGFzKHZhbHVlTGlzdCwgdmFsdWVOYW1lKSkge1xuXHRcdFx0XHRyZXN1bHQgPSByZXN1bHQucmVwbGFjZSgnJScgKyB2YWx1ZU5hbWUgKyAnJScsIHZhbHVlTGlzdFt2YWx1ZU5hbWVdKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5jb25zdCBpMThuVG9Ob2RlID0gKGVsZW1lbnQpID0+IHtcblx0Y29uc3QgJGVsID0gJChlbGVtZW50KSxcblx0XHRrZXkgPSAkZWwuZGF0YSgnaTE4bicpO1xuXG5cdGlmIChrZXkpIHtcblx0XHRpZiAoJ1snID09PSBrZXkuc3Vic3RyKDAsIDEpKSB7XG5cdFx0XHRzd2l0Y2ggKGtleS5zdWJzdHIoMCwgNikpIHtcblx0XHRcdFx0Y2FzZSAnW2h0bWxdJzpcblx0XHRcdFx0XHQkZWwuaHRtbChpMThuKGtleS5zdWJzdHIoNikpKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnW3BsYWNlJzpcblx0XHRcdFx0XHQkZWwuYXR0cigncGxhY2Vob2xkZXInLCBpMThuKGtleS5zdWJzdHIoMTMpKSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgJ1t0aXRsZSc6XG5cdFx0XHRcdFx0JGVsLmF0dHIoJ3RpdGxlJywgaTE4bihrZXkuc3Vic3RyKDcpKSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0JGVsLnRleHQoaTE4bihrZXkpKTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtPYmplY3R9IGVsZW1lbnRzXG4gKiBAcGFyYW0ge2Jvb2xlYW49fSBhbmltYXRlID0gZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGkxOG5Ub05vZGVzKGVsZW1lbnRzLCBhbmltYXRlID0gZmFsc2UpIHtcblx0Xy5kZWZlcigoKSA9PiB7XG5cdFx0JCgnW2RhdGEtaTE4bl0nLCBlbGVtZW50cykuZWFjaCgoaW5kZXgsIGl0ZW0pID0+IHtcblx0XHRcdGkxOG5Ub05vZGUoaXRlbSk7XG5cdFx0fSk7XG5cblx0XHRpZiAoYW5pbWF0ZSAmJiBiQW5pbWF0aW9uU3VwcG9ydGVkKSB7XG5cdFx0XHQkKCcuaTE4bi1hbmltYXRpb25bZGF0YS1pMThuXScsIGVsZW1lbnRzKS5sZXR0ZXJmeCh7XG5cdFx0XHRcdCdmeCc6ICdmYWxsIGZhZGUnLFxuXHRcdFx0XHQnYmFja3dhcmRzJzogZmFsc2UsXG5cdFx0XHRcdCd0aW1pbmcnOiA1MCxcblx0XHRcdFx0J2Z4X2R1cmF0aW9uJzogJzUwbXMnLFxuXHRcdFx0XHQnbGV0dGVyX2VuZCc6ICdyZXN0b3JlJyxcblx0XHRcdFx0J2VsZW1lbnRfZW5kJzogJ3Jlc3RvcmUnXG5cdFx0XHR9KTtcblx0XHR9XG5cdH0pO1xufVxuXG5jb25zdCByZWxvYWREYXRhID0gKCkgPT4ge1xuXHRpZiAod2luZG93LnJhaW5sb29wSTE4Tikge1xuXHRcdEkxOE5fREFUQSA9IHdpbmRvdy5yYWlubG9vcEkxOE4gfHwge307XG5cblx0XHRpMThuVG9Ob2Rlcyh3aW5kb3cuZG9jdW1lbnQsIHRydWUpO1xuXG5cdFx0bW9tZW50b3JSZWxvYWQoKTtcblx0XHR0cmlnZ2VyKCF0cmlnZ2VyKCkpO1xuXHR9XG5cblx0d2luZG93LnJhaW5sb29wSTE4TiA9IG51bGw7XG59O1xuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdE5vdGlmaWNhdGlvbkxhbmd1YWdlKCkge1xuXHRJMThOX05PVElGSUNBVElPTl9NQVAuZm9yRWFjaCgoaXRlbSkgPT4ge1xuXHRcdEkxOE5fTk9USUZJQ0FUSU9OX0RBVEFbaXRlbVswXV0gPSBpMThuKGl0ZW1bMV0pO1xuXHR9KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzdGFydENhbGxiYWNrXG4gKiBAcGFyYW0ge0Z1bmN0aW9uPX0gbGFuZ0NhbGxiYWNrID0gbnVsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaW5pdE9uU3RhcnRPckxhbmdDaGFuZ2Uoc3RhcnRDYWxsYmFjaywgbGFuZ0NhbGxiYWNrID0gbnVsbCkge1xuXHRpZiAoc3RhcnRDYWxsYmFjaykge1xuXHRcdHN0YXJ0Q2FsbGJhY2soKTtcblx0fVxuXG5cdGlmIChsYW5nQ2FsbGJhY2spIHtcblx0XHR0cmlnZ2VyLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRpZiAoc3RhcnRDYWxsYmFjaykge1xuXHRcdFx0XHRzdGFydENhbGxiYWNrKCk7XG5cdFx0XHR9XG5cdFx0XHRpZiAobGFuZ0NhbGxiYWNrKSB7XG5cdFx0XHRcdGxhbmdDYWxsYmFjaygpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9IGVsc2UgaWYgKHN0YXJ0Q2FsbGJhY2spIHtcblx0XHR0cmlnZ2VyLnN1YnNjcmliZShzdGFydENhbGxiYWNrKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBjb2RlXG4gKiBAcGFyYW0geyo9fSBtZXNzYWdlID0gJydcbiAqIEBwYXJhbSB7Kj19IGRlZkNvZGUgPSBudWxsXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Tm90aWZpY2F0aW9uKGNvZGUsIG1lc3NhZ2UgPSAnJywgZGVmQ29kZSA9IG51bGwpIHtcblx0Y29kZSA9IHdpbmRvdy5wYXJzZUludChjb2RlLCAxMCkgfHwgMDtcblx0aWYgKE5vdGlmaWNhdGlvbi5DbGllbnRWaWV3RXJyb3IgPT09IGNvZGUgJiYgbWVzc2FnZSkge1xuXHRcdHJldHVybiBtZXNzYWdlO1xuXHR9XG5cblx0ZGVmQ29kZSA9IGRlZkNvZGUgPyB3aW5kb3cucGFyc2VJbnQoZGVmQ29kZSwgMTApIHx8IDAgOiAwO1xuXHRyZXR1cm4gaXNVbmQoSTE4Tl9OT1RJRklDQVRJT05fREFUQVtjb2RlXSlcblx0XHQ/IGRlZkNvZGUgJiYgaXNVbmQoSTE4Tl9OT1RJRklDQVRJT05fREFUQVtkZWZDb2RlXSlcblx0XHRcdD8gSTE4Tl9OT1RJRklDQVRJT05fREFUQVtkZWZDb2RlXVxuXHRcdFx0OiAnJ1xuXHRcdDogSTE4Tl9OT1RJRklDQVRJT05fREFUQVtjb2RlXTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gcmVzcG9uc2VcbiAqIEBwYXJhbSB7bnVtYmVyfSBkZWZDb2RlID0gTm90aWZpY2F0aW9uLlVua25vd25Ob3RpZmljYXRpb25cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXROb3RpZmljYXRpb25Gcm9tUmVzcG9uc2UocmVzcG9uc2UsIGRlZkNvZGUgPSBOb3RpZmljYXRpb24uVW5rbm93bk5vdGlmaWNhdGlvbikge1xuXHRyZXR1cm4gcmVzcG9uc2UgJiYgcmVzcG9uc2UuRXJyb3JDb2RlXG5cdFx0PyBnZXROb3RpZmljYXRpb24ocEludChyZXNwb25zZS5FcnJvckNvZGUpLCByZXNwb25zZS5FcnJvck1lc3NhZ2UgfHwgJycpXG5cdFx0OiBnZXROb3RpZmljYXRpb24oZGVmQ29kZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSBjb2RlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXBsb2FkRXJyb3JEZXNjQnlDb2RlKGNvZGUpIHtcblx0bGV0IHJlc3VsdCA9ICcnO1xuXHRzd2l0Y2ggKHdpbmRvdy5wYXJzZUludChjb2RlLCAxMCkgfHwgMCkge1xuXHRcdGNhc2UgVXBsb2FkRXJyb3JDb2RlLkZpbGVJc1Rvb0JpZzpcblx0XHRcdHJlc3VsdCA9IGkxOG4oJ1VQTE9BRC9FUlJPUl9GSUxFX0lTX1RPT19CSUcnKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgVXBsb2FkRXJyb3JDb2RlLkZpbGVQYXJ0aWFsbHlVcGxvYWRlZDpcblx0XHRcdHJlc3VsdCA9IGkxOG4oJ1VQTE9BRC9FUlJPUl9GSUxFX1BBUlRJQUxMWV9VUExPQURFRCcpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVcGxvYWRFcnJvckNvZGUuRmlsZU5vVXBsb2FkZWQ6XG5cdFx0XHRyZXN1bHQgPSBpMThuKCdVUExPQUQvRVJST1JfTk9fRklMRV9VUExPQURFRCcpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVcGxvYWRFcnJvckNvZGUuTWlzc2luZ1RlbXBGb2xkZXI6XG5cdFx0XHRyZXN1bHQgPSBpMThuKCdVUExPQUQvRVJST1JfTUlTU0lOR19URU1QX0ZPTERFUicpO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBVcGxvYWRFcnJvckNvZGUuRmlsZU9uU2F2ZWluZ0Vycm9yOlxuXHRcdFx0cmVzdWx0ID0gaTE4bignVVBMT0FEL0VSUk9SX09OX1NBVklOR19GSUxFJyk7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIFVwbG9hZEVycm9yQ29kZS5GaWxlVHlwZTpcblx0XHRcdHJlc3VsdCA9IGkxOG4oJ1VQTE9BRC9FUlJPUl9GSUxFX1RZUEUnKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXN1bHQgPSBpMThuKCdVUExPQUQvRVJST1JfVU5LTk9XTicpO1xuXHRcdFx0YnJlYWs7XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYWRtaW5cbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVsb2FkKGFkbWluLCBsYW5ndWFnZSkge1xuXHRjb25zdCBzdGFydCA9IG1pY3JvdGltZSgpO1xuXG5cdCRodG1sLmFkZENsYXNzKCdybC1jaGFuZ2luZy1sYW5ndWFnZScpO1xuXG5cdHJldHVybiBuZXcgd2luZG93LlByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdCQuYWpheCh7XG5cdFx0XHR1cmw6IGxhbmdMaW5rKGxhbmd1YWdlLCBhZG1pbiksXG5cdFx0XHRkYXRhVHlwZTogJ3NjcmlwdCcsXG5cdFx0XHRjYWNoZTogdHJ1ZVxuXHRcdH0pLnRoZW4oXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdF8uZGVsYXkoXG5cdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0cmVsb2FkRGF0YSgpO1xuXG5cdFx0XHRcdFx0XHRjb25zdCBpc1J0bCA9IC0xIDwgaW5BcnJheSgobGFuZ3VhZ2UgfHwgJycpLnRvTG93ZXJDYXNlKCksIFsnYXInLCAnYXJfc2EnLCAnaGUnLCAnaGVfaGUnLCAndXInLCAndXJfaXInXSk7XG5cblx0XHRcdFx0XHRcdCRodG1sXG5cdFx0XHRcdFx0XHRcdC5yZW1vdmVDbGFzcygncmwtY2hhbmdpbmctbGFuZ3VhZ2UnKVxuXHRcdFx0XHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ3JsLXJ0bCBybC1sdHInKVxuXHRcdFx0XHRcdFx0XHQvLyAuYXR0cignZGlyJywgaXNSdGwgPyAncnRsJyA6ICdsdHInKVxuXHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoaXNSdGwgPyAncmwtcnRsJyA6ICdybC1sdHInKTtcblxuXHRcdFx0XHRcdFx0cmVzb2x2ZSgpO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0NTAwIDwgbWljcm90aW1lKCkgLSBzdGFydCA/IDEgOiA1MDBcblx0XHRcdFx0KTtcblx0XHRcdH0sXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdCRodG1sLnJlbW92ZUNsYXNzKCdybC1jaGFuZ2luZy1sYW5ndWFnZScpO1xuXHRcdFx0XHR3aW5kb3cucmFpbmxvb3BJMThOID0gbnVsbDtcblx0XHRcdFx0cmVqZWN0KCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0fSk7XG59XG5cbi8vIGluaXQgc2VjdGlvblxuJGh0bWwuYWRkQ2xhc3MoJ3JsLScgKyAoJGh0bWwuYXR0cignZGlyJykgfHwgJ2x0cicpKTtcbiIsImltcG9ydCBfT2JqZWN0JGNyZWF0ZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzL29iamVjdC9jcmVhdGVcIjtcbmltcG9ydCBzZXRQcm90b3R5cGVPZiBmcm9tIFwiLi9zZXRQcm90b3R5cGVPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2luaGVyaXRzTG9vc2Uoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHtcbiAgc3ViQ2xhc3MucHJvdG90eXBlID0gX09iamVjdCRjcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpO1xuICBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzcztcbiAgc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufSIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgXyBmcm9tICdfJztcblxuaW1wb3J0IHsgc2V0dGluZ3NHZXQgfSBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxuaW1wb3J0IHsgRm9sZGVyVHlwZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBVTlVTRURfT1BUSU9OX1ZBTFVFIH0gZnJvbSAnQ29tbW9uL0NvbnN0cyc7XG5pbXBvcnQgeyBpc0FycmF5LCBmb2xkZXJMaXN0T3B0aW9uc0J1aWxkZXIgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgZ2V0Rm9sZGVySW5ib3hOYW1lLCBnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0IH0gZnJvbSAnQ29tbW9uL0NhY2hlJztcblxuaW1wb3J0IHsgbW9tZW50Tm93VW5peCB9IGZyb20gJ0NvbW1vbi9Nb21lbnRvcic7XG5cbmNsYXNzIEZvbGRlclVzZXJTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuZGlzcGxheVNwZWNTZXR0aW5nID0ga28ub2JzZXJ2YWJsZSh0cnVlKTtcblxuXHRcdHRoaXMuc2VudEZvbGRlciA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuZHJhZnRGb2xkZXIgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnNwYW1Gb2xkZXIgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnRyYXNoRm9sZGVyID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5hcmNoaXZlRm9sZGVyID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLm5hbWVzcGFjZSA9ICcnO1xuXG5cdFx0dGhpcy5mb2xkZXJMaXN0ID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblx0XHR0aGlzLmZvbGRlckxpc3Qub3B0aW1pemVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5mb2xkZXJMaXN0LmVycm9yID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmZvbGRlcnNMb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5mb2xkZXJzQ3JlYXRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmZvbGRlcnNEZWxldGluZyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZm9sZGVyc1JlbmFtaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmZvbGRlcnNJbmJveFVucmVhZENvdW50ID0ga28ub2JzZXJ2YWJsZSgwKTtcblxuXHRcdHRoaXMuY3VycmVudEZvbGRlciA9IGtvLm9ic2VydmFibGUobnVsbCkuZXh0ZW5kKHsgdG9nZ2xlU3Vic2NyaWJlUHJvcGVydHk6IFt0aGlzLCAnc2VsZWN0ZWQnXSB9KTtcblxuXHRcdHRoaXMuc2lldmVBbGxvd0ZpbGVpbnRvSW5ib3ggPSAhIXNldHRpbmdzR2V0KCdTaWV2ZUFsbG93RmlsZWludG9JbmJveCcpO1xuXG5cdFx0dGhpcy5jb21wdXRlcnMoKTtcblx0XHR0aGlzLnN1YnNjcmliZXJzKCk7XG5cdH1cblxuXHRjb21wdXRlcnMoKSB7XG5cdFx0dGhpcy5kcmFmdEZvbGRlck5vdEVuYWJsZWQgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+ICcnID09PSB0aGlzLmRyYWZ0Rm9sZGVyKCkgfHwgVU5VU0VEX09QVElPTl9WQUxVRSA9PT0gdGhpcy5kcmFmdEZvbGRlcigpXG5cdFx0KTtcblxuXHRcdHRoaXMuZm9sZGVyc0xpc3RXaXRoU2luZ2xlSW5ib3hSb290Rm9sZGVyID0ga28uY29tcHV0ZWQoXG5cdFx0XHQoKSA9PiAhXy5maW5kKHRoaXMuZm9sZGVyTGlzdCgpLCAoZm9sZGVyKSA9PiBmb2xkZXIgJiYgIWZvbGRlci5pc1N5c3RlbUZvbGRlcigpICYmIGZvbGRlci52aXNpYmxlKCkpXG5cdFx0KTtcblxuXHRcdHRoaXMuY3VycmVudEZvbGRlckZ1bGxOYW1lUmF3ID0ga28uY29tcHV0ZWQoKCkgPT4gKHRoaXMuY3VycmVudEZvbGRlcigpID8gdGhpcy5jdXJyZW50Rm9sZGVyKCkuZnVsbE5hbWVSYXcgOiAnJykpO1xuXG5cdFx0dGhpcy5jdXJyZW50Rm9sZGVyRnVsbE5hbWUgPSBrby5jb21wdXRlZCgoKSA9PiAodGhpcy5jdXJyZW50Rm9sZGVyKCkgPyB0aGlzLmN1cnJlbnRGb2xkZXIoKS5mdWxsTmFtZSA6ICcnKSk7XG5cdFx0dGhpcy5jdXJyZW50Rm9sZGVyRnVsbE5hbWVIYXNoID0ga28uY29tcHV0ZWQoKCkgPT4gKHRoaXMuY3VycmVudEZvbGRlcigpID8gdGhpcy5jdXJyZW50Rm9sZGVyKCkuZnVsbE5hbWVIYXNoIDogJycpKTtcblxuXHRcdHRoaXMuZm9sZGVyc0NoYW5naW5nID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgbG9hZGluZyA9IHRoaXMuZm9sZGVyc0xvYWRpbmcoKSxcblx0XHRcdFx0Y3JlYXRpbmcgPSB0aGlzLmZvbGRlcnNDcmVhdGluZygpLFxuXHRcdFx0XHRkZWxldGluZyA9IHRoaXMuZm9sZGVyc0RlbGV0aW5nKCksXG5cdFx0XHRcdHJlbmFtaW5nID0gdGhpcy5mb2xkZXJzUmVuYW1pbmcoKTtcblxuXHRcdFx0cmV0dXJuIGxvYWRpbmcgfHwgY3JlYXRpbmcgfHwgZGVsZXRpbmcgfHwgcmVuYW1pbmc7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmZvbGRlckxpc3RTeXN0ZW1OYW1lcyA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGxpc3QgPSBbZ2V0Rm9sZGVySW5ib3hOYW1lKCldLFxuXHRcdFx0XHRmb2xkZXJzID0gdGhpcy5mb2xkZXJMaXN0KCksXG5cdFx0XHRcdHNlbnRGb2xkZXIgPSB0aGlzLnNlbnRGb2xkZXIoKSxcblx0XHRcdFx0ZHJhZnRGb2xkZXIgPSB0aGlzLmRyYWZ0Rm9sZGVyKCksXG5cdFx0XHRcdHNwYW1Gb2xkZXIgPSB0aGlzLnNwYW1Gb2xkZXIoKSxcblx0XHRcdFx0dHJhc2hGb2xkZXIgPSB0aGlzLnRyYXNoRm9sZGVyKCksXG5cdFx0XHRcdGFyY2hpdmVGb2xkZXIgPSB0aGlzLmFyY2hpdmVGb2xkZXIoKTtcblxuXHRcdFx0aWYgKGlzQXJyYXkoZm9sZGVycykgJiYgMCA8IGZvbGRlcnMubGVuZ3RoKSB7XG5cdFx0XHRcdGlmICgnJyAhPT0gc2VudEZvbGRlciAmJiBVTlVTRURfT1BUSU9OX1ZBTFVFICE9PSBzZW50Rm9sZGVyKSB7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKHNlbnRGb2xkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgnJyAhPT0gZHJhZnRGb2xkZXIgJiYgVU5VU0VEX09QVElPTl9WQUxVRSAhPT0gZHJhZnRGb2xkZXIpIHtcblx0XHRcdFx0XHRsaXN0LnB1c2goZHJhZnRGb2xkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgnJyAhPT0gc3BhbUZvbGRlciAmJiBVTlVTRURfT1BUSU9OX1ZBTFVFICE9PSBzcGFtRm9sZGVyKSB7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKHNwYW1Gb2xkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgnJyAhPT0gdHJhc2hGb2xkZXIgJiYgVU5VU0VEX09QVElPTl9WQUxVRSAhPT0gdHJhc2hGb2xkZXIpIHtcblx0XHRcdFx0XHRsaXN0LnB1c2godHJhc2hGb2xkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgnJyAhPT0gYXJjaGl2ZUZvbGRlciAmJiBVTlVTRURfT1BUSU9OX1ZBTFVFICE9PSBhcmNoaXZlRm9sZGVyKSB7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKGFyY2hpdmVGb2xkZXIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBsaXN0O1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5mb2xkZXJMaXN0U3lzdGVtID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdF8uY29tcGFjdChfLm1hcCh0aGlzLmZvbGRlckxpc3RTeXN0ZW1OYW1lcygpLCAobmFtZSkgPT4gZ2V0Rm9sZGVyRnJvbUNhY2hlTGlzdChuYW1lKSkpXG5cdFx0KTtcblxuXHRcdHRoaXMuZm9sZGVyTWVudUZvck1vdmUgPSBrby5jb21wdXRlZCgoKSA9PlxuXHRcdFx0Zm9sZGVyTGlzdE9wdGlvbnNCdWlsZGVyKFxuXHRcdFx0XHR0aGlzLmZvbGRlckxpc3RTeXN0ZW0oKSxcblx0XHRcdFx0dGhpcy5mb2xkZXJMaXN0KCksXG5cdFx0XHRcdFt0aGlzLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpXSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0KGl0ZW0pID0+IChpdGVtID8gaXRlbS5sb2NhbE5hbWUoKSA6ICcnKVxuXHRcdFx0KVxuXHRcdCk7XG5cblx0XHR0aGlzLmZvbGRlck1lbnVGb3JGaWx0ZXJzID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdGZvbGRlckxpc3RPcHRpb25zQnVpbGRlcihcblx0XHRcdFx0dGhpcy5mb2xkZXJMaXN0U3lzdGVtKCksXG5cdFx0XHRcdHRoaXMuZm9sZGVyTGlzdCgpLFxuXHRcdFx0XHRbdGhpcy5zaWV2ZUFsbG93RmlsZWludG9JbmJveCA/ICcnIDogJ0lOQk9YJ10sXG5cdFx0XHRcdFtbJycsICcnXV0sXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdG51bGwsXG5cdFx0XHRcdChpdGVtKSA9PiAoaXRlbSA/IGl0ZW0ubG9jYWxOYW1lKCkgOiAnJylcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cblx0c3Vic2NyaWJlcnMoKSB7XG5cdFx0Y29uc3QgZlJlbW92ZVN5c3RlbUZvbGRlclR5cGUgPSAob2JzZXJ2YWJsZSkgPT4gKCkgPT4ge1xuXHRcdFx0Y29uc3QgZm9sZGVyID0gZ2V0Rm9sZGVyRnJvbUNhY2hlTGlzdChvYnNlcnZhYmxlKCkpO1xuXHRcdFx0aWYgKGZvbGRlcikge1xuXHRcdFx0XHRmb2xkZXIudHlwZShGb2xkZXJUeXBlLlVzZXIpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0Y29uc3QgZlNldFN5c3RlbUZvbGRlclR5cGUgPSAodHlwZSkgPT4gKHZhbHVlKSA9PiB7XG5cdFx0XHRjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0KHZhbHVlKTtcblx0XHRcdGlmIChmb2xkZXIpIHtcblx0XHRcdFx0Zm9sZGVyLnR5cGUodHlwZSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMuc2VudEZvbGRlci5zdWJzY3JpYmUoZlJlbW92ZVN5c3RlbUZvbGRlclR5cGUodGhpcy5zZW50Rm9sZGVyKSwgdGhpcywgJ2JlZm9yZUNoYW5nZScpO1xuXHRcdHRoaXMuZHJhZnRGb2xkZXIuc3Vic2NyaWJlKGZSZW1vdmVTeXN0ZW1Gb2xkZXJUeXBlKHRoaXMuZHJhZnRGb2xkZXIpLCB0aGlzLCAnYmVmb3JlQ2hhbmdlJyk7XG5cdFx0dGhpcy5zcGFtRm9sZGVyLnN1YnNjcmliZShmUmVtb3ZlU3lzdGVtRm9sZGVyVHlwZSh0aGlzLnNwYW1Gb2xkZXIpLCB0aGlzLCAnYmVmb3JlQ2hhbmdlJyk7XG5cdFx0dGhpcy50cmFzaEZvbGRlci5zdWJzY3JpYmUoZlJlbW92ZVN5c3RlbUZvbGRlclR5cGUodGhpcy50cmFzaEZvbGRlciksIHRoaXMsICdiZWZvcmVDaGFuZ2UnKTtcblx0XHR0aGlzLmFyY2hpdmVGb2xkZXIuc3Vic2NyaWJlKGZSZW1vdmVTeXN0ZW1Gb2xkZXJUeXBlKHRoaXMuYXJjaGl2ZUZvbGRlciksIHRoaXMsICdiZWZvcmVDaGFuZ2UnKTtcblxuXHRcdHRoaXMuc2VudEZvbGRlci5zdWJzY3JpYmUoZlNldFN5c3RlbUZvbGRlclR5cGUoRm9sZGVyVHlwZS5TZW50SXRlbXMpLCB0aGlzKTtcblx0XHR0aGlzLmRyYWZ0Rm9sZGVyLnN1YnNjcmliZShmU2V0U3lzdGVtRm9sZGVyVHlwZShGb2xkZXJUeXBlLkRyYWZ0KSwgdGhpcyk7XG5cdFx0dGhpcy5zcGFtRm9sZGVyLnN1YnNjcmliZShmU2V0U3lzdGVtRm9sZGVyVHlwZShGb2xkZXJUeXBlLlNwYW0pLCB0aGlzKTtcblx0XHR0aGlzLnRyYXNoRm9sZGVyLnN1YnNjcmliZShmU2V0U3lzdGVtRm9sZGVyVHlwZShGb2xkZXJUeXBlLlRyYXNoKSwgdGhpcyk7XG5cdFx0dGhpcy5hcmNoaXZlRm9sZGVyLnN1YnNjcmliZShmU2V0U3lzdGVtRm9sZGVyVHlwZShGb2xkZXJUeXBlLkFyY2hpdmUpLCB0aGlzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9XG5cdCAqL1xuXHRnZXROZXh0Rm9sZGVyTmFtZXMoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gW10sXG5cdFx0XHRsaW1pdCA9IDUsXG5cdFx0XHR1dGMgPSBtb21lbnROb3dVbml4KCksXG5cdFx0XHR0aW1lb3V0ID0gdXRjIC0gNjAgKiA1LFxuXHRcdFx0dGltZW91dHMgPSBbXSxcblx0XHRcdGluYm94Rm9sZGVyTmFtZSA9IGdldEZvbGRlckluYm94TmFtZSgpLFxuXHRcdFx0ZlNlYXJjaEZ1bmN0aW9uID0gKGxpc3QpID0+IHtcblx0XHRcdFx0Xy5lYWNoKGxpc3QsIChmb2xkZXIpID0+IHtcblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRmb2xkZXIgJiZcblx0XHRcdFx0XHRcdGluYm94Rm9sZGVyTmFtZSAhPT0gZm9sZGVyLmZ1bGxOYW1lUmF3ICYmXG5cdFx0XHRcdFx0XHRmb2xkZXIuc2VsZWN0YWJsZSAmJlxuXHRcdFx0XHRcdFx0Zm9sZGVyLmV4aXN0ZW4gJiZcblx0XHRcdFx0XHRcdHRpbWVvdXQgPiBmb2xkZXIuaW50ZXJ2YWwgJiZcblx0XHRcdFx0XHRcdChmb2xkZXIuaXNTeXN0ZW1Gb2xkZXIoKSB8fCAoZm9sZGVyLnN1YlNjcmliZWQoKSAmJiBmb2xkZXIuY2hlY2thYmxlKCkpKVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0dGltZW91dHMucHVzaChbZm9sZGVyLmludGVydmFsLCBmb2xkZXIuZnVsbE5hbWVSYXddKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoZm9sZGVyICYmIDAgPCBmb2xkZXIuc3ViRm9sZGVycygpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0ZlNlYXJjaEZ1bmN0aW9uKGZvbGRlci5zdWJGb2xkZXJzKCkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9O1xuXG5cdFx0ZlNlYXJjaEZ1bmN0aW9uKHRoaXMuZm9sZGVyTGlzdCgpKTtcblxuXHRcdHRpbWVvdXRzLnNvcnQoKGEsIGIpID0+IHtcblx0XHRcdGlmIChhWzBdIDwgYlswXSkge1xuXHRcdFx0XHRyZXR1cm4gLTE7XG5cdFx0XHR9IGVsc2UgaWYgKGFbMF0gPiBiWzBdKSB7XG5cdFx0XHRcdHJldHVybiAxO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9KTtcblxuXHRcdF8uZmluZCh0aW1lb3V0cywgKGFJdGVtKSA9PiB7XG5cdFx0XHRjb25zdCBmb2xkZXIgPSBnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0KGFJdGVtWzFdKTtcblx0XHRcdGlmIChmb2xkZXIpIHtcblx0XHRcdFx0Zm9sZGVyLmludGVydmFsID0gdXRjO1xuXHRcdFx0XHRyZXN1bHQucHVzaChhSXRlbVsxXSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBsaW1pdCA8PSByZXN1bHQubGVuZ3RoO1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIF8udW5pcShyZXN1bHQpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBGb2xkZXJVc2VyU3RvcmUoKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvZmluZFwiKTsiLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgJCBmcm9tICckJztcblxuaW1wb3J0IHsgTWFnaWNzLCBMYXlvdXQsIEZvY3VzZWQsIE1lc3NhZ2VTZXRBY3Rpb24sIFN0b3JhZ2VSZXN1bHRUeXBlLCBOb3RpZmljYXRpb24gfSBmcm9tICdDb21tb24vRW51bXMnO1xuXG5pbXBvcnQge1xuXHR0cmltLFxuXHRpc05vcm1hbCxcblx0aXNBcnJheSxcblx0aW5BcnJheSxcblx0cEludCxcblx0cFN0cmluZyxcblx0cGxhaW5Ub0h0bWwsXG5cdHdpbmRvd1Jlc2l6ZSxcblx0ZmluZEVtYWlsQW5kTGlua3MsXG5cdGdldFJlYWxIZWlnaHRcbn0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IHtcblx0Z2V0Rm9sZGVySW5ib3hOYW1lLFxuXHRhZGROZXdNZXNzYWdlQ2FjaGUsXG5cdHNldEZvbGRlclVpZE5leHQsXG5cdGdldEZvbGRlckZyb21DYWNoZUxpc3QsXG5cdHNldEZvbGRlckhhc2gsXG5cdGluaXRNZXNzYWdlRmxhZ3NGcm9tQ2FjaGUsXG5cdGFkZFJlcXVlc3RlZE1lc3NhZ2UsXG5cdGNsZWFyTWVzc2FnZUZsYWdzRnJvbUNhY2hlQnlGb2xkZXIsXG5cdGhhc05ld01lc3NhZ2VBbmRSZW1vdmVGcm9tQ2FjaGUsXG5cdHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZSxcblx0Y2xlYXJOZXdNZXNzYWdlQ2FjaGVcbn0gZnJvbSAnQ29tbW9uL0NhY2hlJztcblxuaW1wb3J0IHsgTUVTU0FHRV9CT0RZX0NBQ0hFX0xJTUlUIH0gZnJvbSAnQ29tbW9uL0NvbnN0cyc7XG5pbXBvcnQgeyBkYXRhIGFzIEdsb2JhbHNEYXRhLCAkZGl2IH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0IHsgbWFpbEJveCwgbm90aWZpY2F0aW9uTWFpbEljb24gfSBmcm9tICdDb21tb24vTGlua3MnO1xuaW1wb3J0IHsgaTE4biwgZ2V0Tm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuaW1wb3J0IHsgbW9tZW50Tm93VW5peCB9IGZyb20gJ0NvbW1vbi9Nb21lbnRvcic7XG5cbmltcG9ydCAqIGFzIE1lc3NhZ2VIZWxwZXIgZnJvbSAnSGVscGVyL01lc3NhZ2UnO1xuaW1wb3J0IHsgTWVzc2FnZU1vZGVsIH0gZnJvbSAnTW9kZWwvTWVzc2FnZSc7XG5cbmltcG9ydCB7IHNldEhhc2ggfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5cbmltcG9ydCBBcHBTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BcHAnO1xuaW1wb3J0IEFjY291bnRTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BY2NvdW50JztcbmltcG9ydCBGb2xkZXJTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Gb2xkZXInO1xuaW1wb3J0IFBncFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1BncCc7XG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9TZXR0aW5ncyc7XG5pbXBvcnQgTm90aWZpY2F0aW9uU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvTm90aWZpY2F0aW9uJztcblxuaW1wb3J0IHsgZ2V0QXBwIH0gZnJvbSAnSGVscGVyL0FwcHMvVXNlcic7XG5cbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmNsYXNzIE1lc3NhZ2VVc2VyU3RvcmUge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnN0YXRpY01lc3NhZ2UgPSBuZXcgTWVzc2FnZU1vZGVsKCk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0ID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKS5leHRlbmQoeyByYXRlTGltaXQ6IDAgfSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0Q291bnQgPSBrby5vYnNlcnZhYmxlKDApO1xuXHRcdHRoaXMubWVzc2FnZUxpc3RTZWFyY2ggPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0VGhyZWFkVWlkID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdFBhZ2UgPSBrby5vYnNlcnZhYmxlKDEpO1xuXHRcdHRoaXMubWVzc2FnZUxpc3RQYWdlQmVmb3JlVGhyZWFkID0ga28ub2JzZXJ2YWJsZSgxKTtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0RXJyb3IgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3RFbmRGb2xkZXIgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0RW5kU2VhcmNoID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdEVuZFRocmVhZFVpZCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMubWVzc2FnZUxpc3RFbmRQYWdlID0ga28ub2JzZXJ2YWJsZSgxKTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3RMb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdElzTm90Q29tcGxldGVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdENvbXBsZXRlTG9hZGluZ1Rocm90dGxlID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgdGhyb3R0bGU6IDIwMCB9KTtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nVGhyb3R0bGVGb3JBbmltYXRpb24gPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyBzcGVjaWFsVGhyb3R0bGU6IDcwMCB9KTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3REaXNhYmxlQXV0b1NlbGVjdCA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IGZhbHNlVGltZW91dDogNTAwIH0pO1xuXG5cdFx0dGhpcy5zZWxlY3Rvck1lc3NhZ2VTZWxlY3RlZCA9IGtvLm9ic2VydmFibGUobnVsbCk7XG5cdFx0dGhpcy5zZWxlY3Rvck1lc3NhZ2VGb2N1c2VkID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdC8vIG1lc3NhZ2Ugdmlld2VyXG5cdFx0dGhpcy5tZXNzYWdlID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdHRoaXMubWVzc2FnZS52aWV3VHJpZ2dlciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5tZXNzYWdlRXJyb3IgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMubWVzc2FnZUN1cnJlbnRMb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMb2FkaW5nVGhyb3R0bGUgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyB0aHJvdHRsZTogTWFnaWNzLlRpbWU1MG1zIH0pO1xuXG5cdFx0dGhpcy5tZXNzYWdlRnVsbFNjcmVlbk1vZGUgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMubWVzc2FnZXNCb2RpZXNEb20gPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXHRcdHRoaXMubWVzc2FnZUFjdGl2ZURvbSA9IGtvLm9ic2VydmFibGUobnVsbCk7XG5cblx0XHR0aGlzLmNvbXB1dGVycygpO1xuXHRcdHRoaXMuc3Vic2NyaWJlcnMoKTtcblxuXHRcdHRoaXMub25NZXNzYWdlUmVzcG9uc2UgPSBfLmJpbmQodGhpcy5vbk1lc3NhZ2VSZXNwb25zZSwgdGhpcyk7XG5cblx0XHR0aGlzLnB1cmdlTWVzc2FnZUJvZHlDYWNoZVRocm90dGxlID0gXy50aHJvdHRsZSh0aGlzLnB1cmdlTWVzc2FnZUJvZHlDYWNoZSwgTWFnaWNzLlRpbWUzMHMpO1xuXHR9XG5cblx0Y29tcHV0ZXJzKCkge1xuXHRcdHRoaXMubWVzc2FnZUxvYWRpbmcgPSBrby5jb21wdXRlZCgoKSA9PiB0aGlzLm1lc3NhZ2VDdXJyZW50TG9hZGluZygpKTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3RFbmRIYXNoID0ga28uY29tcHV0ZWQoXG5cdFx0XHQoKSA9PlxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0RW5kRm9sZGVyKCkgK1xuXHRcdFx0XHQnfCcgK1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0RW5kU2VhcmNoKCkgK1xuXHRcdFx0XHQnfCcgK1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0RW5kVGhyZWFkVWlkKCkgK1xuXHRcdFx0XHQnfCcgK1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0RW5kUGFnZSgpXG5cdFx0KTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3RQYWdlQ291bnQgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBwYWdlID0gd2luZG93Lk1hdGguY2VpbCh0aGlzLm1lc3NhZ2VMaXN0Q291bnQoKSAvIFNldHRpbmdzU3RvcmUubWVzc2FnZXNQZXJQYWdlKCkpO1xuXHRcdFx0cmV0dXJuIDAgPj0gcGFnZSA/IDEgOiBwYWdlO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5tYWluTWVzc2FnZUxpc3RTZWFyY2ggPSBrby5jb21wdXRlZCh7XG5cdFx0XHRyZWFkOiB0aGlzLm1lc3NhZ2VMaXN0U2VhcmNoLFxuXHRcdFx0d3JpdGU6ICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRzZXRIYXNoKFxuXHRcdFx0XHRcdG1haWxCb3goRm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lSGFzaCgpLCAxLCB0cmltKHZhbHVlLnRvU3RyaW5nKCkpLCB0aGlzLm1lc3NhZ2VMaXN0VGhyZWFkVWlkKCkpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb25lID0gdGhpcy5tZXNzYWdlTGlzdExvYWRpbmcoKSxcblx0XHRcdFx0dHdvID0gdGhpcy5tZXNzYWdlTGlzdElzTm90Q29tcGxldGVkKCk7XG5cdFx0XHRyZXR1cm4gb25lIHx8IHR3bztcblx0XHR9KTtcblxuXHRcdHRoaXMuaXNNZXNzYWdlU2VsZWN0ZWQgPSBrby5jb21wdXRlZCgoKSA9PiBudWxsICE9PSB0aGlzLm1lc3NhZ2UoKSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0Q2hlY2tlZCA9IGtvXG5cdFx0XHQuY29tcHV0ZWQoKCkgPT4gXy5maWx0ZXIodGhpcy5tZXNzYWdlTGlzdCgpLCAoaXRlbSkgPT4gaXRlbS5jaGVja2VkKCkpKVxuXHRcdFx0LmV4dGVuZCh7IHJhdGVMaW1pdDogMCB9KTtcblxuXHRcdHRoaXMuaGFzQ2hlY2tlZE1lc3NhZ2VzID0ga28uY29tcHV0ZWQoKCkgPT4gMCA8IHRoaXMubWVzc2FnZUxpc3RDaGVja2VkKCkubGVuZ3RoKS5leHRlbmQoeyByYXRlTGltaXQ6IDAgfSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0Q2hlY2tlZE9yU2VsZWN0ZWQgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBjaGVja2VkID0gdGhpcy5tZXNzYWdlTGlzdENoZWNrZWQoKSxcblx0XHRcdFx0c2VsZWN0ZWRNZXNzYWdlID0gdGhpcy5zZWxlY3Rvck1lc3NhZ2VTZWxlY3RlZCgpLFxuXHRcdFx0XHRmb2N1c2VkTWVzc2FnZSA9IHRoaXMuc2VsZWN0b3JNZXNzYWdlRm9jdXNlZCgpO1xuXG5cdFx0XHRpZiAoY2hlY2tlZC5sZW5ndGgpIHtcblx0XHRcdFx0cmV0dXJuIF8udW5pb24oY2hlY2tlZCwgc2VsZWN0ZWRNZXNzYWdlID8gW3NlbGVjdGVkTWVzc2FnZV0gOiBbXSk7XG5cdFx0XHR9IGVsc2UgaWYgKHNlbGVjdGVkTWVzc2FnZSkge1xuXHRcdFx0XHRyZXR1cm4gW3NlbGVjdGVkTWVzc2FnZV07XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmb2N1c2VkTWVzc2FnZSA/IFtmb2N1c2VkTWVzc2FnZV0gOiBbXTtcblx0XHR9KTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3RDaGVja2VkT3JTZWxlY3RlZFVpZHNXaXRoU3ViTWFpbHMgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRsZXQgcmVzdWx0ID0gW107XG5cdFx0XHRfLmVhY2godGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkKCksIChtZXNzYWdlKSA9PiB7XG5cdFx0XHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRcdFx0cmVzdWx0LnB1c2gobWVzc2FnZS51aWQpO1xuXHRcdFx0XHRcdGlmICgxIDwgbWVzc2FnZS50aHJlYWRzTGVuKCkpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IF8udW5pb24ocmVzdWx0LCBtZXNzYWdlLnRocmVhZHMoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fSk7XG5cdH1cblxuXHRzdWJzY3JpYmVycygpIHtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdHZhbHVlID0gISF2YWx1ZTtcblx0XHRcdHRoaXMubWVzc2FnZUxpc3RDb21wbGV0ZUxvYWRpbmdUaHJvdHRsZSh2YWx1ZSk7XG5cdFx0XHR0aGlzLm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nVGhyb3R0bGVGb3JBbmltYXRpb24odmFsdWUpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5tZXNzYWdlTGlzdC5zdWJzY3JpYmUoXG5cdFx0XHRfLmRlYm91bmNlKChsaXN0KSA9PiB7XG5cdFx0XHRcdF8uZWFjaChsaXN0LCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGlmIChpdGVtICYmIGl0ZW0ubmV3Rm9yQW5pbWF0aW9uKCkpIHtcblx0XHRcdFx0XHRcdGl0ZW0ubmV3Rm9yQW5pbWF0aW9uKGZhbHNlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSwgTWFnaWNzLlRpbWU1MDBtcylcblx0XHQpO1xuXG5cdFx0dGhpcy5tZXNzYWdlLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xuXHRcdFx0aWYgKG1lc3NhZ2UpIHtcblx0XHRcdFx0aWYgKExheW91dC5Ob1ByZXZpZXcgPT09IFNldHRpbmdzU3RvcmUubGF5b3V0KCkpIHtcblx0XHRcdFx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5NZXNzYWdlVmlldyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdEFwcFN0b3JlLmZvY3VzZWRTdGF0ZShGb2N1c2VkLk1lc3NhZ2VMaXN0KTtcblxuXHRcdFx0XHR0aGlzLm1lc3NhZ2VGdWxsU2NyZWVuTW9kZShmYWxzZSk7XG5cdFx0XHRcdHRoaXMuaGlkZU1lc3NhZ2VCb2RpZXMoKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMubWVzc2FnZUxvYWRpbmcuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0dGhpcy5tZXNzYWdlTG9hZGluZ1Rocm90dGxlKHZhbHVlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMubWVzc2FnZXNCb2RpZXNEb20uc3Vic2NyaWJlKChkb20pID0+IHtcblx0XHRcdGlmIChkb20gJiYgIShkb20gaW5zdGFuY2VvZiAkKSkge1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VzQm9kaWVzRG9tKCQoZG9tKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0RW5kRm9sZGVyLnN1YnNjcmliZSgoZm9sZGVyKSA9PiB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlKCk7XG5cdFx0XHRpZiAobWVzc2FnZSAmJiBmb2xkZXIgJiYgZm9sZGVyICE9PSBtZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3KSB7XG5cdFx0XHRcdHRoaXMubWVzc2FnZShudWxsKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdHB1cmdlTWVzc2FnZUJvZHlDYWNoZSgpIHtcblx0XHRsZXQgY291bnQgPSAwO1xuXHRcdGNvbnN0IGVuZCA9IEdsb2JhbHNEYXRhLmlNZXNzYWdlQm9keUNhY2hlQ291bnQgLSBNRVNTQUdFX0JPRFlfQ0FDSEVfTElNSVQ7XG5cblx0XHRpZiAoMCA8IGVuZCkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZXNEb20gPSB0aGlzLm1lc3NhZ2VzQm9kaWVzRG9tKCk7XG5cdFx0XHRpZiAobWVzc2FnZXNEb20pIHtcblx0XHRcdFx0bWVzc2FnZXNEb20uZmluZCgnLnJsLWNhY2hlLWNsYXNzJykuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRjb25zdCBpdGVtID0gJCh0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0XHRpZiAoZW5kID4gaXRlbS5kYXRhKCdybC1jYWNoZS1jb3VudCcpKSB7XG5cdFx0XHRcdFx0XHRpdGVtLmFkZENsYXNzKCdybC1jYWNoZS1wdXJnZScpO1xuXHRcdFx0XHRcdFx0Y291bnQgKz0gMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmICgwIDwgY291bnQpIHtcblx0XHRcdFx0XHRfLmRlbGF5KCgpID0+IG1lc3NhZ2VzRG9tLmZpbmQoJy5ybC1jYWNoZS1wdXJnZScpLnJlbW92ZSgpLCBNYWdpY3MuVGltZTM1MG1zKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGluaXRVaWROZXh0QW5kTmV3TWVzc2FnZXMoZm9sZGVyLCB1aWROZXh0LCBuZXdNZXNzYWdlcykge1xuXHRcdGlmIChnZXRGb2xkZXJJbmJveE5hbWUoKSA9PT0gZm9sZGVyICYmIGlzTm9ybWFsKHVpZE5leHQpICYmICcnICE9PSB1aWROZXh0KSB7XG5cdFx0XHRpZiAoaXNBcnJheShuZXdNZXNzYWdlcykgJiYgMCA8IG5ld01lc3NhZ2VzLmxlbmd0aCkge1xuXHRcdFx0XHRfLmVhY2gobmV3TWVzc2FnZXMsIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0YWRkTmV3TWVzc2FnZUNhY2hlKGZvbGRlciwgaXRlbS5VaWQpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHROb3RpZmljYXRpb25TdG9yZS5wbGF5U291bmROb3RpZmljYXRpb24oKTtcblxuXHRcdFx0XHRjb25zdCBsZW4gPSBuZXdNZXNzYWdlcy5sZW5ndGg7XG5cdFx0XHRcdGlmICgzIDwgbGVuKSB7XG5cdFx0XHRcdFx0Tm90aWZpY2F0aW9uU3RvcmUuZGlzcGxheURlc2t0b3BOb3RpZmljYXRpb24oXG5cdFx0XHRcdFx0XHRub3RpZmljYXRpb25NYWlsSWNvbigpLFxuXHRcdFx0XHRcdFx0QWNjb3VudFN0b3JlLmVtYWlsKCksXG5cdFx0XHRcdFx0XHRpMThuKCdNRVNTQUdFX0xJU1QvTkVXX01FU1NBR0VfTk9USUZJQ0FUSU9OJywge1xuXHRcdFx0XHRcdFx0XHQnQ09VTlQnOiBsZW5cblx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0eyAnRm9sZGVyJzogJycsICdVaWQnOiAnJyB9XG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRfLmVhY2gobmV3TWVzc2FnZXMsIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHROb3RpZmljYXRpb25TdG9yZS5kaXNwbGF5RGVza3RvcE5vdGlmaWNhdGlvbihcblx0XHRcdFx0XHRcdFx0bm90aWZpY2F0aW9uTWFpbEljb24oKSxcblx0XHRcdFx0XHRcdFx0TWVzc2FnZUhlbHBlci5lbWFpbEFycmF5VG9TdHJpbmcoTWVzc2FnZUhlbHBlci5lbWFpbEFycmF5RnJvbUpzb24oaXRlbS5Gcm9tKSwgZmFsc2UpLFxuXHRcdFx0XHRcdFx0XHRpdGVtLlN1YmplY3QsXG5cdFx0XHRcdFx0XHRcdHsgJ0ZvbGRlcic6IGl0ZW0uRm9sZGVyLCAnVWlkJzogaXRlbS5VaWQgfVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRzZXRGb2xkZXJVaWROZXh0KGZvbGRlciwgdWlkTmV4dCk7XG5cdFx0fVxuXHR9XG5cblx0aGlkZU1lc3NhZ2VCb2RpZXMoKSB7XG5cdFx0Y29uc3QgbWVzc2FnZXNEb20gPSB0aGlzLm1lc3NhZ2VzQm9kaWVzRG9tKCk7XG5cdFx0aWYgKG1lc3NhZ2VzRG9tKSB7XG5cdFx0XHRtZXNzYWdlc0RvbS5maW5kKCcuYi10ZXh0LXBhcnQnKS5oaWRlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBmcm9tRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtBcnJheX0gdWlkRm9yUmVtb3ZlXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gdG9Gb2xkZXJGdWxsTmFtZVJhdyA9ICcnXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGNvcHkgPSBmYWxzZVxuXHQgKi9cblx0cmVtb3ZlTWVzc2FnZXNGcm9tTGlzdChmcm9tRm9sZGVyRnVsbE5hbWVSYXcsIHVpZEZvclJlbW92ZSwgdG9Gb2xkZXJGdWxsTmFtZVJhdyA9ICcnLCBjb3B5ID0gZmFsc2UpIHtcblx0XHR1aWRGb3JSZW1vdmUgPSBfLm1hcCh1aWRGb3JSZW1vdmUsIChtVmFsdWUpID0+IHBJbnQobVZhbHVlKSk7XG5cblx0XHRsZXQgdW5zZWVuQ291bnQgPSAwLFxuXHRcdFx0bWVzc2FnZUxpc3QgPSB0aGlzLm1lc3NhZ2VMaXN0KCksXG5cdFx0XHRjdXJyZW50TWVzc2FnZSA9IHRoaXMubWVzc2FnZSgpO1xuXG5cdFx0Y29uc3QgdHJhc2hGb2xkZXIgPSBGb2xkZXJTdG9yZS50cmFzaEZvbGRlcigpLFxuXHRcdFx0c3BhbUZvbGRlciA9IEZvbGRlclN0b3JlLnNwYW1Gb2xkZXIoKSxcblx0XHRcdGZyb21Gb2xkZXIgPSBnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0KGZyb21Gb2xkZXJGdWxsTmFtZVJhdyksXG5cdFx0XHR0b0ZvbGRlciA9ICcnID09PSB0b0ZvbGRlckZ1bGxOYW1lUmF3ID8gbnVsbCA6IGdldEZvbGRlckZyb21DYWNoZUxpc3QodG9Gb2xkZXJGdWxsTmFtZVJhdyB8fCAnJyksXG5cdFx0XHRjdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcgPSBGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdG1lc3NhZ2VzID1cblx0XHRcdFx0Y3VycmVudEZvbGRlckZ1bGxOYW1lUmF3ID09PSBmcm9tRm9sZGVyRnVsbE5hbWVSYXdcblx0XHRcdFx0XHQ/IF8uZmlsdGVyKG1lc3NhZ2VMaXN0LCAoaXRlbSkgPT4gaXRlbSAmJiAtMSA8IGluQXJyYXkocEludChpdGVtLnVpZCksIHVpZEZvclJlbW92ZSkpXG5cdFx0XHRcdFx0OiBbXTtcblxuXHRcdF8uZWFjaChtZXNzYWdlcywgKGl0ZW0pID0+IHtcblx0XHRcdGlmIChpdGVtICYmIGl0ZW0udW5zZWVuKCkpIHtcblx0XHRcdFx0dW5zZWVuQ291bnQgKz0gMTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGlmIChmcm9tRm9sZGVyICYmICFjb3B5KSB7XG5cdFx0XHRmcm9tRm9sZGVyLm1lc3NhZ2VDb3VudEFsbChcblx0XHRcdFx0MCA8PSBmcm9tRm9sZGVyLm1lc3NhZ2VDb3VudEFsbCgpIC0gdWlkRm9yUmVtb3ZlLmxlbmd0aCA/IGZyb21Gb2xkZXIubWVzc2FnZUNvdW50QWxsKCkgLSB1aWRGb3JSZW1vdmUubGVuZ3RoIDogMFxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKDAgPCB1bnNlZW5Db3VudCkge1xuXHRcdFx0XHRmcm9tRm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZChcblx0XHRcdFx0XHQwIDw9IGZyb21Gb2xkZXIubWVzc2FnZUNvdW50VW5yZWFkKCkgLSB1bnNlZW5Db3VudCA/IGZyb21Gb2xkZXIubWVzc2FnZUNvdW50VW5yZWFkKCkgLSB1bnNlZW5Db3VudCA6IDBcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodG9Gb2xkZXIpIHtcblx0XHRcdGlmICh0cmFzaEZvbGRlciA9PT0gdG9Gb2xkZXIuZnVsbE5hbWVSYXcgfHwgc3BhbUZvbGRlciA9PT0gdG9Gb2xkZXIuZnVsbE5hbWVSYXcpIHtcblx0XHRcdFx0dW5zZWVuQ291bnQgPSAwO1xuXHRcdFx0fVxuXG5cdFx0XHR0b0ZvbGRlci5tZXNzYWdlQ291bnRBbGwodG9Gb2xkZXIubWVzc2FnZUNvdW50QWxsKCkgKyB1aWRGb3JSZW1vdmUubGVuZ3RoKTtcblx0XHRcdGlmICgwIDwgdW5zZWVuQ291bnQpIHtcblx0XHRcdFx0dG9Gb2xkZXIubWVzc2FnZUNvdW50VW5yZWFkKHRvRm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZCgpICsgdW5zZWVuQ291bnQpO1xuXHRcdFx0fVxuXG5cdFx0XHR0b0ZvbGRlci5hY3Rpb25CbGluayh0cnVlKTtcblx0XHR9XG5cblx0XHRpZiAoMCA8IG1lc3NhZ2VzLmxlbmd0aCkge1xuXHRcdFx0aWYgKGNvcHkpIHtcblx0XHRcdFx0Xy5lYWNoKG1lc3NhZ2VzLCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdGl0ZW0uY2hlY2tlZChmYWxzZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdElzTm90Q29tcGxldGVkKHRydWUpO1xuXG5cdFx0XHRcdF8uZWFjaChtZXNzYWdlcywgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRpZiAoY3VycmVudE1lc3NhZ2UgJiYgY3VycmVudE1lc3NhZ2UuaGFzaCA9PT0gaXRlbS5oYXNoKSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50TWVzc2FnZSA9IG51bGw7XG5cdFx0XHRcdFx0XHR0aGlzLm1lc3NhZ2UobnVsbCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aXRlbS5kZWxldGVkKHRydWUpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdFx0XHRfLmVhY2gobWVzc2FnZXMsIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0LnJlbW92ZShpdGVtKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSwgTWFnaWNzLlRpbWUzNTBtcyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCcnICE9PSBmcm9tRm9sZGVyRnVsbE5hbWVSYXcpIHtcblx0XHRcdHNldEZvbGRlckhhc2goZnJvbUZvbGRlckZ1bGxOYW1lUmF3LCAnJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCcnICE9PSB0b0ZvbGRlckZ1bGxOYW1lUmF3KSB7XG5cdFx0XHRzZXRGb2xkZXJIYXNoKHRvRm9sZGVyRnVsbE5hbWVSYXcsICcnKTtcblx0XHR9XG5cblx0XHRpZiAoJycgIT09IHRoaXMubWVzc2FnZUxpc3RUaHJlYWRVaWQoKSkge1xuXHRcdFx0bWVzc2FnZUxpc3QgPSB0aGlzLm1lc3NhZ2VMaXN0KCk7XG5cblx0XHRcdGlmIChcblx0XHRcdFx0bWVzc2FnZUxpc3QgJiZcblx0XHRcdFx0MCA8IG1lc3NhZ2VMaXN0Lmxlbmd0aCAmJlxuXHRcdFx0XHQhIV8uZmluZChtZXNzYWdlTGlzdCwgKGl0ZW0pID0+ICEhKGl0ZW0gJiYgaXRlbS5kZWxldGVkKCkgJiYgaXRlbS51aWQgPT09IHRoaXMubWVzc2FnZUxpc3RUaHJlYWRVaWQoKSkpXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IF8uZmluZChtZXNzYWdlTGlzdCwgKGl0ZW0pID0+IGl0ZW0gJiYgIWl0ZW0uZGVsZXRlZCgpKTtcblx0XHRcdFx0aWYgKG1lc3NhZ2UgJiYgdGhpcy5tZXNzYWdlTGlzdFRocmVhZFVpZCgpICE9PSBwU3RyaW5nKG1lc3NhZ2UudWlkKSkge1xuXHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3RUaHJlYWRVaWQocFN0cmluZyhtZXNzYWdlLnVpZCkpO1xuXG5cdFx0XHRcdFx0c2V0SGFzaChcblx0XHRcdFx0XHRcdG1haWxCb3goXG5cdFx0XHRcdFx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZUhhc2goKSxcblx0XHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdFBhZ2UoKSxcblx0XHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdFNlYXJjaCgpLFxuXHRcdFx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0VGhyZWFkVWlkKClcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoIW1lc3NhZ2UpIHtcblx0XHRcdFx0XHRpZiAoMSA8IHRoaXMubWVzc2FnZUxpc3RQYWdlKCkpIHtcblx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3RQYWdlKHRoaXMubWVzc2FnZUxpc3RQYWdlKCkgLSAxKTtcblxuXHRcdFx0XHRcdFx0c2V0SGFzaChcblx0XHRcdFx0XHRcdFx0bWFpbEJveChcblx0XHRcdFx0XHRcdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVIYXNoKCksXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdFBhZ2UoKSxcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0U2VhcmNoKCksXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdFRocmVhZFVpZCgpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3RUaHJlYWRVaWQoJycpO1xuXG5cdFx0XHRcdFx0XHRzZXRIYXNoKFxuXHRcdFx0XHRcdFx0XHRtYWlsQm94KFxuXHRcdFx0XHRcdFx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZUhhc2goKSxcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VMaXN0UGFnZUJlZm9yZVRocmVhZCgpLFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3RTZWFyY2goKVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR0cnVlLFxuXHRcdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gbWVzc2FnZVRleHRCb2R5XG5cdCAqL1xuXHRpbml0QmxvY2txdW90ZVN3aXRjaGVyKG1lc3NhZ2VUZXh0Qm9keSkge1xuXHRcdGlmIChtZXNzYWdlVGV4dEJvZHkpIHtcblx0XHRcdGNvbnN0ICRvTGlzdCA9ICQoJ2Jsb2NrcXVvdGU6bm90KC5ybC1icS1zd2l0Y2hlciknLCBtZXNzYWdlVGV4dEJvZHkpLmZpbHRlcihmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHQwID09PVxuXHRcdFx0XHRcdCQodGhpcylcblx0XHRcdFx0XHRcdC5wYXJlbnQoKVxuXHRcdFx0XHRcdFx0LmNsb3Nlc3QoJ2Jsb2NrcXVvdGUnLCBtZXNzYWdlVGV4dEJvZHkpLmxlbmd0aFxuXHRcdFx0XHQpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXHRcdFx0fSk7XG5cblx0XHRcdGlmICgkb0xpc3QgJiYgMCA8ICRvTGlzdC5sZW5ndGgpIHtcblx0XHRcdFx0JG9MaXN0LmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0Y29uc3QgJHRoaXMgPSAkKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXG5cdFx0XHRcdFx0bGV0IGggPSAkdGhpcy5oZWlnaHQoKTtcblx0XHRcdFx0XHRpZiAoMCA9PT0gaCkge1xuXHRcdFx0XHRcdFx0aCA9IGdldFJlYWxIZWlnaHQoJHRoaXMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICgnJyAhPT0gdHJpbSgkdGhpcy50ZXh0KCkpICYmICgwID09PSBoIHx8IDEwMCA8IGgpKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy5hZGRDbGFzcygncmwtYnEtc3dpdGNoZXIgaGlkZGVuLWJxJyk7XG5cdFx0XHRcdFx0XHQkKCc8c3BhbiBjbGFzcz1cInJsQmxvY2txdW90ZVN3aXRjaGVyXCI+PGkgY2xhc3M9XCJpY29uLWVsbGlwc2lzXCIgLz48L3NwYW4+Jylcblx0XHRcdFx0XHRcdFx0Lmluc2VydEJlZm9yZSgkdGhpcylcblx0XHRcdFx0XHRcdFx0Lm9uKCdjbGljay5ybEJsb2NrcXVvdGVTd2l0Y2hlcicsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy50b2dnbGVDbGFzcygnaGlkZGVuLWJxJyk7XG5cdFx0XHRcdFx0XHRcdFx0d2luZG93UmVzaXplKCk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdC5hZnRlcignPGJyIC8+Jylcblx0XHRcdFx0XHRcdFx0LmJlZm9yZSgnPGJyIC8+Jyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtPYmplY3R9IG1lc3NhZ2VUZXh0Qm9keVxuXHQgKiBAcGFyYW0ge09iamVjdH0gbWVzc2FnZVxuXHQgKi9cblx0aW5pdE9wZW5QZ3BDb250cm9scyhtZXNzYWdlVGV4dEJvZHksIG1lc3NhZ2UpIHtcblx0XHRpZiAobWVzc2FnZVRleHRCb2R5ICYmIG1lc3NhZ2VUZXh0Qm9keS5maW5kKSB7XG5cdFx0XHRtZXNzYWdlVGV4dEJvZHkuZmluZCgnLmItcGxhaW4tb3BlbnBncDpub3QoLmluaXRlZCknKS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRQZ3BTdG9yZS5pbml0TWVzc2FnZUJvZHlDb250cm9scygkKHRoaXMpLCBtZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHNldE1lc3NhZ2UoZGF0YSwgY2FjaGVkKSB7XG5cdFx0bGV0IGlzTmV3ID0gZmFsc2UsXG5cdFx0XHRib2R5ID0gbnVsbCxcblx0XHRcdGlkID0gJycsXG5cdFx0XHRwbGFpbiA9ICcnLFxuXHRcdFx0cmVzdWx0SHRtbCA9ICcnLFxuXHRcdFx0cGdwU2lnbmVkID0gZmFsc2UsXG5cdFx0XHRtZXNzYWdlc0RvbSA9IHRoaXMubWVzc2FnZXNCb2RpZXNEb20oKSxcblx0XHRcdHNlbGVjdGVkTWVzc2FnZSA9IHRoaXMuc2VsZWN0b3JNZXNzYWdlU2VsZWN0ZWQoKSxcblx0XHRcdG1lc3NhZ2UgPSB0aGlzLm1lc3NhZ2UoKTtcblxuXHRcdGlmIChcblx0XHRcdGRhdGEgJiZcblx0XHRcdG1lc3NhZ2UgJiZcblx0XHRcdGRhdGEuUmVzdWx0ICYmXG5cdFx0XHQnT2JqZWN0L01lc3NhZ2UnID09PSBkYXRhLlJlc3VsdFsnQE9iamVjdCddICYmXG5cdFx0XHRtZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3ID09PSBkYXRhLlJlc3VsdC5Gb2xkZXJcblx0XHQpIHtcblx0XHRcdGNvbnN0IHRocmVhZHMgPSBtZXNzYWdlLnRocmVhZHMoKTtcblx0XHRcdGlmIChtZXNzYWdlLnVpZCAhPT0gZGF0YS5SZXN1bHQuVWlkICYmIDEgPCB0aHJlYWRzLmxlbmd0aCAmJiAtMSA8IGluQXJyYXkoZGF0YS5SZXN1bHQuVWlkLCB0aHJlYWRzKSkge1xuXHRcdFx0XHRtZXNzYWdlID0gTWVzc2FnZU1vZGVsLm5ld0luc3RhbmNlRnJvbUpzb24oZGF0YS5SZXN1bHQpO1xuXHRcdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHRcdG1lc3NhZ2UudGhyZWFkcyh0aHJlYWRzKTtcblx0XHRcdFx0XHRpbml0TWVzc2FnZUZsYWdzRnJvbUNhY2hlKG1lc3NhZ2UpO1xuXG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlKHRoaXMuc3RhdGljTWVzc2FnZS5wb3B1bGF0ZUJ5TWVzc2FnZUxpc3RJdGVtKG1lc3NhZ2UpKTtcblx0XHRcdFx0XHRtZXNzYWdlID0gdGhpcy5tZXNzYWdlKCk7XG5cblx0XHRcdFx0XHRpc05ldyA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS51aWQgPT09IGRhdGEuUmVzdWx0LlVpZCkge1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2VFcnJvcignJyk7XG5cblx0XHRcdFx0bWVzc2FnZS5pbml0VXBkYXRlQnlNZXNzYWdlSnNvbihkYXRhLlJlc3VsdCk7XG5cdFx0XHRcdGFkZFJlcXVlc3RlZE1lc3NhZ2UobWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdywgbWVzc2FnZS51aWQpO1xuXG5cdFx0XHRcdGlmICghY2FjaGVkKSB7XG5cdFx0XHRcdFx0bWVzc2FnZS5pbml0RmxhZ3NCeUpzb24oZGF0YS5SZXN1bHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0bWVzc2FnZXNEb20gPSBtZXNzYWdlc0RvbSAmJiBtZXNzYWdlc0RvbVswXSA/IG1lc3NhZ2VzRG9tIDogbnVsbDtcblx0XHRcdFx0aWYgKG1lc3NhZ2VzRG9tKSB7XG5cdFx0XHRcdFx0aWQgPSAncmwtbWdzLScgKyBtZXNzYWdlLmhhc2gucmVwbGFjZSgvW15hLXpBLVowLTldL2csICcnKTtcblxuXHRcdFx0XHRcdGNvbnN0IHRleHRCb2R5ID0gbWVzc2FnZXNEb20uZmluZCgnIycgKyBpZCk7XG5cdFx0XHRcdFx0aWYgKCF0ZXh0Qm9keSB8fCAhdGV4dEJvZHlbMF0pIHtcblx0XHRcdFx0XHRcdGxldCBpc0h0bWwgPSBmYWxzZTtcblx0XHRcdFx0XHRcdGlmIChpc05vcm1hbChkYXRhLlJlc3VsdC5IdG1sKSAmJiAnJyAhPT0gZGF0YS5SZXN1bHQuSHRtbCkge1xuXHRcdFx0XHRcdFx0XHRpc0h0bWwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRIdG1sID0gZGF0YS5SZXN1bHQuSHRtbC50b1N0cmluZygpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChpc05vcm1hbChkYXRhLlJlc3VsdC5QbGFpbikgJiYgJycgIT09IGRhdGEuUmVzdWx0LlBsYWluKSB7XG5cdFx0XHRcdFx0XHRcdGlzSHRtbCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRIdG1sID0gcGxhaW5Ub0h0bWwoZGF0YS5SZXN1bHQuUGxhaW4udG9TdHJpbmcoKSwgZmFsc2UpO1xuXG5cdFx0XHRcdFx0XHRcdGlmICgobWVzc2FnZS5pc1BncFNpZ25lZCgpIHx8IG1lc3NhZ2UuaXNQZ3BFbmNyeXB0ZWQoKSkgJiYgUGdwU3RvcmUuY2FwYU9wZW5QR1AoKSkge1xuXHRcdFx0XHRcdFx0XHRcdHBsYWluID0gcFN0cmluZyhkYXRhLlJlc3VsdC5QbGFpbik7XG5cblx0XHRcdFx0XHRcdFx0XHRjb25zdCBpc1BncEVuY3J5cHRlZCA9IC8tLS1CRUdJTiBQR1AgTUVTU0FHRS0tLS8udGVzdChwbGFpbik7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCFpc1BncEVuY3J5cHRlZCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0cGdwU2lnbmVkID1cblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly0tLS0tQkVHSU4gUEdQIFNJR05FRCBNRVNTQUdFLS0tLS0vLnRlc3QocGxhaW4pICYmIC8tLS0tLUJFR0lOIFBHUCBTSUdOQVRVUkUtLS0tLS8udGVzdChwbGFpbik7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0JGRpdi5lbXB0eSgpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChwZ3BTaWduZWQgJiYgbWVzc2FnZS5pc1BncFNpZ25lZCgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHRIdG1sID0gJGRpdi5hcHBlbmQoJCgnPHByZSBjbGFzcz1cImItcGxhaW4tb3BlbnBncCBzaWduZWRcIj48L3ByZT4nKS50ZXh0KHBsYWluKSkuaHRtbCgpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoaXNQZ3BFbmNyeXB0ZWQgJiYgbWVzc2FnZS5pc1BncEVuY3J5cHRlZCgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHRIdG1sID0gJGRpdi5hcHBlbmQoJCgnPHByZSBjbGFzcz1cImItcGxhaW4tb3BlbnBncCBlbmNyeXB0ZWRcIj48L3ByZT4nKS50ZXh0KHBsYWluKSkuaHRtbCgpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXN1bHRIdG1sID0gJzxwcmU+JyArIHJlc3VsdEh0bWwgKyAnPC9wcmU+Jztcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHQkZGl2LmVtcHR5KCk7XG5cblx0XHRcdFx0XHRcdFx0XHRtZXNzYWdlLmlzUGdwU2lnbmVkKHBncFNpZ25lZCk7XG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZS5pc1BncEVuY3J5cHRlZChpc1BncEVuY3J5cHRlZCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0cmVzdWx0SHRtbCA9ICc8cHJlPicgKyByZXN1bHRIdG1sICsgJzwvcHJlPic7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlzSHRtbCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRyZXN1bHRIdG1sID0gJzxwcmU+JyArIHJlc3VsdEh0bWwgKyAnPC9wcmU+Jztcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0R2xvYmFsc0RhdGEuaU1lc3NhZ2VCb2R5Q2FjaGVDb3VudCArPSAxO1xuXG5cdFx0XHRcdFx0XHRib2R5ID0gJCgnPGRpdiBpZD1cIicgKyBpZCArICdcIiA+PC9kaXY+Jylcblx0XHRcdFx0XHRcdFx0LmhpZGUoKVxuXHRcdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ3JsLWNhY2hlLWNsYXNzJyk7XG5cdFx0XHRcdFx0XHRib2R5LmRhdGEoJ3JsLWNhY2hlLWNvdW50JywgR2xvYmFsc0RhdGEuaU1lc3NhZ2VCb2R5Q2FjaGVDb3VudCk7XG5cblx0XHRcdFx0XHRcdGJvZHkuaHRtbChmaW5kRW1haWxBbmRMaW5rcyhyZXN1bHRIdG1sKSkuYWRkQ2xhc3MoJ2ItdGV4dC1wYXJ0ICcgKyAoaXNIdG1sID8gJ2h0bWwnIDogJ3BsYWluJykpO1xuXG5cdFx0XHRcdFx0XHRtZXNzYWdlLmlzSHRtbCghIWlzSHRtbCk7XG5cdFx0XHRcdFx0XHRtZXNzYWdlLmhhc0ltYWdlcyghIWRhdGEuUmVzdWx0Lkhhc0V4dGVybmFscyk7XG5cblx0XHRcdFx0XHRcdG1lc3NhZ2UuYm9keSA9IGJvZHk7XG5cdFx0XHRcdFx0XHRpZiAobWVzc2FnZS5ib2R5KSB7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2VzRG9tLmFwcGVuZChtZXNzYWdlLmJvZHkpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRtZXNzYWdlLnN0b3JlRGF0YUluRG9tKCk7XG5cblx0XHRcdFx0XHRcdGlmIChkYXRhLlJlc3VsdC5IYXNJbnRlcm5hbHMpIHtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZS5zaG93SW50ZXJuYWxJbWFnZXModHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChtZXNzYWdlLmhhc0ltYWdlcygpICYmIFNldHRpbmdzU3RvcmUuc2hvd0ltYWdlcygpKSB7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2Uuc2hvd0V4dGVybmFsSW1hZ2VzKHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLnB1cmdlTWVzc2FnZUJvZHlDYWNoZVRocm90dGxlKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG1lc3NhZ2UuYm9keSA9IHRleHRCb2R5O1xuXHRcdFx0XHRcdFx0aWYgKG1lc3NhZ2UuYm9keSkge1xuXHRcdFx0XHRcdFx0XHRHbG9iYWxzRGF0YS5pTWVzc2FnZUJvZHlDYWNoZUNvdW50ICs9IDE7XG5cdFx0XHRcdFx0XHRcdG1lc3NhZ2UuYm9keS5kYXRhKCdybC1jYWNoZS1jb3VudCcsIEdsb2JhbHNEYXRhLmlNZXNzYWdlQm9keUNhY2hlQ291bnQpO1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlLmZldGNoRGF0YUZyb21Eb20oKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VBY3RpdmVEb20obWVzc2FnZS5ib2R5KTtcblxuXHRcdFx0XHRcdHRoaXMuaGlkZU1lc3NhZ2VCb2RpZXMoKTtcblxuXHRcdFx0XHRcdGlmIChib2R5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmluaXRPcGVuUGdwQ29udHJvbHMoYm9keSwgbWVzc2FnZSk7XG5cblx0XHRcdFx0XHRcdHRoaXMuaW5pdEJsb2NrcXVvdGVTd2l0Y2hlcihib2R5KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRtZXNzYWdlLmJvZHkuc2hvdygpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aW5pdE1lc3NhZ2VGbGFnc0Zyb21DYWNoZShtZXNzYWdlKTtcblx0XHRcdFx0aWYgKG1lc3NhZ2UudW5zZWVuKCkgfHwgbWVzc2FnZS5oYXNVbnNlZW5TdWJNZXNzYWdlKCkpIHtcblx0XHRcdFx0XHRnZXRBcHAoKS5tZXNzYWdlTGlzdEFjdGlvbihtZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3LCBNZXNzYWdlU2V0QWN0aW9uLlNldFNlZW4sIFttZXNzYWdlXSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNOZXcpIHtcblx0XHRcdFx0XHRtZXNzYWdlID0gdGhpcy5tZXNzYWdlKCk7XG5cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRzZWxlY3RlZE1lc3NhZ2UgJiZcblx0XHRcdFx0XHRcdG1lc3NhZ2UgJiZcblx0XHRcdFx0XHRcdChtZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3ICE9PSBzZWxlY3RlZE1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcgfHwgbWVzc2FnZS51aWQgIT09IHNlbGVjdGVkTWVzc2FnZS51aWQpXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdG9yTWVzc2FnZVNlbGVjdGVkKG51bGwpO1xuXHRcdFx0XHRcdFx0aWYgKDEgPT09IHRoaXMubWVzc2FnZUxpc3QoKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3Rvck1lc3NhZ2VGb2N1c2VkKG51bGwpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSBpZiAoIXNlbGVjdGVkTWVzc2FnZSAmJiBtZXNzYWdlKSB7XG5cdFx0XHRcdFx0XHRzZWxlY3RlZE1lc3NhZ2UgPSBfLmZpbmQoXG5cdFx0XHRcdFx0XHRcdHRoaXMubWVzc2FnZUxpc3QoKSxcblx0XHRcdFx0XHRcdFx0KHN1Yk1lc3NhZ2UpID0+XG5cdFx0XHRcdFx0XHRcdFx0c3ViTWVzc2FnZSAmJlxuXHRcdFx0XHRcdFx0XHRcdHN1Yk1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcgPT09IG1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcgJiZcblx0XHRcdFx0XHRcdFx0XHRzdWJNZXNzYWdlLnVpZCA9PT0gbWVzc2FnZS51aWRcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdGlmIChzZWxlY3RlZE1lc3NhZ2UpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3Rvck1lc3NhZ2VTZWxlY3RlZChzZWxlY3RlZE1lc3NhZ2UpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdG9yTWVzc2FnZUZvY3VzZWQoc2VsZWN0ZWRNZXNzYWdlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR3aW5kb3dSZXNpemUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRzZWxlY3RNZXNzYWdlKG9NZXNzYWdlKSB7XG5cdFx0aWYgKG9NZXNzYWdlKSB7XG5cdFx0XHR0aGlzLm1lc3NhZ2UodGhpcy5zdGF0aWNNZXNzYWdlLnBvcHVsYXRlQnlNZXNzYWdlTGlzdEl0ZW0ob01lc3NhZ2UpKTtcblx0XHRcdHRoaXMucG9wdWxhdGVNZXNzYWdlQm9keSh0aGlzLm1lc3NhZ2UoKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMubWVzc2FnZShudWxsKTtcblx0XHR9XG5cdH1cblxuXHRzZWxlY3RNZXNzYWdlQnlGb2xkZXJBbmRVaWQoc0ZvbGRlciwgc1VpZCkge1xuXHRcdGlmIChzRm9sZGVyICYmIHNVaWQpIHtcblx0XHRcdHRoaXMubWVzc2FnZSh0aGlzLnN0YXRpY01lc3NhZ2UucG9wdWxhdGVCeU1lc3NhZ2VMaXN0SXRlbShudWxsKSk7XG5cdFx0XHR0aGlzLm1lc3NhZ2UoKS5mb2xkZXJGdWxsTmFtZVJhdyA9IHNGb2xkZXI7XG5cdFx0XHR0aGlzLm1lc3NhZ2UoKS51aWQgPSBzVWlkO1xuXG5cdFx0XHR0aGlzLnBvcHVsYXRlTWVzc2FnZUJvZHkodGhpcy5tZXNzYWdlKCkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm1lc3NhZ2UobnVsbCk7XG5cdFx0fVxuXHR9XG5cblx0cG9wdWxhdGVNZXNzYWdlQm9keShvTWVzc2FnZSkge1xuXHRcdGlmIChvTWVzc2FnZSkge1xuXHRcdFx0aWYgKFJlbW90ZS5tZXNzYWdlKHRoaXMub25NZXNzYWdlUmVzcG9uc2UsIG9NZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3LCBvTWVzc2FnZS51aWQpKSB7XG5cdFx0XHRcdHRoaXMubWVzc2FnZUN1cnJlbnRMb2FkaW5nKHRydWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1Jlc3VsdFxuXHQgKiBAcGFyYW0ge0FqYXhKc29uRGVmYXVsdFJlc3BvbnNlfSBvRGF0YVxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJDYWNoZWRcblx0ICovXG5cdG9uTWVzc2FnZVJlc3BvbnNlKHNSZXN1bHQsIG9EYXRhLCBiQ2FjaGVkKSB7XG5cdFx0dGhpcy5oaWRlTWVzc2FnZUJvZGllcygpO1xuXG5cdFx0dGhpcy5tZXNzYWdlQ3VycmVudExvYWRpbmcoZmFsc2UpO1xuXG5cdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHNSZXN1bHQgJiYgb0RhdGEgJiYgb0RhdGEuUmVzdWx0KSB7XG5cdFx0XHR0aGlzLnNldE1lc3NhZ2Uob0RhdGEsIGJDYWNoZWQpO1xuXHRcdH0gZWxzZSBpZiAoU3RvcmFnZVJlc3VsdFR5cGUuVW5sb2FkID09PSBzUmVzdWx0KSB7XG5cdFx0XHR0aGlzLm1lc3NhZ2UobnVsbCk7XG5cdFx0XHR0aGlzLm1lc3NhZ2VFcnJvcignJyk7XG5cdFx0fSBlbHNlIGlmIChTdG9yYWdlUmVzdWx0VHlwZS5BYm9ydCAhPT0gc1Jlc3VsdCkge1xuXHRcdFx0dGhpcy5tZXNzYWdlKG51bGwpO1xuXHRcdFx0dGhpcy5tZXNzYWdlRXJyb3IoXG5cdFx0XHRcdG9EYXRhICYmIG9EYXRhLkVycm9yQ29kZSA/IGdldE5vdGlmaWNhdGlvbihvRGF0YS5FcnJvckNvZGUpIDogZ2V0Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbi5Vbmtub3duRXJyb3IpXG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0FycmF5fSBsaXN0XG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRjYWxjdWxhdGVNZXNzYWdlTGlzdEhhc2gobGlzdCkge1xuXHRcdHJldHVybiBfLm1hcChsaXN0LCAobWVzc2FnZSkgPT4gJycgKyBtZXNzYWdlLmhhc2ggKyAnXycgKyBtZXNzYWdlLnRocmVhZHNMZW4oKSArICdfJyArIG1lc3NhZ2UuZmxhZ0hhc2goKSkuam9pbihcblx0XHRcdCd8J1xuXHRcdCk7XG5cdH1cblxuXHRzZXRNZXNzYWdlTGlzdChkYXRhLCBjYWNoZWQpIHtcblx0XHRpZiAoXG5cdFx0XHRkYXRhICYmXG5cdFx0XHRkYXRhLlJlc3VsdCAmJlxuXHRcdFx0J0NvbGxlY3Rpb24vTWVzc2FnZUNvbGxlY3Rpb24nID09PSBkYXRhLlJlc3VsdFsnQE9iamVjdCddICYmXG5cdFx0XHRkYXRhLlJlc3VsdFsnQENvbGxlY3Rpb24nXSAmJlxuXHRcdFx0aXNBcnJheShkYXRhLlJlc3VsdFsnQENvbGxlY3Rpb24nXSlcblx0XHQpIHtcblx0XHRcdGxldCBuZXdDb3VudCA9IDAsXG5cdFx0XHRcdHVucmVhZENvdW50Q2hhbmdlID0gZmFsc2U7XG5cblx0XHRcdGNvbnN0IGxpc3QgPSBbXSxcblx0XHRcdFx0dXRjID0gbW9tZW50Tm93VW5peCgpLFxuXHRcdFx0XHRpQ291bnQgPSBwSW50KGRhdGEuUmVzdWx0Lk1lc3NhZ2VSZXN1bHRDb3VudCksXG5cdFx0XHRcdGlPZmZzZXQgPSBwSW50KGRhdGEuUmVzdWx0Lk9mZnNldCk7XG5cblx0XHRcdGNvbnN0IGZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3QoaXNOb3JtYWwoZGF0YS5SZXN1bHQuRm9sZGVyKSA/IGRhdGEuUmVzdWx0LkZvbGRlciA6ICcnKTtcblxuXHRcdFx0aWYgKGZvbGRlciAmJiAhY2FjaGVkKSB7XG5cdFx0XHRcdGZvbGRlci5pbnRlcnZhbCA9IHV0YztcblxuXHRcdFx0XHRzZXRGb2xkZXJIYXNoKGRhdGEuUmVzdWx0LkZvbGRlciwgZGF0YS5SZXN1bHQuRm9sZGVySGFzaCk7XG5cblx0XHRcdFx0aWYgKGlzTm9ybWFsKGRhdGEuUmVzdWx0Lk1lc3NhZ2VDb3VudCkpIHtcblx0XHRcdFx0XHRmb2xkZXIubWVzc2FnZUNvdW50QWxsKGRhdGEuUmVzdWx0Lk1lc3NhZ2VDb3VudCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNOb3JtYWwoZGF0YS5SZXN1bHQuTWVzc2FnZVVuc2VlbkNvdW50KSkge1xuXHRcdFx0XHRcdGlmIChwSW50KGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoKSkgIT09IHBJbnQoZGF0YS5SZXN1bHQuTWVzc2FnZVVuc2VlbkNvdW50KSkge1xuXHRcdFx0XHRcdFx0dW5yZWFkQ291bnRDaGFuZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoZGF0YS5SZXN1bHQuTWVzc2FnZVVuc2VlbkNvdW50KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuaW5pdFVpZE5leHRBbmROZXdNZXNzYWdlcyhmb2xkZXIuZnVsbE5hbWVSYXcsIGRhdGEuUmVzdWx0LlVpZE5leHQsIGRhdGEuUmVzdWx0Lk5ld01lc3NhZ2VzKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHVucmVhZENvdW50Q2hhbmdlICYmIGZvbGRlcikge1xuXHRcdFx0XHRjbGVhck1lc3NhZ2VGbGFnc0Zyb21DYWNoZUJ5Rm9sZGVyKGZvbGRlci5mdWxsTmFtZVJhdyk7XG5cdFx0XHR9XG5cblx0XHRcdF8uZWFjaChkYXRhLlJlc3VsdFsnQENvbGxlY3Rpb24nXSwgKGpzb25NZXNzYWdlKSA9PiB7XG5cdFx0XHRcdGlmIChqc29uTWVzc2FnZSAmJiAnT2JqZWN0L01lc3NhZ2UnID09PSBqc29uTWVzc2FnZVsnQE9iamVjdCddKSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IE1lc3NhZ2VNb2RlbC5uZXdJbnN0YW5jZUZyb21Kc29uKGpzb25NZXNzYWdlKTtcblx0XHRcdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHRcdFx0aWYgKGhhc05ld01lc3NhZ2VBbmRSZW1vdmVGcm9tQ2FjaGUobWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdywgbWVzc2FnZS51aWQpICYmIDUgPj0gbmV3Q291bnQpIHtcblx0XHRcdFx0XHRcdFx0bmV3Q291bnQgKz0gMTtcblx0XHRcdFx0XHRcdFx0bWVzc2FnZS5uZXdGb3JBbmltYXRpb24odHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdG1lc3NhZ2UuZGVsZXRlZChmYWxzZSk7XG5cblx0XHRcdFx0XHRcdGlmIChjYWNoZWQpIHtcblx0XHRcdFx0XHRcdFx0aW5pdE1lc3NhZ2VGbGFnc0Zyb21DYWNoZShtZXNzYWdlKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZShtZXNzYWdlKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0bGlzdC5wdXNoKG1lc3NhZ2UpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMubWVzc2FnZUxpc3RDb3VudChpQ291bnQpO1xuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdFNlYXJjaChpc05vcm1hbChkYXRhLlJlc3VsdC5TZWFyY2gpID8gZGF0YS5SZXN1bHQuU2VhcmNoIDogJycpO1xuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdFBhZ2Uod2luZG93Lk1hdGguY2VpbChpT2Zmc2V0IC8gU2V0dGluZ3NTdG9yZS5tZXNzYWdlc1BlclBhZ2UoKSArIDEpKTtcblx0XHRcdHRoaXMubWVzc2FnZUxpc3RUaHJlYWRVaWQoaXNOb3JtYWwoZGF0YS5SZXN1bHQuVGhyZWFkVWlkKSA/IHBTdHJpbmcoZGF0YS5SZXN1bHQuVGhyZWFkVWlkKSA6ICcnKTtcblxuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdEVuZEZvbGRlcihpc05vcm1hbChkYXRhLlJlc3VsdC5Gb2xkZXIpID8gZGF0YS5SZXN1bHQuRm9sZGVyIDogJycpO1xuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdEVuZFNlYXJjaCh0aGlzLm1lc3NhZ2VMaXN0U2VhcmNoKCkpO1xuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdEVuZFRocmVhZFVpZCh0aGlzLm1lc3NhZ2VMaXN0VGhyZWFkVWlkKCkpO1xuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdEVuZFBhZ2UodGhpcy5tZXNzYWdlTGlzdFBhZ2UoKSk7XG5cblx0XHRcdHRoaXMubWVzc2FnZUxpc3REaXNhYmxlQXV0b1NlbGVjdCh0cnVlKTtcblxuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdChsaXN0KTtcblx0XHRcdHRoaXMubWVzc2FnZUxpc3RJc05vdENvbXBsZXRlZChmYWxzZSk7XG5cblx0XHRcdGNsZWFyTmV3TWVzc2FnZUNhY2hlKCk7XG5cblx0XHRcdGlmIChmb2xkZXIgJiYgKGNhY2hlZCB8fCB1bnJlYWRDb3VudENoYW5nZSB8fCBTZXR0aW5nc1N0b3JlLnVzZVRocmVhZHMoKSkpIHtcblx0XHRcdFx0Z2V0QXBwKCkuZm9sZGVySW5mb3JtYXRpb24oZm9sZGVyLmZ1bGxOYW1lUmF3LCBsaXN0KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdENvdW50KDApO1xuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdChbXSk7XG5cdFx0XHR0aGlzLm1lc3NhZ2VMaXN0RXJyb3IoZ2V0Tm90aWZpY2F0aW9uKGRhdGEgJiYgZGF0YS5FcnJvckNvZGUgPyBkYXRhLkVycm9yQ29kZSA6IE5vdGlmaWNhdGlvbi5DYW50R2V0TWVzc2FnZUxpc3QpKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IE1lc3NhZ2VVc2VyU3RvcmUoKTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IHsgQ2FwYSwgTWVzc2FnZVNldEFjdGlvbiB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyB0cmltLCBwSW50LCBpc0FycmF5IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCAqIGFzIExpbmtzIGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxubGV0IEZPTERFUlNfQ0FDSEUgPSB7fSxcblx0Rk9MREVSU19OQU1FX0NBQ0hFID0ge30sXG5cdEZPTERFUlNfSEFTSF9DQUNIRSA9IHt9LFxuXHRGT0xERVJTX1VJRF9ORVhUX0NBQ0hFID0ge30sXG5cdE1FU1NBR0VfRkxBR1NfQ0FDSEUgPSB7fSxcblx0TkVXX01FU1NBR0VfQ0FDSEUgPSB7fSxcblx0aW5ib3hGb2xkZXJOYW1lID0gJyc7XG5cbmNvbnN0IFJFUVVFU1RFRF9NRVNTQUdFX0NBQ0hFID0ge30sXG5cdGNhcGFHcmF2YXRhciA9IFNldHRpbmdzLmNhcGEoQ2FwYS5HcmF2YXRhcik7XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhcigpIHtcblx0Rk9MREVSU19DQUNIRSA9IHt9O1xuXHRGT0xERVJTX05BTUVfQ0FDSEUgPSB7fTtcblx0Rk9MREVSU19IQVNIX0NBQ0hFID0ge307XG5cdEZPTERFUlNfVUlEX05FWFRfQ0FDSEUgPSB7fTtcblx0TUVTU0FHRV9GTEFHU19DQUNIRSA9IHt9O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRVc2VyUGljKGVtYWlsLCBjYWxsYmFjaykge1xuXHRlbWFpbCA9IHRyaW0oZW1haWwpO1xuXHRjYWxsYmFjayhjYXBhR3JhdmF0YXIgJiYgJycgIT09IGVtYWlsID8gTGlua3MuYXZhdGFyTGluayhlbWFpbCkgOiAnJywgZW1haWwpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVJhd1xuICogQHBhcmFtIHtzdHJpbmd9IHVpZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1lc3NhZ2VLZXkoZm9sZGVyRnVsbE5hbWVSYXcsIHVpZCkge1xuXHRyZXR1cm4gYCR7Zm9sZGVyRnVsbE5hbWVSYXd9IyR7dWlkfWA7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlclxuICogQHBhcmFtIHtzdHJpbmd9IHVpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkUmVxdWVzdGVkTWVzc2FnZShmb2xkZXIsIHVpZCkge1xuXHRSRVFVRVNURURfTUVTU0FHRV9DQUNIRVtnZXRNZXNzYWdlS2V5KGZvbGRlciwgdWlkKV0gPSB0cnVlO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSB1aWRcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzUmVxdWVzdGVkTWVzc2FnZShmb2xkZXIsIHVpZCkge1xuXHRyZXR1cm4gdHJ1ZSA9PT0gUkVRVUVTVEVEX01FU1NBR0VfQ0FDSEVbZ2V0TWVzc2FnZUtleShmb2xkZXIsIHVpZCldO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVJhd1xuICogQHBhcmFtIHtzdHJpbmd9IHVpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkTmV3TWVzc2FnZUNhY2hlKGZvbGRlckZ1bGxOYW1lUmF3LCB1aWQpIHtcblx0TkVXX01FU1NBR0VfQ0FDSEVbZ2V0TWVzc2FnZUtleShmb2xkZXJGdWxsTmFtZVJhdywgdWlkKV0gPSB0cnVlO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVJhd1xuICogQHBhcmFtIHtzdHJpbmd9IHVpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzTmV3TWVzc2FnZUFuZFJlbW92ZUZyb21DYWNoZShmb2xkZXJGdWxsTmFtZVJhdywgdWlkKSB7XG5cdGlmIChORVdfTUVTU0FHRV9DQUNIRVtnZXRNZXNzYWdlS2V5KGZvbGRlckZ1bGxOYW1lUmF3LCB1aWQpXSkge1xuXHRcdE5FV19NRVNTQUdFX0NBQ0hFW2dldE1lc3NhZ2VLZXkoZm9sZGVyRnVsbE5hbWVSYXcsIHVpZCldID0gbnVsbDtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck5ld01lc3NhZ2VDYWNoZSgpIHtcblx0TkVXX01FU1NBR0VfQ0FDSEUgPSB7fTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVySW5ib3hOYW1lKCkge1xuXHRyZXR1cm4gJycgPT09IGluYm94Rm9sZGVyTmFtZSA/ICdJTkJPWCcgOiBpbmJveEZvbGRlck5hbWU7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlckhhc2hcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRGb2xkZXJGdWxsTmFtZVJhdyhmb2xkZXJIYXNoKSB7XG5cdHJldHVybiAnJyAhPT0gZm9sZGVySGFzaCAmJiBGT0xERVJTX05BTUVfQ0FDSEVbZm9sZGVySGFzaF0gPyBGT0xERVJTX05BTUVfQ0FDSEVbZm9sZGVySGFzaF0gOiAnJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9sZGVySGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlckZ1bGxOYW1lUmF3XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRGb2xkZXJGdWxsTmFtZVJhdyhmb2xkZXJIYXNoLCBmb2xkZXJGdWxsTmFtZVJhdykge1xuXHRGT0xERVJTX05BTUVfQ0FDSEVbZm9sZGVySGFzaF0gPSBmb2xkZXJGdWxsTmFtZVJhdztcblx0aWYgKCdJTkJPWCcgPT09IGZvbGRlckZ1bGxOYW1lUmF3IHx8ICcnID09PSBpbmJveEZvbGRlck5hbWUpIHtcblx0XHRpbmJveEZvbGRlck5hbWUgPSBmb2xkZXJGdWxsTmFtZVJhdztcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVJhd1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEZvbGRlckhhc2goZm9sZGVyRnVsbE5hbWVSYXcpIHtcblx0cmV0dXJuICcnICE9PSBmb2xkZXJGdWxsTmFtZVJhdyAmJiBGT0xERVJTX0hBU0hfQ0FDSEVbZm9sZGVyRnVsbE5hbWVSYXddID8gRk9MREVSU19IQVNIX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lUmF3XSA6ICcnO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVJhd1xuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlckhhc2hcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldEZvbGRlckhhc2goZm9sZGVyRnVsbE5hbWVSYXcsIGZvbGRlckhhc2gpIHtcblx0aWYgKCcnICE9PSBmb2xkZXJGdWxsTmFtZVJhdykge1xuXHRcdEZPTERFUlNfSEFTSF9DQUNIRVtmb2xkZXJGdWxsTmFtZVJhd10gPSBmb2xkZXJIYXNoO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlckZ1bGxOYW1lUmF3XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyVWlkTmV4dChmb2xkZXJGdWxsTmFtZVJhdykge1xuXHRyZXR1cm4gJycgIT09IGZvbGRlckZ1bGxOYW1lUmF3ICYmIEZPTERFUlNfVUlEX05FWFRfQ0FDSEVbZm9sZGVyRnVsbE5hbWVSYXddXG5cdFx0PyBGT0xERVJTX1VJRF9ORVhUX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lUmF3XVxuXHRcdDogJyc7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlckZ1bGxOYW1lUmF3XG4gKiBAcGFyYW0ge3N0cmluZ30gdWlkTmV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Rm9sZGVyVWlkTmV4dChmb2xkZXJGdWxsTmFtZVJhdywgdWlkTmV4dCkge1xuXHRGT0xERVJTX1VJRF9ORVhUX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lUmF3XSA9IHVpZE5leHQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlckZ1bGxOYW1lUmF3XG4gKiBAcmV0dXJucyB7P0ZvbGRlck1vZGVsfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Rm9sZGVyRnJvbUNhY2hlTGlzdChmb2xkZXJGdWxsTmFtZVJhdykge1xuXHRyZXR1cm4gJycgIT09IGZvbGRlckZ1bGxOYW1lUmF3ICYmIEZPTERFUlNfQ0FDSEVbZm9sZGVyRnVsbE5hbWVSYXddID8gRk9MREVSU19DQUNIRVtmb2xkZXJGdWxsTmFtZVJhd10gOiBudWxsO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVJhd1xuICogQHBhcmFtIHs/Rm9sZGVyTW9kZWx9IGZvbGRlclxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0Rm9sZGVyVG9DYWNoZUxpc3QoZm9sZGVyRnVsbE5hbWVSYXcsIGZvbGRlcikge1xuXHRGT0xERVJTX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lUmF3XSA9IGZvbGRlcjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9sZGVyRnVsbE5hbWVSYXdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUZvbGRlckZyb21DYWNoZUxpc3QoZm9sZGVyRnVsbE5hbWVSYXcpIHtcblx0c2V0Rm9sZGVyVG9DYWNoZUxpc3QoZm9sZGVyRnVsbE5hbWVSYXcsIG51bGwpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHVpZFxuICogQHJldHVybnMgez9BcnJheX1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE1lc3NhZ2VGbGFnc0Zyb21DYWNoZShmb2xkZXJGdWxsTmFtZSwgdWlkKSB7XG5cdHJldHVybiBNRVNTQUdFX0ZMQUdTX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lXSAmJiBNRVNTQUdFX0ZMQUdTX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lXVt1aWRdXG5cdFx0PyBNRVNTQUdFX0ZMQUdTX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lXVt1aWRdXG5cdFx0OiBudWxsO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJGdWxsTmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHVpZFxuICogQHBhcmFtIHtBcnJheX0gZmxhZ3NDYWNoZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0TWVzc2FnZUZsYWdzVG9DYWNoZShmb2xkZXJGdWxsTmFtZSwgdWlkLCBmbGFnc0NhY2hlKSB7XG5cdGlmICghTUVTU0FHRV9GTEFHU19DQUNIRVtmb2xkZXJGdWxsTmFtZV0pIHtcblx0XHRNRVNTQUdFX0ZMQUdTX0NBQ0hFW2ZvbGRlckZ1bGxOYW1lXSA9IHt9O1xuXHR9XG5cblx0TUVTU0FHRV9GTEFHU19DQUNIRVtmb2xkZXJGdWxsTmFtZV1bdWlkXSA9IGZsYWdzQ2FjaGU7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlckZ1bGxOYW1lXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhck1lc3NhZ2VGbGFnc0Zyb21DYWNoZUJ5Rm9sZGVyKGZvbGRlckZ1bGxOYW1lKSB7XG5cdE1FU1NBR0VfRkxBR1NfQ0FDSEVbZm9sZGVyRnVsbE5hbWVdID0ge307XG59XG5cbi8qKlxuICogQHBhcmFtIHsoTWVzc2FnZU1vZGVsfG51bGwpfSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0TWVzc2FnZUZsYWdzRnJvbUNhY2hlKG1lc3NhZ2UpIHtcblx0aWYgKG1lc3NhZ2UpIHtcblx0XHRjb25zdCB1aWQgPSBtZXNzYWdlLnVpZCxcblx0XHRcdGZsYWdzID0gZ2V0TWVzc2FnZUZsYWdzRnJvbUNhY2hlKG1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcsIHVpZCk7XG5cblx0XHRpZiAoZmxhZ3MgJiYgMCA8IGZsYWdzLmxlbmd0aCkge1xuXHRcdFx0bWVzc2FnZS5mbGFnZ2VkKCEhZmxhZ3NbMV0pO1xuXG5cdFx0XHRpZiAoIW1lc3NhZ2UuaXNTaW1wbGVNZXNzYWdlKSB7XG5cdFx0XHRcdG1lc3NhZ2UudW5zZWVuKCEhZmxhZ3NbMF0pO1xuXHRcdFx0XHRtZXNzYWdlLmFuc3dlcmVkKCEhZmxhZ3NbMl0pO1xuXHRcdFx0XHRtZXNzYWdlLmZvcndhcmRlZCghIWZsYWdzWzNdKTtcblx0XHRcdFx0bWVzc2FnZS5pc1JlYWRSZWNlaXB0KCEhZmxhZ3NbNF0pO1xuXHRcdFx0XHRtZXNzYWdlLmRlbGV0ZWRNYXJrKCEhZmxhZ3NbNV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICgwIDwgbWVzc2FnZS50aHJlYWRzKCkubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCB1bnNlZW5TdWJVaWQgPSBfLmZpbmQobWVzc2FnZS50aHJlYWRzKCksIChzU3ViVWlkKSA9PiB7XG5cdFx0XHRcdGlmICh1aWQgIT09IHNTdWJVaWQpIHtcblx0XHRcdFx0XHRjb25zdCBzdWJGbGFncyA9IGdldE1lc3NhZ2VGbGFnc0Zyb21DYWNoZShtZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3LCBzU3ViVWlkKTtcblx0XHRcdFx0XHRyZXR1cm4gc3ViRmxhZ3MgJiYgMCA8IHN1YkZsYWdzLmxlbmd0aCAmJiAhIXN1YkZsYWdzWzBdO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pO1xuXG5cdFx0XHRjb25zdCBmbGFnZ2VkU3ViVWlkID0gXy5maW5kKG1lc3NhZ2UudGhyZWFkcygpLCAoc1N1YlVpZCkgPT4ge1xuXHRcdFx0XHRpZiAodWlkICE9PSBzU3ViVWlkKSB7XG5cdFx0XHRcdFx0Y29uc3Qgc3ViRmxhZ3MgPSBnZXRNZXNzYWdlRmxhZ3NGcm9tQ2FjaGUobWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdywgc1N1YlVpZCk7XG5cdFx0XHRcdFx0cmV0dXJuIHN1YkZsYWdzICYmIDAgPCBzdWJGbGFncy5sZW5ndGggJiYgISFzdWJGbGFnc1sxXTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KTtcblxuXHRcdFx0bWVzc2FnZS5oYXNVbnNlZW5TdWJNZXNzYWdlKHVuc2VlblN1YlVpZCAmJiAwIDwgcEludCh1bnNlZW5TdWJVaWQpKTtcblx0XHRcdG1lc3NhZ2UuaGFzRmxhZ2dlZFN1Yk1lc3NhZ2UoZmxhZ2dlZFN1YlVpZCAmJiAwIDwgcEludChmbGFnZ2VkU3ViVWlkKSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHsoTWVzc2FnZU1vZGVsfG51bGwpfSBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdG9yZU1lc3NhZ2VGbGFnc1RvQ2FjaGUobWVzc2FnZSkge1xuXHRpZiAobWVzc2FnZSkge1xuXHRcdHNldE1lc3NhZ2VGbGFnc1RvQ2FjaGUobWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdywgbWVzc2FnZS51aWQsIFtcblx0XHRcdG1lc3NhZ2UudW5zZWVuKCksXG5cdFx0XHRtZXNzYWdlLmZsYWdnZWQoKSxcblx0XHRcdG1lc3NhZ2UuYW5zd2VyZWQoKSxcblx0XHRcdG1lc3NhZ2UuZm9yd2FyZGVkKCksXG5cdFx0XHRtZXNzYWdlLmlzUmVhZFJlY2VpcHQoKSxcblx0XHRcdG1lc3NhZ2UuZGVsZXRlZE1hcmsoKVxuXHRcdF0pO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlclxuICogQHBhcmFtIHtzdHJpbmd9IHVpZFxuICogQHBhcmFtIHtBcnJheX0gZmxhZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZUJ5Rm9sZGVyQW5kVWlkKGZvbGRlciwgdWlkLCBmbGFncykge1xuXHRpZiAoaXNBcnJheShmbGFncykgJiYgMCA8IGZsYWdzLmxlbmd0aCkge1xuXHRcdHNldE1lc3NhZ2VGbGFnc1RvQ2FjaGUoZm9sZGVyLCB1aWQsIGZsYWdzKTtcblx0fVxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSB1aWRcbiAqIEBwYXJhbSB7bnVtYmVyfSBzZXRBY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZUJ5U2V0QWN0aW9uKGZvbGRlciwgdWlkLCBzZXRBY3Rpb24pIHtcblx0bGV0IHVucmVhZCA9IDA7XG5cdGNvbnN0IGZsYWdzID0gZ2V0TWVzc2FnZUZsYWdzRnJvbUNhY2hlKGZvbGRlciwgdWlkKTtcblxuXHRpZiAoaXNBcnJheShmbGFncykgJiYgMCA8IGZsYWdzLmxlbmd0aCkge1xuXHRcdGlmIChmbGFnc1swXSkge1xuXHRcdFx0dW5yZWFkID0gMTtcblx0XHR9XG5cblx0XHRzd2l0Y2ggKHNldEFjdGlvbikge1xuXHRcdFx0Y2FzZSBNZXNzYWdlU2V0QWN0aW9uLlNldFNlZW46XG5cdFx0XHRcdGZsYWdzWzBdID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBNZXNzYWdlU2V0QWN0aW9uLlVuc2V0U2Vlbjpcblx0XHRcdFx0ZmxhZ3NbMF0gPSB0cnVlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgTWVzc2FnZVNldEFjdGlvbi5TZXRGbGFnOlxuXHRcdFx0XHRmbGFnc1sxXSA9IHRydWU7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBNZXNzYWdlU2V0QWN0aW9uLlVuc2V0RmxhZzpcblx0XHRcdFx0ZmxhZ3NbMV0gPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0fVxuXG5cdFx0c2V0TWVzc2FnZUZsYWdzVG9DYWNoZShmb2xkZXIsIHVpZCwgZmxhZ3MpO1xuXHR9XG5cblx0cmV0dXJuIHVucmVhZDtcbn1cbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCB7IHBTdHJpbmcsIHBJbnQsIGlzVW5kLCBpc05vcm1hbCwgdHJpbSwgZW5jb2RlVVJJQ29tcG9uZW50IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5jb25zdCBST09UID0gJy4vJyxcblx0SEFTSF9QUkVGSVggPSAnIy8nLFxuXHRTRVJWRVJfUFJFRklYID0gJy4vPycsXG5cdFNVQl9RVUVSWV9QUkVGSVggPSAnJnFbXT0nLFxuXHRWRVJTSU9OID0gU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ3ZlcnNpb24nKSxcblx0V0VCX1BSRUZJWCA9IFNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCd3ZWJQYXRoJykgfHwgJycsXG5cdFZFUlNJT05fUFJFRklYID0gU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ3dlYlZlcnNpb25QYXRoJykgfHwgJ3JhaW5sb29wL3YvJyArIFZFUlNJT04gKyAnLycsXG5cdFNUQVRJQ19QUkVGSVggPSBWRVJTSU9OX1BSRUZJWCArICdzdGF0aWMvJyxcblx0QURNSU5fSE9TVF9VU0UgPSAhIVNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdhZG1pbkhvc3RVc2UnKSxcblx0QURNSU5fUEFUSCA9IFNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdhZG1pblBhdGgnKSB8fCAnYWRtaW4nO1xuXG5sZXQgQVVUSF9QUkVGSVggPSBTZXR0aW5ncy5zZXR0aW5nc0dldCgnQXV0aEFjY291bnRIYXNoJykgfHwgJzAnO1xuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVBdXRoU3VmZml4KCkge1xuXHRBVVRIX1BSRUZJWCA9IFNldHRpbmdzLnNldHRpbmdzR2V0KCdBdXRoQWNjb3VudEhhc2gnKSB8fCAnMCc7XG59XG5cbi8qKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN1YlF1ZXJ5UHJlZml4KCkge1xuXHRyZXR1cm4gU1VCX1FVRVJZX1BSRUZJWDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZz19IHN0YXJ0dXBVcmxcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb290KHN0YXJ0dXBVcmwgPSAnJykge1xuXHRyZXR1cm4gSEFTSF9QUkVGSVggKyBwU3RyaW5nKHN0YXJ0dXBVcmwpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByb290QWRtaW4oKSB7XG5cdHJldHVybiBBRE1JTl9IT1NUX1VTRSA/IFJPT1QgOiBTRVJWRVJfUFJFRklYICsgQURNSU5fUEFUSDtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcm9vdFVzZXIoKSB7XG5cdHJldHVybiBST09UO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlXG4gKiBAcGFyYW0ge3N0cmluZ30gZG93bmxvYWRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gY3VzdG9tU3BlY1N1ZmZpeFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaG1lbnRSYXcodHlwZSwgZG93bmxvYWQsIGN1c3RvbVNwZWNTdWZmaXgpIHtcblx0Y3VzdG9tU3BlY1N1ZmZpeCA9IGlzVW5kKGN1c3RvbVNwZWNTdWZmaXgpID8gQVVUSF9QUkVGSVggOiBjdXN0b21TcGVjU3VmZml4O1xuXHRyZXR1cm4gKFxuXHRcdFNFUlZFUl9QUkVGSVggK1xuXHRcdCcvUmF3LycgK1xuXHRcdFNVQl9RVUVSWV9QUkVGSVggK1xuXHRcdCcvJyArXG5cdFx0Y3VzdG9tU3BlY1N1ZmZpeCArXG5cdFx0Jy8nICtcblx0XHR0eXBlICtcblx0XHQnLycgK1xuXHRcdFNVQl9RVUVSWV9QUkVGSVggK1xuXHRcdCcvJyArXG5cdFx0ZG93bmxvYWRcblx0KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZG93bmxvYWRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gY3VzdG9tU3BlY1N1ZmZpeFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaG1lbnREb3dubG9hZChkb3dubG9hZCwgY3VzdG9tU3BlY1N1ZmZpeCkge1xuXHRyZXR1cm4gYXR0YWNobWVudFJhdygnRG93bmxvYWQnLCBkb3dubG9hZCwgY3VzdG9tU3BlY1N1ZmZpeCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGRvd25sb2FkXG4gKiBAcGFyYW0ge3N0cmluZz19IGN1c3RvbVNwZWNTdWZmaXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdHRhY2htZW50UHJldmlldyhkb3dubG9hZCwgY3VzdG9tU3BlY1N1ZmZpeCkge1xuXHRyZXR1cm4gYXR0YWNobWVudFJhdygnVmlldycsIGRvd25sb2FkLCBjdXN0b21TcGVjU3VmZml4KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZG93bmxvYWRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gY3VzdG9tU3BlY1N1ZmZpeFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaG1lbnRUaHVtYm5haWxQcmV2aWV3KGRvd25sb2FkLCBjdXN0b21TcGVjU3VmZml4KSB7XG5cdHJldHVybiBhdHRhY2htZW50UmF3KCdWaWV3VGh1bWJuYWlsJywgZG93bmxvYWQsIGN1c3RvbVNwZWNTdWZmaXgpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBkb3dubG9hZFxuICogQHBhcmFtIHtzdHJpbmc9fSBjdXN0b21TcGVjU3VmZml4XG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNobWVudFByZXZpZXdBc1BsYWluKGRvd25sb2FkLCBjdXN0b21TcGVjU3VmZml4KSB7XG5cdHJldHVybiBhdHRhY2htZW50UmF3KCdWaWV3QXNQbGFpbicsIGRvd25sb2FkLCBjdXN0b21TcGVjU3VmZml4KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZG93bmxvYWRcbiAqIEBwYXJhbSB7c3RyaW5nPX0gY3VzdG9tU3BlY1N1ZmZpeFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGF0dGFjaG1lbnRGcmFtZWQoZG93bmxvYWQsIGN1c3RvbVNwZWNTdWZmaXgpIHtcblx0cmV0dXJuIGF0dGFjaG1lbnRSYXcoJ0ZyYW1lZFZpZXcnLCBkb3dubG9hZCwgY3VzdG9tU3BlY1N1ZmZpeCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJ2ZXJSZXF1ZXN0KHR5cGUpIHtcblx0cmV0dXJuIFNFUlZFUl9QUkVGSVggKyAnLycgKyB0eXBlICsgJy8nICsgU1VCX1FVRVJZX1BSRUZJWCArICcvJyArIEFVVEhfUFJFRklYICsgJy8nO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWQoKSB7XG5cdHJldHVybiBzZXJ2ZXJSZXF1ZXN0KCdVcGxvYWQnKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXBsb2FkQ29udGFjdHMoKSB7XG5cdHJldHVybiBzZXJ2ZXJSZXF1ZXN0KCdVcGxvYWRDb250YWN0cycpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGxvYWRCYWNrZ3JvdW5kKCkge1xuXHRyZXR1cm4gc2VydmVyUmVxdWVzdCgnVXBsb2FkQmFja2dyb3VuZCcpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmQoKSB7XG5cdHJldHVybiBzZXJ2ZXJSZXF1ZXN0KCdBcHBlbmQnKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZW1haWxcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2UoZW1haWwpIHtcblx0cmV0dXJuIHNlcnZlclJlcXVlc3QoJ0NoYW5nZScpICsgZW5jb2RlVVJJQ29tcG9uZW50KGVtYWlsKSArICcvJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWpheChhZGQpIHtcblx0cmV0dXJuIHNlcnZlclJlcXVlc3QoJ0FqYXgnKSArIGFkZDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdEhhc2hcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXNzYWdlVmlld0xpbmsocmVxdWVzdEhhc2gpIHtcblx0cmV0dXJuIChcblx0XHRTRVJWRVJfUFJFRklYICtcblx0XHQnL1Jhdy8nICtcblx0XHRTVUJfUVVFUllfUFJFRklYICtcblx0XHQnLycgK1xuXHRcdEFVVEhfUFJFRklYICtcblx0XHQnL1ZpZXdBc1BsYWluLycgK1xuXHRcdFNVQl9RVUVSWV9QUkVGSVggK1xuXHRcdCcvJyArXG5cdFx0cmVxdWVzdEhhc2hcblx0KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdEhhc2hcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtZXNzYWdlRG93bmxvYWRMaW5rKHJlcXVlc3RIYXNoKSB7XG5cdHJldHVybiAoXG5cdFx0U0VSVkVSX1BSRUZJWCArICcvUmF3LycgKyBTVUJfUVVFUllfUFJFRklYICsgJy8nICsgQVVUSF9QUkVGSVggKyAnL0Rvd25sb2FkLycgKyBTVUJfUVVFUllfUFJFRklYICsgJy8nICsgcmVxdWVzdEhhc2hcblx0KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZW1haWxcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdmF0YXJMaW5rKGVtYWlsKSB7XG5cdHJldHVybiBTRVJWRVJfUFJFRklYICsgJy9SYXcvMC9BdmF0YXIvJyArIGVuY29kZVVSSUNvbXBvbmVudChlbWFpbCkgKyAnLyc7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGhhc2hcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWJsaWNMaW5rKGhhc2gpIHtcblx0cmV0dXJuIFNFUlZFUl9QUkVGSVggKyAnL1Jhdy8wL1B1YmxpYy8nICsgaGFzaCArICcvJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gaGFzaFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZXJCYWNrZ3JvdW5kKGhhc2gpIHtcblx0cmV0dXJuIChcblx0XHRTRVJWRVJfUFJFRklYICsgJy9SYXcvJyArIFNVQl9RVUVSWV9QUkVGSVggKyAnLycgKyBBVVRIX1BSRUZJWCArICcvVXNlckJhY2tncm91bmQvJyArIFNVQl9RVUVSWV9QUkVGSVggKyAnLycgKyBoYXNoXG5cdCk7XG59XG5cbi8qKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBocEluZm8oKSB7XG5cdHJldHVybiBTRVJWRVJfUFJFRklYICsgJy9JbmZvJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFuZ1xuICogQHBhcmFtIHtib29sZWFufSBpc0FkbWluXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGFuZ0xpbmsobGFuZywgaXNBZG1pbikge1xuXHRyZXR1cm4gU0VSVkVSX1BSRUZJWCArICcvTGFuZy8wLycgKyAoaXNBZG1pbiA/ICdBZG1pbicgOiAnQXBwJykgKyAnLycgKyB3aW5kb3cuZW5jb2RlVVJJKGxhbmcpICsgJy8nICsgVkVSU0lPTiArICcvJztcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0Q29udGFjdHNWY2YoKSB7XG5cdHJldHVybiBTRVJWRVJfUFJFRklYICsgJy9SYXcvJyArIFNVQl9RVUVSWV9QUkVGSVggKyAnLycgKyBBVVRIX1BSRUZJWCArICcvQ29udGFjdHNWY2YvJztcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0Q29udGFjdHNDc3YoKSB7XG5cdHJldHVybiBTRVJWRVJfUFJFRklYICsgJy9SYXcvJyArIFNVQl9RVUVSWV9QUkVGSVggKyAnLycgKyBBVVRIX1BSRUZJWCArICcvQ29udGFjdHNDc3YvJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHhhdXRoID0gZmFsc2VcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb2NpYWxHb29nbGUoeGF1dGggPSBmYWxzZSkge1xuXHRyZXR1cm4gKFxuXHRcdFNFUlZFUl9QUkVGSVggK1xuXHRcdCdTb2NpYWxHb29nbGUnICtcblx0XHQoJycgIT09IEFVVEhfUFJFRklYID8gJy8nICsgU1VCX1FVRVJZX1BSRUZJWCArICcvJyArIEFVVEhfUFJFRklYICsgJy8nIDogJycpICtcblx0XHQoeGF1dGggPyAnJnhhdXRoPTEnIDogJycpXG5cdCk7XG59XG5cbi8qKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvY2lhbFR3aXR0ZXIoKSB7XG5cdHJldHVybiBTRVJWRVJfUFJFRklYICsgJ1NvY2lhbFR3aXR0ZXInICsgKCcnICE9PSBBVVRIX1BSRUZJWCA/ICcvJyArIFNVQl9RVUVSWV9QUkVGSVggKyAnLycgKyBBVVRIX1BSRUZJWCArICcvJyA6ICcnKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29jaWFsRmFjZWJvb2soKSB7XG5cdHJldHVybiAoXG5cdFx0U0VSVkVSX1BSRUZJWCArICdTb2NpYWxGYWNlYm9vaycgKyAoJycgIT09IEFVVEhfUFJFRklYID8gJy8nICsgU1VCX1FVRVJZX1BSRUZJWCArICcvJyArIEFVVEhfUFJFRklYICsgJy8nIDogJycpXG5cdCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGhcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGF0aWNQcmVmaXgocGF0aCkge1xuXHRyZXR1cm4gU1RBVElDX1BSRUZJWCArIHBhdGg7XG59XG5cbi8qKlxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5Q29udGFjdFBpYygpIHtcblx0cmV0dXJuIHN0YXRpY1ByZWZpeCgnY3NzL2ltYWdlcy9lbXB0eS1jb250YWN0LnBuZycpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlTmFtZVxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvdW5kKGZpbGVOYW1lKSB7XG5cdHJldHVybiBzdGF0aWNQcmVmaXgoJ3NvdW5kcy8nICsgZmlsZU5hbWUpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3RpZmljYXRpb25NYWlsSWNvbigpIHtcblx0cmV0dXJuIHN0YXRpY1ByZWZpeCgnY3NzL2ltYWdlcy9pY29tLW1lc3NhZ2Utbm90aWZpY2F0aW9uLnBuZycpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVuUGdwSnMoKSB7XG5cdHJldHVybiBzdGF0aWNQcmVmaXgoJ2pzL21pbi9vcGVucGdwLm1pbi5qcycpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBvcGVuUGdwV29ya2VySnMoKSB7XG5cdHJldHVybiBzdGF0aWNQcmVmaXgoJ2pzL21pbi9vcGVucGdwLndvcmtlci5taW4uanMnKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gb3BlblBncFdvcmtlclBhdGgoKSB7XG5cdHJldHVybiBzdGF0aWNQcmVmaXgoJ2pzL21pbi8nKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGhlbWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0aGVtZVByZXZpZXdMaW5rKHRoZW1lKSB7XG5cdGxldCBwcmVmaXggPSBWRVJTSU9OX1BSRUZJWDtcblx0aWYgKCdAY3VzdG9tJyA9PT0gdGhlbWUuc3Vic3RyKC03KSkge1xuXHRcdHRoZW1lID0gdHJpbSh0aGVtZS5zdWJzdHJpbmcoMCwgdGhlbWUubGVuZ3RoIC0gNykpO1xuXHRcdHByZWZpeCA9IFdFQl9QUkVGSVg7XG5cdH1cblxuXHRyZXR1cm4gcHJlZml4ICsgJ3RoZW1lcy8nICsgd2luZG93LmVuY29kZVVSSSh0aGVtZSkgKyAnL2ltYWdlcy9wcmV2aWV3LnBuZyc7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGluYm94Rm9sZGVyTmFtZSA9ICdJTkJPWCdcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmJveChpbmJveEZvbGRlck5hbWUgPSAnSU5CT1gnKSB7XG5cdHJldHVybiBIQVNIX1BSRUZJWCArICdtYWlsYm94LycgKyBpbmJveEZvbGRlck5hbWU7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmc9fSBzY3JlZW5OYW1lID0gJydcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXR0aW5ncyhzY3JlZW5OYW1lID0gJycpIHtcblx0cmV0dXJuIEhBU0hfUFJFRklYICsgJ3NldHRpbmdzJyArIChzY3JlZW5OYW1lID8gJy8nICsgc2NyZWVuTmFtZSA6ICcnKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJvdXQoKSB7XG5cdHJldHVybiBIQVNIX1BSRUZJWCArICdhYm91dCc7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHNjcmVlbk5hbWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZG1pbihzY3JlZW5OYW1lKSB7XG5cdGxldCByZXN1bHQgPSBIQVNIX1BSRUZJWDtcblx0c3dpdGNoIChzY3JlZW5OYW1lKSB7XG5cdFx0Y2FzZSAnQWRtaW5Eb21haW5zJzpcblx0XHRcdHJlc3VsdCArPSAnZG9tYWlucyc7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICdBZG1pblNlY3VyaXR5Jzpcblx0XHRcdHJlc3VsdCArPSAnc2VjdXJpdHknO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnQWRtaW5MaWNlbnNpbmcnOlxuXHRcdFx0cmVzdWx0ICs9ICdsaWNlbnNpbmcnO1xuXHRcdFx0YnJlYWs7XG5cdFx0Ly8gbm8gZGVmYXVsdFxuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gZm9sZGVyXG4gKiBAcGFyYW0ge251bWJlcj19IHBhZ2UgPSAxXG4gKiBAcGFyYW0ge3N0cmluZz19IHNlYXJjaCA9ICcnXG4gKiBAcGFyYW0ge3N0cmluZz19IHRocmVhZFVpZCA9ICcnXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFpbEJveChmb2xkZXIsIHBhZ2UgPSAxLCBzZWFyY2ggPSAnJywgdGhyZWFkVWlkID0gJycpIHtcblx0cGFnZSA9IGlzTm9ybWFsKHBhZ2UpID8gcEludChwYWdlKSA6IDE7XG5cdHNlYXJjaCA9IHBTdHJpbmcoc2VhcmNoKTtcblxuXHRsZXQgcmVzdWx0ID0gSEFTSF9QUkVGSVggKyAnbWFpbGJveC8nO1xuXG5cdGlmICgnJyAhPT0gZm9sZGVyKSB7XG5cdFx0Y29uc3QgcmVzdWx0VGhyZWFkVWlkID0gcEludCh0aHJlYWRVaWQpO1xuXHRcdHJlc3VsdCArPSB3aW5kb3cuZW5jb2RlVVJJKGZvbGRlcikgKyAoMCA8IHJlc3VsdFRocmVhZFVpZCA/ICd+JyArIHJlc3VsdFRocmVhZFVpZCA6ICcnKTtcblx0fVxuXG5cdGlmICgxIDwgcGFnZSkge1xuXHRcdHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC9bL10rJC8sICcnKTtcblx0XHRyZXN1bHQgKz0gJy9wJyArIHBhZ2U7XG5cdH1cblxuXHRpZiAoJycgIT09IHNlYXJjaCkge1xuXHRcdHJlc3VsdCA9IHJlc3VsdC5yZXBsYWNlKC9bL10rJC8sICcnKTtcblx0XHRyZXN1bHQgKz0gJy8nICsgd2luZG93LmVuY29kZVVSSShzZWFyY2gpO1xuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn1cbiIsImltcG9ydCBfIGZyb20gJ18nO1xuXG5pbXBvcnQgeyBwU3RyaW5nLCBwSW50LCBpc0FycmF5LCB0cmltLCBib29sVG9BamF4IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IHtcblx0Q09OVEFDVFNfU1lOQ19BSkFYX1RJTUVPVVQsXG5cdERFRkFVTFRfQUpBWF9USU1FT1VULFxuXHRTRUFSQ0hfQUpBWF9USU1FT1VULFxuXHRTQVZFX01FU1NBR0VfQUpBWF9USU1FT1VULFxuXHRTRU5EX01FU1NBR0VfQUpBWF9USU1FT1VUXG59IGZyb20gJ0NvbW1vbi9Db25zdHMnO1xuXG5pbXBvcnQge1xuXHRnZXRGb2xkZXJIYXNoLFxuXHRnZXRGb2xkZXJJbmJveE5hbWUsXG5cdGdldEZvbGRlclVpZE5leHQsXG5cdGdldEZvbGRlckZyb21DYWNoZUxpc3QsXG5cdGdldE1lc3NhZ2VGbGFnc0Zyb21DYWNoZVxufSBmcm9tICdDb21tb24vQ2FjaGUnO1xuXG5pbXBvcnQgeyBzdWJRdWVyeVByZWZpeCB9IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5pbXBvcnQgKiBhcyBCYXNlNjQgZnJvbSAnQ29tbW9uL0Jhc2U2NCc7XG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxuaW1wb3J0IEFwcFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0FwcCc7XG5pbXBvcnQgU2V0dGluZ3NTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9TZXR0aW5ncyc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEFqYXhSZW1vdGUgfSBmcm9tICdSZW1vdGUvQWJzdHJhY3RBamF4JztcblxuY2xhc3MgUmVtb3RlVXNlckFqYXggZXh0ZW5kcyBBYnN0cmFjdEFqYXhSZW1vdGUge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMub1JlcXVlc3RzID0ge307XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKi9cblx0Zm9sZGVycyhmQ2FsbGJhY2spIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KFxuXHRcdFx0ZkNhbGxiYWNrLFxuXHRcdFx0J0ZvbGRlcnMnLFxuXHRcdFx0e1xuXHRcdFx0XHQnU2VudEZvbGRlcic6IFNldHRpbmdzLnNldHRpbmdzR2V0KCdTZW50Rm9sZGVyJyksXG5cdFx0XHRcdCdEcmFmdEZvbGRlcic6IFNldHRpbmdzLnNldHRpbmdzR2V0KCdEcmFmdEZvbGRlcicpLFxuXHRcdFx0XHQnU3BhbUZvbGRlcic6IFNldHRpbmdzLnNldHRpbmdzR2V0KCdTcGFtRm9sZGVyJyksXG5cdFx0XHRcdCdUcmFzaEZvbGRlcic6IFNldHRpbmdzLnNldHRpbmdzR2V0KCdUcmFzaEZvbGRlcicpLFxuXHRcdFx0XHQnQXJjaGl2ZUZvbGRlcic6IFNldHRpbmdzLnNldHRpbmdzR2V0KCdBcmNoaXZlRm9sZGVyJylcblx0XHRcdH0sXG5cdFx0XHRudWxsLFxuXHRcdFx0JycsXG5cdFx0XHRbJ0ZvbGRlcnMnXVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0VtYWlsXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzTG9naW5cblx0ICogQHBhcmFtIHtzdHJpbmd9IHNQYXNzd29yZFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJTaWduTWVcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBzTGFuZ3VhZ2Vcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBzQWRkaXRpb25hbENvZGVcblx0ICogQHBhcmFtIHtib29sZWFuPX0gYkFkZGl0aW9uYWxDb2RlU2lnbk1lXG5cdCAqL1xuXHRsb2dpbihmQ2FsbGJhY2ssIHNFbWFpbCwgc0xvZ2luLCBzUGFzc3dvcmQsIGJTaWduTWUsIHNMYW5ndWFnZSwgc0FkZGl0aW9uYWxDb2RlLCBiQWRkaXRpb25hbENvZGVTaWduTWUpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0xvZ2luJywge1xuXHRcdFx0J0VtYWlsJzogc0VtYWlsLFxuXHRcdFx0J0xvZ2luJzogc0xvZ2luLFxuXHRcdFx0J1Bhc3N3b3JkJzogc1Bhc3N3b3JkLFxuXHRcdFx0J0xhbmd1YWdlJzogc0xhbmd1YWdlIHx8ICcnLFxuXHRcdFx0J0FkZGl0aW9uYWxDb2RlJzogc0FkZGl0aW9uYWxDb2RlIHx8ICcnLFxuXHRcdFx0J0FkZGl0aW9uYWxDb2RlU2lnbk1lJzogYkFkZGl0aW9uYWxDb2RlU2lnbk1lID8gJzEnIDogJzAnLFxuXHRcdFx0J1NpZ25NZSc6IGJTaWduTWUgPyAnMScgOiAnMCdcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRnZXRUd29GYWN0b3IoZkNhbGxiYWNrKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdHZXRUd29GYWN0b3JJbmZvJyk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKi9cblx0Y3JlYXRlVHdvRmFjdG9yKGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnQ3JlYXRlVHdvRmFjdG9yU2VjcmV0Jyk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKi9cblx0Y2xlYXJUd29GYWN0b3IoZkNhbGxiYWNrKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdDbGVhclR3b0ZhY3RvckluZm8nKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRzaG93VHdvRmFjdG9yU2VjcmV0KGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnU2hvd1R3b0ZhY3RvclNlY3JldCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNDb2RlXG5cdCAqL1xuXHR0ZXN0VHdvRmFjdG9yKGZDYWxsYmFjaywgc0NvZGUpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ1Rlc3RUd29GYWN0b3JJbmZvJywge1xuXHRcdFx0J0NvZGUnOiBzQ29kZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtib29sZWFufSBiRW5hYmxlXG5cdCAqL1xuXHRlbmFibGVUd29GYWN0b3IoZkNhbGxiYWNrLCBiRW5hYmxlKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdFbmFibGVUd29GYWN0b3InLCB7XG5cdFx0XHQnRW5hYmxlJzogYkVuYWJsZSA/ICcxJyA6ICcwJ1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdGNsZWFyVHdvRmFjdG9ySW5mbyhmQ2FsbGJhY2spIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0NsZWFyVHdvRmFjdG9ySW5mbycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdGNvbnRhY3RzU3luYyhmQ2FsbGJhY2spIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0NvbnRhY3RzU3luYycsIG51bGwsIENPTlRBQ1RTX1NZTkNfQUpBWF9USU1FT1VUKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYkVuYWJsZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1VybFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1VzZXJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNQYXNzd29yZFxuXHQgKi9cblx0c2F2ZUNvbnRhY3RzU3luY0RhdGEoZkNhbGxiYWNrLCBiRW5hYmxlLCBzVXJsLCBzVXNlciwgc1Bhc3N3b3JkKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdTYXZlQ29udGFjdHNTeW5jRGF0YScsIHtcblx0XHRcdCdFbmFibGUnOiBiRW5hYmxlID8gJzEnIDogJzAnLFxuXHRcdFx0J1VybCc6IHNVcmwsXG5cdFx0XHQnVXNlcic6IHNVc2VyLFxuXHRcdFx0J1Bhc3N3b3JkJzogc1Bhc3N3b3JkXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0VtYWlsXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUGFzc3dvcmRcblx0ICogQHBhcmFtIHtib29sZWFuPX0gYk5ld1xuXHQgKi9cblx0YWNjb3VudFNldHVwKGZDYWxsYmFjaywgc0VtYWlsLCBzUGFzc3dvcmQsIGJOZXcgPSB0cnVlKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdBY2NvdW50U2V0dXAnLCB7XG5cdFx0XHQnRW1haWwnOiBzRW1haWwsXG5cdFx0XHQnUGFzc3dvcmQnOiBzUGFzc3dvcmQsXG5cdFx0XHQnTmV3JzogYk5ldyA/ICcxJyA6ICcwJ1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNFbWFpbFRvRGVsZXRlXG5cdCAqL1xuXHRhY2NvdW50RGVsZXRlKGZDYWxsYmFjaywgc0VtYWlsVG9EZWxldGUpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0FjY291bnREZWxldGUnLCB7XG5cdFx0XHQnRW1haWxUb0RlbGV0ZSc6IHNFbWFpbFRvRGVsZXRlXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge0FycmF5fSBhQWNjb3VudHNcblx0ICogQHBhcmFtIHtBcnJheX0gYUlkZW50aXRpZXNcblx0ICovXG5cdGFjY291bnRzQW5kSWRlbnRpdGllc1NvcnRPcmRlcihmQ2FsbGJhY2ssIGFBY2NvdW50cywgYUlkZW50aXRpZXMpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0FjY291bnRzQW5kSWRlbnRpdGllc1NvcnRPcmRlcicsIHtcblx0XHRcdCdBY2NvdW50cyc6IGFBY2NvdW50cyxcblx0XHRcdCdJZGVudGl0aWVzJzogYUlkZW50aXRpZXNcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzSWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNFbWFpbFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc05hbWVcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNSZXBseVRvXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzQmNjXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzU2lnbmF0dXJlXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYlNpZ25hdHVyZUluc2VydEJlZm9yZVxuXHQgKi9cblx0aWRlbnRpdHlVcGRhdGUoZkNhbGxiYWNrLCBzSWQsIHNFbWFpbCwgc05hbWUsIHNSZXBseVRvLCBzQmNjLCBzU2lnbmF0dXJlLCBiU2lnbmF0dXJlSW5zZXJ0QmVmb3JlKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdJZGVudGl0eVVwZGF0ZScsIHtcblx0XHRcdCdJZCc6IHNJZCxcblx0XHRcdCdFbWFpbCc6IHNFbWFpbCxcblx0XHRcdCdOYW1lJzogc05hbWUsXG5cdFx0XHQnUmVwbHlUbyc6IHNSZXBseVRvLFxuXHRcdFx0J0JjYyc6IHNCY2MsXG5cdFx0XHQnU2lnbmF0dXJlJzogc1NpZ25hdHVyZSxcblx0XHRcdCdTaWduYXR1cmVJbnNlcnRCZWZvcmUnOiBiU2lnbmF0dXJlSW5zZXJ0QmVmb3JlID8gJzEnIDogJzAnXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0lkVG9EZWxldGVcblx0ICovXG5cdGlkZW50aXR5RGVsZXRlKGZDYWxsYmFjaywgc0lkVG9EZWxldGUpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0lkZW50aXR5RGVsZXRlJywge1xuXHRcdFx0J0lkVG9EZWxldGUnOiBzSWRUb0RlbGV0ZVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdGFjY291bnRzQW5kSWRlbnRpdGllcyhmQ2FsbGJhY2spIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0FjY291bnRzQW5kSWRlbnRpdGllcycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdGFjY291bnRzQ291bnRzKGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnQWNjb3VudHNDb3VudHMnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGZpbHRlcnNcblx0ICogQHBhcmFtIHtzdHJpbmd9IHJhd1xuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGlzUmF3SXNBY3RpdmVcblx0ICovXG5cdGZpbHRlcnNTYXZlKGZDYWxsYmFjaywgZmlsdGVycywgcmF3LCBpc1Jhd0lzQWN0aXZlKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdGaWx0ZXJzU2F2ZScsIHtcblx0XHRcdCdSYXcnOiByYXcsXG5cdFx0XHQnUmF3SXNBY3RpdmUnOiBib29sVG9BamF4KGlzUmF3SXNBY3RpdmUpLFxuXHRcdFx0J0ZpbHRlcnMnOiBfLm1hcChmaWx0ZXJzLCAoaXRlbSkgPT4gaXRlbS50b0pzb24oKSlcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRmaWx0ZXJzR2V0KGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnRmlsdGVycycsIHt9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHR0ZW1wbGF0ZXMoZkNhbGxiYWNrKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdUZW1wbGF0ZXMnLCB7fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzSURcblx0ICovXG5cdHRlbXBsYXRlR2V0QnlJZChmQ2FsbGJhY2ssIHNJRCkge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnVGVtcGxhdGVHZXRCeUlEJywge1xuXHRcdFx0J0lEJzogc0lEXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzSURcblx0ICovXG5cdHRlbXBsYXRlRGVsZXRlKGZDYWxsYmFjaywgc0lEKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdUZW1wbGF0ZURlbGV0ZScsIHtcblx0XHRcdCdJZFRvRGVsZXRlJzogc0lEXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzSURcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNOYW1lXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzQm9keVxuXHQgKi9cblx0dGVtcGxhdGVTZXR1cChmQ2FsbGJhY2ssIHNJRCwgc05hbWUsIHNCb2R5KSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdUZW1wbGF0ZVNldHVwJywge1xuXHRcdFx0J0lEJzogc0lELFxuXHRcdFx0J05hbWUnOiBzTmFtZSxcblx0XHRcdCdCb2R5Jzogc0JvZHlcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNGb2xkZXJGdWxsTmFtZVJhd1xuXHQgKiBAcGFyYW0ge251bWJlcj19IGlPZmZzZXQgPSAwXG5cdCAqIEBwYXJhbSB7bnVtYmVyPX0gaUxpbWl0ID0gMjBcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBzU2VhcmNoID0gJydcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBzVGhyZWFkVWlkID0gJydcblx0ICogQHBhcmFtIHtib29sZWFuPX0gYlNpbGVudCA9IGZhbHNlXG5cdCAqL1xuXHRtZXNzYWdlTGlzdChmQ2FsbGJhY2ssIHNGb2xkZXJGdWxsTmFtZVJhdywgaU9mZnNldCA9IDAsIGlMaW1pdCA9IDIwLCBzU2VhcmNoID0gJycsIHNUaHJlYWRVaWQgPSAnJywgYlNpbGVudCA9IGZhbHNlKSB7XG5cdFx0c0ZvbGRlckZ1bGxOYW1lUmF3ID0gcFN0cmluZyhzRm9sZGVyRnVsbE5hbWVSYXcpO1xuXG5cdFx0Y29uc3QgZm9sZGVySGFzaCA9IGdldEZvbGRlckhhc2goc0ZvbGRlckZ1bGxOYW1lUmF3KSxcblx0XHRcdHVzZVRocmVhZHMgPSBBcHBTdG9yZS50aHJlYWRzQWxsb3dlZCgpICYmIFNldHRpbmdzU3RvcmUudXNlVGhyZWFkcygpLFxuXHRcdFx0aW5ib3hVaWROZXh0ID0gZ2V0Rm9sZGVySW5ib3hOYW1lKCkgPT09IHNGb2xkZXJGdWxsTmFtZVJhdyA/IGdldEZvbGRlclVpZE5leHQoc0ZvbGRlckZ1bGxOYW1lUmF3KSA6ICcnO1xuXG5cdFx0aWYgKCcnICE9PSBmb2xkZXJIYXNoICYmICgnJyA9PT0gc1NlYXJjaCB8fCAtMSA9PT0gc1NlYXJjaC5pbmRleE9mKCdpczonKSkpIHtcblx0XHRcdHJldHVybiB0aGlzLmRlZmF1bHRSZXF1ZXN0KFxuXHRcdFx0XHRmQ2FsbGJhY2ssXG5cdFx0XHRcdCdNZXNzYWdlTGlzdCcsXG5cdFx0XHRcdHt9LFxuXHRcdFx0XHQnJyA9PT0gc1NlYXJjaCA/IERFRkFVTFRfQUpBWF9USU1FT1VUIDogU0VBUkNIX0FKQVhfVElNRU9VVCxcblx0XHRcdFx0J01lc3NhZ2VMaXN0LycgK1xuXHRcdFx0XHRcdHN1YlF1ZXJ5UHJlZml4KCkgK1xuXHRcdFx0XHRcdCcvJyArXG5cdFx0XHRcdFx0QmFzZTY0LnVybHNhZmVfZW5jb2RlKFxuXHRcdFx0XHRcdFx0W1xuXHRcdFx0XHRcdFx0XHRzRm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHRcdFx0XHRcdGlPZmZzZXQsXG5cdFx0XHRcdFx0XHRcdGlMaW1pdCxcblx0XHRcdFx0XHRcdFx0c1NlYXJjaCxcblx0XHRcdFx0XHRcdFx0QXBwU3RvcmUucHJvamVjdEhhc2goKSxcblx0XHRcdFx0XHRcdFx0Zm9sZGVySGFzaCxcblx0XHRcdFx0XHRcdFx0aW5ib3hVaWROZXh0LFxuXHRcdFx0XHRcdFx0XHR1c2VUaHJlYWRzID8gJzEnIDogJzAnLFxuXHRcdFx0XHRcdFx0XHR1c2VUaHJlYWRzID8gc1RocmVhZFVpZCA6ICcnXG5cdFx0XHRcdFx0XHRdLmpvaW4oU3RyaW5nLmZyb21DaGFyQ29kZSgwKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRiU2lsZW50ID8gW10gOiBbJ01lc3NhZ2VMaXN0J11cblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMuZGVmYXVsdFJlcXVlc3QoXG5cdFx0XHRmQ2FsbGJhY2ssXG5cdFx0XHQnTWVzc2FnZUxpc3QnLFxuXHRcdFx0e1xuXHRcdFx0XHRGb2xkZXI6IHNGb2xkZXJGdWxsTmFtZVJhdyxcblx0XHRcdFx0T2Zmc2V0OiBpT2Zmc2V0LFxuXHRcdFx0XHRMaW1pdDogaUxpbWl0LFxuXHRcdFx0XHRTZWFyY2g6IHNTZWFyY2gsXG5cdFx0XHRcdFVpZE5leHQ6IGluYm94VWlkTmV4dCxcblx0XHRcdFx0VXNlVGhyZWFkczogdXNlVGhyZWFkcyA/ICcxJyA6ICcwJyxcblx0XHRcdFx0VGhyZWFkVWlkOiB1c2VUaHJlYWRzID8gc1RocmVhZFVpZCA6ICcnXG5cdFx0XHR9LFxuXHRcdFx0JycgPT09IHNTZWFyY2ggPyBERUZBVUxUX0FKQVhfVElNRU9VVCA6IFNFQVJDSF9BSkFYX1RJTUVPVVQsXG5cdFx0XHQnJyxcblx0XHRcdGJTaWxlbnQgPyBbXSA6IFsnTWVzc2FnZUxpc3QnXVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge0FycmF5fSBhRG93bmxvYWRzXG5cdCAqL1xuXHRtZXNzYWdlVXBsb2FkQXR0YWNobWVudHMoZkNhbGxiYWNrLCBhRG93bmxvYWRzKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChcblx0XHRcdGZDYWxsYmFjayxcblx0XHRcdCdNZXNzYWdlVXBsb2FkQXR0YWNobWVudHMnLFxuXHRcdFx0e1xuXHRcdFx0XHQnQXR0YWNobWVudHMnOiBhRG93bmxvYWRzXG5cdFx0XHR9LFxuXHRcdFx0OTk5MDAwXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtudW1iZXJ9IGlVaWRcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRtZXNzYWdlKGZDYWxsYmFjaywgc0ZvbGRlckZ1bGxOYW1lUmF3LCBpVWlkKSB7XG5cdFx0c0ZvbGRlckZ1bGxOYW1lUmF3ID0gcFN0cmluZyhzRm9sZGVyRnVsbE5hbWVSYXcpO1xuXHRcdGlVaWQgPSBwSW50KGlVaWQpO1xuXG5cdFx0aWYgKGdldEZvbGRlckZyb21DYWNoZUxpc3Qoc0ZvbGRlckZ1bGxOYW1lUmF3KSAmJiAwIDwgaVVpZCkge1xuXHRcdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChcblx0XHRcdFx0ZkNhbGxiYWNrLFxuXHRcdFx0XHQnTWVzc2FnZScsXG5cdFx0XHRcdHt9LFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHQnTWVzc2FnZS8nICtcblx0XHRcdFx0XHRzdWJRdWVyeVByZWZpeCgpICtcblx0XHRcdFx0XHQnLycgK1xuXHRcdFx0XHRcdEJhc2U2NC51cmxzYWZlX2VuY29kZShcblx0XHRcdFx0XHRcdFtcblx0XHRcdFx0XHRcdFx0c0ZvbGRlckZ1bGxOYW1lUmF3LFxuXHRcdFx0XHRcdFx0XHRpVWlkLFxuXHRcdFx0XHRcdFx0XHRBcHBTdG9yZS5wcm9qZWN0SGFzaCgpLFxuXHRcdFx0XHRcdFx0XHRBcHBTdG9yZS50aHJlYWRzQWxsb3dlZCgpICYmIFNldHRpbmdzU3RvcmUudXNlVGhyZWFkcygpID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRdLmpvaW4oU3RyaW5nLmZyb21DaGFyQ29kZSgwKSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRbJ01lc3NhZ2UnXVxuXHRcdFx0KTtcblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtBcnJheX0gYUV4dGVybmFsc1xuXHQgKi9cblx0Y29tcG9zZVVwbG9hZEV4dGVybmFscyhmQ2FsbGJhY2ssIGFFeHRlcm5hbHMpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KFxuXHRcdFx0ZkNhbGxiYWNrLFxuXHRcdFx0J0NvbXBvc2VVcGxvYWRFeHRlcm5hbHMnLFxuXHRcdFx0e1xuXHRcdFx0XHQnRXh0ZXJuYWxzJzogYUV4dGVybmFsc1xuXHRcdFx0fSxcblx0XHRcdDk5OTAwMFxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1VybFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0FjY2Vzc1Rva2VuXG5cdCAqL1xuXHRjb21wb3NlVXBsb2FkRHJpdmUoZkNhbGxiYWNrLCBzVXJsLCBzQWNjZXNzVG9rZW4pIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KFxuXHRcdFx0ZkNhbGxiYWNrLFxuXHRcdFx0J0NvbXBvc2VVcGxvYWREcml2ZScsXG5cdFx0XHR7XG5cdFx0XHRcdCdBY2Nlc3NUb2tlbic6IHNBY2Nlc3NUb2tlbixcblx0XHRcdFx0J1VybCc6IHNVcmxcblx0XHRcdH0sXG5cdFx0XHQ5OTkwMDBcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlclxuXHQgKiBAcGFyYW0ge0FycmF5PX0gbGlzdCA9IFtdXG5cdCAqL1xuXHRmb2xkZXJJbmZvcm1hdGlvbihmQ2FsbGJhY2ssIGZvbGRlciwgbGlzdCA9IFtdKSB7XG5cdFx0bGV0IHJlcXVlc3QgPSB0cnVlO1xuXHRcdGNvbnN0IHVpZHMgPSBbXTtcblxuXHRcdGlmIChpc0FycmF5KGxpc3QpICYmIDAgPCBsaXN0Lmxlbmd0aCkge1xuXHRcdFx0cmVxdWVzdCA9IGZhbHNlO1xuXHRcdFx0Xy5lYWNoKGxpc3QsIChtZXNzYWdlTGlzdEl0ZW0pID0+IHtcblx0XHRcdFx0aWYgKCFnZXRNZXNzYWdlRmxhZ3NGcm9tQ2FjaGUobWVzc2FnZUxpc3RJdGVtLmZvbGRlckZ1bGxOYW1lUmF3LCBtZXNzYWdlTGlzdEl0ZW0udWlkKSkge1xuXHRcdFx0XHRcdHVpZHMucHVzaChtZXNzYWdlTGlzdEl0ZW0udWlkKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICgwIDwgbWVzc2FnZUxpc3RJdGVtLnRocmVhZHMoKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRfLmVhY2gobWVzc2FnZUxpc3RJdGVtLnRocmVhZHMoKSwgKHVpZCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKCFnZXRNZXNzYWdlRmxhZ3NGcm9tQ2FjaGUobWVzc2FnZUxpc3RJdGVtLmZvbGRlckZ1bGxOYW1lUmF3LCB1aWQpKSB7XG5cdFx0XHRcdFx0XHRcdHVpZHMucHVzaCh1aWQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKDAgPCB1aWRzLmxlbmd0aCkge1xuXHRcdFx0XHRyZXF1ZXN0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAocmVxdWVzdCkge1xuXHRcdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdGb2xkZXJJbmZvcm1hdGlvbicsIHtcblx0XHRcdFx0J0ZvbGRlcic6IGZvbGRlcixcblx0XHRcdFx0J0ZsYWdzVWlkcyc6IGlzQXJyYXkodWlkcykgPyB1aWRzLmpvaW4oJywnKSA6ICcnLFxuXHRcdFx0XHQnVWlkTmV4dCc6IGdldEZvbGRlckluYm94TmFtZSgpID09PSBmb2xkZXIgPyBnZXRGb2xkZXJVaWROZXh0KGZvbGRlcikgOiAnJ1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmIChTZXR0aW5nc1N0b3JlLnVzZVRocmVhZHMoKSkge1xuXHRcdFx0Z2V0QXBwKCkucmVsb2FkRmxhZ3NDdXJyZW50TWVzc2FnZUxpc3RBbmRNZXNzYWdlRnJvbUNhY2hlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtBcnJheX0gYUZvbGRlcnNcblx0ICovXG5cdGZvbGRlckluZm9ybWF0aW9uTXVsdGlwbHkoZkNhbGxiYWNrLCBhRm9sZGVycykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnRm9sZGVySW5mb3JtYXRpb25NdWx0aXBseScsIHtcblx0XHRcdCdGb2xkZXJzJzogYUZvbGRlcnNcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRsb2dvdXQoZkNhbGxiYWNrKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdMb2dvdXQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtBcnJheX0gYVVpZHNcblx0ICogQHBhcmFtIHtib29sZWFufSBiU2V0RmxhZ2dlZFxuXHQgKi9cblx0bWVzc2FnZVNldEZsYWdnZWQoZkNhbGxiYWNrLCBzRm9sZGVyRnVsbE5hbWVSYXcsIGFVaWRzLCBiU2V0RmxhZ2dlZCkge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnTWVzc2FnZVNldEZsYWdnZWQnLCB7XG5cdFx0XHQnRm9sZGVyJzogc0ZvbGRlckZ1bGxOYW1lUmF3LFxuXHRcdFx0J1VpZHMnOiBhVWlkcy5qb2luKCcsJyksXG5cdFx0XHQnU2V0QWN0aW9uJzogYlNldEZsYWdnZWQgPyAnMScgOiAnMCdcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtBcnJheX0gYVVpZHNcblx0ICogQHBhcmFtIHtib29sZWFufSBiU2V0U2VlblxuXHQgKi9cblx0bWVzc2FnZVNldFNlZW4oZkNhbGxiYWNrLCBzRm9sZGVyRnVsbE5hbWVSYXcsIGFVaWRzLCBiU2V0U2Vlbikge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnTWVzc2FnZVNldFNlZW4nLCB7XG5cdFx0XHQnRm9sZGVyJzogc0ZvbGRlckZ1bGxOYW1lUmF3LFxuXHRcdFx0J1VpZHMnOiBhVWlkcy5qb2luKCcsJyksXG5cdFx0XHQnU2V0QWN0aW9uJzogYlNldFNlZW4gPyAnMScgOiAnMCdcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtib29sZWFufSBiU2V0U2VlblxuXHQgKiBAcGFyYW0ge0FycmF5fSBhVGhyZWFkVWlkcyA9IG51bGxcblx0ICovXG5cdG1lc3NhZ2VTZXRTZWVuVG9BbGwoZkNhbGxiYWNrLCBzRm9sZGVyRnVsbE5hbWVSYXcsIGJTZXRTZWVuLCBhVGhyZWFkVWlkcyA9IG51bGwpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ01lc3NhZ2VTZXRTZWVuVG9BbGwnLCB7XG5cdFx0XHQnRm9sZGVyJzogc0ZvbGRlckZ1bGxOYW1lUmF3LFxuXHRcdFx0J1NldEFjdGlvbic6IGJTZXRTZWVuID8gJzEnIDogJzAnLFxuXHRcdFx0J1RocmVhZFVpZHMnOiBhVGhyZWFkVWlkcyA/IGFUaHJlYWRVaWRzLmpvaW4oJywnKSA6ICcnXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0lkZW50aXR5SURcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNNZXNzYWdlRm9sZGVyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzTWVzc2FnZVVpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0RyYWZ0Rm9sZGVyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzVG9cblx0ICogQHBhcmFtIHtzdHJpbmd9IHNDY1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0JjY1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1JlcGx5VG9cblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTdWJqZWN0XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYlRleHRJc0h0bWxcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNUZXh0XG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFBdHRhY2htZW50c1xuXHQgKiBAcGFyYW0geyhBcnJheXxudWxsKX0gYURyYWZ0SW5mb1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0luUmVwbHlUb1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1JlZmVyZW5jZXNcblx0ICogQHBhcmFtIHtib29sZWFufSBiTWFya0FzSW1wb3J0YW50XG5cdCAqL1xuXHRzYXZlTWVzc2FnZShcblx0XHRmQ2FsbGJhY2ssXG5cdFx0c0lkZW50aXR5SUQsXG5cdFx0c01lc3NhZ2VGb2xkZXIsXG5cdFx0c01lc3NhZ2VVaWQsXG5cdFx0c0RyYWZ0Rm9sZGVyLFxuXHRcdHNUbyxcblx0XHRzQ2MsXG5cdFx0c0JjYyxcblx0XHRzUmVwbHlUbyxcblx0XHRzU3ViamVjdCxcblx0XHRiVGV4dElzSHRtbCxcblx0XHRzVGV4dCxcblx0XHRhQXR0YWNobWVudHMsXG5cdFx0YURyYWZ0SW5mbyxcblx0XHRzSW5SZXBseVRvLFxuXHRcdHNSZWZlcmVuY2VzLFxuXHRcdGJNYXJrQXNJbXBvcnRhbnRcblx0KSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChcblx0XHRcdGZDYWxsYmFjayxcblx0XHRcdCdTYXZlTWVzc2FnZScsXG5cdFx0XHR7XG5cdFx0XHRcdCdJZGVudGl0eUlEJzogc0lkZW50aXR5SUQsXG5cdFx0XHRcdCdNZXNzYWdlRm9sZGVyJzogc01lc3NhZ2VGb2xkZXIsXG5cdFx0XHRcdCdNZXNzYWdlVWlkJzogc01lc3NhZ2VVaWQsXG5cdFx0XHRcdCdEcmFmdEZvbGRlcic6IHNEcmFmdEZvbGRlcixcblx0XHRcdFx0J1RvJzogc1RvLFxuXHRcdFx0XHQnQ2MnOiBzQ2MsXG5cdFx0XHRcdCdCY2MnOiBzQmNjLFxuXHRcdFx0XHQnUmVwbHlUbyc6IHNSZXBseVRvLFxuXHRcdFx0XHQnU3ViamVjdCc6IHNTdWJqZWN0LFxuXHRcdFx0XHQnVGV4dElzSHRtbCc6IGJUZXh0SXNIdG1sID8gJzEnIDogJzAnLFxuXHRcdFx0XHQnVGV4dCc6IHNUZXh0LFxuXHRcdFx0XHQnRHJhZnRJbmZvJzogYURyYWZ0SW5mbyxcblx0XHRcdFx0J0luUmVwbHlUbyc6IHNJblJlcGx5VG8sXG5cdFx0XHRcdCdSZWZlcmVuY2VzJzogc1JlZmVyZW5jZXMsXG5cdFx0XHRcdCdNYXJrQXNJbXBvcnRhbnQnOiBiTWFya0FzSW1wb3J0YW50ID8gJzEnIDogJzAnLFxuXHRcdFx0XHQnQXR0YWNobWVudHMnOiBhQXR0YWNobWVudHNcblx0XHRcdH0sXG5cdFx0XHRTQVZFX01FU1NBR0VfQUpBWF9USU1FT1VUXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzTWVzc2FnZUZvbGRlclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc01lc3NhZ2VVaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNSZWFkUmVjZWlwdFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1N1YmplY3Rcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNUZXh0XG5cdCAqL1xuXHRzZW5kUmVhZFJlY2VpcHRNZXNzYWdlKGZDYWxsYmFjaywgc01lc3NhZ2VGb2xkZXIsIHNNZXNzYWdlVWlkLCBzUmVhZFJlY2VpcHQsIHNTdWJqZWN0LCBzVGV4dCkge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnU2VuZFJlYWRSZWNlaXB0TWVzc2FnZScsIHtcblx0XHRcdCdNZXNzYWdlRm9sZGVyJzogc01lc3NhZ2VGb2xkZXIsXG5cdFx0XHQnTWVzc2FnZVVpZCc6IHNNZXNzYWdlVWlkLFxuXHRcdFx0J1JlYWRSZWNlaXB0Jzogc1JlYWRSZWNlaXB0LFxuXHRcdFx0J1N1YmplY3QnOiBzU3ViamVjdCxcblx0XHRcdCdUZXh0Jzogc1RleHRcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzSWRlbnRpdHlJRFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc01lc3NhZ2VGb2xkZXJcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNNZXNzYWdlVWlkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzU2VudEZvbGRlclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1RvXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzQ2Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IHNCY2Ncblx0ICogQHBhcmFtIHtzdHJpbmd9IHNSZXBseVRvXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzU3ViamVjdFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJUZXh0SXNIdG1sXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzVGV4dFxuXHQgKiBAcGFyYW0ge0FycmF5fSBhQXR0YWNobWVudHNcblx0ICogQHBhcmFtIHsoQXJyYXl8bnVsbCl9IGFEcmFmdEluZm9cblx0ICogQHBhcmFtIHtzdHJpbmd9IHNJblJlcGx5VG9cblx0ICogQHBhcmFtIHtzdHJpbmd9IHNSZWZlcmVuY2VzXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYlJlcXVlc3REc25cblx0ICogQHBhcmFtIHtib29sZWFufSBiUmVxdWVzdFJlYWRSZWNlaXB0XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYk1hcmtBc0ltcG9ydGFudFxuXHQgKi9cblx0c2VuZE1lc3NhZ2UoXG5cdFx0ZkNhbGxiYWNrLFxuXHRcdHNJZGVudGl0eUlELFxuXHRcdHNNZXNzYWdlRm9sZGVyLFxuXHRcdHNNZXNzYWdlVWlkLFxuXHRcdHNTZW50Rm9sZGVyLFxuXHRcdHNUbyxcblx0XHRzQ2MsXG5cdFx0c0JjYyxcblx0XHRzUmVwbHlUbyxcblx0XHRzU3ViamVjdCxcblx0XHRiVGV4dElzSHRtbCxcblx0XHRzVGV4dCxcblx0XHRhQXR0YWNobWVudHMsXG5cdFx0YURyYWZ0SW5mbyxcblx0XHRzSW5SZXBseVRvLFxuXHRcdHNSZWZlcmVuY2VzLFxuXHRcdGJSZXF1ZXN0RHNuLFxuXHRcdGJSZXF1ZXN0UmVhZFJlY2VpcHQsXG5cdFx0Yk1hcmtBc0ltcG9ydGFudFxuXHQpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KFxuXHRcdFx0ZkNhbGxiYWNrLFxuXHRcdFx0J1NlbmRNZXNzYWdlJyxcblx0XHRcdHtcblx0XHRcdFx0J0lkZW50aXR5SUQnOiBzSWRlbnRpdHlJRCxcblx0XHRcdFx0J01lc3NhZ2VGb2xkZXInOiBzTWVzc2FnZUZvbGRlcixcblx0XHRcdFx0J01lc3NhZ2VVaWQnOiBzTWVzc2FnZVVpZCxcblx0XHRcdFx0J1NlbnRGb2xkZXInOiBzU2VudEZvbGRlcixcblx0XHRcdFx0J1RvJzogc1RvLFxuXHRcdFx0XHQnQ2MnOiBzQ2MsXG5cdFx0XHRcdCdCY2MnOiBzQmNjLFxuXHRcdFx0XHQnUmVwbHlUbyc6IHNSZXBseVRvLFxuXHRcdFx0XHQnU3ViamVjdCc6IHNTdWJqZWN0LFxuXHRcdFx0XHQnVGV4dElzSHRtbCc6IGJUZXh0SXNIdG1sID8gJzEnIDogJzAnLFxuXHRcdFx0XHQnVGV4dCc6IHNUZXh0LFxuXHRcdFx0XHQnRHJhZnRJbmZvJzogYURyYWZ0SW5mbyxcblx0XHRcdFx0J0luUmVwbHlUbyc6IHNJblJlcGx5VG8sXG5cdFx0XHRcdCdSZWZlcmVuY2VzJzogc1JlZmVyZW5jZXMsXG5cdFx0XHRcdCdEc24nOiBiUmVxdWVzdERzbiA/ICcxJyA6ICcwJyxcblx0XHRcdFx0J1JlYWRSZWNlaXB0UmVxdWVzdCc6IGJSZXF1ZXN0UmVhZFJlY2VpcHQgPyAnMScgOiAnMCcsXG5cdFx0XHRcdCdNYXJrQXNJbXBvcnRhbnQnOiBiTWFya0FzSW1wb3J0YW50ID8gJzEnIDogJzAnLFxuXHRcdFx0XHQnQXR0YWNobWVudHMnOiBhQXR0YWNobWVudHNcblx0XHRcdH0sXG5cdFx0XHRTRU5EX01FU1NBR0VfQUpBWF9USU1FT1VUXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvRGF0YVxuXHQgKi9cblx0c2F2ZVN5c3RlbUZvbGRlcnMoZkNhbGxiYWNrLCBvRGF0YSkge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnU3lzdGVtRm9sZGVyc1VwZGF0ZScsIG9EYXRhKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvRGF0YVxuXHQgKi9cblx0c2F2ZVNldHRpbmdzKGZDYWxsYmFjaywgb0RhdGEpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ1NldHRpbmdzVXBkYXRlJywgb0RhdGEpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IHZhbHVlRm5cblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZuXG5cdCAqL1xuXHRzYXZlU2V0dGluZ3NIZWxwZXIoa2V5LCB2YWx1ZUZuLCBmbikge1xuXHRcdHJldHVybiAodmFsdWUpID0+IHtcblx0XHRcdHRoaXMuc2F2ZVNldHRpbmdzKGZuIHx8IG51bGwsIHtcblx0XHRcdFx0W2tleV06IHZhbHVlRm4gPyB2YWx1ZUZuKHZhbHVlKSA6IHZhbHVlXG5cdFx0XHR9KTtcblx0XHR9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IHByZXZQYXNzd29yZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmV3UGFzc3dvcmRcblx0ICovXG5cdGNoYW5nZVBhc3N3b3JkKGZDYWxsYmFjaywgcHJldlBhc3N3b3JkLCBuZXdQYXNzd29yZCkge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnQ2hhbmdlUGFzc3dvcmQnLCB7XG5cdFx0XHQnUHJldlBhc3N3b3JkJzogcHJldlBhc3N3b3JkLFxuXHRcdFx0J05ld1Bhc3N3b3JkJzogbmV3UGFzc3dvcmRcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyRnVsbE5hbWVSYXdcblx0ICovXG5cdGZvbGRlckNsZWFyKGZDYWxsYmFjaywgc0ZvbGRlckZ1bGxOYW1lUmF3KSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdGb2xkZXJDbGVhcicsIHtcblx0XHRcdCdGb2xkZXInOiBzRm9sZGVyRnVsbE5hbWVSYXdcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtib29sZWFufSBiU3Vic2NyaWJlXG5cdCAqL1xuXHRmb2xkZXJTZXRTdWJzY3JpYmUoZkNhbGxiYWNrLCBzRm9sZGVyRnVsbE5hbWVSYXcsIGJTdWJzY3JpYmUpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0ZvbGRlclN1YnNjcmliZScsIHtcblx0XHRcdCdGb2xkZXInOiBzRm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHQnU3Vic2NyaWJlJzogYlN1YnNjcmliZSA/ICcxJyA6ICcwJ1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNGb2xkZXJGdWxsTmFtZVJhd1xuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJDaGVja2FibGVcblx0ICovXG5cdGZvbGRlclNldENoZWNrYWJsZShmQ2FsbGJhY2ssIHNGb2xkZXJGdWxsTmFtZVJhdywgYkNoZWNrYWJsZSkge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnRm9sZGVyQ2hlY2thYmxlJywge1xuXHRcdFx0J0ZvbGRlcic6IHNGb2xkZXJGdWxsTmFtZVJhdyxcblx0XHRcdCdDaGVja2FibGUnOiBiQ2hlY2thYmxlID8gJzEnIDogJzAnXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0ZvbGRlclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1RvRm9sZGVyXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFVaWRzXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gc0xlYXJuaW5nXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGJNYXJrQXNSZWFkXG5cdCAqL1xuXHRtZXNzYWdlc01vdmUoZkNhbGxiYWNrLCBzRm9sZGVyLCBzVG9Gb2xkZXIsIGFVaWRzLCBzTGVhcm5pbmcsIGJNYXJrQXNSZWFkKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChcblx0XHRcdGZDYWxsYmFjayxcblx0XHRcdCdNZXNzYWdlTW92ZScsXG5cdFx0XHR7XG5cdFx0XHRcdCdGcm9tRm9sZGVyJzogc0ZvbGRlcixcblx0XHRcdFx0J1RvRm9sZGVyJzogc1RvRm9sZGVyLFxuXHRcdFx0XHQnVWlkcyc6IGFVaWRzLmpvaW4oJywnKSxcblx0XHRcdFx0J01hcmtBc1JlYWQnOiBiTWFya0FzUmVhZCA/ICcxJyA6ICcwJyxcblx0XHRcdFx0J0xlYXJuaW5nJzogc0xlYXJuaW5nIHx8ICcnXG5cdFx0XHR9LFxuXHRcdFx0bnVsbCxcblx0XHRcdCcnLFxuXHRcdFx0WydNZXNzYWdlTGlzdCddXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzVG9Gb2xkZXJcblx0ICogQHBhcmFtIHtBcnJheX0gYVVpZHNcblx0ICovXG5cdG1lc3NhZ2VzQ29weShmQ2FsbGJhY2ssIHNGb2xkZXIsIHNUb0ZvbGRlciwgYVVpZHMpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ01lc3NhZ2VDb3B5Jywge1xuXHRcdFx0J0Zyb21Gb2xkZXInOiBzRm9sZGVyLFxuXHRcdFx0J1RvRm9sZGVyJzogc1RvRm9sZGVyLFxuXHRcdFx0J1VpZHMnOiBhVWlkcy5qb2luKCcsJylcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRm9sZGVyXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFVaWRzXG5cdCAqL1xuXHRtZXNzYWdlc0RlbGV0ZShmQ2FsbGJhY2ssIHNGb2xkZXIsIGFVaWRzKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChcblx0XHRcdGZDYWxsYmFjayxcblx0XHRcdCdNZXNzYWdlRGVsZXRlJyxcblx0XHRcdHtcblx0XHRcdFx0J0ZvbGRlcic6IHNGb2xkZXIsXG5cdFx0XHRcdCdVaWRzJzogYVVpZHMuam9pbignLCcpXG5cdFx0XHR9LFxuXHRcdFx0bnVsbCxcblx0XHRcdCcnLFxuXHRcdFx0WydNZXNzYWdlTGlzdCddXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRhcHBEZWxheVN0YXJ0KGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnQXBwRGVsYXlTdGFydCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdHF1b3RhKGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnUXVvdGEnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBpT2Zmc2V0XG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBpTGltaXRcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNTZWFyY2hcblx0ICovXG5cdGNvbnRhY3RzKGZDYWxsYmFjaywgaU9mZnNldCwgaUxpbWl0LCBzU2VhcmNoKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChcblx0XHRcdGZDYWxsYmFjayxcblx0XHRcdCdDb250YWN0cycsXG5cdFx0XHR7XG5cdFx0XHRcdCdPZmZzZXQnOiBpT2Zmc2V0LFxuXHRcdFx0XHQnTGltaXQnOiBpTGltaXQsXG5cdFx0XHRcdCdTZWFyY2gnOiBzU2VhcmNoXG5cdFx0XHR9LFxuXHRcdFx0bnVsbCxcblx0XHRcdCcnLFxuXHRcdFx0WydDb250YWN0cyddXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUmVxdWVzdFVpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1VpZFxuXHQgKiBAcGFyYW0ge0FycmF5fSBhUHJvcGVydGllc1xuXHQgKi9cblx0Y29udGFjdFNhdmUoZkNhbGxiYWNrLCBzUmVxdWVzdFVpZCwgc1VpZCwgYVByb3BlcnRpZXMpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0NvbnRhY3RTYXZlJywge1xuXHRcdFx0J1JlcXVlc3RVaWQnOiBzUmVxdWVzdFVpZCxcblx0XHRcdCdVaWQnOiB0cmltKHNVaWQpLFxuXHRcdFx0J1Byb3BlcnRpZXMnOiBhUHJvcGVydGllc1xuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtBcnJheX0gYVVpZHNcblx0ICovXG5cdGNvbnRhY3RzRGVsZXRlKGZDYWxsYmFjaywgYVVpZHMpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0NvbnRhY3RzRGVsZXRlJywge1xuXHRcdFx0J1VpZHMnOiBhVWlkcy5qb2luKCcsJylcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzUXVlcnlcblx0ICogQHBhcmFtIHtudW1iZXJ9IGlQYWdlXG5cdCAqL1xuXHRzdWdnZXN0aW9ucyhmQ2FsbGJhY2ssIHNRdWVyeSwgaVBhZ2UpIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KFxuXHRcdFx0ZkNhbGxiYWNrLFxuXHRcdFx0J1N1Z2dlc3Rpb25zJyxcblx0XHRcdHtcblx0XHRcdFx0J1F1ZXJ5Jzogc1F1ZXJ5LFxuXHRcdFx0XHQnUGFnZSc6IGlQYWdlXG5cdFx0XHR9LFxuXHRcdFx0bnVsbCxcblx0XHRcdCcnLFxuXHRcdFx0WydTdWdnZXN0aW9ucyddXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRjbGVhclVzZXJCYWNrZ3JvdW5kKGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnQ2xlYXJVc2VyQmFja2dyb3VuZCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdGZhY2Vib29rVXNlcihmQ2FsbGJhY2spIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ1NvY2lhbEZhY2Vib29rVXNlckluZm9ybWF0aW9uJyk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKi9cblx0ZmFjZWJvb2tEaXNjb25uZWN0KGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnU29jaWFsRmFjZWJvb2tEaXNjb25uZWN0Jyk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKi9cblx0dHdpdHRlclVzZXIoZkNhbGxiYWNrKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdTb2NpYWxUd2l0dGVyVXNlckluZm9ybWF0aW9uJyk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/RnVuY3Rpb259IGZDYWxsYmFja1xuXHQgKi9cblx0dHdpdHRlckRpc2Nvbm5lY3QoZkNhbGxiYWNrKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdTb2NpYWxUd2l0dGVyRGlzY29ubmVjdCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdGdvb2dsZVVzZXIoZkNhbGxiYWNrKSB7XG5cdFx0dGhpcy5kZWZhdWx0UmVxdWVzdChmQ2FsbGJhY2ssICdTb2NpYWxHb29nbGVVc2VySW5mb3JtYXRpb24nKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRnb29nbGVEaXNjb25uZWN0KGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnU29jaWFsR29vZ2xlRGlzY29ubmVjdCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdHNvY2lhbFVzZXJzKGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnU29jaWFsVXNlcnMnKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgUmVtb3RlVXNlckFqYXgoKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvbWFwXCIpOyIsImltcG9ydCBfZm9yRWFjaEluc3RhbmNlUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy9pbnN0YW5jZS9mb3ItZWFjaFwiO1xuaW1wb3J0IF9PYmplY3Qka2V5cyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzL29iamVjdC9rZXlzXCI7XG5pbXBvcnQgX3JlZHVjZUluc3RhbmNlUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy9pbnN0YW5jZS9yZWR1Y2VcIjtcbmltcG9ydCBfcmV2ZXJzZUluc3RhbmNlUHJvcGVydHkgZnJvbSBcIkBiYWJlbC9ydW50aW1lLWNvcmVqczMvY29yZS1qcy9pbnN0YW5jZS9yZXZlcnNlXCI7XG5pbXBvcnQgX3NsaWNlSW5zdGFuY2VQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzL2luc3RhbmNlL3NsaWNlXCI7XG5pbXBvcnQgX09iamVjdCRkZWZpbmVQcm9wZXJ0eSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVjb3JhdG9ycywgZGVzY3JpcHRvciwgY29udGV4dCkge1xuICB2YXIgX2NvbnRleHQsIF9jb250ZXh0MiwgX2NvbnRleHQzO1xuXG4gIHZhciBkZXNjID0ge307XG5cbiAgX2ZvckVhY2hJbnN0YW5jZVByb3BlcnR5KF9jb250ZXh0ID0gX09iamVjdCRrZXlzKGRlc2NyaXB0b3IpKS5jYWxsKF9jb250ZXh0LCBmdW5jdGlvbiAoa2V5KSB7XG4gICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldO1xuICB9KTtcblxuICBkZXNjLmVudW1lcmFibGUgPSAhIWRlc2MuZW51bWVyYWJsZTtcbiAgZGVzYy5jb25maWd1cmFibGUgPSAhIWRlc2MuY29uZmlndXJhYmxlO1xuXG4gIGlmICgndmFsdWUnIGluIGRlc2MgfHwgZGVzYy5pbml0aWFsaXplcikge1xuICAgIGRlc2Mud3JpdGFibGUgPSB0cnVlO1xuICB9XG5cbiAgZGVzYyA9IF9yZWR1Y2VJbnN0YW5jZVByb3BlcnR5KF9jb250ZXh0MiA9IF9yZXZlcnNlSW5zdGFuY2VQcm9wZXJ0eShfY29udGV4dDMgPSBfc2xpY2VJbnN0YW5jZVByb3BlcnR5KGRlY29yYXRvcnMpLmNhbGwoZGVjb3JhdG9ycykpLmNhbGwoX2NvbnRleHQzKSkuY2FsbChfY29udGV4dDIsIGZ1bmN0aW9uIChkZXNjLCBkZWNvcmF0b3IpIHtcbiAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7XG4gIH0sIGRlc2MpO1xuXG4gIGlmIChjb250ZXh0ICYmIGRlc2MuaW5pdGlhbGl6ZXIgIT09IHZvaWQgMCkge1xuICAgIGRlc2MudmFsdWUgPSBkZXNjLmluaXRpYWxpemVyID8gZGVzYy5pbml0aWFsaXplci5jYWxsKGNvbnRleHQpIDogdm9pZCAwO1xuICAgIGRlc2MuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoZGVzYy5pbml0aWFsaXplciA9PT0gdm9pZCAwKSB7XG4gICAgX09iamVjdCRkZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTtcblxuICAgIGRlc2MgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRlc2M7XG59IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9vYmplY3QvZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gd2luZG93LmtleTsiLCIvKipcbiAqIEByZXR1cm5zIHtBcHBVc2VyfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBwKCkge1xuXHRyZXR1cm4gcmVxdWlyZSgnQXBwL1VzZXInKS5kZWZhdWx0O1xufVxuIiwiaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgeyBpc09iamVjdCwgaXNVbmQgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0ICogYXMgUGx1Z2lucyBmcm9tICdDb21tb24vUGx1Z2lucyc7XG5cbmNvbnN0IFNVQlMgPSB7fTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ3xPYmplY3R9IG5hbWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmNcbiAqIEBwYXJhbSB7T2JqZWN0PX0gY29udGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3ViKG5hbWUsIGZ1bmMsIGNvbnRleHQpIHtcblx0aWYgKGlzT2JqZWN0KG5hbWUpKSB7XG5cdFx0Y29udGV4dCA9IGZ1bmMgfHwgbnVsbDtcblx0XHRmdW5jID0gbnVsbDtcblxuXHRcdF8uZWFjaChuYW1lLCAoc3ViRnVuYywgc3ViTmFtZSkgPT4ge1xuXHRcdFx0c3ViKHN1Yk5hbWUsIHN1YkZ1bmMsIGNvbnRleHQpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdGlmIChpc1VuZChTVUJTW25hbWVdKSkge1xuXHRcdFx0U1VCU1tuYW1lXSA9IFtdO1xuXHRcdH1cblxuXHRcdFNVQlNbbmFtZV0ucHVzaChbZnVuYywgY29udGV4dF0pO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAqIEBwYXJhbSB7QXJyYXk9fSBhcmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwdWIobmFtZSwgYXJncykge1xuXHRQbHVnaW5zLnJ1bkhvb2soJ3JsLXB1YicsIFtuYW1lLCBhcmdzXSk7XG5cblx0aWYgKCFpc1VuZChTVUJTW25hbWVdKSkge1xuXHRcdF8uZWFjaChTVUJTW25hbWVdLCAoaXRlbXMpID0+IHtcblx0XHRcdGlmIChpdGVtc1swXSkge1xuXHRcdFx0XHRpdGVtc1swXS5hcHBseShpdGVtc1sxXSB8fCBudWxsLCBhcmdzIHx8IFtdKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIiwiZXhwb3J0IGNvbnN0IE1FU1NBR0VTX1BFUl9QQUdFID0gMjA7XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFU19QRVJfUEFHRV9WQUxVRVMgPSBbMTAsIDIwLCAzMCwgNTAsIDEwMF07XG5cbmV4cG9ydCBjb25zdCBDT05UQUNUU19QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9BSkFYX1RJTUVPVVQgPSAzMDAwMDtcblxuZXhwb3J0IGNvbnN0IFNFQVJDSF9BSkFYX1RJTUVPVVQgPSAzMDAwMDA7XG5cbmV4cG9ydCBjb25zdCBTRU5EX01FU1NBR0VfQUpBWF9USU1FT1VUID0gMzAwMDAwO1xuXG5leHBvcnQgY29uc3QgU0FWRV9NRVNTQUdFX0FKQVhfVElNRU9VVCA9IDIwMDAwMDtcblxuZXhwb3J0IGNvbnN0IENPTlRBQ1RTX1NZTkNfQUpBWF9USU1FT1VUID0gMjAwMDAwO1xuXG5leHBvcnQgY29uc3QgVU5VU0VEX09QVElPTl9WQUxVRSA9ICdfX1VOVVNFX18nO1xuXG5leHBvcnQgY29uc3QgQ0xJRU5UX1NJREVfU1RPUkFHRV9JTkRFWF9OQU1FID0gJ3JsY3NjJztcblxuZXhwb3J0IGNvbnN0IElNQVBfREVGQVVMVF9QT1JUID0gMTQzO1xuXG5leHBvcnQgY29uc3QgSU1BUF9ERUZBVUxUX1NFQ1VSRV9QT1JUID0gOTkzO1xuXG5leHBvcnQgY29uc3QgU01UUF9ERUZBVUxUX1BPUlQgPSAyNTtcblxuZXhwb3J0IGNvbnN0IFNNVFBfREVGQVVMVF9TRUNVUkVfUE9SVCA9IDQ2NTtcblxuZXhwb3J0IGNvbnN0IFNJRVZFX0RFRkFVTFRfUE9SVCA9IDQxOTA7XG5cbmV4cG9ydCBjb25zdCBNRVNTQUdFX0JPRFlfQ0FDSEVfTElNSVQgPSAxNTtcblxuZXhwb3J0IGNvbnN0IEFKQVhfRVJST1JfTElNSVQgPSA3O1xuXG5leHBvcnQgY29uc3QgVE9LRU5fRVJST1JfTElNSVQgPSAxMDtcblxuZXhwb3J0IGNvbnN0IFJBSU5MT09QX1RSSUFMX0tFWSA9ICdSQUlOTE9PUC1UUklBTC1LRVknO1xuXG4vKiBlc2xpbnQgbWF4LWxlbjogMCAqL1xuZXhwb3J0IGNvbnN0IERBVEFfSU1BR0VfVVNFUl9ET1RfUElDID1cblx0J2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQzRBQUFBdUNBWUFBQUJYdVNzM0FBQUhIa2xFUVZSb1E3VlpXMDhiVnhDZVhSdXdJYlRHWEl3TnRCQmFxandnVlVpUjhsRGxiemE5cWUxRHBWWjlhTlEvMEtwUGVhSkswN1NwY3VFZUNFbVVBT2JtMjFiZnJMOWxPTmpleFNZcldmYnVuajM3elhkbXZwa3o5b0lnQ0tURDBXZzB4UGQ5NFREUDgzUTB6dldhNTB2emtsU3JkYW5WYW5xZjQvRDg0R0JHcitGK09wM1M4ZnFvSnhMT2RuWmdUdnNPL25ZaGVuSEErVUM3Q1dGMXVYd2tiOSsrbGRQVFV3VmVyVmJWcUZRcXBSOFlQalEwSkNNakk1TE5EaWpvUmdQM1BRVnU1KzVFb3IyWEdMZzdJVjRHa0lkSEovTG16UnM1T0RpSXdOYnJkUjBPMEdDY3E0WHo0ZUZobVp5Y2xQNyt0RFFhSWlrL0JHNVhLUW40U3dHM3pKVExaWG45K3JVY2xJOFVIRDVZVm9ERE44YlN6WGhPTndMNDhmRnhHUjRlaWx6RlpUMXVGUklCNXlUOEJxQ2RuUjNaM2QwVlA5VW42WFJhd1lKcGdnVnJaQnYzOE1FNFhLdFVLbkx0MmpVcGxVb3kxUFIvbDNVN1Q2c1ZTQVFjZ01Ba2o4UERROW5lM3Bham95TVJMN3plS3NZWldIZ1dZREdtdjc4L21tZHdjRkErbUpsU2d6aUhEV3JFUnJzakVYRFhlZ1RpMXRaVytETHhJMmJ4SXJxRk5ZVFh5RHlDRndlTUFIQ3diOGU0Um5UTnVPc3FlM3Q3c3JhMjFwVEQwS2N0NjY2RThYbGNaeXp3OS9SVVVYSzVuSzVvVWluVVFJNlRRM2N5bk8vdjc4dnE2cXJLWENOd2xUaUpKcHlOR2MzblpIcDZ1cVYyZHdyUVdPQ3RaQkRBVjFaV3dzUWs3ZjB3aVFuNWtmZmJBdS8wL0tXQll6SUMxK1h1a2ZHeDBSR1ptcHBLbEMydElWMEJoNGFEY1pXN0hoa2ZIOHVyTExaTDdUMnBpaHZsa01Obno1NkZpYWRIeGljTDQxSXNGcE40MWJreHNZeGJSZEZvOWp3QjhLZFBuMTRKOEtuU3BCUUtoUXM2M25QbWJDVlJjQlVBUjJMcTFWVm1wa3N5TVRGeEFYamNFc1F5YmllZ0VTaW9uang1b3NDWk9lTmUxTzQrRWhDQVg3YlFTZ1FjeFJIVE1nQWdjejUrL0Rpcy9oTDR1SFUzL0I0WUdOQVNHSElLeHVFcWwwaytsMDVBZUlBRjF2UG56NVZ4RkZtZERsYUpyTXRaSVRKZVNzWENPVGxNdW5LeGpMdE1ZT0tOalExNThlSkZ1QXVLa1VPYjVzRXdnZmYxOVNrSlVCVmtUaFpVYm5YWnJ0Q0tCUTZnYm5XSWtqWnB5bmUzZWpBV29HbkE3SWN6NmlydkJMZ2JPTWljQ002VGt4UHgvTEFrYlhmZ1djc2F6dUUya0ZSc0tENVorQ2lxRHVtS25jcFp2aWVXY1M2ZERWRDh4aVlDTmZscEpkd2Nkd0pPZjlhaXJMbVZRN0RQek14SVlXTHNYR1hvVnFMdDVrME0zSzNKVVZQRFpkYldOenNDcDQ4VFBGZHZkblpXVXozMm5EaGE3Yko2M2tnQUpQelNkUmtzOS9LZjl4TUpBUTFncTJOcGFVbXkyWXo0emFyNG5RQzN4Yjk5QVF3Q2NHekxBQXd1aEc4WWlXdmNPS3RzK3I0R09lNW5NaG01ZWZPbTlsVUEzRTN2U1pKUnJLdkUwZm5Qdi8vSnk1Y3ZvNWNUSElQUWJTamhPb3FxNjlldlMxOWY2bHhES0s0K3NWaGlnWlB0S0pxYnJRZXF4ZDUrV1I0K2ZLZ3FnVDBrMlhYM25oaVBnRVRXWEZoWWtGenVQWjJ5VnExR1RTT1hwRTQ3L1ZqZ05uRDRtNEdHNy9MaHNUeDY5RWl3RDRWcjJNd0lJeGdiQUgxOGZLeDF5Zno4dkVvZ052R3RXbkN1aExaYTlVVEFyZVZXRnNIeS9iLytWcmJkbDdFNVJFTVFEMmpEb1ViQnl0eSsvWm5VNjRHa1UySHp5Skxoa3RVMWNMdjhuQVJna1lTMmQzYWpBZ3dHOHFVMm9MbURaOTJDTWFPam83SzR1Q2laZ2JEV2FSV2duWmhQeExock1VQ3ZyNjlyaXdLWmsxTEhGN1hxcldBTzloSnhINm96TnpjbkN4L1BxenRaZzltZjZTUU1zY0N0bTJDNWtlNEJHTWxIV1RVcDM2MDM2QUphakRWckZNekJyaGhXc2xRc1NyRllpT3FWcE1yaU5ZSWdxRlJxMmozRkFiL3pmZlQ2enV4Rlh4c056czNOVFhuMTZsVzRnWWlXOTZ3MUZ5ZWRGKzgzeEcvMkZOR0NScFU0TmphbU1zbitPWjl4RTVSWHFkYURkUHBpYjZSV0N6dXdLRjlSeHFJMkFWTlFCd1FZSm9LMHdkQmVqbnF0RWlrUDNwZlA1MVhqVVRFU2wxMkZxSkVLeHNFb3JBUllERDQ0T05UZUlEN1lwc0VuclJ2UWZXQUkyZThXZkRhVFVTSXdKMGlCQ21GT3RPVUFIdlZNUHAvVFB3dllGVllGSXVQOGwrREJnd2RhYTJNaXF3YTBHZ1l3ZmVNbHRvdmJEZmg2YzF2SWdNWWNsaVNzS3Y0SVdGcjZWREh4dmxkdkJBSCsxc0ErY25sNVdZT1BtbXI5aXIrMWw5STBDZ3oweWpoWGpmSkowSlJPbm1leldibDE2NWF5ci81ZnF3Y0JOcjdJZmhqTXFLY3ZFU1NNNGVSY0Nhc1EzYkROT2JtS1BMZEdVR3Bac04yNGNVTkxCbTl6YXp1NGQrK2U2cXBOQkZhVHVVUzI2VTVkcHVSMUN4eUE3SjlkZHJNUnFsejRwd0xMWWF3eW1QZCsrLzJQQUR0MnVnY0d3cTlnQ0NkaFE5NkM2eFd3YTZqMWNldXErSTBFaFcwaThNQUlWSmZlTDNkL0RWRDhFS2kxMlA2LzJTMmpWL0VjY1ZCNTRPL2Vqei85SEdDcG9CQk10YTVyWE1YTHU1M0QxWEF3amhYd3Z2ditoNEJBWFZlNGJPdTNPM0NoeEYwOExpWkZHM2ZlbDE5OUc5Q0gzZkx5cXYyNE5jQjQ0TVJocGRLNzg4VTNDcHlLd3NDdzU5MHhtZlNwenNCdDBGcWMzdWQzdnRaaWd4V2NWWkNrbFZwU2lOMHczcTVFL2g5VEdNSVV1QTMrRVFBQUFBQkpSVTVFcmtKZ2dnPT0nO1xuXG5leHBvcnQgY29uc3QgREFUQV9JTUFHRV9UUkFOU1BfUElDID1cblx0J2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFDMGxFUVZRSVcyTmtBQUlBQUFvQUFnZ0E5R2tBQUFBQVNVVk9SSzVDWUlJPSc7XG5cbmV4cG9ydCBjb25zdCBEQVRBX0lNQUdFX0xBWllfUExBQ0VIT0xERVJfUElDID1cblx0J2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQUVBQUFBQkNBWUFBQUFmRmNTSkFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc1FBQUE3RUFaVXJEaHNBQUFBTlNVUkJWQmhYWXpoOCtQQi9BQWZmQTBuTlB1Q0xBQUFBQUVsRlRrU3VRbUNDJztcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IGRlbGVnYXRlUnVuLCBpbkZvY3VzIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IEtleVN0YXRlLCBFdmVudEtleUNvZGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgJHdpbiwga2V5U2NvcGUgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0YkRpc2FiZUNsb3NlT25Fc2MgPSBmYWxzZTtcblx0c0RlZmF1bHRLZXlTY29wZSA9IEtleVN0YXRlLk5vbmU7XG5cdHNDdXJyZW50S2V5U2NvcGUgPSBLZXlTdGF0ZS5Ob25lO1xuXG5cdHZpZXdNb2RlbFZpc2liaWxpdHkgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0bW9kYWxWaXNpYmlsaXR5ID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgcmF0ZUxpbWl0OiAwIH0pO1xuXG5cdHZpZXdNb2RlbE5hbWUgPSAnJztcblx0dmlld01vZGVsTmFtZXMgPSBbXTtcblx0dmlld01vZGVsRG9tID0gbnVsbDtcblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRzdG9yZUFuZFNldEtleVNjb3BlKCkge1xuXHRcdHRoaXMuc0N1cnJlbnRLZXlTY29wZSA9IGtleVNjb3BlKCk7XG5cdFx0a2V5U2NvcGUodGhpcy5zRGVmYXVsdEtleVNjb3BlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdHJlc3RvcmVLZXlTY29wZSgpIHtcblx0XHRrZXlTY29wZSh0aGlzLnNDdXJyZW50S2V5U2NvcGUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0cmVnaXN0ZXJQb3B1cEtleURvd24oKSB7XG5cdFx0JHdpbi5vbigna2V5ZG93bicsIChldmVudCkgPT4ge1xuXHRcdFx0aWYgKGV2ZW50ICYmIHRoaXMubW9kYWxWaXNpYmlsaXR5ICYmIHRoaXMubW9kYWxWaXNpYmlsaXR5KCkpIHtcblx0XHRcdFx0aWYgKCF0aGlzLmJEaXNhYmVDbG9zZU9uRXNjICYmIEV2ZW50S2V5Q29kZS5Fc2MgPT09IGV2ZW50LmtleUNvZGUpIHtcblx0XHRcdFx0XHRkZWxlZ2F0ZVJ1bih0aGlzLCAnY2FuY2VsQ29tbWFuZCcpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fSBlbHNlIGlmIChFdmVudEtleUNvZGUuQmFja3NwYWNlID09PSBldmVudC5rZXlDb2RlICYmICFpbkZvY3VzKCkpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSk7XG5cdH1cblxuXHRjYW5jZWxDb21tYW5kKCkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eS1mdW5jdGlvblxuXHRjbG9zZUNvbW1hbmQoKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXG59XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxuY2xhc3MgU29jaWFsU3RvcmUge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmdvb2dsZSA9IHt9O1xuXHRcdHRoaXMudHdpdHRlciA9IHt9O1xuXHRcdHRoaXMuZmFjZWJvb2sgPSB7fTtcblx0XHR0aGlzLmRyb3Bib3ggPSB7fTtcblxuXHRcdC8vIEdvb2dsZVxuXHRcdHRoaXMuZ29vZ2xlLmVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZ29vZ2xlLmNsaWVudElEID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5nb29nbGUuY2xpZW50U2VjcmV0ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5nb29nbGUuYXBpS2V5ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmdvb2dsZS5sb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5nb29nbGUudXNlck5hbWUgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMuZ29vZ2xlLmxvZ2dpbmVkID0ga28uY29tcHV0ZWQoKCkgPT4gJycgIT09IHRoaXMuZ29vZ2xlLnVzZXJOYW1lKCkpO1xuXG5cdFx0dGhpcy5nb29nbGUuY2FwYSA9IHt9O1xuXHRcdHRoaXMuZ29vZ2xlLmNhcGEuYXV0aCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZ29vZ2xlLmNhcGEuYXV0aEdtYWlsID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5nb29nbGUuY2FwYS5kcml2ZSA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZ29vZ2xlLmNhcGEucHJldmlldyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5nb29nbGUucmVxdWlyZSA9IHt9O1xuXHRcdHRoaXMuZ29vZ2xlLnJlcXVpcmUuY2xpZW50U2V0dGluZ3MgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+XG5cdFx0XHRcdHRoaXMuZ29vZ2xlLmVuYWJsZWQoKSAmJiAodGhpcy5nb29nbGUuY2FwYS5hdXRoKCkgfHwgdGhpcy5nb29nbGUuY2FwYS5hdXRoR21haWwoKSB8fCB0aGlzLmdvb2dsZS5jYXBhLmRyaXZlKCkpXG5cdFx0KTtcblxuXHRcdHRoaXMuZ29vZ2xlLnJlcXVpcmUuYXBpS2V5U2V0dGluZ3MgPSBrby5jb21wdXRlZCgoKSA9PiB0aGlzLmdvb2dsZS5lbmFibGVkKCkgJiYgdGhpcy5nb29nbGUuY2FwYS5kcml2ZSgpKTtcblxuXHRcdC8vIEZhY2Vib29rXG5cdFx0dGhpcy5mYWNlYm9vay5lbmFibGVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5mYWNlYm9vay5hcHBJRCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuZmFjZWJvb2suYXBwU2VjcmV0ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5mYWNlYm9vay5sb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5mYWNlYm9vay51c2VyTmFtZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuZmFjZWJvb2suc3VwcG9ydGVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmZhY2Vib29rLmxvZ2dpbmVkID0ga28uY29tcHV0ZWQoKCkgPT4gJycgIT09IHRoaXMuZmFjZWJvb2sudXNlck5hbWUoKSk7XG5cblx0XHQvLyBUd2l0dGVyXG5cdFx0dGhpcy50d2l0dGVyLmVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnR3aXR0ZXIuY29uc3VtZXJLZXkgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnR3aXR0ZXIuY29uc3VtZXJTZWNyZXQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnR3aXR0ZXIubG9hZGluZyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMudHdpdHRlci51c2VyTmFtZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy50d2l0dGVyLmxvZ2dpbmVkID0ga28uY29tcHV0ZWQoKCkgPT4gJycgIT09IHRoaXMudHdpdHRlci51c2VyTmFtZSgpKTtcblxuXHRcdC8vIERyb3Bib3hcblx0XHR0aGlzLmRyb3Bib3guZW5hYmxlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZHJvcGJveC5hcGlLZXkgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0fVxuXG5cdHBvcHVsYXRlKCkge1xuXHRcdHRoaXMuZ29vZ2xlLmVuYWJsZWQoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnQWxsb3dHb29nbGVTb2NpYWwnKSk7XG5cdFx0dGhpcy5nb29nbGUuY2xpZW50SUQoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0dvb2dsZUNsaWVudElEJykpO1xuXHRcdHRoaXMuZ29vZ2xlLmNsaWVudFNlY3JldChTZXR0aW5ncy5zZXR0aW5nc0dldCgnR29vZ2xlQ2xpZW50U2VjcmV0JykpO1xuXHRcdHRoaXMuZ29vZ2xlLmFwaUtleShTZXR0aW5ncy5zZXR0aW5nc0dldCgnR29vZ2xlQXBpS2V5JykpO1xuXG5cdFx0dGhpcy5nb29nbGUuY2FwYS5hdXRoKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93R29vZ2xlU29jaWFsQXV0aCcpKTtcblx0XHR0aGlzLmdvb2dsZS5jYXBhLmF1dGhHbWFpbCghIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0dvb2dsZVNvY2lhbEF1dGhHbWFpbCcpKTtcblx0XHR0aGlzLmdvb2dsZS5jYXBhLmRyaXZlKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93R29vZ2xlU29jaWFsRHJpdmUnKSk7XG5cdFx0dGhpcy5nb29nbGUuY2FwYS5wcmV2aWV3KCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93R29vZ2xlU29jaWFsUHJldmlldycpKTtcblxuXHRcdHRoaXMuZmFjZWJvb2suZW5hYmxlZCghIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0ZhY2Vib29rU29jaWFsJykpO1xuXHRcdHRoaXMuZmFjZWJvb2suYXBwSUQoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0ZhY2Vib29rQXBwSUQnKSk7XG5cdFx0dGhpcy5mYWNlYm9vay5hcHBTZWNyZXQoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0ZhY2Vib29rQXBwU2VjcmV0JykpO1xuXHRcdHRoaXMuZmFjZWJvb2suc3VwcG9ydGVkKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1N1cHBvcnRlZEZhY2Vib29rU29jaWFsJykpO1xuXG5cdFx0dGhpcy50d2l0dGVyLmVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93VHdpdHRlclNvY2lhbCcpKTtcblx0XHR0aGlzLnR3aXR0ZXIuY29uc3VtZXJLZXkgPSBrby5vYnNlcnZhYmxlKFNldHRpbmdzLnNldHRpbmdzR2V0KCdUd2l0dGVyQ29uc3VtZXJLZXknKSk7XG5cdFx0dGhpcy50d2l0dGVyLmNvbnN1bWVyU2VjcmV0ID0ga28ub2JzZXJ2YWJsZShTZXR0aW5ncy5zZXR0aW5nc0dldCgnVHdpdHRlckNvbnN1bWVyU2VjcmV0JykpO1xuXG5cdFx0dGhpcy5kcm9wYm94LmVuYWJsZWQoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnQWxsb3dEcm9wYm94U29jaWFsJykpO1xuXHRcdHRoaXMuZHJvcGJveC5hcGlLZXkoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0Ryb3Bib3hBcGlLZXknKSk7XG5cdH1cblxuXHRhcHBlbmREcm9wYm94KCkge1xuXHRcdGlmICghd2luZG93LkRyb3Bib3ggJiYgdGhpcy5kcm9wYm94LmVuYWJsZWQoKSAmJiB0aGlzLmRyb3Bib3guYXBpS2V5KCkpIHtcblx0XHRcdGlmICghd2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkcm9wYm94anMnKSkge1xuXHRcdFx0XHRjb25zdCBzY3JpcHQgPSB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG5cdFx0XHRcdHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG5cdFx0XHRcdHNjcmlwdC5zcmMgPSAnaHR0cHM6Ly93d3cuZHJvcGJveC5jb20vc3RhdGljL2FwaS8yL2Ryb3BpbnMuanMnO1xuXHRcdFx0XHQkKHNjcmlwdClcblx0XHRcdFx0XHQuYXR0cignaWQnLCAnZHJvcGJveGpzJylcblx0XHRcdFx0XHQuYXR0cignZGF0YS1hcHAta2V5JywgdGhpcy5kcm9wYm94LmFwaUtleSgpKTtcblxuXHRcdFx0XHR3aW5kb3cuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgU29jaWFsU3RvcmUoKTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyBGb2N1c2VkLCBLZXlTdGF0ZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5cbmltcG9ydCB7IGtleVNjb3BlLCBsZWZ0UGFuZWxEaXNhYmxlZCB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCB7IGlzTm9uRW1wdHlBcnJheSB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEFwcFN0b3JlIH0gZnJvbSAnU3RvcmVzL0Fic3RyYWN0QXBwJztcblxuY2xhc3MgQXBwVXNlclN0b3JlIGV4dGVuZHMgQWJzdHJhY3RBcHBTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmN1cnJlbnRBdWRpbyA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5mb2N1c2VkU3RhdGUgPSBrby5vYnNlcnZhYmxlKEZvY3VzZWQuTm9uZSk7XG5cblx0XHRjb25zdCBpc01vYmlsZSA9IFNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdtb2JpbGUnKTtcblxuXHRcdHRoaXMuZm9jdXNlZFN0YXRlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdHN3aXRjaCAodmFsdWUpIHtcblx0XHRcdFx0Y2FzZSBGb2N1c2VkLk1lc3NhZ2VMaXN0OlxuXHRcdFx0XHRcdGtleVNjb3BlKEtleVN0YXRlLk1lc3NhZ2VMaXN0KTtcblx0XHRcdFx0XHRpZiAoaXNNb2JpbGUpIHtcblx0XHRcdFx0XHRcdGxlZnRQYW5lbERpc2FibGVkKHRydWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBGb2N1c2VkLk1lc3NhZ2VWaWV3OlxuXHRcdFx0XHRcdGtleVNjb3BlKEtleVN0YXRlLk1lc3NhZ2VWaWV3KTtcblx0XHRcdFx0XHRpZiAoaXNNb2JpbGUpIHtcblx0XHRcdFx0XHRcdGxlZnRQYW5lbERpc2FibGVkKHRydWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBGb2N1c2VkLkZvbGRlckxpc3Q6XG5cdFx0XHRcdFx0a2V5U2NvcGUoS2V5U3RhdGUuRm9sZGVyTGlzdCk7XG5cdFx0XHRcdFx0aWYgKGlzTW9iaWxlKSB7XG5cdFx0XHRcdFx0XHRsZWZ0UGFuZWxEaXNhYmxlZChmYWxzZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5wcm9qZWN0SGFzaCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudGhyZWFkc0FsbG93ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuY29tcG9zZUluRWRpdCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5jb250YWN0c0F1dG9zYXZlID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy51c2VMb2NhbFByb3h5Rm9yRXh0ZXJuYWxJbWFnZXMgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuY29udGFjdHNJc0FsbG93ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuYXR0YWNobWVudHNBY3Rpb25zID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblxuXHRcdHRoaXMuZGV2RW1haWwgPSAnJztcblx0XHR0aGlzLmRldlBhc3N3b3JkID0gJyc7XG5cdH1cblxuXHRwb3B1bGF0ZSgpIHtcblx0XHRzdXBlci5wb3B1bGF0ZSgpO1xuXG5cdFx0dGhpcy5wcm9qZWN0SGFzaChTZXR0aW5ncy5zZXR0aW5nc0dldCgnUHJvamVjdEhhc2gnKSk7XG5cblx0XHR0aGlzLmNvbnRhY3RzQXV0b3NhdmUoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnQ29udGFjdHNBdXRvc2F2ZScpKTtcblx0XHR0aGlzLnVzZUxvY2FsUHJveHlGb3JFeHRlcm5hbEltYWdlcyghIVNldHRpbmdzLnNldHRpbmdzR2V0KCdVc2VMb2NhbFByb3h5Rm9yRXh0ZXJuYWxJbWFnZXMnKSk7XG5cblx0XHR0aGlzLmNvbnRhY3RzSXNBbGxvd2VkKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0NvbnRhY3RzSXNBbGxvd2VkJykpO1xuXG5cdFx0Y29uc3QgYXR0YWNobWVudHNBY3Rpb25zID0gU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2F0dGFjaG1lbnRzQWN0aW9ucycpO1xuXHRcdHRoaXMuYXR0YWNobWVudHNBY3Rpb25zKGlzTm9uRW1wdHlBcnJheShhdHRhY2htZW50c0FjdGlvbnMpID8gYXR0YWNobWVudHNBY3Rpb25zIDogW10pO1xuXG5cdFx0dGhpcy5kZXZFbWFpbCA9IFNldHRpbmdzLnNldHRpbmdzR2V0KCdEZXZFbWFpbCcpO1xuXHRcdHRoaXMuZGV2UGFzc3dvcmQgPSBTZXR0aW5ncy5zZXR0aW5nc0dldCgnRGV2UGFzc3dvcmQnKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgQXBwVXNlclN0b3JlKCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL2ZpbHRlclwiKTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfYXNzZXJ0VGhpc0luaXRpYWxpemVkKHNlbGYpIHtcbiAgaWYgKHNlbGYgPT09IHZvaWQgMCkge1xuICAgIHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTtcbiAgfVxuXG4gIHJldHVybiBzZWxmO1xufSIsInZhciBjaGVjayA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gaXQgJiYgaXQuTWF0aCA9PSBNYXRoICYmIGl0O1xufTtcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzg2I2lzc3VlY29tbWVudC0xMTU3NTkwMjhcbm1vZHVsZS5leHBvcnRzID1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWdsb2JhbC10aGlzIC0tIHNhZmVcbiAgY2hlY2sodHlwZW9mIGdsb2JhbFRoaXMgPT0gJ29iamVjdCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgY2hlY2sodHlwZW9mIHdpbmRvdyA9PSAnb2JqZWN0JyAmJiB3aW5kb3cpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1yZXN0cmljdGVkLWdsb2JhbHMgLS0gc2FmZVxuICBjaGVjayh0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmKSB8fFxuICBjaGVjayh0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCkgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jIC0tIGZhbGxiYWNrXG4gIChmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9KSgpIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG4iLCJ2YXIgY2hlY2sgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICYmIGl0Lk1hdGggPT0gTWF0aCAmJiBpdDtcbn07XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG5tb2R1bGUuZXhwb3J0cyA9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICBjaGVjayh0eXBlb2YgZ2xvYmFsVGhpcyA9PSAnb2JqZWN0JyAmJiBnbG9iYWxUaGlzKSB8fFxuICBjaGVjayh0eXBlb2Ygd2luZG93ID09ICdvYmplY3QnICYmIHdpbmRvdykgfHxcbiAgY2hlY2sodHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2VsZikgfHxcbiAgY2hlY2sodHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXctZnVuY1xuICAoZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSkoKSB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuIiwiaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBpc1VuZCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBpMThuVG9Ob2RlcyB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuY2xhc3MgQWJzdHJhY3RDb21wb25lbnQge1xuXHRkaXNwb3NhYmxlID0gW107XG5cblx0ZGlzcG9zZSgpIHtcblx0XHR0aGlzLmRpc3Bvc2FibGUuZm9yRWFjaCgoZnVuY1RvRGlzcG9zZSkgPT4ge1xuXHRcdFx0aWYgKGZ1bmNUb0Rpc3Bvc2UgJiYgZnVuY1RvRGlzcG9zZS5kaXNwb3NlKSB7XG5cdFx0XHRcdGZ1bmNUb0Rpc3Bvc2UuZGlzcG9zZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHsqfSBDbGFzc09iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IHRlbXBsYXRlSUQgPSAnJ1xuICogQHJldHVybnMge09iamVjdH1cbiAqL1xuY29uc3QgY29tcG9uZW50RXhwb3J0SGVscGVyID0gKENsYXNzT2JqZWN0LCB0ZW1wbGF0ZUlEID0gJycpID0+ICh7XG5cdHRlbXBsYXRlOiB0ZW1wbGF0ZUlEID8geyBlbGVtZW50OiB0ZW1wbGF0ZUlEIH0gOiAnPGI+PC9iPicsXG5cdHZpZXdNb2RlbDoge1xuXHRcdGNyZWF0ZVZpZXdNb2RlbDogKHBhcmFtcywgY29tcG9uZW50SW5mbykgPT4ge1xuXHRcdFx0cGFyYW1zID0gcGFyYW1zIHx8IHt9O1xuXHRcdFx0cGFyYW1zLmVsZW1lbnQgPSBudWxsO1xuXG5cdFx0XHRpZiAoY29tcG9uZW50SW5mbyAmJiBjb21wb25lbnRJbmZvLmVsZW1lbnQpIHtcblx0XHRcdFx0cGFyYW1zLmNvbXBvbmVudCA9IGNvbXBvbmVudEluZm87XG5cdFx0XHRcdHBhcmFtcy5lbGVtZW50ID0gJChjb21wb25lbnRJbmZvLmVsZW1lbnQpO1xuXG5cdFx0XHRcdGkxOG5Ub05vZGVzKHBhcmFtcy5lbGVtZW50KTtcblxuXHRcdFx0XHRpZiAoIWlzVW5kKHBhcmFtcy5pbmxpbmUpICYmIGtvLnVud3JhcChwYXJhbXMuaW5saW5lKSkge1xuXHRcdFx0XHRcdHBhcmFtcy5lbGVtZW50LmNzcygnZGlzcGxheScsICdpbmxpbmUtYmxvY2snKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbmV3IENsYXNzT2JqZWN0KHBhcmFtcyk7XG5cdFx0fVxuXHR9XG59KTtcblxuZXhwb3J0IHsgQWJzdHJhY3RDb21wb25lbnQsIGNvbXBvbmVudEV4cG9ydEhlbHBlciB9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9zZXQtdGltZW91dFwiKTsiLCIndXNlIHN0cmljdCc7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJykuZjtcbnZhciBpc0ZvcmNlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1mb3JjZWQnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG5cbnZhciB3cmFwQ29uc3RydWN0b3IgPSBmdW5jdGlvbiAoTmF0aXZlQ29uc3RydWN0b3IpIHtcbiAgdmFyIFdyYXBwZXIgPSBmdW5jdGlvbiAoYSwgYiwgYykge1xuICAgIGlmICh0aGlzIGluc3RhbmNlb2YgTmF0aXZlQ29uc3RydWN0b3IpIHtcbiAgICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgTmF0aXZlQ29uc3RydWN0b3IoKTtcbiAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IE5hdGl2ZUNvbnN0cnVjdG9yKGEpO1xuICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgTmF0aXZlQ29uc3RydWN0b3IoYSwgYik7XG4gICAgICB9IHJldHVybiBuZXcgTmF0aXZlQ29uc3RydWN0b3IoYSwgYiwgYyk7XG4gICAgfSByZXR1cm4gTmF0aXZlQ29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgV3JhcHBlci5wcm90b3R5cGUgPSBOYXRpdmVDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG4gIHJldHVybiBXcmFwcGVyO1xufTtcblxuLypcbiAgb3B0aW9ucy50YXJnZXQgICAgICAtIG5hbWUgb2YgdGhlIHRhcmdldCBvYmplY3RcbiAgb3B0aW9ucy5nbG9iYWwgICAgICAtIHRhcmdldCBpcyB0aGUgZ2xvYmFsIG9iamVjdFxuICBvcHRpb25zLnN0YXQgICAgICAgIC0gZXhwb3J0IGFzIHN0YXRpYyBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnByb3RvICAgICAgIC0gZXhwb3J0IGFzIHByb3RvdHlwZSBtZXRob2RzIG9mIHRhcmdldFxuICBvcHRpb25zLnJlYWwgICAgICAgIC0gcmVhbCBwcm90b3R5cGUgbWV0aG9kIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy5mb3JjZWQgICAgICAtIGV4cG9ydCBldmVuIGlmIHRoZSBuYXRpdmUgZmVhdHVyZSBpcyBhdmFpbGFibGVcbiAgb3B0aW9ucy5iaW5kICAgICAgICAtIGJpbmQgbWV0aG9kcyB0byB0aGUgdGFyZ2V0LCByZXF1aXJlZCBmb3IgdGhlIGBwdXJlYCB2ZXJzaW9uXG4gIG9wdGlvbnMud3JhcCAgICAgICAgLSB3cmFwIGNvbnN0cnVjdG9ycyB0byBwcmV2ZW50aW5nIGdsb2JhbCBwb2xsdXRpb24sIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy51bnNhZmUgICAgICAtIHVzZSB0aGUgc2ltcGxlIGFzc2lnbm1lbnQgb2YgcHJvcGVydHkgaW5zdGVhZCBvZiBkZWxldGUgKyBkZWZpbmVQcm9wZXJ0eVxuICBvcHRpb25zLnNoYW0gICAgICAgIC0gYWRkIGEgZmxhZyB0byBub3QgY29tcGxldGVseSBmdWxsIHBvbHlmaWxsc1xuICBvcHRpb25zLmVudW1lcmFibGUgIC0gZXhwb3J0IGFzIGVudW1lcmFibGUgcHJvcGVydHlcbiAgb3B0aW9ucy5ub1RhcmdldEdldCAtIHByZXZlbnQgY2FsbGluZyBhIGdldHRlciBvbiB0YXJnZXRcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcHRpb25zLCBzb3VyY2UpIHtcbiAgdmFyIFRBUkdFVCA9IG9wdGlvbnMudGFyZ2V0O1xuICB2YXIgR0xPQkFMID0gb3B0aW9ucy5nbG9iYWw7XG4gIHZhciBTVEFUSUMgPSBvcHRpb25zLnN0YXQ7XG4gIHZhciBQUk9UTyA9IG9wdGlvbnMucHJvdG87XG5cbiAgdmFyIG5hdGl2ZVNvdXJjZSA9IEdMT0JBTCA/IGdsb2JhbCA6IFNUQVRJQyA/IGdsb2JhbFtUQVJHRVRdIDogKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG5cbiAgdmFyIHRhcmdldCA9IEdMT0JBTCA/IHBhdGggOiBwYXRoW1RBUkdFVF0gfHwgKHBhdGhbVEFSR0VUXSA9IHt9KTtcbiAgdmFyIHRhcmdldFByb3RvdHlwZSA9IHRhcmdldC5wcm90b3R5cGU7XG5cbiAgdmFyIEZPUkNFRCwgVVNFX05BVElWRSwgVklSVFVBTF9QUk9UT1RZUEU7XG4gIHZhciBrZXksIHNvdXJjZVByb3BlcnR5LCB0YXJnZXRQcm9wZXJ0eSwgbmF0aXZlUHJvcGVydHksIHJlc3VsdFByb3BlcnR5LCBkZXNjcmlwdG9yO1xuXG4gIGZvciAoa2V5IGluIHNvdXJjZSkge1xuICAgIEZPUkNFRCA9IGlzRm9yY2VkKEdMT0JBTCA/IGtleSA6IFRBUkdFVCArIChTVEFUSUMgPyAnLicgOiAnIycpICsga2V5LCBvcHRpb25zLmZvcmNlZCk7XG4gICAgLy8gY29udGFpbnMgaW4gbmF0aXZlXG4gICAgVVNFX05BVElWRSA9ICFGT1JDRUQgJiYgbmF0aXZlU291cmNlICYmIGhhcyhuYXRpdmVTb3VyY2UsIGtleSk7XG5cbiAgICB0YXJnZXRQcm9wZXJ0eSA9IHRhcmdldFtrZXldO1xuXG4gICAgaWYgKFVTRV9OQVRJVkUpIGlmIChvcHRpb25zLm5vVGFyZ2V0R2V0KSB7XG4gICAgICBkZXNjcmlwdG9yID0gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG5hdGl2ZVNvdXJjZSwga2V5KTtcbiAgICAgIG5hdGl2ZVByb3BlcnR5ID0gZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIH0gZWxzZSBuYXRpdmVQcm9wZXJ0eSA9IG5hdGl2ZVNvdXJjZVtrZXldO1xuXG4gICAgLy8gZXhwb3J0IG5hdGl2ZSBvciBpbXBsZW1lbnRhdGlvblxuICAgIHNvdXJjZVByb3BlcnR5ID0gKFVTRV9OQVRJVkUgJiYgbmF0aXZlUHJvcGVydHkpID8gbmF0aXZlUHJvcGVydHkgOiBzb3VyY2Vba2V5XTtcblxuICAgIGlmIChVU0VfTkFUSVZFICYmIHR5cGVvZiB0YXJnZXRQcm9wZXJ0eSA9PT0gdHlwZW9mIHNvdXJjZVByb3BlcnR5KSBjb250aW51ZTtcblxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgaWYgKG9wdGlvbnMuYmluZCAmJiBVU0VfTkFUSVZFKSByZXN1bHRQcm9wZXJ0eSA9IGJpbmQoc291cmNlUHJvcGVydHksIGdsb2JhbCk7XG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5ncyBpbiB0aGlzIHZlcnNpb25cbiAgICBlbHNlIGlmIChvcHRpb25zLndyYXAgJiYgVVNFX05BVElWRSkgcmVzdWx0UHJvcGVydHkgPSB3cmFwQ29uc3RydWN0b3Ioc291cmNlUHJvcGVydHkpO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIGVsc2UgaWYgKFBST1RPICYmIHR5cGVvZiBzb3VyY2VQcm9wZXJ0eSA9PSAnZnVuY3Rpb24nKSByZXN1bHRQcm9wZXJ0eSA9IGJpbmQoRnVuY3Rpb24uY2FsbCwgc291cmNlUHJvcGVydHkpO1xuICAgIC8vIGRlZmF1bHQgY2FzZVxuICAgIGVsc2UgcmVzdWx0UHJvcGVydHkgPSBzb3VyY2VQcm9wZXJ0eTtcblxuICAgIC8vIGFkZCBhIGZsYWcgdG8gbm90IGNvbXBsZXRlbHkgZnVsbCBwb2x5ZmlsbHNcbiAgICBpZiAob3B0aW9ucy5zaGFtIHx8IChzb3VyY2VQcm9wZXJ0eSAmJiBzb3VyY2VQcm9wZXJ0eS5zaGFtKSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShyZXN1bHRQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG5cbiAgICB0YXJnZXRba2V5XSA9IHJlc3VsdFByb3BlcnR5O1xuXG4gICAgaWYgKFBST1RPKSB7XG4gICAgICBWSVJUVUFMX1BST1RPVFlQRSA9IFRBUkdFVCArICdQcm90b3R5cGUnO1xuICAgICAgaWYgKCFoYXMocGF0aCwgVklSVFVBTF9QUk9UT1RZUEUpKSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShwYXRoLCBWSVJUVUFMX1BST1RPVFlQRSwge30pO1xuICAgICAgfVxuICAgICAgLy8gZXhwb3J0IHZpcnR1YWwgcHJvdG90eXBlIG1ldGhvZHNcbiAgICAgIHBhdGhbVklSVFVBTF9QUk9UT1RZUEVdW2tleV0gPSBzb3VyY2VQcm9wZXJ0eTtcbiAgICAgIC8vIGV4cG9ydCByZWFsIHByb3RvdHlwZSBtZXRob2RzXG4gICAgICBpZiAob3B0aW9ucy5yZWFsICYmIHRhcmdldFByb3RvdHlwZSAmJiAhdGFyZ2V0UHJvdG90eXBlW2tleV0pIHtcbiAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRhcmdldFByb3RvdHlwZSwga2V5LCBzb3VyY2VQcm9wZXJ0eSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgTUVTU0FHRVNfUEVSX1BBR0UsIE1FU1NBR0VTX1BFUl9QQUdFX1ZBTFVFUyB9IGZyb20gJ0NvbW1vbi9Db25zdHMnO1xuaW1wb3J0IHsgTGF5b3V0LCBFZGl0b3JEZWZhdWx0VHlwZSwgTWFnaWNzIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7ICRodG1sIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0IHsgcEludCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgKiBhcyBFdmVudHMgZnJvbSAnQ29tbW9uL0V2ZW50cyc7XG5cbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5jbGFzcyBTZXR0aW5nc1VzZXJTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuaUF1dG9Mb2dvdXRUaW1lciA9IDA7XG5cblx0XHR0aGlzLmxheW91dCA9IGtvXG5cdFx0XHQub2JzZXJ2YWJsZShMYXlvdXQuU2lkZVByZXZpZXcpXG5cdFx0XHQuZXh0ZW5kKHsgbGltaXRlZExpc3Q6IFtMYXlvdXQuU2lkZVByZXZpZXcsIExheW91dC5Cb3R0b21QcmV2aWV3LCBMYXlvdXQuTm9QcmV2aWV3XSB9KTtcblxuXHRcdHRoaXMuZWRpdG9yRGVmYXVsdFR5cGUgPSBrby5vYnNlcnZhYmxlKEVkaXRvckRlZmF1bHRUeXBlLkh0bWwpLmV4dGVuZCh7XG5cdFx0XHRsaW1pdGVkTGlzdDogW1xuXHRcdFx0XHRFZGl0b3JEZWZhdWx0VHlwZS5IdG1sLFxuXHRcdFx0XHRFZGl0b3JEZWZhdWx0VHlwZS5QbGFpbixcblx0XHRcdFx0RWRpdG9yRGVmYXVsdFR5cGUuSHRtbEZvcmNlZCxcblx0XHRcdFx0RWRpdG9yRGVmYXVsdFR5cGUuUGxhaW5Gb3JjZWRcblx0XHRcdF1cblx0XHR9KTtcblxuXHRcdHRoaXMubWVzc2FnZXNQZXJQYWdlID0ga28ub2JzZXJ2YWJsZShNRVNTQUdFU19QRVJfUEFHRSkuZXh0ZW5kKHsgbGltaXRlZExpc3Q6IE1FU1NBR0VTX1BFUl9QQUdFX1ZBTFVFUyB9KTtcblxuXHRcdHRoaXMuc2hvd0ltYWdlcyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMudXNlQ2hlY2tib3hlc0luTGlzdCA9IGtvLm9ic2VydmFibGUodHJ1ZSk7XG5cdFx0dGhpcy5hbGxvd0RyYWZ0QXV0b3NhdmUgPSBrby5vYnNlcnZhYmxlKHRydWUpO1xuXHRcdHRoaXMudXNlVGhyZWFkcyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMucmVwbHlTYW1lRm9sZGVyID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmF1dG9Mb2dvdXQgPSBrby5vYnNlcnZhYmxlKE1hZ2ljcy5UaW1lMzBtSW5NaW4pO1xuXG5cdFx0dGhpcy5jb21wdXRlcnMoKTtcblx0XHR0aGlzLnN1YnNjcmliZXJzKCk7XG5cdH1cblxuXHRjb21wdXRlcnMoKSB7XG5cdFx0dGhpcy51c2VQcmV2aWV3UGFuZSA9IGtvLmNvbXB1dGVkKCgpID0+IExheW91dC5Ob1ByZXZpZXcgIT09IHRoaXMubGF5b3V0KCkpO1xuXHR9XG5cblx0c3Vic2NyaWJlcnMoKSB7XG5cdFx0dGhpcy5sYXlvdXQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0JGh0bWwudG9nZ2xlQ2xhc3MoJ3JsLW5vLXByZXZpZXctcGFuZScsIExheW91dC5Ob1ByZXZpZXcgPT09IHZhbHVlKTtcblx0XHRcdCRodG1sLnRvZ2dsZUNsYXNzKCdybC1zaWRlLXByZXZpZXctcGFuZScsIExheW91dC5TaWRlUHJldmlldyA9PT0gdmFsdWUpO1xuXHRcdFx0JGh0bWwudG9nZ2xlQ2xhc3MoJ3JsLWJvdHRvbS1wcmV2aWV3LXBhbmUnLCBMYXlvdXQuQm90dG9tUHJldmlldyA9PT0gdmFsdWUpO1xuXHRcdFx0RXZlbnRzLnB1YignbGF5b3V0JywgW3ZhbHVlXSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwb3B1bGF0ZSgpIHtcblx0XHR0aGlzLmxheW91dChwSW50KFNldHRpbmdzLnNldHRpbmdzR2V0KCdMYXlvdXQnKSkpO1xuXHRcdHRoaXMuZWRpdG9yRGVmYXVsdFR5cGUoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0VkaXRvckRlZmF1bHRUeXBlJykpO1xuXG5cdFx0dGhpcy5hdXRvTG9nb3V0KHBJbnQoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0F1dG9Mb2dvdXQnKSkpO1xuXHRcdHRoaXMubWVzc2FnZXNQZXJQYWdlKFNldHRpbmdzLnNldHRpbmdzR2V0KCdNUFAnKSk7XG5cblx0XHR0aGlzLnNob3dJbWFnZXMoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnU2hvd0ltYWdlcycpKTtcblx0XHR0aGlzLnVzZUNoZWNrYm94ZXNJbkxpc3QoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnVXNlQ2hlY2tib3hlc0luTGlzdCcpKTtcblx0XHR0aGlzLmFsbG93RHJhZnRBdXRvc2F2ZSghIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0RyYWZ0QXV0b3NhdmUnKSk7XG5cdFx0dGhpcy51c2VUaHJlYWRzKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1VzZVRocmVhZHMnKSk7XG5cdFx0dGhpcy5yZXBseVNhbWVGb2xkZXIoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnUmVwbHlTYW1lRm9sZGVyJykpO1xuXG5cdFx0RXZlbnRzLnN1YigncmwuYXV0by1sb2dvdXQtcmVmcmVzaCcsICgpID0+IHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5pQXV0b0xvZ291dFRpbWVyKTtcblx0XHRcdGlmICgwIDwgdGhpcy5hdXRvTG9nb3V0KCkgJiYgIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBY2NvdW50U2lnbk1lJykpIHtcblx0XHRcdFx0dGhpcy5pQXV0b0xvZ291dFRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdEV2ZW50cy5wdWIoJ3JsLmF1dG8tbG9nb3V0Jyk7XG5cdFx0XHRcdH0sIHRoaXMuYXV0b0xvZ291dCgpICogTWFnaWNzLlRpbWUxbSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRFdmVudHMucHViKCdybC5hdXRvLWxvZ291dC1yZWZyZXNoJyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFNldHRpbmdzVXNlclN0b3JlKCk7XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCB7IGlzRnVuYywgaXNBcnJheSwgaXNVbmQgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgZGF0YSBhcyBHbG9iYWxzRGF0YSB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5jb25zdCBTSU1QTEVfSE9PS1MgPSB7fSxcblx0VVNFUl9WSUVXX01PREVMU19IT09LUyA9IFtdLFxuXHRBRE1JTl9WSUVXX01PREVMU19IT09LUyA9IFtdO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFja1xuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkSG9vayhuYW1lLCBjYWxsYmFjaykge1xuXHRpZiAoaXNGdW5jKGNhbGxiYWNrKSkge1xuXHRcdGlmICghaXNBcnJheShTSU1QTEVfSE9PS1NbbmFtZV0pKSB7XG5cdFx0XHRTSU1QTEVfSE9PS1NbbmFtZV0gPSBbXTtcblx0XHR9XG5cblx0XHRTSU1QTEVfSE9PS1NbbmFtZV0ucHVzaChjYWxsYmFjayk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHBhcmFtIHtBcnJheT19IGFyZ3MgPSBbXVxuICovXG5leHBvcnQgZnVuY3Rpb24gcnVuSG9vayhuYW1lLCBhcmdzID0gW10pIHtcblx0aWYgKGlzQXJyYXkoU0lNUExFX0hPT0tTW25hbWVdKSkge1xuXHRcdF8uZWFjaChTSU1QTEVfSE9PS1NbbmFtZV0sIChjYWxsYmFjaykgPT4ge1xuXHRcdFx0Y2FsbGJhY2soLi4uYXJncyk7XG5cdFx0fSk7XG5cdH1cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMgez99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWluU2V0dGluZ3NHZXQobmFtZSkge1xuXHRyZXR1cm4gU2V0dGluZ3Muc2V0dGluZ3NHZXQobmFtZSk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpb25cbiAqIEBwYXJhbSB7T2JqZWN0PX0gcGFyYW1ldGVyc1xuICogQHBhcmFtIHs/bnVtYmVyPX0gdGltZW91dFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3RlUmVxdWVzdChjYWxsYmFjaywgYWN0aW9uLCBwYXJhbWV0ZXJzLCB0aW1lb3V0KSB7XG5cdGlmIChHbG9iYWxzRGF0YS5fX0FQUF9fKSB7XG5cdFx0R2xvYmFsc0RhdGEuX19BUFBfXy5yZW1vdGUoKS5kZWZhdWx0UmVxdWVzdChjYWxsYmFjaywgJ1BsdWdpbicgKyBhY3Rpb24sIHBhcmFtZXRlcnMsIHRpbWVvdXQpO1xuXHR9XG59XG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gU2V0dGluZ3NWaWV3TW9kZWxDbGFzc1xuICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsTmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHRlbXBsYXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gcm91dGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFNldHRpbmdzVmlld01vZGVsKFNldHRpbmdzVmlld01vZGVsQ2xhc3MsIHRlbXBsYXRlLCBsYWJlbE5hbWUsIHJvdXRlKSB7XG5cdFVTRVJfVklFV19NT0RFTFNfSE9PS1MucHVzaChbU2V0dGluZ3NWaWV3TW9kZWxDbGFzcywgdGVtcGxhdGUsIGxhYmVsTmFtZSwgcm91dGVdKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBTZXR0aW5nc1ZpZXdNb2RlbENsYXNzXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFiZWxOYW1lXG4gKiBAcGFyYW0ge3N0cmluZ30gdGVtcGxhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSByb3V0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkU2V0dGluZ3NWaWV3TW9kZWxGb3JBZG1pbihTZXR0aW5nc1ZpZXdNb2RlbENsYXNzLCB0ZW1wbGF0ZSwgbGFiZWxOYW1lLCByb3V0ZSkge1xuXHRBRE1JTl9WSUVXX01PREVMU19IT09LUy5wdXNoKFtTZXR0aW5nc1ZpZXdNb2RlbENsYXNzLCB0ZW1wbGF0ZSwgbGFiZWxOYW1lLCByb3V0ZV0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYWRtaW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blNldHRpbmdzVmlld01vZGVsSG9va3MoYWRtaW4pIHtcblx0Y29uc3QgS25vaW4gPSByZXF1aXJlKCdLbm9pbi9Lbm9pbicpO1xuXHRfLmVhY2goYWRtaW4gPyBBRE1JTl9WSUVXX01PREVMU19IT09LUyA6IFVTRVJfVklFV19NT0RFTFNfSE9PS1MsICh2aWV3KSA9PiB7XG5cdFx0S25vaW4uYWRkU2V0dGluZ3NWaWV3TW9kZWwodmlld1swXSwgdmlld1sxXSwgdmlld1syXSwgdmlld1szXSk7XG5cdH0pO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwbHVnaW5TZWN0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICogQHJldHVybnMgez99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXR0aW5nc0dldChwbHVnaW5TZWN0aW9uLCBuYW1lKSB7XG5cdGxldCBwbHVnaW5zID0gU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1BsdWdpbnMnKTtcblx0cGx1Z2lucyA9IHBsdWdpbnMgJiYgIWlzVW5kKHBsdWdpbnNbcGx1Z2luU2VjdGlvbl0pID8gcGx1Z2luc1twbHVnaW5TZWN0aW9uXSA6IG51bGw7XG5cdHJldHVybiBwbHVnaW5zID8gKGlzVW5kKHBsdWdpbnNbbmFtZV0pID8gbnVsbCA6IHBsdWdpbnNbbmFtZV0pIDogbnVsbDtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgdWlkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VpZCcpO1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xudmFyIFVTRV9TWU1CT0xfQVNfVUlEID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3VzZS1zeW1ib2wtYXMtdWlkJyk7XG5cbnZhciBXZWxsS25vd25TeW1ib2xzU3RvcmUgPSBzaGFyZWQoJ3drcycpO1xudmFyIFN5bWJvbCA9IGdsb2JhbC5TeW1ib2w7XG52YXIgY3JlYXRlV2VsbEtub3duU3ltYm9sID0gVVNFX1NZTUJPTF9BU19VSUQgPyBTeW1ib2wgOiBTeW1ib2wgJiYgU3ltYm9sLndpdGhvdXRTZXR0ZXIgfHwgdWlkO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gIGlmICghaGFzKFdlbGxLbm93blN5bWJvbHNTdG9yZSwgbmFtZSkpIHtcbiAgICBpZiAoTkFUSVZFX1NZTUJPTCAmJiBoYXMoU3ltYm9sLCBuYW1lKSkgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gU3ltYm9sW25hbWVdO1xuICAgIGVsc2UgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID0gY3JlYXRlV2VsbEtub3duU3ltYm9sKCdTeW1ib2wuJyArIG5hbWUpO1xuICB9IHJldHVybiBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV07XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkJyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91aWQnKTtcbnZhciBOQVRJVkVfU1lNQk9MID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25hdGl2ZS1zeW1ib2wnKTtcbnZhciBVU0VfU1lNQk9MX0FTX1VJRCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy91c2Utc3ltYm9sLWFzLXVpZCcpO1xuXG52YXIgV2VsbEtub3duU3ltYm9sc1N0b3JlID0gc2hhcmVkKCd3a3MnKTtcbnZhciBTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIGNyZWF0ZVdlbGxLbm93blN5bWJvbCA9IFVTRV9TWU1CT0xfQVNfVUlEID8gU3ltYm9sIDogU3ltYm9sICYmIFN5bWJvbC53aXRob3V0U2V0dGVyIHx8IHVpZDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZSkge1xuICBpZiAoIWhhcyhXZWxsS25vd25TeW1ib2xzU3RvcmUsIG5hbWUpIHx8ICEoTkFUSVZFX1NZTUJPTCB8fCB0eXBlb2YgV2VsbEtub3duU3ltYm9sc1N0b3JlW25hbWVdID09ICdzdHJpbmcnKSkge1xuICAgIGlmIChOQVRJVkVfU1lNQk9MICYmIGhhcyhTeW1ib2wsIG5hbWUpKSB7XG4gICAgICBXZWxsS25vd25TeW1ib2xzU3RvcmVbbmFtZV0gPSBTeW1ib2xbbmFtZV07XG4gICAgfSBlbHNlIHtcbiAgICAgIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXSA9IGNyZWF0ZVdlbGxLbm93blN5bWJvbCgnU3ltYm9sLicgKyBuYW1lKTtcbiAgICB9XG4gIH0gcmV0dXJuIFdlbGxLbm93blN5bWJvbHNTdG9yZVtuYW1lXTtcbn07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgJCBmcm9tICckJztcblxuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcbmltcG9ydCB7IGxvZywgaXNBcnJheSwgaXNOb25FbXB0eUFycmF5LCBwU3RyaW5nLCBpc1VuZCwgdHJpbSB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmltcG9ydCBBY2NvdW50U3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQWNjb3VudCc7XG5cbmltcG9ydCB7IHNob3dTY3JlZW5Qb3B1cCB9IGZyb20gJ0tub2luL0tub2luJztcblxuY2xhc3MgUGdwVXNlclN0b3JlIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5jYXBhT3BlblBHUCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5vcGVucGdwID0gbnVsbDtcblxuXHRcdHRoaXMub3BlbnBncGtleXMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXHRcdHRoaXMub3BlbnBncEtleXJpbmcgPSBudWxsO1xuXG5cdFx0dGhpcy5vcGVucGdwa2V5c1B1YmxpYyA9IGtvLmNvbXB1dGVkKCgpID0+IF8uZmlsdGVyKHRoaXMub3BlbnBncGtleXMoKSwgKGl0ZW0pID0+ICEhKGl0ZW0gJiYgIWl0ZW0uaXNQcml2YXRlKSkpO1xuXHRcdHRoaXMub3BlbnBncGtleXNQcml2YXRlID0ga28uY29tcHV0ZWQoKCkgPT4gXy5maWx0ZXIodGhpcy5vcGVucGdwa2V5cygpLCAoaXRlbSkgPT4gISEoaXRlbSAmJiBpdGVtLmlzUHJpdmF0ZSkpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGlzU3VwcG9ydGVkKCkge1xuXHRcdHJldHVybiAhIXRoaXMub3BlbnBncDtcblx0fVxuXG5cdGZpbmRLZXlCeUhleChrZXlzLCBoYXNoKSB7XG5cdFx0cmV0dXJuIF8uZmluZChrZXlzLCAoaXRlbSkgPT4gaGFzaCAmJiBpdGVtICYmIChoYXNoID09PSBpdGVtLmlkIHx8IC0xIDwgaXRlbS5pZHMuaW5kZXhPZihoYXNoKSkpO1xuXHR9XG5cblx0ZmluZFB1YmxpY0tleUJ5SGV4KGhhc2gpIHtcblx0XHRyZXR1cm4gdGhpcy5maW5kS2V5QnlIZXgodGhpcy5vcGVucGdwa2V5c1B1YmxpYygpLCBoYXNoKTtcblx0fVxuXG5cdGZpbmRQcml2YXRlS2V5QnlIZXgoaGFzaCkge1xuXHRcdHJldHVybiB0aGlzLmZpbmRLZXlCeUhleCh0aGlzLm9wZW5wZ3BrZXlzUHJpdmF0ZSgpLCBoYXNoKTtcblx0fVxuXG5cdGZpbmRQdWJsaWNLZXlzQnlFbWFpbChlbWFpbCkge1xuXHRcdHJldHVybiBfLmNvbXBhY3QoXG5cdFx0XHRfLmZsYXR0ZW4oXG5cdFx0XHRcdF8ubWFwKHRoaXMub3BlbnBncGtleXNQdWJsaWMoKSwgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRjb25zdCBrZXkgPSBpdGVtICYmIC0xIDwgaXRlbS5lbWFpbHMuaW5kZXhPZihlbWFpbCkgPyBpdGVtIDogbnVsbDtcblx0XHRcdFx0XHRyZXR1cm4ga2V5ID8ga2V5LmdldE5hdGl2ZUtleXMoKSA6IFtudWxsXTtcblx0XHRcdFx0fSksXG5cdFx0XHRcdHRydWVcblx0XHRcdClcblx0XHQpO1xuXHR9XG5cblx0ZmluZFB1YmxpY0tleXNCeVNpZ25pbmdLZXlJZHMoc2lnbmluZ0tleUlkcykge1xuXHRcdHJldHVybiBfLmNvbXBhY3QoXG5cdFx0XHRfLmZsYXR0ZW4oXG5cdFx0XHRcdF8ubWFwKHNpZ25pbmdLZXlJZHMsIChpZCkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGtleSA9IGlkICYmIGlkLnRvSGV4ID8gdGhpcy5maW5kUHVibGljS2V5QnlIZXgoaWQudG9IZXgoKSkgOiBudWxsO1xuXHRcdFx0XHRcdHJldHVybiBrZXkgPyBrZXkuZ2V0TmF0aXZlS2V5cygpIDogW251bGxdO1xuXHRcdFx0XHR9KSxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KVxuXHRcdCk7XG5cdH1cblxuXHRmaW5kUHJpdmF0ZUtleXNCeUVuY3J5cHRpb25LZXlJZHMoZW5jcnlwdGlvbktleUlkcywgcmVjaXBpZW50cywgcmV0dXJuV3JhcEtleXMpIHtcblx0XHRsZXQgcmVzdWx0ID0gaXNBcnJheShlbmNyeXB0aW9uS2V5SWRzKVxuXHRcdFx0PyBfLmNvbXBhY3QoXG5cdFx0XHRcdFx0Xy5mbGF0dGVuKFxuXHRcdFx0XHRcdFx0Xy5tYXAoZW5jcnlwdGlvbktleUlkcywgKGlkKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGtleSA9IGlkICYmIGlkLnRvSGV4ID8gdGhpcy5maW5kUHJpdmF0ZUtleUJ5SGV4KGlkLnRvSGV4KCkpIDogbnVsbDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGtleSA/IChyZXR1cm5XcmFwS2V5cyA/IFtrZXldIDoga2V5LmdldE5hdGl2ZUtleXMoKSkgOiBbbnVsbF07XG5cdFx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHQpXG5cdFx0XHQgIClcblx0XHRcdDogW107XG5cblx0XHRpZiAoMCA9PT0gcmVzdWx0Lmxlbmd0aCAmJiBpc05vbkVtcHR5QXJyYXkocmVjaXBpZW50cykpIHtcblx0XHRcdHJlc3VsdCA9IF8udW5pcShcblx0XHRcdFx0Xy5jb21wYWN0KFxuXHRcdFx0XHRcdF8uZmxhdHRlbihcblx0XHRcdFx0XHRcdF8ubWFwKHJlY2lwaWVudHMsIChzRW1haWwpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qga2V5cyA9IHNFbWFpbCA/IHRoaXMuZmluZEFsbFByaXZhdGVLZXlzQnlFbWFpbE5vdE5hdGl2ZShzRW1haWwpIDogbnVsbDtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGtleXNcblx0XHRcdFx0XHRcdFx0XHQ/IHJldHVybldyYXBLZXlzXG5cdFx0XHRcdFx0XHRcdFx0XHQ/IGtleXNcblx0XHRcdFx0XHRcdFx0XHRcdDogXy5mbGF0dGVuKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdF8ubWFwKGtleXMsIChrZXkpID0+IGtleS5nZXROYXRpdmVLZXlzKCkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdFx0XHRcdCAgKVxuXHRcdFx0XHRcdFx0XHRcdDogW251bGxdO1xuXHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpLFxuXHRcdFx0XHQoa2V5KSA9PiBrZXkuaWRcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZW1haWxcblx0ICogQHJldHVybnMgez99XG5cdCAqL1xuXHRmaW5kUHVibGljS2V5QnlFbWFpbE5vdE5hdGl2ZShlbWFpbCkge1xuXHRcdHJldHVybiBfLmZpbmQodGhpcy5vcGVucGdwa2V5c1B1YmxpYygpLCAoaXRlbSkgPT4gaXRlbSAmJiAtMSA8IGl0ZW0uZW1haWxzLmluZGV4T2YoZW1haWwpKSB8fCBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxuXHQgKiBAcmV0dXJucyB7P31cblx0ICovXG5cdGZpbmRQcml2YXRlS2V5QnlFbWFpbE5vdE5hdGl2ZShlbWFpbCkge1xuXHRcdHJldHVybiBfLmZpbmQodGhpcy5vcGVucGdwa2V5c1ByaXZhdGUoKSwgKGl0ZW0pID0+IGl0ZW0gJiYgLTEgPCBpdGVtLmVtYWlscy5pbmRleE9mKGVtYWlsKSkgfHwgbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZW1haWxcblx0ICogQHJldHVybnMgez99XG5cdCAqL1xuXHRmaW5kQWxsUHVibGljS2V5c0J5RW1haWxOb3ROYXRpdmUoZW1haWwpIHtcblx0XHRyZXR1cm4gXy5maWx0ZXIodGhpcy5vcGVucGdwa2V5c1B1YmxpYygpLCAoaXRlbSkgPT4gaXRlbSAmJiAtMSA8IGl0ZW0uZW1haWxzLmluZGV4T2YoZW1haWwpKSB8fCBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbFxuXHQgKiBAcmV0dXJucyB7P31cblx0ICovXG5cdGZpbmRBbGxQcml2YXRlS2V5c0J5RW1haWxOb3ROYXRpdmUoZW1haWwpIHtcblx0XHRyZXR1cm4gXy5maWx0ZXIodGhpcy5vcGVucGdwa2V5c1ByaXZhdGUoKSwgKGl0ZW0pID0+IGl0ZW0gJiYgLTEgPCBpdGVtLmVtYWlscy5pbmRleE9mKGVtYWlsKSkgfHwgbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZW1haWxcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBwYXNzd29yZFxuXHQgKiBAcmV0dXJucyB7P31cblx0ICovXG5cdGZpbmRQcml2YXRlS2V5QnlFbWFpbChlbWFpbCwgcGFzc3dvcmQpIHtcblx0XHRsZXQgcHJpdmF0ZUtleSA9IG51bGw7XG5cdFx0Y29uc3Qga2V5ID0gXy5maW5kKHRoaXMub3BlbnBncGtleXNQcml2YXRlKCksIChpdGVtKSA9PiBpdGVtICYmIC0xIDwgaXRlbS5lbWFpbHMuaW5kZXhPZihlbWFpbCkpO1xuXG5cdFx0aWYgKGtleSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0cHJpdmF0ZUtleSA9IGtleS5nZXROYXRpdmVLZXlzKClbMF0gfHwgbnVsbDtcblx0XHRcdFx0aWYgKHByaXZhdGVLZXkpIHtcblx0XHRcdFx0XHRwcml2YXRlS2V5LmRlY3J5cHQocFN0cmluZyhwYXNzd29yZCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHByaXZhdGVLZXkgPSBudWxsO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBwcml2YXRlS2V5O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gcGFzc3dvcmRcblx0ICogQHJldHVybnMgez99XG5cdCAqL1xuXHRmaW5kU2VsZlByaXZhdGVLZXkocGFzc3dvcmQpIHtcblx0XHRyZXR1cm4gdGhpcy5maW5kUHJpdmF0ZUtleUJ5RW1haWwoQWNjb3VudFN0b3JlLmVtYWlsKCksIHBhc3N3b3JkKTtcblx0fVxuXG5cdGRlY3J5cHRNZXNzYWdlKG1lc3NhZ2UsIHJlY2lwaWVudHMsIGZDYWxsYmFjaykge1xuXHRcdGlmIChtZXNzYWdlICYmIG1lc3NhZ2UuZ2V0RW5jcnlwdGlvbktleUlkcykge1xuXHRcdFx0Y29uc3QgcHJpdmF0ZUtleXMgPSB0aGlzLmZpbmRQcml2YXRlS2V5c0J5RW5jcnlwdGlvbktleUlkcyhtZXNzYWdlLmdldEVuY3J5cHRpb25LZXlJZHMoKSwgcmVjaXBpZW50cywgdHJ1ZSk7XG5cdFx0XHRpZiAocHJpdmF0ZUtleXMgJiYgMCA8IHByaXZhdGVLZXlzLmxlbmd0aCkge1xuXHRcdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9NZXNzYWdlT3BlblBncCcpLCBbXG5cdFx0XHRcdFx0KGRlY3J5cHRlZEtleSkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGRlY3J5cHRlZEtleSkge1xuXHRcdFx0XHRcdFx0XHRtZXNzYWdlLmRlY3J5cHQoZGVjcnlwdGVkS2V5KS50aGVuKFxuXHRcdFx0XHRcdFx0XHRcdChkZWNyeXB0ZWRNZXNzYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRsZXQgcHJpdmF0ZUtleSA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZGVjcnlwdGVkTWVzc2FnZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcml2YXRlS2V5ID0gdGhpcy5maW5kUHJpdmF0ZUtleUJ5SGV4KGRlY3J5cHRlZEtleS5wcmltYXJ5S2V5LmtleWlkLnRvSGV4KCkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocHJpdmF0ZUtleSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMudmVyaWZ5TWVzc2FnZShkZWNyeXB0ZWRNZXNzYWdlLCAob1ZhbGlkS2V5LCBhU2lnbmluZ0tleUlkcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZkNhbGxiYWNrKHByaXZhdGVLZXksIGRlY3J5cHRlZE1lc3NhZ2UsIG9WYWxpZEtleSB8fCBudWxsLCBhU2lnbmluZ0tleUlkcyB8fCBudWxsKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmQ2FsbGJhY2socHJpdmF0ZUtleSwgZGVjcnlwdGVkTWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZDYWxsYmFjayhwcml2YXRlS2V5LCBkZWNyeXB0ZWRNZXNzYWdlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGZDYWxsYmFjayhudWxsLCBudWxsKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRmQ2FsbGJhY2sobnVsbCwgbnVsbCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRwcml2YXRlS2V5c1xuXHRcdFx0XHRdKTtcblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZkNhbGxiYWNrKG51bGwsIG51bGwpO1xuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0dmVyaWZ5TWVzc2FnZShtZXNzYWdlLCBmQ2FsbGJhY2spIHtcblx0XHRpZiAobWVzc2FnZSAmJiBtZXNzYWdlLmdldFNpZ25pbmdLZXlJZHMpIHtcblx0XHRcdGNvbnN0IHNpZ25pbmdLZXlJZHMgPSBtZXNzYWdlLmdldFNpZ25pbmdLZXlJZHMoKTtcblx0XHRcdGlmIChzaWduaW5nS2V5SWRzICYmIDAgPCBzaWduaW5nS2V5SWRzLmxlbmd0aCkge1xuXHRcdFx0XHRjb25zdCBwdWJsaWNLZXlzID0gdGhpcy5maW5kUHVibGljS2V5c0J5U2lnbmluZ0tleUlkcyhzaWduaW5nS2V5SWRzKTtcblx0XHRcdFx0aWYgKHB1YmxpY0tleXMgJiYgMCA8IHB1YmxpY0tleXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRcdGNvbnN0IHJlc3VsdCA9IG1lc3NhZ2UudmVyaWZ5KHB1YmxpY0tleXMpLFxuXHRcdFx0XHRcdFx0XHR2YWxpZCA9IF8uZmluZChfLmlzQXJyYXkocmVzdWx0KSA/IHJlc3VsdCA6IFtdLCAoaXRlbSkgPT4gaXRlbSAmJiBpdGVtLnZhbGlkICYmIGl0ZW0ua2V5aWQpO1xuXG5cdFx0XHRcdFx0XHRpZiAodmFsaWQgJiYgdmFsaWQua2V5aWQgJiYgdmFsaWQua2V5aWQgJiYgdmFsaWQua2V5aWQudG9IZXgpIHtcblx0XHRcdFx0XHRcdFx0ZkNhbGxiYWNrKHRoaXMuZmluZFB1YmxpY0tleUJ5SGV4KHZhbGlkLmtleWlkLnRvSGV4KCkpKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0bG9nKGUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGZDYWxsYmFjayhudWxsLCBzaWduaW5nS2V5SWRzKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZDYWxsYmFjayhudWxsKTtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRjb250cm9sc0hlbHBlcihkb20sIHZlckNvbnRyb2wsIHN1Y2Nlc3MsIHRpdGxlLCB0ZXh0KSB7XG5cdFx0aWYgKHN1Y2Nlc3MpIHtcblx0XHRcdGRvbVxuXHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ2Vycm9yJylcblx0XHRcdFx0LmFkZENsYXNzKCdzdWNjZXNzJylcblx0XHRcdFx0LmF0dHIoJ3RpdGxlJywgdGl0bGUpO1xuXHRcdFx0dmVyQ29udHJvbFxuXHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ2Vycm9yJylcblx0XHRcdFx0LmFkZENsYXNzKCdzdWNjZXNzJylcblx0XHRcdFx0LmF0dHIoJ3RpdGxlJywgdGl0bGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRkb21cblx0XHRcdFx0LnJlbW92ZUNsYXNzKCdzdWNjZXNzJylcblx0XHRcdFx0LmFkZENsYXNzKCdlcnJvcicpXG5cdFx0XHRcdC5hdHRyKCd0aXRsZScsIHRpdGxlKTtcblx0XHRcdHZlckNvbnRyb2xcblx0XHRcdFx0LnJlbW92ZUNsYXNzKCdzdWNjZXNzJylcblx0XHRcdFx0LmFkZENsYXNzKCdlcnJvcicpXG5cdFx0XHRcdC5hdHRyKCd0aXRsZScsIHRpdGxlKTtcblx0XHR9XG5cblx0XHRpZiAoIWlzVW5kKHRleHQpKSB7XG5cdFx0XHRkb20udGV4dCh0cmltKHRleHQpKTtcblx0XHR9XG5cdH1cblxuXHRzdGF0aWMgZG9tQ29udHJvbEVuY3J5cHRlZENsaWNrSGVscGVyKHN0b3JlLCBkb20sIGFybW9yZWRNZXNzYWdlLCByZWNpcGllbnRzKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0bGV0IG1lc3NhZ2UgPSBudWxsO1xuXHRcdFx0Y29uc3QgJHRoaXMgPSAkKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXG5cdFx0XHRpZiAoJHRoaXMuaGFzQ2xhc3MoJ3N1Y2Nlc3MnKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBzdG9yZS5vcGVucGdwLm1lc3NhZ2UucmVhZEFybW9yZWQoYXJtb3JlZE1lc3NhZ2UpO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRsb2coZSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtZXNzYWdlICYmIG1lc3NhZ2UuZ2V0VGV4dCAmJiBtZXNzYWdlLnZlcmlmeSAmJiBtZXNzYWdlLmRlY3J5cHQpIHtcblx0XHRcdFx0c3RvcmUuZGVjcnlwdE1lc3NhZ2UoXG5cdFx0XHRcdFx0bWVzc2FnZSxcblx0XHRcdFx0XHRyZWNpcGllbnRzLFxuXHRcdFx0XHRcdCh2YWxpZFByaXZhdGVLZXksIGRlY3J5cHRlZE1lc3NhZ2UsIHZhbGlkUHVibGljS2V5LCBzaWduaW5nS2V5SWRzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoZGVjcnlwdGVkTWVzc2FnZSkge1xuXHRcdFx0XHRcdFx0XHRpZiAodmFsaWRQdWJsaWNLZXkpIHtcblx0XHRcdFx0XHRcdFx0XHRzdG9yZS5jb250cm9sc0hlbHBlcihcblx0XHRcdFx0XHRcdFx0XHRcdGRvbSxcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdGkxOG4oJ1BHUF9OT1RJRklDQVRJT05TL0dPT0RfU0lHTkFUVVJFJywge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnVVNFUic6IHZhbGlkUHVibGljS2V5LnVzZXIgKyAnICgnICsgdmFsaWRQdWJsaWNLZXkuaWQgKyAnKSdcblx0XHRcdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZGVjcnlwdGVkTWVzc2FnZS5nZXRUZXh0KClcblx0XHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHZhbGlkUHJpdmF0ZUtleSkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGtleUlkcyA9IGlzTm9uRW1wdHlBcnJheShzaWduaW5nS2V5SWRzKSA/IHNpZ25pbmdLZXlJZHMgOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0YWRkaXRpb25hbCA9IGtleUlkc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQ/IF8uY29tcGFjdChfLm1hcChrZXlJZHMsIChpdGVtKSA9PiAoaXRlbSAmJiBpdGVtLnRvSGV4ID8gaXRlbS50b0hleCgpIDogbnVsbCkpKS5qb2luKCcsICcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDogJyc7XG5cblx0XHRcdFx0XHRcdFx0XHRzdG9yZS5jb250cm9sc0hlbHBlcihcblx0XHRcdFx0XHRcdFx0XHRcdGRvbSxcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0XHRpMThuKCdQR1BfTk9USUZJQ0FUSU9OUy9VTlZFUklGSVJFRF9TSUdOQVRVUkUnKSArIChhZGRpdGlvbmFsID8gJyAoJyArIGFkZGl0aW9uYWwgKyAnKScgOiAnJyksXG5cdFx0XHRcdFx0XHRcdFx0XHRkZWNyeXB0ZWRNZXNzYWdlLmdldFRleHQoKVxuXHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0c3RvcmUuY29udHJvbHNIZWxwZXIoZG9tLCAkdGhpcywgZmFsc2UsIGkxOG4oJ1BHUF9OT1RJRklDQVRJT05TL0RFQ1JZUFRJT05fRVJST1InKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHN0b3JlLmNvbnRyb2xzSGVscGVyKGRvbSwgJHRoaXMsIGZhbHNlLCBpMThuKCdQR1BfTk9USUZJQ0FUSU9OUy9ERUNSWVBUSU9OX0VSUk9SJykpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0KTtcblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHN0b3JlLmNvbnRyb2xzSGVscGVyKGRvbSwgJHRoaXMsIGZhbHNlLCBpMThuKCdQR1BfTk9USUZJQ0FUSU9OUy9ERUNSWVBUSU9OX0VSUk9SJykpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cdH1cblxuXHRzdGF0aWMgZG9tQ29udHJvbFNpZ25lZENsaWNrSGVscGVyKHN0b3JlLCBkb20sIGFybW9yZWRNZXNzYWdlKSB7XG5cdFx0cmV0dXJuIGZ1bmN0aW9uKCkge1xuXHRcdFx0bGV0IG1lc3NhZ2UgPSBudWxsO1xuXHRcdFx0Y29uc3QgJHRoaXMgPSAkKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXG5cdFx0XHRpZiAoJHRoaXMuaGFzQ2xhc3MoJ3N1Y2Nlc3MnKSB8fCAkdGhpcy5oYXNDbGFzcygnZXJyb3InKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdG1lc3NhZ2UgPSBzdG9yZS5vcGVucGdwLmNsZWFydGV4dC5yZWFkQXJtb3JlZChhcm1vcmVkTWVzc2FnZSk7XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdGxvZyhlKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS5nZXRUZXh0ICYmIG1lc3NhZ2UudmVyaWZ5KSB7XG5cdFx0XHRcdHN0b3JlLnZlcmlmeU1lc3NhZ2UobWVzc2FnZSwgKHZhbGlkS2V5LCBzaWduaW5nS2V5SWRzKSA9PiB7XG5cdFx0XHRcdFx0aWYgKHZhbGlkS2V5KSB7XG5cdFx0XHRcdFx0XHRzdG9yZS5jb250cm9sc0hlbHBlcihcblx0XHRcdFx0XHRcdFx0ZG9tLFxuXHRcdFx0XHRcdFx0XHQkdGhpcyxcblx0XHRcdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRcdFx0aTE4bignUEdQX05PVElGSUNBVElPTlMvR09PRF9TSUdOQVRVUkUnLCB7XG5cdFx0XHRcdFx0XHRcdFx0J1VTRVInOiB2YWxpZEtleS51c2VyICsgJyAoJyArIHZhbGlkS2V5LmlkICsgJyknXG5cdFx0XHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdFx0XHRtZXNzYWdlLmdldFRleHQoKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0Y29uc3Qga2V5SWRzID0gaXNOb25FbXB0eUFycmF5KHNpZ25pbmdLZXlJZHMpID8gc2lnbmluZ0tleUlkcyA6IG51bGwsXG5cdFx0XHRcdFx0XHRcdGFkZGl0aW9uYWwgPSBrZXlJZHNcblx0XHRcdFx0XHRcdFx0XHQ/IF8uY29tcGFjdChfLm1hcChrZXlJZHMsIChpdGVtKSA9PiAoaXRlbSAmJiBpdGVtLnRvSGV4ID8gaXRlbS50b0hleCgpIDogbnVsbCkpKS5qb2luKCcsICcpXG5cdFx0XHRcdFx0XHRcdFx0OiAnJztcblxuXHRcdFx0XHRcdFx0c3RvcmUuY29udHJvbHNIZWxwZXIoXG5cdFx0XHRcdFx0XHRcdGRvbSxcblx0XHRcdFx0XHRcdFx0JHRoaXMsXG5cdFx0XHRcdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRpMThuKCdQR1BfTk9USUZJQ0FUSU9OUy9VTlZFUklGSVJFRF9TSUdOQVRVUkUnKSArIChhZGRpdGlvbmFsID8gJyAoJyArIGFkZGl0aW9uYWwgKyAnKScgOiAnJylcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHN0b3JlLmNvbnRyb2xzSGVscGVyKGRvbSwgJHRoaXMsIGZhbHNlLCBpMThuKCdQR1BfTk9USUZJQ0FUSU9OUy9ERUNSWVBUSU9OX0VSUk9SJykpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHsqfSBkb21cblx0ICogQHBhcmFtIHtNZXNzYWdlTW9kZWx9IHJhaW5Mb29wTWVzc2FnZVxuXHQgKi9cblx0aW5pdE1lc3NhZ2VCb2R5Q29udHJvbHMoZG9tLCByYWluTG9vcE1lc3NhZ2UpIHtcblx0XHRpZiAoZG9tICYmICFkb20uaGFzQ2xhc3MoJ2luaXRlZCcpKSB7XG5cdFx0XHRkb20uYWRkQ2xhc3MoJ2luaXRlZCcpO1xuXG5cdFx0XHRjb25zdCBlbmNyeXB0ZWQgPSBkb20uaGFzQ2xhc3MoJ2VuY3J5cHRlZCcpLFxuXHRcdFx0XHRzaWduZWQgPSBkb20uaGFzQ2xhc3MoJ3NpZ25lZCcpLFxuXHRcdFx0XHRyZWNpcGllbnRzID0gcmFpbkxvb3BNZXNzYWdlID8gcmFpbkxvb3BNZXNzYWdlLmdldEVtYWlscyhbJ2Zyb20nLCAndG8nLCAnY2MnXSkgOiBbXTtcblxuXHRcdFx0bGV0IHZlckNvbnRyb2wgPSBudWxsO1xuXG5cdFx0XHRpZiAoZW5jcnlwdGVkIHx8IHNpZ25lZCkge1xuXHRcdFx0XHRjb25zdCBkb21UZXh0ID0gZG9tLnRleHQoKTtcblx0XHRcdFx0ZG9tLmRhdGEoJ29wZW5wZ3Atb3JpZ2luYWwnLCBkb21UZXh0KTtcblxuXHRcdFx0XHRpZiAoZW5jcnlwdGVkKSB7XG5cdFx0XHRcdFx0dmVyQ29udHJvbCA9ICQoJzxkaXYgY2xhc3M9XCJiLW9wZW5wZ3AtY29udHJvbFwiPjxpIGNsYXNzPVwiaWNvbi1sb2NrXCI+PC9pPjwvZGl2PicpXG5cdFx0XHRcdFx0XHQuYXR0cigndGl0bGUnLCBpMThuKCdNRVNTQUdFL1BHUF9FTkNSWVBURURfTUVTU0FHRV9ERVNDJykpXG5cdFx0XHRcdFx0XHQub24oJ2NsaWNrJywgUGdwVXNlclN0b3JlLmRvbUNvbnRyb2xFbmNyeXB0ZWRDbGlja0hlbHBlcih0aGlzLCBkb20sIGRvbVRleHQsIHJlY2lwaWVudHMpKTtcblx0XHRcdFx0fSBlbHNlIGlmIChzaWduZWQpIHtcblx0XHRcdFx0XHR2ZXJDb250cm9sID0gJCgnPGRpdiBjbGFzcz1cImItb3BlbnBncC1jb250cm9sXCI+PGkgY2xhc3M9XCJpY29uLWxvY2tcIj48L2k+PC9kaXY+Jylcblx0XHRcdFx0XHRcdC5hdHRyKCd0aXRsZScsIGkxOG4oJ01FU1NBR0UvUEdQX1NJR05FRF9NRVNTQUdFX0RFU0MnKSlcblx0XHRcdFx0XHRcdC5vbignY2xpY2snLCBQZ3BVc2VyU3RvcmUuZG9tQ29udHJvbFNpZ25lZENsaWNrSGVscGVyKHRoaXMsIGRvbSwgZG9tVGV4dCkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHZlckNvbnRyb2wpIHtcblx0XHRcdFx0XHRkb20uYmVmb3JlKHZlckNvbnRyb2wpLmJlZm9yZSgnPGRpdj48L2Rpdj4nKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgUGdwVXNlclN0b3JlKCk7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmICghaXNPYmplY3QoaXQpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhbiBvYmplY3QnKTtcbiAgfSByZXR1cm4gaXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZXhlYykge1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsInZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcblxudmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzT3duKGl0LCBrZXkpIHtcbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwodG9PYmplY3QoaXQpLCBrZXkpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMnKTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZXhlY2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUuZXhlY1xuJCh7IHRhcmdldDogJ1JlZ0V4cCcsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IC8uLy5leGVjICE9PSBleGVjIH0sIHtcbiAgZXhlYzogZXhlY1xufSk7XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgeyBNYWdpY3MgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmNsYXNzIEFjY291bnRVc2VyU3RvcmUge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmVtYWlsID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5wYXJlbnRFbWFpbCA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5zaWduYXR1cmUgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMuYWNjb3VudHMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXHRcdHRoaXMuYWNjb3VudHMubG9hZGluZyA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IHRocm90dGxlOiBNYWdpY3MuVGltZTEwMG1zIH0pO1xuXG5cdFx0dGhpcy5jb21wdXRlcnMoKTtcblx0fVxuXG5cdGNvbXB1dGVycygpIHtcblx0XHR0aGlzLmFjY291bnRzRW1haWxzID0ga28uY29tcHV0ZWQoKCkgPT4gXy5jb21wYWN0KF8ubWFwKHRoaXMuYWNjb3VudHMoKSwgKGl0ZW0pID0+IChpdGVtID8gaXRlbS5lbWFpbCA6IG51bGwpKSkpO1xuXG5cdFx0dGhpcy5hY2NvdW50c1VucmVhZENvdW50ID0ga28uY29tcHV0ZWQoKCkgPT4gMCk7XG5cdFx0Ly8gdGhpcy5hY2NvdW50c1VucmVhZENvdW50ID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdC8vIFx0bGV0IHJlc3VsdCA9IDA7XG5cdFx0Ly8gXHRfLmVhY2godGhpcy5hY2NvdW50cygpLCAoaXRlbSkgPT4ge1xuXHRcdC8vIFx0XHRpZiAoaXRlbSlcblx0XHQvLyBcdFx0e1xuXHRcdC8vIFx0XHRcdHJlc3VsdCArPSBpdGVtLmNvdW50KCk7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH0pO1xuXHRcdC8vIFx0cmV0dXJuIHJlc3VsdDtcblx0XHQvLyB9KTtcblx0fVxuXG5cdHBvcHVsYXRlKCkge1xuXHRcdHRoaXMuZW1haWwoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0VtYWlsJykpO1xuXHRcdHRoaXMucGFyZW50RW1haWwoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1BhcmVudEVtYWlsJykpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aXNSb290QWNjb3VudCgpIHtcblx0XHRyZXR1cm4gJycgPT09IHRoaXMucGFyZW50RW1haWwoKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgQWNjb3VudFVzZXJTdG9yZSgpO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xuXG52YXIgRnVuY3Rpb25Qcm90b3R5cGUgPSBGdW5jdGlvbi5wcm90b3R5cGU7XG52YXIgRnVuY3Rpb25Qcm90b3R5cGVUb1N0cmluZyA9IEZ1bmN0aW9uUHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIG5hbWVSRSA9IC9eXFxzKmZ1bmN0aW9uIChbXiAoXSopLztcbnZhciBOQU1FID0gJ25hbWUnO1xuXG4vLyBGdW5jdGlvbiBpbnN0YW5jZXMgYC5uYW1lYCBwcm9wZXJ0eVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1mdW5jdGlvbi1pbnN0YW5jZXMtbmFtZVxuaWYgKERFU0NSSVBUT1JTICYmICEoTkFNRSBpbiBGdW5jdGlvblByb3RvdHlwZSkpIHtcbiAgZGVmaW5lUHJvcGVydHkoRnVuY3Rpb25Qcm90b3R5cGUsIE5BTUUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gRnVuY3Rpb25Qcm90b3R5cGVUb1N0cmluZy5jYWxsKHRoaXMpLm1hdGNoKG5hbWVSRSlbMV07XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PT0gJ29iamVjdCcgPyBpdCAhPT0gbnVsbCA6IHR5cGVvZiBpdCA9PT0gJ2Z1bmN0aW9uJztcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHlNb2R1bGUuZihvYmplY3QsIGtleSwgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIHZhbHVlKSk7XG59IDogZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG4vLyBEZXRlY3QgSUU4J3MgaW5jb21wbGV0ZSBkZWZpbmVQcm9wZXJ0eSBpbXBsZW1lbnRhdGlvblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPSA3O1xufSk7XG4iLCJ2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gRGV0ZWN0IElFOCdzIGluY29tcGxldGUgZGVmaW5lUHJvcGVydHkgaW1wbGVtZW50YXRpb25cbm1vZHVsZS5leHBvcnRzID0gIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1kZWZpbmVwcm9wZXJ0eSAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAxLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KVsxXSAhPSA3O1xufSk7XG4iLCIvLyBgUmVxdWlyZU9iamVjdENvZXJjaWJsZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlcXVpcmVvYmplY3Rjb2VyY2libGVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIGlmIChpdCA9PSB1bmRlZmluZWQpIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uIFwiICsgaXQpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9zZXQtaW50ZXJ2YWxcIik7IiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkge1xuICAgIHRocm93IFR5cGVFcnJvcihTdHJpbmcoaXQpICsgJyBpcyBub3QgYW4gb2JqZWN0Jyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIGdldFN1YnN0aXR1dGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtc3Vic3RpdHV0aW9uJyk7XG52YXIgcmVnRXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYy1hYnN0cmFjdCcpO1xuXG52YXIgbWF4ID0gTWF0aC5tYXg7XG52YXIgbWluID0gTWF0aC5taW47XG5cbnZhciBtYXliZVRvU3RyaW5nID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA9PT0gdW5kZWZpbmVkID8gaXQgOiBTdHJpbmcoaXQpO1xufTtcblxuLy8gQEByZXBsYWNlIGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygncmVwbGFjZScsIDIsIGZ1bmN0aW9uIChSRVBMQUNFLCBuYXRpdmVSZXBsYWNlLCBtYXliZUNhbGxOYXRpdmUsIHJlYXNvbikge1xuICB2YXIgUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkUgPSByZWFzb24uUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkU7XG4gIHZhciBSRVBMQUNFX0tFRVBTXyQwID0gcmVhc29uLlJFUExBQ0VfS0VFUFNfJDA7XG4gIHZhciBVTlNBRkVfU1VCU1RJVFVURSA9IFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFID8gJyQnIDogJyQwJztcblxuICByZXR1cm4gW1xuICAgIC8vIGBTdHJpbmcucHJvdG90eXBlLnJlcGxhY2VgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlXG4gICAgZnVuY3Rpb24gcmVwbGFjZShzZWFyY2hWYWx1ZSwgcmVwbGFjZVZhbHVlKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgcmVwbGFjZXIgPSBzZWFyY2hWYWx1ZSA9PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBzZWFyY2hWYWx1ZVtSRVBMQUNFXTtcbiAgICAgIHJldHVybiByZXBsYWNlciAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gcmVwbGFjZXIuY2FsbChzZWFyY2hWYWx1ZSwgTywgcmVwbGFjZVZhbHVlKVxuICAgICAgICA6IG5hdGl2ZVJlcGxhY2UuY2FsbChTdHJpbmcoTyksIHNlYXJjaFZhbHVlLCByZXBsYWNlVmFsdWUpO1xuICAgIH0sXG4gICAgLy8gYFJlZ0V4cC5wcm90b3R5cGVbQEByZXBsYWNlXWAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZWdleHAucHJvdG90eXBlLUBAcmVwbGFjZVxuICAgIGZ1bmN0aW9uIChyZWdleHAsIHJlcGxhY2VWYWx1ZSkge1xuICAgICAgaWYgKFxuICAgICAgICAoIVJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFICYmIFJFUExBQ0VfS0VFUFNfJDApIHx8XG4gICAgICAgICh0eXBlb2YgcmVwbGFjZVZhbHVlID09PSAnc3RyaW5nJyAmJiByZXBsYWNlVmFsdWUuaW5kZXhPZihVTlNBRkVfU1VCU1RJVFVURSkgPT09IC0xKVxuICAgICAgKSB7XG4gICAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlUmVwbGFjZSwgcmVnZXhwLCB0aGlzLCByZXBsYWNlVmFsdWUpO1xuICAgICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcblxuICAgICAgdmFyIGZ1bmN0aW9uYWxSZXBsYWNlID0gdHlwZW9mIHJlcGxhY2VWYWx1ZSA9PT0gJ2Z1bmN0aW9uJztcbiAgICAgIGlmICghZnVuY3Rpb25hbFJlcGxhY2UpIHJlcGxhY2VWYWx1ZSA9IFN0cmluZyhyZXBsYWNlVmFsdWUpO1xuXG4gICAgICB2YXIgZ2xvYmFsID0gcnguZ2xvYmFsO1xuICAgICAgaWYgKGdsb2JhbCkge1xuICAgICAgICB2YXIgZnVsbFVuaWNvZGUgPSByeC51bmljb2RlO1xuICAgICAgICByeC5sYXN0SW5kZXggPSAwO1xuICAgICAgfVxuICAgICAgdmFyIHJlc3VsdHMgPSBbXTtcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKTtcbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbCkgYnJlYWs7XG5cbiAgICAgICAgcmVzdWx0cy5wdXNoKHJlc3VsdCk7XG4gICAgICAgIGlmICghZ2xvYmFsKSBicmVhaztcblxuICAgICAgICB2YXIgbWF0Y2hTdHIgPSBTdHJpbmcocmVzdWx0WzBdKTtcbiAgICAgICAgaWYgKG1hdGNoU3RyID09PSAnJykgcngubGFzdEluZGV4ID0gYWR2YW5jZVN0cmluZ0luZGV4KFMsIHRvTGVuZ3RoKHJ4Lmxhc3RJbmRleCksIGZ1bGxVbmljb2RlKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGFjY3VtdWxhdGVkUmVzdWx0ID0gJyc7XG4gICAgICB2YXIgbmV4dFNvdXJjZVBvc2l0aW9uID0gMDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICByZXN1bHQgPSByZXN1bHRzW2ldO1xuXG4gICAgICAgIHZhciBtYXRjaGVkID0gU3RyaW5nKHJlc3VsdFswXSk7XG4gICAgICAgIHZhciBwb3NpdGlvbiA9IG1heChtaW4odG9JbnRlZ2VyKHJlc3VsdC5pbmRleCksIFMubGVuZ3RoKSwgMCk7XG4gICAgICAgIHZhciBjYXB0dXJlcyA9IFtdO1xuICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgICAgLy8gICBjYXB0dXJlcyA9IHJlc3VsdC5zbGljZSgxKS5tYXAobWF5YmVUb1N0cmluZylcbiAgICAgICAgLy8gYnV0IGZvciBzb21lIHJlYXNvbiBgbmF0aXZlU2xpY2UuY2FsbChyZXN1bHQsIDEsIHJlc3VsdC5sZW5ndGgpYCAoY2FsbGVkIGluXG4gICAgICAgIC8vIHRoZSBzbGljZSBwb2x5ZmlsbCB3aGVuIHNsaWNpbmcgbmF0aXZlIGFycmF5cykgXCJkb2Vzbid0IHdvcmtcIiBpbiBzYWZhcmkgOSBhbmRcbiAgICAgICAgLy8gY2F1c2VzIGEgY3Jhc2ggKGh0dHBzOi8vcGFzdGViaW4uY29tL04yMVF6ZVFBKSB3aGVuIHRyeWluZyB0byBkZWJ1ZyBpdC5cbiAgICAgICAgZm9yICh2YXIgaiA9IDE7IGogPCByZXN1bHQubGVuZ3RoOyBqKyspIGNhcHR1cmVzLnB1c2gobWF5YmVUb1N0cmluZyhyZXN1bHRbal0pKTtcbiAgICAgICAgdmFyIG5hbWVkQ2FwdHVyZXMgPSByZXN1bHQuZ3JvdXBzO1xuICAgICAgICBpZiAoZnVuY3Rpb25hbFJlcGxhY2UpIHtcbiAgICAgICAgICB2YXIgcmVwbGFjZXJBcmdzID0gW21hdGNoZWRdLmNvbmNhdChjYXB0dXJlcywgcG9zaXRpb24sIFMpO1xuICAgICAgICAgIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHJlcGxhY2VyQXJncy5wdXNoKG5hbWVkQ2FwdHVyZXMpO1xuICAgICAgICAgIHZhciByZXBsYWNlbWVudCA9IFN0cmluZyhyZXBsYWNlVmFsdWUuYXBwbHkodW5kZWZpbmVkLCByZXBsYWNlckFyZ3MpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXBsYWNlbWVudCA9IGdldFN1YnN0aXR1dGlvbihtYXRjaGVkLCBTLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBvc2l0aW9uID49IG5leHRTb3VyY2VQb3NpdGlvbikge1xuICAgICAgICAgIGFjY3VtdWxhdGVkUmVzdWx0ICs9IFMuc2xpY2UobmV4dFNvdXJjZVBvc2l0aW9uLCBwb3NpdGlvbikgKyByZXBsYWNlbWVudDtcbiAgICAgICAgICBuZXh0U291cmNlUG9zaXRpb24gPSBwb3NpdGlvbiArIG1hdGNoZWQubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjdW11bGF0ZWRSZXN1bHQgKyBTLnNsaWNlKG5leHRTb3VyY2VQb3NpdGlvbik7XG4gICAgfVxuICBdO1xufSk7XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCB7IENvb2tpZURyaXZlciB9IGZyb20gJ0NvbW1vbi9DbGllbnRTdG9yYWdlRHJpdmVyL0Nvb2tpZSc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VEcml2ZXIgfSBmcm9tICdDb21tb24vQ2xpZW50U3RvcmFnZURyaXZlci9Mb2NhbFN0b3JhZ2UnO1xuXG5jb25zdCBTdXBwb3J0ZWRTdG9yYWdlRHJpdmVyID0gXy5maW5kKFxuXHRbTG9jYWxTdG9yYWdlRHJpdmVyLCBDb29raWVEcml2ZXJdLFxuXHQoU3RvcmFnZURyaXZlcikgPT4gU3RvcmFnZURyaXZlciAmJiBTdG9yYWdlRHJpdmVyLnN1cHBvcnRlZCgpXG4pO1xuXG5jb25zdCBkcml2ZXIgPSBTdXBwb3J0ZWRTdG9yYWdlRHJpdmVyID8gbmV3IFN1cHBvcnRlZFN0b3JhZ2VEcml2ZXIoKSA6IG51bGw7XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGtleVxuICogQHBhcmFtIHsqfSBkYXRhXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldChrZXksIGRhdGEpIHtcblx0cmV0dXJuIGRyaXZlciA/IGRyaXZlci5zZXQoJ3AnICsga2V5LCBkYXRhKSA6IGZhbHNlO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBrZXlcbiAqIEByZXR1cm5zIHsqfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0KGtleSkge1xuXHRyZXR1cm4gZHJpdmVyID8gZHJpdmVyLmdldCgncCcgKyBrZXkpIDogbnVsbDtcbn1cbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5sZXQgX21vbWVudCA9IG51bGw7XG5sZXQgX21vbWVudE5vdyA9IDA7XG5cbmNvbnN0IHVwZGF0ZU1vbWVudE5vdyA9IF8uZGVib3VuY2UoXG5cdCgpID0+IHtcblx0XHRfbW9tZW50ID0gbW9tZW50KCk7XG5cdH0sXG5cdDUwMCxcblx0dHJ1ZVxuKTtcblxuY29uc3QgdXBkYXRlTW9tZW50Tm93VW5peCA9IF8uZGVib3VuY2UoXG5cdCgpID0+IHtcblx0XHRfbW9tZW50Tm93ID0gbW9tZW50KCkudW5peCgpO1xuXHR9LFxuXHQ1MDAsXG5cdHRydWVcbik7XG5cbi8qKlxuICogQHJldHVybnMge21vbWVudH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbWVudE5vdygpIHtcblx0dXBkYXRlTW9tZW50Tm93KCk7XG5cdHJldHVybiBfbW9tZW50IHx8IG1vbWVudCgpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb21lbnROb3dVbml4KCkge1xuXHR1cGRhdGVNb21lbnROb3dVbml4KCk7XG5cdHJldHVybiBfbW9tZW50Tm93IHx8IDA7XG59XG5cbi8qKlxuICogQHBhcmFtIHtudW1iZXJ9IGRhdGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hTdWJ0cmFjdEZvcm1hdERhdGVIZWxwZXIoZGF0ZSkge1xuXHRyZXR1cm4gbW9tZW50Tm93KClcblx0XHQuY2xvbmUoKVxuXHRcdC5zdWJ0cmFjdChkYXRlLCAnZGF5cycpXG5cdFx0LmZvcm1hdCgnWVlZWS5NTS5ERCcpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7T2JqZWN0fSBtXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBmb3JtYXRDdXN0b21TaG9ydERhdGUobSkge1xuXHRjb25zdCBub3cgPSBtb21lbnROb3coKTtcblx0aWYgKG0gJiYgbm93KSB7XG5cdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRjYXNlIDQgPj0gbm93LmRpZmYobSwgJ2hvdXJzJyk6XG5cdFx0XHRcdHJldHVybiBtLmZyb21Ob3coKTtcblx0XHRcdGNhc2Ugbm93LmZvcm1hdCgnTCcpID09PSBtLmZvcm1hdCgnTCcpOlxuXHRcdFx0XHRyZXR1cm4gaTE4bignTUVTU0FHRV9MSVNUL1RPREFZX0FUJywge1xuXHRcdFx0XHRcdFRJTUU6IG0uZm9ybWF0KCdMVCcpXG5cdFx0XHRcdH0pO1xuXHRcdFx0Y2FzZSBub3dcblx0XHRcdFx0LmNsb25lKClcblx0XHRcdFx0LnN1YnRyYWN0KDEsICdkYXlzJylcblx0XHRcdFx0LmZvcm1hdCgnTCcpID09PSBtLmZvcm1hdCgnTCcpOlxuXHRcdFx0XHRyZXR1cm4gaTE4bignTUVTU0FHRV9MSVNUL1lFU1RFUkRBWV9BVCcsIHtcblx0XHRcdFx0XHRUSU1FOiBtLmZvcm1hdCgnTFQnKVxuXHRcdFx0XHR9KTtcblx0XHRcdGNhc2Ugbm93LnllYXIoKSA9PT0gbS55ZWFyKCk6XG5cdFx0XHRcdHJldHVybiBtLmZvcm1hdCgnRCBNTU0uJyk7XG5cdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIG0gPyBtLmZvcm1hdCgnTEwnKSA6ICcnO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lU3RhbXBJblVUQ1xuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdFN0clxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdCh0aW1lU3RhbXBJblVUQywgZm9ybWF0U3RyKSB7XG5cdGxldCBtID0gbnVsbCxcblx0XHRyZXN1bHQgPSAnJztcblxuXHRjb25zdCBub3cgPSBtb21lbnROb3dVbml4KCk7XG5cblx0dGltZVN0YW1wSW5VVEMgPSAwIDwgdGltZVN0YW1wSW5VVEMgPyB0aW1lU3RhbXBJblVUQyA6IDAgPT09IHRpbWVTdGFtcEluVVRDID8gbm93IDogMDtcblx0dGltZVN0YW1wSW5VVEMgPSBub3cgPCB0aW1lU3RhbXBJblVUQyA/IG5vdyA6IHRpbWVTdGFtcEluVVRDO1xuXG5cdG0gPSAwIDwgdGltZVN0YW1wSW5VVEMgPyBtb21lbnQudW5peCh0aW1lU3RhbXBJblVUQykgOiBudWxsO1xuXG5cdGlmIChtICYmIDE5NzAgPT09IG0ueWVhcigpKSB7XG5cdFx0bSA9IG51bGw7XG5cdH1cblxuXHRpZiAobSkge1xuXHRcdHN3aXRjaCAoZm9ybWF0U3RyKSB7XG5cdFx0XHRjYXNlICdGUk9NTk9XJzpcblx0XHRcdFx0cmVzdWx0ID0gbS5mcm9tTm93KCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnU0hPUlQnOlxuXHRcdFx0XHRyZXN1bHQgPSBmb3JtYXRDdXN0b21TaG9ydERhdGUobSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSAnRlVMTCc6XG5cdFx0XHRcdHJlc3VsdCA9IG0uZm9ybWF0KCdMTEwnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRyZXN1bHQgPSBtLmZvcm1hdChmb3JtYXRTdHIpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7T2JqZWN0fSBlbGVtZW50XG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vbWVudFRvTm9kZShlbGVtZW50KSB7XG5cdGxldCBrZXkgPSAnJyxcblx0XHR0aW1lID0gMDtcblx0Y29uc3QgJGVsID0gJChlbGVtZW50KTtcblxuXHR0aW1lID0gJGVsLmRhdGEoJ21vbWVudC10aW1lJyk7XG5cdGlmICh0aW1lKSB7XG5cdFx0a2V5ID0gJGVsLmRhdGEoJ21vbWVudC1mb3JtYXQnKTtcblx0XHRpZiAoa2V5KSB7XG5cdFx0XHQkZWwudGV4dChmb3JtYXQodGltZSwga2V5KSk7XG5cdFx0fVxuXG5cdFx0a2V5ID0gJGVsLmRhdGEoJ21vbWVudC1mb3JtYXQtdGl0bGUnKTtcblx0XHRpZiAoa2V5KSB7XG5cdFx0XHQkZWwuYXR0cigndGl0bGUnLCBmb3JtYXQodGltZSwga2V5KSk7XG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWxvYWQoKSB7XG5cdF8uZGVmZXIoKCkgPT4ge1xuXHRcdCQoJy5tb21lbnQnLCB3aW5kb3cuZG9jdW1lbnQpLmVhY2goKGluZGV4LCBpdGVtKSA9PiB7XG5cdFx0XHRtb21lbnRUb05vZGUoaXRlbSk7XG5cdFx0fSk7XG5cdH0pO1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9wcm9taXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gd2luZG93Lmhhc2hlcjsiLCJpbXBvcnQgeyBpc05vbkVtcHR5QXJyYXksIGlzVW5kIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IEVtYWlsTW9kZWwgfSBmcm9tICdNb2RlbC9FbWFpbCc7XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheS48RW1haWxNb2RlbD59IGVtYWlsc1xuICogQHBhcmFtIHtib29sZWFuPX0gZnJpZW5kbHlWaWV3ID0gZmFsc2VcbiAqIEBwYXJhbSB7Ym9vbGVhbj19IHdyYXBXaXRoTGluayA9IGZhbHNlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1haWxBcnJheVRvU3RyaW5nKGVtYWlscywgZnJpZW5kbHlWaWV3ID0gZmFsc2UsIHdyYXBXaXRoTGluayA9IGZhbHNlKSB7XG5cdGxldCBpbmRleCA9IDAsXG5cdFx0bGVuID0gMDtcblxuXHRjb25zdCByZXN1bHQgPSBbXTtcblx0aWYgKGlzTm9uRW1wdHlBcnJheShlbWFpbHMpKSB7XG5cdFx0Zm9yIChsZW4gPSBlbWFpbHMubGVuZ3RoOyBpbmRleCA8IGxlbjsgaW5kZXgrKykge1xuXHRcdFx0cmVzdWx0LnB1c2goZW1haWxzW2luZGV4XS50b0xpbmUoZnJpZW5kbHlWaWV3LCB3cmFwV2l0aExpbmspKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0LmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcnJheS48RW1haWxNb2RlbD59IGVtYWlsc1xuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtYWlsQXJyYXlUb1N0cmluZ0NsZWFyKGVtYWlscykge1xuXHRsZXQgaW5kZXggPSAwLFxuXHRcdGxlbiA9IDA7XG5cblx0Y29uc3QgcmVzdWx0ID0gW107XG5cdGlmIChpc05vbkVtcHR5QXJyYXkoZW1haWxzKSkge1xuXHRcdGZvciAobGVuID0gZW1haWxzLmxlbmd0aDsgaW5kZXggPCBsZW47IGluZGV4KyspIHtcblx0XHRcdGlmIChlbWFpbHNbaW5kZXhdICYmIGVtYWlsc1tpbmRleF0uZW1haWwgJiYgJycgIT09IGVtYWlsc1tpbmRleF0ubmFtZSkge1xuXHRcdFx0XHRyZXN1bHQucHVzaChlbWFpbHNbaW5kZXhdLmVtYWlsKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0LmpvaW4oJywgJyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/QXJyYXl9IGpzb25cbiAqIEByZXR1cm5zIHtBcnJheS48RW1haWxNb2RlbD59XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWFpbEFycmF5RnJvbUpzb24oanNvbikge1xuXHRsZXQgaW5kZXggPSAwLFxuXHRcdGxlbiA9IDAsXG5cdFx0ZW1haWwgPSBudWxsO1xuXG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRpZiAoaXNOb25FbXB0eUFycmF5KGpzb24pKSB7XG5cdFx0Zm9yIChpbmRleCA9IDAsIGxlbiA9IGpzb24ubGVuZ3RoOyBpbmRleCA8IGxlbjsgaW5kZXgrKykge1xuXHRcdFx0ZW1haWwgPSBFbWFpbE1vZGVsLm5ld0luc3RhbmNlRnJvbUpzb24oanNvbltpbmRleF0pO1xuXHRcdFx0aWYgKGVtYWlsKSB7XG5cdFx0XHRcdHJlc3VsdC5wdXNoKGVtYWlsKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIEBwYXJhbSB7QXJyYXkuPEVtYWlsTW9kZWw+fSBpbnB1dEVtYWlsc1xuICogQHBhcmFtIHtPYmplY3R9IHVuaWNcbiAqIEBwYXJhbSB7QXJyYXl9IGxvY2FsRW1haWxzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBseUhlbHBlcihpbnB1dEVtYWlscywgdW5pYywgbG9jYWxFbWFpbHMpIHtcblx0aWYgKGlucHV0RW1haWxzICYmIDAgPCBpbnB1dEVtYWlscy5sZW5ndGgpIHtcblx0XHRsZXQgaW5kZXggPSAwO1xuXHRcdGNvbnN0IGxlbiA9IGlucHV0RW1haWxzLmxlbmd0aDtcblxuXHRcdGZvciAoOyBpbmRleCA8IGxlbjsgaW5kZXgrKykge1xuXHRcdFx0aWYgKGlzVW5kKHVuaWNbaW5wdXRFbWFpbHNbaW5kZXhdLmVtYWlsXSkpIHtcblx0XHRcdFx0dW5pY1tpbnB1dEVtYWlsc1tpbmRleF0uZW1haWxdID0gdHJ1ZTtcblx0XHRcdFx0bG9jYWxFbWFpbHMucHVzaChpbnB1dEVtYWlsc1tpbmRleF0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcbnZhciBjb3B5Q29uc3RydWN0b3JQcm9wZXJ0aWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NvcHktY29uc3RydWN0b3ItcHJvcGVydGllcycpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xuXG4vKlxuICBvcHRpb25zLnRhcmdldCAgICAgIC0gbmFtZSBvZiB0aGUgdGFyZ2V0IG9iamVjdFxuICBvcHRpb25zLmdsb2JhbCAgICAgIC0gdGFyZ2V0IGlzIHRoZSBnbG9iYWwgb2JqZWN0XG4gIG9wdGlvbnMuc3RhdCAgICAgICAgLSBleHBvcnQgYXMgc3RhdGljIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucHJvdG8gICAgICAgLSBleHBvcnQgYXMgcHJvdG90eXBlIG1ldGhvZHMgb2YgdGFyZ2V0XG4gIG9wdGlvbnMucmVhbCAgICAgICAgLSByZWFsIHByb3RvdHlwZSBtZXRob2QgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLmZvcmNlZCAgICAgIC0gZXhwb3J0IGV2ZW4gaWYgdGhlIG5hdGl2ZSBmZWF0dXJlIGlzIGF2YWlsYWJsZVxuICBvcHRpb25zLmJpbmQgICAgICAgIC0gYmluZCBtZXRob2RzIHRvIHRoZSB0YXJnZXQsIHJlcXVpcmVkIGZvciB0aGUgYHB1cmVgIHZlcnNpb25cbiAgb3B0aW9ucy53cmFwICAgICAgICAtIHdyYXAgY29uc3RydWN0b3JzIHRvIHByZXZlbnRpbmcgZ2xvYmFsIHBvbGx1dGlvbiwgcmVxdWlyZWQgZm9yIHRoZSBgcHVyZWAgdmVyc2lvblxuICBvcHRpb25zLnVuc2FmZSAgICAgIC0gdXNlIHRoZSBzaW1wbGUgYXNzaWdubWVudCBvZiBwcm9wZXJ0eSBpbnN0ZWFkIG9mIGRlbGV0ZSArIGRlZmluZVByb3BlcnR5XG4gIG9wdGlvbnMuc2hhbSAgICAgICAgLSBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gIG9wdGlvbnMuZW51bWVyYWJsZSAgLSBleHBvcnQgYXMgZW51bWVyYWJsZSBwcm9wZXJ0eVxuICBvcHRpb25zLm5vVGFyZ2V0R2V0IC0gcHJldmVudCBjYWxsaW5nIGEgZ2V0dGVyIG9uIHRhcmdldFxuKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9wdGlvbnMsIHNvdXJjZSkge1xuICB2YXIgVEFSR0VUID0gb3B0aW9ucy50YXJnZXQ7XG4gIHZhciBHTE9CQUwgPSBvcHRpb25zLmdsb2JhbDtcbiAgdmFyIFNUQVRJQyA9IG9wdGlvbnMuc3RhdDtcbiAgdmFyIEZPUkNFRCwgdGFyZ2V0LCBrZXksIHRhcmdldFByb3BlcnR5LCBzb3VyY2VQcm9wZXJ0eSwgZGVzY3JpcHRvcjtcbiAgaWYgKEdMT0JBTCkge1xuICAgIHRhcmdldCA9IGdsb2JhbDtcbiAgfSBlbHNlIGlmIChTVEFUSUMpIHtcbiAgICB0YXJnZXQgPSBnbG9iYWxbVEFSR0VUXSB8fCBzZXRHbG9iYWwoVEFSR0VULCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0ID0gKGdsb2JhbFtUQVJHRVRdIHx8IHt9KS5wcm90b3R5cGU7XG4gIH1cbiAgaWYgKHRhcmdldCkgZm9yIChrZXkgaW4gc291cmNlKSB7XG4gICAgc291cmNlUHJvcGVydHkgPSBzb3VyY2Vba2V5XTtcbiAgICBpZiAob3B0aW9ucy5ub1RhcmdldEdldCkge1xuICAgICAgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSk7XG4gICAgICB0YXJnZXRQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgZGVzY3JpcHRvci52YWx1ZTtcbiAgICB9IGVsc2UgdGFyZ2V0UHJvcGVydHkgPSB0YXJnZXRba2V5XTtcbiAgICBGT1JDRUQgPSBpc0ZvcmNlZChHTE9CQUwgPyBrZXkgOiBUQVJHRVQgKyAoU1RBVElDID8gJy4nIDogJyMnKSArIGtleSwgb3B0aW9ucy5mb3JjZWQpO1xuICAgIC8vIGNvbnRhaW5lZCBpbiB0YXJnZXRcbiAgICBpZiAoIUZPUkNFRCAmJiB0YXJnZXRQcm9wZXJ0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSB0eXBlb2YgdGFyZ2V0UHJvcGVydHkpIGNvbnRpbnVlO1xuICAgICAgY29weUNvbnN0cnVjdG9yUHJvcGVydGllcyhzb3VyY2VQcm9wZXJ0eSwgdGFyZ2V0UHJvcGVydHkpO1xuICAgIH1cbiAgICAvLyBhZGQgYSBmbGFnIHRvIG5vdCBjb21wbGV0ZWx5IGZ1bGwgcG9seWZpbGxzXG4gICAgaWYgKG9wdGlvbnMuc2hhbSB8fCAodGFyZ2V0UHJvcGVydHkgJiYgdGFyZ2V0UHJvcGVydHkuc2hhbSkpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShzb3VyY2VQcm9wZXJ0eSwgJ3NoYW0nLCB0cnVlKTtcbiAgICB9XG4gICAgLy8gZXh0ZW5kIGdsb2JhbFxuICAgIHJlZGVmaW5lKHRhcmdldCwga2V5LCBzb3VyY2VQcm9wZXJ0eSwgb3B0aW9ucyk7XG4gIH1cbn07XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHNhZmVcbnZhciAkZGVmaW5lUHJvcGVydHkgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbmV4cG9ydHMuZiA9IERFU0NSSVBUT1JTID8gJGRlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiAkZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKCdnZXQnIGluIEF0dHJpYnV0ZXMgfHwgJ3NldCcgaW4gQXR0cmlidXRlcykgdGhyb3cgVHlwZUVycm9yKCdBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCcpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiaW1wb3J0IHsgaXNBcnJheSwgZGlzcG9zZU9iamVjdCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE1vZGVsIHtcblx0c01vZGVsTmFtZSA9ICcnO1xuXHRkaXNwb3NhYmxlcyA9IFtdO1xuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWxOYW1lID0gJydcblx0ICovXG5cdGNvbnN0cnVjdG9yKG1vZGVsTmFtZSA9ICcnKSB7XG5cdFx0dGhpcy5zTW9kZWxOYW1lID0gbW9kZWxOYW1lIHx8ICcnO1xuXHR9XG5cblx0cmVnRGlzcG9zYWJsZXModmFsdWUpIHtcblx0XHRpZiAoaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdHZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcblx0XHRcdFx0dGhpcy5kaXNwb3NhYmxlcy5wdXNoKGl0ZW0pO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIGlmICh2YWx1ZSkge1xuXHRcdFx0dGhpcy5kaXNwb3NhYmxlcy5wdXNoKHZhbHVlKTtcblx0XHR9XG5cdH1cblxuXHRvbkRlc3Ryb3koKSB7XG5cdFx0ZGlzcG9zZU9iamVjdCh0aGlzKTtcblx0fVxufVxuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHNldEdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zZXQtZ2xvYmFsJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcblxudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldDtcbnZhciBlbmZvcmNlSW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZW5mb3JjZTtcbnZhciBURU1QTEFURSA9IFN0cmluZyhTdHJpbmcpLnNwbGl0KCdTdHJpbmcnKTtcblxuKG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGtleSwgdmFsdWUsIG9wdGlvbnMpIHtcbiAgdmFyIHVuc2FmZSA9IG9wdGlvbnMgPyAhIW9wdGlvbnMudW5zYWZlIDogZmFsc2U7XG4gIHZhciBzaW1wbGUgPSBvcHRpb25zID8gISFvcHRpb25zLmVudW1lcmFibGUgOiBmYWxzZTtcbiAgdmFyIG5vVGFyZ2V0R2V0ID0gb3B0aW9ucyA/ICEhb3B0aW9ucy5ub1RhcmdldEdldCA6IGZhbHNlO1xuICB2YXIgc3RhdGU7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ2Z1bmN0aW9uJykge1xuICAgIGlmICh0eXBlb2Yga2V5ID09ICdzdHJpbmcnICYmICFoYXModmFsdWUsICduYW1lJykpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh2YWx1ZSwgJ25hbWUnLCBrZXkpO1xuICAgIH1cbiAgICBzdGF0ZSA9IGVuZm9yY2VJbnRlcm5hbFN0YXRlKHZhbHVlKTtcbiAgICBpZiAoIXN0YXRlLnNvdXJjZSkge1xuICAgICAgc3RhdGUuc291cmNlID0gVEVNUExBVEUuam9pbih0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8ga2V5IDogJycpO1xuICAgIH1cbiAgfVxuICBpZiAoTyA9PT0gZ2xvYmFsKSB7XG4gICAgaWYgKHNpbXBsZSkgT1trZXldID0gdmFsdWU7XG4gICAgZWxzZSBzZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgcmV0dXJuO1xuICB9IGVsc2UgaWYgKCF1bnNhZmUpIHtcbiAgICBkZWxldGUgT1trZXldO1xuICB9IGVsc2UgaWYgKCFub1RhcmdldEdldCAmJiBPW2tleV0pIHtcbiAgICBzaW1wbGUgPSB0cnVlO1xuICB9XG4gIGlmIChzaW1wbGUpIE9ba2V5XSA9IHZhbHVlO1xuICBlbHNlIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShPLCBrZXksIHZhbHVlKTtcbi8vIGFkZCBmYWtlIEZ1bmN0aW9uI3RvU3RyaW5nIGZvciBjb3JyZWN0IHdvcmsgd3JhcHBlZCBtZXRob2RzIC8gY29uc3RydWN0b3JzIHdpdGggbWV0aG9kcyBsaWtlIExvRGFzaCBpc05hdGl2ZVxufSkoRnVuY3Rpb24ucHJvdG90eXBlLCAndG9TdHJpbmcnLCBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgcmV0dXJuIHR5cGVvZiB0aGlzID09ICdmdW5jdGlvbicgJiYgZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKS5zb3VyY2UgfHwgaW5zcGVjdFNvdXJjZSh0aGlzKTtcbn0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQ09OU1RSVUNUT1IpIHtcbiAgcmV0dXJuIHBhdGhbQ09OU1RSVUNUT1IgKyAnUHJvdG90eXBlJ107XG59O1xuIiwiaW1wb3J0IGtvIGZyb20gJ2tvJztcbmltcG9ydCB7IGlzQXJyYXkgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmNsYXNzIExhbmd1YWdlU3RvcmUge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmxhbmd1YWdlcyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cdFx0dGhpcy5sYW5ndWFnZXNBZG1pbiA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cblx0XHR0aGlzLmxhbmd1YWdlID0ga29cblx0XHRcdC5vYnNlcnZhYmxlKCcnKVxuXHRcdFx0LmV4dGVuZCh7IGxpbWl0ZWRMaXN0OiB0aGlzLmxhbmd1YWdlcyB9KVxuXHRcdFx0LmV4dGVuZCh7IHJldmVyc2libGU6IHRydWUgfSk7XG5cblx0XHR0aGlzLmxhbmd1YWdlQWRtaW4gPSBrb1xuXHRcdFx0Lm9ic2VydmFibGUoJycpXG5cdFx0XHQuZXh0ZW5kKHsgbGltaXRlZExpc3Q6IHRoaXMubGFuZ3VhZ2VzQWRtaW4gfSlcblx0XHRcdC5leHRlbmQoeyByZXZlcnNpYmxlOiB0cnVlIH0pO1xuXG5cdFx0dGhpcy51c2VyTGFuZ3VhZ2UgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnVzZXJMYW5ndWFnZUFkbWluID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdH1cblxuXHRwb3B1bGF0ZSgpIHtcblx0XHRjb25zdCBhTGFuZ3VhZ2VzID0gU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2xhbmd1YWdlcycpLFxuXHRcdFx0YUxhbmd1YWdlc0FkbWluID0gU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2xhbmd1YWdlc0FkbWluJyk7XG5cblx0XHR0aGlzLmxhbmd1YWdlcyhpc0FycmF5KGFMYW5ndWFnZXMpID8gYUxhbmd1YWdlcyA6IFtdKTtcblx0XHR0aGlzLmxhbmd1YWdlc0FkbWluKGlzQXJyYXkoYUxhbmd1YWdlc0FkbWluKSA/IGFMYW5ndWFnZXNBZG1pbiA6IFtdKTtcblxuXHRcdHRoaXMubGFuZ3VhZ2UoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0xhbmd1YWdlJykpO1xuXHRcdHRoaXMubGFuZ3VhZ2VBZG1pbihTZXR0aW5ncy5zZXR0aW5nc0dldCgnTGFuZ3VhZ2VBZG1pbicpKTtcblxuXHRcdHRoaXMudXNlckxhbmd1YWdlKFNldHRpbmdzLnNldHRpbmdzR2V0KCdVc2VyTGFuZ3VhZ2UnKSk7XG5cdFx0dGhpcy51c2VyTGFuZ3VhZ2VBZG1pbihTZXR0aW5ncy5zZXR0aW5nc0dldCgnVXNlckxhbmd1YWdlQWRtaW4nKSk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IExhbmd1YWdlU3RvcmUoKTtcbiIsIi8vIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBJbmRleGVkT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoaXQpKTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKHZhcmlhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFyaWFibGUgPT0gJ2Z1bmN0aW9uJyA/IHZhcmlhYmxlIDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKHBhdGhbbmFtZXNwYWNlXSkgfHwgYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKVxuICAgIDogcGF0aFtuYW1lc3BhY2VdICYmIHBhdGhbbmFtZXNwYWNlXVttZXRob2RdIHx8IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIG5hdGl2ZUpvaW4gPSBbXS5qb2luO1xuXG52YXIgRVMzX1NUUklOR1MgPSBJbmRleGVkT2JqZWN0ICE9IE9iamVjdDtcbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgnam9pbicsICcsJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuam9pbmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5qb2luXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBFUzNfU1RSSU5HUyB8fCAhU1RSSUNUX01FVEhPRCB9LCB7XG4gIGpvaW46IGZ1bmN0aW9uIGpvaW4oc2VwYXJhdG9yKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUpvaW4uY2FsbCh0b0luZGV4ZWRPYmplY3QodGhpcyksIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkID8gJywnIDogc2VwYXJhdG9yKTtcbiAgfVxufSk7XG4iLCJ2YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xuXG52YXIgYUZ1bmN0aW9uID0gZnVuY3Rpb24gKHZhcmlhYmxlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFyaWFibGUgPT0gJ2Z1bmN0aW9uJyA/IHZhcmlhYmxlIDogdW5kZWZpbmVkO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobmFtZXNwYWNlLCBtZXRob2QpIHtcbiAgcmV0dXJuIGFyZ3VtZW50cy5sZW5ndGggPCAyID8gYUZ1bmN0aW9uKHBhdGhbbmFtZXNwYWNlXSkgfHwgYUZ1bmN0aW9uKGdsb2JhbFtuYW1lc3BhY2VdKVxuICAgIDogcGF0aFtuYW1lc3BhY2VdICYmIHBhdGhbbmFtZXNwYWNlXVttZXRob2RdIHx8IGdsb2JhbFtuYW1lc3BhY2VdICYmIGdsb2JhbFtuYW1lc3BhY2VdW21ldGhvZF07XG59O1xuIiwidmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xuXG4vLyBgVG9JbnRlZ2VyYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtdG9pbnRlZ2VyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gaXNOYU4oYXJndW1lbnQgPSArYXJndW1lbnQpID8gMCA6IChhcmd1bWVudCA+IDAgPyBmbG9vciA6IGNlaWwpKGFyZ3VtZW50KTtcbn07XG4iLCIvLyB0b09iamVjdCB3aXRoIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgc3RyaW5nc1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gSW5kZXhlZE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGl0KSk7XG59O1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcblxudmFyIG5hdGl2ZURlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG4vLyBgT2JqZWN0LmRlZmluZVByb3BlcnR5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmRlZmluZXByb3BlcnR5XG5leHBvcnRzLmYgPSBERVNDUklQVE9SUyA/IG5hdGl2ZURlZmluZVByb3BlcnR5IDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydHkoTywgUCwgQXR0cmlidXRlcykge1xuICBhbk9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBhbk9iamVjdChBdHRyaWJ1dGVzKTtcbiAgaWYgKElFOF9ET01fREVGSU5FKSB0cnkge1xuICAgIHJldHVybiBuYXRpdmVEZWZpbmVQcm9wZXJ0eShPLCBQLCBBdHRyaWJ1dGVzKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkJyk7XG4gIGlmICgndmFsdWUnIGluIEF0dHJpYnV0ZXMpIE9bUF0gPSBBdHRyaWJ1dGVzLnZhbHVlO1xuICByZXR1cm4gTztcbn07XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBhZGRyZXNzcGFyc2VyIGZyb20gJ2VtYWlsanMtYWRkcmVzc3BhcnNlcic7XG5pbXBvcnQgeyB0cmltLCBlbmNvZGVIdG1sLCBpc05vbkVtcHR5QXJyYXkgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5jbGFzcyBFbWFpbE1vZGVsIHtcblx0ZW1haWwgPSAnJztcblx0bmFtZSA9ICcnO1xuXHRka2ltU3RhdHVzID0gJyc7XG5cdGRraW1WYWx1ZSA9ICcnO1xuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZz19IGVtYWlsID0gJydcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBuYW1lID0gJydcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBka2ltU3RhdHVzID0gJ25vbmUnXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gZGtpbVZhbHVlID0gJydcblx0ICovXG5cdGNvbnN0cnVjdG9yKGVtYWlsID0gJycsIG5hbWUgPSAnJywgZGtpbVN0YXR1cyA9ICdub25lJywgZGtpbVZhbHVlID0gJycpIHtcblx0XHR0aGlzLmVtYWlsID0gZW1haWw7XG5cdFx0dGhpcy5uYW1lID0gbmFtZTtcblx0XHR0aGlzLmRraW1TdGF0dXMgPSBka2ltU3RhdHVzO1xuXHRcdHRoaXMuZGtpbVZhbHVlID0gZGtpbVZhbHVlO1xuXG5cdFx0dGhpcy5jbGVhckR1cGxpY2F0ZU5hbWUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAc3RhdGljXG5cdCAqIEBwYXJhbSB7QWpheEpzb25FbWFpbH0ganNvblxuXHQgKiBAcmV0dXJucyB7P0VtYWlsTW9kZWx9XG5cdCAqL1xuXHRzdGF0aWMgbmV3SW5zdGFuY2VGcm9tSnNvbihqc29uKSB7XG5cdFx0Y29uc3QgZW1haWwgPSBuZXcgRW1haWxNb2RlbCgpO1xuXHRcdHJldHVybiBlbWFpbC5pbml0QnlKc29uKGpzb24pID8gZW1haWwgOiBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0Y2xlYXIoKSB7XG5cdFx0dGhpcy5lbWFpbCA9ICcnO1xuXHRcdHRoaXMubmFtZSA9ICcnO1xuXG5cdFx0dGhpcy5ka2ltU3RhdHVzID0gJ25vbmUnO1xuXHRcdHRoaXMuZGtpbVZhbHVlID0gJyc7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHR2YWxpZGF0ZSgpIHtcblx0XHRyZXR1cm4gJycgIT09IHRoaXMubmFtZSB8fCAnJyAhPT0gdGhpcy5lbWFpbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHdpdGhvdXROYW1lID0gZmFsc2Vcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGhhc2god2l0aG91dE5hbWUgPSBmYWxzZSkge1xuXHRcdHJldHVybiAnIycgKyAod2l0aG91dE5hbWUgPyAnJyA6IHRoaXMubmFtZSkgKyAnIycgKyB0aGlzLmVtYWlsICsgJyMnO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0Y2xlYXJEdXBsaWNhdGVOYW1lKCkge1xuXHRcdGlmICh0aGlzLm5hbWUgPT09IHRoaXMuZW1haWwpIHtcblx0XHRcdHRoaXMubmFtZSA9ICcnO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcXVlcnlcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRzZWFyY2gocXVlcnkpIHtcblx0XHRyZXR1cm4gLTEgPCAodGhpcy5uYW1lICsgJyAnICsgdGhpcy5lbWFpbCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKHF1ZXJ5LnRvTG93ZXJDYXNlKCkpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7QWpheEpzb25FbWFpbH0gb0pzb25FbWFpbFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGluaXRCeUpzb24oanNvbikge1xuXHRcdGxldCByZXN1bHQgPSBmYWxzZTtcblx0XHRpZiAoanNvbiAmJiAnT2JqZWN0L0VtYWlsJyA9PT0ganNvblsnQE9iamVjdCddKSB7XG5cdFx0XHR0aGlzLm5hbWUgPSB0cmltKGpzb24uTmFtZSk7XG5cdFx0XHR0aGlzLmVtYWlsID0gdHJpbShqc29uLkVtYWlsKTtcblx0XHRcdHRoaXMuZGtpbVN0YXR1cyA9IHRyaW0oanNvbi5Ea2ltU3RhdHVzIHx8ICcnKTtcblx0XHRcdHRoaXMuZGtpbVZhbHVlID0gdHJpbShqc29uLkRraW1WYWx1ZSB8fCAnJyk7XG5cblx0XHRcdHJlc3VsdCA9ICcnICE9PSB0aGlzLmVtYWlsO1xuXHRcdFx0dGhpcy5jbGVhckR1cGxpY2F0ZU5hbWUoKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gZnJpZW5kbHlWaWV3XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IHdyYXBXaXRoTGluayA9IGZhbHNlXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IHVzZUVuY29kZUh0bWwgPSBmYWxzZVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0dG9MaW5lKGZyaWVuZGx5Vmlldywgd3JhcFdpdGhMaW5rID0gZmFsc2UsIHVzZUVuY29kZUh0bWwgPSBmYWxzZSkge1xuXHRcdGxldCByZXN1bHQgPSAnJztcblx0XHRpZiAoJycgIT09IHRoaXMuZW1haWwpIHtcblx0XHRcdGlmIChmcmllbmRseVZpZXcgJiYgJycgIT09IHRoaXMubmFtZSkge1xuXHRcdFx0XHRyZXN1bHQgPSB3cmFwV2l0aExpbmtcblx0XHRcdFx0XHQ/ICc8YSBocmVmPVwibWFpbHRvOicgK1xuXHRcdFx0XHRcdCAgZW5jb2RlSHRtbCh0aGlzLmVtYWlsKSArXG5cdFx0XHRcdFx0ICAnP3RvPScgK1xuXHRcdFx0XHRcdCAgZW5jb2RlSHRtbCgnXCInICsgdGhpcy5uYW1lICsgJ1wiIDwnICsgdGhpcy5lbWFpbCArICc+JykgK1xuXHRcdFx0XHRcdCAgJ1wiIHRhcmdldD1cIl9ibGFua1wiIHRhYmluZGV4PVwiLTFcIj4nICtcblx0XHRcdFx0XHQgIGVuY29kZUh0bWwodGhpcy5uYW1lKSArXG5cdFx0XHRcdFx0ICAnPC9hPidcblx0XHRcdFx0XHQ6IHVzZUVuY29kZUh0bWxcblx0XHRcdFx0XHQ/IGVuY29kZUh0bWwodGhpcy5uYW1lKVxuXHRcdFx0XHRcdDogdGhpcy5uYW1lO1xuXHRcdFx0XHQvLyByZXN1bHQgPSB3cmFwV2l0aExpbmsgPyAnPGEgaHJlZj1cIm1haWx0bzonICsgZW5jb2RlSHRtbCgnXCInICsgdGhpcy5uYW1lICsgJ1wiIDwnICsgdGhpcy5lbWFpbCArICc+JykgK1xuXHRcdFx0XHQvLyBcdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIiB0YWJpbmRleD1cIi0xXCI+JyArIGVuY29kZUh0bWwodGhpcy5uYW1lKSArICc8L2E+JyA6ICh1c2VFbmNvZGVIdG1sID8gZW5jb2RlSHRtbCh0aGlzLm5hbWUpIDogdGhpcy5uYW1lKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJlc3VsdCA9IHRoaXMuZW1haWw7XG5cdFx0XHRcdGlmICgnJyAhPT0gdGhpcy5uYW1lKSB7XG5cdFx0XHRcdFx0aWYgKHdyYXBXaXRoTGluaykge1xuXHRcdFx0XHRcdFx0cmVzdWx0ID1cblx0XHRcdFx0XHRcdFx0ZW5jb2RlSHRtbCgnXCInICsgdGhpcy5uYW1lICsgJ1wiIDwnKSArXG5cdFx0XHRcdFx0XHRcdCc8YSBocmVmPVwibWFpbHRvOicgK1xuXHRcdFx0XHRcdFx0XHRlbmNvZGVIdG1sKHRoaXMuZW1haWwpICtcblx0XHRcdFx0XHRcdFx0Jz90bz0nICtcblx0XHRcdFx0XHRcdFx0ZW5jb2RlSHRtbCgnXCInICsgdGhpcy5uYW1lICsgJ1wiIDwnICsgdGhpcy5lbWFpbCArICc+JykgK1xuXHRcdFx0XHRcdFx0XHQnXCIgdGFyZ2V0PVwiX2JsYW5rXCIgdGFiaW5kZXg9XCItMVwiPicgK1xuXHRcdFx0XHRcdFx0XHRlbmNvZGVIdG1sKHJlc3VsdCkgK1xuXHRcdFx0XHRcdFx0XHQnPC9hPicgK1xuXHRcdFx0XHRcdFx0XHRlbmNvZGVIdG1sKCc+Jyk7XG5cdFx0XHRcdFx0XHQvLyByZXN1bHQgPSBlbmNvZGVIdG1sKCdcIicgKyB0aGlzLm5hbWUgKyAnXCIgPCcpICsgJzxhIGhyZWY9XCJtYWlsdG86JyArXG5cdFx0XHRcdFx0XHQvLyBcdGVuY29kZUh0bWwoJ1wiJyArIHRoaXMubmFtZSArICdcIiA8JyArIHRoaXMuZW1haWwgKyAnPicpICtcblx0XHRcdFx0XHRcdC8vIFx0J1wiIHRhcmdldD1cIl9ibGFua1wiIHRhYmluZGV4PVwiLTFcIj4nICtcblx0XHRcdFx0XHRcdC8vIFx0ZW5jb2RlSHRtbChyZXN1bHQpICtcblx0XHRcdFx0XHRcdC8vIFx0JzwvYT4nICtcblx0XHRcdFx0XHRcdC8vIFx0ZW5jb2RlSHRtbCgnPicpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSAnXCInICsgdGhpcy5uYW1lICsgJ1wiIDwnICsgcmVzdWx0ICsgJz4nO1xuXHRcdFx0XHRcdFx0aWYgKHVzZUVuY29kZUh0bWwpIHtcblx0XHRcdFx0XHRcdFx0cmVzdWx0ID0gZW5jb2RlSHRtbChyZXN1bHQpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICh3cmFwV2l0aExpbmspIHtcblx0XHRcdFx0XHRyZXN1bHQgPVxuXHRcdFx0XHRcdFx0JzxhIGhyZWY9XCJtYWlsdG86JyArXG5cdFx0XHRcdFx0XHRlbmNvZGVIdG1sKHRoaXMuZW1haWwpICtcblx0XHRcdFx0XHRcdCdcIiB0YXJnZXQ9XCJfYmxhbmtcIiB0YWJpbmRleD1cIi0xXCI+JyArXG5cdFx0XHRcdFx0XHRlbmNvZGVIdG1sKHRoaXMuZW1haWwpICtcblx0XHRcdFx0XHRcdCc8L2E+Jztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRzdGF0aWMgc3BsaXRFbWFpbExpbmUobGluZSkge1xuXHRcdGNvbnN0IHBhcnNlZFJlc3VsdCA9IGFkZHJlc3NwYXJzZXIobGluZSk7XG5cdFx0aWYgKGlzTm9uRW1wdHlBcnJheShwYXJzZWRSZXN1bHQpKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBbXTtcblx0XHRcdGxldCBleGlzdHMgPSBmYWxzZTtcblx0XHRcdHBhcnNlZFJlc3VsdC5mb3JFYWNoKChpdGVtKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGFkZHJlc3MgPSBpdGVtLmFkZHJlc3Ncblx0XHRcdFx0XHQ/IG5ldyBFbWFpbE1vZGVsKGl0ZW0uYWRkcmVzcy5yZXBsYWNlKC9eWzxdKyguKilbPl0rJC9nLCAnJDEnKSwgaXRlbS5uYW1lIHx8ICcnKVxuXHRcdFx0XHRcdDogbnVsbDtcblxuXHRcdFx0XHRpZiAoYWRkcmVzcyAmJiBhZGRyZXNzLmVtYWlsKSB7XG5cdFx0XHRcdFx0ZXhpc3RzID0gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJlc3VsdC5wdXNoKGFkZHJlc3MgPyBhZGRyZXNzLnRvTGluZShmYWxzZSkgOiBpdGVtLm5hbWUpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHJldHVybiBleGlzdHMgPyByZXN1bHQgOiBudWxsO1xuXHRcdH1cblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0c3RhdGljIHBhcnNlRW1haWxMaW5lKGxpbmUpIHtcblx0XHRjb25zdCBwYXJzZWRSZXN1bHQgPSBhZGRyZXNzcGFyc2VyKGxpbmUpO1xuXHRcdGlmIChpc05vbkVtcHR5QXJyYXkocGFyc2VkUmVzdWx0KSkge1xuXHRcdFx0cmV0dXJuIF8uY29tcGFjdChcblx0XHRcdFx0Xy5tYXAocGFyc2VkUmVzdWx0LCAoaXRlbSkgPT5cblx0XHRcdFx0XHRpdGVtLmFkZHJlc3MgPyBuZXcgRW1haWxNb2RlbChpdGVtLmFkZHJlc3MucmVwbGFjZSgvXls8XSsoLiopWz5dKyQvZywgJyQxJyksIGl0ZW0ubmFtZSB8fCAnJykgOiBudWxsXG5cdFx0XHRcdClcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBlbWFpbEFkZHJlc3Ncblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRwYXJzZShlbWFpbEFkZHJlc3MpIHtcblx0XHRlbWFpbEFkZHJlc3MgPSB0cmltKGVtYWlsQWRkcmVzcyk7XG5cdFx0aWYgKCcnID09PSBlbWFpbEFkZHJlc3MpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCByZXN1bHQgPSBhZGRyZXNzcGFyc2VyKGVtYWlsQWRkcmVzcyk7XG5cdFx0aWYgKGlzTm9uRW1wdHlBcnJheShyZXN1bHQpICYmIHJlc3VsdFswXSkge1xuXHRcdFx0dGhpcy5uYW1lID0gcmVzdWx0WzBdLm5hbWUgfHwgJyc7XG5cdFx0XHR0aGlzLmVtYWlsID0gcmVzdWx0WzBdLmFkZHJlc3MgfHwgJyc7XG5cdFx0XHR0aGlzLmNsZWFyRHVwbGljYXRlTmFtZSgpO1xuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn1cblxuZXhwb3J0IHsgRW1haWxNb2RlbCwgRW1haWxNb2RlbCBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQgeyBiTW9iaWxlRGV2aWNlLCBiU2FmYXJpIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0ICogYXMgTGlua3MgZnJvbSAnQ29tbW9uL0xpbmtzJztcbmltcG9ydCAqIGFzIEV2ZW50cyBmcm9tICdDb21tb24vRXZlbnRzJztcbmltcG9ydCB7IHRyaW0gfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5jbGFzcyBBdWRpbyB7XG5cdG5vdGlmaWNhdG9yID0gbnVsbDtcblx0cGxheWVyID0gbnVsbDtcblxuXHRzdXBwb3J0ZWQgPSBmYWxzZTtcblx0c3VwcG9ydGVkTXAzID0gZmFsc2U7XG5cdHN1cHBvcnRlZE9nZyA9IGZhbHNlO1xuXHRzdXBwb3J0ZWRXYXYgPSBmYWxzZTtcblx0c3VwcG9ydGVkTm90aWZpY2F0aW9uID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5wbGF5ZXIgPSB0aGlzLmNyZWF0ZU5ld09iamVjdCgpO1xuXG5cdFx0dGhpcy5zdXBwb3J0ZWQgPSAhYk1vYmlsZURldmljZSAmJiAhYlNhZmFyaSAmJiAhIXRoaXMucGxheWVyICYmICEhdGhpcy5wbGF5ZXIucGxheTtcblx0XHRpZiAodGhpcy5zdXBwb3J0ZWQgJiYgdGhpcy5wbGF5ZXIgJiYgdGhpcy5wbGF5ZXIuY2FuUGxheVR5cGUpIHtcblx0XHRcdHRoaXMuc3VwcG9ydGVkTXAzID0gJycgIT09IHRoaXMucGxheWVyLmNhblBsYXlUeXBlKCdhdWRpby9tcGVnOycpLnJlcGxhY2UoL25vLywgJycpO1xuXHRcdFx0dGhpcy5zdXBwb3J0ZWRXYXYgPSAnJyAhPT0gdGhpcy5wbGF5ZXIuY2FuUGxheVR5cGUoJ2F1ZGlvL3dhdjsgY29kZWNzPVwiMVwiJykucmVwbGFjZSgvbm8vLCAnJyk7XG5cdFx0XHR0aGlzLnN1cHBvcnRlZE9nZyA9ICcnICE9PSB0aGlzLnBsYXllci5jYW5QbGF5VHlwZSgnYXVkaW8vb2dnOyBjb2RlY3M9XCJ2b3JiaXNcIicpLnJlcGxhY2UoL25vLywgJycpO1xuXHRcdFx0dGhpcy5zdXBwb3J0ZWROb3RpZmljYXRpb24gPSB0aGlzLnN1cHBvcnRlZCAmJiB0aGlzLnN1cHBvcnRlZE1wMztcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMucGxheWVyIHx8ICghdGhpcy5zdXBwb3J0ZWRNcDMgJiYgIXRoaXMuc3VwcG9ydGVkT2dnICYmICF0aGlzLnN1cHBvcnRlZFdhdikpIHtcblx0XHRcdHRoaXMuc3VwcG9ydGVkID0gZmFsc2U7XG5cdFx0XHR0aGlzLnN1cHBvcnRlZE1wMyA9IGZhbHNlO1xuXHRcdFx0dGhpcy5zdXBwb3J0ZWRPZ2cgPSBmYWxzZTtcblx0XHRcdHRoaXMuc3VwcG9ydGVkV2F2ID0gZmFsc2U7XG5cdFx0XHR0aGlzLnN1cHBvcnRlZE5vdGlmaWNhdGlvbiA9IGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnN1cHBvcnRlZCAmJiB0aGlzLnBsYXllcikge1xuXHRcdFx0Y29uc3Qgc3RvcEZuID0gKCkgPT4gdGhpcy5zdG9wKCk7XG5cblx0XHRcdHRoaXMucGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoJ2VuZGVkJywgc3RvcEZuKTtcblx0XHRcdHRoaXMucGxheWVyLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgc3RvcEZuKTtcblxuXHRcdFx0RXZlbnRzLnN1YignYXVkaW8uYXBpLnN0b3AnLCBzdG9wRm4pO1xuXHRcdH1cblx0fVxuXG5cdGNyZWF0ZU5ld09iamVjdCgpIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgcGxheWVyID0gd2luZG93LkF1ZGlvID8gbmV3IHdpbmRvdy5BdWRpbygpIDogbnVsbDtcblx0XHRcdGlmIChwbGF5ZXIgJiYgcGxheWVyLmNhblBsYXlUeXBlICYmIHBsYXllci5wYXVzZSAmJiBwbGF5ZXIucGxheSkge1xuXHRcdFx0XHRwbGF5ZXIucHJlbG9hZCA9ICdub25lJztcblx0XHRcdFx0cGxheWVyLmxvb3AgPSBmYWxzZTtcblx0XHRcdFx0cGxheWVyLmF1dG9wbGF5ID0gZmFsc2U7XG5cdFx0XHRcdHBsYXllci5tdXRlZCA9IGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gcGxheWVyO1xuXHRcdH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0cGF1c2VkKCkge1xuXHRcdHJldHVybiB0aGlzLnN1cHBvcnRlZCA/ICEhdGhpcy5wbGF5ZXIucGF1c2VkIDogdHJ1ZTtcblx0fVxuXG5cdHN0b3AoKSB7XG5cdFx0aWYgKHRoaXMuc3VwcG9ydGVkICYmIHRoaXMucGxheWVyLnBhdXNlKSB7XG5cdFx0XHR0aGlzLnBsYXllci5wYXVzZSgpO1xuXHRcdH1cblxuXHRcdEV2ZW50cy5wdWIoJ2F1ZGlvLnN0b3AnKTtcblx0fVxuXG5cdHBhdXNlKCkge1xuXHRcdHRoaXMuc3RvcCgpO1xuXHR9XG5cblx0Y2xlYXJOYW1lKG5hbWUgPSAnJywgZXh0ID0gJycpIHtcblx0XHRuYW1lID0gdHJpbShuYW1lKTtcblx0XHRpZiAoZXh0ICYmICcuJyArIGV4dCA9PT0gbmFtZS50b0xvd2VyQ2FzZSgpLnN1YnN0cigoZXh0Lmxlbmd0aCArIDEpICogLTEpKSB7XG5cdFx0XHRuYW1lID0gdHJpbShuYW1lLnN1YnN0cigwLCBuYW1lLmxlbmd0aCAtIDQpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gJycgPT09IG5hbWUgPyAnYXVkaW8nIDogbmFtZTtcblx0fVxuXG5cdHBsYXlNcDModXJsLCBuYW1lKSB7XG5cdFx0aWYgKHRoaXMuc3VwcG9ydGVkICYmIHRoaXMuc3VwcG9ydGVkTXAzKSB7XG5cdFx0XHR0aGlzLnBsYXllci5zcmMgPSB1cmw7XG5cdFx0XHR0aGlzLnBsYXllci5wbGF5KCk7XG5cblx0XHRcdEV2ZW50cy5wdWIoJ2F1ZGlvLnN0YXJ0JywgW3RoaXMuY2xlYXJOYW1lKG5hbWUsICdtcDMnKSwgJ21wMyddKTtcblx0XHR9XG5cdH1cblxuXHRwbGF5T2dnKHVybCwgbmFtZSkge1xuXHRcdGlmICh0aGlzLnN1cHBvcnRlZCAmJiB0aGlzLnN1cHBvcnRlZE9nZykge1xuXHRcdFx0dGhpcy5wbGF5ZXIuc3JjID0gdXJsO1xuXHRcdFx0dGhpcy5wbGF5ZXIucGxheSgpO1xuXG5cdFx0XHRuYW1lID0gdGhpcy5jbGVhck5hbWUobmFtZSwgJ29nYScpO1xuXHRcdFx0bmFtZSA9IHRoaXMuY2xlYXJOYW1lKG5hbWUsICdvZ2cnKTtcblxuXHRcdFx0RXZlbnRzLnB1YignYXVkaW8uc3RhcnQnLCBbbmFtZSwgJ29nZyddKTtcblx0XHR9XG5cdH1cblxuXHRwbGF5V2F2KHVybCwgbmFtZSkge1xuXHRcdGlmICh0aGlzLnN1cHBvcnRlZCAmJiB0aGlzLnN1cHBvcnRlZFdhdikge1xuXHRcdFx0dGhpcy5wbGF5ZXIuc3JjID0gdXJsO1xuXHRcdFx0dGhpcy5wbGF5ZXIucGxheSgpO1xuXG5cdFx0XHRFdmVudHMucHViKCdhdWRpby5zdGFydCcsIFt0aGlzLmNsZWFyTmFtZShuYW1lLCAnd2F2JyksICd3YXYnXSk7XG5cdFx0fVxuXHR9XG5cblx0cGxheU5vdGlmaWNhdGlvbigpIHtcblx0XHRpZiAodGhpcy5zdXBwb3J0ZWQgJiYgdGhpcy5zdXBwb3J0ZWRNcDMpIHtcblx0XHRcdGlmICghdGhpcy5ub3RpZmljYXRvcikge1xuXHRcdFx0XHR0aGlzLm5vdGlmaWNhdG9yID0gdGhpcy5jcmVhdGVOZXdPYmplY3QoKTtcblx0XHRcdFx0dGhpcy5ub3RpZmljYXRvci5zcmMgPSBMaW5rcy5zb3VuZCgnbmV3LW1haWwubXAzJyk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLm5vdGlmaWNhdG9yICYmIHRoaXMubm90aWZpY2F0b3IucGxheSkge1xuXHRcdFx0XHR0aGlzLm5vdGlmaWNhdG9yLnBsYXkoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IEF1ZGlvKCk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcblxudmFyIG1pbiA9IE1hdGgubWluO1xuXG4vLyBgVG9MZW5ndGhgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2xlbmd0aFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIGFyZ3VtZW50ID4gMCA/IG1pbih0b0ludGVnZXIoYXJndW1lbnQpLCAweDFGRkZGRkZGRkZGRkZGKSA6IDA7IC8vIDIgKiogNTMgLSAxID09IDkwMDcxOTkyNTQ3NDA5OTFcbn07XG4iLCJ2YXIgVE9fU1RSSU5HX1RBR19TVVBQT1JUID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXN0cmluZy10YWctc3VwcG9ydCcpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgdG9TdHJpbmcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXRvLXN0cmluZycpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmdcbmlmICghVE9fU1RSSU5HX1RBR19TVVBQT1JUKSB7XG4gIHJlZGVmaW5lKE9iamVjdC5wcm90b3R5cGUsICd0b1N0cmluZycsIHRvU3RyaW5nLCB7IHVuc2FmZTogdHJ1ZSB9KTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gdHJ1ZTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyBpc1VuZCwgdHJpbSwgcEludCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBTYXZlU2V0dGluZ3NTdGVwIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50IH0gZnJvbSAnQ29tcG9uZW50L0Fic3RyYWN0JztcblxuY2xhc3MgQWJzdHJhY3RJbnB1dCBleHRlbmRzIEFic3RyYWN0Q29tcG9uZW50IHtcblx0LyoqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcykge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLnZhbHVlID0gcGFyYW1zLnZhbHVlIHx8ICcnO1xuXHRcdHRoaXMuc2l6ZSA9IHBhcmFtcy5zaXplIHx8IDA7XG5cdFx0dGhpcy5sYWJlbCA9IHBhcmFtcy5sYWJlbCB8fCAnJztcblx0XHR0aGlzLnByZUxhYmVsID0gcGFyYW1zLnByZUxhYmVsIHx8ICcnO1xuXHRcdHRoaXMuZW5hYmxlID0gaXNVbmQocGFyYW1zLmVuYWJsZSkgPyB0cnVlIDogcGFyYW1zLmVuYWJsZTtcblx0XHR0aGlzLnRyaWdnZXIgPSBwYXJhbXMudHJpZ2dlciAmJiBwYXJhbXMudHJpZ2dlci5zdWJzY3JpYmUgPyBwYXJhbXMudHJpZ2dlciA6IG51bGw7XG5cdFx0dGhpcy5wbGFjZWhvbGRlciA9IHBhcmFtcy5wbGFjZWhvbGRlciB8fCAnJztcblxuXHRcdHRoaXMubGFiZWxlZCA9ICFpc1VuZChwYXJhbXMubGFiZWwpO1xuXHRcdHRoaXMucHJlTGFiZWxlZCA9ICFpc1VuZChwYXJhbXMucHJlTGFiZWwpO1xuXHRcdHRoaXMudHJpZ2dlcmVkID0gIWlzVW5kKHBhcmFtcy50cmlnZ2VyKSAmJiAhIXRoaXMudHJpZ2dlcjtcblxuXHRcdHRoaXMuY2xhc3NGb3JUcmlnZ2VyID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmNsYXNzTmFtZSA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHNpemUgPSBrby51bndyYXAodGhpcy5zaXplKSxcblx0XHRcdFx0c3VmZml4VmFsdWUgPSB0aGlzLnRyaWdnZXIgPyAnICcgKyB0cmltKCdzZXR0aW5ncy1zYXZlZC10cmlnZ2VyLWlucHV0ICcgKyB0aGlzLmNsYXNzRm9yVHJpZ2dlcigpKSA6ICcnO1xuXHRcdFx0cmV0dXJuICgwIDwgc2l6ZSA/ICdzcGFuJyArIHNpemUgOiAnJykgKyBzdWZmaXhWYWx1ZTtcblx0XHR9KTtcblxuXHRcdGlmICghaXNVbmQocGFyYW1zLndpZHRoKSAmJiBwYXJhbXMuZWxlbWVudCkge1xuXHRcdFx0cGFyYW1zLmVsZW1lbnQuZmluZCgnaW5wdXQsc2VsZWN0LHRleHRhcmVhJykuY3NzKCd3aWR0aCcsIHBhcmFtcy53aWR0aCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5kaXNwb3NhYmxlLnB1c2godGhpcy5jbGFzc05hbWUpO1xuXG5cdFx0aWYgKHRoaXMudHJpZ2dlcikge1xuXHRcdFx0dGhpcy5zZXRUcmlnZ2VyU3RhdGUodGhpcy50cmlnZ2VyKCkpO1xuXG5cdFx0XHR0aGlzLmRpc3Bvc2FibGUucHVzaCh0aGlzLnRyaWdnZXIuc3Vic2NyaWJlKHRoaXMuc2V0VHJpZ2dlclN0YXRlLCB0aGlzKSk7XG5cdFx0fVxuXHR9XG5cblx0c2V0VHJpZ2dlclN0YXRlKHZhbHVlKSB7XG5cdFx0c3dpdGNoIChwSW50KHZhbHVlKSkge1xuXHRcdFx0Y2FzZSBTYXZlU2V0dGluZ3NTdGVwLlRydWVSZXN1bHQ6XG5cdFx0XHRcdHRoaXMuY2xhc3NGb3JUcmlnZ2VyKCdzdWNjZXNzJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBTYXZlU2V0dGluZ3NTdGVwLkZhbHNlUmVzdWx0OlxuXHRcdFx0XHR0aGlzLmNsYXNzRm9yVHJpZ2dlcignZXJyb3InKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aGlzLmNsYXNzRm9yVHJpZ2dlcignJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgeyBBYnN0cmFjdElucHV0LCBBYnN0cmFjdElucHV0IGFzIGRlZmF1bHQgfTtcbiIsInZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBgVG9PYmplY3RgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b29iamVjdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYXJndW1lbnQpIHtcbiAgcmV0dXJuIE9iamVjdChyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKGFyZ3VtZW50KSk7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xuXG52YXIgbWluID0gTWF0aC5taW47XG5cbi8vIGBUb0xlbmd0aGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvbGVuZ3RoXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gYXJndW1lbnQgPiAwID8gbWluKHRvSW50ZWdlcihhcmd1bWVudCksIDB4MUZGRkZGRkZGRkZGRkYpIDogMDsgLy8gMiAqKiA1MyAtIDEgPT0gOTAwNzE5OTI1NDc0MDk5MVxufTtcbiIsInZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcblxuaW1wb3J0IFByb21pc2VzUG9wdWxhdG9yIGZyb20gJ1Byb21pc2VzL1VzZXIvUG9wdWxhdG9yJztcbmltcG9ydCB7IEFic3RyYWN0QWpheFByb21pc2VzIH0gZnJvbSAnUHJvbWlzZXMvQWJzdHJhY3RBamF4JztcblxuY2xhc3MgVXNlckFqYXhVc2VyUHJvbWlzZXMgZXh0ZW5kcyBBYnN0cmFjdEFqYXhQcm9taXNlcyB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmZvbGRlcnNUaW1lb3V0ID0gMDtcblx0fVxuXG5cdGZvbGRlcnNSZWxvYWQoZlRyaWdnZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5hYm9ydCgnRm9sZGVycycpXG5cdFx0XHQucG9zdFJlcXVlc3QoJ0ZvbGRlcnMnLCBmVHJpZ2dlcilcblx0XHRcdC50aGVuKChkYXRhKSA9PiB7XG5cdFx0XHRcdFByb21pc2VzUG9wdWxhdG9yLmZvbGRlcnNMaXN0KGRhdGEuUmVzdWx0KTtcblx0XHRcdFx0UHJvbWlzZXNQb3B1bGF0b3IuZm9sZGVyc0FkZGl0aW9uYWxQYXJhbWV0ZXJzKGRhdGEuUmVzdWx0KTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9KTtcblx0fVxuXG5cdGZvbGRlcnNSZWxvYWRXaXRoVGltZW91dChmVHJpZ2dlcikge1xuXHRcdHRoaXMuc2V0VHJpZ2dlcihmVHJpZ2dlciwgdHJ1ZSk7XG5cblx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuZm9sZGVyc1RpbWVvdXQpO1xuXHRcdHRoaXMuZm9sZGVyc1RpbWVvdXQgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmZvbGRlcnNSZWxvYWQoZlRyaWdnZXIpO1xuXHRcdH0sIDUwMCk7XG5cdH1cblxuXHRmb2xkZXJEZWxldGUoc0ZvbGRlckZ1bGxOYW1lUmF3LCBmVHJpZ2dlcikge1xuXHRcdHJldHVybiB0aGlzLnBvc3RSZXF1ZXN0KCdGb2xkZXJEZWxldGUnLCBmVHJpZ2dlciwge1xuXHRcdFx0J0ZvbGRlcic6IHNGb2xkZXJGdWxsTmFtZVJhd1xuXHRcdH0pO1xuXHR9XG5cblx0Zm9sZGVyQ3JlYXRlKHNOZXdGb2xkZXJOYW1lLCBzUGFyZW50TmFtZSwgZlRyaWdnZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5wb3N0UmVxdWVzdCgnRm9sZGVyQ3JlYXRlJywgZlRyaWdnZXIsIHtcblx0XHRcdCdGb2xkZXInOiBzTmV3Rm9sZGVyTmFtZSxcblx0XHRcdCdQYXJlbnQnOiBzUGFyZW50TmFtZVxuXHRcdH0pO1xuXHR9XG5cblx0Zm9sZGVyUmVuYW1lKHNQcmV2Rm9sZGVyRnVsbE5hbWVSYXcsIHNOZXdGb2xkZXJOYW1lLCBmVHJpZ2dlcikge1xuXHRcdHJldHVybiB0aGlzLnBvc3RSZXF1ZXN0KCdGb2xkZXJSZW5hbWUnLCBmVHJpZ2dlciwge1xuXHRcdFx0J0ZvbGRlcic6IHNQcmV2Rm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHQnTmV3Rm9sZGVyTmFtZSc6IHNOZXdGb2xkZXJOYW1lXG5cdFx0fSk7XG5cdH1cblxuXHRhdHRhY2htZW50c0FjdGlvbnMoc0FjdGlvbiwgYUhhc2hlcywgZlRyaWdnZXIpIHtcblx0XHRyZXR1cm4gdGhpcy5wb3N0UmVxdWVzdCgnQXR0YWNobWVudHNBY3Rpb25zJywgZlRyaWdnZXIsIHtcblx0XHRcdCdEbyc6IHNBY3Rpb24sXG5cdFx0XHQnSGFzaGVzJzogYUhhc2hlc1xuXHRcdH0pO1xuXHR9XG5cblx0d2VsY29tZUNsb3NlKCkge1xuXHRcdHJldHVybiB0aGlzLnBvc3RSZXF1ZXN0KCdXZWxjb21lQ2xvc2UnKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgVXNlckFqYXhVc2VyUHJvbWlzZXMoKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGJpdG1hcCwgdmFsdWUpIHtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlOiAhKGJpdG1hcCAmIDEpLFxuICAgIGNvbmZpZ3VyYWJsZTogIShiaXRtYXAgJiAyKSxcbiAgICB3cml0YWJsZTogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfTtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgc2V0R2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1nbG9iYWwnKTtcblxudmFyIFNIQVJFRCA9ICdfX2NvcmUtanNfc2hhcmVkX18nO1xudmFyIHN0b3JlID0gZ2xvYmFsW1NIQVJFRF0gfHwgc2V0R2xvYmFsKFNIQVJFRCwge30pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHN0b3JlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmYWxzZTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG52YXIgdGVzdCA9IHt9O1xuXG50ZXN0W1RPX1NUUklOR19UQUddID0gJ3onO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmluZyh0ZXN0KSA9PT0gJ1tvYmplY3Qgel0nO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3cubW9tZW50OyIsIm1vZHVsZS5leHBvcnRzID0gd2luZG93LnByb2dyZXNzSnM7IiwiaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuXG5jbGFzcyBJZGVudGl0eVVzZXJTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuaWRlbnRpdGllcyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cdFx0dGhpcy5pZGVudGl0aWVzLmxvYWRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyB0aHJvdHRsZTogMTAwIH0pO1xuXG5cdFx0dGhpcy5pZGVudGl0aWVzSURTID0ga28uY29tcHV0ZWQoKCkgPT4gXy5jb21wYWN0KF8ubWFwKHRoaXMuaWRlbnRpdGllcygpLCAoaXRlbSkgPT4gKGl0ZW0gPyBpdGVtLmlkIDogbnVsbCkpKSk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IElkZW50aXR5VXNlclN0b3JlKCk7XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IHsgTWFnaWNzIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5jbGFzcyBDb250YWN0VXNlclN0b3JlIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5jb250YWN0cyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cdFx0dGhpcy5jb250YWN0cy5sb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgdGhyb3R0bGU6IE1hZ2ljcy5UaW1lMjAwbXMgfSk7XG5cdFx0dGhpcy5jb250YWN0cy5pbXBvcnRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyB0aHJvdHRsZTogTWFnaWNzLlRpbWUyMDBtcyB9KTtcblx0XHR0aGlzLmNvbnRhY3RzLnN5bmNpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyB0aHJvdHRsZTogTWFnaWNzLlRpbWUyMDBtcyB9KTtcblx0XHR0aGlzLmNvbnRhY3RzLmV4cG9ydGluZ1ZjZiA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IHRocm90dGxlOiBNYWdpY3MuVGltZTIwMG1zIH0pO1xuXHRcdHRoaXMuY29udGFjdHMuZXhwb3J0aW5nQ3N2ID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgdGhyb3R0bGU6IE1hZ2ljcy5UaW1lMjAwbXMgfSk7XG5cblx0XHR0aGlzLmFsbG93Q29udGFjdHNTeW5jID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5lbmFibGVDb250YWN0c1N5bmMgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmNvbnRhY3RzU3luY1VybCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuY29udGFjdHNTeW5jVXNlciA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuY29udGFjdHNTeW5jUGFzcyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHR9XG5cblx0cG9wdWxhdGUoKSB7XG5cdFx0dGhpcy5hbGxvd0NvbnRhY3RzU3luYyghIVNldHRpbmdzLnNldHRpbmdzR2V0KCdDb250YWN0c1N5bmNJc0FsbG93ZWQnKSk7XG5cdFx0dGhpcy5lbmFibGVDb250YWN0c1N5bmMoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnRW5hYmxlQ29udGFjdHNTeW5jJykpO1xuXG5cdFx0dGhpcy5jb250YWN0c1N5bmNVcmwoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0NvbnRhY3RzU3luY1VybCcpKTtcblx0XHR0aGlzLmNvbnRhY3RzU3luY1VzZXIoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0NvbnRhY3RzU3luY1VzZXInKSk7XG5cdFx0dGhpcy5jb250YWN0c1N5bmNQYXNzKFNldHRpbmdzLnNldHRpbmdzR2V0KCdDb250YWN0c1N5bmNQYXNzd29yZCcpKTtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgQ29udGFjdFVzZXJTdG9yZSgpO1xuIiwidmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIHN0b3JlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1zdG9yZScpO1xuXG4obW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICByZXR1cm4gc3RvcmVba2V5XSB8fCAoc3RvcmVba2V5XSA9IHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IHt9KTtcbn0pKCd2ZXJzaW9ucycsIFtdKS5wdXNoKHtcbiAgdmVyc2lvbjogJzMuMTIuMCcsXG4gIG1vZGU6IElTX1BVUkUgPyAncHVyZScgOiAnZ2xvYmFsJyxcbiAgY29weXJpZ2h0OiAnwqkgMjAyMSBEZW5pcyBQdXNoa2FyZXYgKHpsb2lyb2NrLnJ1KSdcbn0pO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB7fTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ25hdmlnYXRvcicsICd1c2VyQWdlbnQnKSB8fCAnJztcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBpc0FycmF5SXRlcmF0b3JNZXRob2QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXktaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgYmluZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi1iaW5kLWNvbnRleHQnKTtcbnZhciBnZXRJdGVyYXRvck1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nZXQtaXRlcmF0b3ItbWV0aG9kJyk7XG52YXIgaXRlcmF0b3JDbG9zZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvci1jbG9zZScpO1xuXG52YXIgUmVzdWx0ID0gZnVuY3Rpb24gKHN0b3BwZWQsIHJlc3VsdCkge1xuICB0aGlzLnN0b3BwZWQgPSBzdG9wcGVkO1xuICB0aGlzLnJlc3VsdCA9IHJlc3VsdDtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZXJhYmxlLCB1bmJvdW5kRnVuY3Rpb24sIG9wdGlvbnMpIHtcbiAgdmFyIHRoYXQgPSBvcHRpb25zICYmIG9wdGlvbnMudGhhdDtcbiAgdmFyIEFTX0VOVFJJRVMgPSAhIShvcHRpb25zICYmIG9wdGlvbnMuQVNfRU5UUklFUyk7XG4gIHZhciBJU19JVEVSQVRPUiA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JU19JVEVSQVRPUik7XG4gIHZhciBJTlRFUlJVUFRFRCA9ICEhKG9wdGlvbnMgJiYgb3B0aW9ucy5JTlRFUlJVUFRFRCk7XG4gIHZhciBmbiA9IGJpbmQodW5ib3VuZEZ1bmN0aW9uLCB0aGF0LCAxICsgQVNfRU5UUklFUyArIElOVEVSUlVQVEVEKTtcbiAgdmFyIGl0ZXJhdG9yLCBpdGVyRm4sIGluZGV4LCBsZW5ndGgsIHJlc3VsdCwgbmV4dCwgc3RlcDtcblxuICB2YXIgc3RvcCA9IGZ1bmN0aW9uIChjb25kaXRpb24pIHtcbiAgICBpZiAoaXRlcmF0b3IpIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgIHJldHVybiBuZXcgUmVzdWx0KHRydWUsIGNvbmRpdGlvbik7XG4gIH07XG5cbiAgdmFyIGNhbGxGbiA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmIChBU19FTlRSSUVTKSB7XG4gICAgICBhbk9iamVjdCh2YWx1ZSk7XG4gICAgICByZXR1cm4gSU5URVJSVVBURUQgPyBmbih2YWx1ZVswXSwgdmFsdWVbMV0sIHN0b3ApIDogZm4odmFsdWVbMF0sIHZhbHVlWzFdKTtcbiAgICB9IHJldHVybiBJTlRFUlJVUFRFRCA/IGZuKHZhbHVlLCBzdG9wKSA6IGZuKHZhbHVlKTtcbiAgfTtcblxuICBpZiAoSVNfSVRFUkFUT1IpIHtcbiAgICBpdGVyYXRvciA9IGl0ZXJhYmxlO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJGbiA9IGdldEl0ZXJhdG9yTWV0aG9kKGl0ZXJhYmxlKTtcbiAgICBpZiAodHlwZW9mIGl0ZXJGbiAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoJ1RhcmdldCBpcyBub3QgaXRlcmFibGUnKTtcbiAgICAvLyBvcHRpbWlzYXRpb24gZm9yIGFycmF5IGl0ZXJhdG9yc1xuICAgIGlmIChpc0FycmF5SXRlcmF0b3JNZXRob2QoaXRlckZuKSkge1xuICAgICAgZm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IHRvTGVuZ3RoKGl0ZXJhYmxlLmxlbmd0aCk7IGxlbmd0aCA+IGluZGV4OyBpbmRleCsrKSB7XG4gICAgICAgIHJlc3VsdCA9IGNhbGxGbihpdGVyYWJsZVtpbmRleF0pO1xuICAgICAgICBpZiAocmVzdWx0ICYmIHJlc3VsdCBpbnN0YW5jZW9mIFJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xuICAgIH1cbiAgICBpdGVyYXRvciA9IGl0ZXJGbi5jYWxsKGl0ZXJhYmxlKTtcbiAgfVxuXG4gIG5leHQgPSBpdGVyYXRvci5uZXh0O1xuICB3aGlsZSAoIShzdGVwID0gbmV4dC5jYWxsKGl0ZXJhdG9yKSkuZG9uZSkge1xuICAgIHRyeSB7XG4gICAgICByZXN1bHQgPSBjYWxsRm4oc3RlcC52YWx1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICAgIGlmICh0eXBlb2YgcmVzdWx0ID09ICdvYmplY3QnICYmIHJlc3VsdCAmJiByZXN1bHQgaW5zdGFuY2VvZiBSZXN1bHQpIHJldHVybiByZXN1bHQ7XG4gIH0gcmV0dXJuIG5ldyBSZXN1bHQoZmFsc2UpO1xufTtcbiIsInZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHRhcmdldCwga2V5LCB2YWx1ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLmVudW1lcmFibGUpIHRhcmdldFtrZXldID0gdmFsdWU7XG4gIGVsc2UgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRhcmdldCwga2V5LCB2YWx1ZSk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG5cbnZhciBQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gIHZhciByZXNvbHZlLCByZWplY3Q7XG4gIHRoaXMucHJvbWlzZSA9IG5ldyBDKGZ1bmN0aW9uICgkJHJlc29sdmUsICQkcmVqZWN0KSB7XG4gICAgaWYgKHJlc29sdmUgIT09IHVuZGVmaW5lZCB8fCByZWplY3QgIT09IHVuZGVmaW5lZCkgdGhyb3cgVHlwZUVycm9yKCdCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvcicpO1xuICAgIHJlc29sdmUgPSAkJHJlc29sdmU7XG4gICAgcmVqZWN0ID0gJCRyZWplY3Q7XG4gIH0pO1xuICB0aGlzLnJlc29sdmUgPSBhRnVuY3Rpb24ocmVzb2x2ZSk7XG4gIHRoaXMucmVqZWN0ID0gYUZ1bmN0aW9uKHJlamVjdCk7XG59O1xuXG4vLyAyNS40LjEuNSBOZXdQcm9taXNlQ2FwYWJpbGl0eShDKVxubW9kdWxlLmV4cG9ydHMuZiA9IGZ1bmN0aW9uIChDKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZUNhcGFiaWxpdHkoQyk7XG59O1xuIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwiLy8gSUU4LSBkb24ndCBlbnVtIGJ1ZyBrZXlzXG5tb2R1bGUuZXhwb3J0cyA9IFtcbiAgJ2NvbnN0cnVjdG9yJyxcbiAgJ2hhc093blByb3BlcnR5JyxcbiAgJ2lzUHJvdG90eXBlT2YnLFxuICAncHJvcGVydHlJc0VudW1lcmFibGUnLFxuICAndG9Mb2NhbGVTdHJpbmcnLFxuICAndG9TdHJpbmcnLFxuICAndmFsdWVPZidcbl07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHt9O1xuIiwidmFyIHRvU3RyaW5nID0ge30udG9TdHJpbmc7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0b1N0cmluZy5jYWxsKGl0KS5zbGljZSg4LCAtMSk7XG59O1xuIiwiLy8gYFJlcXVpcmVPYmplY3RDb2VyY2libGVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1yZXF1aXJlb2JqZWN0Y29lcmNpYmxlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTtcbiIsInZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xuXG4vLyBvcHRpb25hbCAvIHNpbXBsZSBjb250ZXh0IGJpbmRpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQpO1xuICAgIH07XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuY3Rpb24gKGEpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIpO1xuICAgIH07XG4gICAgY2FzZSAzOiByZXR1cm4gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEsIGIsIGMpO1xuICAgIH07XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uICgvKiAuLi5hcmdzICovKSB7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59O1xuIiwidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBUb09iamVjdGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvb2JqZWN0XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChhcmd1bWVudCkge1xuICByZXR1cm4gT2JqZWN0KHJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBjbGFzc29mKGdsb2JhbC5wcm9jZXNzKSA9PSAncHJvY2Vzcyc7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGZsYWdzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1mbGFncycpO1xuXG52YXIgVE9fU1RSSU5HID0gJ3RvU3RyaW5nJztcbnZhciBSZWdFeHBQcm90b3R5cGUgPSBSZWdFeHAucHJvdG90eXBlO1xudmFyIG5hdGl2ZVRvU3RyaW5nID0gUmVnRXhwUHJvdG90eXBlW1RPX1NUUklOR107XG5cbnZhciBOT1RfR0VORVJJQyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgcmV0dXJuIG5hdGl2ZVRvU3RyaW5nLmNhbGwoeyBzb3VyY2U6ICdhJywgZmxhZ3M6ICdiJyB9KSAhPSAnL2EvYic7IH0pO1xuLy8gRkY0NC0gUmVnRXhwI3RvU3RyaW5nIGhhcyBhIHdyb25nIG5hbWVcbnZhciBJTkNPUlJFQ1RfTkFNRSA9IG5hdGl2ZVRvU3RyaW5nLm5hbWUgIT0gVE9fU1RSSU5HO1xuXG4vLyBgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZ2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUudG9zdHJpbmdcbmlmIChOT1RfR0VORVJJQyB8fCBJTkNPUlJFQ1RfTkFNRSkge1xuICByZWRlZmluZShSZWdFeHAucHJvdG90eXBlLCBUT19TVFJJTkcsIGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHZhciBSID0gYW5PYmplY3QodGhpcyk7XG4gICAgdmFyIHAgPSBTdHJpbmcoUi5zb3VyY2UpO1xuICAgIHZhciByZiA9IFIuZmxhZ3M7XG4gICAgdmFyIGYgPSBTdHJpbmcocmYgPT09IHVuZGVmaW5lZCAmJiBSIGluc3RhbmNlb2YgUmVnRXhwICYmICEoJ2ZsYWdzJyBpbiBSZWdFeHBQcm90b3R5cGUpID8gZmxhZ3MuY2FsbChSKSA6IHJmKTtcbiAgICByZXR1cm4gJy8nICsgcCArICcvJyArIGY7XG4gIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xufVxuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBjYWNoZSA9IHt9O1xuXG52YXIgdGhyb3dlciA9IGZ1bmN0aW9uIChpdCkgeyB0aHJvdyBpdDsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIG9wdGlvbnMpIHtcbiAgaWYgKGhhcyhjYWNoZSwgTUVUSE9EX05BTUUpKSByZXR1cm4gY2FjaGVbTUVUSE9EX05BTUVdO1xuICBpZiAoIW9wdGlvbnMpIG9wdGlvbnMgPSB7fTtcbiAgdmFyIG1ldGhvZCA9IFtdW01FVEhPRF9OQU1FXTtcbiAgdmFyIEFDQ0VTU09SUyA9IGhhcyhvcHRpb25zLCAnQUNDRVNTT1JTJykgPyBvcHRpb25zLkFDQ0VTU09SUyA6IGZhbHNlO1xuICB2YXIgYXJndW1lbnQwID0gaGFzKG9wdGlvbnMsIDApID8gb3B0aW9uc1swXSA6IHRocm93ZXI7XG4gIHZhciBhcmd1bWVudDEgPSBoYXMob3B0aW9ucywgMSkgPyBvcHRpb25zWzFdIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiBjYWNoZVtNRVRIT0RfTkFNRV0gPSAhIW1ldGhvZCAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIGlmIChBQ0NFU1NPUlMgJiYgIURFU0NSSVBUT1JTKSByZXR1cm4gdHJ1ZTtcbiAgICB2YXIgTyA9IHsgbGVuZ3RoOiAtMSB9O1xuXG4gICAgaWYgKEFDQ0VTU09SUykgZGVmaW5lUHJvcGVydHkoTywgMSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IHRocm93ZXIgfSk7XG4gICAgZWxzZSBPWzFdID0gMTtcblxuICAgIG1ldGhvZC5jYWxsKE8sIGFyZ3VtZW50MCwgYXJndW1lbnQxKTtcbiAgfSk7XG59O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuXG4vLyBsZXQgcmFpbmxvb3BDYWNoZXMgPSB3aW5kb3cuY2FjaGVzICYmIHdpbmRvdy5jYWNoZXMub3BlbiA/IHdpbmRvdy5jYWNoZXMgOiBudWxsO1xuXG4vKipcbiAqIEBwYXJhbSB7c3JjfSBzcmNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYXN5bmMgPSBmYWxzZVxuICogQHJldHVybnMge1Byb21pc2V9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBqYXNzbChzcmMsIGFzeW5jID0gZmFsc2UpIHtcblx0aWYgKCF3aW5kb3cuUHJvbWlzZSB8fCAhd2luZG93LlByb21pc2UuYWxsKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdQcm9taXNlcyBhcmUgbm90IGF2YWlsYWJsZSB5b3VyIGVudmlyb25tZW50LicpO1xuXHR9XG5cblx0aWYgKCFzcmMpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ3NyYyBzaG91bGQgbm90IGJlIGVtcHR5LicpO1xuXHR9XG5cblx0cmV0dXJuIG5ldyB3aW5kb3cuUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0Y29uc3QgZWxlbWVudCA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcblxuXHRcdGVsZW1lbnQub25sb2FkID0gKCkgPT4ge1xuXHRcdFx0cmVzb2x2ZShzcmMpO1xuXHRcdH07XG5cblx0XHRlbGVtZW50Lm9uZXJyb3IgPSAoKSA9PiB7XG5cdFx0XHRyZWplY3QobmV3IEVycm9yKHNyYykpO1xuXHRcdH07XG5cblx0XHRlbGVtZW50LmFzeW5jID0gdHJ1ZSA9PT0gYXN5bmM7XG5cdFx0ZWxlbWVudC5zcmMgPSBzcmM7XG5cblx0XHR3aW5kb3cuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlbGVtZW50KTtcblx0fSkgLyogLnRoZW4oKHMpID0+IHtcblxuXHRcdGNvbnN0IGZvdW5kID0gcyAmJiByYWlubG9vcENhY2hlcyA/IHMubWF0Y2goL3JhaW5sb29wXFwvdlxcLyhbXlxcL10rKVxcL3N0YXRpY1xcLy8pIDogbnVsbDtcblx0XHRpZiAoZm91bmQgJiYgZm91bmRbMV0pXG5cdFx0e1xuXHRcdFx0cmFpbmxvb3BDYWNoZXMub3BlbigncmFpbmxvb3Atb2ZmbGluZS0nICsgZm91bmRbMV0pLnRoZW4oXG5cdFx0XHRcdChjYWNoZSkgPT4gY2FjaGUuYWRkKHMpXG5cdFx0XHQpLmNhdGNoKCgpID0+IHtcblx0XHRcdFx0cmFpbmxvb3BDYWNoZXMgPSBudWxsO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHM7XG5cdH0pKi87XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL3ZhbHVlc1wiKTsiLCJpbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxuY2xhc3MgVGhlbWVTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMudGhlbWVzID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblx0XHR0aGlzLnRoZW1lQmFja2dyb3VuZE5hbWUgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnRoZW1lQmFja2dyb3VuZEhhc2ggPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMudGhlbWUgPSBrby5vYnNlcnZhYmxlKCcnKS5leHRlbmQoeyBsaW1pdGVkTGlzdDogdGhpcy50aGVtZXMgfSk7XG5cdH1cblxuXHRwb3B1bGF0ZSgpIHtcblx0XHRjb25zdCB0aGVtZXMgPSBTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgndGhlbWVzJyk7XG5cblx0XHR0aGlzLnRoZW1lcyhpc0FycmF5KHRoZW1lcykgPyB0aGVtZXMgOiBbXSk7XG5cdFx0dGhpcy50aGVtZShTZXR0aW5ncy5zZXR0aW5nc0dldCgnVGhlbWUnKSk7XG5cdFx0dGhpcy50aGVtZUJhY2tncm91bmROYW1lKFNldHRpbmdzLnNldHRpbmdzR2V0KCdVc2VyQmFja2dyb3VuZE5hbWUnKSk7XG5cdFx0dGhpcy50aGVtZUJhY2tncm91bmRIYXNoKFNldHRpbmdzLnNldHRpbmdzR2V0KCdVc2VyQmFja2dyb3VuZEhhc2gnKSk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFRoZW1lU3RvcmUoKTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IERlc2t0b3BOb3RpZmljYXRpb24sIE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgKiBhcyBFdmVudHMgZnJvbSAnQ29tbW9uL0V2ZW50cyc7XG5pbXBvcnQgQXVkaW8gZnJvbSAnQ29tbW9uL0F1ZGlvJztcblxuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmNsYXNzIE5vdGlmaWNhdGlvblVzZXJTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuZW5hYmxlU291bmROb3RpZmljYXRpb24gPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnNvdW5kTm90aWZpY2F0aW9uSXNTdXBwb3J0ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuYWxsb3dEZXNrdG9wTm90aWZpY2F0aW9uID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmRlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9ucyA9IGtvXG5cdFx0XHQuY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbigpO1xuXG5cdFx0XHRcdGxldCByZXN1bHQgPSBEZXNrdG9wTm90aWZpY2F0aW9uLk5vdFN1cHBvcnRlZDtcblxuXHRcdFx0XHRjb25zdCBOb3RpZmljYXRpb25DbGFzcyA9IHRoaXMubm90aWZpY2F0aW9uQ2xhc3MoKTtcblx0XHRcdFx0aWYgKE5vdGlmaWNhdGlvbkNsYXNzICYmIE5vdGlmaWNhdGlvbkNsYXNzLnBlcm1pc3Npb24pIHtcblx0XHRcdFx0XHRzd2l0Y2ggKE5vdGlmaWNhdGlvbkNsYXNzLnBlcm1pc3Npb24udG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0XHRcdFx0Y2FzZSAnZ3JhbnRlZCc6XG5cdFx0XHRcdFx0XHRcdHJlc3VsdCA9IERlc2t0b3BOb3RpZmljYXRpb24uQWxsb3dlZDtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdkZW5pZWQnOlxuXHRcdFx0XHRcdFx0XHRyZXN1bHQgPSBEZXNrdG9wTm90aWZpY2F0aW9uLkRlbmllZDtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdkZWZhdWx0Jzpcblx0XHRcdFx0XHRcdFx0cmVzdWx0ID0gRGVza3RvcE5vdGlmaWNhdGlvbi5Ob3RBbGxvd2VkO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAod2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMgJiYgd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMuY2hlY2tQZXJtaXNzaW9uKSB7XG5cdFx0XHRcdFx0cmVzdWx0ID0gd2luZG93LndlYmtpdE5vdGlmaWNhdGlvbnMuY2hlY2tQZXJtaXNzaW9uKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fSlcblx0XHRcdC5leHRlbmQoeyBub3RpZnk6ICdhbHdheXMnIH0pO1xuXG5cdFx0dGhpcy5lbmFibGVEZXNrdG9wTm90aWZpY2F0aW9uID0ga29cblx0XHRcdC5jb21wdXRlZCh7XG5cdFx0XHRcdHJlYWQ6ICgpID0+XG5cdFx0XHRcdFx0dGhpcy5hbGxvd0Rlc2t0b3BOb3RpZmljYXRpb24oKSAmJiBEZXNrdG9wTm90aWZpY2F0aW9uLkFsbG93ZWQgPT09IHRoaXMuZGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCksXG5cdFx0XHRcdHdyaXRlOiAodmFsdWUpID0+IHtcblx0XHRcdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdGNvbnN0IE5vdGlmaWNhdGlvbkNsYXNzID0gdGhpcy5ub3RpZmljYXRpb25DbGFzcygpLFxuXHRcdFx0XHRcdFx0XHRwZXJtaXNzaW9uID0gdGhpcy5kZXNrdG9wTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTtcblxuXHRcdFx0XHRcdFx0aWYgKE5vdGlmaWNhdGlvbkNsYXNzICYmIERlc2t0b3BOb3RpZmljYXRpb24uQWxsb3dlZCA9PT0gcGVybWlzc2lvbikge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbih0cnVlKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoTm90aWZpY2F0aW9uQ2xhc3MgJiYgRGVza3RvcE5vdGlmaWNhdGlvbi5Ob3RBbGxvd2VkID09PSBwZXJtaXNzaW9uKSB7XG5cdFx0XHRcdFx0XHRcdE5vdGlmaWNhdGlvbkNsYXNzLnJlcXVlc3RQZXJtaXNzaW9uKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbi52YWx1ZUhhc011dGF0ZWQoKTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmIChEZXNrdG9wTm90aWZpY2F0aW9uLkFsbG93ZWQgPT09IHRoaXMuZGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbigpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsb3dEZXNrdG9wTm90aWZpY2F0aW9uLnZhbHVlSGFzTXV0YXRlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5hbGxvd0Rlc2t0b3BOb3RpZmljYXRpb24odHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbigpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsb3dEZXNrdG9wTm90aWZpY2F0aW9uKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYWxsb3dEZXNrdG9wTm90aWZpY2F0aW9uLnZhbHVlSGFzTXV0YXRlZCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmFsbG93RGVza3RvcE5vdGlmaWNhdGlvbihmYWxzZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuYWxsb3dEZXNrdG9wTm90aWZpY2F0aW9uKGZhbHNlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuZXh0ZW5kKHsgbm90aWZ5OiAnYWx3YXlzJyB9KTtcblxuXHRcdGlmICghdGhpcy5lbmFibGVEZXNrdG9wTm90aWZpY2F0aW9uLnZhbHVlSGFzTXV0YXRlZCkge1xuXHRcdFx0dGhpcy5lbmFibGVEZXNrdG9wTm90aWZpY2F0aW9uLnZhbHVlSGFzTXV0YXRlZCA9ICgpID0+IHtcblx0XHRcdFx0dGhpcy5hbGxvd0Rlc2t0b3BOb3RpZmljYXRpb24udmFsdWVIYXNNdXRhdGVkKCk7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdHRoaXMuY29tcHV0ZXJzKCk7XG5cblx0XHR0aGlzLmluaXROb3RpZmljYXRpb25QbGF5ZXIoKTtcblx0fVxuXG5cdGNvbXB1dGVycygpIHtcblx0XHR0aGlzLmlzRGVza3RvcE5vdGlmaWNhdGlvblN1cHBvcnRlZCA9IGtvLmNvbXB1dGVkKFxuXHRcdFx0KCkgPT4gRGVza3RvcE5vdGlmaWNhdGlvbi5Ob3RTdXBwb3J0ZWQgIT09IHRoaXMuZGVza3RvcE5vdGlmaWNhdGlvblBlcm1pc3Npb25zKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pc0Rlc2t0b3BOb3RpZmljYXRpb25EZW5pZWQgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+XG5cdFx0XHRcdERlc2t0b3BOb3RpZmljYXRpb24uTm90U3VwcG9ydGVkID09PSB0aGlzLmRlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpIHx8XG5cdFx0XHRcdERlc2t0b3BOb3RpZmljYXRpb24uRGVuaWVkID09PSB0aGlzLmRlc2t0b3BOb3RpZmljYXRpb25QZXJtaXNzaW9ucygpXG5cdFx0KTtcblx0fVxuXG5cdGluaXROb3RpZmljYXRpb25QbGF5ZXIoKSB7XG5cdFx0aWYgKEF1ZGlvICYmIEF1ZGlvLnN1cHBvcnRlZE5vdGlmaWNhdGlvbikge1xuXHRcdFx0dGhpcy5zb3VuZE5vdGlmaWNhdGlvbklzU3VwcG9ydGVkKHRydWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVuYWJsZVNvdW5kTm90aWZpY2F0aW9uKGZhbHNlKTtcblx0XHRcdHRoaXMuc291bmROb3RpZmljYXRpb25Jc1N1cHBvcnRlZChmYWxzZSk7XG5cdFx0fVxuXHR9XG5cblx0cGxheVNvdW5kTm90aWZpY2F0aW9uKHNraXBTZXR0aW5nKSB7XG5cdFx0aWYgKEF1ZGlvICYmIEF1ZGlvLnN1cHBvcnRlZE5vdGlmaWNhdGlvbiAmJiAoc2tpcFNldHRpbmcgPyB0cnVlIDogdGhpcy5lbmFibGVTb3VuZE5vdGlmaWNhdGlvbigpKSkge1xuXHRcdFx0QXVkaW8ucGxheU5vdGlmaWNhdGlvbigpO1xuXHRcdH1cblx0fVxuXG5cdGRpc3BsYXlEZXNrdG9wTm90aWZpY2F0aW9uKGltYWdlU3JjLCB0aXRsZSwgdGV4dCwgbmVzc2FnZURhdGEpIHtcblx0XHRpZiAodGhpcy5lbmFibGVEZXNrdG9wTm90aWZpY2F0aW9uKCkpIHtcblx0XHRcdGNvbnN0IE5vdGlmaWNhdGlvbkNsYXNzID0gdGhpcy5ub3RpZmljYXRpb25DbGFzcygpLFxuXHRcdFx0XHRub3RpZmljYXRpb24gPSBOb3RpZmljYXRpb25DbGFzc1xuXHRcdFx0XHRcdD8gbmV3IE5vdGlmaWNhdGlvbkNsYXNzKHRpdGxlLCB7XG5cdFx0XHRcdFx0XHRcdGJvZHk6IHRleHQsXG5cdFx0XHRcdFx0XHRcdGljb246IGltYWdlU3JjXG5cdFx0XHRcdFx0ICB9KVxuXHRcdFx0XHRcdDogbnVsbDtcblxuXHRcdFx0aWYgKG5vdGlmaWNhdGlvbikge1xuXHRcdFx0XHRpZiAobm90aWZpY2F0aW9uLnNob3cpIHtcblx0XHRcdFx0XHRub3RpZmljYXRpb24uc2hvdygpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKG5lc3NhZ2VEYXRhKSB7XG5cdFx0XHRcdFx0bm90aWZpY2F0aW9uLm9uY2xpY2sgPSAoKSA9PiB7XG5cdFx0XHRcdFx0XHR3aW5kb3cuZm9jdXMoKTtcblxuXHRcdFx0XHRcdFx0aWYgKG5lc3NhZ2VEYXRhLkZvbGRlciAmJiBuZXNzYWdlRGF0YS5VaWQpIHtcblx0XHRcdFx0XHRcdFx0RXZlbnRzLnB1YignbWFpbGJveC5tZXNzYWdlLnNob3cnLCBbbmVzc2FnZURhdGEuRm9sZGVyLCBuZXNzYWdlRGF0YS5VaWRdKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0d2luZG93LnNldFRpbWVvdXQoXG5cdFx0XHRcdFx0KGZ1bmN0aW9uKGxvY2FsTm90aWZpY2F0aW9ucykge1xuXHRcdFx0XHRcdFx0cmV0dXJuICgpID0+IHtcblx0XHRcdFx0XHRcdFx0aWYgKGxvY2FsTm90aWZpY2F0aW9ucy5jYW5jZWwpIHtcblx0XHRcdFx0XHRcdFx0XHRsb2NhbE5vdGlmaWNhdGlvbnMuY2FuY2VsKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAobG9jYWxOb3RpZmljYXRpb25zLmNsb3NlKSB7XG5cdFx0XHRcdFx0XHRcdFx0bG9jYWxOb3RpZmljYXRpb25zLmNsb3NlKCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0fSkobm90aWZpY2F0aW9uKSxcblx0XHRcdFx0XHRNYWdpY3MuVGltZTdzXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cG9wdWxhdGUoKSB7XG5cdFx0dGhpcy5lbmFibGVTb3VuZE5vdGlmaWNhdGlvbighIVNldHRpbmdzLnNldHRpbmdzR2V0KCdTb3VuZE5vdGlmaWNhdGlvbicpKTtcblx0XHR0aGlzLmVuYWJsZURlc2t0b3BOb3RpZmljYXRpb24oISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnRGVza3RvcE5vdGlmaWNhdGlvbnMnKSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMgeyp8bnVsbH1cblx0ICovXG5cdG5vdGlmaWNhdGlvbkNsYXNzKCkge1xuXHRcdHJldHVybiB3aW5kb3cuTm90aWZpY2F0aW9uICYmIHdpbmRvdy5Ob3RpZmljYXRpb24ucmVxdWVzdFBlcm1pc3Npb24gPyB3aW5kb3cuTm90aWZpY2F0aW9uIDogbnVsbDtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgTm90aWZpY2F0aW9uVXNlclN0b3JlKCk7XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBwcm9wZXJ0eUlzRW51bWVyYWJsZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtcHJvcGVydHktaXMtZW51bWVyYWJsZScpO1xudmFyIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHktZGVzY3JpcHRvcicpO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvUHJpbWl0aXZlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLXByaW1pdGl2ZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pZTgtZG9tLWRlZmluZScpO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5ZGVzY3JpcHRvciAtLSBzYWZlXG52YXIgJGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIDogZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApIHtcbiAgTyA9IHRvSW5kZXhlZE9iamVjdChPKTtcbiAgUCA9IHRvUHJpbWl0aXZlKFAsIHRydWUpO1xuICBpZiAoSUU4X0RPTV9ERUZJTkUpIHRyeSB7XG4gICAgcmV0dXJuICRnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgaWYgKGhhcyhPLCBQKSkgcmV0dXJuIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcighcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUuZi5jYWxsKE8sIFApLCBPW1BdKTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG5cbnZhciBzcGxpdCA9ICcnLnNwbGl0O1xuXG4vLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xubW9kdWxlLmV4cG9ydHMgPSBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIHRocm93cyBhbiBlcnJvciBpbiByaGlubywgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3JoaW5vL2lzc3Vlcy8zNDZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGlucyAtLSBzYWZlXG4gIHJldHVybiAhT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT0gJ1N0cmluZycgPyBzcGxpdC5jYWxsKGl0LCAnJykgOiBPYmplY3QoaXQpO1xufSA6IE9iamVjdDtcbiIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSBGdW5jdGlvbi50b1N0cmluZztcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGAzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICh0eXBlb2Ygc3RvcmUuaW5zcGVjdFNvdXJjZSAhPSAnZnVuY3Rpb24nKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZy5jYWxsKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIG9iamVjdEhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCA9ICdPYmplY3QgYWxyZWFkeSBpbml0aWFsaXplZCc7XG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xudmFyIHNldCwgZ2V0LCBoYXM7XG5cbnZhciBlbmZvcmNlID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBoYXMoaXQpID8gZ2V0KGl0KSA6IHNldChpdCwge30pO1xufTtcblxudmFyIGdldHRlckZvciA9IGZ1bmN0aW9uIChUWVBFKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoaXQpIHtcbiAgICB2YXIgc3RhdGU7XG4gICAgaWYgKCFpc09iamVjdChpdCkgfHwgKHN0YXRlID0gZ2V0KGl0KSkudHlwZSAhPT0gVFlQRSkge1xuICAgICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvbXBhdGlibGUgcmVjZWl2ZXIsICcgKyBUWVBFICsgJyByZXF1aXJlZCcpO1xuICAgIH0gcmV0dXJuIHN0YXRlO1xuICB9O1xufTtcblxuaWYgKE5BVElWRV9XRUFLX01BUCkge1xuICB2YXIgc3RvcmUgPSBzaGFyZWQuc3RhdGUgfHwgKHNoYXJlZC5zdGF0ZSA9IG5ldyBXZWFrTWFwKCkpO1xuICB2YXIgd21nZXQgPSBzdG9yZS5nZXQ7XG4gIHZhciB3bWhhcyA9IHN0b3JlLmhhcztcbiAgdmFyIHdtc2V0ID0gc3RvcmUuc2V0O1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgaWYgKHdtaGFzLmNhbGwoc3RvcmUsIGl0KSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgd21zZXQuY2FsbChzdG9yZSwgaXQsIG1ldGFkYXRhKTtcbiAgICByZXR1cm4gbWV0YWRhdGE7XG4gIH07XG4gIGdldCA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWdldC5jYWxsKHN0b3JlLCBpdCkgfHwge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiB3bWhhcy5jYWxsKHN0b3JlLCBpdCk7XG4gIH07XG59IGVsc2Uge1xuICB2YXIgU1RBVEUgPSBzaGFyZWRLZXkoJ3N0YXRlJyk7XG4gIGhpZGRlbktleXNbU1RBVEVdID0gdHJ1ZTtcbiAgc2V0ID0gZnVuY3Rpb24gKGl0LCBtZXRhZGF0YSkge1xuICAgIGlmIChvYmplY3RIYXMoaXQsIFNUQVRFKSkgdGhyb3cgbmV3IFR5cGVFcnJvcihPQkpFQ1RfQUxSRUFEWV9JTklUSUFMSVpFRCk7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKFN0cmluZyhpdCkgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IGtleSBmcm9tICdrZXknO1xuaW1wb3J0IEp1YSBmcm9tICdKdWEnO1xuXG5pbXBvcnQge1xuXHRDYXBhLFxuXHRNYWdpY3MsXG5cdEtleVN0YXRlLFxuXHRDb21wb3NlVHlwZSxcblx0U3RvcmFnZVJlc3VsdFR5cGUsXG5cdEVkaXRvckRlZmF1bHRUeXBlLFxuXHROb3RpZmljYXRpb24sXG5cdFNldFN5c3RlbUZvbGRlcnNOb3RpZmljYXRpb24sXG5cdFVwbG9hZEVycm9yQ29kZVxufSBmcm9tICdDb21tb24vRW51bXMnO1xuXG5pbXBvcnQge1xuXHR0cmltLFxuXHRpc0FycmF5LFxuXHRpc05vcm1hbCxcblx0ZGVsZWdhdGVSdW4sXG5cdGlzTm9uRW1wdHlBcnJheSxcblx0Y2xlYXJCcVN3aXRjaGVyLFxuXHRyZXBseVN1YmplY3RBZGQsXG5cdGVuY29kZUh0bWwsXG5cdG5vb3BGYWxzZSxcblx0aW5Gb2N1cyxcblx0ZGVsZWdhdGVSdW5PbkRlc3Ryb3ksXG5cdHBJbnQsXG5cdGlzVW5kXG59IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmltcG9ydCB7IFVOVVNFRF9PUFRJT05fVkFMVUUgfSBmcm9tICdDb21tb24vQ29uc3RzJztcbmltcG9ydCB7IGJYTUxIdHRwUmVxdWVzdFN1cHBvcnRlZCwgYk1vYmlsZURldmljZSB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCB7IHVwbG9hZCB9IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5pbXBvcnQgeyBpMThuLCBnZXROb3RpZmljYXRpb24sIGdldFVwbG9hZEVycm9yRGVzY0J5Q29kZSB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcbmltcG9ydCB7IGZvcm1hdCBhcyBtb21lbnRvckZvcm1hdCB9IGZyb20gJ0NvbW1vbi9Nb21lbnRvcic7XG5pbXBvcnQgeyBnZXRNZXNzYWdlRmxhZ3NGcm9tQ2FjaGUsIHNldE1lc3NhZ2VGbGFnc1RvQ2FjaGUsIHNldEZvbGRlckhhc2ggfSBmcm9tICdDb21tb24vQ2FjaGUnO1xuXG5pbXBvcnQgeyBIdG1sRWRpdG9yIH0gZnJvbSAnQ29tbW9uL0h0bWxFZGl0b3InO1xuXG5pbXBvcnQgQXBwU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQXBwJztcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1NldHRpbmdzJztcbmltcG9ydCBJZGVudGl0eVN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0lkZW50aXR5JztcbmltcG9ydCBBY2NvdW50U3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQWNjb3VudCc7XG5pbXBvcnQgRm9sZGVyU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvRm9sZGVyJztcbmltcG9ydCBQZ3BTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9QZ3AnO1xuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcbmltcG9ydCBTb2NpYWxTdG9yZSBmcm9tICdTdG9yZXMvU29jaWFsJztcblxuaW1wb3J0IFJlbW90ZSBmcm9tICdSZW1vdGUvVXNlci9BamF4JztcblxuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5pbXBvcnQgKiBhcyBFdmVudHMgZnJvbSAnQ29tbW9uL0V2ZW50cyc7XG5cbmltcG9ydCB7IENvbXBvc2VBdHRhY2htZW50TW9kZWwgfSBmcm9tICdNb2RlbC9Db21wb3NlQXR0YWNobWVudCc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyBwb3B1cCwgY29tbWFuZCwgaXNQb3B1cFZpc2libGUsIHNob3dTY3JlZW5Qb3B1cCwgaGlkZVNjcmVlblBvcHVwLCByb3V0ZU9uLCByb3V0ZU9mZiB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHBvcHVwKHtcblx0bmFtZTogJ1ZpZXcvUG9wdXAvQ29tcG9zZScsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNDb21wb3NlJ1xufSlcbmNsYXNzIENvbXBvc2VQb3B1cFZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdGNvbnN0IGZFbWFpbE91dEluSGVscGVyID0gKGNvbnRleHQsIGlkZW50aXR5LCBuYW1lLCBpc0luKSA9PiB7XG5cdFx0XHRpZiAoaWRlbnRpdHkgJiYgY29udGV4dCAmJiBpZGVudGl0eVtuYW1lXSgpICYmIChpc0luID8gdHJ1ZSA6IGNvbnRleHRbbmFtZV0oKSkpIHtcblx0XHRcdFx0Y29uc3QgaWRlbnRpdHlFbWFpbCA9IGlkZW50aXR5W25hbWVdKCk7XG5cdFx0XHRcdGxldCBsaXN0ID0gdHJpbShjb250ZXh0W25hbWVdKCkpLnNwbGl0KC9bLF0vKTtcblxuXHRcdFx0XHRsaXN0ID0gXy5maWx0ZXIobGlzdCwgKGVtYWlsKSA9PiB7XG5cdFx0XHRcdFx0ZW1haWwgPSB0cmltKGVtYWlsKTtcblx0XHRcdFx0XHRyZXR1cm4gZW1haWwgJiYgdHJpbShpZGVudGl0eUVtYWlsKSAhPT0gZW1haWw7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGlmIChpc0luKSB7XG5cdFx0XHRcdFx0bGlzdC5wdXNoKGlkZW50aXR5RW1haWwpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29udGV4dFtuYW1lXShsaXN0LmpvaW4oJywnKSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHRoaXMub0xhc3RNZXNzYWdlID0gbnVsbDtcblx0XHR0aGlzLm9FZGl0b3IgPSBudWxsO1xuXHRcdHRoaXMuYURyYWZ0SW5mbyA9IG51bGw7XG5cdFx0dGhpcy5zSW5SZXBseVRvID0gJyc7XG5cdFx0dGhpcy5iRnJvbURyYWZ0ID0gZmFsc2U7XG5cdFx0dGhpcy5zUmVmZXJlbmNlcyA9ICcnO1xuXG5cdFx0dGhpcy5zTGFzdEZvY3VzZWRGaWVsZCA9ICd0byc7XG5cblx0XHR0aGlzLnJlc2l6ZXJUcmlnZ2VyID0gXy5iaW5kKHRoaXMucmVzaXplclRyaWdnZXIsIHRoaXMpO1xuXG5cdFx0dGhpcy5hbGxvd0NvbnRhY3RzID0gISFBcHBTdG9yZS5jb250YWN0c0lzQWxsb3dlZCgpO1xuXHRcdHRoaXMuYWxsb3dGb2xkZXJzID0gISFTZXR0aW5ncy5jYXBhKENhcGEuRm9sZGVycyk7XG5cblx0XHR0aGlzLmJTa2lwTmV4dEhpZGUgPSBmYWxzZTtcblx0XHR0aGlzLmNvbXBvc2VJbkVkaXQgPSBBcHBTdG9yZS5jb21wb3NlSW5FZGl0O1xuXHRcdHRoaXMuZWRpdG9yRGVmYXVsdFR5cGUgPSBTZXR0aW5nc1N0b3JlLmVkaXRvckRlZmF1bHRUeXBlO1xuXG5cdFx0dGhpcy5jYXBhT3BlblBHUCA9IFBncFN0b3JlLmNhcGFPcGVuUEdQO1xuXG5cdFx0dGhpcy5pZGVudGl0aWVzRHJvcGRvd25UcmlnZ2VyID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnRvID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy50by5mb2N1c2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5jYyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuY2MuZm9jdXNlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuYmNjID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5iY2MuZm9jdXNlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMucmVwbHlUbyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMucmVwbHlUby5mb2N1c2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHQvLyB0aGlzLnRvLnN1YnNjcmliZSgodikgPT4gY29uc29sZS5sb2codikpO1xuXG5cdFx0a28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRcdGNhc2UgdGhpcy50by5mb2N1c2VkKCk6XG5cdFx0XHRcdFx0dGhpcy5zTGFzdEZvY3VzZWRGaWVsZCA9ICd0byc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgdGhpcy5jYy5mb2N1c2VkKCk6XG5cdFx0XHRcdFx0dGhpcy5zTGFzdEZvY3VzZWRGaWVsZCA9ICdjYyc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgdGhpcy5iY2MuZm9jdXNlZCgpOlxuXHRcdFx0XHRcdHRoaXMuc0xhc3RGb2N1c2VkRmllbGQgPSAnYmNjJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0fVxuXHRcdH0pLmV4dGVuZCh7IG5vdGlmeTogJ2Fsd2F5cycgfSk7XG5cblx0XHR0aGlzLnN1YmplY3QgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnN1YmplY3QuZm9jdXNlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5pc0h0bWwgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMucmVxdWVzdERzbiA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMucmVxdWVzdFJlYWRSZWNlaXB0ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5tYXJrQXNJbXBvcnRhbnQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuc2VuZEVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zZW5kU3VjY2Vzc0J1dFNhdmVFcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuc2F2ZWRFcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5zZW5kQnV0dG9uU3VjY2VzcyA9IGtvLmNvbXB1dGVkKCgpID0+ICF0aGlzLnNlbmRFcnJvcigpICYmICF0aGlzLnNlbmRTdWNjZXNzQnV0U2F2ZUVycm9yKCkpO1xuXG5cdFx0dGhpcy5zZW5kRXJyb3JEZXNjID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5zYXZlZEVycm9yRGVzYyA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5zZW5kRXJyb3Iuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKCF2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLnNlbmRFcnJvckRlc2MoJycpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5zYXZlZEVycm9yLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICghdmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zYXZlZEVycm9yRGVzYygnJyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNlbmRTdWNjZXNzQnV0U2F2ZUVycm9yLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICghdmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zYXZlZEVycm9yRGVzYygnJyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNhdmVkVGltZSA9IGtvLm9ic2VydmFibGUoMCk7XG5cdFx0dGhpcy5zYXZlZFRpbWVUZXh0ID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdDAgPCB0aGlzLnNhdmVkVGltZSgpID8gaTE4bignQ09NUE9TRS9TQVZFRF9USU1FJywgeyAnVElNRSc6IG1vbWVudG9yRm9ybWF0KHRoaXMuc2F2ZWRUaW1lKCkgLSAxLCAnTFQnKSB9KSA6ICcnXG5cdFx0KTtcblxuXHRcdHRoaXMuZW1wdHlUb0Vycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5lbXB0eVRvRXJyb3JUb29sdGlwID0ga28uY29tcHV0ZWQoKCkgPT4gKHRoaXMuZW1wdHlUb0Vycm9yKCkgPyBpMThuKCdDT01QT1NFL0VNUFRZX1RPX0VSUk9SX0RFU0MnKSA6ICcnKSk7XG5cblx0XHR0aGlzLmF0dGFjaG1lbnRzSW5Qcm9jZXNzRXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmF0dGFjaG1lbnRzSW5FcnJvckVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmF0dGFjaG1lbnRzRXJyb3JUb29sdGlwID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0bGV0IHJlc3VsdCA9ICcnO1xuXHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRcdGNhc2UgdGhpcy5hdHRhY2htZW50c0luUHJvY2Vzc0Vycm9yKCk6XG5cdFx0XHRcdFx0cmVzdWx0ID0gaTE4bignQ09NUE9TRS9BVFRBQ0hNRU5UU19VUExPQURfRVJST1JfREVTQycpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIHRoaXMuYXR0YWNobWVudHNJbkVycm9yRXJyb3IoKTpcblx0XHRcdFx0XHRyZXN1bHQgPSBpMThuKCdDT01QT1NFL0FUVEFDSE1FTlRTX0VSUk9SX0RFU0MnKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9KTtcblxuXHRcdHRoaXMuc2hvd0NjID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zaG93QmNjID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zaG93UmVwbHlUbyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5jYy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAoZmFsc2UgPT09IHRoaXMuc2hvd0NjKCkgJiYgMCA8IHZhbHVlLmxlbmd0aCkge1xuXHRcdFx0XHR0aGlzLnNob3dDYyh0cnVlKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMuYmNjLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmIChmYWxzZSA9PT0gdGhpcy5zaG93QmNjKCkgJiYgMCA8IHZhbHVlLmxlbmd0aCkge1xuXHRcdFx0XHR0aGlzLnNob3dCY2ModHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnJlcGx5VG8uc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKGZhbHNlID09PSB0aGlzLnNob3dSZXBseVRvKCkgJiYgMCA8IHZhbHVlLmxlbmd0aCkge1xuXHRcdFx0XHR0aGlzLnNob3dSZXBseVRvKHRydWUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5kcmFmdEZvbGRlciA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuZHJhZnRVaWQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnNlbmRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnNhdmluZyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuYXR0YWNobWVudHMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXG5cdFx0dGhpcy5hdHRhY2htZW50c0luUHJvY2VzcyA9IGtvLmNvbXB1dGVkKCgpID0+IF8uZmlsdGVyKHRoaXMuYXR0YWNobWVudHMoKSwgKGl0ZW0pID0+IGl0ZW0gJiYgIWl0ZW0uY29tcGxldGUoKSkpO1xuXHRcdHRoaXMuYXR0YWNobWVudHNJblJlYWR5ID0ga28uY29tcHV0ZWQoKCkgPT4gXy5maWx0ZXIodGhpcy5hdHRhY2htZW50cygpLCAoaXRlbSkgPT4gaXRlbSAmJiBpdGVtLmNvbXBsZXRlKCkpKTtcblx0XHR0aGlzLmF0dGFjaG1lbnRzSW5FcnJvciA9IGtvLmNvbXB1dGVkKCgpID0+IF8uZmlsdGVyKHRoaXMuYXR0YWNobWVudHMoKSwgKGl0ZW0pID0+IGl0ZW0gJiYgJycgIT09IGl0ZW0uZXJyb3IoKSkpO1xuXG5cdFx0dGhpcy5hdHRhY2htZW50c0NvdW50ID0ga28uY29tcHV0ZWQoKCkgPT4gdGhpcy5hdHRhY2htZW50cygpLmxlbmd0aCk7XG5cdFx0dGhpcy5hdHRhY2htZW50c0luRXJyb3JDb3VudCA9IGtvLmNvbXB1dGVkKCgpID0+IHRoaXMuYXR0YWNobWVudHNJbkVycm9yKCkubGVuZ3RoKTtcblx0XHR0aGlzLmF0dGFjaG1lbnRzSW5Qcm9jZXNzQ291bnQgPSBrby5jb21wdXRlZCgoKSA9PiB0aGlzLmF0dGFjaG1lbnRzSW5Qcm9jZXNzKCkubGVuZ3RoKTtcblx0XHR0aGlzLmlzRHJhZnRGb2xkZXJNZXNzYWdlID0ga28uY29tcHV0ZWQoKCkgPT4gJycgIT09IHRoaXMuZHJhZnRGb2xkZXIoKSAmJiAnJyAhPT0gdGhpcy5kcmFmdFVpZCgpKTtcblxuXHRcdHRoaXMuYXR0YWNobWVudHNQbGFjZSA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5hdHRhY2htZW50cy5zdWJzY3JpYmUodGhpcy5yZXNpemVyVHJpZ2dlcik7XG5cdFx0dGhpcy5hdHRhY2htZW50c1BsYWNlLnN1YnNjcmliZSh0aGlzLnJlc2l6ZXJUcmlnZ2VyKTtcblxuXHRcdHRoaXMuYXR0YWNobWVudHNJbkVycm9yQ291bnQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0aWYgKDAgPT09IHZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNobWVudHNJbkVycm9yRXJyb3IoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5jb21wb3NlVXBsb2FkZXJCdXR0b24gPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXHRcdHRoaXMuY29tcG9zZVVwbG9hZGVyRHJvcFBsYWNlID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblx0XHR0aGlzLmRyYWdBbmREcm9wRW5hYmxlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZHJhZ0FuZERyb3BPdmVyID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgdGhyb3R0bGU6IDEgfSk7XG5cdFx0dGhpcy5kcmFnQW5kRHJvcFZpc2libGUgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyB0aHJvdHRsZTogMSB9KTtcblx0XHR0aGlzLmF0dGFjaGVNdWx0aXBsZUFsbG93ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmFkZEF0dGFjaG1lbnRFbmFibGVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmNvbXBvc2VFZGl0b3JBcmVhID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdHRoaXMuaWRlbnRpdGllcyA9IElkZW50aXR5U3RvcmUuaWRlbnRpdGllcztcblx0XHR0aGlzLmlkZW50aXRpZXNPcHRpb25zID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdF8ubWFwKElkZW50aXR5U3RvcmUuaWRlbnRpdGllcygpLCAoaXRlbSkgPT4gKHtcblx0XHRcdFx0J2l0ZW0nOiBpdGVtLFxuXHRcdFx0XHQnb3B0VmFsdWUnOiBpdGVtLmlkKCksXG5cdFx0XHRcdCdvcHRUZXh0JzogaXRlbS5mb3JtYXR0ZWROYW1lKClcblx0XHRcdH0pKVxuXHRcdCk7XG5cblx0XHR0aGlzLmN1cnJlbnRJZGVudGl0eSA9IGtvLm9ic2VydmFibGUodGhpcy5pZGVudGl0aWVzKClbMF0gPyB0aGlzLmlkZW50aXRpZXMoKVswXSA6IG51bGwpO1xuXG5cdFx0dGhpcy5jdXJyZW50SWRlbnRpdHkuZXh0ZW5kKHtcblx0XHRcdHRvZ2dsZVN1YnNjcmliZTogW1xuXHRcdFx0XHR0aGlzLFxuXHRcdFx0XHQoaWRlbnRpdHkpID0+IHtcblx0XHRcdFx0XHRmRW1haWxPdXRJbkhlbHBlcih0aGlzLCBpZGVudGl0eSwgJ2JjYycpO1xuXHRcdFx0XHRcdGZFbWFpbE91dEluSGVscGVyKHRoaXMsIGlkZW50aXR5LCAncmVwbHlUbycpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQoaWRlbnRpdHkpID0+IHtcblx0XHRcdFx0XHRmRW1haWxPdXRJbkhlbHBlcih0aGlzLCBpZGVudGl0eSwgJ2JjYycsIHRydWUpO1xuXHRcdFx0XHRcdGZFbWFpbE91dEluSGVscGVyKHRoaXMsIGlkZW50aXR5LCAncmVwbHlUbycsIHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRdXG5cdFx0fSk7XG5cblx0XHR0aGlzLmN1cnJlbnRJZGVudGl0eVZpZXcgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBpdGVtID0gdGhpcy5jdXJyZW50SWRlbnRpdHkoKTtcblx0XHRcdHJldHVybiBpdGVtID8gaXRlbS5mb3JtYXR0ZWROYW1lKCkgOiAndW5rbm93bic7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnRvLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICh0aGlzLmVtcHR5VG9FcnJvcigpICYmIDAgPCB2YWx1ZS5sZW5ndGgpIHtcblx0XHRcdFx0dGhpcy5lbXB0eVRvRXJyb3IoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hdHRhY2htZW50c0luUHJvY2Vzcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5hdHRhY2htZW50c0luUHJvY2Vzc0Vycm9yKCkgJiYgaXNBcnJheSh2YWx1ZSkgJiYgMCA9PT0gdmFsdWUubGVuZ3RoKSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNobWVudHNJblByb2Nlc3NFcnJvcihmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnJlc2l6ZXIgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyB0aHJvdHRsZTogNTAgfSk7XG5cblx0XHR0aGlzLnJlc2l6ZXIuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdGlmICh0aGlzLm9FZGl0b3IpIHtcblx0XHRcdFx0dGhpcy5vRWRpdG9yLnJlc2l6ZSgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5jYW5CZVNlbnRPclNhdmVkID0ga28uY29tcHV0ZWQoKCkgPT4gIXRoaXMuc2VuZGluZygpICYmICF0aGlzLnNhdmluZygpKTtcblxuXHRcdHRoaXMuc2VuZE1lc3NhZ2VSZXNwb25zZSA9IF8uYmluZCh0aGlzLnNlbmRNZXNzYWdlUmVzcG9uc2UsIHRoaXMpO1xuXHRcdHRoaXMuc2F2ZU1lc3NhZ2VSZXNwb25zZSA9IF8uYmluZCh0aGlzLnNhdmVNZXNzYWdlUmVzcG9uc2UsIHRoaXMpO1xuXG5cdFx0RXZlbnRzLnN1YignaW50ZXJ2YWwuMm0nLCAoKSA9PiB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdHRoaXMubW9kYWxWaXNpYmlsaXR5KCkgJiZcblx0XHRcdFx0IUZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyTm90RW5hYmxlZCgpICYmXG5cdFx0XHRcdFNldHRpbmdzU3RvcmUuYWxsb3dEcmFmdEF1dG9zYXZlKCkgJiZcblx0XHRcdFx0IXRoaXMuaXNFbXB0eUZvcm0oZmFsc2UpICYmXG5cdFx0XHRcdCF0aGlzLnNhdmluZygpICYmXG5cdFx0XHRcdCF0aGlzLnNlbmRpbmcoKSAmJlxuXHRcdFx0XHQhdGhpcy5zYXZlZEVycm9yKClcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLnNhdmVDb21tYW5kKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNob3dDYy5zdWJzY3JpYmUodGhpcy5yZXNpemVyVHJpZ2dlcik7XG5cdFx0dGhpcy5zaG93QmNjLnN1YnNjcmliZSh0aGlzLnJlc2l6ZXJUcmlnZ2VyKTtcblx0XHR0aGlzLnNob3dSZXBseVRvLnN1YnNjcmliZSh0aGlzLnJlc2l6ZXJUcmlnZ2VyKTtcblxuXHRcdHRoaXMuZHJvcGJveEVuYWJsZWQgPSBTb2NpYWxTdG9yZS5kcm9wYm94LmVuYWJsZWQ7XG5cdFx0dGhpcy5kcm9wYm94QXBpS2V5ID0gU29jaWFsU3RvcmUuZHJvcGJveC5hcGlLZXk7XG5cblx0XHR0aGlzLmRyaXZlRW5hYmxlZCA9IGtvLm9ic2VydmFibGUoXG5cdFx0XHRiWE1MSHR0cFJlcXVlc3RTdXBwb3J0ZWQgJiZcblx0XHRcdFx0ISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnQWxsb3dHb29nbGVTb2NpYWwnKSAmJlxuXHRcdFx0XHQhIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0dvb2dsZVNvY2lhbERyaXZlJykgJiZcblx0XHRcdFx0ISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnR29vZ2xlQ2xpZW50SUQnKSAmJlxuXHRcdFx0XHQhIVNldHRpbmdzLnNldHRpbmdzR2V0KCdHb29nbGVBcGlLZXknKVxuXHRcdCk7XG5cblx0XHR0aGlzLmRyaXZlVmlzaWJsZSA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5kcml2ZUNhbGxiYWNrID0gXy5iaW5kKHRoaXMuZHJpdmVDYWxsYmFjaywgdGhpcyk7XG5cblx0XHR0aGlzLm9uTWVzc2FnZVVwbG9hZEF0dGFjaG1lbnRzID0gXy5iaW5kKHRoaXMub25NZXNzYWdlVXBsb2FkQXR0YWNobWVudHMsIHRoaXMpO1xuXG5cdFx0dGhpcy5iRGlzYWJlQ2xvc2VPbkVzYyA9IHRydWU7XG5cdFx0dGhpcy5zRGVmYXVsdEtleVNjb3BlID0gS2V5U3RhdGUuQ29tcG9zZTtcblxuXHRcdHRoaXMudHJ5VG9DbG9zZVBvcHVwID0gXy5kZWJvdW5jZShfLmJpbmQodGhpcy50cnlUb0Nsb3NlUG9wdXAsIHRoaXMpLCBNYWdpY3MuVGltZTIwMG1zKTtcblxuXHRcdHRoaXMuZW1haWxzU291cmNlID0gXy5iaW5kKHRoaXMuZW1haWxzU291cmNlLCB0aGlzKTtcblx0XHR0aGlzLmF1dG9zYXZlRnVuY3Rpb24gPSBfLmJpbmQodGhpcy5hdXRvc2F2ZUZ1bmN0aW9uLCB0aGlzKTtcblxuXHRcdHRoaXMuaVRpbWVyID0gMDtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiBzZWxmLmNhbkJlU2VudE9yU2F2ZWQoKSlcblx0c2VuZENvbW1hbmQoKSB7XG5cdFx0Y29uc3Qgc1RvID0gdHJpbSh0aGlzLnRvKCkpLFxuXHRcdFx0c0NjID0gdHJpbSh0aGlzLmNjKCkpLFxuXHRcdFx0c0JjYyA9IHRyaW0odGhpcy5iY2MoKSk7XG5cdFx0bGV0IHNTZW50Rm9sZGVyID0gRm9sZGVyU3RvcmUuc2VudEZvbGRlcigpO1xuXG5cdFx0dGhpcy5hdHRhY2htZW50c0luUHJvY2Vzc0Vycm9yKGZhbHNlKTtcblx0XHR0aGlzLmF0dGFjaG1lbnRzSW5FcnJvckVycm9yKGZhbHNlKTtcblx0XHR0aGlzLmVtcHR5VG9FcnJvcihmYWxzZSk7XG5cblx0XHRpZiAoMCA8IHRoaXMuYXR0YWNobWVudHNJblByb2Nlc3MoKS5sZW5ndGgpIHtcblx0XHRcdHRoaXMuYXR0YWNobWVudHNJblByb2Nlc3NFcnJvcih0cnVlKTtcblx0XHRcdHRoaXMuYXR0YWNobWVudHNQbGFjZSh0cnVlKTtcblx0XHR9IGVsc2UgaWYgKDAgPCB0aGlzLmF0dGFjaG1lbnRzSW5FcnJvcigpLmxlbmd0aCkge1xuXHRcdFx0dGhpcy5hdHRhY2htZW50c0luRXJyb3JFcnJvcih0cnVlKTtcblx0XHRcdHRoaXMuYXR0YWNobWVudHNQbGFjZSh0cnVlKTtcblx0XHR9XG5cblx0XHRpZiAoJycgPT09IHNUbyAmJiAnJyA9PT0gc0NjICYmICcnID09PSBzQmNjKSB7XG5cdFx0XHR0aGlzLmVtcHR5VG9FcnJvcih0cnVlKTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuZW1wdHlUb0Vycm9yKCkgJiYgIXRoaXMuYXR0YWNobWVudHNJbkVycm9yRXJyb3IoKSAmJiAhdGhpcy5hdHRhY2htZW50c0luUHJvY2Vzc0Vycm9yKCkpIHtcblx0XHRcdGlmIChTZXR0aW5nc1N0b3JlLnJlcGx5U2FtZUZvbGRlcigpKSB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRpc0FycmF5KHRoaXMuYURyYWZ0SW5mbykgJiZcblx0XHRcdFx0XHQzID09PSB0aGlzLmFEcmFmdEluZm8ubGVuZ3RoICYmXG5cdFx0XHRcdFx0aXNOb3JtYWwodGhpcy5hRHJhZnRJbmZvWzJdKSAmJlxuXHRcdFx0XHRcdDAgPCB0aGlzLmFEcmFmdEluZm9bMl0ubGVuZ3RoXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHNTZW50Rm9sZGVyID0gdGhpcy5hRHJhZnRJbmZvWzJdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICghdGhpcy5hbGxvd0ZvbGRlcnMpIHtcblx0XHRcdFx0c1NlbnRGb2xkZXIgPSBVTlVTRURfT1BUSU9OX1ZBTFVFO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAoJycgPT09IHNTZW50Rm9sZGVyKSB7XG5cdFx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0ZvbGRlclN5c3RlbScpLCBbU2V0U3lzdGVtRm9sZGVyc05vdGlmaWNhdGlvbi5TZW50XSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnNlbmRFcnJvcihmYWxzZSk7XG5cdFx0XHRcdHRoaXMuc2VuZGluZyh0cnVlKTtcblxuXHRcdFx0XHRpZiAoaXNBcnJheSh0aGlzLmFEcmFmdEluZm8pICYmIDMgPT09IHRoaXMuYURyYWZ0SW5mby5sZW5ndGgpIHtcblx0XHRcdFx0XHRjb25zdCBmbGFnc0NhY2hlID0gZ2V0TWVzc2FnZUZsYWdzRnJvbUNhY2hlKHRoaXMuYURyYWZ0SW5mb1syXSwgdGhpcy5hRHJhZnRJbmZvWzFdKTtcblx0XHRcdFx0XHRpZiAoZmxhZ3NDYWNoZSkge1xuXHRcdFx0XHRcdFx0aWYgKCdmb3J3YXJkJyA9PT0gdGhpcy5hRHJhZnRJbmZvWzBdKSB7XG5cdFx0XHRcdFx0XHRcdGZsYWdzQ2FjaGVbM10gPSB0cnVlO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0ZmxhZ3NDYWNoZVsyXSA9IHRydWU7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHNldE1lc3NhZ2VGbGFnc1RvQ2FjaGUodGhpcy5hRHJhZnRJbmZvWzJdLCB0aGlzLmFEcmFmdEluZm9bMV0sIGZsYWdzQ2FjaGUpO1xuXHRcdFx0XHRcdFx0Z2V0QXBwKCkucmVsb2FkRmxhZ3NDdXJyZW50TWVzc2FnZUxpc3RBbmRNZXNzYWdlRnJvbUNhY2hlKCk7XG5cdFx0XHRcdFx0XHRzZXRGb2xkZXJIYXNoKHRoaXMuYURyYWZ0SW5mb1syXSwgJycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHNTZW50Rm9sZGVyID0gVU5VU0VEX09QVElPTl9WQUxVRSA9PT0gc1NlbnRGb2xkZXIgPyAnJyA6IHNTZW50Rm9sZGVyO1xuXG5cdFx0XHRcdHNldEZvbGRlckhhc2godGhpcy5kcmFmdEZvbGRlcigpLCAnJyk7XG5cdFx0XHRcdHNldEZvbGRlckhhc2goc1NlbnRGb2xkZXIsICcnKTtcblxuXHRcdFx0XHRSZW1vdGUuc2VuZE1lc3NhZ2UoXG5cdFx0XHRcdFx0dGhpcy5zZW5kTWVzc2FnZVJlc3BvbnNlLFxuXHRcdFx0XHRcdHRoaXMuY3VycmVudElkZW50aXR5KCkgPyB0aGlzLmN1cnJlbnRJZGVudGl0eSgpLmlkKCkgOiAnJyxcblx0XHRcdFx0XHR0aGlzLmRyYWZ0Rm9sZGVyKCksXG5cdFx0XHRcdFx0dGhpcy5kcmFmdFVpZCgpLFxuXHRcdFx0XHRcdHNTZW50Rm9sZGVyLFxuXHRcdFx0XHRcdHNUbyxcblx0XHRcdFx0XHR0aGlzLmNjKCksXG5cdFx0XHRcdFx0dGhpcy5iY2MoKSxcblx0XHRcdFx0XHR0aGlzLnJlcGx5VG8oKSxcblx0XHRcdFx0XHR0aGlzLnN1YmplY3QoKSxcblx0XHRcdFx0XHR0aGlzLm9FZGl0b3IgPyB0aGlzLm9FZGl0b3IuaXNIdG1sKCkgOiBmYWxzZSxcblx0XHRcdFx0XHR0aGlzLm9FZGl0b3IgPyB0aGlzLm9FZGl0b3IuZ2V0RGF0YSh0cnVlKSA6ICcnLFxuXHRcdFx0XHRcdHRoaXMucHJlcGVhckF0dGFjaG1lbnRzRm9yU2VuZE9yU2F2ZSgpLFxuXHRcdFx0XHRcdHRoaXMuYURyYWZ0SW5mbyxcblx0XHRcdFx0XHR0aGlzLnNJblJlcGx5VG8sXG5cdFx0XHRcdFx0dGhpcy5zUmVmZXJlbmNlcyxcblx0XHRcdFx0XHR0aGlzLnJlcXVlc3REc24oKSxcblx0XHRcdFx0XHR0aGlzLnJlcXVlc3RSZWFkUmVjZWlwdCgpLFxuXHRcdFx0XHRcdHRoaXMubWFya0FzSW1wb3J0YW50KClcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gc2VsZi5jYW5CZVNlbnRPclNhdmVkKCkpXG5cdHNhdmVDb21tYW5kKCkge1xuXHRcdGlmICghdGhpcy5hbGxvd0ZvbGRlcnMpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAoRm9sZGVyU3RvcmUuZHJhZnRGb2xkZXJOb3RFbmFibGVkKCkpIHtcblx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0ZvbGRlclN5c3RlbScpLCBbU2V0U3lzdGVtRm9sZGVyc05vdGlmaWNhdGlvbi5EcmFmdF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNhdmVkRXJyb3IoZmFsc2UpO1xuXHRcdFx0dGhpcy5zYXZpbmcodHJ1ZSk7XG5cblx0XHRcdHRoaXMuYXV0b3NhdmVTdGFydCgpO1xuXG5cdFx0XHRzZXRGb2xkZXJIYXNoKEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyKCksICcnKTtcblxuXHRcdFx0UmVtb3RlLnNhdmVNZXNzYWdlKFxuXHRcdFx0XHR0aGlzLnNhdmVNZXNzYWdlUmVzcG9uc2UsXG5cdFx0XHRcdHRoaXMuY3VycmVudElkZW50aXR5KCkgPyB0aGlzLmN1cnJlbnRJZGVudGl0eSgpLmlkKCkgOiAnJyxcblx0XHRcdFx0dGhpcy5kcmFmdEZvbGRlcigpLFxuXHRcdFx0XHR0aGlzLmRyYWZ0VWlkKCksXG5cdFx0XHRcdEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyKCksXG5cdFx0XHRcdHRoaXMudG8oKSxcblx0XHRcdFx0dGhpcy5jYygpLFxuXHRcdFx0XHR0aGlzLmJjYygpLFxuXHRcdFx0XHR0aGlzLnJlcGx5VG8oKSxcblx0XHRcdFx0dGhpcy5zdWJqZWN0KCksXG5cdFx0XHRcdHRoaXMub0VkaXRvciA/IHRoaXMub0VkaXRvci5pc0h0bWwoKSA6IGZhbHNlLFxuXHRcdFx0XHR0aGlzLm9FZGl0b3IgPyB0aGlzLm9FZGl0b3IuZ2V0RGF0YSh0cnVlKSA6ICcnLFxuXHRcdFx0XHR0aGlzLnByZXBlYXJBdHRhY2htZW50c0ZvclNlbmRPclNhdmUoKSxcblx0XHRcdFx0dGhpcy5hRHJhZnRJbmZvLFxuXHRcdFx0XHR0aGlzLnNJblJlcGx5VG8sXG5cdFx0XHRcdHRoaXMuc1JlZmVyZW5jZXMsXG5cdFx0XHRcdHRoaXMubWFya0FzSW1wb3J0YW50KClcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gc2VsZi5pc0RyYWZ0Rm9sZGVyTWVzc2FnZSgpKVxuXHRkZWxldGVDb21tYW5kKCkge1xuXHRcdGNvbnN0IFBvcHVwc0Fza1ZpZXdNb2RlbCA9IHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQXNrJyk7XG5cdFx0aWYgKCFpc1BvcHVwVmlzaWJsZShQb3B1cHNBc2tWaWV3TW9kZWwpICYmIHRoaXMubW9kYWxWaXNpYmlsaXR5KCkpIHtcblx0XHRcdHNob3dTY3JlZW5Qb3B1cChQb3B1cHNBc2tWaWV3TW9kZWwsIFtcblx0XHRcdFx0aTE4bignUE9QVVBTX0FTSy9ERVNDX1dBTlRfREVMRVRFX01FU1NBR0VTJyksXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5tb2RhbFZpc2liaWxpdHkoKSkge1xuXHRcdFx0XHRcdFx0Z2V0QXBwKCkuZGVsZXRlTWVzc2FnZXNGcm9tRm9sZGVyV2l0aG91dENoZWNrKHRoaXMuZHJhZnRGb2xkZXIoKSwgW3RoaXMuZHJhZnRVaWQoKV0pO1xuXHRcdFx0XHRcdFx0aGlkZVNjcmVlblBvcHVwKENvbXBvc2VQb3B1cFZpZXcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XSk7XG5cdFx0fVxuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+IHNlbGYuY2FuQmVTZW50T3JTYXZlZCgpKVxuXHRza2lwQ29tbWFuZCgpIHtcblx0XHR0aGlzLmJTa2lwTmV4dEhpZGUgPSB0cnVlO1xuXG5cdFx0aWYgKFxuXHRcdFx0dGhpcy5tb2RhbFZpc2liaWxpdHkoKSAmJlxuXHRcdFx0IXRoaXMuc2F2aW5nKCkgJiZcblx0XHRcdCF0aGlzLnNlbmRpbmcoKSAmJlxuXHRcdFx0IUZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyTm90RW5hYmxlZCgpICYmXG5cdFx0XHRTZXR0aW5nc1N0b3JlLmFsbG93RHJhZnRBdXRvc2F2ZSgpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnNhdmVDb21tYW5kKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy50cnlUb0Nsb3NlUG9wdXAoKTtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiBzZWxmLmFsbG93Q29udGFjdHMpXG5cdGNvbnRhY3RzQ29tbWFuZCgpIHtcblx0XHRpZiAodGhpcy5hbGxvd0NvbnRhY3RzKSB7XG5cdFx0XHR0aGlzLnNraXBDb21tYW5kKCk7XG5cdFx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQ29udGFjdHMnKSwgW3RydWUsIHRoaXMuc0xhc3RGb2N1c2VkRmllbGRdKTtcblx0XHRcdH0sIE1hZ2ljcy5UaW1lMjAwbXMpO1xuXHRcdH1cblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiBzZWxmLmRyb3Bib3hFbmFibGVkKCkpXG5cdGRyb3Bib3hDb21tYW5kKCkge1xuXHRcdGlmICh3aW5kb3cuRHJvcGJveCkge1xuXHRcdFx0d2luZG93LkRyb3Bib3guY2hvb3NlKHtcblx0XHRcdFx0c3VjY2VzczogKGZpbGVzKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGZpbGVzICYmIGZpbGVzWzBdICYmIGZpbGVzWzBdLmxpbmspIHtcblx0XHRcdFx0XHRcdHRoaXMuYWRkRHJvcGJveEF0dGFjaG1lbnQoZmlsZXNbMF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0bGlua1R5cGU6ICdkaXJlY3QnLFxuXHRcdFx0XHRtdWx0aXNlbGVjdDogZmFsc2Vcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiBzZWxmLmRyaXZlRW5hYmxlZCgpKVxuXHRkcml2ZUNvbW1hbmQoKSB7XG5cdFx0dGhpcy5kcml2ZU9wZW5Qb3B1cCgpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0YXV0b3NhdmVGdW5jdGlvbigpIHtcblx0XHRpZiAoXG5cdFx0XHR0aGlzLm1vZGFsVmlzaWJpbGl0eSgpICYmXG5cdFx0XHQhRm9sZGVyU3RvcmUuZHJhZnRGb2xkZXJOb3RFbmFibGVkKCkgJiZcblx0XHRcdFNldHRpbmdzU3RvcmUuYWxsb3dEcmFmdEF1dG9zYXZlKCkgJiZcblx0XHRcdCF0aGlzLmlzRW1wdHlGb3JtKGZhbHNlKSAmJlxuXHRcdFx0IXRoaXMuc2F2aW5nKCkgJiZcblx0XHRcdCF0aGlzLnNlbmRpbmcoKSAmJlxuXHRcdFx0IXRoaXMuc2F2ZWRFcnJvcigpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLnNhdmVDb21tYW5kKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5hdXRvc2F2ZVN0YXJ0KCk7XG5cdH1cblxuXHRhdXRvc2F2ZVN0YXJ0KCkge1xuXHRcdHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5pVGltZXIpO1xuXHRcdHRoaXMuaVRpbWVyID0gd2luZG93LnNldFRpbWVvdXQodGhpcy5hdXRvc2F2ZUZ1bmN0aW9uLCBNYWdpY3MuVGltZTFtKTtcblx0fVxuXG5cdGF1dG9zYXZlU3RvcCgpIHtcblx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuaVRpbWVyKTtcblx0fVxuXG5cdGVtYWlsc1NvdXJjZShvRGF0YSwgZlJlc3BvbnNlKSB7XG5cdFx0Z2V0QXBwKCkuZ2V0QXV0b2NvbXBsZXRlKG9EYXRhLnRlcm0sIChhRGF0YSkgPT4ge1xuXHRcdFx0ZlJlc3BvbnNlKF8ubWFwKGFEYXRhLCAob0VtYWlsSXRlbSkgPT4gb0VtYWlsSXRlbS50b0xpbmUoZmFsc2UpKSk7XG5cdFx0fSk7XG5cdH1cblxuXHRvcGVuT3BlblBncFBvcHVwKCkge1xuXHRcdGlmIChQZ3BTdG9yZS5jYXBhT3BlblBHUCgpICYmIHRoaXMub0VkaXRvciAmJiAhdGhpcy5vRWRpdG9yLmlzSHRtbCgpKSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Db21wb3NlT3BlblBncCcpLCBbXG5cdFx0XHRcdChyZXN1bHQpID0+IHtcblx0XHRcdFx0XHR0aGlzLmVkaXRvcigoZWRpdG9yKSA9PiB7XG5cdFx0XHRcdFx0XHRlZGl0b3Iuc2V0UGxhaW4ocmVzdWx0KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSxcblx0XHRcdFx0dGhpcy5vRWRpdG9yLmdldERhdGEoZmFsc2UpLFxuXHRcdFx0XHR0aGlzLmN1cnJlbnRJZGVudGl0eSgpLFxuXHRcdFx0XHR0aGlzLnRvKCksXG5cdFx0XHRcdHRoaXMuY2MoKSxcblx0XHRcdFx0dGhpcy5iY2MoKVxuXHRcdFx0XSk7XG5cdFx0fVxuXHR9XG5cblx0cmVsb2FkRHJhZnRGb2xkZXIoKSB7XG5cdFx0Y29uc3QgZHJhZnRGb2xkZXIgPSBGb2xkZXJTdG9yZS5kcmFmdEZvbGRlcigpO1xuXHRcdGlmICgnJyAhPT0gZHJhZnRGb2xkZXIgJiYgVU5VU0VEX09QVElPTl9WQUxVRSAhPT0gZHJhZnRGb2xkZXIpIHtcblx0XHRcdHNldEZvbGRlckhhc2goZHJhZnRGb2xkZXIsICcnKTtcblx0XHRcdGlmIChGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSA9PT0gZHJhZnRGb2xkZXIpIHtcblx0XHRcdFx0Z2V0QXBwKCkucmVsb2FkTWVzc2FnZUxpc3QodHJ1ZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRnZXRBcHAoKS5mb2xkZXJJbmZvcm1hdGlvbihkcmFmdEZvbGRlcik7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0ZmluZElkZW50aXR5QnlNZXNzYWdlKGNvbXBvc2VUeXBlLCBtZXNzYWdlKSB7XG5cdFx0bGV0IHJlc3VsdEluZGV4ID0gMTAwMCxcblx0XHRcdHJlc3VsdElkZW50aXR5ID0gbnVsbDtcblx0XHRjb25zdCBpZGVudGl0aWVzID0gSWRlbnRpdHlTdG9yZS5pZGVudGl0aWVzKCksXG5cdFx0XHRpZGVudGl0aWVzQ2FjaGUgPSB7fSxcblx0XHRcdGZFYWNoSGVscGVyID0gKGl0ZW0pID0+IHtcblx0XHRcdFx0aWYgKGl0ZW0gJiYgaXRlbS5lbWFpbCAmJiBpZGVudGl0aWVzQ2FjaGVbaXRlbS5lbWFpbF0pIHtcblx0XHRcdFx0XHRpZiAoIXJlc3VsdElkZW50aXR5IHx8IHJlc3VsdEluZGV4ID4gaWRlbnRpdGllc0NhY2hlW2l0ZW0uZW1haWxdWzFdKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHRJZGVudGl0eSA9IGlkZW50aXRpZXNDYWNoZVtpdGVtLmVtYWlsXVswXTtcblx0XHRcdFx0XHRcdHJlc3VsdEluZGV4ID0gaWRlbnRpdGllc0NhY2hlW2l0ZW0uZW1haWxdWzFdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdF8uZWFjaChpZGVudGl0aWVzLCAoaXRlbSwgaW5kZXgpID0+IHtcblx0XHRcdGlkZW50aXRpZXNDYWNoZVtpdGVtLmVtYWlsKCldID0gW2l0ZW0sIGluZGV4XTtcblx0XHR9KTtcblxuXHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHRzd2l0Y2ggKGNvbXBvc2VUeXBlKSB7XG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuRW1wdHk6XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuUmVwbHk6XG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuUmVwbHlBbGw6XG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuRm9yd2FyZDpcblx0XHRcdFx0Y2FzZSBDb21wb3NlVHlwZS5Gb3J3YXJkQXNBdHRhY2htZW50OlxuXHRcdFx0XHRcdF8uZWFjaChfLnVuaW9uKG1lc3NhZ2UudG8sIG1lc3NhZ2UuY2MsIG1lc3NhZ2UuYmNjKSwgZkVhY2hIZWxwZXIpO1xuXHRcdFx0XHRcdGlmICghcmVzdWx0SWRlbnRpdHkpIHtcblx0XHRcdFx0XHRcdF8uZWFjaChtZXNzYWdlLmRlbGl2ZXJlZFRvLCBmRWFjaEhlbHBlcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIENvbXBvc2VUeXBlLkRyYWZ0OlxuXHRcdFx0XHRcdF8uZWFjaChfLnVuaW9uKG1lc3NhZ2UuZnJvbSwgbWVzc2FnZS5yZXBseVRvKSwgZkVhY2hIZWxwZXIpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdElkZW50aXR5IHx8IGlkZW50aXRpZXNbMF0gfHwgbnVsbDtcblx0fVxuXG5cdHNlbGVjdElkZW50aXR5KGlkZW50aXR5KSB7XG5cdFx0aWYgKGlkZW50aXR5ICYmIGlkZW50aXR5Lml0ZW0pIHtcblx0XHRcdHRoaXMuY3VycmVudElkZW50aXR5KGlkZW50aXR5Lml0ZW0pO1xuXHRcdFx0dGhpcy5zZXRTaWduYXR1cmVGcm9tSWRlbnRpdHkoaWRlbnRpdHkuaXRlbSk7XG5cdFx0fVxuXHR9XG5cblx0c2VuZE1lc3NhZ2VSZXNwb25zZShzdGF0dXNSZXN1bHQsIGRhdGEpIHtcblx0XHRsZXQgcmVzdWx0ID0gZmFsc2UsXG5cdFx0XHRtZXNzYWdlID0gJyc7XG5cblx0XHR0aGlzLnNlbmRpbmcoZmFsc2UpO1xuXG5cdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHN0YXR1c1Jlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KSB7XG5cdFx0XHRyZXN1bHQgPSB0cnVlO1xuXHRcdFx0aWYgKHRoaXMubW9kYWxWaXNpYmlsaXR5KCkpIHtcblx0XHRcdFx0ZGVsZWdhdGVSdW4odGhpcywgJ2Nsb3NlQ29tbWFuZCcpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLm1vZGFsVmlzaWJpbGl0eSgpICYmICFyZXN1bHQpIHtcblx0XHRcdGlmIChkYXRhICYmIE5vdGlmaWNhdGlvbi5DYW50U2F2ZU1lc3NhZ2UgPT09IGRhdGEuRXJyb3JDb2RlKSB7XG5cdFx0XHRcdHRoaXMuc2VuZFN1Y2Nlc3NCdXRTYXZlRXJyb3IodHJ1ZSk7XG5cdFx0XHRcdHRoaXMuc2F2ZWRFcnJvckRlc2ModHJpbShpMThuKCdDT01QT1NFL1NBVkVEX0VSUk9SX09OX1NFTkQnKSkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0bWVzc2FnZSA9IGdldE5vdGlmaWNhdGlvbihcblx0XHRcdFx0XHRkYXRhICYmIGRhdGEuRXJyb3JDb2RlID8gZGF0YS5FcnJvckNvZGUgOiBOb3RpZmljYXRpb24uQ2FudFNlbmRNZXNzYWdlLFxuXHRcdFx0XHRcdGRhdGEgJiYgZGF0YS5FcnJvck1lc3NhZ2UgPyBkYXRhLkVycm9yTWVzc2FnZSA6ICcnXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0dGhpcy5zZW5kRXJyb3IodHJ1ZSk7XG5cdFx0XHRcdHRoaXMuc2VuZEVycm9yRGVzYyhtZXNzYWdlIHx8IGdldE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24uQ2FudFNlbmRNZXNzYWdlKSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5yZWxvYWREcmFmdEZvbGRlcigpO1xuXHR9XG5cblx0c2F2ZU1lc3NhZ2VSZXNwb25zZShzdGF0dXNSZXN1bHQsIG9EYXRhKSB7XG5cdFx0bGV0IHJlc3VsdCA9IGZhbHNlO1xuXG5cdFx0dGhpcy5zYXZpbmcoZmFsc2UpO1xuXG5cdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHN0YXR1c1Jlc3VsdCAmJiBvRGF0YSAmJiBvRGF0YS5SZXN1bHQpIHtcblx0XHRcdGlmIChvRGF0YS5SZXN1bHQuTmV3Rm9sZGVyICYmIG9EYXRhLlJlc3VsdC5OZXdVaWQpIHtcblx0XHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblxuXHRcdFx0XHRpZiAodGhpcy5iRnJvbURyYWZ0KSB7XG5cdFx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlKCk7XG5cdFx0XHRcdFx0aWYgKG1lc3NhZ2UgJiYgdGhpcy5kcmFmdEZvbGRlcigpID09PSBtZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3ICYmIHRoaXMuZHJhZnRVaWQoKSA9PT0gbWVzc2FnZS51aWQpIHtcblx0XHRcdFx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlKG51bGwpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuZHJhZnRGb2xkZXIob0RhdGEuUmVzdWx0Lk5ld0ZvbGRlcik7XG5cdFx0XHRcdHRoaXMuZHJhZnRVaWQob0RhdGEuUmVzdWx0Lk5ld1VpZCk7XG5cblx0XHRcdFx0dGhpcy5zYXZlZFRpbWUod2luZG93Lk1hdGgucm91bmQobmV3IHdpbmRvdy5EYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCkpO1xuXG5cdFx0XHRcdGlmICh0aGlzLmJGcm9tRHJhZnQpIHtcblx0XHRcdFx0XHRzZXRGb2xkZXJIYXNoKHRoaXMuZHJhZnRGb2xkZXIoKSwgJycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCFyZXN1bHQpIHtcblx0XHRcdHRoaXMuc2F2ZWRFcnJvcih0cnVlKTtcblx0XHRcdHRoaXMuc2F2ZWRFcnJvckRlc2MoZ2V0Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbi5DYW50U2F2ZU1lc3NhZ2UpKTtcblx0XHR9XG5cblx0XHR0aGlzLnJlbG9hZERyYWZ0Rm9sZGVyKCk7XG5cdH1cblxuXHRvbkhpZGUoKSB7XG5cdFx0dGhpcy5hdXRvc2F2ZVN0b3AoKTtcblxuXHRcdGlmICghdGhpcy5iU2tpcE5leHRIaWRlKSB7XG5cdFx0XHRBcHBTdG9yZS5jb21wb3NlSW5FZGl0KGZhbHNlKTtcblx0XHRcdHRoaXMucmVzZXQoKTtcblx0XHR9XG5cblx0XHR0aGlzLmJTa2lwTmV4dEhpZGUgPSBmYWxzZTtcblxuXHRcdHRoaXMudG8uZm9jdXNlZChmYWxzZSk7XG5cblx0XHRyb3V0ZU9uKCk7XG5cdH1cblxuXHRlZGl0b3IoZk9uSW5pdCkge1xuXHRcdGlmIChmT25Jbml0KSB7XG5cdFx0XHRpZiAoIXRoaXMub0VkaXRvciAmJiB0aGlzLmNvbXBvc2VFZGl0b3JBcmVhKCkpIHtcblx0XHRcdFx0Ly8gXy5kZWxheSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMub0VkaXRvciA9IG5ldyBIdG1sRWRpdG9yKFxuXHRcdFx0XHRcdHRoaXMuY29tcG9zZUVkaXRvckFyZWEoKSxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdGZPbkluaXQodGhpcy5vRWRpdG9yKTtcblx0XHRcdFx0XHRcdHRoaXMucmVzaXplclRyaWdnZXIoKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdChiSHRtbCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5pc0h0bWwoISFiSHRtbCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0XHQvLyB9LCAxMDAwKTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy5vRWRpdG9yKSB7XG5cdFx0XHRcdGZPbkluaXQodGhpcy5vRWRpdG9yKTtcblx0XHRcdFx0dGhpcy5yZXNpemVyVHJpZ2dlcigpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbnZlclNpZ25hdHVyZShzaWduYXR1cmUpIHtcblx0XHRsZXQgbGltaXQgPSAxMCxcblx0XHRcdGZyb21MaW5lID0gJyc7XG5cblx0XHRjb25zdCBtb21lbnRzID0gW10sXG5cdFx0XHRtb21lbnRSZWd4ID0gL3t7TU9NRU5UOihbXn1dKyl9fS9nO1xuXG5cdFx0c2lnbmF0dXJlID0gc2lnbmF0dXJlLnJlcGxhY2UoL1tcXHJdL2csICcnKTtcblxuXHRcdGZyb21MaW5lID0gdGhpcy5vTGFzdE1lc3NhZ2UgPyB0aGlzLmVtYWlsQXJyYXlUb1N0cmluZ0xpbmVIZWxwZXIodGhpcy5vTGFzdE1lc3NhZ2UuZnJvbSwgdHJ1ZSkgOiAnJztcblx0XHRpZiAoJycgIT09IGZyb21MaW5lKSB7XG5cdFx0XHRzaWduYXR1cmUgPSBzaWduYXR1cmUucmVwbGFjZSgve3tGUk9NLUZVTEx9fS9nLCBmcm9tTGluZSk7XG5cblx0XHRcdGlmICgtMSA9PT0gZnJvbUxpbmUuaW5kZXhPZignICcpICYmIDAgPCBmcm9tTGluZS5pbmRleE9mKCdAJykpIHtcblx0XHRcdFx0ZnJvbUxpbmUgPSBmcm9tTGluZS5yZXBsYWNlKC9AW1xcU10rLywgJycpO1xuXHRcdFx0fVxuXG5cdFx0XHRzaWduYXR1cmUgPSBzaWduYXR1cmUucmVwbGFjZSgve3tGUk9NfX0vZywgZnJvbUxpbmUpO1xuXHRcdH1cblxuXHRcdHNpZ25hdHVyZSA9IHNpZ25hdHVyZS5yZXBsYWNlKC9bXFxzXXsxLDJ9e3tGUk9NfX0vZywgJ3t7RlJPTX19Jyk7XG5cdFx0c2lnbmF0dXJlID0gc2lnbmF0dXJlLnJlcGxhY2UoL1tcXHNdezEsMn17e0ZST00tRlVMTH19L2csICd7e0ZST00tRlVMTH19Jyk7XG5cblx0XHRzaWduYXR1cmUgPSBzaWduYXR1cmUucmVwbGFjZSgve3tGUk9NfX0vZywgJycpO1xuXHRcdHNpZ25hdHVyZSA9IHNpZ25hdHVyZS5yZXBsYWNlKC97e0ZST00tRlVMTH19L2csICcnKTtcblxuXHRcdGlmICgtMSA8IHNpZ25hdHVyZS5pbmRleE9mKCd7e0RBVEV9fScpKSB7XG5cdFx0XHRzaWduYXR1cmUgPSBzaWduYXR1cmUucmVwbGFjZSgve3tEQVRFfX0vZywgbW9tZW50b3JGb3JtYXQoMCwgJ2xsbGwnKSk7XG5cdFx0fVxuXG5cdFx0aWYgKC0xIDwgc2lnbmF0dXJlLmluZGV4T2YoJ3t7VElNRX19JykpIHtcblx0XHRcdHNpZ25hdHVyZSA9IHNpZ25hdHVyZS5yZXBsYWNlKC97e1RJTUV9fS9nLCBtb21lbnRvckZvcm1hdCgwLCAnTFQnKSk7XG5cdFx0fVxuXHRcdGlmICgtMSA8IHNpZ25hdHVyZS5pbmRleE9mKCd7e01PTUVOVDonKSkge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0bGV0IG1hdGNoID0gbnVsbDtcblx0XHRcdFx0d2hpbGUgKG51bGwgIT09IChtYXRjaCA9IG1vbWVudFJlZ3guZXhlYyhzaWduYXR1cmUpKSkge1xuXHRcdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uZC1hc3NpZ25cblx0XHRcdFx0XHRpZiAobWF0Y2ggJiYgbWF0Y2hbMF0gJiYgbWF0Y2hbMV0pIHtcblx0XHRcdFx0XHRcdG1vbWVudHMucHVzaChbbWF0Y2hbMF0sIG1hdGNoWzFdXSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0bGltaXQgLT0gMTtcblx0XHRcdFx0XHRpZiAoMCA9PT0gbGltaXQpIHtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChtb21lbnRzICYmIDAgPCBtb21lbnRzLmxlbmd0aCkge1xuXHRcdFx0XHRcdF8uZWFjaChtb21lbnRzLCAoZGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0c2lnbmF0dXJlID0gc2lnbmF0dXJlLnJlcGxhY2UoZGF0YVswXSwgbW9tZW50b3JGb3JtYXQoMCwgZGF0YVsxXSkpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0c2lnbmF0dXJlID0gc2lnbmF0dXJlLnJlcGxhY2UoL3t7TU9NRU5UOltefV0rfX0vZywgJycpO1xuXHRcdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXHRcdH1cblxuXHRcdHJldHVybiBzaWduYXR1cmU7XG5cdH1cblxuXHRzZXRTaWduYXR1cmVGcm9tSWRlbnRpdHkoaWRlbnRpdHkpIHtcblx0XHRpZiAoaWRlbnRpdHkpIHtcblx0XHRcdHRoaXMuZWRpdG9yKChlZGl0b3IpID0+IHtcblx0XHRcdFx0bGV0IGlzSHRtbCA9IGZhbHNlLFxuXHRcdFx0XHRcdHNpZ25hdHVyZSA9IGlkZW50aXR5LnNpZ25hdHVyZSgpO1xuXG5cdFx0XHRcdGlmICgnJyAhPT0gc2lnbmF0dXJlKSB7XG5cdFx0XHRcdFx0aWYgKCc6SFRNTDonID09PSBzaWduYXR1cmUuc3Vic3RyKDAsIDYpKSB7XG5cdFx0XHRcdFx0XHRpc0h0bWwgPSB0cnVlO1xuXHRcdFx0XHRcdFx0c2lnbmF0dXJlID0gc2lnbmF0dXJlLnN1YnN0cig2KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRlZGl0b3Iuc2V0U2lnbmF0dXJlKHRoaXMuY29udmVyU2lnbmF0dXJlKHNpZ25hdHVyZSksIGlzSHRtbCwgISFpZGVudGl0eS5zaWduYXR1cmVJbnNlcnRCZWZvcmUoKSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmc9fSB0eXBlID0gQ29tcG9zZVR5cGUuRW1wdHlcblx0ICogQHBhcmFtIHs/TWVzc2FnZU1vZGVsfEFycmF5PX0gb01lc3NhZ2VPckFycmF5ID0gbnVsbFxuXHQgKiBAcGFyYW0ge0FycmF5PX0gYVRvRW1haWxzID0gbnVsbFxuXHQgKiBAcGFyYW0ge0FycmF5PX0gYUNjRW1haWxzID0gbnVsbFxuXHQgKiBAcGFyYW0ge0FycmF5PX0gYUJjY0VtYWlscyA9IG51bGxcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBzQ3VzdG9tU3ViamVjdCA9IG51bGxcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBzQ3VzdG9tUGxhaW5UZXh0ID0gbnVsbFxuXHQgKi9cblx0b25TaG93KHR5cGUsIG9NZXNzYWdlT3JBcnJheSwgYVRvRW1haWxzLCBhQ2NFbWFpbHMsIGFCY2NFbWFpbHMsIHNDdXN0b21TdWJqZWN0LCBzQ3VzdG9tUGxhaW5UZXh0KSB7XG5cdFx0cm91dGVPZmYoKTtcblxuXHRcdHRoaXMuYXV0b3NhdmVTdGFydCgpO1xuXG5cdFx0aWYgKEFwcFN0b3JlLmNvbXBvc2VJbkVkaXQoKSkge1xuXHRcdFx0dHlwZSA9IHR5cGUgfHwgQ29tcG9zZVR5cGUuRW1wdHk7XG5cdFx0XHRpZiAoQ29tcG9zZVR5cGUuRW1wdHkgIT09IHR5cGUpIHtcblx0XHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQXNrJyksIFtcblx0XHRcdFx0XHRpMThuKCdDT01QT1NFL0RJU0NBUkRfVU5TQVZFRF9EQVRBJyksXG5cdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5pbml0T25TaG93KHR5cGUsIG9NZXNzYWdlT3JBcnJheSwgYVRvRW1haWxzLCBhQ2NFbWFpbHMsIGFCY2NFbWFpbHMsIHNDdXN0b21TdWJqZWN0LCBzQ3VzdG9tUGxhaW5UZXh0KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdGZhbHNlXG5cdFx0XHRcdF0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5hZGRFbWFpbHNUbyh0aGlzLnRvLCBhVG9FbWFpbHMpO1xuXHRcdFx0XHR0aGlzLmFkZEVtYWlsc1RvKHRoaXMuY2MsIGFDY0VtYWlscyk7XG5cdFx0XHRcdHRoaXMuYWRkRW1haWxzVG8odGhpcy5iY2MsIGFCY2NFbWFpbHMpO1xuXG5cdFx0XHRcdGlmIChpc05vcm1hbChzQ3VzdG9tU3ViamVjdCkgJiYgJycgIT09IHNDdXN0b21TdWJqZWN0ICYmICcnID09PSB0aGlzLnN1YmplY3QoKSkge1xuXHRcdFx0XHRcdHRoaXMuc3ViamVjdChzQ3VzdG9tU3ViamVjdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5pbml0T25TaG93KHR5cGUsIG9NZXNzYWdlT3JBcnJheSwgYVRvRW1haWxzLCBhQ2NFbWFpbHMsIGFCY2NFbWFpbHMsIHNDdXN0b21TdWJqZWN0LCBzQ3VzdG9tUGxhaW5UZXh0KTtcblx0XHR9XG5cdH1cblxuXHRvbldhcm1VcCgpIHtcblx0XHRpZiAodGhpcy5tb2RhbFZpc2liaWxpdHkgJiYgIXRoaXMubW9kYWxWaXNpYmlsaXR5KCkpIHtcblx0XHRcdHRoaXMuZWRpdG9yKChlZGl0b3IpID0+IGVkaXRvci5tb2RlVG9nZ2xlKGZhbHNlKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZLb1ZhbHVlXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGVtYWlsc1xuXHQgKi9cblx0YWRkRW1haWxzVG8oZktvVmFsdWUsIGVtYWlscykge1xuXHRcdGlmIChpc05vbkVtcHR5QXJyYXkoZW1haWxzKSkge1xuXHRcdFx0Y29uc3QgdmFsdWUgPSB0cmltKGZLb1ZhbHVlKCkpLFxuXHRcdFx0XHR2YWx1ZXMgPSBfLnVuaXEoXy5jb21wYWN0KF8ubWFwKGVtYWlscywgKGl0ZW0pID0+IChpdGVtID8gaXRlbS50b0xpbmUoZmFsc2UpIDogbnVsbCkpKSk7XG5cblx0XHRcdGZLb1ZhbHVlKHZhbHVlICsgKCcnID09PSB2YWx1ZSA/ICcnIDogJywgJykgKyB0cmltKHZhbHVlcy5qb2luKCcsICcpKSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqXG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFMaXN0XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYkZyaWVuZGx5XG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRlbWFpbEFycmF5VG9TdHJpbmdMaW5lSGVscGVyKGFMaXN0LCBiRnJpZW5kbHkpIHtcblx0XHRiRnJpZW5kbHkgPSAhIWJGcmllbmRseTtcblx0XHRyZXR1cm4gXy5tYXAoYUxpc3QsIChpdGVtKSA9PiBpdGVtLnRvTGluZShiRnJpZW5kbHkpKS5qb2luKCcsICcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gc1R5cGUgPSBDb21wb3NlVHlwZS5FbXB0eVxuXHQgKiBAcGFyYW0gez9NZXNzYWdlTW9kZWx8QXJyYXk9fSBvTWVzc2FnZU9yQXJyYXkgPSBudWxsXG5cdCAqIEBwYXJhbSB7QXJyYXk9fSBhVG9FbWFpbHMgPSBudWxsXG5cdCAqIEBwYXJhbSB7QXJyYXk9fSBhQ2NFbWFpbHMgPSBudWxsXG5cdCAqIEBwYXJhbSB7QXJyYXk9fSBhQmNjRW1haWxzID0gbnVsbFxuXHQgKiBAcGFyYW0ge3N0cmluZz19IHNDdXN0b21TdWJqZWN0ID0gbnVsbFxuXHQgKiBAcGFyYW0ge3N0cmluZz19IHNDdXN0b21QbGFpblRleHQgPSBudWxsXG5cdCAqL1xuXHRpbml0T25TaG93KHNUeXBlLCBvTWVzc2FnZU9yQXJyYXksIGFUb0VtYWlscywgYUNjRW1haWxzLCBhQmNjRW1haWxzLCBzQ3VzdG9tU3ViamVjdCwgc0N1c3RvbVBsYWluVGV4dCkge1xuXHRcdEFwcFN0b3JlLmNvbXBvc2VJbkVkaXQodHJ1ZSk7XG5cblx0XHRsZXQgc0Zyb20gPSAnJyxcblx0XHRcdHNUbyA9ICcnLFxuXHRcdFx0c0NjID0gJycsXG5cdFx0XHRzRGF0ZSA9ICcnLFxuXHRcdFx0c1N1YmplY3QgPSAnJyxcblx0XHRcdHNUZXh0ID0gJycsXG5cdFx0XHRzUmVwbHlUaXRsZSA9ICcnLFxuXHRcdFx0aWRlbnRpdHkgPSBudWxsLFxuXHRcdFx0YURyYWZ0SW5mbyA9IG51bGwsXG5cdFx0XHRtZXNzYWdlID0gbnVsbDtcblxuXHRcdGNvbnN0IGV4Y2x1ZGVFbWFpbCA9IHt9LFxuXHRcdFx0bUVtYWlsID0gQWNjb3VudFN0b3JlLmVtYWlsKCksXG5cdFx0XHRsaW5lQ29tcG9zZVR5cGUgPSBzVHlwZSB8fCBDb21wb3NlVHlwZS5FbXB0eTtcblxuXHRcdG9NZXNzYWdlT3JBcnJheSA9IG9NZXNzYWdlT3JBcnJheSB8fCBudWxsO1xuXHRcdGlmIChvTWVzc2FnZU9yQXJyYXkgJiYgaXNOb3JtYWwob01lc3NhZ2VPckFycmF5KSkge1xuXHRcdFx0bWVzc2FnZSA9XG5cdFx0XHRcdGlzQXJyYXkob01lc3NhZ2VPckFycmF5KSAmJiAxID09PSBvTWVzc2FnZU9yQXJyYXkubGVuZ3RoXG5cdFx0XHRcdFx0PyBvTWVzc2FnZU9yQXJyYXlbMF1cblx0XHRcdFx0XHQ6ICFpc0FycmF5KG9NZXNzYWdlT3JBcnJheSlcblx0XHRcdFx0XHQ/IG9NZXNzYWdlT3JBcnJheVxuXHRcdFx0XHRcdDogbnVsbDtcblx0XHR9XG5cblx0XHR0aGlzLm9MYXN0TWVzc2FnZSA9IG1lc3NhZ2U7XG5cblx0XHRpZiAobnVsbCAhPT0gbUVtYWlsKSB7XG5cdFx0XHRleGNsdWRlRW1haWxbbUVtYWlsXSA9IHRydWU7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZXNldCgpO1xuXG5cdFx0aWRlbnRpdHkgPSB0aGlzLmZpbmRJZGVudGl0eUJ5TWVzc2FnZShsaW5lQ29tcG9zZVR5cGUsIG1lc3NhZ2UpO1xuXHRcdGlmIChpZGVudGl0eSkge1xuXHRcdFx0ZXhjbHVkZUVtYWlsW2lkZW50aXR5LmVtYWlsKCldID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoaXNOb25FbXB0eUFycmF5KGFUb0VtYWlscykpIHtcblx0XHRcdHRoaXMudG8odGhpcy5lbWFpbEFycmF5VG9TdHJpbmdMaW5lSGVscGVyKGFUb0VtYWlscykpO1xuXHRcdH1cblxuXHRcdGlmIChpc05vbkVtcHR5QXJyYXkoYUNjRW1haWxzKSkge1xuXHRcdFx0dGhpcy5jYyh0aGlzLmVtYWlsQXJyYXlUb1N0cmluZ0xpbmVIZWxwZXIoYUNjRW1haWxzKSk7XG5cdFx0fVxuXG5cdFx0aWYgKGlzTm9uRW1wdHlBcnJheShhQmNjRW1haWxzKSkge1xuXHRcdFx0dGhpcy5iY2ModGhpcy5lbWFpbEFycmF5VG9TdHJpbmdMaW5lSGVscGVyKGFCY2NFbWFpbHMpKTtcblx0XHR9XG5cblx0XHRpZiAoJycgIT09IGxpbmVDb21wb3NlVHlwZSAmJiBtZXNzYWdlKSB7XG5cdFx0XHRzRGF0ZSA9IG1vbWVudG9yRm9ybWF0KG1lc3NhZ2UuZGF0ZVRpbWVTdGFtcEluVVRDKCksICdGVUxMJyk7XG5cdFx0XHRzU3ViamVjdCA9IG1lc3NhZ2Uuc3ViamVjdCgpO1xuXHRcdFx0YURyYWZ0SW5mbyA9IG1lc3NhZ2UuYURyYWZ0SW5mbztcblxuXHRcdFx0Y29uc3QgY2xvbmVkVGV4dCA9ICQobWVzc2FnZS5ib2R5KS5jbG9uZSgpO1xuXHRcdFx0aWYgKGNsb25lZFRleHQpIHtcblx0XHRcdFx0Y2xlYXJCcVN3aXRjaGVyKGNsb25lZFRleHQpO1xuXG5cdFx0XHRcdHNUZXh0ID0gY2xvbmVkVGV4dC5odG1sKCk7XG5cdFx0XHR9XG5cblx0XHRcdGxldCByZXNwbHlBbGxQYXJ0cyA9IG51bGw7XG5cdFx0XHRzd2l0Y2ggKGxpbmVDb21wb3NlVHlwZSkge1xuXHRcdFx0XHRjYXNlIENvbXBvc2VUeXBlLkVtcHR5OlxuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuUmVwbHk6XG5cdFx0XHRcdFx0dGhpcy50byh0aGlzLmVtYWlsQXJyYXlUb1N0cmluZ0xpbmVIZWxwZXIobWVzc2FnZS5yZXBseUVtYWlscyhleGNsdWRlRW1haWwpKSk7XG5cdFx0XHRcdFx0dGhpcy5zdWJqZWN0KHJlcGx5U3ViamVjdEFkZCgnUmUnLCBzU3ViamVjdCkpO1xuXHRcdFx0XHRcdHRoaXMucHJlcGVhck1lc3NhZ2VBdHRhY2htZW50cyhtZXNzYWdlLCBsaW5lQ29tcG9zZVR5cGUpO1xuXHRcdFx0XHRcdHRoaXMuYURyYWZ0SW5mbyA9IFsncmVwbHknLCBtZXNzYWdlLnVpZCwgbWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhd107XG5cdFx0XHRcdFx0dGhpcy5zSW5SZXBseVRvID0gbWVzc2FnZS5zTWVzc2FnZUlkO1xuXHRcdFx0XHRcdHRoaXMuc1JlZmVyZW5jZXMgPSB0cmltKHRoaXMuc0luUmVwbHlUbyArICcgJyArIG1lc3NhZ2Uuc1JlZmVyZW5jZXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuUmVwbHlBbGw6XG5cdFx0XHRcdFx0cmVzcGx5QWxsUGFydHMgPSBtZXNzYWdlLnJlcGx5QWxsRW1haWxzKGV4Y2x1ZGVFbWFpbCk7XG5cdFx0XHRcdFx0dGhpcy50byh0aGlzLmVtYWlsQXJyYXlUb1N0cmluZ0xpbmVIZWxwZXIocmVzcGx5QWxsUGFydHNbMF0pKTtcblx0XHRcdFx0XHR0aGlzLmNjKHRoaXMuZW1haWxBcnJheVRvU3RyaW5nTGluZUhlbHBlcihyZXNwbHlBbGxQYXJ0c1sxXSkpO1xuXHRcdFx0XHRcdHRoaXMuc3ViamVjdChyZXBseVN1YmplY3RBZGQoJ1JlJywgc1N1YmplY3QpKTtcblx0XHRcdFx0XHR0aGlzLnByZXBlYXJNZXNzYWdlQXR0YWNobWVudHMobWVzc2FnZSwgbGluZUNvbXBvc2VUeXBlKTtcblx0XHRcdFx0XHR0aGlzLmFEcmFmdEluZm8gPSBbJ3JlcGx5JywgbWVzc2FnZS51aWQsIG1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXddO1xuXHRcdFx0XHRcdHRoaXMuc0luUmVwbHlUbyA9IG1lc3NhZ2Uuc01lc3NhZ2VJZDtcblx0XHRcdFx0XHR0aGlzLnNSZWZlcmVuY2VzID0gdHJpbSh0aGlzLnNJblJlcGx5VG8gKyAnICcgKyBtZXNzYWdlLnJlZmVyZW5jZXMoKSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBDb21wb3NlVHlwZS5Gb3J3YXJkOlxuXHRcdFx0XHRcdHRoaXMuc3ViamVjdChyZXBseVN1YmplY3RBZGQoJ0Z3ZCcsIHNTdWJqZWN0KSk7XG5cdFx0XHRcdFx0dGhpcy5wcmVwZWFyTWVzc2FnZUF0dGFjaG1lbnRzKG1lc3NhZ2UsIGxpbmVDb21wb3NlVHlwZSk7XG5cdFx0XHRcdFx0dGhpcy5hRHJhZnRJbmZvID0gWydmb3J3YXJkJywgbWVzc2FnZS51aWQsIG1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXddO1xuXHRcdFx0XHRcdHRoaXMuc0luUmVwbHlUbyA9IG1lc3NhZ2Uuc01lc3NhZ2VJZDtcblx0XHRcdFx0XHR0aGlzLnNSZWZlcmVuY2VzID0gdHJpbSh0aGlzLnNJblJlcGx5VG8gKyAnICcgKyBtZXNzYWdlLnNSZWZlcmVuY2VzKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIENvbXBvc2VUeXBlLkZvcndhcmRBc0F0dGFjaG1lbnQ6XG5cdFx0XHRcdFx0dGhpcy5zdWJqZWN0KHJlcGx5U3ViamVjdEFkZCgnRndkJywgc1N1YmplY3QpKTtcblx0XHRcdFx0XHR0aGlzLnByZXBlYXJNZXNzYWdlQXR0YWNobWVudHMobWVzc2FnZSwgbGluZUNvbXBvc2VUeXBlKTtcblx0XHRcdFx0XHR0aGlzLmFEcmFmdEluZm8gPSBbJ2ZvcndhcmQnLCBtZXNzYWdlLnVpZCwgbWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhd107XG5cdFx0XHRcdFx0dGhpcy5zSW5SZXBseVRvID0gbWVzc2FnZS5zTWVzc2FnZUlkO1xuXHRcdFx0XHRcdHRoaXMuc1JlZmVyZW5jZXMgPSB0cmltKHRoaXMuc0luUmVwbHlUbyArICcgJyArIG1lc3NhZ2Uuc1JlZmVyZW5jZXMpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuRHJhZnQ6XG5cdFx0XHRcdFx0dGhpcy50byh0aGlzLmVtYWlsQXJyYXlUb1N0cmluZ0xpbmVIZWxwZXIobWVzc2FnZS50bykpO1xuXHRcdFx0XHRcdHRoaXMuY2ModGhpcy5lbWFpbEFycmF5VG9TdHJpbmdMaW5lSGVscGVyKG1lc3NhZ2UuY2MpKTtcblx0XHRcdFx0XHR0aGlzLmJjYyh0aGlzLmVtYWlsQXJyYXlUb1N0cmluZ0xpbmVIZWxwZXIobWVzc2FnZS5iY2MpKTtcblx0XHRcdFx0XHR0aGlzLnJlcGx5VG8odGhpcy5lbWFpbEFycmF5VG9TdHJpbmdMaW5lSGVscGVyKG1lc3NhZ2UucmVwbHlUbykpO1xuXG5cdFx0XHRcdFx0dGhpcy5iRnJvbURyYWZ0ID0gdHJ1ZTtcblxuXHRcdFx0XHRcdHRoaXMuZHJhZnRGb2xkZXIobWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdyk7XG5cdFx0XHRcdFx0dGhpcy5kcmFmdFVpZChtZXNzYWdlLnVpZCk7XG5cblx0XHRcdFx0XHR0aGlzLnN1YmplY3Qoc1N1YmplY3QpO1xuXHRcdFx0XHRcdHRoaXMucHJlcGVhck1lc3NhZ2VBdHRhY2htZW50cyhtZXNzYWdlLCBsaW5lQ29tcG9zZVR5cGUpO1xuXG5cdFx0XHRcdFx0dGhpcy5hRHJhZnRJbmZvID0gaXNOb25FbXB0eUFycmF5KGFEcmFmdEluZm8pICYmIDMgPT09IGFEcmFmdEluZm8ubGVuZ3RoID8gYURyYWZ0SW5mbyA6IG51bGw7XG5cdFx0XHRcdFx0dGhpcy5zSW5SZXBseVRvID0gbWVzc2FnZS5zSW5SZXBseVRvO1xuXHRcdFx0XHRcdHRoaXMuc1JlZmVyZW5jZXMgPSBtZXNzYWdlLnNSZWZlcmVuY2VzO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuRWRpdEFzTmV3OlxuXHRcdFx0XHRcdHRoaXMudG8odGhpcy5lbWFpbEFycmF5VG9TdHJpbmdMaW5lSGVscGVyKG1lc3NhZ2UudG8pKTtcblx0XHRcdFx0XHR0aGlzLmNjKHRoaXMuZW1haWxBcnJheVRvU3RyaW5nTGluZUhlbHBlcihtZXNzYWdlLmNjKSk7XG5cdFx0XHRcdFx0dGhpcy5iY2ModGhpcy5lbWFpbEFycmF5VG9TdHJpbmdMaW5lSGVscGVyKG1lc3NhZ2UuYmNjKSk7XG5cdFx0XHRcdFx0dGhpcy5yZXBseVRvKHRoaXMuZW1haWxBcnJheVRvU3RyaW5nTGluZUhlbHBlcihtZXNzYWdlLnJlcGx5VG8pKTtcblxuXHRcdFx0XHRcdHRoaXMuc3ViamVjdChzU3ViamVjdCk7XG5cdFx0XHRcdFx0dGhpcy5wcmVwZWFyTWVzc2FnZUF0dGFjaG1lbnRzKG1lc3NhZ2UsIGxpbmVDb21wb3NlVHlwZSk7XG5cblx0XHRcdFx0XHR0aGlzLmFEcmFmdEluZm8gPSBpc05vbkVtcHR5QXJyYXkoYURyYWZ0SW5mbykgJiYgMyA9PT0gYURyYWZ0SW5mby5sZW5ndGggPyBhRHJhZnRJbmZvIDogbnVsbDtcblx0XHRcdFx0XHR0aGlzLnNJblJlcGx5VG8gPSBtZXNzYWdlLnNJblJlcGx5VG87XG5cdFx0XHRcdFx0dGhpcy5zUmVmZXJlbmNlcyA9IG1lc3NhZ2Uuc1JlZmVyZW5jZXM7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdH1cblxuXHRcdFx0c3dpdGNoIChsaW5lQ29tcG9zZVR5cGUpIHtcblx0XHRcdFx0Y2FzZSBDb21wb3NlVHlwZS5SZXBseTpcblx0XHRcdFx0Y2FzZSBDb21wb3NlVHlwZS5SZXBseUFsbDpcblx0XHRcdFx0XHRzRnJvbSA9IG1lc3NhZ2UuZnJvbVRvTGluZShmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0c1JlcGx5VGl0bGUgPSBpMThuKCdDT01QT1NFL1JFUExZX01FU1NBR0VfVElUTEUnLCB7XG5cdFx0XHRcdFx0XHQnREFURVRJTUUnOiBzRGF0ZSxcblx0XHRcdFx0XHRcdCdFTUFJTCc6IHNGcm9tXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRzVGV4dCA9ICc8YnIgLz48YnIgLz4nICsgc1JlcGx5VGl0bGUgKyAnOicgKyAnPGJyIC8+PGJyIC8+JyArICc8YmxvY2txdW90ZT4nICsgdHJpbShzVGV4dCkgKyAnPC9ibG9ja3F1b3RlPic7XG5cblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIENvbXBvc2VUeXBlLkZvcndhcmQ6XG5cdFx0XHRcdFx0c0Zyb20gPSBtZXNzYWdlLmZyb21Ub0xpbmUoZmFsc2UsIHRydWUpO1xuXHRcdFx0XHRcdHNUbyA9IG1lc3NhZ2UudG9Ub0xpbmUoZmFsc2UsIHRydWUpO1xuXHRcdFx0XHRcdHNDYyA9IG1lc3NhZ2UuY2NUb0xpbmUoZmFsc2UsIHRydWUpO1xuXHRcdFx0XHRcdHNUZXh0ID1cblx0XHRcdFx0XHRcdCc8YnIgLz48YnIgLz4nICtcblx0XHRcdFx0XHRcdGkxOG4oJ0NPTVBPU0UvRk9SV0FSRF9NRVNTQUdFX1RPUF9USVRMRScpICtcblx0XHRcdFx0XHRcdCc8YnIgLz4nICtcblx0XHRcdFx0XHRcdGkxOG4oJ0NPTVBPU0UvRk9SV0FSRF9NRVNTQUdFX1RPUF9GUk9NJykgK1xuXHRcdFx0XHRcdFx0JzogJyArXG5cdFx0XHRcdFx0XHRzRnJvbSArXG5cdFx0XHRcdFx0XHQnPGJyIC8+JyArXG5cdFx0XHRcdFx0XHRpMThuKCdDT01QT1NFL0ZPUldBUkRfTUVTU0FHRV9UT1BfVE8nKSArXG5cdFx0XHRcdFx0XHQnOiAnICtcblx0XHRcdFx0XHRcdHNUbyArXG5cdFx0XHRcdFx0XHQoMCA8IHNDYy5sZW5ndGggPyAnPGJyIC8+JyArIGkxOG4oJ0NPTVBPU0UvRk9SV0FSRF9NRVNTQUdFX1RPUF9DQycpICsgJzogJyArIHNDYyA6ICcnKSArXG5cdFx0XHRcdFx0XHQnPGJyIC8+JyArXG5cdFx0XHRcdFx0XHRpMThuKCdDT01QT1NFL0ZPUldBUkRfTUVTU0FHRV9UT1BfU0VOVCcpICtcblx0XHRcdFx0XHRcdCc6ICcgK1xuXHRcdFx0XHRcdFx0ZW5jb2RlSHRtbChzRGF0ZSkgK1xuXHRcdFx0XHRcdFx0JzxiciAvPicgK1xuXHRcdFx0XHRcdFx0aTE4bignQ09NUE9TRS9GT1JXQVJEX01FU1NBR0VfVE9QX1NVQkpFQ1QnKSArXG5cdFx0XHRcdFx0XHQnOiAnICtcblx0XHRcdFx0XHRcdGVuY29kZUh0bWwoc1N1YmplY3QpICtcblx0XHRcdFx0XHRcdCc8YnIgLz48YnIgLz4nICtcblx0XHRcdFx0XHRcdHRyaW0oc1RleHQpICtcblx0XHRcdFx0XHRcdCc8YnIgLz48YnIgLz4nO1xuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuRm9yd2FyZEFzQXR0YWNobWVudDpcblx0XHRcdFx0XHRzVGV4dCA9ICcnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZWRpdG9yKChlZGl0b3IpID0+IHtcblx0XHRcdFx0ZWRpdG9yLnNldEh0bWwoc1RleHQsIGZhbHNlKTtcblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0RWRpdG9yRGVmYXVsdFR5cGUuUGxhaW5Gb3JjZWQgPT09IHRoaXMuZWRpdG9yRGVmYXVsdFR5cGUoKSB8fFxuXHRcdFx0XHRcdCghbWVzc2FnZS5pc0h0bWwoKSAmJiBFZGl0b3JEZWZhdWx0VHlwZS5IdG1sRm9yY2VkICE9PSB0aGlzLmVkaXRvckRlZmF1bHRUeXBlKCkpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdGVkaXRvci5tb2RlVG9nZ2xlKGZhbHNlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChpZGVudGl0eSAmJiBDb21wb3NlVHlwZS5EcmFmdCAhPT0gbGluZUNvbXBvc2VUeXBlICYmIENvbXBvc2VUeXBlLkVkaXRBc05ldyAhPT0gbGluZUNvbXBvc2VUeXBlKSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTaWduYXR1cmVGcm9tSWRlbnRpdHkoaWRlbnRpdHkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5zZXRGb2N1c0luUG9wdXAoKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAoQ29tcG9zZVR5cGUuRW1wdHkgPT09IGxpbmVDb21wb3NlVHlwZSkge1xuXHRcdFx0dGhpcy5zdWJqZWN0KGlzTm9ybWFsKHNDdXN0b21TdWJqZWN0KSA/ICcnICsgc0N1c3RvbVN1YmplY3QgOiAnJyk7XG5cblx0XHRcdHNUZXh0ID0gaXNOb3JtYWwoc0N1c3RvbVBsYWluVGV4dCkgPyAnJyArIHNDdXN0b21QbGFpblRleHQgOiAnJztcblxuXHRcdFx0dGhpcy5lZGl0b3IoKGVkaXRvcikgPT4ge1xuXHRcdFx0XHRlZGl0b3Iuc2V0SHRtbChzVGV4dCwgZmFsc2UpO1xuXG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHRFZGl0b3JEZWZhdWx0VHlwZS5IdG1sICE9PSB0aGlzLmVkaXRvckRlZmF1bHRUeXBlKCkgJiZcblx0XHRcdFx0XHRFZGl0b3JEZWZhdWx0VHlwZS5IdG1sRm9yY2VkICE9PSB0aGlzLmVkaXRvckRlZmF1bHRUeXBlKClcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0ZWRpdG9yLm1vZGVUb2dnbGUoZmFsc2UpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGlkZW50aXR5KSB7XG5cdFx0XHRcdFx0dGhpcy5zZXRTaWduYXR1cmVGcm9tSWRlbnRpdHkoaWRlbnRpdHkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5zZXRGb2N1c0luUG9wdXAoKTtcblx0XHRcdH0pO1xuXHRcdH0gZWxzZSBpZiAoaXNOb25FbXB0eUFycmF5KG9NZXNzYWdlT3JBcnJheSkpIHtcblx0XHRcdF8uZWFjaChvTWVzc2FnZU9yQXJyYXksIChpdGVtKSA9PiB7XG5cdFx0XHRcdHRoaXMuYWRkTWVzc2FnZUFzQXR0YWNobWVudChpdGVtKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmVkaXRvcigoZWRpdG9yKSA9PiB7XG5cdFx0XHRcdGVkaXRvci5zZXRIdG1sKCcnLCBmYWxzZSk7XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdEVkaXRvckRlZmF1bHRUeXBlLkh0bWwgIT09IHRoaXMuZWRpdG9yRGVmYXVsdFR5cGUoKSAmJlxuXHRcdFx0XHRcdEVkaXRvckRlZmF1bHRUeXBlLkh0bWxGb3JjZWQgIT09IHRoaXMuZWRpdG9yRGVmYXVsdFR5cGUoKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRlZGl0b3IubW9kZVRvZ2dsZShmYWxzZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaWRlbnRpdHkgJiYgQ29tcG9zZVR5cGUuRHJhZnQgIT09IGxpbmVDb21wb3NlVHlwZSAmJiBDb21wb3NlVHlwZS5FZGl0QXNOZXcgIT09IGxpbmVDb21wb3NlVHlwZSkge1xuXHRcdFx0XHRcdHRoaXMuc2V0U2lnbmF0dXJlRnJvbUlkZW50aXR5KGlkZW50aXR5KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuc2V0Rm9jdXNJblBvcHVwKCk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRGb2N1c0luUG9wdXAoKTtcblx0XHR9XG5cblx0XHRjb25zdCBkb3dubG9hZHMgPSB0aGlzLmdldEF0dGFjaG1lbnRzRG93bmxvYWRzRm9yVXBsb2FkKCk7XG5cdFx0aWYgKGlzTm9uRW1wdHlBcnJheShkb3dubG9hZHMpKSB7XG5cdFx0XHRSZW1vdGUubWVzc2FnZVVwbG9hZEF0dGFjaG1lbnRzKHRoaXMub25NZXNzYWdlVXBsb2FkQXR0YWNobWVudHMsIGRvd25sb2Fkcyk7XG5cdFx0fVxuXG5cdFx0aWYgKGlkZW50aXR5KSB7XG5cdFx0XHR0aGlzLmN1cnJlbnRJZGVudGl0eShpZGVudGl0eSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5yZXNpemVyVHJpZ2dlcigpO1xuXHR9XG5cblx0b25NZXNzYWdlVXBsb2FkQXR0YWNobWVudHMoc1Jlc3VsdCwgb0RhdGEpIHtcblx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gc1Jlc3VsdCAmJiBvRGF0YSAmJiBvRGF0YS5SZXN1bHQpIHtcblx0XHRcdGlmICghdGhpcy52aWV3TW9kZWxWaXNpYmlsaXR5KCkpIHtcblx0XHRcdFx0Xy5lYWNoKG9EYXRhLlJlc3VsdCwgKGlkLCB0ZW1wTmFtZSkgPT4ge1xuXHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSB0aGlzLmdldEF0dGFjaG1lbnRCeUlkKGlkKTtcblx0XHRcdFx0XHRpZiAoYXR0YWNobWVudCkge1xuXHRcdFx0XHRcdFx0YXR0YWNobWVudC50ZW1wTmFtZSh0ZW1wTmFtZSk7XG5cdFx0XHRcdFx0XHRhdHRhY2htZW50XG5cdFx0XHRcdFx0XHRcdC53YWl0aW5nKGZhbHNlKVxuXHRcdFx0XHRcdFx0XHQudXBsb2FkaW5nKGZhbHNlKVxuXHRcdFx0XHRcdFx0XHQuY29tcGxldGUodHJ1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5zZXRNZXNzYWdlQXR0YWNobWVudEZhaWxlZERvd25sb2FkVGV4dCgpO1xuXHRcdH1cblx0fVxuXG5cdHNldEZvY3VzSW5Qb3B1cCgpIHtcblx0XHRpZiAoIWJNb2JpbGVEZXZpY2UpIHtcblx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRpZiAoJycgPT09IHRoaXMudG8oKSkge1xuXHRcdFx0XHRcdHRoaXMudG8uZm9jdXNlZCh0cnVlKTtcblx0XHRcdFx0fSBlbHNlIGlmICh0aGlzLm9FZGl0b3IpIHtcblx0XHRcdFx0XHRpZiAoIXRoaXMudG8uZm9jdXNlZCgpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9FZGl0b3IuZm9jdXMoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sIE1hZ2ljcy5UaW1lMTAwbXMpO1xuXHRcdH1cblx0fVxuXG5cdG9uU2hvd1dpdGhEZWxheSgpIHtcblx0XHR0aGlzLnJlc2l6ZXJUcmlnZ2VyKCk7XG5cdH1cblxuXHR0cnlUb0Nsb3NlUG9wdXAoKSB7XG5cdFx0Y29uc3QgUG9wdXBzQXNrVmlld01vZGVsID0gcmVxdWlyZSgnVmlldy9Qb3B1cC9Bc2snKTtcblx0XHRpZiAoIWlzUG9wdXBWaXNpYmxlKFBvcHVwc0Fza1ZpZXdNb2RlbCkgJiYgdGhpcy5tb2RhbFZpc2liaWxpdHkoKSkge1xuXHRcdFx0aWYgKHRoaXMuYlNraXBOZXh0SGlkZSB8fCAodGhpcy5pc0VtcHR5Rm9ybSgpICYmICF0aGlzLmRyYWZ0VWlkKCkpKSB7XG5cdFx0XHRcdGRlbGVnYXRlUnVuKHRoaXMsICdjbG9zZUNvbW1hbmQnKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNob3dTY3JlZW5Qb3B1cChQb3B1cHNBc2tWaWV3TW9kZWwsIFtcblx0XHRcdFx0XHRpMThuKCdQT1BVUFNfQVNLL0RFU0NfV0FOVF9DTE9TRV9USElTX1dJTkRPVycpLFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLm1vZGFsVmlzaWJpbGl0eSgpKSB7XG5cdFx0XHRcdFx0XHRcdGRlbGVnYXRlUnVuKHRoaXMsICdjbG9zZUNvbW1hbmQnKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdF0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdG9uQnVpbGQoKSB7XG5cdFx0dGhpcy5pbml0VXBsb2FkZXIoKTtcblxuXHRcdGtleSgnY3RybCtxLCBjb21tYW5kK3EsIGN0cmwrdywgY29tbWFuZCt3JywgS2V5U3RhdGUuQ29tcG9zZSwgbm9vcEZhbHNlKTtcblxuXHRcdGtleSgnYCcsIEtleVN0YXRlLkNvbXBvc2UsICgpID0+IHtcblx0XHRcdGlmICh0aGlzLm9FZGl0b3IgJiYgIXRoaXMub0VkaXRvci5oYXNGb2N1cygpICYmICFpbkZvY3VzKCkpIHtcblx0XHRcdFx0dGhpcy5pZGVudGl0aWVzRHJvcGRvd25UcmlnZ2VyKHRydWUpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0pO1xuXG5cdFx0a2V5KCdjdHJsK2AnLCBLZXlTdGF0ZS5Db21wb3NlLCAoKSA9PiB7XG5cdFx0XHR0aGlzLmlkZW50aXRpZXNEcm9wZG93blRyaWdnZXIodHJ1ZSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRrZXkoJ2VzYywgY3RybCtkb3duLCBjb21tYW5kK2Rvd24nLCBLZXlTdGF0ZS5Db21wb3NlLCAoKSA9PiB7XG5cdFx0XHR0aGlzLnNraXBDb21tYW5kKCk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRpZiAodGhpcy5hbGxvd0ZvbGRlcnMpIHtcblx0XHRcdGtleSgnY3RybCtzLCBjb21tYW5kK3MnLCBLZXlTdGF0ZS5Db21wb3NlLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuc2F2ZUNvbW1hbmQoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKFNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdhbGxvd0N0cmxFbnRlck9uQ29tcG9zZScpKSB7XG5cdFx0XHRrZXkoJ2N0cmwrZW50ZXIsIGNvbW1hbmQrZW50ZXInLCBLZXlTdGF0ZS5Db21wb3NlLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuc2VuZENvbW1hbmQoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0a2V5KCdzaGlmdCtlc2MnLCBLZXlTdGF0ZS5Db21wb3NlLCAoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5tb2RhbFZpc2liaWxpdHkoKSkge1xuXHRcdFx0XHR0aGlzLnRyeVRvQ2xvc2VQb3B1cCgpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0RXZlbnRzLnN1Yignd2luZG93LnJlc2l6ZS5yZWFsJywgdGhpcy5yZXNpemVyVHJpZ2dlcik7XG5cdFx0RXZlbnRzLnN1Yignd2luZG93LnJlc2l6ZS5yZWFsJywgXy5kZWJvdW5jZSh0aGlzLnJlc2l6ZXJUcmlnZ2VyLCBNYWdpY3MuVGltZTUwbXMpKTtcblxuXHRcdFNvY2lhbFN0b3JlLmFwcGVuZERyb3Bib3goKTtcblxuXHRcdGlmICh0aGlzLmRyaXZlRW5hYmxlZCgpKSB7XG5cdFx0XHQkLmdldFNjcmlwdCgnaHR0cHM6Ly9hcGlzLmdvb2dsZS5jb20vanMvYXBpLmpzJywgKCkgPT4ge1xuXHRcdFx0XHRpZiAod2luZG93LmdhcGkpIHtcblx0XHRcdFx0XHR0aGlzLmRyaXZlVmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0d2luZG93LnNldEludGVydmFsKCgpID0+IHtcblx0XHRcdGlmICh0aGlzLm1vZGFsVmlzaWJpbGl0eSgpICYmIHRoaXMub0VkaXRvcikge1xuXHRcdFx0XHR0aGlzLm9FZGl0b3IucmVzaXplKCk7XG5cdFx0XHR9XG5cdFx0fSwgTWFnaWNzLlRpbWU1cyk7XG5cdH1cblxuXHRkcml2ZUNhbGxiYWNrKGFjY2Vzc1Rva2VuLCBkYXRhKSB7XG5cdFx0aWYgKFxuXHRcdFx0ZGF0YSAmJlxuXHRcdFx0d2luZG93LlhNTEh0dHBSZXF1ZXN0ICYmXG5cdFx0XHR3aW5kb3cuZ29vZ2xlICYmXG5cdFx0XHRkYXRhW3dpbmRvdy5nb29nbGUucGlja2VyLlJlc3BvbnNlLkFDVElPTl0gPT09IHdpbmRvdy5nb29nbGUucGlja2VyLkFjdGlvbi5QSUNLRUQgJiZcblx0XHRcdGRhdGFbd2luZG93Lmdvb2dsZS5waWNrZXIuUmVzcG9uc2UuRE9DVU1FTlRTXSAmJlxuXHRcdFx0ZGF0YVt3aW5kb3cuZ29vZ2xlLnBpY2tlci5SZXNwb25zZS5ET0NVTUVOVFNdWzBdICYmXG5cdFx0XHRkYXRhW3dpbmRvdy5nb29nbGUucGlja2VyLlJlc3BvbnNlLkRPQ1VNRU5UU11bMF0uaWRcblx0XHQpIHtcblx0XHRcdGNvbnN0IHJlcXVlc3QgPSBuZXcgd2luZG93LlhNTEh0dHBSZXF1ZXN0KCk7XG5cdFx0XHRyZXF1ZXN0Lm9wZW4oXG5cdFx0XHRcdCdHRVQnLFxuXHRcdFx0XHQnaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vZHJpdmUvdjIvZmlsZXMvJyArIGRhdGFbd2luZG93Lmdvb2dsZS5waWNrZXIuUmVzcG9uc2UuRE9DVU1FTlRTXVswXS5pZFxuXHRcdFx0KTtcblx0XHRcdHJlcXVlc3Quc2V0UmVxdWVzdEhlYWRlcignQXV0aG9yaXphdGlvbicsICdCZWFyZXIgJyArIGFjY2Vzc1Rva2VuKTtcblx0XHRcdHJlcXVlc3QuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsICgpID0+IHtcblx0XHRcdFx0aWYgKHJlcXVlc3QgJiYgcmVxdWVzdC5yZXNwb25zZVRleHQpIHtcblx0XHRcdFx0XHRjb25zdCByZXNwb25zZSA9IHdpbmRvdy5KU09OLnBhcnNlKHJlcXVlc3QucmVzcG9uc2VUZXh0KSxcblx0XHRcdFx0XHRcdGZFeHBvcnQgPSAoaXRlbSwgbWltZVR5cGUsIGV4dCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAoaXRlbSAmJiBpdGVtLmV4cG9ydExpbmtzKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGl0ZW0uZXhwb3J0TGlua3NbbWltZVR5cGVdKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZS5kb3dubG9hZFVybCA9IGl0ZW0uZXhwb3J0TGlua3NbbWltZVR5cGVdO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2UudGl0bGUgPSBpdGVtLnRpdGxlICsgJy4nICsgZXh0O1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2UubWltZVR5cGUgPSBtaW1lVHlwZTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGl0ZW0uZXhwb3J0TGlua3NbJ2FwcGxpY2F0aW9uL3BkZiddKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXNwb25zZS5kb3dubG9hZFVybCA9IGl0ZW0uZXhwb3J0TGlua3NbJ2FwcGxpY2F0aW9uL3BkZiddO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2UudGl0bGUgPSBpdGVtLnRpdGxlICsgJy5wZGYnO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzcG9uc2UubWltZVR5cGUgPSAnYXBwbGljYXRpb24vcGRmJztcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRpZiAocmVzcG9uc2UgJiYgIXJlc3BvbnNlLmRvd25sb2FkVXJsICYmIHJlc3BvbnNlLm1pbWVUeXBlICYmIHJlc3BvbnNlLmV4cG9ydExpbmtzKSB7XG5cdFx0XHRcdFx0XHRzd2l0Y2ggKHJlc3BvbnNlLm1pbWVUeXBlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSkge1xuXHRcdFx0XHRcdFx0XHRjYXNlICdhcHBsaWNhdGlvbi92bmQuZ29vZ2xlLWFwcHMuZG9jdW1lbnQnOlxuXHRcdFx0XHRcdFx0XHRcdGZFeHBvcnQocmVzcG9uc2UsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsICdkb2N4Jyk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5zcHJlYWRzaGVldCc6XG5cdFx0XHRcdFx0XHRcdFx0ZkV4cG9ydChyZXNwb25zZSwgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0JywgJ3hsc3gnKTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0Y2FzZSAnYXBwbGljYXRpb24vdm5kLmdvb2dsZS1hcHBzLmRyYXdpbmcnOlxuXHRcdFx0XHRcdFx0XHRcdGZFeHBvcnQocmVzcG9uc2UsICdpbWFnZS9wbmcnLCAncG5nJyk7XG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdGNhc2UgJ2FwcGxpY2F0aW9uL3ZuZC5nb29nbGUtYXBwcy5wcmVzZW50YXRpb24nOlxuXHRcdFx0XHRcdFx0XHRcdGZFeHBvcnQocmVzcG9uc2UsICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwucHJlc2VudGF0aW9uJywgJ3BwdHgnKTtcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0XHRmRXhwb3J0KHJlc3BvbnNlLCAnYXBwbGljYXRpb24vcGRmJywgJ3BkZicpO1xuXHRcdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5kb3dubG9hZFVybCkge1xuXHRcdFx0XHRcdFx0dGhpcy5hZGREcml2ZUF0dGFjaG1lbnQocmVzcG9uc2UsIGFjY2Vzc1Rva2VuKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRyZXF1ZXN0LnNlbmQoKTtcblx0XHR9XG5cdH1cblxuXHRkcml2ZUNyZWF0ZVBpa2VyKGF1dGhUb2tlbikge1xuXHRcdGlmICh3aW5kb3cuZ2FwaSAmJiBhdXRoVG9rZW4gJiYgYXV0aFRva2VuLmFjY2Vzc190b2tlbikge1xuXHRcdFx0d2luZG93LmdhcGkubG9hZCgncGlja2VyJywge1xuXHRcdFx0XHRjYWxsYmFjazogKCkgPT4ge1xuXHRcdFx0XHRcdGlmICh3aW5kb3cuZ29vZ2xlICYmIHdpbmRvdy5nb29nbGUucGlja2VyKSB7XG5cdFx0XHRcdFx0XHRjb25zdCBkcml2ZVBpY2tlciA9IG5ldyB3aW5kb3cuZ29vZ2xlLnBpY2tlci5QaWNrZXJCdWlsZGVyKClcblx0XHRcdFx0XHRcdFx0Ly8gLmFkZFZpZXcod2luZG93Lmdvb2dsZS5waWNrZXIuVmlld0lkLkZPTERFUlMpXG5cdFx0XHRcdFx0XHRcdC5hZGRWaWV3KHdpbmRvdy5nb29nbGUucGlja2VyLlZpZXdJZC5ET0NTKVxuXHRcdFx0XHRcdFx0XHQuc2V0QXBwSWQoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0dvb2dsZUNsaWVudElEJykpXG5cdFx0XHRcdFx0XHRcdC5zZXRPQXV0aFRva2VuKGF1dGhUb2tlbi5hY2Nlc3NfdG9rZW4pXG5cdFx0XHRcdFx0XHRcdC5zZXRDYWxsYmFjayhfLmJpbmQodGhpcy5kcml2ZUNhbGxiYWNrLCB0aGlzLCBhdXRoVG9rZW4uYWNjZXNzX3Rva2VuKSlcblx0XHRcdFx0XHRcdFx0LmVuYWJsZUZlYXR1cmUod2luZG93Lmdvb2dsZS5waWNrZXIuRmVhdHVyZS5OQVZfSElEREVOKVxuXHRcdFx0XHRcdFx0XHQvLyAuc2V0T3JpZ2luKHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdClcblx0XHRcdFx0XHRcdFx0LmJ1aWxkKCk7XG5cblx0XHRcdFx0XHRcdGRyaXZlUGlja2VyLnNldFZpc2libGUodHJ1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRkcml2ZU9wZW5Qb3B1cCgpIHtcblx0XHRpZiAod2luZG93LmdhcGkpIHtcblx0XHRcdHdpbmRvdy5nYXBpLmxvYWQoJ2F1dGgnLCB7XG5cdFx0XHRcdGNhbGxiYWNrOiAoKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgYXV0aFRva2VuID0gd2luZG93LmdhcGkuYXV0aC5nZXRUb2tlbigpLFxuXHRcdFx0XHRcdFx0ZlJlc3VsdCA9IChhdXRoUmVzdWx0KSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChhdXRoUmVzdWx0ICYmICFhdXRoUmVzdWx0LmVycm9yKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdG9rZW4gPSB3aW5kb3cuZ2FwaS5hdXRoLmdldFRva2VuKCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHRva2VuKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRyaXZlQ3JlYXRlUGlrZXIodG9rZW4pO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdGlmICghYXV0aFRva2VuKSB7XG5cdFx0XHRcdFx0XHR3aW5kb3cuZ2FwaS5hdXRoLmF1dGhvcml6ZShcblx0XHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHRcdCdjbGllbnRfaWQnOiBTZXR0aW5ncy5zZXR0aW5nc0dldCgnR29vZ2xlQ2xpZW50SUQnKSxcblx0XHRcdFx0XHRcdFx0XHQnc2NvcGUnOiAnaHR0cHM6Ly93d3cuZ29vZ2xlYXBpcy5jb20vYXV0aC9kcml2ZS5yZWFkb25seScsXG5cdFx0XHRcdFx0XHRcdFx0J2ltbWVkaWF0ZSc6IHRydWVcblx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0KGF1dGhSZXN1bHQpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRpZiAoIWZSZXN1bHQoYXV0aFJlc3VsdCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5nYXBpLmF1dGguYXV0aG9yaXplKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2NsaWVudF9pZCc6IFNldHRpbmdzLnNldHRpbmdzR2V0KCdHb29nbGVDbGllbnRJRCcpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdzY29wZSc6ICdodHRwczovL3d3dy5nb29nbGVhcGlzLmNvbS9hdXRoL2RyaXZlLnJlYWRvbmx5Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnaW1tZWRpYXRlJzogZmFsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZlJlc3VsdFxuXHRcdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuZHJpdmVDcmVhdGVQaWtlcihhdXRoVG9rZW4pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuXHQgKiBAcmV0dXJucyB7P09iamVjdH1cblx0ICovXG5cdGdldEF0dGFjaG1lbnRCeUlkKGlkKSB7XG5cdFx0cmV0dXJuIF8uZmluZCh0aGlzLmF0dGFjaG1lbnRzKCksIChpdGVtKSA9PiBpdGVtICYmIGlkID09PSBpdGVtLmlkKTtcblx0fVxuXG5cdGNhbmNlbEF0dGFjaG1lbnRIZWxwZXIoaWQsIG9KdWEpIHtcblx0XHRyZXR1cm4gKCkgPT4ge1xuXHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IF8uZmluZCh0aGlzLmF0dGFjaG1lbnRzKCksIChpdGVtKSA9PiBpdGVtICYmIGl0ZW0uaWQgPT09IGlkKTtcblx0XHRcdGlmIChhdHRhY2htZW50KSB7XG5cdFx0XHRcdHRoaXMuYXR0YWNobWVudHMucmVtb3ZlKGF0dGFjaG1lbnQpO1xuXHRcdFx0XHRkZWxlZ2F0ZVJ1bk9uRGVzdHJveShhdHRhY2htZW50KTtcblxuXHRcdFx0XHRpZiAob0p1YSkge1xuXHRcdFx0XHRcdG9KdWEuY2FuY2VsKGlkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH07XG5cdH1cblxuXHRpbml0VXBsb2FkZXIoKSB7XG5cdFx0aWYgKHRoaXMuY29tcG9zZVVwbG9hZGVyQnV0dG9uKCkpIHtcblx0XHRcdGNvbnN0IHVwbG9hZENhY2hlID0ge30sXG5cdFx0XHRcdGF0dGFjaG1lbnRTaXplTGltaXQgPSBwSW50KFNldHRpbmdzLnNldHRpbmdzR2V0KCdBdHRhY2htZW50TGltaXQnKSksXG5cdFx0XHRcdG9KdWEgPSBuZXcgSnVhKHtcblx0XHRcdFx0XHQnYWN0aW9uJzogdXBsb2FkKCksXG5cdFx0XHRcdFx0J25hbWUnOiAndXBsb2FkZXInLFxuXHRcdFx0XHRcdCdxdWV1ZVNpemUnOiAyLFxuXHRcdFx0XHRcdCdtdWx0aXBsZVNpemVMaW1pdCc6IDUwLFxuXHRcdFx0XHRcdCdjbGlja0VsZW1lbnQnOiB0aGlzLmNvbXBvc2VVcGxvYWRlckJ1dHRvbigpLFxuXHRcdFx0XHRcdCdkcmFnQW5kRHJvcEVsZW1lbnQnOiB0aGlzLmNvbXBvc2VVcGxvYWRlckRyb3BQbGFjZSgpXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRpZiAob0p1YSkge1xuXHRcdFx0XHRvSnVhXG5cdFx0XHRcdFx0Ly8gLm9uKCdvbkxpbWl0UmVhY2hlZCcsIChsaW1pdCkgPT4ge1xuXHRcdFx0XHRcdC8vIFx0YWxlcnQobGltaXQpO1xuXHRcdFx0XHRcdC8vIH0pXG5cdFx0XHRcdFx0Lm9uKCdvbkRyYWdFbnRlcicsICgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuZHJhZ0FuZERyb3BPdmVyKHRydWUpO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0Lm9uKCdvbkRyYWdMZWF2ZScsICgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuZHJhZ0FuZERyb3BPdmVyKGZhbHNlKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5vbignb25Cb2R5RHJhZ0VudGVyJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5hdHRhY2htZW50c1BsYWNlKHRydWUpO1xuXHRcdFx0XHRcdFx0dGhpcy5kcmFnQW5kRHJvcFZpc2libGUodHJ1ZSk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQub24oJ29uQm9keURyYWdMZWF2ZScsICgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuZHJhZ0FuZERyb3BWaXNpYmxlKGZhbHNlKTtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5vbignb25Qcm9ncmVzcycsIChpZCwgbG9hZGVkLCB0b3RhbCkgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IGl0ZW0gPSB1cGxvYWRDYWNoZVtpZF07XG5cdFx0XHRcdFx0XHRpZiAoIWl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0aXRlbSA9IHRoaXMuZ2V0QXR0YWNobWVudEJ5SWQoaWQpO1xuXHRcdFx0XHRcdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRcdFx0XHRcdHVwbG9hZENhY2hlW2lkXSA9IGl0ZW07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKGl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0aXRlbS5wcm9ncmVzcyh3aW5kb3cuTWF0aC5mbG9vcigobG9hZGVkIC8gdG90YWwpICogMTAwKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQub24oJ29uU2VsZWN0JywgKHNJZCwgb0RhdGEpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuZHJhZ0FuZERyb3BPdmVyKGZhbHNlKTtcblxuXHRcdFx0XHRcdFx0Y29uc3QgZmlsZU5hbWUgPSBpc1VuZChvRGF0YS5GaWxlTmFtZSkgPyAnJyA6IG9EYXRhLkZpbGVOYW1lLnRvU3RyaW5nKCksXG5cdFx0XHRcdFx0XHRcdHNpemUgPSBpc05vcm1hbChvRGF0YS5TaXplKSA/IHBJbnQob0RhdGEuU2l6ZSkgOiBudWxsLFxuXHRcdFx0XHRcdFx0XHRhdHRhY2htZW50ID0gbmV3IENvbXBvc2VBdHRhY2htZW50TW9kZWwoc0lkLCBmaWxlTmFtZSwgc2l6ZSk7XG5cblx0XHRcdFx0XHRcdGF0dGFjaG1lbnQuY2FuY2VsID0gdGhpcy5jYW5jZWxBdHRhY2htZW50SGVscGVyKHNJZCwgb0p1YSk7XG5cblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTtcblxuXHRcdFx0XHRcdFx0dGhpcy5hdHRhY2htZW50c1BsYWNlKHRydWUpO1xuXG5cdFx0XHRcdFx0XHRpZiAoMCA8IHNpemUgJiYgMCA8IGF0dGFjaG1lbnRTaXplTGltaXQgJiYgYXR0YWNobWVudFNpemVMaW1pdCA8IHNpemUpIHtcblx0XHRcdFx0XHRcdFx0YXR0YWNobWVudFxuXHRcdFx0XHRcdFx0XHRcdC53YWl0aW5nKGZhbHNlKVxuXHRcdFx0XHRcdFx0XHRcdC51cGxvYWRpbmcodHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHQuY29tcGxldGUodHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHQuZXJyb3IoaTE4bignVVBMT0FEL0VSUk9SX0ZJTEVfSVNfVE9PX0JJRycpKTtcblxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0Lm9uKCdvblN0YXJ0JywgKGlkKSA9PiB7XG5cdFx0XHRcdFx0XHRsZXQgaXRlbSA9IHVwbG9hZENhY2hlW2lkXTtcblx0XHRcdFx0XHRcdGlmICghaXRlbSkge1xuXHRcdFx0XHRcdFx0XHRpdGVtID0gdGhpcy5nZXRBdHRhY2htZW50QnlJZChpZCk7XG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdFx0dXBsb2FkQ2FjaGVbaWRdID0gaXRlbTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRcdFx0XHRpdGVtXG5cdFx0XHRcdFx0XHRcdFx0LndhaXRpbmcoZmFsc2UpXG5cdFx0XHRcdFx0XHRcdFx0LnVwbG9hZGluZyh0cnVlKVxuXHRcdFx0XHRcdFx0XHRcdC5jb21wbGV0ZShmYWxzZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQub24oJ29uQ29tcGxldGUnLCAoaWQsIHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IHRoaXMuZ2V0QXR0YWNobWVudEJ5SWQoaWQpLFxuXHRcdFx0XHRcdFx0XHRlcnJvckNvZGUgPSBkYXRhICYmIGRhdGEuUmVzdWx0ICYmIGRhdGEuUmVzdWx0LkVycm9yQ29kZSA/IGRhdGEuUmVzdWx0LkVycm9yQ29kZSA6IG51bGwsXG5cdFx0XHRcdFx0XHRcdGF0dGFjaG1lbnRKc29uID0gcmVzdWx0ICYmIGRhdGEgJiYgZGF0YS5SZXN1bHQgJiYgZGF0YS5SZXN1bHQuQXR0YWNobWVudCA/IGRhdGEuUmVzdWx0LkF0dGFjaG1lbnQgOiBudWxsO1xuXG5cdFx0XHRcdFx0XHRsZXQgZXJyb3IgPSAnJztcblx0XHRcdFx0XHRcdGlmIChudWxsICE9PSBlcnJvckNvZGUpIHtcblx0XHRcdFx0XHRcdFx0ZXJyb3IgPSBnZXRVcGxvYWRFcnJvckRlc2NCeUNvZGUoZXJyb3JDb2RlKTtcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoIWF0dGFjaG1lbnRKc29uKSB7XG5cdFx0XHRcdFx0XHRcdGVycm9yID0gaTE4bignVVBMT0FEL0VSUk9SX1VOS05PV04nKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0aWYgKGF0dGFjaG1lbnQpIHtcblx0XHRcdFx0XHRcdFx0aWYgKCcnICE9PSBlcnJvciAmJiAwIDwgZXJyb3IubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0YXR0YWNobWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0LndhaXRpbmcoZmFsc2UpXG5cdFx0XHRcdFx0XHRcdFx0XHQudXBsb2FkaW5nKGZhbHNlKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmNvbXBsZXRlKHRydWUpXG5cdFx0XHRcdFx0XHRcdFx0XHQuZXJyb3IoZXJyb3IpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGF0dGFjaG1lbnRKc29uKSB7XG5cdFx0XHRcdFx0XHRcdFx0YXR0YWNobWVudFxuXHRcdFx0XHRcdFx0XHRcdFx0LndhaXRpbmcoZmFsc2UpXG5cdFx0XHRcdFx0XHRcdFx0XHQudXBsb2FkaW5nKGZhbHNlKVxuXHRcdFx0XHRcdFx0XHRcdFx0LmNvbXBsZXRlKHRydWUpO1xuXG5cdFx0XHRcdFx0XHRcdFx0YXR0YWNobWVudC5pbml0QnlVcGxvYWRKc29uKGF0dGFjaG1lbnRKc29uKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGlmIChpc1VuZCh1cGxvYWRDYWNoZVtpZF0pKSB7XG5cdFx0XHRcdFx0XHRcdFx0ZGVsZXRlIHVwbG9hZENhY2hlW2lkXTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHRoaXMuYWRkQXR0YWNobWVudEVuYWJsZWQodHJ1ZSkuZHJhZ0FuZERyb3BFbmFibGVkKG9KdWEuaXNEcmFnQW5kRHJvcFN1cHBvcnRlZCgpKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuYWRkQXR0YWNobWVudEVuYWJsZWQoZmFsc2UpLmRyYWdBbmREcm9wRW5hYmxlZChmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdCAqL1xuXHRwcmVwZWFyQXR0YWNobWVudHNGb3JTZW5kT3JTYXZlKCkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IHt9O1xuXHRcdF8uZWFjaCh0aGlzLmF0dGFjaG1lbnRzSW5SZWFkeSgpLCAoaXRlbSkgPT4ge1xuXHRcdFx0aWYgKGl0ZW0gJiYgJycgIT09IGl0ZW0udGVtcE5hbWUoKSAmJiBpdGVtLmVuYWJsZWQoKSkge1xuXHRcdFx0XHRyZXN1bHRbaXRlbS50ZW1wTmFtZSgpXSA9IFtpdGVtLmZpbGVOYW1lKCksIGl0ZW0uaXNJbmxpbmUgPyAnMScgOiAnMCcsIGl0ZW0uQ0lELCBpdGVtLmNvbnRlbnRMb2NhdGlvbl07XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7TWVzc2FnZU1vZGVsfSBtZXNzYWdlXG5cdCAqL1xuXHRhZGRNZXNzYWdlQXNBdHRhY2htZW50KG1lc3NhZ2UpIHtcblx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0bGV0IHRlbXAgPSBtZXNzYWdlLnN1YmplY3QoKTtcblx0XHRcdHRlbXAgPSAnLmVtbCcgPT09IHRlbXAuc3Vic3RyKC00KS50b0xvd2VyQ2FzZSgpID8gdGVtcCA6IHRlbXAgKyAnLmVtbCc7XG5cblx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBuZXcgQ29tcG9zZUF0dGFjaG1lbnRNb2RlbChtZXNzYWdlLnJlcXVlc3RIYXNoLCB0ZW1wLCBtZXNzYWdlLnNpemUoKSk7XG5cblx0XHRcdGF0dGFjaG1lbnQuZnJvbU1lc3NhZ2UgPSB0cnVlO1xuXHRcdFx0YXR0YWNobWVudC5jYW5jZWwgPSB0aGlzLmNhbmNlbEF0dGFjaG1lbnRIZWxwZXIobWVzc2FnZS5yZXF1ZXN0SGFzaCk7XG5cdFx0XHRhdHRhY2htZW50XG5cdFx0XHRcdC53YWl0aW5nKGZhbHNlKVxuXHRcdFx0XHQudXBsb2FkaW5nKHRydWUpXG5cdFx0XHRcdC5jb21wbGV0ZSh0cnVlKTtcblxuXHRcdFx0dGhpcy5hdHRhY2htZW50cy5wdXNoKGF0dGFjaG1lbnQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdXJsXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBzaXplXG5cdCAqIEByZXR1cm5zIHtDb21wb3NlQXR0YWNobWVudE1vZGVsfVxuXHQgKi9cblx0YWRkQXR0YWNobWVudEhlbHBlcih1cmwsIG5hbWUsIHNpemUpIHtcblx0XHRjb25zdCBhdHRhY2htZW50ID0gbmV3IENvbXBvc2VBdHRhY2htZW50TW9kZWwodXJsLCBuYW1lLCBzaXplKTtcblxuXHRcdGF0dGFjaG1lbnQuZnJvbU1lc3NhZ2UgPSBmYWxzZTtcblx0XHRhdHRhY2htZW50LmNhbmNlbCA9IHRoaXMuY2FuY2VsQXR0YWNobWVudEhlbHBlcih1cmwpO1xuXHRcdGF0dGFjaG1lbnRcblx0XHRcdC53YWl0aW5nKGZhbHNlKVxuXHRcdFx0LnVwbG9hZGluZyh0cnVlKVxuXHRcdFx0LmNvbXBsZXRlKGZhbHNlKTtcblxuXHRcdHRoaXMuYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTtcblxuXHRcdHRoaXMuYXR0YWNobWVudHNQbGFjZSh0cnVlKTtcblxuXHRcdHJldHVybiBhdHRhY2htZW50O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBkcm9wYm94RmlsZVxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGFkZERyb3Bib3hBdHRhY2htZW50KGRyb3Bib3hGaWxlKSB7XG5cdFx0Y29uc3QgYXR0YWNobWVudFNpemVMaW1pdCA9IHBJbnQoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0F0dGFjaG1lbnRMaW1pdCcpKSxcblx0XHRcdG1TaXplID0gZHJvcGJveEZpbGUuYnl0ZXMsXG5cdFx0XHRhdHRhY2htZW50ID0gdGhpcy5hZGRBdHRhY2htZW50SGVscGVyKGRyb3Bib3hGaWxlLmxpbmssIGRyb3Bib3hGaWxlLm5hbWUsIG1TaXplKTtcblxuXHRcdGlmICgwIDwgbVNpemUgJiYgMCA8IGF0dGFjaG1lbnRTaXplTGltaXQgJiYgYXR0YWNobWVudFNpemVMaW1pdCA8IG1TaXplKSB7XG5cdFx0XHRhdHRhY2htZW50LnVwbG9hZGluZyhmYWxzZSkuY29tcGxldGUodHJ1ZSk7XG5cdFx0XHRhdHRhY2htZW50LmVycm9yKGkxOG4oJ1VQTE9BRC9FUlJPUl9GSUxFX0lTX1RPT19CSUcnKSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0UmVtb3RlLmNvbXBvc2VVcGxvYWRFeHRlcm5hbHMoXG5cdFx0XHQoc3RhdHVzUmVzdWx0LCBkYXRhKSA9PiB7XG5cdFx0XHRcdGxldCByZXN1bHQgPSBmYWxzZTtcblx0XHRcdFx0YXR0YWNobWVudC51cGxvYWRpbmcoZmFsc2UpLmNvbXBsZXRlKHRydWUpO1xuXG5cdFx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSBzdGF0dXNSZXN1bHQgJiYgZGF0YSAmJiBkYXRhLlJlc3VsdCkge1xuXHRcdFx0XHRcdGlmIChkYXRhLlJlc3VsdFthdHRhY2htZW50LmlkXSkge1xuXHRcdFx0XHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHRcdFx0XHRcdGF0dGFjaG1lbnQudGVtcE5hbWUoZGF0YS5SZXN1bHRbYXR0YWNobWVudC5pZF0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghcmVzdWx0KSB7XG5cdFx0XHRcdFx0YXR0YWNobWVudC5lcnJvcihnZXRVcGxvYWRFcnJvckRlc2NCeUNvZGUoVXBsb2FkRXJyb3JDb2RlLkZpbGVOb1VwbG9hZGVkKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRbZHJvcGJveEZpbGUubGlua11cblx0XHQpO1xuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtPYmplY3R9IGRyaXZlRmlsZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gYWNjZXNzVG9rZW5cblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRhZGREcml2ZUF0dGFjaG1lbnQoZHJpdmVGaWxlLCBhY2Nlc3NUb2tlbikge1xuXHRcdGNvbnN0IGF0dGFjaG1lbnRTaXplTGltaXQgPSBwSW50KFNldHRpbmdzLnNldHRpbmdzR2V0KCdBdHRhY2htZW50TGltaXQnKSksXG5cdFx0XHRzaXplID0gZHJpdmVGaWxlLmZpbGVTaXplID8gcEludChkcml2ZUZpbGUuZmlsZVNpemUpIDogMCxcblx0XHRcdGF0dGFjaG1lbnQgPSB0aGlzLmFkZEF0dGFjaG1lbnRIZWxwZXIoZHJpdmVGaWxlLmRvd25sb2FkVXJsLCBkcml2ZUZpbGUudGl0bGUsIHNpemUpO1xuXG5cdFx0aWYgKDAgPCBzaXplICYmIDAgPCBhdHRhY2htZW50U2l6ZUxpbWl0ICYmIGF0dGFjaG1lbnRTaXplTGltaXQgPCBzaXplKSB7XG5cdFx0XHRhdHRhY2htZW50LnVwbG9hZGluZyhmYWxzZSkuY29tcGxldGUodHJ1ZSk7XG5cdFx0XHRhdHRhY2htZW50LmVycm9yKGkxOG4oJ1VQTE9BRC9FUlJPUl9GSUxFX0lTX1RPT19CSUcnKSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0UmVtb3RlLmNvbXBvc2VVcGxvYWREcml2ZShcblx0XHRcdChzdGF0dXNSZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdFx0bGV0IHJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRhdHRhY2htZW50LnVwbG9hZGluZyhmYWxzZSkuY29tcGxldGUodHJ1ZSk7XG5cblx0XHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHN0YXR1c1Jlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdFx0aWYgKGRhdGEuUmVzdWx0W2F0dGFjaG1lbnQuaWRdKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YXR0YWNobWVudC50ZW1wTmFtZShkYXRhLlJlc3VsdFthdHRhY2htZW50LmlkXVswXSk7XG5cdFx0XHRcdFx0XHRhdHRhY2htZW50LnNpemUocEludChkYXRhLlJlc3VsdFthdHRhY2htZW50LmlkXVsxXSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghcmVzdWx0KSB7XG5cdFx0XHRcdFx0YXR0YWNobWVudC5lcnJvcihnZXRVcGxvYWRFcnJvckRlc2NCeUNvZGUoVXBsb2FkRXJyb3JDb2RlLkZpbGVOb1VwbG9hZGVkKSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRkcml2ZUZpbGUuZG93bmxvYWRVcmwsXG5cdFx0XHRhY2Nlc3NUb2tlblxuXHRcdCk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge01lc3NhZ2VNb2RlbH0gbWVzc2FnZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdHlwZVxuXHQgKi9cblx0cHJlcGVhck1lc3NhZ2VBdHRhY2htZW50cyhtZXNzYWdlLCB0eXBlKSB7XG5cdFx0aWYgKG1lc3NhZ2UpIHtcblx0XHRcdGlmIChDb21wb3NlVHlwZS5Gb3J3YXJkQXNBdHRhY2htZW50ID09PSB0eXBlKSB7XG5cdFx0XHRcdHRoaXMuYWRkTWVzc2FnZUFzQXR0YWNobWVudChtZXNzYWdlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnRzID0gbWVzc2FnZS5hdHRhY2htZW50cygpO1xuXHRcdFx0XHRfLmVhY2goaXNOb25FbXB0eUFycmF5KGF0dGFjaG1lbnRzKSA/IGF0dGFjaG1lbnRzIDogW10sIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0bGV0IGFkZCA9IGZhbHNlO1xuXHRcdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBDb21wb3NlVHlwZS5SZXBseTpcblx0XHRcdFx0XHRcdGNhc2UgQ29tcG9zZVR5cGUuUmVwbHlBbGw6XG5cdFx0XHRcdFx0XHRcdGFkZCA9IGl0ZW0uaXNMaW5rZWQ7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdFx0XHRjYXNlIENvbXBvc2VUeXBlLkZvcndhcmQ6XG5cdFx0XHRcdFx0XHRjYXNlIENvbXBvc2VUeXBlLkRyYWZ0OlxuXHRcdFx0XHRcdFx0Y2FzZSBDb21wb3NlVHlwZS5FZGl0QXNOZXc6XG5cdFx0XHRcdFx0XHRcdGFkZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChhZGQpIHtcblx0XHRcdFx0XHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBuZXcgQ29tcG9zZUF0dGFjaG1lbnRNb2RlbChcblx0XHRcdFx0XHRcdFx0aXRlbS5kb3dubG9hZCxcblx0XHRcdFx0XHRcdFx0aXRlbS5maWxlTmFtZSxcblx0XHRcdFx0XHRcdFx0aXRlbS5lc3RpbWF0ZWRTaXplLFxuXHRcdFx0XHRcdFx0XHRpdGVtLmlzSW5saW5lLFxuXHRcdFx0XHRcdFx0XHRpdGVtLmlzTGlua2VkLFxuXHRcdFx0XHRcdFx0XHRpdGVtLmNpZCxcblx0XHRcdFx0XHRcdFx0aXRlbS5jb250ZW50TG9jYXRpb25cblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdGF0dGFjaG1lbnQuZnJvbU1lc3NhZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdFx0YXR0YWNobWVudC5jYW5jZWwgPSB0aGlzLmNhbmNlbEF0dGFjaG1lbnRIZWxwZXIoaXRlbS5kb3dubG9hZCk7XG5cdFx0XHRcdFx0XHRhdHRhY2htZW50XG5cdFx0XHRcdFx0XHRcdC53YWl0aW5nKGZhbHNlKVxuXHRcdFx0XHRcdFx0XHQudXBsb2FkaW5nKHRydWUpXG5cdFx0XHRcdFx0XHRcdC5jb21wbGV0ZShmYWxzZSk7XG5cblx0XHRcdFx0XHRcdHRoaXMuYXR0YWNobWVudHMucHVzaChhdHRhY2htZW50KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJlbW92ZUxpbmtlZEF0dGFjaG1lbnRzKCkge1xuXHRcdGNvbnN0IGFycmFjaG1lbnQgPSBfLmZpbmQodGhpcy5hdHRhY2htZW50cygpLCAoaXRlbSkgPT4gaXRlbSAmJiBpdGVtLmlzTGlua2VkKTtcblx0XHRpZiAoYXJyYWNobWVudCkge1xuXHRcdFx0dGhpcy5hdHRhY2htZW50cy5yZW1vdmUoYXJyYWNobWVudCk7XG5cdFx0XHRkZWxlZ2F0ZVJ1bk9uRGVzdHJveShhcnJhY2htZW50KTtcblx0XHR9XG5cdH1cblxuXHRzZXRNZXNzYWdlQXR0YWNobWVudEZhaWxlZERvd25sb2FkVGV4dCgpIHtcblx0XHRfLmVhY2godGhpcy5hdHRhY2htZW50cygpLCAoYXR0YWNobWVudCkgPT4ge1xuXHRcdFx0aWYgKGF0dGFjaG1lbnQgJiYgYXR0YWNobWVudC5mcm9tTWVzc2FnZSkge1xuXHRcdFx0XHRhdHRhY2htZW50XG5cdFx0XHRcdFx0LndhaXRpbmcoZmFsc2UpXG5cdFx0XHRcdFx0LnVwbG9hZGluZyhmYWxzZSlcblx0XHRcdFx0XHQuY29tcGxldGUodHJ1ZSlcblx0XHRcdFx0XHQuZXJyb3IoZ2V0VXBsb2FkRXJyb3JEZXNjQnlDb2RlKFVwbG9hZEVycm9yQ29kZS5GaWxlTm9VcGxvYWRlZCkpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGluY2x1ZGVBdHRhY2htZW50SW5Qcm9ncmVzcyA9IHRydWVcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc0VtcHR5Rm9ybShpbmNsdWRlQXR0YWNobWVudEluUHJvZ3Jlc3MgPSB0cnVlKSB7XG5cdFx0Y29uc3Qgd2l0aG91dEF0dGFjaG1lbnQgPSBpbmNsdWRlQXR0YWNobWVudEluUHJvZ3Jlc3Ncblx0XHRcdD8gMCA9PT0gdGhpcy5hdHRhY2htZW50cygpLmxlbmd0aFxuXHRcdFx0OiAwID09PSB0aGlzLmF0dGFjaG1lbnRzSW5SZWFkeSgpLmxlbmd0aDtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQwID09PSB0aGlzLnRvKCkubGVuZ3RoICYmXG5cdFx0XHQwID09PSB0aGlzLmNjKCkubGVuZ3RoICYmXG5cdFx0XHQwID09PSB0aGlzLmJjYygpLmxlbmd0aCAmJlxuXHRcdFx0MCA9PT0gdGhpcy5yZXBseVRvKCkubGVuZ3RoICYmXG5cdFx0XHQwID09PSB0aGlzLnN1YmplY3QoKS5sZW5ndGggJiZcblx0XHRcdHdpdGhvdXRBdHRhY2htZW50ICYmXG5cdFx0XHQoIXRoaXMub0VkaXRvciB8fCAnJyA9PT0gdGhpcy5vRWRpdG9yLmdldERhdGEoKSlcblx0XHQpO1xuXHR9XG5cblx0cmVzZXQoKSB7XG5cdFx0dGhpcy50bygnJyk7XG5cdFx0dGhpcy5jYygnJyk7XG5cdFx0dGhpcy5iY2MoJycpO1xuXHRcdHRoaXMucmVwbHlUbygnJyk7XG5cdFx0dGhpcy5zdWJqZWN0KCcnKTtcblxuXHRcdHRoaXMucmVxdWVzdERzbihmYWxzZSk7XG5cdFx0dGhpcy5yZXF1ZXN0UmVhZFJlY2VpcHQoZmFsc2UpO1xuXHRcdHRoaXMubWFya0FzSW1wb3J0YW50KGZhbHNlKTtcblxuXHRcdHRoaXMuYXR0YWNobWVudHNQbGFjZShmYWxzZSk7XG5cblx0XHR0aGlzLmFEcmFmdEluZm8gPSBudWxsO1xuXHRcdHRoaXMuc0luUmVwbHlUbyA9ICcnO1xuXHRcdHRoaXMuYkZyb21EcmFmdCA9IGZhbHNlO1xuXHRcdHRoaXMuc1JlZmVyZW5jZXMgPSAnJztcblxuXHRcdHRoaXMuc2VuZEVycm9yKGZhbHNlKTtcblx0XHR0aGlzLnNlbmRTdWNjZXNzQnV0U2F2ZUVycm9yKGZhbHNlKTtcblx0XHR0aGlzLnNhdmVkRXJyb3IoZmFsc2UpO1xuXHRcdHRoaXMuc2F2ZWRUaW1lKDApO1xuXHRcdHRoaXMuZW1wdHlUb0Vycm9yKGZhbHNlKTtcblx0XHR0aGlzLmF0dGFjaG1lbnRzSW5Qcm9jZXNzRXJyb3IoZmFsc2UpO1xuXG5cdFx0dGhpcy5zaG93Q2MoZmFsc2UpO1xuXHRcdHRoaXMuc2hvd0JjYyhmYWxzZSk7XG5cdFx0dGhpcy5zaG93UmVwbHlUbyhmYWxzZSk7XG5cblx0XHRkZWxlZ2F0ZVJ1bk9uRGVzdHJveSh0aGlzLmF0dGFjaG1lbnRzKCkpO1xuXHRcdHRoaXMuYXR0YWNobWVudHMoW10pO1xuXG5cdFx0dGhpcy5kcmFnQW5kRHJvcE92ZXIoZmFsc2UpO1xuXHRcdHRoaXMuZHJhZ0FuZERyb3BWaXNpYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZHJhZnRGb2xkZXIoJycpO1xuXHRcdHRoaXMuZHJhZnRVaWQoJycpO1xuXG5cdFx0dGhpcy5zZW5kaW5nKGZhbHNlKTtcblx0XHR0aGlzLnNhdmluZyhmYWxzZSk7XG5cblx0XHRpZiAodGhpcy5vRWRpdG9yKSB7XG5cdFx0XHR0aGlzLm9FZGl0b3IuY2xlYXIoZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9XG5cdCAqL1xuXHRnZXRBdHRhY2htZW50c0Rvd25sb2Fkc0ZvclVwbG9hZCgpIHtcblx0XHRyZXR1cm4gXy5tYXAoXG5cdFx0XHRfLmZpbHRlcih0aGlzLmF0dGFjaG1lbnRzKCksIChpdGVtKSA9PiBpdGVtICYmICcnID09PSBpdGVtLnRlbXBOYW1lKCkpLFxuXHRcdFx0KGl0ZW0pID0+IGl0ZW0uaWRcblx0XHQpO1xuXHR9XG5cblx0cmVzaXplclRyaWdnZXIoKSB7XG5cdFx0dGhpcy5yZXNpemVyKCF0aGlzLnJlc2l6ZXIoKSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgQ29tcG9zZVBvcHVwVmlldywgQ29tcG9zZVBvcHVwVmlldyBhcyBkZWZhdWx0IH07XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbi8vIGBUb1ByaW1pdGl2ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXRvcHJpbWl0aXZlXG4vLyBpbnN0ZWFkIG9mIHRoZSBFUzYgc3BlYyB2ZXJzaW9uLCB3ZSBkaWRuJ3QgaW1wbGVtZW50IEBAdG9QcmltaXRpdmUgY2FzZVxuLy8gYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgLSBmbGFnIC0gcHJlZmVycmVkIHR5cGUgaXMgYSBzdHJpbmdcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGlucHV0LCBQUkVGRVJSRURfU1RSSU5HKSB7XG4gIGlmICghaXNPYmplY3QoaW5wdXQpKSByZXR1cm4gaW5wdXQ7XG4gIHZhciBmbiwgdmFsO1xuICBpZiAoUFJFRkVSUkVEX1NUUklORyAmJiB0eXBlb2YgKGZuID0gaW5wdXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgaWYgKHR5cGVvZiAoZm4gPSBpbnB1dC52YWx1ZU9mKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICghUFJFRkVSUkVEX1NUUklORyAmJiB0eXBlb2YgKGZuID0gaW5wdXQudG9TdHJpbmcpID09ICdmdW5jdGlvbicgJiYgIWlzT2JqZWN0KHZhbCA9IGZuLmNhbGwoaW5wdXQpKSkgcmV0dXJuIHZhbDtcbiAgdGhyb3cgVHlwZUVycm9yKFwiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlXCIpO1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xuXG4vLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFERVNDUklQVE9SUyAmJiAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnR5IC0tIHJlcXVpZWQgZm9yIHRlc3RpbmdcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcblxudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xuLy8gdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgaXMgJ29iamVjdCcgaW4gb2xkIElFXG52YXIgRVhJU1RTID0gaXNPYmplY3QoZG9jdW1lbnQpICYmIGlzT2JqZWN0KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gRVhJU1RTID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChpdCkgOiB7fTtcbn07XG4iLCJ2YXIgaWQgPSAwO1xudmFyIHBvc3RmaXggPSBNYXRoLnJhbmRvbSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuICdTeW1ib2woJyArIFN0cmluZyhrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5KSArICcpXycgKyAoKytpZCArIHBvc3RmaXgpLnRvU3RyaW5nKDM2KTtcbn07XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBlcy9uby1zeW1ib2wgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmcgKi9cbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eXN5bWJvbHMgLS0gcmVxdWlyZWQgZm9yIHRlc3Rpbmdcbm1vZHVsZS5leHBvcnRzID0gISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKSB8fFxuICAgIC8vIENocm9tZSAzOCBTeW1ib2wgaGFzIGluY29ycmVjdCB0b1N0cmluZyBjb252ZXJzaW9uXG4gICAgLy8gQ2hyb21lIDM4LTQwIHN5bWJvbHMgYXJlIG5vdCBpbmhlcml0ZWQgZnJvbSBET00gY29sbGVjdGlvbnMgcHJvdG90eXBlcyB0byBpbnN0YW5jZXNcbiAgICAhU3ltYm9sLnNoYW0gJiYgVjhfVkVSU0lPTiAmJiBWOF9WRVJTSU9OIDwgNDE7XG59KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG5cbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbi8vIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFbGVtZW50IGlzICdvYmplY3QnIGluIG9sZCBJRVxudmFyIEVYSVNUUyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIEVYSVNUUyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xudmFyIENPUlJFQ1RfUFJPVE9UWVBFX0dFVFRFUiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jb3JyZWN0LXByb3RvdHlwZS1nZXR0ZXInKTtcblxudmFyIElFX1BST1RPID0gc2hhcmVkS2V5KCdJRV9QUk9UTycpO1xudmFyIE9iamVjdFByb3RvdHlwZSA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8vIGBPYmplY3QuZ2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZ2V0cHJvdG90eXBlb2Zcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuIiwidmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQnKTtcbnZhciB1aWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdWlkJyk7XG5cbnZhciBrZXlzID0gc2hhcmVkKCdrZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4ga2V5c1trZXldIHx8IChrZXlzW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBzZXRHbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LWdsb2JhbCcpO1xuXG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCBzZXRHbG9iYWwoU0hBUkVELCB7fSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RvcmU7XG4iLCJ2YXIgY2VpbCA9IE1hdGguY2VpbDtcbnZhciBmbG9vciA9IE1hdGguZmxvb3I7XG5cbi8vIGBUb0ludGVnZXJgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b2ludGVnZXJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGFyZ3VtZW50KSB7XG4gIHJldHVybiBpc05hTihhcmd1bWVudCA9ICthcmd1bWVudCkgPyAwIDogKGFyZ3VtZW50ID4gMCA/IGZsb29yIDogY2VpbCkoYXJndW1lbnQpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0ge307XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIHRlc3QgPSB7fTtcblxudGVzdFtUT19TVFJJTkdfVEFHXSA9ICd6JztcblxubW9kdWxlLmV4cG9ydHMgPSBTdHJpbmcodGVzdCkgPT09ICdbb2JqZWN0IHpdJztcbiIsInZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpLmY7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b1N0cmluZyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtdG8tc3RyaW5nJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgVEFHLCBTVEFUSUMsIFNFVF9NRVRIT0QpIHtcbiAgaWYgKGl0KSB7XG4gICAgdmFyIHRhcmdldCA9IFNUQVRJQyA/IGl0IDogaXQucHJvdG90eXBlO1xuICAgIGlmICghaGFzKHRhcmdldCwgVE9fU1RSSU5HX1RBRykpIHtcbiAgICAgIGRlZmluZVByb3BlcnR5KHRhcmdldCwgVE9fU1RSSU5HX1RBRywgeyBjb25maWd1cmFibGU6IHRydWUsIHZhbHVlOiBUQUcgfSk7XG4gICAgfVxuICAgIGlmIChTRVRfTUVUSE9EICYmICFUT19TVFJJTkdfVEFHX1NVUFBPUlQpIHtcbiAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSh0YXJnZXQsICd0b1N0cmluZycsIHRvU3RyaW5nKTtcbiAgICB9XG4gIH1cbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IGZhbHNlLCB2YWx1ZTogZXhlYygpIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuIHsgZXJyb3I6IHRydWUsIHZhbHVlOiBlcnJvciB9O1xuICB9XG59O1xuIiwidmFyIE5BVElWRV9XRUFLX01BUCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtd2Vhay1tYXAnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIG9iamVjdEhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbnZhciBXZWFrTWFwID0gZ2xvYmFsLldlYWtNYXA7XG52YXIgc2V0LCBnZXQsIGhhcztcblxudmFyIGVuZm9yY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGhhcyhpdCkgPyBnZXQoaXQpIDogc2V0KGl0LCB7fSk7XG59O1xuXG52YXIgZ2V0dGVyRm9yID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChpdCkge1xuICAgIHZhciBzdGF0ZTtcbiAgICBpZiAoIWlzT2JqZWN0KGl0KSB8fCAoc3RhdGUgPSBnZXQoaXQpKS50eXBlICE9PSBUWVBFKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ0luY29tcGF0aWJsZSByZWNlaXZlciwgJyArIFRZUEUgKyAnIHJlcXVpcmVkJyk7XG4gICAgfSByZXR1cm4gc3RhdGU7XG4gIH07XG59O1xuXG5pZiAoTkFUSVZFX1dFQUtfTUFQKSB7XG4gIHZhciBzdG9yZSA9IHNoYXJlZC5zdGF0ZSB8fCAoc2hhcmVkLnN0YXRlID0gbmV3IFdlYWtNYXAoKSk7XG4gIHZhciB3bWdldCA9IHN0b3JlLmdldDtcbiAgdmFyIHdtaGFzID0gc3RvcmUuaGFzO1xuICB2YXIgd21zZXQgPSBzdG9yZS5zZXQ7XG4gIHNldCA9IGZ1bmN0aW9uIChpdCwgbWV0YWRhdGEpIHtcbiAgICBtZXRhZGF0YS5mYWNhZGUgPSBpdDtcbiAgICB3bXNldC5jYWxsKHN0b3JlLCBpdCwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtZ2V0LmNhbGwoc3RvcmUsIGl0KSB8fCB7fTtcbiAgfTtcbiAgaGFzID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIHdtaGFzLmNhbGwoc3RvcmUsIGl0KTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBTVEFURSA9IHNoYXJlZEtleSgnc3RhdGUnKTtcbiAgaGlkZGVuS2V5c1tTVEFURV0gPSB0cnVlO1xuICBzZXQgPSBmdW5jdGlvbiAoaXQsIG1ldGFkYXRhKSB7XG4gICAgbWV0YWRhdGEuZmFjYWRlID0gaXQ7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KGl0LCBTVEFURSwgbWV0YWRhdGEpO1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfTtcbiAgZ2V0ID0gZnVuY3Rpb24gKGl0KSB7XG4gICAgcmV0dXJuIG9iamVjdEhhcyhpdCwgU1RBVEUpID8gaXRbU1RBVEVdIDoge307XG4gIH07XG4gIGhhcyA9IGZ1bmN0aW9uIChpdCkge1xuICAgIHJldHVybiBvYmplY3RIYXMoaXQsIFNUQVRFKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHNldDogc2V0LFxuICBnZXQ6IGdldCxcbiAgaGFzOiBoYXMsXG4gIGVuZm9yY2U6IGVuZm9yY2UsXG4gIGdldHRlckZvcjogZ2V0dGVyRm9yXG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciB2ZXJzaW9ucyA9IHByb2Nlc3MgJiYgcHJvY2Vzcy52ZXJzaW9ucztcbnZhciB2OCA9IHZlcnNpb25zICYmIHZlcnNpb25zLnY4O1xudmFyIG1hdGNoLCB2ZXJzaW9uO1xuXG5pZiAodjgpIHtcbiAgbWF0Y2ggPSB2OC5zcGxpdCgnLicpO1xuICB2ZXJzaW9uID0gbWF0Y2hbMF0gKyBtYXRjaFsxXTtcbn0gZWxzZSBpZiAodXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uICYmICt2ZXJzaW9uO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gVE9ETzogUmVtb3ZlIGZyb20gYGNvcmUtanNANGAgc2luY2UgaXQncyBtb3ZlZCB0byBlbnRyeSBwb2ludHNcbnJlcXVpcmUoJy4uL21vZHVsZXMvZXMucmVnZXhwLmV4ZWMnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG52YXIgUkVQTEFDRV9TVVBQT1JUU19OQU1FRF9HUk9VUFMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyAjcmVwbGFjZSBuZWVkcyBidWlsdC1pbiBzdXBwb3J0IGZvciBuYW1lZCBncm91cHMuXG4gIC8vICNtYXRjaCB3b3JrcyBmaW5lIGJlY2F1c2UgaXQganVzdCByZXR1cm4gdGhlIGV4ZWMgcmVzdWx0cywgZXZlbiBpZiBpdCBoYXNcbiAgLy8gYSBcImdyb3BzXCIgcHJvcGVydHkuXG4gIHZhciByZSA9IC8uLztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcmVzdWx0ID0gW107XG4gICAgcmVzdWx0Lmdyb3VwcyA9IHsgYTogJzcnIH07XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbiAgcmV0dXJuICcnLnJlcGxhY2UocmUsICckPGE+JykgIT09ICc3Jztcbn0pO1xuXG4vLyBJRSA8PSAxMSByZXBsYWNlcyAkMCB3aXRoIHRoZSB3aG9sZSBtYXRjaCwgYXMgaWYgaXQgd2FzICQmXG4vLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy82MDI0NjY2L2dldHRpbmctaWUtdG8tcmVwbGFjZS1hLXJlZ2V4LXdpdGgtdGhlLWxpdGVyYWwtc3RyaW5nLTBcbnZhciBSRVBMQUNFX0tFRVBTXyQwID0gKGZ1bmN0aW9uICgpIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9wcmVmZXItZXNjYXBlLXJlcGxhY2VtZW50LWRvbGxhci1jaGFyIC0tIHJlcXVpcmVkIGZvciB0ZXN0aW5nXG4gIHJldHVybiAnYScucmVwbGFjZSgvLi8sICckMCcpID09PSAnJDAnO1xufSkoKTtcblxudmFyIFJFUExBQ0UgPSB3ZWxsS25vd25TeW1ib2woJ3JlcGxhY2UnKTtcbi8vIFNhZmFyaSA8PSAxMy4wLjMoPykgc3Vic3RpdHV0ZXMgbnRoIGNhcHR1cmUgd2hlcmUgbj5tIHdpdGggYW4gZW1wdHkgc3RyaW5nXG52YXIgUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkUgPSAoZnVuY3Rpb24gKCkge1xuICBpZiAoLy4vW1JFUExBQ0VdKSB7XG4gICAgcmV0dXJuIC8uL1tSRVBMQUNFXSgnYScsICckMCcpID09PSAnJztcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59KSgpO1xuXG4vLyBDaHJvbWUgNTEgaGFzIGEgYnVnZ3kgXCJzcGxpdFwiIGltcGxlbWVudGF0aW9uIHdoZW4gUmVnRXhwI2V4ZWMgIT09IG5hdGl2ZUV4ZWNcbi8vIFdlZXggSlMgaGFzIGZyb3plbiBidWlsdC1pbiBwcm90b3R5cGVzLCBzbyB1c2UgdHJ5IC8gY2F0Y2ggd3JhcHBlclxudmFyIFNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvbm8tZW1wdHktZ3JvdXAgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgdmFyIHJlID0gLyg/OikvO1xuICB2YXIgb3JpZ2luYWxFeGVjID0gcmUuZXhlYztcbiAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9yaWdpbmFsRXhlYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9O1xuICB2YXIgcmVzdWx0ID0gJ2FiJy5zcGxpdChyZSk7XG4gIHJldHVybiByZXN1bHQubGVuZ3RoICE9PSAyIHx8IHJlc3VsdFswXSAhPT0gJ2EnIHx8IHJlc3VsdFsxXSAhPT0gJ2InO1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEtFWSwgbGVuZ3RoLCBleGVjLCBzaGFtKSB7XG4gIHZhciBTWU1CT0wgPSB3ZWxsS25vd25TeW1ib2woS0VZKTtcblxuICB2YXIgREVMRUdBVEVTX1RPX1NZTUJPTCA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3RyaW5nIG1ldGhvZHMgY2FsbCBzeW1ib2wtbmFtZWQgUmVnRXAgbWV0aG9kc1xuICAgIHZhciBPID0ge307XG4gICAgT1tTWU1CT0xdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfTtcbiAgICByZXR1cm4gJydbS0VZXShPKSAhPSA3O1xuICB9KTtcblxuICB2YXIgREVMRUdBVEVTX1RPX0VYRUMgPSBERUxFR0FURVNfVE9fU1lNQk9MICYmICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gU3ltYm9sLW5hbWVkIFJlZ0V4cCBtZXRob2RzIGNhbGwgLmV4ZWNcbiAgICB2YXIgZXhlY0NhbGxlZCA9IGZhbHNlO1xuICAgIHZhciByZSA9IC9hLztcblxuICAgIGlmIChLRVkgPT09ICdzcGxpdCcpIHtcbiAgICAgIC8vIFdlIGNhbid0IHVzZSByZWFsIHJlZ2V4IGhlcmUgc2luY2UgaXQgY2F1c2VzIGRlb3B0aW1pemF0aW9uXG4gICAgICAvLyBhbmQgc2VyaW91cyBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBpbiBWOFxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzMwNlxuICAgICAgcmUgPSB7fTtcbiAgICAgIC8vIFJlZ0V4cFtAQHNwbGl0XSBkb2Vzbid0IGNhbGwgdGhlIHJlZ2V4J3MgZXhlYyBtZXRob2QsIGJ1dCBmaXJzdCBjcmVhdGVzXG4gICAgICAvLyBhIG5ldyBvbmUuIFdlIG5lZWQgdG8gcmV0dXJuIHRoZSBwYXRjaGVkIHJlZ2V4IHdoZW4gY3JlYXRpbmcgdGhlIG5ldyBvbmUuXG4gICAgICByZS5jb25zdHJ1Y3RvciA9IHt9O1xuICAgICAgcmUuY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7IHJldHVybiByZTsgfTtcbiAgICAgIHJlLmZsYWdzID0gJyc7XG4gICAgICByZVtTWU1CT0xdID0gLy4vW1NZTUJPTF07XG4gICAgfVxuXG4gICAgcmUuZXhlYyA9IGZ1bmN0aW9uICgpIHsgZXhlY0NhbGxlZCA9IHRydWU7IHJldHVybiBudWxsOyB9O1xuXG4gICAgcmVbU1lNQk9MXSgnJyk7XG4gICAgcmV0dXJuICFleGVjQ2FsbGVkO1xuICB9KTtcblxuICBpZiAoXG4gICAgIURFTEVHQVRFU19UT19TWU1CT0wgfHxcbiAgICAhREVMRUdBVEVTX1RPX0VYRUMgfHxcbiAgICAoS0VZID09PSAncmVwbGFjZScgJiYgIShcbiAgICAgIFJFUExBQ0VfU1VQUE9SVFNfTkFNRURfR1JPVVBTICYmXG4gICAgICBSRVBMQUNFX0tFRVBTXyQwICYmXG4gICAgICAhUkVHRVhQX1JFUExBQ0VfU1VCU1RJVFVURVNfVU5ERUZJTkVEX0NBUFRVUkVcbiAgICApKSB8fFxuICAgIChLRVkgPT09ICdzcGxpdCcgJiYgIVNQTElUX1dPUktTX1dJVEhfT1ZFUldSSVRURU5fRVhFQylcbiAgKSB7XG4gICAgdmFyIG5hdGl2ZVJlZ0V4cE1ldGhvZCA9IC8uL1tTWU1CT0xdO1xuICAgIHZhciBtZXRob2RzID0gZXhlYyhTWU1CT0wsICcnW0tFWV0sIGZ1bmN0aW9uIChuYXRpdmVNZXRob2QsIHJlZ2V4cCwgc3RyLCBhcmcyLCBmb3JjZVN0cmluZ01ldGhvZCkge1xuICAgICAgaWYgKHJlZ2V4cC5leGVjID09PSBSZWdFeHAucHJvdG90eXBlLmV4ZWMpIHtcbiAgICAgICAgaWYgKERFTEVHQVRFU19UT19TWU1CT0wgJiYgIWZvcmNlU3RyaW5nTWV0aG9kKSB7XG4gICAgICAgICAgLy8gVGhlIG5hdGl2ZSBTdHJpbmcgbWV0aG9kIGFscmVhZHkgZGVsZWdhdGVzIHRvIEBAbWV0aG9kICh0aGlzXG4gICAgICAgICAgLy8gcG9seWZpbGxlZCBmdW5jdGlvbiksIGxlYXNpbmcgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICAgICAgICAgIC8vIFdlIGF2b2lkIGl0IGJ5IGRpcmVjdGx5IGNhbGxpbmcgdGhlIG5hdGl2ZSBAQG1ldGhvZCBtZXRob2QuXG4gICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSwgdmFsdWU6IG5hdGl2ZVJlZ0V4cE1ldGhvZC5jYWxsKHJlZ2V4cCwgc3RyLCBhcmcyKSB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUsIHZhbHVlOiBuYXRpdmVNZXRob2QuY2FsbChzdHIsIHJlZ2V4cCwgYXJnMikgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGRvbmU6IGZhbHNlIH07XG4gICAgfSwge1xuICAgICAgUkVQTEFDRV9LRUVQU18kMDogUkVQTEFDRV9LRUVQU18kMCxcbiAgICAgIFJFR0VYUF9SRVBMQUNFX1NVQlNUSVRVVEVTX1VOREVGSU5FRF9DQVBUVVJFOiBSRUdFWFBfUkVQTEFDRV9TVUJTVElUVVRFU19VTkRFRklORURfQ0FQVFVSRVxuICAgIH0pO1xuICAgIHZhciBzdHJpbmdNZXRob2QgPSBtZXRob2RzWzBdO1xuICAgIHZhciByZWdleE1ldGhvZCA9IG1ldGhvZHNbMV07XG5cbiAgICByZWRlZmluZShTdHJpbmcucHJvdG90eXBlLCBLRVksIHN0cmluZ01ldGhvZCk7XG4gICAgcmVkZWZpbmUoUmVnRXhwLnByb3RvdHlwZSwgU1lNQk9MLCBsZW5ndGggPT0gMlxuICAgICAgLy8gMjEuMi41LjggUmVnRXhwLnByb3RvdHlwZVtAQHJlcGxhY2VdKHN0cmluZywgcmVwbGFjZVZhbHVlKVxuICAgICAgLy8gMjEuMi41LjExIFJlZ0V4cC5wcm90b3R5cGVbQEBzcGxpdF0oc3RyaW5nLCBsaW1pdClcbiAgICAgID8gZnVuY3Rpb24gKHN0cmluZywgYXJnKSB7IHJldHVybiByZWdleE1ldGhvZC5jYWxsKHN0cmluZywgdGhpcywgYXJnKTsgfVxuICAgICAgLy8gMjEuMi41LjYgUmVnRXhwLnByb3RvdHlwZVtAQG1hdGNoXShzdHJpbmcpXG4gICAgICAvLyAyMS4yLjUuOSBSZWdFeHAucHJvdG90eXBlW0BAc2VhcmNoXShzdHJpbmcpXG4gICAgICA6IGZ1bmN0aW9uIChzdHJpbmcpIHsgcmV0dXJuIHJlZ2V4TWV0aG9kLmNhbGwoc3RyaW5nLCB0aGlzKTsgfVxuICAgICk7XG4gIH1cblxuICBpZiAoc2hhbSkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KFJlZ0V4cC5wcm90b3R5cGVbU1lNQk9MXSwgJ3NoYW0nLCB0cnVlKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4vY2xhc3NvZi1yYXcnKTtcbnZhciByZWdleHBFeGVjID0gcmVxdWlyZSgnLi9yZWdleHAtZXhlYycpO1xuXG4vLyBgUmVnRXhwRXhlY2AgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cGV4ZWNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKFIsIFMpIHtcbiAgdmFyIGV4ZWMgPSBSLmV4ZWM7XG4gIGlmICh0eXBlb2YgZXhlYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHZhciByZXN1bHQgPSBleGVjLmNhbGwoUiwgUyk7XG4gICAgaWYgKHR5cGVvZiByZXN1bHQgIT09ICdvYmplY3QnKSB7XG4gICAgICB0aHJvdyBUeXBlRXJyb3IoJ1JlZ0V4cCBleGVjIG1ldGhvZCByZXR1cm5lZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhbiBPYmplY3Qgb3IgbnVsbCcpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKGNsYXNzb2YoUikgIT09ICdSZWdFeHAnKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdSZWdFeHAjZXhlYyBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHJlY2VpdmVyJyk7XG4gIH1cblxuICByZXR1cm4gcmVnZXhwRXhlYy5jYWxsKFIsIFMpO1xufTtcblxuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBET01JdGVyYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9tLWl0ZXJhYmxlcycpO1xudmFyIGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktZm9yLWVhY2gnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG5cbmZvciAodmFyIENPTExFQ1RJT05fTkFNRSBpbiBET01JdGVyYWJsZXMpIHtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbQ09MTEVDVElPTl9OQU1FXTtcbiAgdmFyIENvbGxlY3Rpb25Qcm90b3R5cGUgPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGUgJiYgQ29sbGVjdGlvblByb3RvdHlwZS5mb3JFYWNoICE9PSBmb3JFYWNoKSB0cnkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCAnZm9yRWFjaCcsIGZvckVhY2gpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIENvbGxlY3Rpb25Qcm90b3R5cGUuZm9yRWFjaCA9IGZvckVhY2g7XG4gIH1cbn1cbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGNyb3Nzcm9hZHMgZnJvbSAnY3Jvc3Nyb2Fkcyc7XG5pbXBvcnQgeyBpc0FycmF5LCBpc05vbkVtcHR5QXJyYXksIG5vb3AgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RTY3JlZW4ge1xuXHRvQ3Jvc3MgPSBudWxsO1xuXHRzU2NyZWVuTmFtZTtcblx0YVZpZXdNb2RlbHM7XG5cblx0Y29uc3RydWN0b3Ioc2NyZWVuTmFtZSwgdmlld01vZGVscyA9IFtdKSB7XG5cdFx0dGhpcy5zU2NyZWVuTmFtZSA9IHNjcmVlbk5hbWU7XG5cdFx0dGhpcy5hVmlld01vZGVscyA9IGlzQXJyYXkodmlld01vZGVscykgPyB2aWV3TW9kZWxzIDogW107XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge0FycmF5fVxuXHQgKi9cblx0dmlld01vZGVscygpIHtcblx0XHRyZXR1cm4gdGhpcy5hVmlld01vZGVscztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0c2NyZWVuTmFtZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5zU2NyZWVuTmFtZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7P0FycmF5KX1cblx0ICovXG5cdHJvdXRlcygpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7P09iamVjdH1cblx0ICovXG5cdF9fY3Jvc3MoKSB7XG5cdFx0cmV0dXJuIHRoaXMub0Nyb3NzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0X19zdGFydCgpIHtcblx0XHRsZXQgcm91dGUgPSBudWxsLFxuXHRcdFx0Zk1hdGNoZXIgPSBudWxsO1xuXHRcdGNvbnN0IHJvdXRlcyA9IHRoaXMucm91dGVzKCk7XG5cblx0XHRpZiAoaXNOb25FbXB0eUFycmF5KHJvdXRlcykpIHtcblx0XHRcdGZNYXRjaGVyID0gXy5iaW5kKHRoaXMub25Sb3V0ZSB8fCBub29wLCB0aGlzKTtcblx0XHRcdHJvdXRlID0gY3Jvc3Nyb2Fkcy5jcmVhdGUoKTtcblxuXHRcdFx0cm91dGVzLmZvckVhY2goKGl0ZW0pID0+IHtcblx0XHRcdFx0aWYgKGl0ZW0gJiYgcm91dGUpIHtcblx0XHRcdFx0XHRyb3V0ZS5hZGRSb3V0ZShpdGVtWzBdLCBmTWF0Y2hlcikucnVsZXMgPSBpdGVtWzFdO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5vQ3Jvc3MgPSByb3V0ZTtcblx0XHR9XG5cdH1cbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2UvdHJpbVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5zc207IiwidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXMoaGlkZGVuS2V5cywga2V5KSAmJiBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG52YXIgcHJvY2VzcyA9IGdsb2JhbC5wcm9jZXNzO1xudmFyIHZlcnNpb25zID0gcHJvY2VzcyAmJiBwcm9jZXNzLnZlcnNpb25zO1xudmFyIHY4ID0gdmVyc2lvbnMgJiYgdmVyc2lvbnMudjg7XG52YXIgbWF0Y2gsIHZlcnNpb247XG5cbmlmICh2OCkge1xuICBtYXRjaCA9IHY4LnNwbGl0KCcuJyk7XG4gIHZlcnNpb24gPSBtYXRjaFswXSA8IDQgPyAxIDogbWF0Y2hbMF0gKyBtYXRjaFsxXTtcbn0gZWxzZSBpZiAodXNlckFnZW50KSB7XG4gIG1hdGNoID0gdXNlckFnZW50Lm1hdGNoKC9FZGdlXFwvKFxcZCspLyk7XG4gIGlmICghbWF0Y2ggfHwgbWF0Y2hbMV0gPj0gNzQpIHtcbiAgICBtYXRjaCA9IHVzZXJBZ2VudC5tYXRjaCgvQ2hyb21lXFwvKFxcZCspLyk7XG4gICAgaWYgKG1hdGNoKSB2ZXJzaW9uID0gbWF0Y2hbMV07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB2ZXJzaW9uICYmICt2ZXJzaW9uO1xuIiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgcHJvcGVydHlJc0VudW1lcmFibGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXByb3BlcnR5LWlzLWVudW1lcmFibGUnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgSUU4X0RPTV9ERUZJTkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaWU4LWRvbS1kZWZpbmUnKTtcblxudmFyIG5hdGl2ZUdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvclxuZXhwb3J0cy5mID0gREVTQ1JJUFRPUlMgPyBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoTywgUCkge1xuICBPID0gdG9JbmRleGVkT2JqZWN0KE8pO1xuICBQID0gdG9QcmltaXRpdmUoUCwgdHJ1ZSk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG4gIGlmIChoYXMoTywgUCkpIHJldHVybiBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IoIXByb3BlcnR5SXNFbnVtZXJhYmxlTW9kdWxlLmYuY2FsbChPLCBQKSwgT1tQXSk7XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG4vLyBgVG9QcmltaXRpdmVgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy10b3ByaW1pdGl2ZVxuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpbnB1dCwgUFJFRkVSUkVEX1NUUklORykge1xuICBpZiAoIWlzT2JqZWN0KGlucHV0KSkgcmV0dXJuIGlucHV0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaW5wdXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpbnB1dCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVBSRUZFUlJFRF9TVFJJTkcgJiYgdHlwZW9mIChmbiA9IGlucHV0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGlucHV0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgYVBvc3NpYmxlUHJvdG90eXBlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtcG9zc2libGUtcHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2Zcbi8vIFdvcmtzIHdpdGggX19wcm90b19fIG9ubHkuIE9sZCB2OCBjYW4ndCB3b3JrIHdpdGggbnVsbCBwcm90byBvYmplY3RzLlxuLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG8gKi9cbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENPUlJFQ1RfU0VUVEVSID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgc2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCAnX19wcm90b19fJykuc2V0O1xuICAgIHNldHRlci5jYWxsKHRlc3QsIFtdKTtcbiAgICBDT1JSRUNUX1NFVFRFUiA9IHRlc3QgaW5zdGFuY2VvZiBBcnJheTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gZnVuY3Rpb24gc2V0UHJvdG90eXBlT2YoTywgcHJvdG8pIHtcbiAgICBhbk9iamVjdChPKTtcbiAgICBhUG9zc2libGVQcm90b3R5cGUocHJvdG8pO1xuICAgIGlmIChDT1JSRUNUX1NFVFRFUikgc2V0dGVyLmNhbGwoTywgcHJvdG8pO1xuICAgIGVsc2UgTy5fX3Byb3RvX18gPSBwcm90bztcbiAgICByZXR1cm4gTztcbiAgfTtcbn0oKSA6IHVuZGVmaW5lZCk7XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgZGVmaW5lUHJvcGVydGllcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnRpZXMnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG52YXIgaGlkZGVuS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oaWRkZW4ta2V5cycpO1xudmFyIGh0bWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaHRtbCcpO1xudmFyIGRvY3VtZW50Q3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIHNoYXJlZEtleSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQta2V5Jyk7XG5cbnZhciBHVCA9ICc+JztcbnZhciBMVCA9ICc8JztcbnZhciBQUk9UT1RZUEUgPSAncHJvdG90eXBlJztcbnZhciBTQ1JJUFQgPSAnc2NyaXB0JztcbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcblxudmFyIEVtcHR5Q29uc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH07XG5cbnZhciBzY3JpcHRUYWcgPSBmdW5jdGlvbiAoY29udGVudCkge1xuICByZXR1cm4gTFQgKyBTQ1JJUFQgKyBHVCArIGNvbnRlbnQgKyBMVCArICcvJyArIFNDUklQVCArIEdUO1xufTtcblxuLy8gQ3JlYXRlIG9iamVjdCB3aXRoIGZha2UgYG51bGxgIHByb3RvdHlwZTogdXNlIEFjdGl2ZVggT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFBY3RpdmVYID0gZnVuY3Rpb24gKGFjdGl2ZVhEb2N1bWVudCkge1xuICBhY3RpdmVYRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCcnKSk7XG4gIGFjdGl2ZVhEb2N1bWVudC5jbG9zZSgpO1xuICB2YXIgdGVtcCA9IGFjdGl2ZVhEb2N1bWVudC5wYXJlbnRXaW5kb3cuT2JqZWN0O1xuICBhY3RpdmVYRG9jdW1lbnQgPSBudWxsOyAvLyBhdm9pZCBtZW1vcnkgbGVha1xuICByZXR1cm4gdGVtcDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBpZnJhbWUgT2JqZWN0IHdpdGggY2xlYXJlZCBwcm90b3R5cGVcbnZhciBOdWxsUHJvdG9PYmplY3RWaWFJRnJhbWUgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIFRocmFzaCwgd2FzdGUgYW5kIHNvZG9teTogSUUgR0MgYnVnXG4gIHZhciBpZnJhbWUgPSBkb2N1bWVudENyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICB2YXIgSlMgPSAnamF2YScgKyBTQ1JJUFQgKyAnOic7XG4gIHZhciBpZnJhbWVEb2N1bWVudDtcbiAgaWZyYW1lLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGh0bWwuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzQ3NVxuICBpZnJhbWUuc3JjID0gU3RyaW5nKEpTKTtcbiAgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDtcbiAgaWZyYW1lRG9jdW1lbnQub3BlbigpO1xuICBpZnJhbWVEb2N1bWVudC53cml0ZShzY3JpcHRUYWcoJ2RvY3VtZW50LkY9T2JqZWN0JykpO1xuICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICByZXR1cm4gaWZyYW1lRG9jdW1lbnQuRjtcbn07XG5cbi8vIENoZWNrIGZvciBkb2N1bWVudC5kb21haW4gYW5kIGFjdGl2ZSB4IHN1cHBvcnRcbi8vIE5vIG5lZWQgdG8gdXNlIGFjdGl2ZSB4IGFwcHJvYWNoIHdoZW4gZG9jdW1lbnQuZG9tYWluIGlzIG5vdCBzZXRcbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0vaXNzdWVzLzE1MFxuLy8gdmFyaWF0aW9uIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9raXRjYW1icmlkZ2UvZXM1LXNoaW0vY29tbWl0LzRmNzM4YWMwNjYzNDZcbi8vIGF2b2lkIElFIEdDIGJ1Z1xudmFyIGFjdGl2ZVhEb2N1bWVudDtcbnZhciBOdWxsUHJvdG9PYmplY3QgPSBmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgLyogZ2xvYmFsIEFjdGl2ZVhPYmplY3QgKi9cbiAgICBhY3RpdmVYRG9jdW1lbnQgPSBkb2N1bWVudC5kb21haW4gJiYgbmV3IEFjdGl2ZVhPYmplY3QoJ2h0bWxmaWxlJyk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGlnbm9yZSAqLyB9XG4gIE51bGxQcm90b09iamVjdCA9IGFjdGl2ZVhEb2N1bWVudCA/IE51bGxQcm90b09iamVjdFZpYUFjdGl2ZVgoYWN0aXZlWERvY3VtZW50KSA6IE51bGxQcm90b09iamVjdFZpYUlGcmFtZSgpO1xuICB2YXIgbGVuZ3RoID0gZW51bUJ1Z0tleXMubGVuZ3RoO1xuICB3aGlsZSAobGVuZ3RoLS0pIGRlbGV0ZSBOdWxsUHJvdG9PYmplY3RbUFJPVE9UWVBFXVtlbnVtQnVnS2V5c1tsZW5ndGhdXTtcbiAgcmV0dXJuIE51bGxQcm90b09iamVjdCgpO1xufTtcblxuaGlkZGVuS2V5c1tJRV9QUk9UT10gPSB0cnVlO1xuXG4vLyBgT2JqZWN0LmNyZWF0ZWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5jcmVhdGVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LmNyZWF0ZSB8fCBmdW5jdGlvbiBjcmVhdGUoTywgUHJvcGVydGllcykge1xuICB2YXIgcmVzdWx0O1xuICBpZiAoTyAhPT0gbnVsbCkge1xuICAgIEVtcHR5Q29uc3RydWN0b3JbUFJPVE9UWVBFXSA9IGFuT2JqZWN0KE8pO1xuICAgIHJlc3VsdCA9IG5ldyBFbXB0eUNvbnN0cnVjdG9yKCk7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gbnVsbDtcbiAgICAvLyBhZGQgXCJfX3Byb3RvX19cIiBmb3IgT2JqZWN0LmdldFByb3RvdHlwZU9mIHBvbHlmaWxsXG4gICAgcmVzdWx0W0lFX1BST1RPXSA9IE87XG4gIH0gZWxzZSByZXN1bHQgPSBOdWxsUHJvdG9PYmplY3QoKTtcbiAgcmV0dXJuIFByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IGRlZmluZVByb3BlcnRpZXMocmVzdWx0LCBQcm9wZXJ0aWVzKTtcbn07XG4iLCJyZXF1aXJlKCcuL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgRE9NSXRlcmFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMnKTtcbnZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbmZvciAodmFyIENPTExFQ1RJT05fTkFNRSBpbiBET01JdGVyYWJsZXMpIHtcbiAgdmFyIENvbGxlY3Rpb24gPSBnbG9iYWxbQ09MTEVDVElPTl9OQU1FXTtcbiAgdmFyIENvbGxlY3Rpb25Qcm90b3R5cGUgPSBDb2xsZWN0aW9uICYmIENvbGxlY3Rpb24ucHJvdG90eXBlO1xuICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZSAmJiBjbGFzc29mKENvbGxlY3Rpb25Qcm90b3R5cGUpICE9PSBUT19TVFJJTkdfVEFHKSB7XG4gICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIENPTExFQ1RJT05fTkFNRSk7XG4gIH1cbiAgSXRlcmF0b3JzW0NPTExFQ1RJT05fTkFNRV0gPSBJdGVyYXRvcnMuQXJyYXk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgcmVnZXhwRmxhZ3MgPSByZXF1aXJlKCcuL3JlZ2V4cC1mbGFncycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuL3JlZ2V4cC1zdGlja3ktaGVscGVycycpO1xudmFyIHNoYXJlZCA9IHJlcXVpcmUoJy4vc2hhcmVkJyk7XG5cbnZhciBuYXRpdmVFeGVjID0gUmVnRXhwLnByb3RvdHlwZS5leGVjO1xudmFyIG5hdGl2ZVJlcGxhY2UgPSBzaGFyZWQoJ25hdGl2ZS1zdHJpbmctcmVwbGFjZScsIFN0cmluZy5wcm90b3R5cGUucmVwbGFjZSk7XG5cbnZhciBwYXRjaGVkRXhlYyA9IG5hdGl2ZUV4ZWM7XG5cbnZhciBVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcgPSAoZnVuY3Rpb24gKCkge1xuICB2YXIgcmUxID0gL2EvO1xuICB2YXIgcmUyID0gL2IqL2c7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTEsICdhJyk7XG4gIG5hdGl2ZUV4ZWMuY2FsbChyZTIsICdhJyk7XG4gIHJldHVybiByZTEubGFzdEluZGV4ICE9PSAwIHx8IHJlMi5sYXN0SW5kZXggIT09IDA7XG59KSgpO1xuXG52YXIgVU5TVVBQT1JURURfWSA9IHN0aWNreUhlbHBlcnMuVU5TVVBQT1JURURfWSB8fCBzdGlja3lIZWxwZXJzLkJST0tFTl9DQVJFVDtcblxuLy8gbm9ucGFydGljaXBhdGluZyBjYXB0dXJpbmcgZ3JvdXAsIGNvcGllZCBmcm9tIGVzNS1zaGltJ3MgU3RyaW5nI3NwbGl0IHBhdGNoLlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlZ2V4cC9uby1hc3NlcnRpb24tY2FwdHVyaW5nLWdyb3VwLCByZWdleHAvbm8tZW1wdHktZ3JvdXAsIHJlZ2V4cC9uby1sYXp5LWVuZHMgLS0gdGVzdGluZ1xudmFyIE5QQ0dfSU5DTFVERUQgPSAvKCk/Py8uZXhlYygnJylbMV0gIT09IHVuZGVmaW5lZDtcblxudmFyIFBBVENIID0gVVBEQVRFU19MQVNUX0lOREVYX1dST05HIHx8IE5QQ0dfSU5DTFVERUQgfHwgVU5TVVBQT1JURURfWTtcblxuaWYgKFBBVENIKSB7XG4gIHBhdGNoZWRFeGVjID0gZnVuY3Rpb24gZXhlYyhzdHIpIHtcbiAgICB2YXIgcmUgPSB0aGlzO1xuICAgIHZhciBsYXN0SW5kZXgsIHJlQ29weSwgbWF0Y2gsIGk7XG4gICAgdmFyIHN0aWNreSA9IFVOU1VQUE9SVEVEX1kgJiYgcmUuc3RpY2t5O1xuICAgIHZhciBmbGFncyA9IHJlZ2V4cEZsYWdzLmNhbGwocmUpO1xuICAgIHZhciBzb3VyY2UgPSByZS5zb3VyY2U7XG4gICAgdmFyIGNoYXJzQWRkZWQgPSAwO1xuICAgIHZhciBzdHJDb3B5ID0gc3RyO1xuXG4gICAgaWYgKHN0aWNreSkge1xuICAgICAgZmxhZ3MgPSBmbGFncy5yZXBsYWNlKCd5JywgJycpO1xuICAgICAgaWYgKGZsYWdzLmluZGV4T2YoJ2cnKSA9PT0gLTEpIHtcbiAgICAgICAgZmxhZ3MgKz0gJ2cnO1xuICAgICAgfVxuXG4gICAgICBzdHJDb3B5ID0gU3RyaW5nKHN0cikuc2xpY2UocmUubGFzdEluZGV4KTtcbiAgICAgIC8vIFN1cHBvcnQgYW5jaG9yZWQgc3RpY2t5IGJlaGF2aW9yLlxuICAgICAgaWYgKHJlLmxhc3RJbmRleCA+IDAgJiYgKCFyZS5tdWx0aWxpbmUgfHwgcmUubXVsdGlsaW5lICYmIHN0cltyZS5sYXN0SW5kZXggLSAxXSAhPT0gJ1xcbicpKSB7XG4gICAgICAgIHNvdXJjZSA9ICcoPzogJyArIHNvdXJjZSArICcpJztcbiAgICAgICAgc3RyQ29weSA9ICcgJyArIHN0ckNvcHk7XG4gICAgICAgIGNoYXJzQWRkZWQrKztcbiAgICAgIH1cbiAgICAgIC8vIF4oPyArIHJ4ICsgKSBpcyBuZWVkZWQsIGluIGNvbWJpbmF0aW9uIHdpdGggc29tZSBzdHIgc2xpY2luZywgdG9cbiAgICAgIC8vIHNpbXVsYXRlIHRoZSAneScgZmxhZy5cbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14oPzonICsgc291cmNlICsgJyknLCBmbGFncyk7XG4gICAgfVxuXG4gICAgaWYgKE5QQ0dfSU5DTFVERUQpIHtcbiAgICAgIHJlQ29weSA9IG5ldyBSZWdFeHAoJ14nICsgc291cmNlICsgJyQoPyFcXFxccyknLCBmbGFncyk7XG4gICAgfVxuICAgIGlmIChVUERBVEVTX0xBU1RfSU5ERVhfV1JPTkcpIGxhc3RJbmRleCA9IHJlLmxhc3RJbmRleDtcblxuICAgIG1hdGNoID0gbmF0aXZlRXhlYy5jYWxsKHN0aWNreSA/IHJlQ29weSA6IHJlLCBzdHJDb3B5KTtcblxuICAgIGlmIChzdGlja3kpIHtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBtYXRjaC5pbnB1dCA9IG1hdGNoLmlucHV0LnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaFswXSA9IG1hdGNoWzBdLnNsaWNlKGNoYXJzQWRkZWQpO1xuICAgICAgICBtYXRjaC5pbmRleCA9IHJlLmxhc3RJbmRleDtcbiAgICAgICAgcmUubGFzdEluZGV4ICs9IG1hdGNoWzBdLmxlbmd0aDtcbiAgICAgIH0gZWxzZSByZS5sYXN0SW5kZXggPSAwO1xuICAgIH0gZWxzZSBpZiAoVVBEQVRFU19MQVNUX0lOREVYX1dST05HICYmIG1hdGNoKSB7XG4gICAgICByZS5sYXN0SW5kZXggPSByZS5nbG9iYWwgPyBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCA6IGxhc3RJbmRleDtcbiAgICB9XG4gICAgaWYgKE5QQ0dfSU5DTFVERUQgJiYgbWF0Y2ggJiYgbWF0Y2gubGVuZ3RoID4gMSkge1xuICAgICAgLy8gRml4IGJyb3dzZXJzIHdob3NlIGBleGVjYCBtZXRob2RzIGRvbid0IGNvbnNpc3RlbnRseSByZXR1cm4gYHVuZGVmaW5lZGBcbiAgICAgIC8vIGZvciBOUENHLCBsaWtlIElFOC4gTk9URTogVGhpcyBkb2Vzbicgd29yayBmb3IgLyguPyk/L1xuICAgICAgbmF0aXZlUmVwbGFjZS5jYWxsKG1hdGNoWzBdLCByZUNvcHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yIChpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGggLSAyOyBpKyspIHtcbiAgICAgICAgICBpZiAoYXJndW1lbnRzW2ldID09PSB1bmRlZmluZWQpIG1hdGNoW2ldID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2g7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0Y2hlZEV4ZWM7XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5cbmNvbnN0IFNUT1JBR0VfS0VZID0gJ19fcmxBJztcbmNvbnN0IFRJTUVfS0VZID0gJ19fcmxUJztcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RvcmFnZU5hbWVcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdG9yYWdlU3VwcG9ydGVkKHN0b3JhZ2VOYW1lKSB7XG5cdGxldCBzdG9yYWdlSXNBdmFpbGFibGUgPSBmYWxzZTtcblx0dHJ5IHtcblx0XHQvLyBhdDogd2luZG93W3N0b3JhZ2VOYW1lXSBmaXJlZm94IHRocm93cyBTZWN1cml0eUVycm9yOiBUaGUgb3BlcmF0aW9uIGlzIGluc2VjdXJlLiB3aGVuIGluIGlmcmFtZVxuXHRcdHN0b3JhZ2VJc0F2YWlsYWJsZSA9IHN0b3JhZ2VOYW1lIGluIHdpbmRvdyAmJiB3aW5kb3dbc3RvcmFnZU5hbWVdICYmIHdpbmRvd1tzdG9yYWdlTmFtZV0uc2V0SXRlbTtcblx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXG5cdGlmIChzdG9yYWdlSXNBdmFpbGFibGUpIHtcblx0XHRjb25zdCBzID0gd2luZG93W3N0b3JhZ2VOYW1lXSxcblx0XHRcdGtleSA9ICd0ZXN0TG9jYWxTdG9yYWdlXycgKyB3aW5kb3cuTWF0aC5yYW5kb20oKTtcblxuXHRcdHRyeSB7XG5cdFx0XHRzLnNldEl0ZW0oa2V5LCBrZXkpO1xuXHRcdFx0aWYgKGtleSA9PT0gcy5nZXRJdGVtKGtleSkpIHtcblx0XHRcdFx0cy5yZW1vdmVJdGVtKGtleSk7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblx0fVxuXG5cdHJldHVybiBmYWxzZTtcbn1cblxuY29uc3QgU0VTU19TVE9SQUdFID0gaXNTdG9yYWdlU3VwcG9ydGVkKCdzZXNzaW9uU3RvcmFnZScpID8gd2luZG93LnNlc3Npb25TdG9yYWdlIHx8IG51bGwgOiBudWxsO1xuY29uc3QgV0lOX1NUT1JBR0UgPSB3aW5kb3cudG9wIHx8IHdpbmRvdyB8fCBudWxsO1xuXG5jb25zdCBfX2dldCA9IChrZXkpID0+IHtcblx0bGV0IHJlc3VsdCA9IG51bGw7XG5cdGlmIChTRVNTX1NUT1JBR0UpIHtcblx0XHRyZXN1bHQgPSBTRVNTX1NUT1JBR0UuZ2V0SXRlbShrZXkpIHx8IG51bGw7XG5cdH0gZWxzZSBpZiAoV0lOX1NUT1JBR0UgJiYgd2luZG93LkpTT04pIHtcblx0XHRjb25zdCBkYXRhID1cblx0XHRcdFdJTl9TVE9SQUdFLm5hbWUgJiYgJ3snID09PSBXSU5fU1RPUkFHRS5uYW1lLnRvU3RyaW5nKCkuc3Vic3RyKDAsIDEpXG5cdFx0XHRcdD8gd2luZG93LkpTT04ucGFyc2UoV0lOX1NUT1JBR0UubmFtZS50b1N0cmluZygpKVxuXHRcdFx0XHQ6IG51bGw7XG5cdFx0cmVzdWx0ID0gZGF0YSA/IGRhdGFba2V5XSB8fCBudWxsIDogbnVsbDtcblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5jb25zdCBfX3NldCA9IChrZXksIHZhbHVlKSA9PiB7XG5cdGlmIChTRVNTX1NUT1JBR0UpIHtcblx0XHRTRVNTX1NUT1JBR0Uuc2V0SXRlbShrZXksIHZhbHVlKTtcblx0fSBlbHNlIGlmIChXSU5fU1RPUkFHRSAmJiB3aW5kb3cuSlNPTikge1xuXHRcdGxldCBkYXRhID1cblx0XHRcdFdJTl9TVE9SQUdFLm5hbWUgJiYgJ3snID09PSBXSU5fU1RPUkFHRS5uYW1lLnRvU3RyaW5nKCkuc3Vic3RyKDAsIDEpXG5cdFx0XHRcdD8gd2luZG93LkpTT04ucGFyc2UoV0lOX1NUT1JBR0UubmFtZS50b1N0cmluZygpKVxuXHRcdFx0XHQ6IG51bGw7XG5cdFx0ZGF0YSA9IGRhdGEgfHwge307XG5cdFx0ZGF0YVtrZXldID0gdmFsdWU7XG5cblx0XHRXSU5fU1RPUkFHRS5uYW1lID0gd2luZG93LkpTT04uc3RyaW5naWZ5KGRhdGEpO1xuXHR9XG59O1xuXG5jb25zdCB0aW1lc3RhbXAgPSAoKSA9PiB3aW5kb3cuTWF0aC5yb3VuZChuZXcgd2luZG93LkRhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKTtcblxuY29uc3Qgc2V0VGltZXN0YW1wID0gKCkgPT4gX19zZXQoVElNRV9LRVksIHRpbWVzdGFtcCgpKTtcblxuY29uc3QgZ2V0VGltZXN0YW1wID0gKCkgPT4ge1xuXHRjb25zdCB0aW1lID0gX19nZXQoVElNRV9LRVksIDApO1xuXHRyZXR1cm4gdGltZSA/IHdpbmRvdy5wYXJzZUludCh0aW1lLCAxMCkgfHwgMCA6IDA7XG59O1xuXG4vKipcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRIYXNoKCkge1xuXHRyZXR1cm4gX19nZXQoU1RPUkFHRV9LRVkpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SGFzaCgpIHtcblx0Y29uc3Qga2V5ID0gJ0F1dGhBY2NvdW50SGFzaCcsXG5cdFx0YXBwRGF0YSA9IHdpbmRvdy5fX3JsYWhfZGF0YSgpO1xuXG5cdF9fc2V0KFNUT1JBR0VfS0VZLCBhcHBEYXRhICYmIGFwcERhdGFba2V5XSA/IGFwcERhdGFba2V5XSA6ICcnKTtcblx0c2V0VGltZXN0YW1wKCk7XG59XG5cbi8qKlxuICogQHJldHVybnMge3ZvaWR9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckhhc2goKSB7XG5cdF9fc2V0KFNUT1JBR0VfS0VZLCAnJyk7XG5cdHNldFRpbWVzdGFtcCgpO1xufVxuXG4vKipcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tUaW1lc3RhbXAoKSB7XG5cdGlmICh0aW1lc3RhbXAoKSA+IGdldFRpbWVzdGFtcCgpICsgMTAwMCAqIDYwICogNjApIHtcblx0XHQvLyA2MG1cblx0XHRjbGVhckhhc2goKTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXHRyZXR1cm4gZmFsc2U7XG59XG5cbi8vIGluaXQgc2VjdGlvblxud2luZG93LnNldEludGVydmFsKHNldFRpbWVzdGFtcCwgMTAwMCAqIDYwKTsgLy8gMW1cbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2xvYmFsO1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignbmF2aWdhdG9yJywgJ3VzZXJBZ2VudCcpIHx8ICcnO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGRlZmluZVByb3BlcnRpZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0aWVzJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xudmFyIGhpZGRlbktleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGlkZGVuLWtleXMnKTtcbnZhciBodG1sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2h0bWwnKTtcbnZhciBkb2N1bWVudENyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcbnZhciBzaGFyZWRLZXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLWtleScpO1xuXG52YXIgR1QgPSAnPic7XG52YXIgTFQgPSAnPCc7XG52YXIgUFJPVE9UWVBFID0gJ3Byb3RvdHlwZSc7XG52YXIgU0NSSVBUID0gJ3NjcmlwdCc7XG52YXIgSUVfUFJPVE8gPSBzaGFyZWRLZXkoJ0lFX1BST1RPJyk7XG5cbnZhciBFbXB0eUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuXG52YXIgc2NyaXB0VGFnID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcbiAgcmV0dXJuIExUICsgU0NSSVBUICsgR1QgKyBjb250ZW50ICsgTFQgKyAnLycgKyBTQ1JJUFQgKyBHVDtcbn07XG5cbi8vIENyZWF0ZSBvYmplY3Qgd2l0aCBmYWtlIGBudWxsYCBwcm90b3R5cGU6IHVzZSBBY3RpdmVYIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWCA9IGZ1bmN0aW9uIChhY3RpdmVYRG9jdW1lbnQpIHtcbiAgYWN0aXZlWERvY3VtZW50LndyaXRlKHNjcmlwdFRhZygnJykpO1xuICBhY3RpdmVYRG9jdW1lbnQuY2xvc2UoKTtcbiAgdmFyIHRlbXAgPSBhY3RpdmVYRG9jdW1lbnQucGFyZW50V2luZG93Lk9iamVjdDtcbiAgYWN0aXZlWERvY3VtZW50ID0gbnVsbDsgLy8gYXZvaWQgbWVtb3J5IGxlYWtcbiAgcmV0dXJuIHRlbXA7XG59O1xuXG4vLyBDcmVhdGUgb2JqZWN0IHdpdGggZmFrZSBgbnVsbGAgcHJvdG90eXBlOiB1c2UgaWZyYW1lIE9iamVjdCB3aXRoIGNsZWFyZWQgcHJvdG90eXBlXG52YXIgTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lID0gZnVuY3Rpb24gKCkge1xuICAvLyBUaHJhc2gsIHdhc3RlIGFuZCBzb2RvbXk6IElFIEdDIGJ1Z1xuICB2YXIgaWZyYW1lID0gZG9jdW1lbnRDcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcbiAgdmFyIEpTID0gJ2phdmEnICsgU0NSSVBUICsgJzonO1xuICB2YXIgaWZyYW1lRG9jdW1lbnQ7XG4gIGlmcmFtZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICBodG1sLmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy80NzVcbiAgaWZyYW1lLnNyYyA9IFN0cmluZyhKUyk7XG4gIGlmcmFtZURvY3VtZW50ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ7XG4gIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgaWZyYW1lRG9jdW1lbnQud3JpdGUoc2NyaXB0VGFnKCdkb2N1bWVudC5GPU9iamVjdCcpKTtcbiAgaWZyYW1lRG9jdW1lbnQuY2xvc2UoKTtcbiAgcmV0dXJuIGlmcmFtZURvY3VtZW50LkY7XG59O1xuXG4vLyBDaGVjayBmb3IgZG9jdW1lbnQuZG9tYWluIGFuZCBhY3RpdmUgeCBzdXBwb3J0XG4vLyBObyBuZWVkIHRvIHVzZSBhY3RpdmUgeCBhcHByb2FjaCB3aGVuIGRvY3VtZW50LmRvbWFpbiBpcyBub3Qgc2V0XG4vLyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2VzLXNoaW1zL2VzNS1zaGltL2lzc3Vlcy8xNTBcbi8vIHZhcmlhdGlvbiBvZiBodHRwczovL2dpdGh1Yi5jb20va2l0Y2FtYnJpZGdlL2VzNS1zaGltL2NvbW1pdC80ZjczOGFjMDY2MzQ2XG4vLyBhdm9pZCBJRSBHQyBidWdcbnZhciBhY3RpdmVYRG9jdW1lbnQ7XG52YXIgTnVsbFByb3RvT2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIC8qIGdsb2JhbCBBY3RpdmVYT2JqZWN0IC0tIG9sZCBJRSAqL1xuICAgIGFjdGl2ZVhEb2N1bWVudCA9IGRvY3VtZW50LmRvbWFpbiAmJiBuZXcgQWN0aXZlWE9iamVjdCgnaHRtbGZpbGUnKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogaWdub3JlICovIH1cbiAgTnVsbFByb3RvT2JqZWN0ID0gYWN0aXZlWERvY3VtZW50ID8gTnVsbFByb3RvT2JqZWN0VmlhQWN0aXZlWChhY3RpdmVYRG9jdW1lbnQpIDogTnVsbFByb3RvT2JqZWN0VmlhSUZyYW1lKCk7XG4gIHZhciBsZW5ndGggPSBlbnVtQnVnS2V5cy5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkgZGVsZXRlIE51bGxQcm90b09iamVjdFtQUk9UT1RZUEVdW2VudW1CdWdLZXlzW2xlbmd0aF1dO1xuICByZXR1cm4gTnVsbFByb3RvT2JqZWN0KCk7XG59O1xuXG5oaWRkZW5LZXlzW0lFX1BST1RPXSA9IHRydWU7XG5cbi8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuY3JlYXRlIHx8IGZ1bmN0aW9uIGNyZWF0ZShPLCBQcm9wZXJ0aWVzKSB7XG4gIHZhciByZXN1bHQ7XG4gIGlmIChPICE9PSBudWxsKSB7XG4gICAgRW1wdHlDb25zdHJ1Y3RvcltQUk9UT1RZUEVdID0gYW5PYmplY3QoTyk7XG4gICAgcmVzdWx0ID0gbmV3IEVtcHR5Q29uc3RydWN0b3IoKTtcbiAgICBFbXB0eUNvbnN0cnVjdG9yW1BST1RPVFlQRV0gPSBudWxsO1xuICAgIC8vIGFkZCBcIl9fcHJvdG9fX1wiIGZvciBPYmplY3QuZ2V0UHJvdG90eXBlT2YgcG9seWZpbGxcbiAgICByZXN1bHRbSUVfUFJPVE9dID0gTztcbiAgfSBlbHNlIHJlc3VsdCA9IE51bGxQcm90b09iamVjdCgpO1xuICByZXR1cm4gUHJvcGVydGllcyA9PT0gdW5kZWZpbmVkID8gcmVzdWx0IDogZGVmaW5lUHJvcGVydGllcyhyZXN1bHQsIFByb3BlcnRpZXMpO1xufTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tb2JqZWN0Jyk7XG52YXIgc2hhcmVkS2V5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NoYXJlZC1rZXknKTtcbnZhciBDT1JSRUNUX1BST1RPVFlQRV9HRVRURVIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY29ycmVjdC1wcm90b3R5cGUtZ2V0dGVyJyk7XG5cbnZhciBJRV9QUk9UTyA9IHNoYXJlZEtleSgnSUVfUFJPVE8nKTtcbnZhciBPYmplY3RQcm90b3R5cGUgPSBPYmplY3QucHJvdG90eXBlO1xuXG4vLyBgT2JqZWN0LmdldFByb3RvdHlwZU9mYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmdldHByb3RvdHlwZW9mXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldHByb3RvdHlwZW9mIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQ09SUkVDVF9QUk9UT1RZUEVfR0VUVEVSID8gT2JqZWN0LmdldFByb3RvdHlwZU9mIDogZnVuY3Rpb24gKE8pIHtcbiAgTyA9IHRvT2JqZWN0KE8pO1xuICBpZiAoaGFzKE8sIElFX1BST1RPKSkgcmV0dXJuIE9bSUVfUFJPVE9dO1xuICBpZiAodHlwZW9mIE8uY29uc3RydWN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBPIGluc3RhbmNlb2YgTy5jb25zdHJ1Y3Rvcikge1xuICAgIHJldHVybiBPLmNvbnN0cnVjdG9yLnByb3RvdHlwZTtcbiAgfSByZXR1cm4gTyBpbnN0YW5jZW9mIE9iamVjdCA/IE9iamVjdFByb3RvdHlwZSA6IG51bGw7XG59O1xuIiwidmFyIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKS5mO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFRPX1NUUklOR19UQUcgPSB3ZWxsS25vd25TeW1ib2woJ3RvU3RyaW5nVGFnJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0LCBUQUcsIFNUQVRJQykge1xuICBpZiAoaXQgJiYgIWhhcyhpdCA9IFNUQVRJQyA/IGl0IDogaXQucHJvdG90eXBlLCBUT19TVFJJTkdfVEFHKSkge1xuICAgIGRlZmluZVByb3BlcnR5KGl0LCBUT19TVFJJTkdfVEFHLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IFRBRyB9KTtcbiAgfVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY2xhc3NvZi1yYXcnKTtcblxudmFyIHNwbGl0ID0gJycuc3BsaXQ7XG5cbi8vIGZhbGxiYWNrIGZvciBub24tYXJyYXktbGlrZSBFUzMgYW5kIG5vbi1lbnVtZXJhYmxlIG9sZCBWOCBzdHJpbmdzXG5tb2R1bGUuZXhwb3J0cyA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gdGhyb3dzIGFuIGVycm9yIGluIHJoaW5vLCBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvcmhpbm8vaXNzdWVzLzM0NlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIHJldHVybiAhT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCk7XG59KSA/IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gY2xhc3NvZihpdCkgPT0gJ1N0cmluZycgPyBzcGxpdC5jYWxsKGl0LCAnJykgOiBPYmplY3QoaXQpO1xufSA6IE9iamVjdDtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBjaGFyQXQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3RyaW5nLW11bHRpYnl0ZScpLmNoYXJBdDtcblxuLy8gYEFkdmFuY2VTdHJpbmdJbmRleGAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFkdmFuY2VzdHJpbmdpbmRleFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoUywgaW5kZXgsIHVuaWNvZGUpIHtcbiAgcmV0dXJuIGluZGV4ICsgKHVuaWNvZGUgPyBjaGFyQXQoUywgaW5kZXgpLmxlbmd0aCA6IDEpO1xufTtcbiIsInZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQtY29udGV4dCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcblxudmFyIHB1c2ggPSBbXS5wdXNoO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgZm9yRWFjaCwgbWFwLCBmaWx0ZXIsIHNvbWUsIGV2ZXJ5LCBmaW5kLCBmaW5kSW5kZXgsIGZpbHRlck91dCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKFRZUEUpIHtcbiAgdmFyIElTX01BUCA9IFRZUEUgPT0gMTtcbiAgdmFyIElTX0ZJTFRFUiA9IFRZUEUgPT0gMjtcbiAgdmFyIElTX1NPTUUgPSBUWVBFID09IDM7XG4gIHZhciBJU19FVkVSWSA9IFRZUEUgPT0gNDtcbiAgdmFyIElTX0ZJTkRfSU5ERVggPSBUWVBFID09IDY7XG4gIHZhciBJU19GSUxURVJfT1VUID0gVFlQRSA9PSA3O1xuICB2YXIgTk9fSE9MRVMgPSBUWVBFID09IDUgfHwgSVNfRklORF9JTkRFWDtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgY2FsbGJhY2tmbiwgdGhhdCwgc3BlY2lmaWNDcmVhdGUpIHtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgc2VsZiA9IEluZGV4ZWRPYmplY3QoTyk7XG4gICAgdmFyIGJvdW5kRnVuY3Rpb24gPSBiaW5kKGNhbGxiYWNrZm4sIHRoYXQsIDMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChzZWxmLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gMDtcbiAgICB2YXIgY3JlYXRlID0gc3BlY2lmaWNDcmVhdGUgfHwgYXJyYXlTcGVjaWVzQ3JlYXRlO1xuICAgIHZhciB0YXJnZXQgPSBJU19NQVAgPyBjcmVhdGUoJHRoaXMsIGxlbmd0aCkgOiBJU19GSUxURVIgfHwgSVNfRklMVEVSX09VVCA/IGNyZWF0ZSgkdGhpcywgMCkgOiB1bmRlZmluZWQ7XG4gICAgdmFyIHZhbHVlLCByZXN1bHQ7XG4gICAgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIGlmIChOT19IT0xFUyB8fCBpbmRleCBpbiBzZWxmKSB7XG4gICAgICB2YWx1ZSA9IHNlbGZbaW5kZXhdO1xuICAgICAgcmVzdWx0ID0gYm91bmRGdW5jdGlvbih2YWx1ZSwgaW5kZXgsIE8pO1xuICAgICAgaWYgKFRZUEUpIHtcbiAgICAgICAgaWYgKElTX01BUCkgdGFyZ2V0W2luZGV4XSA9IHJlc3VsdDsgLy8gbWFwXG4gICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgc3dpdGNoIChUWVBFKSB7XG4gICAgICAgICAgY2FzZSAzOiByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgIC8vIHNvbWVcbiAgICAgICAgICBjYXNlIDU6IHJldHVybiB2YWx1ZTsgICAgICAgICAgICAgLy8gZmluZFxuICAgICAgICAgIGNhc2UgNjogcmV0dXJuIGluZGV4OyAgICAgICAgICAgICAvLyBmaW5kSW5kZXhcbiAgICAgICAgICBjYXNlIDI6IHB1c2guY2FsbCh0YXJnZXQsIHZhbHVlKTsgLy8gZmlsdGVyXG4gICAgICAgIH0gZWxzZSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDQ6IHJldHVybiBmYWxzZTsgICAgICAgICAgICAgLy8gZXZlcnlcbiAgICAgICAgICBjYXNlIDc6IHB1c2guY2FsbCh0YXJnZXQsIHZhbHVlKTsgLy8gZmlsdGVyT3V0XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIElTX0ZJTkRfSU5ERVggPyAtMSA6IElTX1NPTUUgfHwgSVNfRVZFUlkgPyBJU19FVkVSWSA6IHRhcmdldDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG4gIGZvckVhY2g6IGNyZWF0ZU1ldGhvZCgwKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5tYXBcbiAgbWFwOiBjcmVhdGVNZXRob2QoMSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsdGVyXG4gIGZpbHRlcjogY3JlYXRlTWV0aG9kKDIpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLnNvbWVgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5zb21lXG4gIHNvbWU6IGNyZWF0ZU1ldGhvZCgzKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5ldmVyeWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmV2ZXJ5XG4gIGV2ZXJ5OiBjcmVhdGVNZXRob2QoNCksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRcbiAgZmluZDogY3JlYXRlTWV0aG9kKDUpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbmRJbmRleGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbmRJbmRleFxuICBmaW5kSW5kZXg6IGNyZWF0ZU1ldGhvZCg2KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJPdXRgIG1ldGhvZFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC1hcnJheS1maWx0ZXJpbmdcbiAgZmlsdGVyT3V0OiBjcmVhdGVNZXRob2QoNylcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY2xhc3NvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICAvLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3N1xuICByZXR1cm4gVjhfVkVSU0lPTiA+PSA1MSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVjdG9yID0ge307XG4gICAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBmb286IDEgfTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheVtNRVRIT0RfTkFNRV0oQm9vbGVhbikuZm9vICE9PSAxO1xuICB9KTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvc3RhYmxlL2luc3RhbmNlL2NvbmNhdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5jcm9zc3JvYWRzOyIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyBpc1VuZCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdCc7XG5cbmNsYXNzIEFic3RyYWN0Q2hlY2tib3ggZXh0ZW5kcyBBYnN0cmFjdENvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zID0ge31cblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMudmFsdWUgPSBwYXJhbXMudmFsdWU7XG5cdFx0aWYgKGlzVW5kKHRoaXMudmFsdWUpIHx8ICF0aGlzLnZhbHVlLnN1YnNjcmliZSkge1xuXHRcdFx0dGhpcy52YWx1ZSA9IGtvLm9ic2VydmFibGUoaXNVbmQodGhpcy52YWx1ZSkgPyBmYWxzZSA6ICEhdGhpcy52YWx1ZSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5lbmFibGUgPSBwYXJhbXMuZW5hYmxlO1xuXHRcdGlmIChpc1VuZCh0aGlzLmVuYWJsZSkgfHwgIXRoaXMuZW5hYmxlLnN1YnNjcmliZSkge1xuXHRcdFx0dGhpcy5lbmFibGUgPSBrby5vYnNlcnZhYmxlKGlzVW5kKHRoaXMuZW5hYmxlKSA/IHRydWUgOiAhIXRoaXMuZW5hYmxlKTtcblx0XHR9XG5cblx0XHR0aGlzLmRpc2FibGUgPSBwYXJhbXMuZGlzYWJsZTtcblx0XHRpZiAoaXNVbmQodGhpcy5kaXNhYmxlKSB8fCAhdGhpcy5kaXNhYmxlLnN1YnNjcmliZSkge1xuXHRcdFx0dGhpcy5kaXNhYmxlID0ga28ub2JzZXJ2YWJsZShpc1VuZCh0aGlzLmRpc2FibGUpID8gZmFsc2UgOiAhIXRoaXMuZGlzYWJsZSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5sYWJlbCA9IHBhcmFtcy5sYWJlbCB8fCAnJztcblx0XHR0aGlzLmlubGluZSA9IGlzVW5kKHBhcmFtcy5pbmxpbmUpID8gZmFsc2UgOiBwYXJhbXMuaW5saW5lO1xuXG5cdFx0dGhpcy5yZWFkT25seSA9IGlzVW5kKHBhcmFtcy5yZWFkT25seSkgPyBmYWxzZSA6ICEhcGFyYW1zLnJlYWRPbmx5O1xuXHRcdHRoaXMuaW52ZXJ0ZWQgPSBpc1VuZChwYXJhbXMuaW52ZXJ0ZWQpID8gZmFsc2UgOiAhIXBhcmFtcy5pbnZlcnRlZDtcblxuXHRcdHRoaXMubGFiZWxlZCA9ICFpc1VuZChwYXJhbXMubGFiZWwpO1xuXHRcdHRoaXMubGFiZWxBbmltYXRlZCA9ICEhcGFyYW1zLmxhYmVsQW5pbWF0ZWQ7XG5cdH1cblxuXHRjbGljaygpIHtcblx0XHRpZiAoIXRoaXMucmVhZE9ubHkgJiYgdGhpcy5lbmFibGUoKSAmJiAhdGhpcy5kaXNhYmxlKCkpIHtcblx0XHRcdHRoaXMudmFsdWUoIXRoaXMudmFsdWUoKSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCB7IEFic3RyYWN0Q2hlY2tib3gsIEFic3RyYWN0Q2hlY2tib3ggYXMgZGVmYXVsdCB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBwYXJzZTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuLyoqXG4gKiBQYXJzZXMgc3RydWN0dXJlZCBlLW1haWwgYWRkcmVzc2VzIGZyb20gYW4gYWRkcmVzcyBmaWVsZFxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogICAgXCJOYW1lIDxhZGRyZXNzQGRvbWFpbj5cIlxuICpcbiAqIHdpbGwgYmUgY29udmVydGVkIHRvXG4gKlxuICogICAgIFt7bmFtZTogXCJOYW1lXCIsIGFkZHJlc3M6IFwiYWRkcmVzc0Bkb21haW5cIn1dXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHN0ciBBZGRyZXNzIGZpZWxkXG4gKiBAcmV0dXJuIHtBcnJheX0gQW4gYXJyYXkgb2YgYWRkcmVzcyBvYmplY3RzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlKHN0cikge1xuICB2YXIgdG9rZW5pemVyID0gbmV3IFRva2VuaXplcihzdHIpO1xuICB2YXIgdG9rZW5zID0gdG9rZW5pemVyLnRva2VuaXplKCk7XG5cbiAgdmFyIGFkZHJlc3NlcyA9IFtdO1xuICB2YXIgYWRkcmVzcyA9IFtdO1xuICB2YXIgcGFyc2VkQWRkcmVzc2VzID0gW107XG5cbiAgdG9rZW5zLmZvckVhY2goZnVuY3Rpb24gKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdvcGVyYXRvcicgJiYgKHRva2VuLnZhbHVlID09PSAnLCcgfHwgdG9rZW4udmFsdWUgPT09ICc7JykpIHtcbiAgICAgIGlmIChhZGRyZXNzLmxlbmd0aCkge1xuICAgICAgICBhZGRyZXNzZXMucHVzaChhZGRyZXNzKTtcbiAgICAgIH1cbiAgICAgIGFkZHJlc3MgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkcmVzcy5wdXNoKHRva2VuKTtcbiAgICB9XG4gIH0pO1xuXG4gIGlmIChhZGRyZXNzLmxlbmd0aCkge1xuICAgIGFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICB9XG5cbiAgYWRkcmVzc2VzLmZvckVhY2goZnVuY3Rpb24gKGFkZHJlc3MpIHtcbiAgICBhZGRyZXNzID0gX2hhbmRsZUFkZHJlc3MoYWRkcmVzcyk7XG4gICAgaWYgKGFkZHJlc3MubGVuZ3RoKSB7XG4gICAgICBwYXJzZWRBZGRyZXNzZXMgPSBwYXJzZWRBZGRyZXNzZXMuY29uY2F0KGFkZHJlc3MpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHBhcnNlZEFkZHJlc3Nlcztcbn07XG5cbi8qKlxuICogQ29udmVydHMgdG9rZW5zIGZvciBhIHNpbmdsZSBhZGRyZXNzIGludG8gYW4gYWRkcmVzcyBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge0FycmF5fSB0b2tlbnMgVG9rZW5zIG9iamVjdFxuICogQHJldHVybiB7T2JqZWN0fSBBZGRyZXNzIG9iamVjdFxuICovXG5mdW5jdGlvbiBfaGFuZGxlQWRkcmVzcyh0b2tlbnMpIHtcbiAgdmFyIGlzR3JvdXAgPSBmYWxzZTtcbiAgdmFyIHN0YXRlID0gJ3RleHQnO1xuICB2YXIgYWRkcmVzcyA9IHZvaWQgMDtcbiAgdmFyIGFkZHJlc3NlcyA9IFtdO1xuICB2YXIgZGF0YSA9IHtcbiAgICBhZGRyZXNzOiBbXSxcbiAgICBjb21tZW50OiBbXSxcbiAgICBncm91cDogW10sXG4gICAgdGV4dDogW11cblxuICAgIC8vIEZpbHRlciBvdXQgPGFkZHJlc3Nlcz4sIChjb21tZW50cykgYW5kIHJlZ3VsYXIgdGV4dFxuICB9O2ZvciAodmFyIGkgPSAwLCBsZW4gPSB0b2tlbnMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV07XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ29wZXJhdG9yJykge1xuICAgICAgc3dpdGNoICh0b2tlbi52YWx1ZSkge1xuICAgICAgICBjYXNlICc8JzpcbiAgICAgICAgICBzdGF0ZSA9ICdhZGRyZXNzJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnKCc6XG4gICAgICAgICAgc3RhdGUgPSAnY29tbWVudCc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJzonOlxuICAgICAgICAgIHN0YXRlID0gJ2dyb3VwJztcbiAgICAgICAgICBpc0dyb3VwID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBzdGF0ZSA9ICd0ZXh0JztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRva2VuLnZhbHVlKSB7XG4gICAgICAgIGRhdGFbc3RhdGVdLnB1c2godG9rZW4udmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIElmIHRoZXJlIGlzIG5vIHRleHQgYnV0IGEgY29tbWVudCwgcmVwbGFjZSB0aGUgdHdvXG4gIGlmICghZGF0YS50ZXh0Lmxlbmd0aCAmJiBkYXRhLmNvbW1lbnQubGVuZ3RoKSB7XG4gICAgZGF0YS50ZXh0ID0gZGF0YS5jb21tZW50O1xuICAgIGRhdGEuY29tbWVudCA9IFtdO1xuICB9XG5cbiAgaWYgKGlzR3JvdXApIHtcbiAgICAvLyBodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMyODIyI2FwcGVuZGl4LUEuMS4zXG4gICAgZGF0YS50ZXh0ID0gZGF0YS50ZXh0LmpvaW4oJyAnKTtcbiAgICBhZGRyZXNzZXMucHVzaCh7XG4gICAgICBuYW1lOiBkYXRhLnRleHQgfHwgYWRkcmVzcyAmJiBhZGRyZXNzLm5hbWUsXG4gICAgICBncm91cDogZGF0YS5ncm91cC5sZW5ndGggPyBwYXJzZShkYXRhLmdyb3VwLmpvaW4oJywnKSkgOiBbXVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIElmIG5vIGFkZHJlc3Mgd2FzIGZvdW5kLCB0cnkgdG8gZGV0ZWN0IG9uZSBmcm9tIHJlZ3VsYXIgdGV4dFxuICAgIGlmICghZGF0YS5hZGRyZXNzLmxlbmd0aCAmJiBkYXRhLnRleHQubGVuZ3RoKSB7XG4gICAgICBmb3IgKHZhciBfaSA9IGRhdGEudGV4dC5sZW5ndGggLSAxOyBfaSA+PSAwOyBfaS0tKSB7XG4gICAgICAgIGlmIChkYXRhLnRleHRbX2ldLm1hdGNoKC9eW15AXFxzXStAW15AXFxzXSskLykpIHtcbiAgICAgICAgICBkYXRhLmFkZHJlc3MgPSBkYXRhLnRleHQuc3BsaWNlKF9pLCAxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB2YXIgX3JlZ2V4SGFuZGxlciA9IGZ1bmN0aW9uIF9yZWdleEhhbmRsZXIoYWRkcmVzcykge1xuICAgICAgICBpZiAoIWRhdGEuYWRkcmVzcy5sZW5ndGgpIHtcbiAgICAgICAgICBkYXRhLmFkZHJlc3MgPSBbYWRkcmVzcy50cmltKCldO1xuICAgICAgICAgIHJldHVybiAnICc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGFkZHJlc3M7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8vIHN0aWxsIG5vIGFkZHJlc3NcbiAgICAgIGlmICghZGF0YS5hZGRyZXNzLmxlbmd0aCkge1xuICAgICAgICBmb3IgKHZhciBfaTIgPSBkYXRhLnRleHQubGVuZ3RoIC0gMTsgX2kyID49IDA7IF9pMi0tKSB7XG4gICAgICAgICAgZGF0YS50ZXh0W19pMl0gPSBkYXRhLnRleHRbX2kyXS5yZXBsYWNlKC9cXHMqXFxiW15AXFxzXStAW15AXFxzXStcXGJcXHMqLywgX3JlZ2V4SGFuZGxlcikudHJpbSgpO1xuICAgICAgICAgIGlmIChkYXRhLmFkZHJlc3MubGVuZ3RoKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSdzIHN0aWxsIGlzIG5vIHRleHQgYnV0IGEgY29tbWVudCBleGl4dHMsIHJlcGxhY2UgdGhlIHR3b1xuICAgIGlmICghZGF0YS50ZXh0Lmxlbmd0aCAmJiBkYXRhLmNvbW1lbnQubGVuZ3RoKSB7XG4gICAgICBkYXRhLnRleHQgPSBkYXRhLmNvbW1lbnQ7XG4gICAgICBkYXRhLmNvbW1lbnQgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBLZWVwIG9ubHkgdGhlIGZpcnN0IGFkZHJlc3Mgb2NjdXJlbmNlLCBwdXNoIG90aGVycyB0byByZWd1bGFyIHRleHRcbiAgICBpZiAoZGF0YS5hZGRyZXNzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGRhdGEudGV4dCA9IGRhdGEudGV4dC5jb25jYXQoZGF0YS5hZGRyZXNzLnNwbGljZSgxKSk7XG4gICAgfVxuXG4gICAgLy8gSm9pbiB2YWx1ZXMgd2l0aCBzcGFjZXNcbiAgICBkYXRhLnRleHQgPSBkYXRhLnRleHQuam9pbignICcpO1xuICAgIGRhdGEuYWRkcmVzcyA9IGRhdGEuYWRkcmVzcy5qb2luKCcgJyk7XG5cbiAgICBpZiAoIWRhdGEuYWRkcmVzcyAmJiBpc0dyb3VwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIGFkZHJlc3MgPSB7XG4gICAgICAgIGFkZHJlc3M6IGRhdGEuYWRkcmVzcyB8fCBkYXRhLnRleHQgfHwgJycsXG4gICAgICAgIG5hbWU6IGRhdGEudGV4dCB8fCBkYXRhLmFkZHJlc3MgfHwgJydcbiAgICAgIH07XG5cbiAgICAgIGlmIChhZGRyZXNzLmFkZHJlc3MgPT09IGFkZHJlc3MubmFtZSkge1xuICAgICAgICBpZiAoKGFkZHJlc3MuYWRkcmVzcyB8fCAnJykubWF0Y2goL0AvKSkge1xuICAgICAgICAgIGFkZHJlc3MubmFtZSA9ICcnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFkZHJlc3MuYWRkcmVzcyA9ICcnO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZHJlc3Nlcy5wdXNoKGFkZHJlc3MpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBhZGRyZXNzZXM7XG59O1xuXG4vKlxuICogT3BlcmF0b3IgdG9rZW5zIGFuZCB3aGljaCB0b2tlbnMgYXJlIGV4cGVjdGVkIHRvIGVuZCB0aGUgc2VxdWVuY2VcbiAqL1xudmFyIE9QRVJBVE9SUyA9IHtcbiAgJ1wiJzogJ1wiJyxcbiAgJygnOiAnKScsXG4gICc8JzogJz4nLFxuICAnLCc6ICcnLFxuICAvLyBHcm91cHMgYXJlIGVuZGVkIGJ5IHNlbWljb2xvbnNcbiAgJzonOiAnOycsXG4gIC8vIFNlbWljb2xvbnMgYXJlIG5vdCBhIGxlZ2FsIGRlbGltaXRlciBwZXIgdGhlIFJGQzI4MjIgZ3JhbW1hciBvdGhlclxuICAvLyB0aGFuIGZvciB0ZXJtaW5hdGluZyBhIGdyb3VwLCBidXQgdGhleSBhcmUgYWxzbyBub3QgdmFsaWQgZm9yIGFueVxuICAvLyBvdGhlciB1c2UgaW4gdGhpcyBjb250ZXh0LiAgR2l2ZW4gdGhhdCBzb21lIG1haWwgY2xpZW50cyBoYXZlXG4gIC8vIGhpc3RvcmljYWxseSBhbGxvd2VkIHRoZSBzZW1pY29sb24gYXMgYSBkZWxpbWl0ZXIgZXF1aXZhbGVudCB0byB0aGVcbiAgLy8gY29tbWEgaW4gdGhlaXIgVUksIGl0IG1ha2VzIHNlbnNlIHRvIHRyZWF0IHRoZW0gdGhlIHNhbWUgYXMgYSBjb21tYVxuICAvLyB3aGVuIHVzZWQgb3V0c2lkZSBvZiBhIGdyb3VwLlxuICAnOyc6ICcnXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBUb2tlbml6ZXIgb2JqZWN0IGZvciB0b2tlbml6aW5nIGFkZHJlc3MgZmllbGQgc3RyaW5nc1xuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtTdHJpbmd9IHN0ciBBZGRyZXNzIGZpZWxkIHN0cmluZ1xuICAgKi9cbn07XG52YXIgVG9rZW5pemVyID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBUb2tlbml6ZXIoc3RyKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRva2VuaXplcik7XG5cbiAgICB0aGlzLnN0ciA9IChzdHIgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5vcGVyYXRvckN1cnJlbnQgPSAnJztcbiAgICB0aGlzLm9wZXJhdG9yRXhwZWN0aW5nID0gJyc7XG4gICAgdGhpcy5ub2RlID0gbnVsbDtcbiAgICB0aGlzLmVzY2FwZWQgPSBmYWxzZTtcbiAgICB0aGlzLmxpc3QgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUb2tlbml6ZXMgdGhlIG9yaWdpbmFsIGlucHV0IHN0cmluZ1xuICAgKlxuICAgKiBAcmV0dXJuIHtBcnJheX0gQW4gYXJyYXkgb2Ygb3BlcmF0b3J8dGV4dCB0b2tlbnNcbiAgICovXG5cblxuICBfY3JlYXRlQ2xhc3MoVG9rZW5pemVyLCBbe1xuICAgIGtleTogJ3Rva2VuaXplJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gdG9rZW5pemUoKSB7XG4gICAgICB2YXIgY2hyID0gdm9pZCAwO1xuICAgICAgdmFyIGxpc3QgPSBbXTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSB0aGlzLnN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBjaHIgPSB0aGlzLnN0ci5jaGFyQXQoaSk7XG4gICAgICAgIHRoaXMuY2hlY2tDaGFyKGNocik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIG5vZGUudmFsdWUgPSAobm9kZS52YWx1ZSB8fCAnJykudG9TdHJpbmcoKS50cmltKCk7XG4gICAgICAgIGlmIChub2RlLnZhbHVlKSB7XG4gICAgICAgICAgbGlzdC5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2tzIGlmIGEgY2hhcmFjdGVyIGlzIGFuIG9wZXJhdG9yIG9yIHRleHQgYW5kIGFjdHMgYWNjb3JkaW5nbHlcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBjaHIgQ2hhcmFjdGVyIGZyb20gdGhlIGFkZHJlc3MgZmllbGRcbiAgICAgKi9cblxuICB9LCB7XG4gICAga2V5OiAnY2hlY2tDaGFyJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gY2hlY2tDaGFyKGNocikge1xuICAgICAgaWYgKChjaHIgaW4gT1BFUkFUT1JTIHx8IGNociA9PT0gJ1xcXFwnKSAmJiB0aGlzLmVzY2FwZWQpIHtcbiAgICAgICAgdGhpcy5lc2NhcGVkID0gZmFsc2U7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3BlcmF0b3JFeHBlY3RpbmcgJiYgY2hyID09PSB0aGlzLm9wZXJhdG9yRXhwZWN0aW5nKSB7XG4gICAgICAgIHRoaXMubm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiAnb3BlcmF0b3InLFxuICAgICAgICAgIHZhbHVlOiBjaHJcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5saXN0LnB1c2godGhpcy5ub2RlKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vcGVyYXRvckV4cGVjdGluZyA9ICcnO1xuICAgICAgICB0aGlzLmVzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5vcGVyYXRvckV4cGVjdGluZyAmJiBjaHIgaW4gT1BFUkFUT1JTKSB7XG4gICAgICAgIHRoaXMubm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiAnb3BlcmF0b3InLFxuICAgICAgICAgIHZhbHVlOiBjaHJcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5saXN0LnB1c2godGhpcy5ub2RlKTtcbiAgICAgICAgdGhpcy5ub2RlID0gbnVsbDtcbiAgICAgICAgdGhpcy5vcGVyYXRvckV4cGVjdGluZyA9IE9QRVJBVE9SU1tjaHJdO1xuICAgICAgICB0aGlzLmVzY2FwZWQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuZXNjYXBlZCAmJiBjaHIgPT09ICdcXFxcJykge1xuICAgICAgICB0aGlzLmVzY2FwZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5ub2RlKSB7XG4gICAgICAgIHRoaXMubm9kZSA9IHtcbiAgICAgICAgICB0eXBlOiAndGV4dCcsXG4gICAgICAgICAgdmFsdWU6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMubGlzdC5wdXNoKHRoaXMubm9kZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmVzY2FwZWQgJiYgY2hyICE9PSAnXFxcXCcpIHtcbiAgICAgICAgdGhpcy5ub2RlLnZhbHVlICs9ICdcXFxcJztcbiAgICAgIH1cblxuICAgICAgdGhpcy5ub2RlLnZhbHVlICs9IGNocjtcbiAgICAgIHRoaXMuZXNjYXBlZCA9IGZhbHNlO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUb2tlbml6ZXI7XG59KCk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSnpiM1Z5WTJWeklqcGJJaTR1TDNOeVl5OWhaR1J5WlhOemNHRnljMlZ5TG1weklsMHNJbTVoYldWeklqcGJJbkJoY25ObElpd2ljM1J5SWl3aWRHOXJaVzVwZW1WeUlpd2lWRzlyWlc1cGVtVnlJaXdpZEc5clpXNXpJaXdpZEc5clpXNXBlbVVpTENKaFpHUnlaWE56WlhNaUxDSmhaR1J5WlhOeklpd2ljR0Z5YzJWa1FXUmtjbVZ6YzJWeklpd2labTl5UldGamFDSXNJblJ2YTJWdUlpd2lkSGx3WlNJc0luWmhiSFZsSWl3aWJHVnVaM1JvSWl3aWNIVnphQ0lzSWw5b1lXNWtiR1ZCWkdSeVpYTnpJaXdpWTI5dVkyRjBJaXdpYVhOSGNtOTFjQ0lzSW5OMFlYUmxJaXdpWkdGMFlTSXNJbU52YlcxbGJuUWlMQ0puY205MWNDSXNJblJsZUhRaUxDSnBJaXdpYkdWdUlpd2lhbTlwYmlJc0ltNWhiV1VpTENKdFlYUmphQ0lzSW5Od2JHbGpaU0lzSWw5eVpXZGxlRWhoYm1Sc1pYSWlMQ0owY21sdElpd2ljbVZ3YkdGalpTSXNJazlRUlZKQlZFOVNVeUlzSW5SdlUzUnlhVzVuSWl3aWIzQmxjbUYwYjNKRGRYSnlaVzUwSWl3aWIzQmxjbUYwYjNKRmVIQmxZM1JwYm1jaUxDSnViMlJsSWl3aVpYTmpZWEJsWkNJc0lteHBjM1FpTENKamFISWlMQ0pqYUdGeVFYUWlMQ0pqYUdWamEwTm9ZWElpWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN08ydENRV04zUWtFc1N6czdPenRCUVdSNFFqczdPenM3T3pzN096czdPenM3UVVGalpTeFRRVUZUUVN4TFFVRlVMRU5CUVdkQ1F5eEhRVUZvUWl4RlFVRnhRanRCUVVOc1F5eE5RVUZOUXl4WlFVRlpMRWxCUVVsRExGTkJRVW9zUTBGQlkwWXNSMEZCWkN4RFFVRnNRanRCUVVOQkxFMUJRVTFITEZOQlFWTkdMRlZCUVZWSExGRkJRVllzUlVGQlpqczdRVUZGUVN4TlFVRk5ReXhaUVVGWkxFVkJRV3hDTzBGQlEwRXNUVUZCU1VNc1ZVRkJWU3hGUVVGa08wRkJRMEVzVFVGQlNVTXNhMEpCUVd0Q0xFVkJRWFJDT3p0QlFVVkJTaXhUUVVGUFN5eFBRVUZRTEVOQlFXVXNWVUZCVlVNc1MwRkJWaXhGUVVGcFFqdEJRVU01UWl4UlFVRkpRU3hOUVVGTlF5eEpRVUZPTEV0QlFXVXNWVUZCWml4TFFVRTRRa1FzVFVGQlRVVXNTMEZCVGl4TFFVRm5RaXhIUVVGb1FpeEpRVUYxUWtZc1RVRkJUVVVzUzBGQlRpeExRVUZuUWl4SFFVRnlSU3hEUVVGS0xFVkJRU3RGTzBGQlF6ZEZMRlZCUVVsTUxGRkJRVkZOTEUxQlFWb3NSVUZCYjBJN1FVRkRiRUpRTEd0Q1FVRlZVU3hKUVVGV0xFTkJRV1ZRTEU5QlFXWTdRVUZEUkR0QlFVTkVRU3huUWtGQlZTeEZRVUZXTzBGQlEwUXNTMEZNUkN4TlFVdFBPMEZCUTB4QkxHTkJRVkZQTEVsQlFWSXNRMEZCWVVvc1MwRkJZanRCUVVORU8wRkJRMFlzUjBGVVJEczdRVUZYUVN4TlFVRkpTQ3hSUVVGUlRTeE5RVUZhTEVWQlFXOUNPMEZCUTJ4Q1VDeGpRVUZWVVN4SlFVRldMRU5CUVdWUUxFOUJRV1k3UVVGRFJEczdRVUZGUkVRc1dVRkJWVWNzVDBGQlZpeERRVUZyUWl4VlFVRlZSaXhQUVVGV0xFVkJRVzFDTzBGQlEyNURRU3hqUVVGVlVTeGxRVUZsVWl4UFFVRm1MRU5CUVZZN1FVRkRRU3hSUVVGSlFTeFJRVUZSVFN4TlFVRmFMRVZCUVc5Q08wRkJRMnhDVEN4M1FrRkJhMEpCTEdkQ1FVRm5RbEVzVFVGQmFFSXNRMEZCZFVKVUxFOUJRWFpDTEVOQlFXeENPMEZCUTBRN1FVRkRSaXhIUVV4RU96dEJRVTlCTEZOQlFVOURMR1ZCUVZBN1FVRkRSRHM3UVVGRlJEczdPenM3TzBGQlRVRXNVMEZCVTA4c1kwRkJWQ3hEUVVGNVFsZ3NUVUZCZWtJc1JVRkJhVU03UVVGREwwSXNUVUZCU1dFc1ZVRkJWU3hMUVVGa08wRkJRMEVzVFVGQlNVTXNVVUZCVVN4TlFVRmFPMEZCUTBFc1RVRkJTVmdzWjBKQlFVbzdRVUZEUVN4TlFVRk5SQ3haUVVGWkxFVkJRV3hDTzBGQlEwRXNUVUZCVFdFc1QwRkJUenRCUVVOWVdpeGhRVUZUTEVWQlJFVTdRVUZGV0dFc1lVRkJVeXhGUVVaRk8wRkJSMWhETEZkQlFVOHNSVUZJU1R0QlFVbFlReXhWUVVGTk96dEJRVWRTTzBGQlVHRXNSMEZCWWl4RFFWRkJMRXRCUVVzc1NVRkJTVU1zU1VGQlNTeERRVUZTTEVWQlFWZERMRTFCUVUxd1FpeFBRVUZQVXl4TlFVRTNRaXhGUVVGeFExVXNTVUZCU1VNc1IwRkJla01zUlVGQk9FTkVMRWRCUVRsRExFVkJRVzFFTzBGQlEycEVMRkZCUVUxaUxGRkJRVkZPTEU5QlFVOXRRaXhEUVVGUUxFTkJRV1E3TzBGQlJVRXNVVUZCU1dJc1RVRkJUVU1zU1VGQlRpeExRVUZsTEZWQlFXNUNMRVZCUVN0Q08wRkJRemRDTEdOQlFWRkVMRTFCUVUxRkxFdEJRV1E3UVVGRFJTeGhRVUZMTEVkQlFVdzdRVUZEUlUwc2EwSkJRVkVzVTBGQlVqdEJRVU5CTzBGQlEwWXNZVUZCU3l4SFFVRk1PMEZCUTBWQkxHdENRVUZSTEZOQlFWSTdRVUZEUVR0QlFVTkdMR0ZCUVVzc1IwRkJURHRCUVVORlFTeHJRa0ZCVVN4UFFVRlNPMEZCUTBGRUxHOUNRVUZWTEVsQlFWWTdRVUZEUVR0QlFVTkdPMEZCUTBWRExHdENRVUZSTEUxQlFWSTdRVUZhU2p0QlFXTkVMRXRCWmtRc1RVRmxUenRCUVVOTUxGVkJRVWxTTEUxQlFVMUZMRXRCUVZZc1JVRkJhVUk3UVVGRFprOHNZVUZCUzBRc1MwRkJUQ3hGUVVGWlNpeEpRVUZhTEVOQlFXbENTaXhOUVVGTlJTeExRVUYyUWp0QlFVTkVPMEZCUTBZN1FVRkRSanM3UVVGRlJEdEJRVU5CTEUxQlFVa3NRMEZCUTA4c1MwRkJTMGNzU1VGQlRDeERRVUZWVkN4TlFVRllMRWxCUVhGQ1RTeExRVUZMUXl4UFFVRk1MRU5CUVdGUUxFMUJRWFJETEVWQlFUaERPMEZCUXpWRFRTeFRRVUZMUnl4SlFVRk1MRWRCUVZsSUxFdEJRVXRETEU5QlFXcENPMEZCUTBGRUxGTkJRVXRETEU5QlFVd3NSMEZCWlN4RlFVRm1PMEZCUTBRN08wRkJSVVFzVFVGQlNVZ3NUMEZCU2l4RlFVRmhPMEZCUTFnN1FVRkRRVVVzVTBGQlMwY3NTVUZCVEN4SFFVRlpTQ3hMUVVGTFJ5eEpRVUZNTEVOQlFWVkhMRWxCUVZZc1EwRkJaU3hIUVVGbUxFTkJRVm83UVVGRFFXNUNMR05CUVZWUkxFbEJRVllzUTBGQlpUdEJRVU5pV1N4WlFVRk5VQ3hMUVVGTFJ5eEpRVUZNTEVsQlFXTm1MRmRCUVZkQkxGRkJRVkZ0UWl4SlFVUXhRanRCUVVWaVRDeGhRVUZQUml4TFFVRkxSU3hMUVVGTUxFTkJRVmRTTEUxQlFWZ3NSMEZCYjBKaUxFMUJRVTF0UWl4TFFVRkxSU3hMUVVGTUxFTkJRVmRKTEVsQlFWZ3NRMEZCWjBJc1IwRkJhRUlzUTBGQlRpeERRVUZ3UWl4SFFVRnJSRHRCUVVZMVF5eExRVUZtTzBGQlNVUXNSMEZRUkN4TlFVOVBPMEZCUTB3N1FVRkRRU3hSUVVGSkxFTkJRVU5PTEV0QlFVdGFMRTlCUVV3c1EwRkJZVTBzVFVGQlpDeEpRVUYzUWswc1MwRkJTMGNzU1VGQlRDeERRVUZWVkN4TlFVRjBReXhGUVVFNFF6dEJRVU0xUXl4WFFVRkxMRWxCUVVsVkxFdEJRVWxLTEV0QlFVdEhMRWxCUVV3c1EwRkJWVlFzVFVGQlZpeEhRVUZ0UWl4RFFVRm9ReXhGUVVGdFExVXNUVUZCU3l4RFFVRjRReXhGUVVFeVEwRXNTVUZCTTBNc1JVRkJaMFE3UVVGRE9VTXNXVUZCU1Vvc1MwRkJTMGNzU1VGQlRDeERRVUZWUXl4RlFVRldMRVZCUVdGSkxFdEJRV0lzUTBGQmJVSXNiVUpCUVc1Q0xFTkJRVW9zUlVGQk5rTTdRVUZETTBOU0xHVkJRVXRhTEU5QlFVd3NSMEZCWlZrc1MwRkJTMGNzU1VGQlRDeERRVUZWVFN4TlFVRldMRU5CUVdsQ1RDeEZRVUZxUWl4RlFVRnZRaXhEUVVGd1FpeERRVUZtTzBGQlEwRTdRVUZEUkR0QlFVTkdPenRCUVVWRUxGVkJRVWxOTEdkQ1FVRm5RaXhUUVVGb1FrRXNZVUZCWjBJc1EwRkJWWFJDTEU5QlFWWXNSVUZCYlVJN1FVRkRja01zV1VGQlNTeERRVUZEV1N4TFFVRkxXaXhQUVVGTUxFTkJRV0ZOTEUxQlFXeENMRVZCUVRCQ08wRkJRM2hDVFN4bFFVRkxXaXhQUVVGTUxFZEJRV1VzUTBGQlEwRXNVVUZCVVhWQ0xFbEJRVklzUlVGQlJDeERRVUZtTzBGQlEwRXNhVUpCUVU4c1IwRkJVRHRCUVVORUxGTkJTRVFzVFVGSFR6dEJRVU5NTEdsQ1FVRlBka0lzVDBGQlVEdEJRVU5FTzBGQlEwWXNUMEZRUkRzN1FVRlRRVHRCUVVOQkxGVkJRVWtzUTBGQlExa3NTMEZCUzFvc1QwRkJUQ3hEUVVGaFRTeE5RVUZzUWl4RlFVRXdRanRCUVVONFFpeGhRVUZMTEVsQlFVbFZMRTFCUVVsS0xFdEJRVXRITEVsQlFVd3NRMEZCVlZRc1RVRkJWaXhIUVVGdFFpeERRVUZvUXl4RlFVRnRRMVVzVDBGQlN5eERRVUY0UXl4RlFVRXlRMEVzUzBGQk0wTXNSVUZCWjBRN1FVRkRPVU5LTEdWQlFVdEhMRWxCUVV3c1EwRkJWVU1zUjBGQlZpeEpRVUZsU2l4TFFVRkxSeXhKUVVGTUxFTkJRVlZETEVkQlFWWXNSVUZCWVZFc1QwRkJZaXhEUVVGeFFpd3lRa0ZCY2tJc1JVRkJhMFJHTEdGQlFXeEVMRVZCUVdsRlF5eEpRVUZxUlN4RlFVRm1PMEZCUTBFc1kwRkJTVmdzUzBGQlMxb3NUMEZCVEN4RFFVRmhUU3hOUVVGcVFpeEZRVUY1UWp0QlFVTjJRanRCUVVORU8wRkJRMFk3UVVGRFJqdEJRVU5HT3p0QlFVVkVPMEZCUTBFc1VVRkJTU3hEUVVGRFRTeExRVUZMUnl4SlFVRk1MRU5CUVZWVUxFMUJRVmdzU1VGQmNVSk5MRXRCUVV0RExFOUJRVXdzUTBGQllWQXNUVUZCZEVNc1JVRkJPRU03UVVGRE5VTk5MRmRCUVV0SExFbEJRVXdzUjBGQldVZ3NTMEZCUzBNc1QwRkJha0k3UVVGRFFVUXNWMEZCUzBNc1QwRkJUQ3hIUVVGbExFVkJRV1k3UVVGRFJEczdRVUZGUkR0QlFVTkJMRkZCUVVsRUxFdEJRVXRhTEU5QlFVd3NRMEZCWVUwc1RVRkJZaXhIUVVGelFpeERRVUV4UWl4RlFVRTJRanRCUVVNelFrMHNWMEZCUzBjc1NVRkJUQ3hIUVVGWlNDeExRVUZMUnl4SlFVRk1MRU5CUVZWT0xFMUJRVllzUTBGQmFVSkhMRXRCUVV0YUxFOUJRVXdzUTBGQllYRkNMRTFCUVdJc1EwRkJiMElzUTBGQmNFSXNRMEZCYWtJc1EwRkJXanRCUVVORU96dEJRVVZFTzBGQlEwRlVMRk5CUVV0SExFbEJRVXdzUjBGQldVZ3NTMEZCUzBjc1NVRkJUQ3hEUVVGVlJ5eEpRVUZXTEVOQlFXVXNSMEZCWml4RFFVRmFPMEZCUTBGT0xGTkJRVXRhTEU5QlFVd3NSMEZCWlZrc1MwRkJTMW9zVDBGQlRDeERRVUZoYTBJc1NVRkJZaXhEUVVGclFpeEhRVUZzUWl4RFFVRm1PenRCUVVWQkxGRkJRVWtzUTBGQlEwNHNTMEZCUzFvc1QwRkJUaXhKUVVGcFFsVXNUMEZCY2tJc1JVRkJPRUk3UVVGRE5VSXNZVUZCVHl4RlFVRlFPMEZCUTBRc1MwRkdSQ3hOUVVWUE8wRkJRMHhXTEdkQ1FVRlZPMEZCUTFKQkxHbENRVUZUV1N4TFFVRkxXaXhQUVVGTUxFbEJRV2RDV1N4TFFVRkxSeXhKUVVGeVFpeEpRVUUyUWl4RlFVUTVRanRCUVVWU1NTeGpRVUZOVUN4TFFVRkxSeXhKUVVGTUxFbEJRV0ZJTEV0QlFVdGFMRTlCUVd4Q0xFbEJRVFpDTzBGQlJqTkNMRTlCUVZZN08wRkJTMEVzVlVGQlNVRXNVVUZCVVVFc1QwRkJVaXhMUVVGdlFrRXNVVUZCVVcxQ0xFbEJRV2hETEVWQlFYTkRPMEZCUTNCRExGbEJRVWtzUTBGQlEyNUNMRkZCUVZGQkxFOUJRVklzU1VGQmJVSXNSVUZCY0VJc1JVRkJkMEp2UWl4TFFVRjRRaXhEUVVFNFFpeEhRVUU1UWl4RFFVRktMRVZCUVhkRE8wRkJRM1JEY0VJc2EwSkJRVkZ0UWl4SlFVRlNMRWRCUVdVc1JVRkJaanRCUVVORUxGTkJSa1FzVFVGRlR6dEJRVU5NYmtJc2EwSkJRVkZCTEU5QlFWSXNSMEZCYTBJc1JVRkJiRUk3UVVGRFJEdEJRVU5HT3p0QlFVVkVSQ3huUWtGQlZWRXNTVUZCVml4RFFVRmxVQ3hQUVVGbU8wRkJRMFE3UVVGRFJqczdRVUZGUkN4VFFVRlBSQ3hUUVVGUU8wRkJRMFE3TzBGQlJVUTdPenRCUVVkQkxFbEJRVTB3UWl4WlFVRlpPMEZCUTJoQ0xFOUJRVXNzUjBGRVZ6dEJRVVZvUWl4UFFVRkxMRWRCUmxjN1FVRkhhRUlzVDBGQlN5eEhRVWhYTzBGQlNXaENMRTlCUVVzc1JVRktWenRCUVV0b1FqdEJRVU5CTEU5QlFVc3NSMEZPVnp0QlFVOW9RanRCUVVOQk8wRkJRMEU3UVVGRFFUdEJRVU5CTzBGQlEwRTdRVUZEUVN4UFFVRkxPenRCUVVkUU96czdPenM3UVVGb1FtdENMRU5CUVd4Q08wbEJjMEpOTjBJc1V6dEJRVU5LTEhGQ1FVRmhSaXhIUVVGaUxFVkJRV3RDTzBGQlFVRTdPMEZCUTJoQ0xGTkJRVXRCTEVkQlFVd3NSMEZCVnl4RFFVRkRRU3hQUVVGUExFVkJRVklzUlVGQldXZERMRkZCUVZvc1JVRkJXRHRCUVVOQkxGTkJRVXRETEdWQlFVd3NSMEZCZFVJc1JVRkJka0k3UVVGRFFTeFRRVUZMUXl4cFFrRkJUQ3hIUVVGNVFpeEZRVUY2UWp0QlFVTkJMRk5CUVV0RExFbEJRVXdzUjBGQldTeEpRVUZhTzBGQlEwRXNVMEZCUzBNc1QwRkJUQ3hIUVVGbExFdEJRV1k3UVVGRFFTeFRRVUZMUXl4SlFVRk1MRWRCUVZrc1JVRkJXanRCUVVORU96dEJRVVZFT3pzN096czdPenM3SzBKQlMxazdRVUZEVml4VlFVRkpReXhaUVVGS08wRkJRMEVzVlVGQlNVUXNUMEZCVHl4RlFVRllPMEZCUTBFc1YwRkJTeXhKUVVGSlppeEpRVUZKTEVOQlFWSXNSVUZCVjBNc1RVRkJUU3hMUVVGTGRrSXNSMEZCVEN4RFFVRlRXU3hOUVVFdlFpeEZRVUYxUTFVc1NVRkJTVU1zUjBGQk0wTXNSVUZCWjBSRUxFZEJRV2hFTEVWQlFYRkVPMEZCUTI1RVowSXNZMEZCVFN4TFFVRkxkRU1zUjBGQlRDeERRVUZUZFVNc1RVRkJWQ3hEUVVGblFtcENMRU5CUVdoQ0xFTkJRVTQ3UVVGRFFTeGhRVUZMYTBJc1UwRkJUQ3hEUVVGbFJpeEhRVUZtTzBGQlEwUTdPMEZCUlVRc1YwRkJTMFFzU1VGQlRDeERRVUZWTjBJc1QwRkJWaXhEUVVGclFpeFZRVUZWTWtJc1NVRkJWaXhGUVVGblFqdEJRVU5vUTBFc1lVRkJTM2hDTEV0QlFVd3NSMEZCWVN4RFFVRkRkMElzUzBGQlMzaENMRXRCUVV3c1NVRkJZeXhGUVVGbUxFVkJRVzFDY1VJc1VVRkJia0lzUjBGQk9FSklMRWxCUVRsQ0xFVkJRV0k3UVVGRFFTeFpRVUZKVFN4TFFVRkxlRUlzUzBGQlZDeEZRVUZuUWp0QlFVTmtNRUlzWlVGQlMzaENMRWxCUVV3c1EwRkJWWE5DTEVsQlFWWTdRVUZEUkR0QlFVTkdMRTlCVEVRN08wRkJUMEVzWVVGQlQwVXNTVUZCVUR0QlFVTkVPenRCUVVWRU96czdPenM3T3pzNFFrRkxWME1zUnl4RlFVRkxPMEZCUTJRc1ZVRkJTU3hEUVVGRFFTeFBRVUZQVUN4VFFVRlFMRWxCUVc5Q1R5eFJRVUZSTEVsQlFUZENMRXRCUVhORExFdEJRVXRHTEU5QlFTOURMRVZCUVhkRU8wRkJRM1JFTEdGQlFVdEJMRTlCUVV3c1IwRkJaU3hMUVVGbU8wRkJRMFFzVDBGR1JDeE5RVVZQTEVsQlFVa3NTMEZCUzBZc2FVSkJRVXdzU1VGQk1FSkpMRkZCUVZFc1MwRkJTMG9zYVVKQlFUTkRMRVZCUVRoRU8wRkJRMjVGTEdGQlFVdERMRWxCUVV3c1IwRkJXVHRCUVVOV2VrSXNaMEpCUVUwc1ZVRkVTVHRCUVVWV1F5eHBRa0ZCVHpKQ08wRkJSa2NzVTBGQldqdEJRVWxCTEdGQlFVdEVMRWxCUVV3c1EwRkJWWGhDTEVsQlFWWXNRMEZCWlN4TFFVRkxjMElzU1VGQmNFSTdRVUZEUVN4aFFVRkxRU3hKUVVGTUxFZEJRVmtzU1VGQldqdEJRVU5CTEdGQlFVdEVMR2xDUVVGTUxFZEJRWGxDTEVWQlFYcENPMEZCUTBFc1lVRkJTMFVzVDBGQlRDeEhRVUZsTEV0QlFXWTdRVUZEUVR0QlFVTkVMRTlCVmswc1RVRlZRU3hKUVVGSkxFTkJRVU1zUzBGQlMwWXNhVUpCUVU0c1NVRkJNa0pKTEU5QlFVOVFMRk5CUVhSRExFVkJRV2xFTzBGQlEzUkVMR0ZCUVV0SkxFbEJRVXdzUjBGQldUdEJRVU5XZWtJc1owSkJRVTBzVlVGRVNUdEJRVVZXUXl4cFFrRkJUekpDTzBGQlJrY3NVMEZCV2p0QlFVbEJMR0ZCUVV0RUxFbEJRVXdzUTBGQlZYaENMRWxCUVZZc1EwRkJaU3hMUVVGTGMwSXNTVUZCY0VJN1FVRkRRU3hoUVVGTFFTeEpRVUZNTEVkQlFWa3NTVUZCV2p0QlFVTkJMR0ZCUVV0RUxHbENRVUZNTEVkQlFYbENTQ3hWUVVGVlR5eEhRVUZXTEVOQlFYcENPMEZCUTBFc1lVRkJTMFlzVDBGQlRDeEhRVUZsTEV0QlFXWTdRVUZEUVR0QlFVTkVPenRCUVVWRUxGVkJRVWtzUTBGQlF5eExRVUZMUVN4UFFVRk9MRWxCUVdsQ1JTeFJRVUZSTEVsQlFUZENMRVZCUVcxRE8wRkJRMnBETEdGQlFVdEdMRTlCUVV3c1IwRkJaU3hKUVVGbU8wRkJRMEU3UVVGRFJEczdRVUZGUkN4VlFVRkpMRU5CUVVNc1MwRkJTMFFzU1VGQlZpeEZRVUZuUWp0QlFVTmtMR0ZCUVV0QkxFbEJRVXdzUjBGQldUdEJRVU5XZWtJc1owSkJRVTBzVFVGRVNUdEJRVVZXUXl4cFFrRkJUenRCUVVaSExGTkJRVm83UVVGSlFTeGhRVUZMTUVJc1NVRkJUQ3hEUVVGVmVFSXNTVUZCVml4RFFVRmxMRXRCUVV0elFpeEpRVUZ3UWp0QlFVTkVPenRCUVVWRUxGVkJRVWtzUzBGQlMwTXNUMEZCVEN4SlFVRm5Ra1VzVVVGQlVTeEpRVUUxUWl4RlFVRnJRenRCUVVOb1F5eGhRVUZMU0N4SlFVRk1MRU5CUVZWNFFpeExRVUZXTEVsQlFXMUNMRWxCUVc1Q08wRkJRMFE3TzBGQlJVUXNWMEZCUzNkQ0xFbEJRVXdzUTBGQlZYaENMRXRCUVZZc1NVRkJiVUl5UWl4SFFVRnVRanRCUVVOQkxGZEJRVXRHTEU5QlFVd3NSMEZCWlN4TFFVRm1PMEZCUTBRaUxDSm1hV3hsSWpvaVlXUmtjbVZ6YzNCaGNuTmxjaTVxY3lJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYklpOHFLbHh1SUNvZ1VHRnljMlZ6SUhOMGNuVmpkSFZ5WldRZ1pTMXRZV2xzSUdGa1pISmxjM05sY3lCbWNtOXRJR0Z1SUdGa1pISmxjM01nWm1sbGJHUmNiaUFxWEc0Z0tpQkZlR0Z0Y0d4bE9seHVJQ3BjYmlBcUlDQWdJRndpVG1GdFpTQThZV1JrY21WemMwQmtiMjFoYVc0K1hDSmNiaUFxWEc0Z0tpQjNhV3hzSUdKbElHTnZiblpsY25SbFpDQjBiMXh1SUNwY2JpQXFJQ0FnSUNCYmUyNWhiV1U2SUZ3aVRtRnRaVndpTENCaFpHUnlaWE56T2lCY0ltRmtaSEpsYzNOQVpHOXRZV2x1WENKOVhWeHVJQ3BjYmlBcUlFQndZWEpoYlNCN1UzUnlhVzVuZlNCemRISWdRV1JrY21WemN5Qm1hV1ZzWkZ4dUlDb2dRSEpsZEhWeWJpQjdRWEp5WVhsOUlFRnVJR0Z5Y21GNUlHOW1JR0ZrWkhKbGMzTWdiMkpxWldOMGMxeHVJQ292WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JtZFc1amRHbHZiaUJ3WVhKelpTQW9jM1J5S1NCN1hHNGdJR052Ym5OMElIUnZhMlZ1YVhwbGNpQTlJRzVsZHlCVWIydGxibWw2WlhJb2MzUnlLVnh1SUNCamIyNXpkQ0IwYjJ0bGJuTWdQU0IwYjJ0bGJtbDZaWEl1ZEc5clpXNXBlbVVvS1Z4dVhHNGdJR052Ym5OMElHRmtaSEpsYzNObGN5QTlJRnRkWEc0Z0lHeGxkQ0JoWkdSeVpYTnpJRDBnVzExY2JpQWdiR1YwSUhCaGNuTmxaRUZrWkhKbGMzTmxjeUE5SUZ0ZFhHNWNiaUFnZEc5clpXNXpMbVp2Y2tWaFkyZ29ablZ1WTNScGIyNGdLSFJ2YTJWdUtTQjdYRzRnSUNBZ2FXWWdLSFJ2YTJWdUxuUjVjR1VnUFQwOUlDZHZjR1Z5WVhSdmNpY2dKaVlnS0hSdmEyVnVMblpoYkhWbElEMDlQU0FuTENjZ2ZId2dkRzlyWlc0dWRtRnNkV1VnUFQwOUlDYzdKeWtwSUh0Y2JpQWdJQ0FnSUdsbUlDaGhaR1J5WlhOekxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQmhaR1J5WlhOelpYTXVjSFZ6YUNoaFpHUnlaWE56S1Z4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnWVdSa2NtVnpjeUE5SUZ0ZFhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR0ZrWkhKbGMzTXVjSFZ6YUNoMGIydGxiaWxjYmlBZ0lDQjlYRzRnSUgwcFhHNWNiaUFnYVdZZ0tHRmtaSEpsYzNNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnWVdSa2NtVnpjMlZ6TG5CMWMyZ29ZV1JrY21WemN5bGNiaUFnZlZ4dVhHNGdJR0ZrWkhKbGMzTmxjeTVtYjNKRllXTm9LR1oxYm1OMGFXOXVJQ2hoWkdSeVpYTnpLU0I3WEc0Z0lDQWdZV1JrY21WemN5QTlJRjlvWVc1a2JHVkJaR1J5WlhOektHRmtaSEpsYzNNcFhHNGdJQ0FnYVdZZ0tHRmtaSEpsYzNNdWJHVnVaM1JvS1NCN1hHNGdJQ0FnSUNCd1lYSnpaV1JCWkdSeVpYTnpaWE1nUFNCd1lYSnpaV1JCWkdSeVpYTnpaWE11WTI5dVkyRjBLR0ZrWkhKbGMzTXBYRzRnSUNBZ2ZWeHVJQ0I5S1Z4dVhHNGdJSEpsZEhWeWJpQndZWEp6WldSQlpHUnlaWE56WlhOY2JuMDdYRzVjYmk4cUtseHVJQ29nUTI5dWRtVnlkSE1nZEc5clpXNXpJR1p2Y2lCaElITnBibWRzWlNCaFpHUnlaWE56SUdsdWRHOGdZVzRnWVdSa2NtVnpjeUJ2WW1wbFkzUmNiaUFxWEc0Z0tpQkFjR0Z5WVcwZ2UwRnljbUY1ZlNCMGIydGxibk1nVkc5clpXNXpJRzlpYW1WamRGeHVJQ29nUUhKbGRIVnliaUI3VDJKcVpXTjBmU0JCWkdSeVpYTnpJRzlpYW1WamRGeHVJQ292WEc1bWRXNWpkR2x2YmlCZmFHRnVaR3hsUVdSa2NtVnpjeUFvZEc5clpXNXpLU0I3WEc0Z0lHeGxkQ0JwYzBkeWIzVndJRDBnWm1Gc2MyVmNiaUFnYkdWMElITjBZWFJsSUQwZ0ozUmxlSFFuWEc0Z0lHeGxkQ0JoWkdSeVpYTnpYRzRnSUdOdmJuTjBJR0ZrWkhKbGMzTmxjeUE5SUZ0ZFhHNGdJR052Ym5OMElHUmhkR0VnUFNCN1hHNGdJQ0FnWVdSa2NtVnpjem9nVzEwc1hHNGdJQ0FnWTI5dGJXVnVkRG9nVzEwc1hHNGdJQ0FnWjNKdmRYQTZJRnRkTEZ4dUlDQWdJSFJsZUhRNklGdGRYRzRnSUgxY2JseHVJQ0F2THlCR2FXeDBaWElnYjNWMElEeGhaR1J5WlhOelpYTStMQ0FvWTI5dGJXVnVkSE1wSUdGdVpDQnlaV2QxYkdGeUlIUmxlSFJjYmlBZ1ptOXlJQ2hzWlhRZ2FTQTlJREFzSUd4bGJpQTlJSFJ2YTJWdWN5NXNaVzVuZEdnN0lHa2dQQ0JzWlc0N0lHa3JLeWtnZTF4dUlDQWdJR052Ym5OMElIUnZhMlZ1SUQwZ2RHOXJaVzV6VzJsZFhHNWNiaUFnSUNCcFppQW9kRzlyWlc0dWRIbHdaU0E5UFQwZ0oyOXdaWEpoZEc5eUp5a2dlMXh1SUNBZ0lDQWdjM2RwZEdOb0lDaDBiMnRsYmk1MllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNCallYTmxJQ2M4SnpwY2JpQWdJQ0FnSUNBZ0lDQnpkR0YwWlNBOUlDZGhaR1J5WlhOekoxeHVJQ0FnSUNBZ0lDQWdJR0p5WldGclhHNGdJQ0FnSUNBZ0lHTmhjMlVnSnlnbk9seHVJQ0FnSUNBZ0lDQWdJSE4wWVhSbElEMGdKMk52YlcxbGJuUW5YRzRnSUNBZ0lDQWdJQ0FnWW5KbFlXdGNiaUFnSUNBZ0lDQWdZMkZ6WlNBbk9pYzZYRzRnSUNBZ0lDQWdJQ0FnYzNSaGRHVWdQU0FuWjNKdmRYQW5YRzRnSUNBZ0lDQWdJQ0FnYVhOSGNtOTFjQ0E5SUhSeWRXVmNiaUFnSUNBZ0lDQWdJQ0JpY21WaGExeHVJQ0FnSUNBZ0lDQmtaV1poZFd4ME9seHVJQ0FnSUNBZ0lDQWdJSE4wWVhSbElEMGdKM1JsZUhRblhHNGdJQ0FnSUNCOVhHNGdJQ0FnZlNCbGJITmxJSHRjYmlBZ0lDQWdJR2xtSUNoMGIydGxiaTUyWVd4MVpTa2dlMXh1SUNBZ0lDQWdJQ0JrWVhSaFczTjBZWFJsWFM1d2RYTm9LSFJ2YTJWdUxuWmhiSFZsS1Z4dUlDQWdJQ0FnZlZ4dUlDQWdJSDFjYmlBZ2ZWeHVYRzRnSUM4dklFbG1JSFJvWlhKbElHbHpJRzV2SUhSbGVIUWdZblYwSUdFZ1kyOXRiV1Z1ZEN3Z2NtVndiR0ZqWlNCMGFHVWdkSGR2WEc0Z0lHbG1JQ2doWkdGMFlTNTBaWGgwTG14bGJtZDBhQ0FtSmlCa1lYUmhMbU52YlcxbGJuUXViR1Z1WjNSb0tTQjdYRzRnSUNBZ1pHRjBZUzUwWlhoMElEMGdaR0YwWVM1amIyMXRaVzUwWEc0Z0lDQWdaR0YwWVM1amIyMXRaVzUwSUQwZ1cxMWNiaUFnZlZ4dVhHNGdJR2xtSUNocGMwZHliM1Z3S1NCN1hHNGdJQ0FnTHk4Z2FIUjBjRG92TDNSdmIyeHpMbWxsZEdZdWIzSm5MMmgwYld3dmNtWmpNamd5TWlOaGNIQmxibVJwZUMxQkxqRXVNMXh1SUNBZ0lHUmhkR0V1ZEdWNGRDQTlJR1JoZEdFdWRHVjRkQzVxYjJsdUtDY2dKeWxjYmlBZ0lDQmhaR1J5WlhOelpYTXVjSFZ6YUNoN1hHNGdJQ0FnSUNCdVlXMWxPaUJrWVhSaExuUmxlSFFnZkh3Z0tHRmtaSEpsYzNNZ0ppWWdZV1JrY21WemN5NXVZVzFsS1N4Y2JpQWdJQ0FnSUdkeWIzVndPaUJrWVhSaExtZHliM1Z3TG14bGJtZDBhQ0EvSUhCaGNuTmxLR1JoZEdFdVozSnZkWEF1YW05cGJpZ25MQ2NwS1NBNklGdGRYRzRnSUNBZ2ZTbGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQXZMeUJKWmlCdWJ5QmhaR1J5WlhOeklIZGhjeUJtYjNWdVpDd2dkSEo1SUhSdklHUmxkR1ZqZENCdmJtVWdabkp2YlNCeVpXZDFiR0Z5SUhSbGVIUmNiaUFnSUNCcFppQW9JV1JoZEdFdVlXUmtjbVZ6Y3k1c1pXNW5kR2dnSmlZZ1pHRjBZUzUwWlhoMExteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJR1JoZEdFdWRHVjRkQzVzWlc1bmRHZ2dMU0F4T3lCcElENDlJREE3SUdrdExTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHRjBZUzUwWlhoMFcybGRMbTFoZEdOb0tDOWVXMTVBWEZ4elhTdEFXMTVBWEZ4elhTc2tMeWtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQmtZWFJoTG1Ga1pISmxjM01nUFNCa1lYUmhMblJsZUhRdWMzQnNhV05sS0drc0lERXBYRzRnSUNBZ0lDQWdJQ0FnWW5KbFlXdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0IyWVhJZ1gzSmxaMlY0U0dGdVpHeGxjaUE5SUdaMWJtTjBhVzl1SUNoaFpHUnlaWE56S1NCN1hHNGdJQ0FnSUNBZ0lHbG1JQ2doWkdGMFlTNWhaR1J5WlhOekxteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1JoZEdFdVlXUmtjbVZ6Y3lBOUlGdGhaR1J5WlhOekxuUnlhVzBvS1YxY2JpQWdJQ0FnSUNBZ0lDQnlaWFIxY200Z0p5QW5YRzRnSUNBZ0lDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJR0ZrWkhKbGMzTmNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0F2THlCemRHbHNiQ0J1YnlCaFpHUnlaWE56WEc0Z0lDQWdJQ0JwWmlBb0lXUmhkR0V1WVdSa2NtVnpjeTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQWdJQ0FnWm05eUlDaHNaWFFnYVNBOUlHUmhkR0V1ZEdWNGRDNXNaVzVuZEdnZ0xTQXhPeUJwSUQ0OUlEQTdJR2t0TFNrZ2UxeHVJQ0FnSUNBZ0lDQWdJR1JoZEdFdWRHVjRkRnRwWFNBOUlHUmhkR0V1ZEdWNGRGdHBYUzV5WlhCc1lXTmxLQzljWEhNcVhGeGlXMTVBWEZ4elhTdEFXMTVBWEZ4elhTdGNYR0pjWEhNcUx5d2dYM0psWjJWNFNHRnVaR3hsY2lrdWRISnBiU2dwWEc0Z0lDQWdJQ0FnSUNBZ2FXWWdLR1JoZEdFdVlXUmtjbVZ6Y3k1c1pXNW5kR2dwSUh0Y2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGclhHNGdJQ0FnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdJQ0I5WEc0Z0lDQWdJQ0I5WEc0Z0lDQWdmVnh1WEc0Z0lDQWdMeThnU1dZZ2RHaGxjbVVuY3lCemRHbHNiQ0JwY3lCdWJ5QjBaWGgwSUdKMWRDQmhJR052YlcxbGJuUWdaWGhwZUhSekxDQnlaWEJzWVdObElIUm9aU0IwZDI5Y2JpQWdJQ0JwWmlBb0lXUmhkR0V1ZEdWNGRDNXNaVzVuZEdnZ0ppWWdaR0YwWVM1amIyMXRaVzUwTG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnWkdGMFlTNTBaWGgwSUQwZ1pHRjBZUzVqYjIxdFpXNTBYRzRnSUNBZ0lDQmtZWFJoTG1OdmJXMWxiblFnUFNCYlhWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFdGxaWEFnYjI1c2VTQjBhR1VnWm1seWMzUWdZV1JrY21WemN5QnZZMk4xY21WdVkyVXNJSEIxYzJnZ2IzUm9aWEp6SUhSdklISmxaM1ZzWVhJZ2RHVjRkRnh1SUNBZ0lHbG1JQ2hrWVhSaExtRmtaSEpsYzNNdWJHVnVaM1JvSUQ0Z01Ta2dlMXh1SUNBZ0lDQWdaR0YwWVM1MFpYaDBJRDBnWkdGMFlTNTBaWGgwTG1OdmJtTmhkQ2hrWVhSaExtRmtaSEpsYzNNdWMzQnNhV05sS0RFcEtWeHVJQ0FnSUgxY2JseHVJQ0FnSUM4dklFcHZhVzRnZG1Gc2RXVnpJSGRwZEdnZ2MzQmhZMlZ6WEc0Z0lDQWdaR0YwWVM1MFpYaDBJRDBnWkdGMFlTNTBaWGgwTG1wdmFXNG9KeUFuS1Z4dUlDQWdJR1JoZEdFdVlXUmtjbVZ6Y3lBOUlHUmhkR0V1WVdSa2NtVnpjeTVxYjJsdUtDY2dKeWxjYmx4dUlDQWdJR2xtSUNnaFpHRjBZUzVoWkdSeVpYTnpJQ1ltSUdselIzSnZkWEFwSUh0Y2JpQWdJQ0FnSUhKbGRIVnliaUJiWFZ4dUlDQWdJSDBnWld4elpTQjdYRzRnSUNBZ0lDQmhaR1J5WlhOeklEMGdlMXh1SUNBZ0lDQWdJQ0JoWkdSeVpYTnpPaUJrWVhSaExtRmtaSEpsYzNNZ2ZId2daR0YwWVM1MFpYaDBJSHg4SUNjbkxGeHVJQ0FnSUNBZ0lDQnVZVzFsT2lCa1lYUmhMblJsZUhRZ2ZId2daR0YwWVM1aFpHUnlaWE56SUh4OElDY25YRzRnSUNBZ0lDQjlYRzVjYmlBZ0lDQWdJR2xtSUNoaFpHUnlaWE56TG1Ga1pISmxjM01nUFQwOUlHRmtaSEpsYzNNdWJtRnRaU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9LR0ZrWkhKbGMzTXVZV1JrY21WemN5QjhmQ0FuSnlrdWJXRjBZMmdvTDBBdktTa2dlMXh1SUNBZ0lDQWdJQ0FnSUdGa1pISmxjM011Ym1GdFpTQTlJQ2NuWEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEc0Z0lDQWdJQ0FnSUNBZ1lXUmtjbVZ6Y3k1aFpHUnlaWE56SUQwZ0p5ZGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1WEc0Z0lDQWdJQ0JoWkdSeVpYTnpaWE11Y0hWemFDaGhaR1J5WlhOektWeHVJQ0FnSUgxY2JpQWdmVnh1WEc0Z0lISmxkSFZ5YmlCaFpHUnlaWE56WlhOY2JuMDdYRzVjYmk4cVhHNGdLaUJQY0dWeVlYUnZjaUIwYjJ0bGJuTWdZVzVrSUhkb2FXTm9JSFJ2YTJWdWN5QmhjbVVnWlhod1pXTjBaV1FnZEc4Z1pXNWtJSFJvWlNCelpYRjFaVzVqWlZ4dUlDb3ZYRzVqYjI1emRDQlBVRVZTUVZSUFVsTWdQU0I3WEc0Z0lDZGNJaWM2SUNkY0lpY3NYRzRnSUNjb0p6b2dKeWtuTEZ4dUlDQW5QQ2M2SUNjK0p5eGNiaUFnSnl3bk9pQW5KeXhjYmlBZ0x5OGdSM0p2ZFhCeklHRnlaU0JsYm1SbFpDQmllU0J6WlcxcFkyOXNiMjV6WEc0Z0lDYzZKem9nSnpzbkxGeHVJQ0F2THlCVFpXMXBZMjlzYjI1eklHRnlaU0J1YjNRZ1lTQnNaV2RoYkNCa1pXeHBiV2wwWlhJZ2NHVnlJSFJvWlNCU1JrTXlPREl5SUdkeVlXMXRZWElnYjNSb1pYSmNiaUFnTHk4Z2RHaGhiaUJtYjNJZ2RHVnliV2x1WVhScGJtY2dZU0JuY205MWNDd2dZblYwSUhSb1pYa2dZWEpsSUdGc2MyOGdibTkwSUhaaGJHbGtJR1p2Y2lCaGJubGNiaUFnTHk4Z2IzUm9aWElnZFhObElHbHVJSFJvYVhNZ1kyOXVkR1Y0ZEM0Z0lFZHBkbVZ1SUhSb1lYUWdjMjl0WlNCdFlXbHNJR05zYVdWdWRITWdhR0YyWlZ4dUlDQXZMeUJvYVhOMGIzSnBZMkZzYkhrZ1lXeHNiM2RsWkNCMGFHVWdjMlZ0YVdOdmJHOXVJR0Z6SUdFZ1pHVnNhVzFwZEdWeUlHVnhkV2wyWVd4bGJuUWdkRzhnZEdobFhHNGdJQzh2SUdOdmJXMWhJR2x1SUhSb1pXbHlJRlZKTENCcGRDQnRZV3RsY3lCelpXNXpaU0IwYnlCMGNtVmhkQ0IwYUdWdElIUm9aU0J6WVcxbElHRnpJR0VnWTI5dGJXRmNiaUFnTHk4Z2QyaGxiaUIxYzJWa0lHOTFkSE5wWkdVZ2IyWWdZU0JuY205MWNDNWNiaUFnSnpzbk9pQW5KMXh1ZlZ4dVhHNHZLaXBjYmlBcUlFTnlaV0YwWlhNZ1lTQlViMnRsYm1sNlpYSWdiMkpxWldOMElHWnZjaUIwYjJ0bGJtbDZhVzVuSUdGa1pISmxjM01nWm1sbGJHUWdjM1J5YVc1bmMxeHVJQ3BjYmlBcUlFQmpiMjV6ZEhKMVkzUnZjbHh1SUNvZ1FIQmhjbUZ0SUh0VGRISnBibWQ5SUhOMGNpQkJaR1J5WlhOeklHWnBaV3hrSUhOMGNtbHVaMXh1SUNvdlhHNWpiR0Z6Y3lCVWIydGxibWw2WlhJZ2UxeHVJQ0JqYjI1emRISjFZM1J2Y2lBb2MzUnlLU0I3WEc0Z0lDQWdkR2hwY3k1emRISWdQU0FvYzNSeUlIeDhJQ2NuS1M1MGIxTjBjbWx1WnlncFhHNGdJQ0FnZEdocGN5NXZjR1Z5WVhSdmNrTjFjbkpsYm5RZ1BTQW5KMXh1SUNBZ0lIUm9hWE11YjNCbGNtRjBiM0pGZUhCbFkzUnBibWNnUFNBbkoxeHVJQ0FnSUhSb2FYTXVibTlrWlNBOUlHNTFiR3hjYmlBZ0lDQjBhR2x6TG1WelkyRndaV1FnUFNCbVlXeHpaVnh1SUNBZ0lIUm9hWE11YkdsemRDQTlJRnRkWEc0Z0lIMWNibHh1SUNBdktpcGNiaUFnSUNvZ1ZHOXJaVzVwZW1WeklIUm9aU0J2Y21sbmFXNWhiQ0JwYm5CMWRDQnpkSEpwYm1kY2JpQWdJQ3BjYmlBZ0lDb2dRSEpsZEhWeWJpQjdRWEp5WVhsOUlFRnVJR0Z5Y21GNUlHOW1JRzl3WlhKaGRHOXlmSFJsZUhRZ2RHOXJaVzV6WEc0Z0lDQXFMMXh1SUNCMGIydGxibWw2WlNBb0tTQjdYRzRnSUNBZ2JHVjBJR05vY2x4dUlDQWdJR3hsZENCc2FYTjBJRDBnVzExY2JpQWdJQ0JtYjNJZ0tIWmhjaUJwSUQwZ01Dd2diR1Z1SUQwZ2RHaHBjeTV6ZEhJdWJHVnVaM1JvT3lCcElEd2diR1Z1T3lCcEt5c3BJSHRjYmlBZ0lDQWdJR05vY2lBOUlIUm9hWE11YzNSeUxtTm9ZWEpCZENocEtWeHVJQ0FnSUNBZ2RHaHBjeTVqYUdWamEwTm9ZWElvWTJoeUtWeHVJQ0FnSUgxY2JseHVJQ0FnSUhSb2FYTXViR2x6ZEM1bWIzSkZZV05vS0daMWJtTjBhVzl1SUNodWIyUmxLU0I3WEc0Z0lDQWdJQ0J1YjJSbExuWmhiSFZsSUQwZ0tHNXZaR1V1ZG1Gc2RXVWdmSHdnSnljcExuUnZVM1J5YVc1bktDa3VkSEpwYlNncFhHNGdJQ0FnSUNCcFppQW9ibTlrWlM1MllXeDFaU2tnZTF4dUlDQWdJQ0FnSUNCc2FYTjBMbkIxYzJnb2JtOWtaU2xjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlLVnh1WEc0Z0lDQWdjbVYwZFhKdUlHeHBjM1JjYmlBZ2ZWeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGFHVmphM01nYVdZZ1lTQmphR0Z5WVdOMFpYSWdhWE1nWVc0Z2IzQmxjbUYwYjNJZ2IzSWdkR1Y0ZENCaGJtUWdZV04wY3lCaFkyTnZjbVJwYm1kc2VWeHVJQ0FnS2x4dUlDQWdLaUJBY0dGeVlXMGdlMU4wY21sdVozMGdZMmh5SUVOb1lYSmhZM1JsY2lCbWNtOXRJSFJvWlNCaFpHUnlaWE56SUdacFpXeGtYRzRnSUNBcUwxeHVJQ0JqYUdWamEwTm9ZWElnS0dOb2Npa2dlMXh1SUNBZ0lHbG1JQ2dvWTJoeUlHbHVJRTlRUlZKQlZFOVNVeUI4ZkNCamFISWdQVDA5SUNkY1hGeGNKeWtnSmlZZ2RHaHBjeTVsYzJOaGNHVmtLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtVnpZMkZ3WldRZ1BTQm1ZV3h6WlZ4dUlDQWdJSDBnWld4elpTQnBaaUFvZEdocGN5NXZjR1Z5WVhSdmNrVjRjR1ZqZEdsdVp5QW1KaUJqYUhJZ1BUMDlJSFJvYVhNdWIzQmxjbUYwYjNKRmVIQmxZM1JwYm1jcElIdGNiaUFnSUNBZ0lIUm9hWE11Ym05a1pTQTlJSHRjYmlBZ0lDQWdJQ0FnZEhsd1pUb2dKMjl3WlhKaGRHOXlKeXhjYmlBZ0lDQWdJQ0FnZG1Gc2RXVTZJR05vY2x4dUlDQWdJQ0FnZlZ4dUlDQWdJQ0FnZEdocGN5NXNhWE4wTG5CMWMyZ29kR2hwY3k1dWIyUmxLVnh1SUNBZ0lDQWdkR2hwY3k1dWIyUmxJRDBnYm5Wc2JGeHVJQ0FnSUNBZ2RHaHBjeTV2Y0dWeVlYUnZja1Y0Y0dWamRHbHVaeUE5SUNjblhHNGdJQ0FnSUNCMGFHbHpMbVZ6WTJGd1pXUWdQU0JtWVd4elpWeHVJQ0FnSUNBZ2NtVjBkWEp1WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2doZEdocGN5NXZjR1Z5WVhSdmNrVjRjR1ZqZEdsdVp5QW1KaUJqYUhJZ2FXNGdUMUJGVWtGVVQxSlRLU0I3WEc0Z0lDQWdJQ0IwYUdsekxtNXZaR1VnUFNCN1hHNGdJQ0FnSUNBZ0lIUjVjR1U2SUNkdmNHVnlZWFJ2Y2ljc1hHNGdJQ0FnSUNBZ0lIWmhiSFZsT2lCamFISmNiaUFnSUNBZ0lIMWNiaUFnSUNBZ0lIUm9hWE11YkdsemRDNXdkWE5vS0hSb2FYTXVibTlrWlNsY2JpQWdJQ0FnSUhSb2FYTXVibTlrWlNBOUlHNTFiR3hjYmlBZ0lDQWdJSFJvYVhNdWIzQmxjbUYwYjNKRmVIQmxZM1JwYm1jZ1BTQlBVRVZTUVZSUFVsTmJZMmh5WFZ4dUlDQWdJQ0FnZEdocGN5NWxjMk5oY0dWa0lEMGdabUZzYzJWY2JpQWdJQ0FnSUhKbGRIVnlibHh1SUNBZ0lIMWNibHh1SUNBZ0lHbG1JQ2doZEdocGN5NWxjMk5oY0dWa0lDWW1JR05vY2lBOVBUMGdKMXhjWEZ3bktTQjdYRzRnSUNBZ0lDQjBhR2x6TG1WelkyRndaV1FnUFNCMGNuVmxYRzRnSUNBZ0lDQnlaWFIxY201Y2JpQWdJQ0I5WEc1Y2JpQWdJQ0JwWmlBb0lYUm9hWE11Ym05a1pTa2dlMXh1SUNBZ0lDQWdkR2hwY3k1dWIyUmxJRDBnZTF4dUlDQWdJQ0FnSUNCMGVYQmxPaUFuZEdWNGRDY3NYRzRnSUNBZ0lDQWdJSFpoYkhWbE9pQW5KMXh1SUNBZ0lDQWdmVnh1SUNBZ0lDQWdkR2hwY3k1c2FYTjBMbkIxYzJnb2RHaHBjeTV1YjJSbEtWeHVJQ0FnSUgxY2JseHVJQ0FnSUdsbUlDaDBhR2x6TG1WelkyRndaV1FnSmlZZ1kyaHlJQ0U5UFNBblhGeGNYQ2NwSUh0Y2JpQWdJQ0FnSUhSb2FYTXVibTlrWlM1MllXeDFaU0FyUFNBblhGeGNYQ2RjYmlBZ0lDQjlYRzVjYmlBZ0lDQjBhR2x6TG01dlpHVXVkbUZzZFdVZ0t6MGdZMmh5WEc0Z0lDQWdkR2hwY3k1bGMyTmhjR1ZrSUQwZ1ptRnNjMlZjYmlBZ2ZWeHVmVnh1SWwxOSIsIid1c2Ugc3RyaWN0JztcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yIC0tIHNhZmVcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG4vLyBOYXNob3JuIH4gSkRLOCBidWdcbnZhciBOQVNIT1JOX0JVRyA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvciAmJiAhJHByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwidmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIHRvQWJzb2x1dGVJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1hYnNvbHV0ZS1pbmRleCcpO1xuXG4vLyBgQXJyYXkucHJvdG90eXBlLnsgaW5kZXhPZiwgaW5jbHVkZXMgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19JTkNMVURFUykge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBlbCwgZnJvbUluZGV4KSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QoJHRoaXMpO1xuICAgIHZhciBsZW5ndGggPSB0b0xlbmd0aChPLmxlbmd0aCk7XG4gICAgdmFyIGluZGV4ID0gdG9BYnNvbHV0ZUluZGV4KGZyb21JbmRleCwgbGVuZ3RoKTtcbiAgICB2YXIgdmFsdWU7XG4gICAgLy8gQXJyYXkjaW5jbHVkZXMgdXNlcyBTYW1lVmFsdWVaZXJvIGVxdWFsaXR5IGFsZ29yaXRobVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsIi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3QtZ2V0b3ducHJvcGVydHlzeW1ib2xzIC0tIHNhZmVcbmV4cG9ydHMuZiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxudmFyIHJlcGxhY2VtZW50ID0gLyN8XFwucHJvdG90eXBlXFwuLztcblxudmFyIGlzRm9yY2VkID0gZnVuY3Rpb24gKGZlYXR1cmUsIGRldGVjdGlvbikge1xuICB2YXIgdmFsdWUgPSBkYXRhW25vcm1hbGl6ZShmZWF0dXJlKV07XG4gIHJldHVybiB2YWx1ZSA9PSBQT0xZRklMTCA/IHRydWVcbiAgICA6IHZhbHVlID09IE5BVElWRSA/IGZhbHNlXG4gICAgOiB0eXBlb2YgZGV0ZWN0aW9uID09ICdmdW5jdGlvbicgPyBmYWlscyhkZXRlY3Rpb24pXG4gICAgOiAhIWRldGVjdGlvbjtcbn07XG5cbnZhciBub3JtYWxpemUgPSBpc0ZvcmNlZC5ub3JtYWxpemUgPSBmdW5jdGlvbiAoc3RyaW5nKSB7XG4gIHJldHVybiBTdHJpbmcoc3RyaW5nKS5yZXBsYWNlKHJlcGxhY2VtZW50LCAnLicpLnRvTG93ZXJDYXNlKCk7XG59O1xuXG52YXIgZGF0YSA9IGlzRm9yY2VkLmRhdGEgPSB7fTtcbnZhciBOQVRJVkUgPSBpc0ZvcmNlZC5OQVRJVkUgPSAnTic7XG52YXIgUE9MWUZJTEwgPSBpc0ZvcmNlZC5QT0xZRklMTCA9ICdQJztcblxubW9kdWxlLmV4cG9ydHMgPSBpc0ZvcmNlZDtcbiIsInZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZlJhdyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgVE9fU1RSSU5HX1RBRyA9IHdlbGxLbm93blN5bWJvbCgndG9TdHJpbmdUYWcnKTtcbi8vIEVTMyB3cm9uZyBoZXJlXG52YXIgQ09SUkVDVF9BUkdVTUVOVFMgPSBjbGFzc29mUmF3KGZ1bmN0aW9uICgpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA9PSAnQXJndW1lbnRzJztcblxuLy8gZmFsbGJhY2sgZm9yIElFMTEgU2NyaXB0IEFjY2VzcyBEZW5pZWQgZXJyb3JcbnZhciB0cnlHZXQgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICB0cnkge1xuICAgIHJldHVybiBpdFtrZXldO1xuICB9IGNhdGNoIChlcnJvcikgeyAvKiBlbXB0eSAqLyB9XG59O1xuXG4vLyBnZXR0aW5nIHRhZyBmcm9tIEVTNisgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IGNsYXNzb2ZSYXcgOiBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIE8sIHRhZywgcmVzdWx0O1xuICByZXR1cm4gaXQgPT09IHVuZGVmaW5lZCA/ICdVbmRlZmluZWQnIDogaXQgPT09IG51bGwgPyAnTnVsbCdcbiAgICAvLyBAQHRvU3RyaW5nVGFnIGNhc2VcbiAgICA6IHR5cGVvZiAodGFnID0gdHJ5R2V0KE8gPSBPYmplY3QoaXQpLCBUT19TVFJJTkdfVEFHKSkgPT0gJ3N0cmluZycgPyB0YWdcbiAgICAvLyBidWlsdGluVGFnIGNhc2VcbiAgICA6IENPUlJFQ1RfQVJHVU1FTlRTID8gY2xhc3NvZlJhdyhPKVxuICAgIC8vIEVTMyBhcmd1bWVudHMgZmFsbGJhY2tcbiAgICA6IChyZXN1bHQgPSBjbGFzc29mUmF3KE8pKSA9PSAnT2JqZWN0JyAmJiB0eXBlb2YgTy5jYWxsZWUgPT0gJ2Z1bmN0aW9uJyA/ICdBcmd1bWVudHMnIDogcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBmYWxzZTtcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG4vLyBgJUl0ZXJhdG9yUHJvdG90eXBlJWAgb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLSVpdGVyYXRvcnByb3RvdHlwZSUtb2JqZWN0XG52YXIgSXRlcmF0b3JQcm90b3R5cGUsIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSwgYXJyYXlJdGVyYXRvcjtcblxuLyogZXNsaW50LWRpc2FibGUgZXMvbm8tYXJyYXktcHJvdG90eXBlLWtleXMgLS0gc2FmZSAqL1xuaWYgKFtdLmtleXMpIHtcbiAgYXJyYXlJdGVyYXRvciA9IFtdLmtleXMoKTtcbiAgLy8gU2FmYXJpIDggaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gIGlmICghKCduZXh0JyBpbiBhcnJheUl0ZXJhdG9yKSkgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IHRydWU7XG4gIGVsc2Uge1xuICAgIFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGdldFByb3RvdHlwZU9mKGFycmF5SXRlcmF0b3IpKTtcbiAgICBpZiAoUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlKSBJdGVyYXRvclByb3RvdHlwZSA9IFByb3RvdHlwZU9mQXJyYXlJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxufVxuXG52YXIgTkVXX0lURVJBVE9SX1BST1RPVFlQRSA9IEl0ZXJhdG9yUHJvdG90eXBlID09IHVuZGVmaW5lZCB8fCBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIHZhciB0ZXN0ID0ge307XG4gIC8vIEZGNDQtIGxlZ2FjeSBpdGVyYXRvcnMgY2FzZVxuICByZXR1cm4gSXRlcmF0b3JQcm90b3R5cGVbSVRFUkFUT1JdLmNhbGwodGVzdCkgIT09IHRlc3Q7XG59KTtcblxuaWYgKE5FV19JVEVSQVRPUl9QUk9UT1RZUEUpIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5pZiAoKCFJU19QVVJFIHx8IE5FV19JVEVSQVRPUl9QUk9UT1RZUEUpICYmICFoYXMoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SKSkge1xuICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEl0ZXJhdG9yUHJvdG90eXBlOiBJdGVyYXRvclByb3RvdHlwZSxcbiAgQlVHR1lfU0FGQVJJX0lURVJBVE9SUzogQlVHR1lfU0FGQVJJX0lURVJBVE9SU1xufTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciB1c2VyQWdlbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXVzZXItYWdlbnQnKTtcblxudmFyIHNsaWNlID0gW10uc2xpY2U7XG52YXIgTVNJRSA9IC9NU0lFIC5cXC4vLnRlc3QodXNlckFnZW50KTsgLy8gPC0gZGlydHkgaWU5LSBjaGVja1xuXG52YXIgd3JhcCA9IGZ1bmN0aW9uIChzY2hlZHVsZXIpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChoYW5kbGVyLCB0aW1lb3V0IC8qICwgLi4uYXJndW1lbnRzICovKSB7XG4gICAgdmFyIGJvdW5kQXJncyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyO1xuICAgIHZhciBhcmdzID0gYm91bmRBcmdzID8gc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiBzY2hlZHVsZXIoYm91bmRBcmdzID8gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICAodHlwZW9mIGhhbmRsZXIgPT0gJ2Z1bmN0aW9uJyA/IGhhbmRsZXIgOiBGdW5jdGlvbihoYW5kbGVyKSkuYXBwbHkodGhpcywgYXJncyk7XG4gICAgfSA6IGhhbmRsZXIsIHRpbWVvdXQpO1xuICB9O1xufTtcblxuLy8gaWU5LSBzZXRUaW1lb3V0ICYgc2V0SW50ZXJ2YWwgYWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZpeFxuLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGltZXJzLWFuZC11c2VyLXByb21wdHMuaHRtbCN0aW1lcnNcbiQoeyBnbG9iYWw6IHRydWUsIGJpbmQ6IHRydWUsIGZvcmNlZDogTVNJRSB9LCB7XG4gIC8vIGBzZXRUaW1lb3V0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGltZXJzLWFuZC11c2VyLXByb21wdHMuaHRtbCNkb20tc2V0dGltZW91dFxuICBzZXRUaW1lb3V0OiB3cmFwKGdsb2JhbC5zZXRUaW1lb3V0KSxcbiAgLy8gYHNldEludGVydmFsYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvdGltZXJzLWFuZC11c2VyLXByb21wdHMuaHRtbCNkb20tc2V0aW50ZXJ2YWxcbiAgc2V0SW50ZXJ2YWw6IHdyYXAoZ2xvYmFsLnNldEludGVydmFsKVxufSk7XG4iLCJ2YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGNyZWF0ZUVsZW1lbnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZG9jdW1lbnQtY3JlYXRlLWVsZW1lbnQnKTtcblxuLy8gVGhhbmsncyBJRTggZm9yIGhpcyBmdW5ueSBkZWZpbmVQcm9wZXJ0eVxubW9kdWxlLmV4cG9ydHMgPSAhREVTQ1JJUFRPUlMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjcmVhdGVFbGVtZW50KCdkaXYnKSwgJ2EnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9XG4gIH0pLmEgIT0gNztcbn0pO1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbnZhciByZXBsYWNlbWVudCA9IC8jfFxcLnByb3RvdHlwZVxcLi87XG5cbnZhciBpc0ZvcmNlZCA9IGZ1bmN0aW9uIChmZWF0dXJlLCBkZXRlY3Rpb24pIHtcbiAgdmFyIHZhbHVlID0gZGF0YVtub3JtYWxpemUoZmVhdHVyZSldO1xuICByZXR1cm4gdmFsdWUgPT0gUE9MWUZJTEwgPyB0cnVlXG4gICAgOiB2YWx1ZSA9PSBOQVRJVkUgPyBmYWxzZVxuICAgIDogdHlwZW9mIGRldGVjdGlvbiA9PSAnZnVuY3Rpb24nID8gZmFpbHMoZGV0ZWN0aW9uKVxuICAgIDogISFkZXRlY3Rpb247XG59O1xuXG52YXIgbm9ybWFsaXplID0gaXNGb3JjZWQubm9ybWFsaXplID0gZnVuY3Rpb24gKHN0cmluZykge1xuICByZXR1cm4gU3RyaW5nKHN0cmluZykucmVwbGFjZShyZXBsYWNlbWVudCwgJy4nKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIGRhdGEgPSBpc0ZvcmNlZC5kYXRhID0ge307XG52YXIgTkFUSVZFID0gaXNGb3JjZWQuTkFUSVZFID0gJ04nO1xudmFyIFBPTFlGSUxMID0gaXNGb3JjZWQuUE9MWUZJTEwgPSAnUCc7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGb3JjZWQ7XG4iLCJ2YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgc3RvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2hhcmVkLXN0b3JlJyk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiAnMy44LjInLFxuICBtb2RlOiBJU19QVVJFID8gJ3B1cmUnIDogJ2dsb2JhbCcsXG4gIGNvcHlyaWdodDogJ8KpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSknXG59KTtcbiIsInZhciBpZCA9IDA7XG52YXIgcG9zdGZpeCA9IE1hdGgucmFuZG9tKCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnICsgU3RyaW5nKGtleSA9PT0gdW5kZWZpbmVkID8gJycgOiBrZXkpICsgJylfJyArICgrK2lkICsgcG9zdGZpeCkudG9TdHJpbmcoMzYpO1xufTtcbiIsIi8vIElFOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSBbXG4gICdjb25zdHJ1Y3RvcicsXG4gICdoYXNPd25Qcm9wZXJ0eScsXG4gICdpc1Byb3RvdHlwZU9mJyxcbiAgJ3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcbiAgJ3RvTG9jYWxlU3RyaW5nJyxcbiAgJ3RvU3RyaW5nJyxcbiAgJ3ZhbHVlT2YnXG5dO1xuIiwidmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QnVpbHRJbignZG9jdW1lbnQnLCAnZG9jdW1lbnRFbGVtZW50Jyk7XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhIU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgJiYgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gQ2hyb21lIDM4IFN5bWJvbCBoYXMgaW5jb3JyZWN0IHRvU3RyaW5nIGNvbnZlcnNpb25cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gIHJldHVybiAhU3RyaW5nKFN5bWJvbCgpKTtcbn0pO1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBnbG9iYWwuUHJvbWlzZTtcbiIsInZhciBzdG9yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zaGFyZWQtc3RvcmUnKTtcblxudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSBGdW5jdGlvbi50b1N0cmluZztcblxuLy8gdGhpcyBoZWxwZXIgYnJva2VuIGluIGAzLjQuMS0zLjQuNGAsIHNvIHdlIGNhbid0IHVzZSBgc2hhcmVkYCBoZWxwZXJcbmlmICh0eXBlb2Ygc3RvcmUuaW5zcGVjdFNvdXJjZSAhPSAnZnVuY3Rpb24nKSB7XG4gIHN0b3JlLmluc3BlY3RTb3VyY2UgPSBmdW5jdGlvbiAoaXQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb25Ub1N0cmluZy5jYWxsKGl0KTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdG9yZS5pbnNwZWN0U291cmNlO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBTcGVjaWVzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGRlZmF1bHRDb25zdHJ1Y3Rvcikge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBkZWZhdWx0Q29uc3RydWN0b3IgOiBhRnVuY3Rpb24oUyk7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgaHRtbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9odG1sJyk7XG52YXIgY3JlYXRlRWxlbWVudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kb2N1bWVudC1jcmVhdGUtZWxlbWVudCcpO1xudmFyIElTX0lPUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtaW9zJyk7XG52YXIgSVNfTk9ERSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtaXMtbm9kZScpO1xuXG52YXIgbG9jYXRpb24gPSBnbG9iYWwubG9jYXRpb247XG52YXIgc2V0ID0gZ2xvYmFsLnNldEltbWVkaWF0ZTtcbnZhciBjbGVhciA9IGdsb2JhbC5jbGVhckltbWVkaWF0ZTtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgTWVzc2FnZUNoYW5uZWwgPSBnbG9iYWwuTWVzc2FnZUNoYW5uZWw7XG52YXIgRGlzcGF0Y2ggPSBnbG9iYWwuRGlzcGF0Y2g7XG52YXIgY291bnRlciA9IDA7XG52YXIgcXVldWUgPSB7fTtcbnZhciBPTlJFQURZU1RBVEVDSEFOR0UgPSAnb25yZWFkeXN0YXRlY2hhbmdlJztcbnZhciBkZWZlciwgY2hhbm5lbCwgcG9ydDtcblxudmFyIHJ1biA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gIGlmIChxdWV1ZS5oYXNPd25Qcm9wZXJ0eShpZCkpIHtcbiAgICB2YXIgZm4gPSBxdWV1ZVtpZF07XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgICBmbigpO1xuICB9XG59O1xuXG52YXIgcnVubmVyID0gZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcnVuKGlkKTtcbiAgfTtcbn07XG5cbnZhciBsaXN0ZW5lciA9IGZ1bmN0aW9uIChldmVudCkge1xuICBydW4oZXZlbnQuZGF0YSk7XG59O1xuXG52YXIgcG9zdCA9IGZ1bmN0aW9uIChpZCkge1xuICAvLyBvbGQgZW5naW5lcyBoYXZlIG5vdCBsb2NhdGlvbi5vcmlnaW5cbiAgZ2xvYmFsLnBvc3RNZXNzYWdlKGlkICsgJycsIGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3QpO1xufTtcblxuLy8gTm9kZS5qcyAwLjkrICYgSUUxMCsgaGFzIHNldEltbWVkaWF0ZSwgb3RoZXJ3aXNlOlxuaWYgKCFzZXQgfHwgIWNsZWFyKSB7XG4gIHNldCA9IGZ1bmN0aW9uIHNldEltbWVkaWF0ZShmbikge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGkgPSAxO1xuICAgIHdoaWxlIChhcmd1bWVudHMubGVuZ3RoID4gaSkgYXJncy5wdXNoKGFyZ3VtZW50c1tpKytdKTtcbiAgICBxdWV1ZVsrK2NvdW50ZXJdID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gICAgICAodHlwZW9mIGZuID09ICdmdW5jdGlvbicgPyBmbiA6IEZ1bmN0aW9uKGZuKSkuYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICB9O1xuICAgIGRlZmVyKGNvdW50ZXIpO1xuICAgIHJldHVybiBjb3VudGVyO1xuICB9O1xuICBjbGVhciA9IGZ1bmN0aW9uIGNsZWFySW1tZWRpYXRlKGlkKSB7XG4gICAgZGVsZXRlIHF1ZXVlW2lkXTtcbiAgfTtcbiAgLy8gTm9kZS5qcyAwLjgtXG4gIGlmIChJU19OT0RFKSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2socnVubmVyKGlkKSk7XG4gICAgfTtcbiAgLy8gU3BoZXJlIChKUyBnYW1lIGVuZ2luZSkgRGlzcGF0Y2ggQVBJXG4gIH0gZWxzZSBpZiAoRGlzcGF0Y2ggJiYgRGlzcGF0Y2gubm93KSB7XG4gICAgZGVmZXIgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgIERpc3BhdGNoLm5vdyhydW5uZXIoaWQpKTtcbiAgICB9O1xuICAvLyBCcm93c2VycyB3aXRoIE1lc3NhZ2VDaGFubmVsLCBpbmNsdWRlcyBXZWJXb3JrZXJzXG4gIC8vIGV4Y2VwdCBpT1MgLSBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjI0XG4gIH0gZWxzZSBpZiAoTWVzc2FnZUNoYW5uZWwgJiYgIUlTX0lPUykge1xuICAgIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGxpc3RlbmVyO1xuICAgIGRlZmVyID0gYmluZChwb3J0LnBvc3RNZXNzYWdlLCBwb3J0LCAxKTtcbiAgLy8gQnJvd3NlcnMgd2l0aCBwb3N0TWVzc2FnZSwgc2tpcCBXZWJXb3JrZXJzXG4gIC8vIElFOCBoYXMgcG9zdE1lc3NhZ2UsIGJ1dCBpdCdzIHN5bmMgJiB0eXBlb2YgaXRzIHBvc3RNZXNzYWdlIGlzICdvYmplY3QnXG4gIH0gZWxzZSBpZiAoXG4gICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIgJiZcbiAgICB0eXBlb2YgcG9zdE1lc3NhZ2UgPT0gJ2Z1bmN0aW9uJyAmJlxuICAgICFnbG9iYWwuaW1wb3J0U2NyaXB0cyAmJlxuICAgIGxvY2F0aW9uICYmIGxvY2F0aW9uLnByb3RvY29sICE9PSAnZmlsZTonICYmXG4gICAgIWZhaWxzKHBvc3QpXG4gICkge1xuICAgIGRlZmVyID0gcG9zdDtcbiAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGxpc3RlbmVyLCBmYWxzZSk7XG4gIC8vIElFOC1cbiAgfSBlbHNlIGlmIChPTlJFQURZU1RBVEVDSEFOR0UgaW4gY3JlYXRlRWxlbWVudCgnc2NyaXB0JykpIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgaHRtbC5hcHBlbmRDaGlsZChjcmVhdGVFbGVtZW50KCdzY3JpcHQnKSlbT05SRUFEWVNUQVRFQ0hBTkdFXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaHRtbC5yZW1vdmVDaGlsZCh0aGlzKTtcbiAgICAgICAgcnVuKGlkKTtcbiAgICAgIH07XG4gICAgfTtcbiAgLy8gUmVzdCBvbGQgYnJvd3NlcnNcbiAgfSBlbHNlIHtcbiAgICBkZWZlciA9IGZ1bmN0aW9uIChpZCkge1xuICAgICAgc2V0VGltZW91dChydW5uZXIoaWQpLCAwKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBzZXQ6IHNldCxcbiAgY2xlYXI6IGNsZWFyXG59O1xuIiwidmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC8oaXBob25lfGlwb2R8aXBhZCkuKmFwcGxld2Via2l0L2kudGVzdCh1c2VyQWdlbnQpO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL25ldy1wcm9taXNlLWNhcGFiaWxpdHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoQywgeCkge1xuICBhbk9iamVjdChDKTtcbiAgaWYgKGlzT2JqZWN0KHgpICYmIHguY29uc3RydWN0b3IgPT09IEMpIHJldHVybiB4O1xuICB2YXIgcHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eS5mKEMpO1xuICB2YXIgcmVzb2x2ZSA9IHByb21pc2VDYXBhYmlsaXR5LnJlc29sdmU7XG4gIHJlc29sdmUoeCk7XG4gIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5wcm9taXNlO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUl0ZXJhdG9yQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWl0ZXJhdG9yLWNvbnN0cnVjdG9yJyk7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBzZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qtc2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC10by1zdHJpbmctdGFnJyk7XG52YXIgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1ub24tZW51bWVyYWJsZS1wcm9wZXJ0eScpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIEl0ZXJhdG9yc0NvcmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzLWNvcmUnKTtcblxudmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gSXRlcmF0b3JzQ29yZS5JdGVyYXRvclByb3RvdHlwZTtcbnZhciBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gSXRlcmF0b3JzQ29yZS5CVUdHWV9TQUZBUklfSVRFUkFUT1JTO1xudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIEtFWVMgPSAna2V5cyc7XG52YXIgVkFMVUVTID0gJ3ZhbHVlcyc7XG52YXIgRU5UUklFUyA9ICdlbnRyaWVzJztcblxudmFyIHJldHVyblRoaXMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChJdGVyYWJsZSwgTkFNRSwgSXRlcmF0b3JDb25zdHJ1Y3RvciwgbmV4dCwgREVGQVVMVCwgSVNfU0VULCBGT1JDRUQpIHtcbiAgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvcihJdGVyYXRvckNvbnN0cnVjdG9yLCBOQU1FLCBuZXh0KTtcblxuICB2YXIgZ2V0SXRlcmF0aW9uTWV0aG9kID0gZnVuY3Rpb24gKEtJTkQpIHtcbiAgICBpZiAoS0lORCA9PT0gREVGQVVMVCAmJiBkZWZhdWx0SXRlcmF0b3IpIHJldHVybiBkZWZhdWx0SXRlcmF0b3I7XG4gICAgaWYgKCFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIEtJTkQgaW4gSXRlcmFibGVQcm90b3R5cGUpIHJldHVybiBJdGVyYWJsZVByb3RvdHlwZVtLSU5EXTtcbiAgICBzd2l0Y2ggKEtJTkQpIHtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgICBjYXNlIEVOVFJJRVM6IHJldHVybiBmdW5jdGlvbiBlbnRyaWVzKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcywgS0lORCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmV3IEl0ZXJhdG9yQ29uc3RydWN0b3IodGhpcyk7IH07XG4gIH07XG5cbiAgdmFyIFRPX1NUUklOR19UQUcgPSBOQU1FICsgJyBJdGVyYXRvcic7XG4gIHZhciBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgPSBmYWxzZTtcbiAgdmFyIEl0ZXJhYmxlUHJvdG90eXBlID0gSXRlcmFibGUucHJvdG90eXBlO1xuICB2YXIgbmF0aXZlSXRlcmF0b3IgPSBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl1cbiAgICB8fCBJdGVyYWJsZVByb3RvdHlwZVsnQEBpdGVyYXRvciddXG4gICAgfHwgREVGQVVMVCAmJiBJdGVyYWJsZVByb3RvdHlwZVtERUZBVUxUXTtcbiAgdmFyIGRlZmF1bHRJdGVyYXRvciA9ICFCVUdHWV9TQUZBUklfSVRFUkFUT1JTICYmIG5hdGl2ZUl0ZXJhdG9yIHx8IGdldEl0ZXJhdGlvbk1ldGhvZChERUZBVUxUKTtcbiAgdmFyIGFueU5hdGl2ZUl0ZXJhdG9yID0gTkFNRSA9PSAnQXJyYXknID8gSXRlcmFibGVQcm90b3R5cGUuZW50cmllcyB8fCBuYXRpdmVJdGVyYXRvciA6IG5hdGl2ZUl0ZXJhdG9yO1xuICB2YXIgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBtZXRob2RzLCBLRVk7XG5cbiAgLy8gZml4IG5hdGl2ZVxuICBpZiAoYW55TmF0aXZlSXRlcmF0b3IpIHtcbiAgICBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90b3R5cGVPZihhbnlOYXRpdmVJdGVyYXRvci5jYWxsKG5ldyBJdGVyYWJsZSgpKSk7XG4gICAgaWYgKEl0ZXJhdG9yUHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZS5uZXh0KSB7XG4gICAgICBpZiAoIUlTX1BVUkUgJiYgZ2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlKSAhPT0gSXRlcmF0b3JQcm90b3R5cGUpIHtcbiAgICAgICAgaWYgKHNldFByb3RvdHlwZU9mKSB7XG4gICAgICAgICAgc2V0UHJvdG90eXBlT2YoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBJdGVyYXRvclByb3RvdHlwZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZVtJVEVSQVRPUl0gIT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIElURVJBVE9SLCByZXR1cm5UaGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gU2V0IEBAdG9TdHJpbmdUYWcgdG8gbmF0aXZlIGl0ZXJhdG9yc1xuICAgICAgc2V0VG9TdHJpbmdUYWcoQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLCBUT19TVFJJTkdfVEFHLCB0cnVlLCB0cnVlKTtcbiAgICAgIGlmIChJU19QVVJFKSBJdGVyYXRvcnNbVE9fU1RSSU5HX1RBR10gPSByZXR1cm5UaGlzO1xuICAgIH1cbiAgfVxuXG4gIC8vIGZpeCBBcnJheSN7dmFsdWVzLCBAQGl0ZXJhdG9yfS5uYW1lIGluIFY4IC8gRkZcbiAgaWYgKERFRkFVTFQgPT0gVkFMVUVTICYmIG5hdGl2ZUl0ZXJhdG9yICYmIG5hdGl2ZUl0ZXJhdG9yLm5hbWUgIT09IFZBTFVFUykge1xuICAgIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IHRydWU7XG4gICAgZGVmYXVsdEl0ZXJhdG9yID0gZnVuY3Rpb24gdmFsdWVzKCkgeyByZXR1cm4gbmF0aXZlSXRlcmF0b3IuY2FsbCh0aGlzKTsgfTtcbiAgfVxuXG4gIC8vIGRlZmluZSBpdGVyYXRvclxuICBpZiAoKCFJU19QVVJFIHx8IEZPUkNFRCkgJiYgSXRlcmFibGVQcm90b3R5cGVbSVRFUkFUT1JdICE9PSBkZWZhdWx0SXRlcmF0b3IpIHtcbiAgICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkoSXRlcmFibGVQcm90b3R5cGUsIElURVJBVE9SLCBkZWZhdWx0SXRlcmF0b3IpO1xuICB9XG4gIEl0ZXJhdG9yc1tOQU1FXSA9IGRlZmF1bHRJdGVyYXRvcjtcblxuICAvLyBleHBvcnQgYWRkaXRpb25hbCBtZXRob2RzXG4gIGlmIChERUZBVUxUKSB7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogZ2V0SXRlcmF0aW9uTWV0aG9kKFZBTFVFUyksXG4gICAgICBrZXlzOiBJU19TRVQgPyBkZWZhdWx0SXRlcmF0b3IgOiBnZXRJdGVyYXRpb25NZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiBnZXRJdGVyYXRpb25NZXRob2QoRU5UUklFUylcbiAgICB9O1xuICAgIGlmIChGT1JDRUQpIGZvciAoS0VZIGluIG1ldGhvZHMpIHtcbiAgICAgIGlmIChCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB8fCAhKEtFWSBpbiBJdGVyYWJsZVByb3RvdHlwZSkpIHtcbiAgICAgICAgcmVkZWZpbmUoSXRlcmFibGVQcm90b3R5cGUsIEtFWSwgbWV0aG9kc1tLRVldKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgJCh7IHRhcmdldDogTkFNRSwgcHJvdG86IHRydWUsIGZvcmNlZDogQlVHR1lfU0FGQVJJX0lURVJBVE9SUyB8fCBJTkNPUlJFQ1RfVkFMVUVTX05BTUUgfSwgbWV0aG9kcyk7XG4gIH1cblxuICByZXR1cm4gbWV0aG9kcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZ2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1wcm90b3R5cGUtb2YnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgaGFzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcycpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xuXG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgQlVHR1lfU0FGQVJJX0lURVJBVE9SUyA9IGZhbHNlO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbi8vIGAlSXRlcmF0b3JQcm90b3R5cGUlYCBvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWl0ZXJhdG9ycHJvdG90eXBlJS1vYmplY3RcbnZhciBJdGVyYXRvclByb3RvdHlwZSwgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlLCBhcnJheUl0ZXJhdG9yO1xuXG5pZiAoW10ua2V5cykge1xuICBhcnJheUl0ZXJhdG9yID0gW10ua2V5cygpO1xuICAvLyBTYWZhcmkgOCBoYXMgYnVnZ3kgaXRlcmF0b3JzIHcvbyBgbmV4dGBcbiAgaWYgKCEoJ25leHQnIGluIGFycmF5SXRlcmF0b3IpKSBCVUdHWV9TQUZBUklfSVRFUkFUT1JTID0gdHJ1ZTtcbiAgZWxzZSB7XG4gICAgUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG90eXBlT2YoZ2V0UHJvdG90eXBlT2YoYXJyYXlJdGVyYXRvcikpO1xuICAgIGlmIChQcm90b3R5cGVPZkFycmF5SXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUpIEl0ZXJhdG9yUHJvdG90eXBlID0gUHJvdG90eXBlT2ZBcnJheUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG59XG5cbmlmIChJdGVyYXRvclByb3RvdHlwZSA9PSB1bmRlZmluZWQpIEl0ZXJhdG9yUHJvdG90eXBlID0ge307XG5cbi8vIDI1LjEuMi4xLjEgJUl0ZXJhdG9yUHJvdG90eXBlJVtAQGl0ZXJhdG9yXSgpXG5pZiAoIUlTX1BVUkUgJiYgIWhhcyhJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IpKSB7XG4gIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgSXRlcmF0b3JQcm90b3R5cGU6IEl0ZXJhdG9yUHJvdG90eXBlLFxuICBCVUdHWV9TQUZBUklfSVRFUkFUT1JTOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHRvSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbmRleGVkLW9iamVjdCcpO1xudmFyIGFkZFRvVW5zY29wYWJsZXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYWRkLXRvLXVuc2NvcGFibGVzJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdG9ycycpO1xudmFyIEludGVybmFsU3RhdGVNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW50ZXJuYWwtc3RhdGUnKTtcbnZhciBkZWZpbmVJdGVyYXRvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZWZpbmUtaXRlcmF0b3InKTtcblxudmFyIEFSUkFZX0lURVJBVE9SID0gJ0FycmF5IEl0ZXJhdG9yJztcbnZhciBzZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5zZXQ7XG52YXIgZ2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuZ2V0dGVyRm9yKEFSUkFZX0lURVJBVE9SKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5lbnRyaWVzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmVudHJpZXNcbi8vIGBBcnJheS5wcm90b3R5cGUua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5rZXlzXG4vLyBgQXJyYXkucHJvdG90eXBlLnZhbHVlc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS52YWx1ZXNcbi8vIGBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl1gIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEBpdGVyYXRvclxuLy8gYENyZWF0ZUFycmF5SXRlcmF0b3JgIGludGVybmFsIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVhcnJheWl0ZXJhdG9yXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZUl0ZXJhdG9yKEFycmF5LCAnQXJyYXknLCBmdW5jdGlvbiAoaXRlcmF0ZWQsIGtpbmQpIHtcbiAgc2V0SW50ZXJuYWxTdGF0ZSh0aGlzLCB7XG4gICAgdHlwZTogQVJSQVlfSVRFUkFUT1IsXG4gICAgdGFyZ2V0OiB0b0luZGV4ZWRPYmplY3QoaXRlcmF0ZWQpLCAvLyB0YXJnZXRcbiAgICBpbmRleDogMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbiAgICBraW5kOiBraW5kICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGtpbmRcbiAgfSk7XG4vLyBgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlLm5leHRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy0lYXJyYXlpdGVyYXRvcnByb3RvdHlwZSUubmV4dFxufSwgZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgdGFyZ2V0ID0gc3RhdGUudGFyZ2V0O1xuICB2YXIga2luZCA9IHN0YXRlLmtpbmQ7XG4gIHZhciBpbmRleCA9IHN0YXRlLmluZGV4Kys7XG4gIGlmICghdGFyZ2V0IHx8IGluZGV4ID49IHRhcmdldC5sZW5ndGgpIHtcbiAgICBzdGF0ZS50YXJnZXQgPSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG4gIGlmIChraW5kID09ICdrZXlzJykgcmV0dXJuIHsgdmFsdWU6IGluZGV4LCBkb25lOiBmYWxzZSB9O1xuICBpZiAoa2luZCA9PSAndmFsdWVzJykgcmV0dXJuIHsgdmFsdWU6IHRhcmdldFtpbmRleF0sIGRvbmU6IGZhbHNlIH07XG4gIHJldHVybiB7IHZhbHVlOiBbaW5kZXgsIHRhcmdldFtpbmRleF1dLCBkb25lOiBmYWxzZSB9O1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyVcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRldW5tYXBwZWRhcmd1bWVudHNvYmplY3Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlbWFwcGVkYXJndW1lbnRzb2JqZWN0XG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxuLy8gYFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3NgIGdldHRlciBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1nZXQtcmVnZXhwLnByb3RvdHlwZS5mbGFnc1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciB0aGF0ID0gYW5PYmplY3QodGhpcyk7XG4gIHZhciByZXN1bHQgPSAnJztcbiAgaWYgKHRoYXQuZ2xvYmFsKSByZXN1bHQgKz0gJ2cnO1xuICBpZiAodGhhdC5pZ25vcmVDYXNlKSByZXN1bHQgKz0gJ2knO1xuICBpZiAodGhhdC5tdWx0aWxpbmUpIHJlc3VsdCArPSAnbSc7XG4gIGlmICh0aGF0LmRvdEFsbCkgcmVzdWx0ICs9ICdzJztcbiAgaWYgKHRoYXQudW5pY29kZSkgcmVzdWx0ICs9ICd1JztcbiAgaWYgKHRoYXQuc3RpY2t5KSByZXN1bHQgKz0gJ3knO1xuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBmaXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9maXgtcmVnZXhwLXdlbGwta25vd24tc3ltYm9sLWxvZ2ljJyk7XG52YXIgaXNSZWdFeHAgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcmVnZXhwJyk7XG52YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYW4tb2JqZWN0Jyk7XG52YXIgcmVxdWlyZU9iamVjdENvZXJjaWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZXF1aXJlLW9iamVjdC1jb2VyY2libGUnKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGNhbGxSZWdFeHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG52YXIgcmVnZXhwRXhlYyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWdleHAtZXhlYycpO1xudmFyIHN0aWNreUhlbHBlcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLXN0aWNreS1oZWxwZXJzJyk7XG5cbnZhciBVTlNVUFBPUlRFRF9ZID0gc3RpY2t5SGVscGVycy5VTlNVUFBPUlRFRF9ZO1xudmFyIGFycmF5UHVzaCA9IFtdLnB1c2g7XG52YXIgbWluID0gTWF0aC5taW47XG52YXIgTUFYX1VJTlQzMiA9IDB4RkZGRkZGRkY7XG5cbi8vIEBAc3BsaXQgbG9naWNcbmZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljKCdzcGxpdCcsIDIsIGZ1bmN0aW9uIChTUExJVCwgbmF0aXZlU3BsaXQsIG1heWJlQ2FsbE5hdGl2ZSkge1xuICB2YXIgaW50ZXJuYWxTcGxpdDtcbiAgaWYgKFxuICAgICdhYmJjJy5zcGxpdCgvKGIpKi8pWzFdID09ICdjJyB8fFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWdleHAvbm8tZW1wdHktZ3JvdXAgLS0gcmVxdWlyZWQgZm9yIHRlc3RpbmdcbiAgICAndGVzdCcuc3BsaXQoLyg/OikvLCAtMSkubGVuZ3RoICE9IDQgfHxcbiAgICAnYWInLnNwbGl0KC8oPzphYikqLykubGVuZ3RoICE9IDIgfHxcbiAgICAnLicuc3BsaXQoLyguPykoLj8pLykubGVuZ3RoICE9IDQgfHxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVnZXhwL25vLWFzc2VydGlvbi1jYXB0dXJpbmctZ3JvdXAsIHJlZ2V4cC9uby1lbXB0eS1ncm91cCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgICcuJy5zcGxpdCgvKCkoKS8pLmxlbmd0aCA+IDEgfHxcbiAgICAnJy5zcGxpdCgvLj8vKS5sZW5ndGhcbiAgKSB7XG4gICAgLy8gYmFzZWQgb24gZXM1LXNoaW0gaW1wbGVtZW50YXRpb24sIG5lZWQgdG8gcmV3b3JrIGl0XG4gICAgaW50ZXJuYWxTcGxpdCA9IGZ1bmN0aW9uIChzZXBhcmF0b3IsIGxpbWl0KSB7XG4gICAgICB2YXIgc3RyaW5nID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcykpO1xuICAgICAgdmFyIGxpbSA9IGxpbWl0ID09PSB1bmRlZmluZWQgPyBNQVhfVUlOVDMyIDogbGltaXQgPj4+IDA7XG4gICAgICBpZiAobGltID09PSAwKSByZXR1cm4gW107XG4gICAgICBpZiAoc2VwYXJhdG9yID09PSB1bmRlZmluZWQpIHJldHVybiBbc3RyaW5nXTtcbiAgICAgIC8vIElmIGBzZXBhcmF0b3JgIGlzIG5vdCBhIHJlZ2V4LCB1c2UgbmF0aXZlIHNwbGl0XG4gICAgICBpZiAoIWlzUmVnRXhwKHNlcGFyYXRvcikpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZVNwbGl0LmNhbGwoc3RyaW5nLCBzZXBhcmF0b3IsIGxpbSk7XG4gICAgICB9XG4gICAgICB2YXIgb3V0cHV0ID0gW107XG4gICAgICB2YXIgZmxhZ3MgPSAoc2VwYXJhdG9yLmlnbm9yZUNhc2UgPyAnaScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHNlcGFyYXRvci51bmljb2RlID8gJ3UnIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChzZXBhcmF0b3Iuc3RpY2t5ID8gJ3knIDogJycpO1xuICAgICAgdmFyIGxhc3RMYXN0SW5kZXggPSAwO1xuICAgICAgLy8gTWFrZSBgZ2xvYmFsYCBhbmQgYXZvaWQgYGxhc3RJbmRleGAgaXNzdWVzIGJ5IHdvcmtpbmcgd2l0aCBhIGNvcHlcbiAgICAgIHZhciBzZXBhcmF0b3JDb3B5ID0gbmV3IFJlZ0V4cChzZXBhcmF0b3Iuc291cmNlLCBmbGFncyArICdnJyk7XG4gICAgICB2YXIgbWF0Y2gsIGxhc3RJbmRleCwgbGFzdExlbmd0aDtcbiAgICAgIHdoaWxlIChtYXRjaCA9IHJlZ2V4cEV4ZWMuY2FsbChzZXBhcmF0b3JDb3B5LCBzdHJpbmcpKSB7XG4gICAgICAgIGxhc3RJbmRleCA9IHNlcGFyYXRvckNvcHkubGFzdEluZGV4O1xuICAgICAgICBpZiAobGFzdEluZGV4ID4gbGFzdExhc3RJbmRleCkge1xuICAgICAgICAgIG91dHB1dC5wdXNoKHN0cmluZy5zbGljZShsYXN0TGFzdEluZGV4LCBtYXRjaC5pbmRleCkpO1xuICAgICAgICAgIGlmIChtYXRjaC5sZW5ndGggPiAxICYmIG1hdGNoLmluZGV4IDwgc3RyaW5nLmxlbmd0aCkgYXJyYXlQdXNoLmFwcGx5KG91dHB1dCwgbWF0Y2guc2xpY2UoMSkpO1xuICAgICAgICAgIGxhc3RMZW5ndGggPSBtYXRjaFswXS5sZW5ndGg7XG4gICAgICAgICAgbGFzdExhc3RJbmRleCA9IGxhc3RJbmRleDtcbiAgICAgICAgICBpZiAob3V0cHV0Lmxlbmd0aCA+PSBsaW0pIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXBhcmF0b3JDb3B5Lmxhc3RJbmRleCA9PT0gbWF0Y2guaW5kZXgpIHNlcGFyYXRvckNvcHkubGFzdEluZGV4Kys7IC8vIEF2b2lkIGFuIGluZmluaXRlIGxvb3BcbiAgICAgIH1cbiAgICAgIGlmIChsYXN0TGFzdEluZGV4ID09PSBzdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIGlmIChsYXN0TGVuZ3RoIHx8ICFzZXBhcmF0b3JDb3B5LnRlc3QoJycpKSBvdXRwdXQucHVzaCgnJyk7XG4gICAgICB9IGVsc2Ugb3V0cHV0LnB1c2goc3RyaW5nLnNsaWNlKGxhc3RMYXN0SW5kZXgpKTtcbiAgICAgIHJldHVybiBvdXRwdXQubGVuZ3RoID4gbGltID8gb3V0cHV0LnNsaWNlKDAsIGxpbSkgOiBvdXRwdXQ7XG4gICAgfTtcbiAgLy8gQ2hha3JhLCBWOFxuICB9IGVsc2UgaWYgKCcwJy5zcGxpdCh1bmRlZmluZWQsIDApLmxlbmd0aCkge1xuICAgIGludGVybmFsU3BsaXQgPSBmdW5jdGlvbiAoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgcmV0dXJuIHNlcGFyYXRvciA9PT0gdW5kZWZpbmVkICYmIGxpbWl0ID09PSAwID8gW10gOiBuYXRpdmVTcGxpdC5jYWxsKHRoaXMsIHNlcGFyYXRvciwgbGltaXQpO1xuICAgIH07XG4gIH0gZWxzZSBpbnRlcm5hbFNwbGl0ID0gbmF0aXZlU3BsaXQ7XG5cbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zcGxpdGAgbWV0aG9kXG4gICAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zdHJpbmcucHJvdG90eXBlLnNwbGl0XG4gICAgZnVuY3Rpb24gc3BsaXQoc2VwYXJhdG9yLCBsaW1pdCkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIHNwbGl0dGVyID0gc2VwYXJhdG9yID09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZCA6IHNlcGFyYXRvcltTUExJVF07XG4gICAgICByZXR1cm4gc3BsaXR0ZXIgIT09IHVuZGVmaW5lZFxuICAgICAgICA/IHNwbGl0dGVyLmNhbGwoc2VwYXJhdG9yLCBPLCBsaW1pdClcbiAgICAgICAgOiBpbnRlcm5hbFNwbGl0LmNhbGwoU3RyaW5nKE8pLCBzZXBhcmF0b3IsIGxpbWl0KTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAc3BsaXRdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBzcGxpdFxuICAgIC8vXG4gICAgLy8gTk9URTogVGhpcyBjYW5ub3QgYmUgcHJvcGVybHkgcG9seWZpbGxlZCBpbiBlbmdpbmVzIHRoYXQgZG9uJ3Qgc3VwcG9ydFxuICAgIC8vIHRoZSAneScgZmxhZy5cbiAgICBmdW5jdGlvbiAocmVnZXhwLCBsaW1pdCkge1xuICAgICAgdmFyIHJlcyA9IG1heWJlQ2FsbE5hdGl2ZShpbnRlcm5hbFNwbGl0LCByZWdleHAsIHRoaXMsIGxpbWl0LCBpbnRlcm5hbFNwbGl0ICE9PSBuYXRpdmVTcGxpdCk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcbiAgICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHJ4LCBSZWdFeHApO1xuXG4gICAgICB2YXIgdW5pY29kZU1hdGNoaW5nID0gcngudW5pY29kZTtcbiAgICAgIHZhciBmbGFncyA9IChyeC5pZ25vcmVDYXNlID8gJ2knIDogJycpICtcbiAgICAgICAgICAgICAgICAgIChyeC5tdWx0aWxpbmUgPyAnbScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJ4LnVuaWNvZGUgPyAndScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKFVOU1VQUE9SVEVEX1kgPyAnZycgOiAneScpO1xuXG4gICAgICAvLyBeKD8gKyByeCArICkgaXMgbmVlZGVkLCBpbiBjb21iaW5hdGlvbiB3aXRoIHNvbWUgUyBzbGljaW5nLCB0b1xuICAgICAgLy8gc2ltdWxhdGUgdGhlICd5JyBmbGFnLlxuICAgICAgdmFyIHNwbGl0dGVyID0gbmV3IEMoVU5TVVBQT1JURURfWSA/ICdeKD86JyArIHJ4LnNvdXJjZSArICcpJyA6IHJ4LCBmbGFncyk7XG4gICAgICB2YXIgbGltID0gbGltaXQgPT09IHVuZGVmaW5lZCA/IE1BWF9VSU5UMzIgOiBsaW1pdCA+Pj4gMDtcbiAgICAgIGlmIChsaW0gPT09IDApIHJldHVybiBbXTtcbiAgICAgIGlmIChTLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBTKSA9PT0gbnVsbCA/IFtTXSA6IFtdO1xuICAgICAgdmFyIHAgPSAwO1xuICAgICAgdmFyIHEgPSAwO1xuICAgICAgdmFyIEEgPSBbXTtcbiAgICAgIHdoaWxlIChxIDwgUy5sZW5ndGgpIHtcbiAgICAgICAgc3BsaXR0ZXIubGFzdEluZGV4ID0gVU5TVVBQT1JURURfWSA/IDAgOiBxO1xuICAgICAgICB2YXIgeiA9IGNhbGxSZWdFeHBFeGVjKHNwbGl0dGVyLCBVTlNVUFBPUlRFRF9ZID8gUy5zbGljZShxKSA6IFMpO1xuICAgICAgICB2YXIgZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHogPT09IG51bGwgfHxcbiAgICAgICAgICAoZSA9IG1pbih0b0xlbmd0aChzcGxpdHRlci5sYXN0SW5kZXggKyAoVU5TVVBQT1JURURfWSA/IHEgOiAwKSksIFMubGVuZ3RoKSkgPT09IHBcbiAgICAgICAgKSB7XG4gICAgICAgICAgcSA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCBxLCB1bmljb2RlTWF0Y2hpbmcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIEEucHVzaChTLnNsaWNlKHAsIHEpKTtcbiAgICAgICAgICBpZiAoQS5sZW5ndGggPT09IGxpbSkgcmV0dXJuIEE7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPD0gei5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgICAgIEEucHVzaCh6W2ldKTtcbiAgICAgICAgICAgIGlmIChBLmxlbmd0aCA9PT0gbGltKSByZXR1cm4gQTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcSA9IHAgPSBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBBLnB1c2goUy5zbGljZShwKSk7XG4gICAgICByZXR1cm4gQTtcbiAgICB9XG4gIF07XG59LCBVTlNVUFBPUlRFRF9ZKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGNyZWF0ZUhUTUwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLWh0bWwnKTtcbnZhciBmb3JjZWRTdHJpbmdIVE1MTWV0aG9kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1odG1sLWZvcmNlZCcpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS5saW5rYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5saW5rXG4kKHsgdGFyZ2V0OiAnU3RyaW5nJywgcHJvdG86IHRydWUsIGZvcmNlZDogZm9yY2VkU3RyaW5nSFRNTE1ldGhvZCgnbGluaycpIH0sIHtcbiAgbGluazogZnVuY3Rpb24gbGluayh1cmwpIHtcbiAgICByZXR1cm4gY3JlYXRlSFRNTCh0aGlzLCAnYScsICdocmVmJywgdXJsKTtcbiAgfVxufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5KdWE7IiwiaW1wb3J0IGtvIGZyb20gJ2tvJztcbmltcG9ydCBfIGZyb20gJ18nO1xuXG4vLyBpbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5jbGFzcyBUZW1wbGF0ZVVzZXJTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMudGVtcGxhdGVzID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblx0XHR0aGlzLnRlbXBsYXRlcy5sb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgdGhyb3R0bGU6IDEwMCB9KTtcblxuXHRcdHRoaXMudGVtcGxhdGVzTmFtZXMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pLmV4dGVuZCh7IHRocm90dGxlOiAxMDAwIH0pO1xuXHRcdHRoaXMudGVtcGxhdGVzTmFtZXMuc2tpcEZpcnN0ID0gdHJ1ZTtcblxuXHRcdHRoaXMuc3Vic2NyaWJlcnMoKTtcblx0fVxuXG5cdHN1YnNjcmliZXJzKCkge1xuXHRcdHRoaXMudGVtcGxhdGVzLnN1YnNjcmliZSgobGlzdCkgPT4ge1xuXHRcdFx0dGhpcy50ZW1wbGF0ZXNOYW1lcyhfLmNvbXBhY3QoXy5tYXAobGlzdCwgKGl0ZW0pID0+IChpdGVtID8gaXRlbS5uYW1lIDogbnVsbCkpKSk7XG5cdFx0fSk7XG5cblx0XHQvLyB0aGlzLnRlbXBsYXRlc05hbWVzLnN1YnNjcmliZSgoYUxpc3QpID0+IHtcblx0XHQvLyBcdGlmICh0aGlzLnRlbXBsYXRlc05hbWVzLnNraXBGaXJzdClcblx0XHQvLyBcdHtcblx0XHQvLyBcdFx0dGhpcy50ZW1wbGF0ZXNOYW1lcy5za2lwRmlyc3QgPSBmYWxzZTtcblx0XHQvLyBcdH1cblx0XHQvLyBcdGVsc2UgaWYgKGFMaXN0ICYmIDEgPCBhTGlzdC5sZW5ndGgpXG5cdFx0Ly8gXHR7XG5cdFx0Ly8gXHRcdFJlbW90ZS50ZW1wbGF0ZXNTb3J0T3JkZXIobnVsbCwgYUxpc3QpO1xuXHRcdC8vIFx0fVxuXHRcdC8vIH0pO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBUZW1wbGF0ZVVzZXJTdG9yZSgpO1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBGaWxlVHlwZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBiQWxsb3dQZGZQcmV2aWV3LCBkYXRhIGFzIEdsb2JhbHNEYXRhIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0IHsgdHJpbSwgcEludCwgaW5BcnJheSwgaXNOb25FbXB0eUFycmF5LCBnZXRGaWxlRXh0ZW5zaW9uLCBmcmllbmRseVNpemUgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHtcblx0YXR0YWNobWVudERvd25sb2FkLFxuXHRhdHRhY2htZW50UHJldmlldyxcblx0YXR0YWNobWVudEZyYW1lZCxcblx0YXR0YWNobWVudFByZXZpZXdBc1BsYWluLFxuXHRhdHRhY2htZW50VGh1bWJuYWlsUHJldmlld1xufSBmcm9tICdDb21tb24vTGlua3MnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmltcG9ydCBBdWRpbyBmcm9tICdDb21tb24vQXVkaW8nO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzRXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gc01pbWVUeXBlXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5leHBvcnQgY29uc3Qgc3RhdGljRmlsZVR5cGUgPSBfLm1lbW9pemUoKGV4dCwgbWltZVR5cGUpID0+IHtcblx0ZXh0ID0gdHJpbShleHQpLnRvTG93ZXJDYXNlKCk7XG5cdG1pbWVUeXBlID0gdHJpbShtaW1lVHlwZSkudG9Mb3dlckNhc2UoKTtcblxuXHRsZXQgcmVzdWx0ID0gRmlsZVR5cGUuVW5rbm93bjtcblx0Y29uc3QgbWltZVR5cGVQYXJ0cyA9IG1pbWVUeXBlLnNwbGl0KCcvJyk7XG5cblx0c3dpdGNoICh0cnVlKSB7XG5cdFx0Y2FzZSAnaW1hZ2UnID09PSBtaW1lVHlwZVBhcnRzWzBdIHx8IC0xIDwgaW5BcnJheShleHQsIFsncG5nJywgJ2pwZycsICdqcGVnJywgJ2dpZicsICdibXAnXSk6XG5cdFx0XHRyZXN1bHQgPSBGaWxlVHlwZS5JbWFnZTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgJ2F1ZGlvJyA9PT0gbWltZVR5cGVQYXJ0c1swXSB8fCAtMSA8IGluQXJyYXkoZXh0LCBbJ21wMycsICdvZ2cnLCAnb2dhJywgJ3dhdiddKTpcblx0XHRcdHJlc3VsdCA9IEZpbGVUeXBlLkF1ZGlvO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAndmlkZW8nID09PSBtaW1lVHlwZVBhcnRzWzBdIHx8IC0xIDwgaW5BcnJheShleHQsIFsnbWt2JywgJ2F2aSddKTpcblx0XHRcdHJlc3VsdCA9IEZpbGVUeXBlLlZpZGVvO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAtMSA8IGluQXJyYXkoZXh0LCBbJ3BocCcsICdqcycsICdjc3MnXSk6XG5cdFx0XHRyZXN1bHQgPSBGaWxlVHlwZS5Db2RlO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAnZW1sJyA9PT0gZXh0IHx8IC0xIDwgaW5BcnJheShtaW1lVHlwZSwgWydtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1cycsICdtZXNzYWdlL3JmYzgyMiddKTpcblx0XHRcdHJlc3VsdCA9IEZpbGVUeXBlLkVtbDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgKCd0ZXh0JyA9PT0gbWltZVR5cGVQYXJ0c1swXSAmJiAnaHRtbCcgIT09IG1pbWVUeXBlUGFydHNbMV0pIHx8IC0xIDwgaW5BcnJheShleHQsIFsndHh0JywgJ2xvZyddKTpcblx0XHRcdHJlc3VsdCA9IEZpbGVUeXBlLlRleHQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlICd0ZXh0L2h0bWwnID09PSBtaW1lVHlwZSB8fCAtMSA8IGluQXJyYXkoZXh0LCBbJ2h0bWwnXSk6XG5cdFx0XHRyZXN1bHQgPSBGaWxlVHlwZS5IdG1sO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAtMSA8XG5cdFx0XHRpbkFycmF5KG1pbWVUeXBlUGFydHNbMV0sIFtcblx0XHRcdFx0J3ppcCcsXG5cdFx0XHRcdCc3eicsXG5cdFx0XHRcdCd0YXInLFxuXHRcdFx0XHQncmFyJyxcblx0XHRcdFx0J2d6aXAnLFxuXHRcdFx0XHQnYnppcCcsXG5cdFx0XHRcdCdiemlwMicsXG5cdFx0XHRcdCd4LXppcCcsXG5cdFx0XHRcdCd4LTd6Jyxcblx0XHRcdFx0J3gtcmFyJyxcblx0XHRcdFx0J3gtdGFyJyxcblx0XHRcdFx0J3gtZ3ppcCcsXG5cdFx0XHRcdCd4LWJ6aXAnLFxuXHRcdFx0XHQneC1iemlwMicsXG5cdFx0XHRcdCd4LXppcC1jb21wcmVzc2VkJyxcblx0XHRcdFx0J3gtN3otY29tcHJlc3NlZCcsXG5cdFx0XHRcdCd4LXJhci1jb21wcmVzc2VkJ1xuXHRcdFx0XSkgfHwgLTEgPCBpbkFycmF5KGV4dCwgWyd6aXAnLCAnN3onLCAndGFyJywgJ3JhcicsICdnemlwJywgJ2J6aXAnLCAnYnppcDInXSk6XG5cdFx0XHRyZXN1bHQgPSBGaWxlVHlwZS5BcmNoaXZlO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSAtMSA8IGluQXJyYXkobWltZVR5cGVQYXJ0c1sxXSwgWydwZGYnLCAneC1wZGYnXSkgfHwgLTEgPCBpbkFycmF5KGV4dCwgWydwZGYnXSk6XG5cdFx0XHRyZXN1bHQgPSBGaWxlVHlwZS5QZGY7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIC0xIDwgaW5BcnJheShtaW1lVHlwZSwgWydhcHBsaWNhdGlvbi9wZ3Atc2lnbmF0dXJlJywgJ2FwcGxpY2F0aW9uL3BncC1rZXlzJ10pIHx8XG5cdFx0XHQtMSA8IGluQXJyYXkoZXh0LCBbJ2FzYycsICdwZW0nLCAncHBrJ10pOlxuXHRcdFx0cmVzdWx0ID0gRmlsZVR5cGUuQ2VydGlmaWNhdGU7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIC0xIDwgaW5BcnJheShtaW1lVHlwZSwgWydhcHBsaWNhdGlvbi9wa2NzNy1zaWduYXR1cmUnXSkgfHwgLTEgPCBpbkFycmF5KGV4dCwgWydwN3MnXSk6XG5cdFx0XHRyZXN1bHQgPSBGaWxlVHlwZS5DZXJ0aWZpY2F0ZUJpbjtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgLTEgPFxuXHRcdFx0aW5BcnJheShtaW1lVHlwZVBhcnRzWzFdLCBbXG5cdFx0XHRcdCdydGYnLFxuXHRcdFx0XHQnbXN3b3JkJyxcblx0XHRcdFx0J3ZuZC5tc3dvcmQnLFxuXHRcdFx0XHQndm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLFxuXHRcdFx0XHQndm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwudGVtcGxhdGUnLFxuXHRcdFx0XHQndm5kLm1zLXdvcmQuZG9jdW1lbnQubWFjcm9FbmFibGVkLjEyJyxcblx0XHRcdFx0J3ZuZC5tcy13b3JkLnRlbXBsYXRlLm1hY3JvRW5hYmxlZC4xMidcblx0XHRcdF0pOlxuXHRcdFx0cmVzdWx0ID0gRmlsZVR5cGUuV29yZFRleHQ7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIC0xIDxcblx0XHRcdGluQXJyYXkobWltZVR5cGVQYXJ0c1sxXSwgW1xuXHRcdFx0XHQnZXhjZWwnLFxuXHRcdFx0XHQnbXMtZXhjZWwnLFxuXHRcdFx0XHQndm5kLm1zLWV4Y2VsJyxcblx0XHRcdFx0J3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Jyxcblx0XHRcdFx0J3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnRlbXBsYXRlJyxcblx0XHRcdFx0J3ZuZC5tcy1leGNlbC5zaGVldC5tYWNyb0VuYWJsZWQuMTInLFxuXHRcdFx0XHQndm5kLm1zLWV4Y2VsLnRlbXBsYXRlLm1hY3JvRW5hYmxlZC4xMicsXG5cdFx0XHRcdCd2bmQubXMtZXhjZWwuYWRkaW4ubWFjcm9FbmFibGVkLjEyJyxcblx0XHRcdFx0J3ZuZC5tcy1leGNlbC5zaGVldC5iaW5hcnkubWFjcm9FbmFibGVkLjEyJ1xuXHRcdFx0XSk6XG5cdFx0XHRyZXN1bHQgPSBGaWxlVHlwZS5TaGVldDtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgLTEgPFxuXHRcdFx0aW5BcnJheShtaW1lVHlwZVBhcnRzWzFdLCBbXG5cdFx0XHRcdCdwb3dlcnBvaW50Jyxcblx0XHRcdFx0J21zLXBvd2VycG9pbnQnLFxuXHRcdFx0XHQndm5kLm1zLXBvd2VycG9pbnQnLFxuXHRcdFx0XHQndm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsXG5cdFx0XHRcdCd2bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQucHJlc2VudGF0aW9ubWwudGVtcGxhdGUnLFxuXHRcdFx0XHQndm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnNsaWRlc2hvdycsXG5cdFx0XHRcdCd2bmQubXMtcG93ZXJwb2ludC5hZGRpbi5tYWNyb0VuYWJsZWQuMTInLFxuXHRcdFx0XHQndm5kLm1zLXBvd2VycG9pbnQucHJlc2VudGF0aW9uLm1hY3JvRW5hYmxlZC4xMicsXG5cdFx0XHRcdCd2bmQubXMtcG93ZXJwb2ludC50ZW1wbGF0ZS5tYWNyb0VuYWJsZWQuMTInLFxuXHRcdFx0XHQndm5kLm1zLXBvd2VycG9pbnQuc2xpZGVzaG93Lm1hY3JvRW5hYmxlZC4xMidcblx0XHRcdF0pOlxuXHRcdFx0cmVzdWx0ID0gRmlsZVR5cGUuUHJlc2VudGF0aW9uO1xuXHRcdFx0YnJlYWs7XG5cdFx0Ly8gbm8gZGVmYXVsdFxuXHR9XG5cblx0cmV0dXJuIHJlc3VsdDtcbn0pO1xuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBzRmlsZVR5cGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBzdGF0aWNJY29uQ2xhc3MgPSBfLm1lbW9pemUoKGZpbGVUeXBlKSA9PiB7XG5cdGxldCByZXN1bHRUZXh0ID0gJycsXG5cdFx0cmVzdWx0Q2xhc3MgPSAnaWNvbi1maWxlJztcblxuXHRzd2l0Y2ggKGZpbGVUeXBlKSB7XG5cdFx0Y2FzZSBGaWxlVHlwZS5UZXh0OlxuXHRcdGNhc2UgRmlsZVR5cGUuRW1sOlxuXHRcdGNhc2UgRmlsZVR5cGUuV29yZFRleHQ6XG5cdFx0XHRyZXN1bHRDbGFzcyA9ICdpY29uLWZpbGUtdGV4dCc7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIEZpbGVUeXBlLkh0bWw6XG5cdFx0Y2FzZSBGaWxlVHlwZS5Db2RlOlxuXHRcdFx0cmVzdWx0Q2xhc3MgPSAnaWNvbi1maWxlLWNvZGUnO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBGaWxlVHlwZS5JbWFnZTpcblx0XHRcdHJlc3VsdENsYXNzID0gJ2ljb24tZmlsZS1pbWFnZSc7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIEZpbGVUeXBlLkF1ZGlvOlxuXHRcdFx0cmVzdWx0Q2xhc3MgPSAnaWNvbi1maWxlLW11c2ljJztcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgRmlsZVR5cGUuVmlkZW86XG5cdFx0XHRyZXN1bHRDbGFzcyA9ICdpY29uLWZpbGUtbW92aWUnO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBGaWxlVHlwZS5BcmNoaXZlOlxuXHRcdFx0cmVzdWx0Q2xhc3MgPSAnaWNvbi1maWxlLXppcCc7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIEZpbGVUeXBlLkNlcnRpZmljYXRlOlxuXHRcdGNhc2UgRmlsZVR5cGUuQ2VydGlmaWNhdGVCaW46XG5cdFx0XHRyZXN1bHRDbGFzcyA9ICdpY29uLWZpbGUtY2VydGlmaWNhdGUnO1xuXHRcdFx0YnJlYWs7XG5cdFx0Y2FzZSBGaWxlVHlwZS5TaGVldDpcblx0XHRcdHJlc3VsdENsYXNzID0gJ2ljb24tZmlsZS1leGNlbCc7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIEZpbGVUeXBlLlByZXNlbnRhdGlvbjpcblx0XHRcdHJlc3VsdENsYXNzID0gJ2ljb24tZmlsZS1jaGFydC1ncmFwaCc7XG5cdFx0XHRicmVhaztcblx0XHRjYXNlIEZpbGVUeXBlLlBkZjpcblx0XHRcdHJlc3VsdFRleHQgPSAncGRmJztcblx0XHRcdHJlc3VsdENsYXNzID0gJ2ljb24tbm9uZSc7XG5cdFx0XHRicmVhaztcblx0XHQvLyBubyBkZWZhdWx0XG5cdH1cblxuXHRyZXR1cm4gW3Jlc3VsdENsYXNzLCByZXN1bHRUZXh0XTtcbn0pO1xuXG4vKipcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBzRmlsZVR5cGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmV4cG9ydCBjb25zdCBzdGF0aWNDb21iaW5lZEljb25DbGFzcyA9IChkYXRhKSA9PiB7XG5cdGxldCByZXN1bHQgPSAnJyxcblx0XHR0eXBlcyA9IFtdO1xuXG5cdGlmIChpc05vbkVtcHR5QXJyYXkoZGF0YSkpIHtcblx0XHRyZXN1bHQgPSAnaWNvbi1hdHRhY2htZW50Jztcblx0XHR0eXBlcyA9IF8udW5pcShfLmNvbXBhY3QoXy5tYXAoZGF0YSwgKGl0ZW0pID0+IChpdGVtID8gc3RhdGljRmlsZVR5cGUoZ2V0RmlsZUV4dGVuc2lvbihpdGVtWzBdKSwgaXRlbVsxXSkgOiAnJykpKSk7XG5cblx0XHRpZiAodHlwZXMgJiYgMSA9PT0gdHlwZXMubGVuZ3RoICYmIHR5cGVzWzBdKSB7XG5cdFx0XHRzd2l0Y2ggKHR5cGVzWzBdKSB7XG5cdFx0XHRcdGNhc2UgRmlsZVR5cGUuVGV4dDpcblx0XHRcdFx0Y2FzZSBGaWxlVHlwZS5Xb3JkVGV4dDpcblx0XHRcdFx0XHRyZXN1bHQgPSAnaWNvbi1maWxlLXRleHQnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLkh0bWw6XG5cdFx0XHRcdGNhc2UgRmlsZVR5cGUuQ29kZTpcblx0XHRcdFx0XHRyZXN1bHQgPSAnaWNvbi1maWxlLWNvZGUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLkltYWdlOlxuXHRcdFx0XHRcdHJlc3VsdCA9ICdpY29uLWZpbGUtaW1hZ2UnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLkF1ZGlvOlxuXHRcdFx0XHRcdHJlc3VsdCA9ICdpY29uLWZpbGUtbXVzaWMnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLlZpZGVvOlxuXHRcdFx0XHRcdHJlc3VsdCA9ICdpY29uLWZpbGUtbW92aWUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLkFyY2hpdmU6XG5cdFx0XHRcdFx0cmVzdWx0ID0gJ2ljb24tZmlsZS16aXAnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLkNlcnRpZmljYXRlOlxuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLkNlcnRpZmljYXRlQmluOlxuXHRcdFx0XHRcdHJlc3VsdCA9ICdpY29uLWZpbGUtY2VydGlmaWNhdGUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLlNoZWV0OlxuXHRcdFx0XHRcdHJlc3VsdCA9ICdpY29uLWZpbGUtZXhjZWwnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbGVUeXBlLlByZXNlbnRhdGlvbjpcblx0XHRcdFx0XHRyZXN1bHQgPSAnaWNvbi1maWxlLWNoYXJ0LWdyYXBoJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJldHVybiByZXN1bHQ7XG59O1xuXG5jbGFzcyBBdHRhY2htZW50TW9kZWwgZXh0ZW5kcyBBYnN0cmFjdE1vZGVsIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoJ0F0dGFjaG1lbnRNb2RlbCcpO1xuXG5cdFx0dGhpcy5jaGVja2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLm1pbWVUeXBlID0gJyc7XG5cdFx0dGhpcy5maWxlTmFtZSA9ICcnO1xuXHRcdHRoaXMuZmlsZU5hbWVFeHQgPSAnJztcblx0XHR0aGlzLmZpbGVUeXBlID0gRmlsZVR5cGUuVW5rbm93bjtcblx0XHR0aGlzLmVzdGltYXRlZFNpemUgPSAwO1xuXHRcdHRoaXMuZnJpZW5kbHlTaXplID0gJyc7XG5cdFx0dGhpcy5pc0lubGluZSA9IGZhbHNlO1xuXHRcdHRoaXMuaXNMaW5rZWQgPSBmYWxzZTtcblx0XHR0aGlzLmlzVGh1bWJuYWlsID0gZmFsc2U7XG5cdFx0dGhpcy5jaWQgPSAnJztcblx0XHR0aGlzLmNpZFdpdGhPdXRUYWdzID0gJyc7XG5cdFx0dGhpcy5jb250ZW50TG9jYXRpb24gPSAnJztcblx0XHR0aGlzLmRvd25sb2FkID0gJyc7XG5cdFx0dGhpcy5mb2xkZXIgPSAnJztcblx0XHR0aGlzLnVpZCA9ICcnO1xuXHRcdHRoaXMubWltZUluZGV4ID0gJyc7XG5cdFx0dGhpcy5mcmFtZWQgPSBmYWxzZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAc3RhdGljXG5cdCAqIEBwYXJhbSB7QWpheEpzb25BdHRhY2htZW50fSBqc29uXG5cdCAqIEByZXR1cm5zIHs/QXR0YWNobWVudE1vZGVsfVxuXHQgKi9cblx0c3RhdGljIG5ld0luc3RhbmNlRnJvbUpzb24oanNvbikge1xuXHRcdGNvbnN0IGF0dGFjaG1lbnQgPSBuZXcgQXR0YWNobWVudE1vZGVsKCk7XG5cdFx0cmV0dXJuIGF0dGFjaG1lbnQuaW5pdEJ5SnNvbihqc29uKSA/IGF0dGFjaG1lbnQgOiBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7QWpheEpzb25BdHRhY2htZW50fSBqc29uXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aW5pdEJ5SnNvbihqc29uKSB7XG5cdFx0bGV0IGJSZXN1bHQgPSBmYWxzZTtcblx0XHRpZiAoanNvbiAmJiAnT2JqZWN0L0F0dGFjaG1lbnQnID09PSBqc29uWydAT2JqZWN0J10pIHtcblx0XHRcdHRoaXMubWltZVR5cGUgPSB0cmltKChqc29uLk1pbWVUeXBlIHx8ICcnKS50b0xvd2VyQ2FzZSgpKTtcblx0XHRcdHRoaXMuZmlsZU5hbWUgPSB0cmltKGpzb24uRmlsZU5hbWUpO1xuXHRcdFx0dGhpcy5lc3RpbWF0ZWRTaXplID0gcEludChqc29uLkVzdGltYXRlZFNpemUpO1xuXHRcdFx0dGhpcy5pc0lubGluZSA9ICEhanNvbi5Jc0lubGluZTtcblx0XHRcdHRoaXMuaXNMaW5rZWQgPSAhIWpzb24uSXNMaW5rZWQ7XG5cdFx0XHR0aGlzLmlzVGh1bWJuYWlsID0gISFqc29uLklzVGh1bWJuYWlsO1xuXHRcdFx0dGhpcy5jaWQgPSBqc29uLkNJRDtcblx0XHRcdHRoaXMuY29udGVudExvY2F0aW9uID0ganNvbi5Db250ZW50TG9jYXRpb247XG5cdFx0XHR0aGlzLmRvd25sb2FkID0ganNvbi5Eb3dubG9hZDtcblxuXHRcdFx0dGhpcy5mb2xkZXIgPSBqc29uLkZvbGRlcjtcblx0XHRcdHRoaXMudWlkID0ganNvbi5VaWQ7XG5cdFx0XHR0aGlzLm1pbWVJbmRleCA9IGpzb24uTWltZUluZGV4O1xuXHRcdFx0dGhpcy5mcmFtZWQgPSAhIWpzb24uRnJhbWVkO1xuXG5cdFx0XHR0aGlzLmZyaWVuZGx5U2l6ZSA9IGZyaWVuZGx5U2l6ZSh0aGlzLmVzdGltYXRlZFNpemUpO1xuXHRcdFx0dGhpcy5jaWRXaXRoT3V0VGFncyA9IHRoaXMuY2lkLnJlcGxhY2UoL148Ky8sICcnKS5yZXBsYWNlKC8+KyQvLCAnJyk7XG5cblx0XHRcdHRoaXMuZmlsZU5hbWVFeHQgPSBnZXRGaWxlRXh0ZW5zaW9uKHRoaXMuZmlsZU5hbWUpO1xuXHRcdFx0dGhpcy5maWxlVHlwZSA9IHN0YXRpY0ZpbGVUeXBlKHRoaXMuZmlsZU5hbWVFeHQsIHRoaXMubWltZVR5cGUpO1xuXG5cdFx0XHRiUmVzdWx0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gYlJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGlzSW1hZ2UoKSB7XG5cdFx0cmV0dXJuIEZpbGVUeXBlLkltYWdlID09PSB0aGlzLmZpbGVUeXBlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aXNNcDMoKSB7XG5cdFx0cmV0dXJuIEZpbGVUeXBlLkF1ZGlvID09PSB0aGlzLmZpbGVUeXBlICYmICdtcDMnID09PSB0aGlzLmZpbGVOYW1lRXh0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aXNPZ2coKSB7XG5cdFx0cmV0dXJuIEZpbGVUeXBlLkF1ZGlvID09PSB0aGlzLmZpbGVUeXBlICYmICgnb2dhJyA9PT0gdGhpcy5maWxlTmFtZUV4dCB8fCAnb2dnJyA9PT0gdGhpcy5maWxlTmFtZUV4dCk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc1dhdigpIHtcblx0XHRyZXR1cm4gRmlsZVR5cGUuQXVkaW8gPT09IHRoaXMuZmlsZVR5cGUgJiYgJ3dhdicgPT09IHRoaXMuZmlsZU5hbWVFeHQ7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRoYXNUaHVtYm5haWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaXNUaHVtYm5haWw7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc1RleHQoKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdEZpbGVUeXBlLlRleHQgPT09IHRoaXMuZmlsZVR5cGUgfHxcblx0XHRcdEZpbGVUeXBlLkVtbCA9PT0gdGhpcy5maWxlVHlwZSB8fFxuXHRcdFx0RmlsZVR5cGUuQ2VydGlmaWNhdGUgPT09IHRoaXMuZmlsZVR5cGUgfHxcblx0XHRcdEZpbGVUeXBlLkh0bWwgPT09IHRoaXMuZmlsZVR5cGUgfHxcblx0XHRcdEZpbGVUeXBlLkNvZGUgPT09IHRoaXMuZmlsZVR5cGVcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aXNQZGYoKSB7XG5cdFx0cmV0dXJuIEZpbGVUeXBlLlBkZiA9PT0gdGhpcy5maWxlVHlwZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGlzRnJhbWVkKCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHR0aGlzLmZyYW1lZCAmJlxuXHRcdFx0R2xvYmFsc0RhdGEuX19BUFBfXyAmJlxuXHRcdFx0R2xvYmFsc0RhdGEuX19BUFBfXy5nb29nbGVQcmV2aWV3U3VwcG9ydGVkKCkgJiZcblx0XHRcdCEodGhpcy5pc1BkZigpICYmIGJBbGxvd1BkZlByZXZpZXcpICYmXG5cdFx0XHQhdGhpcy5pc1RleHQoKSAmJlxuXHRcdFx0IXRoaXMuaXNJbWFnZSgpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGhhc1ByZXZpZXcoKSB7XG5cdFx0cmV0dXJuIHRoaXMuaXNJbWFnZSgpIHx8ICh0aGlzLmlzUGRmKCkgJiYgYkFsbG93UGRmUHJldmlldykgfHwgdGhpcy5pc1RleHQoKSB8fCB0aGlzLmlzRnJhbWVkKCk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRoYXNQcmVwbGF5KCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQoQXVkaW8uc3VwcG9ydGVkTXAzICYmIHRoaXMuaXNNcDMoKSkgfHxcblx0XHRcdChBdWRpby5zdXBwb3J0ZWRPZ2cgJiYgdGhpcy5pc09nZygpKSB8fFxuXHRcdFx0KEF1ZGlvLnN1cHBvcnRlZFdhdiAmJiB0aGlzLmlzV2F2KCkpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0bGlua0Rvd25sb2FkKCkge1xuXHRcdHJldHVybiBhdHRhY2htZW50RG93bmxvYWQodGhpcy5kb3dubG9hZCk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGxpbmtQcmV2aWV3KCkge1xuXHRcdHJldHVybiBhdHRhY2htZW50UHJldmlldyh0aGlzLmRvd25sb2FkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0bGlua1RodW1ibmFpbCgpIHtcblx0XHRyZXR1cm4gdGhpcy5oYXNUaHVtYm5haWwoKSA/IGF0dGFjaG1lbnRUaHVtYm5haWxQcmV2aWV3KHRoaXMuZG93bmxvYWQpIDogJyc7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGxpbmtUaHVtYm5haWxQcmV2aWV3U3R5bGUoKSB7XG5cdFx0Y29uc3QgbGluayA9IHRoaXMubGlua1RodW1ibmFpbCgpO1xuXHRcdHJldHVybiAnJyA9PT0gbGluayA/ICcnIDogJ2JhY2tncm91bmQ6dXJsKCcgKyBsaW5rICsgJyknO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRsaW5rRnJhbWVkKCkge1xuXHRcdHJldHVybiBhdHRhY2htZW50RnJhbWVkKHRoaXMuZG93bmxvYWQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRsaW5rUHJldmlld0FzUGxhaW4oKSB7XG5cdFx0cmV0dXJuIGF0dGFjaG1lbnRQcmV2aWV3QXNQbGFpbih0aGlzLmRvd25sb2FkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0bGlua1ByZXZpZXdNYWluKCkge1xuXHRcdGxldCByZXN1bHQgPSAnJztcblx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRcdGNhc2UgdGhpcy5pc0ltYWdlKCk6XG5cdFx0XHRjYXNlIHRoaXMuaXNQZGYoKSAmJiBiQWxsb3dQZGZQcmV2aWV3OlxuXHRcdFx0XHRyZXN1bHQgPSB0aGlzLmxpbmtQcmV2aWV3KCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSB0aGlzLmlzVGV4dCgpOlxuXHRcdFx0XHRyZXN1bHQgPSB0aGlzLmxpbmtQcmV2aWV3QXNQbGFpbigpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgdGhpcy5pc0ZyYW1lZCgpOlxuXHRcdFx0XHRyZXN1bHQgPSB0aGlzLmxpbmtGcmFtZWQoKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0Z2VuZXJhdGVUcmFuc2ZlckRvd25sb2FkVXJsKCkge1xuXHRcdGxldCBsaW5rID0gdGhpcy5saW5rRG93bmxvYWQoKTtcblx0XHRpZiAoJ2h0dHAnICE9PSBsaW5rLnN1YnN0cigwLCA0KSkge1xuXHRcdFx0bGluayA9IHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIGxpbms7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXMubWltZVR5cGUgKyAnOicgKyB0aGlzLmZpbGVOYW1lICsgJzonICsgbGluaztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0F0dGFjaG1lbnRNb2RlbH0gYXR0YWNobWVudFxuXHQgKiBAcGFyYW0geyp9IGV2ZW50XG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0ZXZlbnREcmFnU3RhcnQoYXR0YWNobWVudCwgZXZlbnQpIHtcblx0XHRjb25zdCBsb2NhbEV2ZW50ID0gZXZlbnQub3JpZ2luYWxFdmVudCB8fCBldmVudDtcblx0XHRpZiAoYXR0YWNobWVudCAmJiBsb2NhbEV2ZW50ICYmIGxvY2FsRXZlbnQuZGF0YVRyYW5zZmVyICYmIGxvY2FsRXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEpIHtcblx0XHRcdGxvY2FsRXZlbnQuZGF0YVRyYW5zZmVyLnNldERhdGEoJ0Rvd25sb2FkVVJMJywgdGhpcy5nZW5lcmF0ZVRyYW5zZmVyRG93bmxvYWRVcmwoKSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGljb25DbGFzcygpIHtcblx0XHRyZXR1cm4gc3RhdGljSWNvbkNsYXNzKHRoaXMuZmlsZVR5cGUpWzBdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRpY29uVGV4dCgpIHtcblx0XHRyZXR1cm4gc3RhdGljSWNvbkNsYXNzKHRoaXMuZmlsZVR5cGUpWzFdO1xuXHR9XG59XG5cbmV4cG9ydCB7IEF0dGFjaG1lbnRNb2RlbCwgQXR0YWNobWVudE1vZGVsIGFzIGRlZmF1bHQgfTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChpbnNwZWN0U291cmNlKFdlYWtNYXApKTtcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaGFzJyk7XG52YXIgb3duS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vd24ta2V5cycpO1xudmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LW93bi1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIga2V5cyA9IG93bktleXMoc291cmNlKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcbiAgdmFyIGdldE93blByb3BlcnR5RGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvck1vZHVsZS5mO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICBpZiAoIWhhcyh0YXJnZXQsIGtleSkpIGRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc291cmNlLCBrZXkpKTtcbiAgfVxufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xudmFyIGdldE93blByb3BlcnR5TmFtZXNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktbmFtZXMnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHNNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktc3ltYm9scycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xuXG4vLyBhbGwgb2JqZWN0IGtleXMsIGluY2x1ZGVzIG5vbi1lbnVtZXJhYmxlIGFuZCBzeW1ib2xzXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ1JlZmxlY3QnLCAnb3duS2V5cycpIHx8IGZ1bmN0aW9uIG93bktleXMoaXQpIHtcbiAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzTW9kdWxlLmYoYW5PYmplY3QoaXQpKTtcbiAgdmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9sc01vZHVsZS5mO1xuICByZXR1cm4gZ2V0T3duUHJvcGVydHlTeW1ib2xzID8ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKGl0KSkgOiBrZXlzO1xufTtcbiIsInZhciBpbnRlcm5hbE9iamVjdEtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMtaW50ZXJuYWwnKTtcbnZhciBlbnVtQnVnS2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbnVtLWJ1Zy1rZXlzJyk7XG5cbnZhciBoaWRkZW5LZXlzID0gZW51bUJ1Z0tleXMuY29uY2F0KCdsZW5ndGgnLCAncHJvdG90eXBlJyk7XG5cbi8vIGBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eW5hbWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWdldG93bnByb3BlcnR5bmFtZXMgLS0gc2FmZVxuZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMgfHwgZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhPKSB7XG4gIHJldHVybiBpbnRlcm5hbE9iamVjdEtleXMoTywgaGlkZGVuS2V5cyk7XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIGVzL25vLXN5bWJvbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZyAqL1xudmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgJiYgIVN5bWJvbC5zaGFtXG4gICYmIHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT0gJ3N5bWJvbCc7XG4iLCJ2YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtZnVuY3Rpb24nKTtcblxuLy8gb3B0aW9uYWwgLyBzaW1wbGUgY29udGV4dCBiaW5kaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmbiwgdGhhdCwgbGVuZ3RoKSB7XG4gIGFGdW5jdGlvbihmbik7XG4gIGlmICh0aGF0ID09PSB1bmRlZmluZWQpIHJldHVybiBmbjtcbiAgc3dpdGNoIChsZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0KTtcbiAgICB9O1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvIC0tIHNhZmUgKi9cbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBhUG9zc2libGVQcm90b3R5cGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1wb3NzaWJsZS1wcm90b3R5cGUnKTtcblxuLy8gYE9iamVjdC5zZXRQcm90b3R5cGVPZmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5zZXRwcm90b3R5cGVvZlxuLy8gV29ya3Mgd2l0aCBfX3Byb3RvX18gb25seS4gT2xkIHY4IGNhbid0IHdvcmsgd2l0aCBudWxsIHByb3RvIG9iamVjdHMuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LXNldHByb3RvdHlwZW9mIC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8ICgnX19wcm90b19fJyBpbiB7fSA/IGZ1bmN0aW9uICgpIHtcbiAgdmFyIENPUlJFQ1RfU0VUVEVSID0gZmFsc2U7XG4gIHZhciB0ZXN0ID0ge307XG4gIHZhciBzZXR0ZXI7XG4gIHRyeSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3IgLS0gc2FmZVxuICAgIHNldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0LnByb3RvdHlwZSwgJ19fcHJvdG9fXycpLnNldDtcbiAgICBzZXR0ZXIuY2FsbCh0ZXN0LCBbXSk7XG4gICAgQ09SUkVDVF9TRVRURVIgPSB0ZXN0IGluc3RhbmNlb2YgQXJyYXk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7IC8qIGVtcHR5ICovIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIHNldFByb3RvdHlwZU9mKE8sIHByb3RvKSB7XG4gICAgYW5PYmplY3QoTyk7XG4gICAgYVBvc3NpYmxlUHJvdG90eXBlKHByb3RvKTtcbiAgICBpZiAoQ09SUkVDVF9TRVRURVIpIHNldHRlci5jYWxsKE8sIHByb3RvKTtcbiAgICBlbHNlIE8uX19wcm90b19fID0gcHJvdG87XG4gICAgcmV0dXJuIE87XG4gIH07XG59KCkgOiB1bmRlZmluZWQpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFRPX1NUUklOR19UQUdfU1VQUE9SVCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1zdHJpbmctdGFnLXN1cHBvcnQnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcblxuLy8gYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IFRPX1NUUklOR19UQUdfU1VQUE9SVCA/IHt9LnRvU3RyaW5nIDogZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gIHJldHVybiAnW29iamVjdCAnICsgY2xhc3NvZih0aGlzKSArICddJztcbn07XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWludGVnZXInKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZS57IGNvZGVQb2ludEF0LCBhdCB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKENPTlZFUlRfVE9fU1RSSU5HKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIHBvcykge1xuICAgIHZhciBTID0gU3RyaW5nKHJlcXVpcmVPYmplY3RDb2VyY2libGUoJHRoaXMpKTtcbiAgICB2YXIgcG9zaXRpb24gPSB0b0ludGVnZXIocG9zKTtcbiAgICB2YXIgc2l6ZSA9IFMubGVuZ3RoO1xuICAgIHZhciBmaXJzdCwgc2Vjb25kO1xuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gc2l6ZSkgcmV0dXJuIENPTlZFUlRfVE9fU1RSSU5HID8gJycgOiB1bmRlZmluZWQ7XG4gICAgZmlyc3QgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24pO1xuICAgIHJldHVybiBmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRiB8fCBwb3NpdGlvbiArIDEgPT09IHNpemVcbiAgICAgIHx8IChzZWNvbmQgPSBTLmNoYXJDb2RlQXQocG9zaXRpb24gKyAxKSkgPCAweERDMDAgfHwgc2Vjb25kID4gMHhERkZGXG4gICAgICAgID8gQ09OVkVSVF9UT19TVFJJTkcgPyBTLmNoYXJBdChwb3NpdGlvbikgOiBmaXJzdFxuICAgICAgICA6IENPTlZFUlRfVE9fU1RSSU5HID8gUy5zbGljZShwb3NpdGlvbiwgcG9zaXRpb24gKyAyKSA6IChmaXJzdCAtIDB4RDgwMCA8PCAxMCkgKyAoc2Vjb25kIC0gMHhEQzAwKSArIDB4MTAwMDA7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUuY29kZVBvaW50QXRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUuY29kZXBvaW50YXRcbiAgY29kZUF0OiBjcmVhdGVNZXRob2QoZmFsc2UpLFxuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5hdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXRoaWFzYnluZW5zL1N0cmluZy5wcm90b3R5cGUuYXRcbiAgY2hhckF0OiBjcmVhdGVNZXRob2QodHJ1ZSlcbn07XG4iLCIvLyBpdGVyYWJsZSBET00gY29sbGVjdGlvbnNcbi8vIGZsYWcgLSBgaXRlcmFibGVgIGludGVyZmFjZSAtICdlbnRyaWVzJywgJ2tleXMnLCAndmFsdWVzJywgJ2ZvckVhY2gnIG1ldGhvZHNcbm1vZHVsZS5leHBvcnRzID0ge1xuICBDU1NSdWxlTGlzdDogMCxcbiAgQ1NTU3R5bGVEZWNsYXJhdGlvbjogMCxcbiAgQ1NTVmFsdWVMaXN0OiAwLFxuICBDbGllbnRSZWN0TGlzdDogMCxcbiAgRE9NUmVjdExpc3Q6IDAsXG4gIERPTVN0cmluZ0xpc3Q6IDAsXG4gIERPTVRva2VuTGlzdDogMSxcbiAgRGF0YVRyYW5zZmVySXRlbUxpc3Q6IDAsXG4gIEZpbGVMaXN0OiAwLFxuICBIVE1MQWxsQ29sbGVjdGlvbjogMCxcbiAgSFRNTENvbGxlY3Rpb246IDAsXG4gIEhUTUxGb3JtRWxlbWVudDogMCxcbiAgSFRNTFNlbGVjdEVsZW1lbnQ6IDAsXG4gIE1lZGlhTGlzdDogMCxcbiAgTWltZVR5cGVBcnJheTogMCxcbiAgTmFtZWROb2RlTWFwOiAwLFxuICBOb2RlTGlzdDogMSxcbiAgUGFpbnRSZXF1ZXN0TGlzdDogMCxcbiAgUGx1Z2luOiAwLFxuICBQbHVnaW5BcnJheTogMCxcbiAgU1ZHTGVuZ3RoTGlzdDogMCxcbiAgU1ZHTnVtYmVyTGlzdDogMCxcbiAgU1ZHUGF0aFNlZ0xpc3Q6IDAsXG4gIFNWR1BvaW50TGlzdDogMCxcbiAgU1ZHU3RyaW5nTGlzdDogMCxcbiAgU1ZHVHJhbnNmb3JtTGlzdDogMCxcbiAgU291cmNlQnVmZmVyTGlzdDogMCxcbiAgU3R5bGVTaGVldExpc3Q6IDAsXG4gIFRleHRUcmFja0N1ZUxpc3Q6IDAsXG4gIFRleHRUcmFja0xpc3Q6IDAsXG4gIFRvdWNoTGlzdDogMFxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIEl0ZXJhdG9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMnKTtcbnZhciBJbnRlcm5hbFN0YXRlTW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ludGVybmFsLXN0YXRlJyk7XG52YXIgZGVmaW5lSXRlcmF0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVmaW5lLWl0ZXJhdG9yJyk7XG5cbnZhciBBUlJBWV9JVEVSQVRPUiA9ICdBcnJheSBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihBUlJBWV9JVEVSQVRPUik7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZW50cmllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5lbnRyaWVzXG4vLyBgQXJyYXkucHJvdG90eXBlLmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUua2V5c1xuLy8gYEFycmF5LnByb3RvdHlwZS52YWx1ZXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUudmFsdWVzXG4vLyBgQXJyYXkucHJvdG90eXBlW0BAaXRlcmF0b3JdYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAaXRlcmF0b3Jcbi8vIGBDcmVhdGVBcnJheUl0ZXJhdG9yYCBpbnRlcm5hbCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtY3JlYXRlYXJyYXlpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVJdGVyYXRvcihBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24gKGl0ZXJhdGVkLCBraW5kKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IEFSUkFZX0lURVJBVE9SLFxuICAgIHRhcmdldDogdG9JbmRleGVkT2JqZWN0KGl0ZXJhdGVkKSwgLy8gdGFyZ2V0XG4gICAgaW5kZXg6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gICAga2luZDoga2luZCAgICAgICAgICAgICAgICAgICAgICAgICAvLyBraW5kXG4gIH0pO1xuLy8gYCVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJWFycmF5aXRlcmF0b3Jwcm90b3R5cGUlLm5leHRcbn0sIGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgdmFyIHRhcmdldCA9IHN0YXRlLnRhcmdldDtcbiAgdmFyIGtpbmQgPSBzdGF0ZS5raW5kO1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleCsrO1xuICBpZiAoIXRhcmdldCB8fCBpbmRleCA+PSB0YXJnZXQubGVuZ3RoKSB7XG4gICAgc3RhdGUudGFyZ2V0ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuICBpZiAoa2luZCA9PSAna2V5cycpIHJldHVybiB7IHZhbHVlOiBpbmRleCwgZG9uZTogZmFsc2UgfTtcbiAgaWYgKGtpbmQgPT0gJ3ZhbHVlcycpIHJldHVybiB7IHZhbHVlOiB0YXJnZXRbaW5kZXhdLCBkb25lOiBmYWxzZSB9O1xuICByZXR1cm4geyB2YWx1ZTogW2luZGV4LCB0YXJnZXRbaW5kZXhdXSwgZG9uZTogZmFsc2UgfTtcbn0sICd2YWx1ZXMnKTtcblxuLy8gYXJndW1lbnRzTGlzdFtAQGl0ZXJhdG9yXSBpcyAlQXJyYXlQcm90b192YWx1ZXMlXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZXVubWFwcGVkYXJndW1lbnRzb2JqZWN0XG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWNyZWF0ZW1hcHBlZGFyZ3VtZW50c29iamVjdFxuSXRlcmF0b3JzLkFyZ3VtZW50cyA9IEl0ZXJhdG9ycy5BcnJheTtcblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUtQEB1bnNjb3BhYmxlc1xuYWRkVG9VbnNjb3BhYmxlcygna2V5cycpO1xuYWRkVG9VbnNjb3BhYmxlcygndmFsdWVzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCdlbnRyaWVzJyk7XG4iLCJ2YXIgaW50ZXJuYWxPYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzLWludGVybmFsJyk7XG52YXIgZW51bUJ1Z0tleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW51bS1idWcta2V5cycpO1xuXG4vLyBgT2JqZWN0LmtleXNgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Qua2V5c1xubW9kdWxlLmV4cG9ydHMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiBrZXlzKE8pIHtcbiAgcmV0dXJuIGludGVybmFsT2JqZWN0S2V5cyhPLCBlbnVtQnVnS2V5cyk7XG59O1xuIiwidmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1pbnRlZ2VyJyk7XG5cbnZhciBtYXggPSBNYXRoLm1heDtcbnZhciBtaW4gPSBNYXRoLm1pbjtcblxuLy8gSGVscGVyIGZvciBhIHBvcHVsYXIgcmVwZWF0aW5nIGNhc2Ugb2YgdGhlIHNwZWM6XG4vLyBMZXQgaW50ZWdlciBiZSA/IFRvSW50ZWdlcihpbmRleCkuXG4vLyBJZiBpbnRlZ2VyIDwgMCwgbGV0IHJlc3VsdCBiZSBtYXgoKGxlbmd0aCArIGludGVnZXIpLCAwKTsgZWxzZSBsZXQgcmVzdWx0IGJlIG1pbihpbnRlZ2VyLCBsZW5ndGgpLlxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICB2YXIgaW50ZWdlciA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbnRlZ2VyIDwgMCA/IG1heChpbnRlZ2VyICsgbGVuZ3RoLCAwKSA6IG1pbihpbnRlZ2VyLCBsZW5ndGgpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZmFpbHMgPSByZXF1aXJlKCcuL2ZhaWxzJyk7XG5cbi8vIGJhYmVsLW1pbmlmeSB0cmFuc3BpbGVzIFJlZ0V4cCgnYScsICd5JykgLT4gL2EveSBhbmQgaXQgY2F1c2VzIFN5bnRheEVycm9yLFxuLy8gc28gd2UgdXNlIGFuIGludGVybWVkaWF0ZSBmdW5jdGlvbi5cbmZ1bmN0aW9uIFJFKHMsIGYpIHtcbiAgcmV0dXJuIFJlZ0V4cChzLCBmKTtcbn1cblxuZXhwb3J0cy5VTlNVUFBPUlRFRF9ZID0gZmFpbHMoZnVuY3Rpb24gKCkge1xuICAvLyBiYWJlbC1taW5pZnkgdHJhbnNwaWxlcyBSZWdFeHAoJ2EnLCAneScpIC0+IC9hL3kgYW5kIGl0IGNhdXNlcyBTeW50YXhFcnJvclxuICB2YXIgcmUgPSBSRSgnYScsICd5Jyk7XG4gIHJlLmxhc3RJbmRleCA9IDI7XG4gIHJldHVybiByZS5leGVjKCdhYmNkJykgIT0gbnVsbDtcbn0pO1xuXG5leHBvcnRzLkJST0tFTl9DQVJFVCA9IGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzczNjg3XG4gIHZhciByZSA9IFJFKCdecicsICdneScpO1xuICByZS5sYXN0SW5kZXggPSAyO1xuICByZXR1cm4gcmUuZXhlYygnc3RyJykgIT0gbnVsbDtcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZpeFJlZ0V4cFdlbGxLbm93blN5bWJvbExvZ2ljID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZpeC1yZWdleHAtd2VsbC1rbm93bi1zeW1ib2wtbG9naWMnKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIGFkdmFuY2VTdHJpbmdJbmRleCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hZHZhbmNlLXN0cmluZy1pbmRleCcpO1xudmFyIHJlZ0V4cEV4ZWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVnZXhwLWV4ZWMtYWJzdHJhY3QnKTtcblxuLy8gQEBtYXRjaCBsb2dpY1xuZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMoJ21hdGNoJywgMSwgZnVuY3Rpb24gKE1BVENILCBuYXRpdmVNYXRjaCwgbWF5YmVDYWxsTmF0aXZlKSB7XG4gIHJldHVybiBbXG4gICAgLy8gYFN0cmluZy5wcm90b3R5cGUubWF0Y2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5tYXRjaFxuICAgIGZ1bmN0aW9uIG1hdGNoKHJlZ2V4cCkge1xuICAgICAgdmFyIE8gPSByZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHRoaXMpO1xuICAgICAgdmFyIG1hdGNoZXIgPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW01BVENIXTtcbiAgICAgIHJldHVybiBtYXRjaGVyICE9PSB1bmRlZmluZWQgPyBtYXRjaGVyLmNhbGwocmVnZXhwLCBPKSA6IG5ldyBSZWdFeHAocmVnZXhwKVtNQVRDSF0oU3RyaW5nKE8pKTtcbiAgICB9LFxuICAgIC8vIGBSZWdFeHAucHJvdG90eXBlW0BAbWF0Y2hdYCBtZXRob2RcbiAgICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXJlZ2V4cC5wcm90b3R5cGUtQEBtYXRjaFxuICAgIGZ1bmN0aW9uIChyZWdleHApIHtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlTWF0Y2gsIHJlZ2V4cCwgdGhpcyk7XG4gICAgICBpZiAocmVzLmRvbmUpIHJldHVybiByZXMudmFsdWU7XG5cbiAgICAgIHZhciByeCA9IGFuT2JqZWN0KHJlZ2V4cCk7XG4gICAgICB2YXIgUyA9IFN0cmluZyh0aGlzKTtcblxuICAgICAgaWYgKCFyeC5nbG9iYWwpIHJldHVybiByZWdFeHBFeGVjKHJ4LCBTKTtcblxuICAgICAgdmFyIGZ1bGxVbmljb2RlID0gcngudW5pY29kZTtcbiAgICAgIHJ4Lmxhc3RJbmRleCA9IDA7XG4gICAgICB2YXIgQSA9IFtdO1xuICAgICAgdmFyIG4gPSAwO1xuICAgICAgdmFyIHJlc3VsdDtcbiAgICAgIHdoaWxlICgocmVzdWx0ID0gcmVnRXhwRXhlYyhyeCwgUykpICE9PSBudWxsKSB7XG4gICAgICAgIHZhciBtYXRjaFN0ciA9IFN0cmluZyhyZXN1bHRbMF0pO1xuICAgICAgICBBW25dID0gbWF0Y2hTdHI7XG4gICAgICAgIGlmIChtYXRjaFN0ciA9PT0gJycpIHJ4Lmxhc3RJbmRleCA9IGFkdmFuY2VTdHJpbmdJbmRleChTLCB0b0xlbmd0aChyeC5sYXN0SW5kZXgpLCBmdWxsVW5pY29kZSk7XG4gICAgICAgIG4rKztcbiAgICAgIH1cbiAgICAgIHJldHVybiBuID09PSAwID8gbnVsbCA6IEE7XG4gICAgfVxuICBdO1xufSk7XG4iLCJpbXBvcnQgeyBjb21wb25lbnRFeHBvcnRIZWxwZXIgfSBmcm9tICdDb21wb25lbnQvQWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RDaGVja2JveCB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdENoZWNrYm94JztcblxuY2xhc3MgQ2hlY2tib3hDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdENoZWNrYm94IHt9XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudEV4cG9ydEhlbHBlcihDaGVja2JveENvbXBvbmVudCwgJ0NoZWNrYm94Q29tcG9uZW50Jyk7XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCAkIGZyb20gJyQnO1xuaW1wb3J0IHsgaHRtbEVkaXRvckRlZmF1bHRDb25maWcsIGh0bWxFZGl0b3JMYW5nc01hcCB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCB7IEV2ZW50S2V5Q29kZSwgTWFnaWNzIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5jbGFzcyBIdG1sRWRpdG9yIHtcblx0ZWRpdG9yO1xuXHRibHVyVGltZXIgPSAwO1xuXG5cdF9fcmVzaXphYmxlID0gZmFsc2U7XG5cdF9faW5pdGVkID0gZmFsc2U7XG5cblx0b25CbHVyID0gbnVsbDtcblx0b25SZWFkeSA9IG51bGw7XG5cdG9uTW9kZUNoYW5nZSA9IG51bGw7XG5cblx0ZWxlbWVudDtcblx0JGVsZW1lbnQ7XG5cblx0cmVzaXplO1xuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gZWxlbWVudFxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9uPX0gb25CbHVyXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb249fSBvblJlYWR5XG5cdCAqIEBwYXJhbSB7RnVuY3Rpb249fSBvbk1vZGVDaGFuZ2Vcblx0ICovXG5cdGNvbnN0cnVjdG9yKGVsZW1lbnQsIG9uQmx1ciA9IG51bGwsIG9uUmVhZHkgPSBudWxsLCBvbk1vZGVDaGFuZ2UgPSBudWxsKSB7XG5cdFx0dGhpcy5vbkJsdXIgPSBvbkJsdXI7XG5cdFx0dGhpcy5vblJlYWR5ID0gb25SZWFkeTtcblx0XHR0aGlzLm9uTW9kZUNoYW5nZSA9IG9uTW9kZUNoYW5nZTtcblxuXHRcdHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG5cdFx0dGhpcy4kZWxlbWVudCA9ICQoZWxlbWVudCk7XG5cblx0XHR0aGlzLnJlc2l6ZSA9IF8udGhyb3R0bGUoXy5iaW5kKHRoaXMucmVzaXplRWRpdG9yLCB0aGlzKSwgMTAwKTtcblxuXHRcdHRoaXMuaW5pdCgpO1xuXHR9XG5cblx0cnVuT25CbHVyKCkge1xuXHRcdGlmICh0aGlzLm9uQmx1cikge1xuXHRcdFx0dGhpcy5vbkJsdXIoKTtcblx0XHR9XG5cdH1cblxuXHRibHVyVHJpZ2dlcigpIHtcblx0XHRpZiAodGhpcy5vbkJsdXIpIHtcblx0XHRcdHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5ibHVyVGltZXIpO1xuXHRcdFx0dGhpcy5ibHVyVGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMucnVuT25CbHVyKCk7XG5cdFx0XHR9LCBNYWdpY3MuVGltZTIwMG1zKTtcblx0XHR9XG5cdH1cblxuXHRmb2N1c1RyaWdnZXIoKSB7XG5cdFx0aWYgKHRoaXMub25CbHVyKSB7XG5cdFx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuYmx1clRpbWVyKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc0h0bWwoKSB7XG5cdFx0cmV0dXJuIHRoaXMuZWRpdG9yID8gJ3d5c2l3eWcnID09PSB0aGlzLmVkaXRvci5tb2RlIDogZmFsc2U7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRjbGVhckNhY2hlZFNpZ25hdHVyZSgpIHtcblx0XHRpZiAodGhpcy5lZGl0b3IpIHtcblx0XHRcdHRoaXMuZWRpdG9yLmV4ZWNDb21tYW5kKCdpbnNlcnRTaWduYXR1cmUnLCB7XG5cdFx0XHRcdGNsZWFyQ2FjaGU6IHRydWVcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc2lnbmF0dXJlXG5cdCAqIEBwYXJhbSB7Ym9vbH0gaHRtbFxuXHQgKiBAcGFyYW0ge2Jvb2x9IGluc2VydEJlZm9yZVxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdHNldFNpZ25hdHVyZShzaWduYXR1cmUsIGh0bWwsIGluc2VydEJlZm9yZSA9IGZhbHNlKSB7XG5cdFx0aWYgKHRoaXMuZWRpdG9yKSB7XG5cdFx0XHR0aGlzLmVkaXRvci5leGVjQ29tbWFuZCgnaW5zZXJ0U2lnbmF0dXJlJywge1xuXHRcdFx0XHRpc0h0bWw6IGh0bWwsXG5cdFx0XHRcdGluc2VydEJlZm9yZTogaW5zZXJ0QmVmb3JlLFxuXHRcdFx0XHRzaWduYXR1cmU6IHNpZ25hdHVyZVxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0Y2hlY2tEaXJ0eSgpIHtcblx0XHRyZXR1cm4gdGhpcy5lZGl0b3IgPyB0aGlzLmVkaXRvci5jaGVja0RpcnR5KCkgOiBmYWxzZTtcblx0fVxuXG5cdHJlc2V0RGlydHkoKSB7XG5cdFx0aWYgKHRoaXMuZWRpdG9yKSB7XG5cdFx0XHR0aGlzLmVkaXRvci5yZXNldERpcnR5KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IHdyYXBJc0h0bWwgPSBmYWxzZVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0Z2V0RGF0YSh3cmFwSXNIdG1sID0gZmFsc2UpIHtcblx0XHRsZXQgcmVzdWx0ID0gJyc7XG5cdFx0aWYgKHRoaXMuZWRpdG9yKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAoJ3BsYWluJyA9PT0gdGhpcy5lZGl0b3IubW9kZSAmJiB0aGlzLmVkaXRvci5wbHVnaW5zLnBsYWluICYmIHRoaXMuZWRpdG9yLl9fcGxhaW4pIHtcblx0XHRcdFx0XHRyZXN1bHQgPSB0aGlzLmVkaXRvci5fX3BsYWluLmdldFJhd0RhdGEoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRyZXN1bHQgPSB3cmFwSXNIdG1sXG5cdFx0XHRcdFx0XHQ/ICc8ZGl2IGRhdGEtaHRtbC1lZGl0b3ItZm9udC13cmFwcGVyPVwidHJ1ZVwiIHN0eWxlPVwiZm9udC1mYW1pbHk6IGFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDEzcHg7XCI+JyArXG5cdFx0XHRcdFx0XHQgIHRoaXMuZWRpdG9yLmdldERhdGEoKSArXG5cdFx0XHRcdFx0XHQgICc8L2Rpdj4nXG5cdFx0XHRcdFx0XHQ6IHRoaXMuZWRpdG9yLmdldERhdGEoKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtib29sZWFuPX0gd3JhcElzSHRtbCA9IGZhbHNlXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRnZXREYXRhV2l0aEh0bWxNYXJrKHdyYXBJc0h0bWwgPSBmYWxzZSkge1xuXHRcdHJldHVybiAodGhpcy5pc0h0bWwoKSA/ICc6SFRNTDonIDogJycpICsgdGhpcy5nZXREYXRhKHdyYXBJc0h0bWwpO1xuXHR9XG5cblx0bW9kZVRvZ2dsZShwbGFpbiwgcmVzaXplKSB7XG5cdFx0aWYgKHRoaXMuZWRpdG9yKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRpZiAocGxhaW4pIHtcblx0XHRcdFx0XHRpZiAoJ3BsYWluJyA9PT0gdGhpcy5lZGl0b3IubW9kZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5lZGl0b3Iuc2V0TW9kZSgnd3lzaXd5ZycpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICgnd3lzaXd5ZycgPT09IHRoaXMuZWRpdG9yLm1vZGUpIHtcblx0XHRcdFx0XHR0aGlzLmVkaXRvci5zZXRNb2RlKCdwbGFpbicpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cblx0XHRcdGlmIChyZXNpemUpIHtcblx0XHRcdFx0dGhpcy5yZXNpemUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRzZXRIdG1sT3JQbGFpbih0ZXh0LCBmb2N1cykge1xuXHRcdGlmICgnOkhUTUw6JyA9PT0gdGV4dC5zdWJzdHIoMCwgNikpIHtcblx0XHRcdHRoaXMuc2V0SHRtbCh0ZXh0LnN1YnN0cig2KSwgZm9jdXMpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnNldFBsYWluKHRleHQsIGZvY3VzKTtcblx0XHR9XG5cdH1cblxuXHRzZXRIdG1sKGh0bWwsIGZvY3VzKSB7XG5cdFx0aWYgKHRoaXMuZWRpdG9yICYmIHRoaXMuX19pbml0ZWQpIHtcblx0XHRcdHRoaXMuY2xlYXJDYWNoZWRTaWduYXR1cmUoKTtcblxuXHRcdFx0dGhpcy5tb2RlVG9nZ2xlKHRydWUpO1xuXG5cdFx0XHRodG1sID0gaHRtbC5yZXBsYWNlKC88cFtePl0qPjxcXC9wPi9naSwgJycpO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHR0aGlzLmVkaXRvci5zZXREYXRhKGh0bWwpO1xuXHRcdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXG5cdFx0XHRpZiAoZm9jdXMpIHtcblx0XHRcdFx0dGhpcy5mb2N1cygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJlcGxhY2VIdG1sKGZpbmQsIHJlcGxhY2VIdG1sKSB7XG5cdFx0aWYgKHRoaXMuZWRpdG9yICYmIHRoaXMuX19pbml0ZWQgJiYgJ3d5c2l3eWcnID09PSB0aGlzLmVkaXRvci5tb2RlKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHR0aGlzLmVkaXRvci5zZXREYXRhKHRoaXMuZWRpdG9yLmdldERhdGEoKS5yZXBsYWNlKGZpbmQsIHJlcGxhY2VIdG1sKSk7XG5cdFx0XHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cdFx0fVxuXHR9XG5cblx0c2V0UGxhaW4ocGxhaW4sIGZvY3VzKSB7XG5cdFx0aWYgKHRoaXMuZWRpdG9yICYmIHRoaXMuX19pbml0ZWQpIHtcblx0XHRcdHRoaXMuY2xlYXJDYWNoZWRTaWduYXR1cmUoKTtcblxuXHRcdFx0dGhpcy5tb2RlVG9nZ2xlKGZhbHNlKTtcblx0XHRcdGlmICgncGxhaW4nID09PSB0aGlzLmVkaXRvci5tb2RlICYmIHRoaXMuZWRpdG9yLnBsdWdpbnMucGxhaW4gJiYgdGhpcy5lZGl0b3IuX19wbGFpbikge1xuXHRcdFx0XHR0aGlzLmVkaXRvci5fX3BsYWluLnNldFJhd0RhdGEocGxhaW4pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHR0aGlzLmVkaXRvci5zZXREYXRhKHBsYWluKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoZm9jdXMpIHtcblx0XHRcdFx0dGhpcy5mb2N1cygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGluaXQoKSB7XG5cdFx0aWYgKHRoaXMuZWxlbWVudCAmJiAhdGhpcy5lZGl0b3IpIHtcblx0XHRcdGNvbnN0IGluaXRGdW5jID0gKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBjb25maWcgPSBodG1sRWRpdG9yRGVmYXVsdENvbmZpZyxcblx0XHRcdFx0XHRsYW5ndWFnZSA9IFNldHRpbmdzLnNldHRpbmdzR2V0KCdMYW5ndWFnZScpLFxuXHRcdFx0XHRcdGFsbG93U291cmNlID0gISFTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnYWxsb3dIdG1sRWRpdG9yU291cmNlQnV0dG9uJyksXG5cdFx0XHRcdFx0Yml0aSA9ICEhU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2FsbG93SHRtbEVkaXRvckJpdGlCdXR0b25zJyk7XG5cblx0XHRcdFx0aWYgKChhbGxvd1NvdXJjZSB8fCAhYml0aSkgJiYgIWNvbmZpZy50b29sYmFyR3JvdXBzLl9fY2ZnSW5pdGVkKSB7XG5cdFx0XHRcdFx0Y29uZmlnLnRvb2xiYXJHcm91cHMuX19jZmdJbml0ZWQgPSB0cnVlO1xuXG5cdFx0XHRcdFx0aWYgKGFsbG93U291cmNlKSB7XG5cdFx0XHRcdFx0XHRjb25maWcucmVtb3ZlQnV0dG9ucyA9IGNvbmZpZy5yZW1vdmVCdXR0b25zLnJlcGxhY2UoJyxTb3VyY2UnLCAnJyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKCFiaXRpKSB7XG5cdFx0XHRcdFx0XHRjb25maWcucmVtb3ZlUGx1Z2lucyArPSAoY29uZmlnLnJlbW92ZVBsdWdpbnMgPyAnLCcgOiAnJykgKyAnYmlkaSc7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uZmlnLmVudGVyTW9kZSA9IHdpbmRvdy5DS0VESVRPUi5FTlRFUl9CUjtcblx0XHRcdFx0Y29uZmlnLnNoaWZ0RW50ZXJNb2RlID0gd2luZG93LkNLRURJVE9SLkVOVEVSX1A7XG5cblx0XHRcdFx0Y29uZmlnLmxhbmd1YWdlID0gaHRtbEVkaXRvckxhbmdzTWFwWyhsYW5ndWFnZSB8fCAnZW4nKS50b0xvd2VyQ2FzZSgpXSB8fCAnZW4nO1xuXHRcdFx0XHRpZiAod2luZG93LkNLRURJVE9SLmVudikge1xuXHRcdFx0XHRcdHdpbmRvdy5DS0VESVRPUi5lbnYuaXNDb21wYXRpYmxlID0gdHJ1ZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuZWRpdG9yID0gd2luZG93LkNLRURJVE9SLmFwcGVuZFRvKHRoaXMuZWxlbWVudCwgY29uZmlnKTtcblxuXHRcdFx0XHR0aGlzLmVkaXRvci5vbigna2V5JywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50ICYmIGV2ZW50LmRhdGEgJiYgRXZlbnRLZXlDb2RlLlRhYiA9PT0gZXZlbnQuZGF0YS5rZXlDb2RlKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHRoaXMuZWRpdG9yLm9uKCdibHVyJywgKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuYmx1clRyaWdnZXIoKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0dGhpcy5lZGl0b3Iub24oJ21vZGUnLCAoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5ibHVyVHJpZ2dlcigpO1xuXHRcdFx0XHRcdGlmICh0aGlzLm9uTW9kZUNoYW5nZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5vbk1vZGVDaGFuZ2UoJ3BsYWluJyAhPT0gdGhpcy5lZGl0b3IubW9kZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHR0aGlzLmVkaXRvci5vbignZm9jdXMnLCAoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5mb2N1c1RyaWdnZXIoKTtcblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0aWYgKHdpbmRvdy5GaWxlUmVhZGVyKSB7XG5cdFx0XHRcdFx0dGhpcy5lZGl0b3Iub24oJ2Ryb3AnLCAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRcdGlmICgwIDwgZXZlbnQuZGF0YS5kYXRhVHJhbnNmZXIuZ2V0RmlsZXNDb3VudCgpKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnN0IGZpbGUgPSBldmVudC5kYXRhLmRhdGFUcmFuc2Zlci5nZXRGaWxlKDApO1xuXHRcdFx0XHRcdFx0XHRpZiAoZmlsZSAmJiB3aW5kb3cuRmlsZVJlYWRlciAmJiBldmVudC5kYXRhLmRhdGFUcmFuc2Zlci5pZCAmJiBmaWxlLnR5cGUgJiYgZmlsZS50eXBlLm1hdGNoKC9eaW1hZ2UvaSkpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBpZCA9IGV2ZW50LmRhdGEuZGF0YVRyYW5zZmVyLmlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0aW1hZ2VJZCA9IGBbaW1nPSR7aWR9XWAsXG5cdFx0XHRcdFx0XHRcdFx0XHRyZWFkZXIgPSBuZXcgd2luZG93LkZpbGVSZWFkZXIoKTtcblxuXHRcdFx0XHRcdFx0XHRcdHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVhZGVyLnJlc3VsdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlcGxhY2VIdG1sKGltYWdlSWQsIGA8aW1nIHNyYz1cIiR7cmVhZGVyLnJlc3VsdH1cIiAvPmApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH07XG5cblx0XHRcdFx0XHRcdFx0XHRyZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcblxuXHRcdFx0XHRcdFx0XHRcdGV2ZW50LmRhdGEuZGF0YVRyYW5zZmVyLnNldERhdGEoJ3RleHQvaHRtbCcsIGltYWdlSWQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLmVkaXRvci5vbignaW5zdGFuY2VSZWFkeScsICgpID0+IHtcblx0XHRcdFx0XHRpZiAodGhpcy5lZGl0b3IucmVtb3ZlTWVudUl0ZW0pIHtcblx0XHRcdFx0XHRcdHRoaXMuZWRpdG9yLnJlbW92ZU1lbnVJdGVtKCdjdXQnKTtcblx0XHRcdFx0XHRcdHRoaXMuZWRpdG9yLnJlbW92ZU1lbnVJdGVtKCdjb3B5Jyk7XG5cdFx0XHRcdFx0XHR0aGlzLmVkaXRvci5yZW1vdmVNZW51SXRlbSgncGFzdGUnKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLl9fcmVzaXphYmxlID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLl9faW5pdGVkID0gdHJ1ZTtcblxuXHRcdFx0XHRcdHRoaXMucmVzaXplKCk7XG5cblx0XHRcdFx0XHRpZiAodGhpcy5vblJlYWR5KSB7XG5cdFx0XHRcdFx0XHR0aGlzLm9uUmVhZHkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fTtcblxuXHRcdFx0aWYgKHdpbmRvdy5DS0VESVRPUikge1xuXHRcdFx0XHRpbml0RnVuYygpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d2luZG93Ll9faW5pdEVkaXRvciA9IGluaXRGdW5jO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGZvY3VzKCkge1xuXHRcdGlmICh0aGlzLmVkaXRvcikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dGhpcy5lZGl0b3IuZm9jdXMoKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblx0XHR9XG5cdH1cblxuXHRoYXNGb2N1cygpIHtcblx0XHRpZiAodGhpcy5lZGl0b3IpIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJldHVybiAhIXRoaXMuZWRpdG9yLmZvY3VzTWFuYWdlci5oYXNGb2N1cztcblx0XHRcdH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblx0XHR9XG5cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRibHVyKCkge1xuXHRcdGlmICh0aGlzLmVkaXRvcikge1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0dGhpcy5lZGl0b3IuZm9jdXNNYW5hZ2VyLmJsdXIodHJ1ZSk7XG5cdFx0XHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cdFx0fVxuXHR9XG5cblx0cmVzaXplRWRpdG9yKCkge1xuXHRcdGlmICh0aGlzLmVkaXRvciAmJiB0aGlzLl9fcmVzaXphYmxlKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHR0aGlzLmVkaXRvci5yZXNpemUodGhpcy4kZWxlbWVudC53aWR0aCgpLCB0aGlzLiRlbGVtZW50LmlubmVySGVpZ2h0KCkpO1xuXHRcdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXHRcdH1cblx0fVxuXG5cdHNldFJlYWRPbmx5KHZhbHVlKSB7XG5cdFx0aWYgKHRoaXMuZWRpdG9yKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHR0aGlzLmVkaXRvci5zZXRSZWFkT25seSghIXZhbHVlKTtcblx0XHRcdH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblx0XHR9XG5cdH1cblxuXHRjbGVhcihmb2N1cykge1xuXHRcdHRoaXMuc2V0SHRtbCgnJywgZm9jdXMpO1xuXHR9XG59XG5cbmV4cG9ydCB7IEh0bWxFZGl0b3IsIEh0bWxFZGl0b3IgYXMgZGVmYXVsdCB9O1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL3N0YWJsZS9pbnN0YW5jZS9yZWR1Y2VcIik7IiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuXG5jb25zdCBPcGVudGlwID0gd2luZG93Lk9wZW50aXAgfHwge307XG5cbk9wZW50aXAuc3R5bGVzID0gT3BlbnRpcC5zdHlsZXMgfHwge307XG5cbk9wZW50aXAuc3R5bGVzLnJhaW5sb29wID0ge1xuXHQnZXh0ZW5kcyc6ICdzdGFuZGFyZCcsXG5cblx0J2ZpeGVkJzogdHJ1ZSxcblx0J3RhcmdldCc6IHRydWUsXG5cblx0J2RlbGF5JzogMC4yLFxuXHQnaGlkZURlbGF5JzogMCxcblxuXHQnaGlkZUVmZmVjdCc6ICdmYWRlJyxcblx0J2hpZGVFZmZlY3REdXJhdGlvbic6IDAuMixcblxuXHQnc2hvd0VmZmVjdCc6ICdmYWRlJyxcblx0J3Nob3dFZmZlY3REdXJhdGlvbic6IDAuMixcblxuXHQnc2hvd09uJzogJ21vdXNlb3ZlciBjbGljaycsXG5cdCdyZW1vdmVFbGVtZW50c09uSGlkZSc6IHRydWUsXG5cblx0J2JhY2tncm91bmQnOiAnI2ZmZicsXG5cdCdzaGFkb3cnOiBmYWxzZSxcblxuXHQnYm9yZGVyQ29sb3InOiAnIzk5OScsXG5cdCdib3JkZXJSYWRpdXMnOiAyLFxuXHQnYm9yZGVyV2lkdGgnOiAxXG59O1xuXG5PcGVudGlwLnN0eWxlcy5yYWlubG9vcFRpcCA9IHtcblx0J2V4dGVuZHMnOiAncmFpbmxvb3AnLFxuXHQnZGVsYXknOiAwLjQsXG5cdCdncm91cCc6ICdyYWlubG9vcFRpcHMnXG59O1xuXG5PcGVudGlwLnN0eWxlcy5yYWlubG9vcEVycm9yVGlwID0ge1xuXHQnZXh0ZW5kcyc6ICdyYWlubG9vcCcsXG5cdCdjbGFzc05hbWUnOiAncmFpbmxvb3BFcnJvclRpcCdcbn07XG5cbmV4cG9ydCB7IE9wZW50aXAsIE9wZW50aXAgYXMgZGVmYXVsdCB9O1xuIiwiLyohXG4gKiBQaWthZGF5XG4gKlxuICogQ29weXJpZ2h0IMKpIDIwMTQgRGF2aWQgQnVzaGVsbCB8IEJTRCAmIE1JVCBsaWNlbnNlIHwgaHR0cHM6Ly9naXRodWIuY29tL1Bpa2FkYXkvUGlrYWRheVxuICovXG5cbihmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSlcbntcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICB2YXIgbW9tZW50O1xuICAgIGlmICh0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgLy8gQ29tbW9uSlMgbW9kdWxlXG4gICAgICAgIC8vIExvYWQgbW9tZW50LmpzIGFzIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3lcbiAgICAgICAgdHJ5IHsgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7IH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShtb21lbnQpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICAgICAgZGVmaW5lKGZ1bmN0aW9uIChyZXEpXG4gICAgICAgIHtcbiAgICAgICAgICAgIC8vIExvYWQgbW9tZW50LmpzIGFzIGFuIG9wdGlvbmFsIGRlcGVuZGVuY3lcbiAgICAgICAgICAgIHZhciBpZCA9ICdtb21lbnQnO1xuICAgICAgICAgICAgdHJ5IHsgbW9tZW50ID0gcmVxKGlkKTsgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgIHJldHVybiBmYWN0b3J5KG1vbWVudCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJvb3QuUGlrYWRheSA9IGZhY3Rvcnkocm9vdC5tb21lbnQpO1xuICAgIH1cbn0odGhpcywgZnVuY3Rpb24gKG1vbWVudClcbntcbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICAvKipcbiAgICAgKiBmZWF0dXJlIGRldGVjdGlvbiBhbmQgaGVscGVyIGZ1bmN0aW9uc1xuICAgICAqL1xuICAgIHZhciBoYXNNb21lbnQgPSB0eXBlb2YgbW9tZW50ID09PSAnZnVuY3Rpb24nLFxuXG4gICAgaGFzRXZlbnRMaXN0ZW5lcnMgPSAhIXdpbmRvdy5hZGRFdmVudExpc3RlbmVyLFxuXG4gICAgZG9jdW1lbnQgPSB3aW5kb3cuZG9jdW1lbnQsXG5cbiAgICBzdG8gPSB3aW5kb3cuc2V0VGltZW91dCxcblxuICAgIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWwsIGUsIGNhbGxiYWNrLCBjYXB0dXJlKVxuICAgIHtcbiAgICAgICAgaWYgKGhhc0V2ZW50TGlzdGVuZXJzKSB7XG4gICAgICAgICAgICBlbC5hZGRFdmVudExpc3RlbmVyKGUsIGNhbGxiYWNrLCAhIWNhcHR1cmUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWwuYXR0YWNoRXZlbnQoJ29uJyArIGUsIGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICByZW1vdmVFdmVudCA9IGZ1bmN0aW9uKGVsLCBlLCBjYWxsYmFjaywgY2FwdHVyZSlcbiAgICB7XG4gICAgICAgIGlmIChoYXNFdmVudExpc3RlbmVycykge1xuICAgICAgICAgICAgZWwucmVtb3ZlRXZlbnRMaXN0ZW5lcihlLCBjYWxsYmFjaywgISFjYXB0dXJlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsLmRldGFjaEV2ZW50KCdvbicgKyBlLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgdHJpbSA9IGZ1bmN0aW9uKHN0cilcbiAgICB7XG4gICAgICAgIHJldHVybiBzdHIudHJpbSA/IHN0ci50cmltKCkgOiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywnJyk7XG4gICAgfSxcblxuICAgIGhhc0NsYXNzID0gZnVuY3Rpb24oZWwsIGNuKVxuICAgIHtcbiAgICAgICAgcmV0dXJuICgnICcgKyBlbC5jbGFzc05hbWUgKyAnICcpLmluZGV4T2YoJyAnICsgY24gKyAnICcpICE9PSAtMTtcbiAgICB9LFxuXG4gICAgYWRkQ2xhc3MgPSBmdW5jdGlvbihlbCwgY24pXG4gICAge1xuICAgICAgICBpZiAoIWhhc0NsYXNzKGVsLCBjbikpIHtcbiAgICAgICAgICAgIGVsLmNsYXNzTmFtZSA9IChlbC5jbGFzc05hbWUgPT09ICcnKSA/IGNuIDogZWwuY2xhc3NOYW1lICsgJyAnICsgY247XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgcmVtb3ZlQ2xhc3MgPSBmdW5jdGlvbihlbCwgY24pXG4gICAge1xuICAgICAgICBlbC5jbGFzc05hbWUgPSB0cmltKCgnICcgKyBlbC5jbGFzc05hbWUgKyAnICcpLnJlcGxhY2UoJyAnICsgY24gKyAnICcsICcgJykpO1xuICAgIH0sXG5cbiAgICBpc0FycmF5ID0gZnVuY3Rpb24ob2JqKVxuICAgIHtcbiAgICAgICAgcmV0dXJuICgvQXJyYXkvKS50ZXN0KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKTtcbiAgICB9LFxuXG4gICAgaXNEYXRlID0gZnVuY3Rpb24ob2JqKVxuICAgIHtcbiAgICAgICAgcmV0dXJuICgvRGF0ZS8pLnRlc3QoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpICYmICFpc05hTihvYmouZ2V0VGltZSgpKTtcbiAgICB9LFxuXG4gICAgaXNXZWVrZW5kID0gZnVuY3Rpb24oZGF0ZSlcbiAgICB7XG4gICAgICAgIHZhciBkYXkgPSBkYXRlLmdldERheSgpO1xuICAgICAgICByZXR1cm4gZGF5ID09PSAwIHx8IGRheSA9PT0gNjtcbiAgICB9LFxuXG4gICAgaXNMZWFwWWVhciA9IGZ1bmN0aW9uKHllYXIpXG4gICAge1xuICAgICAgICAvLyBzb2x1dGlvbiBsaWZ0ZWQgZnJvbSBkYXRlLmpzIChNSVQgbGljZW5zZSk6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlanMvRGF0ZWpzXG4gICAgICAgIHJldHVybiAoKHllYXIgJSA0ID09PSAwICYmIHllYXIgJSAxMDAgIT09IDApIHx8IHllYXIgJSA0MDAgPT09IDApO1xuICAgIH0sXG5cbiAgICBnZXREYXlzSW5Nb250aCA9IGZ1bmN0aW9uKHllYXIsIG1vbnRoKVxuICAgIHtcbiAgICAgICAgcmV0dXJuIFszMSwgaXNMZWFwWWVhcih5ZWFyKSA/IDI5IDogMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxXVttb250aF07XG4gICAgfSxcblxuICAgIHNldFRvU3RhcnRPZkRheSA9IGZ1bmN0aW9uKGRhdGUpXG4gICAge1xuICAgICAgICBpZiAoaXNEYXRlKGRhdGUpKSBkYXRlLnNldEhvdXJzKDAsMCwwLDApO1xuICAgIH0sXG5cbiAgICBjb21wYXJlRGF0ZXMgPSBmdW5jdGlvbihhLGIpXG4gICAge1xuICAgICAgICAvLyB3ZWFrIGRhdGUgY29tcGFyaXNvbiAodXNlIHNldFRvU3RhcnRPZkRheShkYXRlKSB0byBlbnN1cmUgY29ycmVjdCByZXN1bHQpXG4gICAgICAgIHJldHVybiBhLmdldFRpbWUoKSA9PT0gYi5nZXRUaW1lKCk7XG4gICAgfSxcblxuICAgIGV4dGVuZCA9IGZ1bmN0aW9uKHRvLCBmcm9tLCBvdmVyd3JpdGUpXG4gICAge1xuICAgICAgICB2YXIgcHJvcCwgaGFzUHJvcDtcbiAgICAgICAgZm9yIChwcm9wIGluIGZyb20pIHtcbiAgICAgICAgICAgIGhhc1Byb3AgPSB0b1twcm9wXSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGhhc1Byb3AgJiYgdHlwZW9mIGZyb21bcHJvcF0gPT09ICdvYmplY3QnICYmIGZyb21bcHJvcF0gIT09IG51bGwgJiYgZnJvbVtwcm9wXS5ub2RlTmFtZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzRGF0ZShmcm9tW3Byb3BdKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3ZlcndyaXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b1twcm9wXSA9IG5ldyBEYXRlKGZyb21bcHJvcF0uZ2V0VGltZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0FycmF5KGZyb21bcHJvcF0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvdmVyd3JpdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvW3Byb3BdID0gZnJvbVtwcm9wXS5zbGljZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRvW3Byb3BdID0gZXh0ZW5kKHt9LCBmcm9tW3Byb3BdLCBvdmVyd3JpdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAob3ZlcndyaXRlIHx8ICFoYXNQcm9wKSB7XG4gICAgICAgICAgICAgICAgdG9bcHJvcF0gPSBmcm9tW3Byb3BdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0bztcbiAgICB9LFxuXG4gICAgZmlyZUV2ZW50ID0gZnVuY3Rpb24oZWwsIGV2ZW50TmFtZSwgZGF0YSlcbiAgICB7XG4gICAgICAgIHZhciBldjtcblxuICAgICAgICBpZiAoZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHtcbiAgICAgICAgICAgIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0hUTUxFdmVudHMnKTtcbiAgICAgICAgICAgIGV2LmluaXRFdmVudChldmVudE5hbWUsIHRydWUsIGZhbHNlKTtcbiAgICAgICAgICAgIGV2ID0gZXh0ZW5kKGV2LCBkYXRhKTtcbiAgICAgICAgICAgIGVsLmRpc3BhdGNoRXZlbnQoZXYpO1xuICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KSB7XG4gICAgICAgICAgICBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KCk7XG4gICAgICAgICAgICBldiA9IGV4dGVuZChldiwgZGF0YSk7XG4gICAgICAgICAgICBlbC5maXJlRXZlbnQoJ29uJyArIGV2ZW50TmFtZSwgZXYpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIGFkanVzdENhbGVuZGFyID0gZnVuY3Rpb24oY2FsZW5kYXIpIHtcbiAgICAgICAgaWYgKGNhbGVuZGFyLm1vbnRoIDwgMCkge1xuICAgICAgICAgICAgY2FsZW5kYXIueWVhciAtPSBNYXRoLmNlaWwoTWF0aC5hYnMoY2FsZW5kYXIubW9udGgpLzEyKTtcbiAgICAgICAgICAgIGNhbGVuZGFyLm1vbnRoICs9IDEyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYWxlbmRhci5tb250aCA+IDExKSB7XG4gICAgICAgICAgICBjYWxlbmRhci55ZWFyICs9IE1hdGguZmxvb3IoTWF0aC5hYnMoY2FsZW5kYXIubW9udGgpLzEyKTtcbiAgICAgICAgICAgIGNhbGVuZGFyLm1vbnRoIC09IDEyO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjYWxlbmRhcjtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogZGVmYXVsdHMgYW5kIGxvY2FsaXNhdGlvblxuICAgICAqL1xuICAgIGRlZmF1bHRzID0ge1xuXG4gICAgICAgIC8vIGJpbmQgdGhlIHBpY2tlciB0byBhIGZvcm0gZmllbGRcbiAgICAgICAgZmllbGQ6IG51bGwsXG5cbiAgICAgICAgLy8gYXV0b21hdGljYWxseSBzaG93L2hpZGUgdGhlIHBpY2tlciBvbiBgZmllbGRgIGZvY3VzIChkZWZhdWx0IGB0cnVlYCBpZiBgZmllbGRgIGlzIHNldClcbiAgICAgICAgYm91bmQ6IHVuZGVmaW5lZCxcblxuICAgICAgICAvLyBkYXRhLWF0dHJpYnV0ZSBvbiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhbiBhcmlhIGFzc2lzdGFuY2UgdGV4dCAob25seSBhcHBsaWVkIHdoZW4gYGJvdW5kYCBpcyBzZXQpXG4gICAgICAgIGFyaWFMYWJlbDogJ1VzZSB0aGUgYXJyb3cga2V5cyB0byBwaWNrIGEgZGF0ZScsXG5cbiAgICAgICAgLy8gcG9zaXRpb24gb2YgdGhlIGRhdGVwaWNrZXIsIHJlbGF0aXZlIHRvIHRoZSBmaWVsZCAoZGVmYXVsdCB0byBib3R0b20gJiBsZWZ0KVxuICAgICAgICAvLyAoJ2JvdHRvbScgJiAnbGVmdCcga2V5d29yZHMgYXJlIG5vdCB1c2VkLCAndG9wJyAmICdyaWdodCcgYXJlIG1vZGlmaWVyIG9uIHRoZSBib3R0b20vbGVmdCBwb3NpdGlvbilcbiAgICAgICAgcG9zaXRpb246ICdib3R0b20gbGVmdCcsXG5cbiAgICAgICAgLy8gYXV0b21hdGljYWxseSBmaXQgaW4gdGhlIHZpZXdwb3J0IGV2ZW4gaWYgaXQgbWVhbnMgcmVwb3NpdGlvbmluZyBmcm9tIHRoZSBwb3NpdGlvbiBvcHRpb25cbiAgICAgICAgcmVwb3NpdGlvbjogdHJ1ZSxcblxuICAgICAgICAvLyB0aGUgZGVmYXVsdCBvdXRwdXQgZm9ybWF0IGZvciBgLnRvU3RyaW5nKClgIGFuZCBgZmllbGRgIHZhbHVlXG4gICAgICAgIGZvcm1hdDogJ1lZWVktTU0tREQnLFxuXG4gICAgICAgIC8vIHRoZSB0b1N0cmluZyBmdW5jdGlvbiB3aGljaCBnZXRzIHBhc3NlZCBhIGN1cnJlbnQgZGF0ZSBvYmplY3QgYW5kIGZvcm1hdFxuICAgICAgICAvLyBhbmQgcmV0dXJucyBhIHN0cmluZ1xuICAgICAgICB0b1N0cmluZzogbnVsbCxcblxuICAgICAgICAvLyB1c2VkIHRvIGNyZWF0ZSBkYXRlIG9iamVjdCBmcm9tIGN1cnJlbnQgaW5wdXQgc3RyaW5nXG4gICAgICAgIHBhcnNlOiBudWxsLFxuXG4gICAgICAgIC8vIHRoZSBpbml0aWFsIGRhdGUgdG8gdmlldyB3aGVuIGZpcnN0IG9wZW5lZFxuICAgICAgICBkZWZhdWx0RGF0ZTogbnVsbCxcblxuICAgICAgICAvLyBtYWtlIHRoZSBgZGVmYXVsdERhdGVgIHRoZSBpbml0aWFsIHNlbGVjdGVkIHZhbHVlXG4gICAgICAgIHNldERlZmF1bHREYXRlOiBmYWxzZSxcblxuICAgICAgICAvLyBmaXJzdCBkYXkgb2Ygd2VlayAoMDogU3VuZGF5LCAxOiBNb25kYXkgZXRjKVxuICAgICAgICBmaXJzdERheTogMCxcblxuICAgICAgICAvLyBtaW5pbXVtIG51bWJlciBvZiBkYXlzIGluIHRoZSB3ZWVrIHRoYXQgZ2V0cyB3ZWVrIG51bWJlciBvbmVcbiAgICAgICAgLy8gZGVmYXVsdCBJU08gODYwMSwgd2VlayAwMSBpcyB0aGUgd2VlayB3aXRoIHRoZSBmaXJzdCBUaHVyc2RheSAoNClcbiAgICAgICAgZmlyc3RXZWVrT2ZZZWFyTWluRGF5czogNCxcblxuICAgICAgICAvLyB0aGUgZGVmYXVsdCBmbGFnIGZvciBtb21lbnQncyBzdHJpY3QgZGF0ZSBwYXJzaW5nXG4gICAgICAgIGZvcm1hdFN0cmljdDogZmFsc2UsXG5cbiAgICAgICAgLy8gdGhlIG1pbmltdW0vZWFybGllc3QgZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZFxuICAgICAgICBtaW5EYXRlOiBudWxsLFxuICAgICAgICAvLyB0aGUgbWF4aW11bS9sYXRlc3QgZGF0ZSB0aGF0IGNhbiBiZSBzZWxlY3RlZFxuICAgICAgICBtYXhEYXRlOiBudWxsLFxuXG4gICAgICAgIC8vIG51bWJlciBvZiB5ZWFycyBlaXRoZXIgc2lkZSwgb3IgYXJyYXkgb2YgdXBwZXIvbG93ZXIgcmFuZ2VcbiAgICAgICAgeWVhclJhbmdlOiAxMCxcblxuICAgICAgICAvLyBzaG93IHdlZWsgbnVtYmVycyBhdCBoZWFkIG9mIHJvd1xuICAgICAgICBzaG93V2Vla051bWJlcjogZmFsc2UsXG5cbiAgICAgICAgLy8gV2VlayBwaWNrZXIgbW9kZVxuICAgICAgICBwaWNrV2hvbGVXZWVrOiBmYWxzZSxcblxuICAgICAgICAvLyB1c2VkIGludGVybmFsbHkgKGRvbid0IGNvbmZpZyBvdXRzaWRlKVxuICAgICAgICBtaW5ZZWFyOiAwLFxuICAgICAgICBtYXhZZWFyOiA5OTk5LFxuICAgICAgICBtaW5Nb250aDogdW5kZWZpbmVkLFxuICAgICAgICBtYXhNb250aDogdW5kZWZpbmVkLFxuXG4gICAgICAgIHN0YXJ0UmFuZ2U6IG51bGwsXG4gICAgICAgIGVuZFJhbmdlOiBudWxsLFxuXG4gICAgICAgIGlzUlRMOiBmYWxzZSxcblxuICAgICAgICAvLyBBZGRpdGlvbmFsIHRleHQgdG8gYXBwZW5kIHRvIHRoZSB5ZWFyIGluIHRoZSBjYWxlbmRhciB0aXRsZVxuICAgICAgICB5ZWFyU3VmZml4OiAnJyxcblxuICAgICAgICAvLyBSZW5kZXIgdGhlIG1vbnRoIGFmdGVyIHllYXIgaW4gdGhlIGNhbGVuZGFyIHRpdGxlXG4gICAgICAgIHNob3dNb250aEFmdGVyWWVhcjogZmFsc2UsXG5cbiAgICAgICAgLy8gUmVuZGVyIGRheXMgb2YgdGhlIGNhbGVuZGFyIGdyaWQgdGhhdCBmYWxsIGluIHRoZSBuZXh0IG9yIHByZXZpb3VzIG1vbnRoXG4gICAgICAgIHNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHM6IGZhbHNlLFxuXG4gICAgICAgIC8vIEFsbG93cyB1c2VyIHRvIHNlbGVjdCBkYXlzIHRoYXQgZmFsbCBpbiB0aGUgbmV4dCBvciBwcmV2aW91cyBtb250aFxuICAgICAgICBlbmFibGVTZWxlY3Rpb25EYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHM6IGZhbHNlLFxuXG4gICAgICAgIC8vIGhvdyBtYW55IG1vbnRocyBhcmUgdmlzaWJsZVxuICAgICAgICBudW1iZXJPZk1vbnRoczogMSxcblxuICAgICAgICAvLyB3aGVuIG51bWJlck9mTW9udGhzIGlzIHVzZWQsIHRoaXMgd2lsbCBoZWxwIHlvdSB0byBjaG9vc2Ugd2hlcmUgdGhlIG1haW4gY2FsZW5kYXIgd2lsbCBiZSAoZGVmYXVsdCBgbGVmdGAsIGNhbiBiZSBzZXQgdG8gYHJpZ2h0YClcbiAgICAgICAgLy8gb25seSB1c2VkIGZvciB0aGUgZmlyc3QgZGlzcGxheSBvciB3aGVuIGEgc2VsZWN0ZWQgZGF0ZSBpcyBub3QgdmlzaWJsZVxuICAgICAgICBtYWluQ2FsZW5kYXI6ICdsZWZ0JyxcblxuICAgICAgICAvLyBTcGVjaWZ5IGEgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIHRoZSBjYWxlbmRhciBpblxuICAgICAgICBjb250YWluZXI6IHVuZGVmaW5lZCxcblxuICAgICAgICAvLyBCbHVyIGZpZWxkIHdoZW4gZGF0ZSBpcyBzZWxlY3RlZFxuICAgICAgICBibHVyRmllbGRPblNlbGVjdCA6IHRydWUsXG5cbiAgICAgICAgLy8gaW50ZXJuYXRpb25hbGl6YXRpb25cbiAgICAgICAgaTE4bjoge1xuICAgICAgICAgICAgcHJldmlvdXNNb250aCA6ICdQcmV2aW91cyBNb250aCcsXG4gICAgICAgICAgICBuZXh0TW9udGggICAgIDogJ05leHQgTW9udGgnLFxuICAgICAgICAgICAgbW9udGhzICAgICAgICA6IFsnSmFudWFyeScsJ0ZlYnJ1YXJ5JywnTWFyY2gnLCdBcHJpbCcsJ01heScsJ0p1bmUnLCdKdWx5JywnQXVndXN0JywnU2VwdGVtYmVyJywnT2N0b2JlcicsJ05vdmVtYmVyJywnRGVjZW1iZXInXSxcbiAgICAgICAgICAgIHdlZWtkYXlzICAgICAgOiBbJ1N1bmRheScsJ01vbmRheScsJ1R1ZXNkYXknLCdXZWRuZXNkYXknLCdUaHVyc2RheScsJ0ZyaWRheScsJ1NhdHVyZGF5J10sXG4gICAgICAgICAgICB3ZWVrZGF5c1Nob3J0IDogWydTdW4nLCdNb24nLCdUdWUnLCdXZWQnLCdUaHUnLCdGcmknLCdTYXQnXVxuICAgICAgICB9LFxuXG4gICAgICAgIC8vIFRoZW1lIENsYXNzbmFtZVxuICAgICAgICB0aGVtZTogbnVsbCxcblxuICAgICAgICAvLyBldmVudHMgYXJyYXlcbiAgICAgICAgZXZlbnRzOiBbXSxcblxuICAgICAgICAvLyBjYWxsYmFjayBmdW5jdGlvblxuICAgICAgICBvblNlbGVjdDogbnVsbCxcbiAgICAgICAgb25PcGVuOiBudWxsLFxuICAgICAgICBvbkNsb3NlOiBudWxsLFxuICAgICAgICBvbkRyYXc6IG51bGwsXG5cbiAgICAgICAgLy8gRW5hYmxlIGtleWJvYXJkIGlucHV0XG4gICAgICAgIGtleWJvYXJkSW5wdXQ6IHRydWVcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiB0ZW1wbGF0aW5nIGZ1bmN0aW9ucyB0byBhYnN0cmFjdCBIVE1MIHJlbmRlcmluZ1xuICAgICAqL1xuICAgIHJlbmRlckRheU5hbWUgPSBmdW5jdGlvbihvcHRzLCBkYXksIGFiYnIpXG4gICAge1xuICAgICAgICBkYXkgKz0gb3B0cy5maXJzdERheTtcbiAgICAgICAgd2hpbGUgKGRheSA+PSA3KSB7XG4gICAgICAgICAgICBkYXkgLT0gNztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWJiciA/IG9wdHMuaTE4bi53ZWVrZGF5c1Nob3J0W2RheV0gOiBvcHRzLmkxOG4ud2Vla2RheXNbZGF5XTtcbiAgICB9LFxuXG4gICAgcmVuZGVyRGF5ID0gZnVuY3Rpb24ob3B0cylcbiAgICB7XG4gICAgICAgIHZhciBhcnIgPSBbXTtcbiAgICAgICAgdmFyIGFyaWFTZWxlY3RlZCA9ICdmYWxzZSc7XG4gICAgICAgIGlmIChvcHRzLmlzRW1wdHkpIHtcbiAgICAgICAgICAgIGlmIChvcHRzLnNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHMpIHtcbiAgICAgICAgICAgICAgICBhcnIucHVzaCgnaXMtb3V0c2lkZS1jdXJyZW50LW1vbnRoJyk7XG5cbiAgICAgICAgICAgICAgICBpZighb3B0cy5lbmFibGVTZWxlY3Rpb25EYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHMpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJyLnB1c2goJ2lzLXNlbGVjdGlvbi1kaXNhYmxlZCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJzx0ZCBjbGFzcz1cImlzLWVtcHR5XCI+PC90ZD4nO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGFyci5wdXNoKCdpcy1kaXNhYmxlZCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLmlzVG9kYXkpIHtcbiAgICAgICAgICAgIGFyci5wdXNoKCdpcy10b2RheScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLmlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGFyci5wdXNoKCdpcy1zZWxlY3RlZCcpO1xuICAgICAgICAgICAgYXJpYVNlbGVjdGVkID0gJ3RydWUnO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLmhhc0V2ZW50KSB7XG4gICAgICAgICAgICBhcnIucHVzaCgnaGFzLWV2ZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdHMuaXNJblJhbmdlKSB7XG4gICAgICAgICAgICBhcnIucHVzaCgnaXMtaW5yYW5nZScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLmlzU3RhcnRSYW5nZSkge1xuICAgICAgICAgICAgYXJyLnB1c2goJ2lzLXN0YXJ0cmFuZ2UnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0cy5pc0VuZFJhbmdlKSB7XG4gICAgICAgICAgICBhcnIucHVzaCgnaXMtZW5kcmFuZ2UnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzx0ZCBkYXRhLWRheT1cIicgKyBvcHRzLmRheSArICdcIiBjbGFzcz1cIicgKyBhcnIuam9pbignICcpICsgJ1wiIGFyaWEtc2VsZWN0ZWQ9XCInICsgYXJpYVNlbGVjdGVkICsgJ1wiPicgK1xuICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz1cInBpa2EtYnV0dG9uIHBpa2EtZGF5XCIgdHlwZT1cImJ1dHRvblwiICcgK1xuICAgICAgICAgICAgICAgICAgICAnZGF0YS1waWthLXllYXI9XCInICsgb3B0cy55ZWFyICsgJ1wiIGRhdGEtcGlrYS1tb250aD1cIicgKyBvcHRzLm1vbnRoICsgJ1wiIGRhdGEtcGlrYS1kYXk9XCInICsgb3B0cy5kYXkgKyAnXCI+JyArXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmRheSArXG4gICAgICAgICAgICAgICAgICc8L2J1dHRvbj4nICtcbiAgICAgICAgICAgICAgICc8L3RkPic7XG4gICAgfSxcblxuICAgIGlzb1dlZWsgPSBmdW5jdGlvbihkYXRlLCBmaXJzdFdlZWtPZlllYXJNaW5EYXlzKSB7XG4gICAgICAgIC8vIEVuc3VyZSB3ZSdyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGRheS5cbiAgICAgICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgICAgICAvLyBUaHVyc2RheSBpbiBjdXJyZW50IHdlZWsgZGVjaWRlcyB0aGUgeWVhciBiZWNhdXNlIEphbnVhcnkgNHRoXG4gICAgICAgIC8vIGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBhY2NvcmRpbmcgdG8gSVNPODYwMS5cbiAgICAgICAgdmFyIHllYXJEYXkgICAgICAgID0gZGF0ZS5nZXREYXRlKCksXG4gICAgICAgICAgICB3ZWVrRGF5ICAgICAgICA9IGRhdGUuZ2V0RGF5KCksXG4gICAgICAgICAgICBkYXlJbkZpcnN0V2VlayA9IGZpcnN0V2Vla09mWWVhck1pbkRheXMsXG4gICAgICAgICAgICBkYXlTaGlmdCAgICAgICA9IGRheUluRmlyc3RXZWVrIC0gMSwgLy8gY291bnRpbmcgc3RhcnRzIGF0IDBcbiAgICAgICAgICAgIGRheXNQZXJXZWVrICAgID0gNyxcbiAgICAgICAgICAgIHByZXZXZWVrRGF5ICAgID0gZnVuY3Rpb24oZGF5KSB7IHJldHVybiAoZGF5ICsgZGF5c1BlcldlZWsgLSAxKSAlIGRheXNQZXJXZWVrOyB9O1xuXG4gICAgICAgIC8vIEFkanVzdCB0byBUaHVyc2RheSBpbiB3ZWVrIDEgYW5kIGNvdW50IG51bWJlciBvZiB3ZWVrcyBmcm9tIGRhdGUgdG8gd2VlayAxLlxuICAgICAgICBkYXRlLnNldERhdGUoeWVhckRheSArIGRheVNoaWZ0IC0gcHJldldlZWtEYXkod2Vla0RheSkpO1xuXG4gICAgICAgIHZhciBqYW40dGggICAgICA9IG5ldyBEYXRlKGRhdGUuZ2V0RnVsbFllYXIoKSwgMCwgZGF5SW5GaXJzdFdlZWspLFxuICAgICAgICAgICAgbXNQZXJEYXkgICAgPSAyNCAqIDYwICogNjAgKiAxMDAwLFxuICAgICAgICAgICAgZGF5c0JldHdlZW4gPSAoZGF0ZS5nZXRUaW1lKCkgLSBqYW40dGguZ2V0VGltZSgpKSAvIG1zUGVyRGF5LFxuICAgICAgICAgICAgd2Vla051bSAgICAgPSAxICsgTWF0aC5yb3VuZCgoZGF5c0JldHdlZW4gLSBkYXlTaGlmdCArIHByZXZXZWVrRGF5KGphbjR0aC5nZXREYXkoKSkpIC8gZGF5c1BlcldlZWspO1xuXG4gICAgICAgIHJldHVybiB3ZWVrTnVtO1xuICAgIH0sXG5cbiAgICByZW5kZXJXZWVrID0gZnVuY3Rpb24gKGQsIG0sIHksIGZpcnN0V2Vla09mWWVhck1pbkRheXMpIHtcbiAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh5LCBtLCBkKSxcbiAgICAgICAgICAgIHdlZWsgPSBoYXNNb21lbnQgPyBtb21lbnQoZGF0ZSkuaXNvV2VlaygpIDogaXNvV2VlayhkYXRlLCBmaXJzdFdlZWtPZlllYXJNaW5EYXlzKTtcblxuICAgICAgICByZXR1cm4gJzx0ZCBjbGFzcz1cInBpa2Etd2Vla1wiPicgKyB3ZWVrICsgJzwvdGQ+JztcbiAgICB9LFxuXG4gICAgcmVuZGVyUm93ID0gZnVuY3Rpb24oZGF5cywgaXNSVEwsIHBpY2tXaG9sZVdlZWssIGlzUm93U2VsZWN0ZWQpXG4gICAge1xuICAgICAgICByZXR1cm4gJzx0ciBjbGFzcz1cInBpa2Etcm93JyArIChwaWNrV2hvbGVXZWVrID8gJyBwaWNrLXdob2xlLXdlZWsnIDogJycpICsgKGlzUm93U2VsZWN0ZWQgPyAnIGlzLXNlbGVjdGVkJyA6ICcnKSArICdcIj4nICsgKGlzUlRMID8gZGF5cy5yZXZlcnNlKCkgOiBkYXlzKS5qb2luKCcnKSArICc8L3RyPic7XG4gICAgfSxcblxuICAgIHJlbmRlckJvZHkgPSBmdW5jdGlvbihyb3dzKVxuICAgIHtcbiAgICAgICAgcmV0dXJuICc8dGJvZHk+JyArIHJvd3Muam9pbignJykgKyAnPC90Ym9keT4nO1xuICAgIH0sXG5cbiAgICByZW5kZXJIZWFkID0gZnVuY3Rpb24ob3B0cylcbiAgICB7XG4gICAgICAgIHZhciBpLCBhcnIgPSBbXTtcbiAgICAgICAgaWYgKG9wdHMuc2hvd1dlZWtOdW1iZXIpIHtcbiAgICAgICAgICAgIGFyci5wdXNoKCc8dGg+PC90aD4nKTtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKSB7XG4gICAgICAgICAgICBhcnIucHVzaCgnPHRoIHNjb3BlPVwiY29sXCI+PGFiYnIgdGl0bGU9XCInICsgcmVuZGVyRGF5TmFtZShvcHRzLCBpKSArICdcIj4nICsgcmVuZGVyRGF5TmFtZShvcHRzLCBpLCB0cnVlKSArICc8L2FiYnI+PC90aD4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJzx0aGVhZD48dHI+JyArIChvcHRzLmlzUlRMID8gYXJyLnJldmVyc2UoKSA6IGFycikuam9pbignJykgKyAnPC90cj48L3RoZWFkPic7XG4gICAgfSxcblxuICAgIHJlbmRlclRpdGxlID0gZnVuY3Rpb24oaW5zdGFuY2UsIGMsIHllYXIsIG1vbnRoLCByZWZZZWFyLCByYW5kSWQpXG4gICAge1xuICAgICAgICB2YXIgaSwgaiwgYXJyLFxuICAgICAgICAgICAgb3B0cyA9IGluc3RhbmNlLl9vLFxuICAgICAgICAgICAgaXNNaW5ZZWFyID0geWVhciA9PT0gb3B0cy5taW5ZZWFyLFxuICAgICAgICAgICAgaXNNYXhZZWFyID0geWVhciA9PT0gb3B0cy5tYXhZZWFyLFxuICAgICAgICAgICAgaHRtbCA9ICc8ZGl2IGlkPVwiJyArIHJhbmRJZCArICdcIiBjbGFzcz1cInBpa2EtdGl0bGVcIiByb2xlPVwiaGVhZGluZ1wiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiPicsXG4gICAgICAgICAgICBtb250aEh0bWwsXG4gICAgICAgICAgICB5ZWFySHRtbCxcbiAgICAgICAgICAgIHByZXYgPSB0cnVlLFxuICAgICAgICAgICAgbmV4dCA9IHRydWU7XG5cbiAgICAgICAgZm9yIChhcnIgPSBbXSwgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XG4gICAgICAgICAgICBhcnIucHVzaCgnPG9wdGlvbiB2YWx1ZT1cIicgKyAoeWVhciA9PT0gcmVmWWVhciA/IGkgLSBjIDogMTIgKyBpIC0gYykgKyAnXCInICtcbiAgICAgICAgICAgICAgICAoaSA9PT0gbW9udGggPyAnIHNlbGVjdGVkPVwic2VsZWN0ZWRcIic6ICcnKSArXG4gICAgICAgICAgICAgICAgKChpc01pblllYXIgJiYgaSA8IG9wdHMubWluTW9udGgpIHx8IChpc01heFllYXIgJiYgaSA+IG9wdHMubWF4TW9udGgpID8gJyBkaXNhYmxlZD1cImRpc2FibGVkXCInIDogJycpICsgJz4nICtcbiAgICAgICAgICAgICAgICBvcHRzLmkxOG4ubW9udGhzW2ldICsgJzwvb3B0aW9uPicpO1xuICAgICAgICB9XG5cbiAgICAgICAgbW9udGhIdG1sID0gJzxkaXYgY2xhc3M9XCJwaWthLWxhYmVsXCI+JyArIG9wdHMuaTE4bi5tb250aHNbbW9udGhdICsgJzxzZWxlY3QgY2xhc3M9XCJwaWthLXNlbGVjdCBwaWthLXNlbGVjdC1tb250aFwiIHRhYmluZGV4PVwiLTFcIj4nICsgYXJyLmpvaW4oJycpICsgJzwvc2VsZWN0PjwvZGl2Pic7XG5cbiAgICAgICAgaWYgKGlzQXJyYXkob3B0cy55ZWFyUmFuZ2UpKSB7XG4gICAgICAgICAgICBpID0gb3B0cy55ZWFyUmFuZ2VbMF07XG4gICAgICAgICAgICBqID0gb3B0cy55ZWFyUmFuZ2VbMV0gKyAxO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaSA9IHllYXIgLSBvcHRzLnllYXJSYW5nZTtcbiAgICAgICAgICAgIGogPSAxICsgeWVhciArIG9wdHMueWVhclJhbmdlO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChhcnIgPSBbXTsgaSA8IGogJiYgaSA8PSBvcHRzLm1heFllYXI7IGkrKykge1xuICAgICAgICAgICAgaWYgKGkgPj0gb3B0cy5taW5ZZWFyKSB7XG4gICAgICAgICAgICAgICAgYXJyLnB1c2goJzxvcHRpb24gdmFsdWU9XCInICsgaSArICdcIicgKyAoaSA9PT0geWVhciA/ICcgc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiJzogJycpICsgJz4nICsgKGkpICsgJzwvb3B0aW9uPicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHllYXJIdG1sID0gJzxkaXYgY2xhc3M9XCJwaWthLWxhYmVsXCI+JyArIHllYXIgKyBvcHRzLnllYXJTdWZmaXggKyAnPHNlbGVjdCBjbGFzcz1cInBpa2Etc2VsZWN0IHBpa2Etc2VsZWN0LXllYXJcIiB0YWJpbmRleD1cIi0xXCI+JyArIGFyci5qb2luKCcnKSArICc8L3NlbGVjdD48L2Rpdj4nO1xuXG4gICAgICAgIGlmIChvcHRzLnNob3dNb250aEFmdGVyWWVhcikge1xuICAgICAgICAgICAgaHRtbCArPSB5ZWFySHRtbCArIG1vbnRoSHRtbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGh0bWwgKz0gbW9udGhIdG1sICsgeWVhckh0bWw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNNaW5ZZWFyICYmIChtb250aCA9PT0gMCB8fCBvcHRzLm1pbk1vbnRoID49IG1vbnRoKSkge1xuICAgICAgICAgICAgcHJldiA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGlzTWF4WWVhciAmJiAobW9udGggPT09IDExIHx8IG9wdHMubWF4TW9udGggPD0gbW9udGgpKSB7XG4gICAgICAgICAgICBuZXh0ID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYyA9PT0gMCkge1xuICAgICAgICAgICAgaHRtbCArPSAnPGJ1dHRvbiBjbGFzcz1cInBpa2EtcHJldicgKyAocHJldiA/ICcnIDogJyBpcy1kaXNhYmxlZCcpICsgJ1wiIHR5cGU9XCJidXR0b25cIj4nICsgb3B0cy5pMThuLnByZXZpb3VzTW9udGggKyAnPC9idXR0b24+JztcbiAgICAgICAgfVxuICAgICAgICBpZiAoYyA9PT0gKGluc3RhbmNlLl9vLm51bWJlck9mTW9udGhzIC0gMSkgKSB7XG4gICAgICAgICAgICBodG1sICs9ICc8YnV0dG9uIGNsYXNzPVwicGlrYS1uZXh0JyArIChuZXh0ID8gJycgOiAnIGlzLWRpc2FibGVkJykgKyAnXCIgdHlwZT1cImJ1dHRvblwiPicgKyBvcHRzLmkxOG4ubmV4dE1vbnRoICsgJzwvYnV0dG9uPic7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaHRtbCArPSAnPC9kaXY+JztcbiAgICB9LFxuXG4gICAgcmVuZGVyVGFibGUgPSBmdW5jdGlvbihvcHRzLCBkYXRhLCByYW5kSWQpXG4gICAge1xuICAgICAgICByZXR1cm4gJzx0YWJsZSBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1cIjBcIiBjbGFzcz1cInBpa2EtdGFibGVcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWxsZWRieT1cIicgKyByYW5kSWQgKyAnXCI+JyArIHJlbmRlckhlYWQob3B0cykgKyByZW5kZXJCb2R5KGRhdGEpICsgJzwvdGFibGU+JztcbiAgICB9LFxuXG5cbiAgICAvKipcbiAgICAgKiBQaWthZGF5IGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgUGlrYWRheSA9IGZ1bmN0aW9uKG9wdGlvbnMpXG4gICAge1xuICAgICAgICB2YXIgc2VsZiA9IHRoaXMsXG4gICAgICAgICAgICBvcHRzID0gc2VsZi5jb25maWcob3B0aW9ucyk7XG5cbiAgICAgICAgc2VsZi5fb25Nb3VzZURvd24gPSBmdW5jdGlvbihlKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZiAoIXNlbGYuX3YpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlID0gZSB8fCB3aW5kb3cuZXZlbnQ7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0ID0gZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghaGFzQ2xhc3ModGFyZ2V0LCAnaXMtZGlzYWJsZWQnKSkge1xuICAgICAgICAgICAgICAgIGlmIChoYXNDbGFzcyh0YXJnZXQsICdwaWthLWJ1dHRvbicpICYmICFoYXNDbGFzcyh0YXJnZXQsICdpcy1lbXB0eScpICYmICFoYXNDbGFzcyh0YXJnZXQucGFyZW50Tm9kZSwgJ2lzLWRpc2FibGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXREYXRlKG5ldyBEYXRlKHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGlrYS15ZWFyJyksIHRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcGlrYS1tb250aCcpLCB0YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLXBpa2EtZGF5JykpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMuYm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0byhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cy5ibHVyRmllbGRPblNlbGVjdCAmJiBvcHRzLmZpZWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmllbGQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzQ2xhc3ModGFyZ2V0LCAncGlrYS1wcmV2JykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmV2TW9udGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaGFzQ2xhc3ModGFyZ2V0LCAncGlrYS1uZXh0JykpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5uZXh0TW9udGgoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWhhc0NsYXNzKHRhcmdldCwgJ3Bpa2Etc2VsZWN0JykpIHtcbiAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIHRvdWNoIGV2ZW50IHByZXZlbnQgbW91c2UgZXZlbnRzIGVtdWxhdGlvblxuICAgICAgICAgICAgICAgIGlmIChlLnByZXZlbnREZWZhdWx0KSB7XG4gICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBlLnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGYuX2MgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHNlbGYuX29uQ2hhbmdlID0gZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50O1xuICAgICAgICAgICAgdmFyIHRhcmdldCA9IGUudGFyZ2V0IHx8IGUuc3JjRWxlbWVudDtcbiAgICAgICAgICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGhhc0NsYXNzKHRhcmdldCwgJ3Bpa2Etc2VsZWN0LW1vbnRoJykpIHtcbiAgICAgICAgICAgICAgICBzZWxmLmdvdG9Nb250aCh0YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaGFzQ2xhc3ModGFyZ2V0LCAncGlrYS1zZWxlY3QteWVhcicpKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5nb3RvWWVhcih0YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHNlbGYuX29uS2V5Q2hhbmdlID0gZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgZSA9IGUgfHwgd2luZG93LmV2ZW50O1xuXG4gICAgICAgICAgICBpZiAoc2VsZi5pc1Zpc2libGUoKSkge1xuXG4gICAgICAgICAgICAgICAgc3dpdGNoKGUua2V5Q29kZSl7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAob3B0cy5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmllbGQuYmx1cigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMzc6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFkanVzdERhdGUoJ3N1YnRyYWN0JywgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYWRqdXN0RGF0ZSgnc3VidHJhY3QnLCA3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDM5OlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGp1c3REYXRlKCdhZGQnLCAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGp1c3REYXRlKCdhZGQnLCA3KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNDY6XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNldERhdGUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgc2VsZi5fcGFyc2VGaWVsZFZhbHVlID0gZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZiAob3B0cy5wYXJzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvcHRzLnBhcnNlKG9wdHMuZmllbGQudmFsdWUsIG9wdHMuZm9ybWF0KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzTW9tZW50KSB7XG4gICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBtb21lbnQob3B0cy5maWVsZC52YWx1ZSwgb3B0cy5mb3JtYXQsIG9wdHMuZm9ybWF0U3RyaWN0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGRhdGUgJiYgZGF0ZS5pc1ZhbGlkKCkpID8gZGF0ZS50b0RhdGUoKSA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZShEYXRlLnBhcnNlKG9wdHMuZmllbGQudmFsdWUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBzZWxmLl9vbklucHV0Q2hhbmdlID0gZnVuY3Rpb24oZSlcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIGRhdGU7XG5cbiAgICAgICAgICAgIGlmIChlLmZpcmVkQnkgPT09IHNlbGYpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkYXRlID0gc2VsZi5fcGFyc2VGaWVsZFZhbHVlKCk7XG4gICAgICAgICAgICBpZiAoaXNEYXRlKGRhdGUpKSB7XG4gICAgICAgICAgICAgIHNlbGYuc2V0RGF0ZShkYXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghc2VsZi5fdikge1xuICAgICAgICAgICAgICAgIHNlbGYuc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHNlbGYuX29uSW5wdXRGb2N1cyA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgc2VsZi5zaG93KCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgc2VsZi5fb25JbnB1dENsaWNrID0gZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICBzZWxmLnNob3coKTtcbiAgICAgICAgfTtcblxuICAgICAgICBzZWxmLl9vbklucHV0Qmx1ciA9IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgLy8gSUUgYWxsb3dzIHBpa2EgZGl2IHRvIGdhaW4gZm9jdXM7IGNhdGNoIGJsdXIgdGhlIGlucHV0IGZpZWxkXG4gICAgICAgICAgICB2YXIgcEVsID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBpZiAoaGFzQ2xhc3MocEVsLCAncGlrYS1zaW5nbGUnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKChwRWwgPSBwRWwucGFyZW50Tm9kZSkpO1xuXG4gICAgICAgICAgICBpZiAoIXNlbGYuX2MpIHtcbiAgICAgICAgICAgICAgICBzZWxmLl9iID0gc3RvKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICBzZWxmLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9LCA1MCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxmLl9jID0gZmFsc2U7XG4gICAgICAgIH07XG5cbiAgICAgICAgc2VsZi5fb25DbGljayA9IGZ1bmN0aW9uKGUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGUgPSBlIHx8IHdpbmRvdy5ldmVudDtcbiAgICAgICAgICAgIHZhciB0YXJnZXQgPSBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgcEVsID0gdGFyZ2V0O1xuICAgICAgICAgICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIWhhc0V2ZW50TGlzdGVuZXJzICYmIGhhc0NsYXNzKHRhcmdldCwgJ3Bpa2Etc2VsZWN0JykpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRhcmdldC5vbmNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2V0QXR0cmlidXRlKCdvbmNoYW5nZScsICdyZXR1cm47Jyk7XG4gICAgICAgICAgICAgICAgICAgIGFkZEV2ZW50KHRhcmdldCwgJ2NoYW5nZScsIHNlbGYuX29uQ2hhbmdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0NsYXNzKHBFbCwgJ3Bpa2Etc2luZ2xlJykgfHwgcEVsID09PSBvcHRzLnRyaWdnZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlICgocEVsID0gcEVsLnBhcmVudE5vZGUpKTtcbiAgICAgICAgICAgIGlmIChzZWxmLl92ICYmIHRhcmdldCAhPT0gb3B0cy50cmlnZ2VyICYmIHBFbCAhPT0gb3B0cy50cmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgc2VsZi5lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICBzZWxmLmVsLmNsYXNzTmFtZSA9ICdwaWthLXNpbmdsZScgKyAob3B0cy5pc1JUTCA/ICcgaXMtcnRsJyA6ICcnKSArIChvcHRzLnRoZW1lID8gJyAnICsgb3B0cy50aGVtZSA6ICcnKTtcblxuICAgICAgICBhZGRFdmVudChzZWxmLmVsLCAnbW91c2Vkb3duJywgc2VsZi5fb25Nb3VzZURvd24sIHRydWUpO1xuICAgICAgICBhZGRFdmVudChzZWxmLmVsLCAndG91Y2hlbmQnLCBzZWxmLl9vbk1vdXNlRG93biwgdHJ1ZSk7XG4gICAgICAgIGFkZEV2ZW50KHNlbGYuZWwsICdjaGFuZ2UnLCBzZWxmLl9vbkNoYW5nZSk7XG5cbiAgICAgICAgaWYgKG9wdHMua2V5Ym9hcmRJbnB1dCkge1xuICAgICAgICAgICAgYWRkRXZlbnQoZG9jdW1lbnQsICdrZXlkb3duJywgc2VsZi5fb25LZXlDaGFuZ2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdHMuZmllbGQpIHtcbiAgICAgICAgICAgIGlmIChvcHRzLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgIG9wdHMuY29udGFpbmVyLmFwcGVuZENoaWxkKHNlbGYuZWwpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChvcHRzLmJvdW5kKSB7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzZWxmLmVsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgb3B0cy5maWVsZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzZWxmLmVsLCBvcHRzLmZpZWxkLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGFkZEV2ZW50KG9wdHMuZmllbGQsICdjaGFuZ2UnLCBzZWxmLl9vbklucHV0Q2hhbmdlKTtcblxuICAgICAgICAgICAgaWYgKCFvcHRzLmRlZmF1bHREYXRlKSB7XG4gICAgICAgICAgICAgICAgb3B0cy5kZWZhdWx0RGF0ZSA9IHNlbGYuX3BhcnNlRmllbGRWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIG9wdHMuc2V0RGVmYXVsdERhdGUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRlZkRhdGUgPSBvcHRzLmRlZmF1bHREYXRlO1xuXG4gICAgICAgIGlmIChpc0RhdGUoZGVmRGF0ZSkpIHtcbiAgICAgICAgICAgIGlmIChvcHRzLnNldERlZmF1bHREYXRlKSB7XG4gICAgICAgICAgICAgICAgc2VsZi5zZXREYXRlKGRlZkRhdGUsIHRydWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzZWxmLmdvdG9EYXRlKGRlZkRhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2VsZi5nb3RvRGF0ZShuZXcgRGF0ZSgpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvcHRzLmJvdW5kKSB7XG4gICAgICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgICAgIHNlbGYuZWwuY2xhc3NOYW1lICs9ICcgaXMtYm91bmQnO1xuICAgICAgICAgICAgYWRkRXZlbnQob3B0cy50cmlnZ2VyLCAnY2xpY2snLCBzZWxmLl9vbklucHV0Q2xpY2spO1xuICAgICAgICAgICAgYWRkRXZlbnQob3B0cy50cmlnZ2VyLCAnZm9jdXMnLCBzZWxmLl9vbklucHV0Rm9jdXMpO1xuICAgICAgICAgICAgYWRkRXZlbnQob3B0cy50cmlnZ2VyLCAnYmx1cicsIHNlbGYuX29uSW5wdXRCbHVyKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgICB9XG4gICAgfTtcblxuXG4gICAgLyoqXG4gICAgICogcHVibGljIFBpa2FkYXkgQVBJXG4gICAgICovXG4gICAgUGlrYWRheS5wcm90b3R5cGUgPSB7XG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogY29uZmlndXJlIGZ1bmN0aW9uYWxpdHlcbiAgICAgICAgICovXG4gICAgICAgIGNvbmZpZzogZnVuY3Rpb24ob3B0aW9ucylcbiAgICAgICAge1xuICAgICAgICAgICAgaWYgKCF0aGlzLl9vKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbyA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgb3B0cyA9IGV4dGVuZCh0aGlzLl9vLCBvcHRpb25zLCB0cnVlKTtcblxuICAgICAgICAgICAgb3B0cy5pc1JUTCA9ICEhb3B0cy5pc1JUTDtcblxuICAgICAgICAgICAgb3B0cy5maWVsZCA9IChvcHRzLmZpZWxkICYmIG9wdHMuZmllbGQubm9kZU5hbWUpID8gb3B0cy5maWVsZCA6IG51bGw7XG5cbiAgICAgICAgICAgIG9wdHMudGhlbWUgPSAodHlwZW9mIG9wdHMudGhlbWUpID09PSAnc3RyaW5nJyAmJiBvcHRzLnRoZW1lID8gb3B0cy50aGVtZSA6IG51bGw7XG5cbiAgICAgICAgICAgIG9wdHMuYm91bmQgPSAhIShvcHRzLmJvdW5kICE9PSB1bmRlZmluZWQgPyBvcHRzLmZpZWxkICYmIG9wdHMuYm91bmQgOiBvcHRzLmZpZWxkKTtcblxuICAgICAgICAgICAgb3B0cy50cmlnZ2VyID0gKG9wdHMudHJpZ2dlciAmJiBvcHRzLnRyaWdnZXIubm9kZU5hbWUpID8gb3B0cy50cmlnZ2VyIDogb3B0cy5maWVsZDtcblxuICAgICAgICAgICAgb3B0cy5kaXNhYmxlV2Vla2VuZHMgPSAhIW9wdHMuZGlzYWJsZVdlZWtlbmRzO1xuXG4gICAgICAgICAgICBvcHRzLmRpc2FibGVEYXlGbiA9ICh0eXBlb2Ygb3B0cy5kaXNhYmxlRGF5Rm4pID09PSAnZnVuY3Rpb24nID8gb3B0cy5kaXNhYmxlRGF5Rm4gOiBudWxsO1xuXG4gICAgICAgICAgICB2YXIgbm9tID0gcGFyc2VJbnQob3B0cy5udW1iZXJPZk1vbnRocywgMTApIHx8IDE7XG4gICAgICAgICAgICBvcHRzLm51bWJlck9mTW9udGhzID0gbm9tID4gNCA/IDQgOiBub207XG5cbiAgICAgICAgICAgIGlmICghaXNEYXRlKG9wdHMubWluRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICBvcHRzLm1pbkRhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNEYXRlKG9wdHMubWF4RGF0ZSkpIHtcbiAgICAgICAgICAgICAgICBvcHRzLm1heERhdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgob3B0cy5taW5EYXRlICYmIG9wdHMubWF4RGF0ZSkgJiYgb3B0cy5tYXhEYXRlIDwgb3B0cy5taW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgb3B0cy5tYXhEYXRlID0gb3B0cy5taW5EYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0cy5taW5EYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNaW5EYXRlKG9wdHMubWluRGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0cy5tYXhEYXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXhEYXRlKG9wdHMubWF4RGF0ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChpc0FycmF5KG9wdHMueWVhclJhbmdlKSkge1xuICAgICAgICAgICAgICAgIHZhciBmYWxsYmFjayA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSAtIDEwO1xuICAgICAgICAgICAgICAgIG9wdHMueWVhclJhbmdlWzBdID0gcGFyc2VJbnQob3B0cy55ZWFyUmFuZ2VbMF0sIDEwKSB8fCBmYWxsYmFjaztcbiAgICAgICAgICAgICAgICBvcHRzLnllYXJSYW5nZVsxXSA9IHBhcnNlSW50KG9wdHMueWVhclJhbmdlWzFdLCAxMCkgfHwgZmFsbGJhY2s7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG9wdHMueWVhclJhbmdlID0gTWF0aC5hYnMocGFyc2VJbnQob3B0cy55ZWFyUmFuZ2UsIDEwKSkgfHwgZGVmYXVsdHMueWVhclJhbmdlO1xuICAgICAgICAgICAgICAgIGlmIChvcHRzLnllYXJSYW5nZSA+IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRzLnllYXJSYW5nZSA9IDEwMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBvcHRzO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiByZXR1cm4gYSBmb3JtYXR0ZWQgc3RyaW5nIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiAodXNpbmcgTW9tZW50LmpzIGlmIGF2YWlsYWJsZSlcbiAgICAgICAgICovXG4gICAgICAgIHRvU3RyaW5nOiBmdW5jdGlvbihmb3JtYXQpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdCB8fCB0aGlzLl9vLmZvcm1hdDtcbiAgICAgICAgICAgIGlmICghaXNEYXRlKHRoaXMuX2QpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuX28udG9TdHJpbmcpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX28udG9TdHJpbmcodGhpcy5fZCwgZm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChoYXNNb21lbnQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1vbWVudCh0aGlzLl9kKS5mb3JtYXQoZm9ybWF0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kLnRvRGF0ZVN0cmluZygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiByZXR1cm4gYSBNb21lbnQuanMgb2JqZWN0IG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbiAoaWYgYXZhaWxhYmxlKVxuICAgICAgICAgKi9cbiAgICAgICAgZ2V0TW9tZW50OiBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBoYXNNb21lbnQgPyBtb21lbnQodGhpcy5fZCkgOiBudWxsO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBzZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGZyb20gYSBNb21lbnQuanMgb2JqZWN0IChpZiBhdmFpbGFibGUpXG4gICAgICAgICAqL1xuICAgICAgICBzZXRNb21lbnQ6IGZ1bmN0aW9uKGRhdGUsIHByZXZlbnRPblNlbGVjdClcbiAgICAgICAge1xuICAgICAgICAgICAgaWYgKGhhc01vbWVudCAmJiBtb21lbnQuaXNNb21lbnQoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGUoZGF0ZS50b0RhdGUoKSwgcHJldmVudE9uU2VsZWN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogcmV0dXJuIGEgRGF0ZSBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBnZXREYXRlOiBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiBpc0RhdGUodGhpcy5fZCkgPyBuZXcgRGF0ZSh0aGlzLl9kLmdldFRpbWUoKSkgOiBudWxsO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBzZXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uXG4gICAgICAgICAqL1xuICAgICAgICBzZXREYXRlOiBmdW5jdGlvbihkYXRlLCBwcmV2ZW50T25TZWxlY3QpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICghZGF0ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2QgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX28uZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fby5maWVsZC52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICBmaXJlRXZlbnQodGhpcy5fby5maWVsZCwgJ2NoYW5nZScsIHsgZmlyZWRCeTogdGhpcyB9KTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kcmF3KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIGRhdGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgZGF0ZSA9IG5ldyBEYXRlKERhdGUucGFyc2UoZGF0ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0RhdGUoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBtaW4gPSB0aGlzLl9vLm1pbkRhdGUsXG4gICAgICAgICAgICAgICAgbWF4ID0gdGhpcy5fby5tYXhEYXRlO1xuXG4gICAgICAgICAgICBpZiAoaXNEYXRlKG1pbikgJiYgZGF0ZSA8IG1pbikge1xuICAgICAgICAgICAgICAgIGRhdGUgPSBtaW47XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzRGF0ZShtYXgpICYmIGRhdGUgPiBtYXgpIHtcbiAgICAgICAgICAgICAgICBkYXRlID0gbWF4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9kID0gbmV3IERhdGUoZGF0ZS5nZXRUaW1lKCkpO1xuICAgICAgICAgICAgc2V0VG9TdGFydE9mRGF5KHRoaXMuX2QpO1xuICAgICAgICAgICAgdGhpcy5nb3RvRGF0ZSh0aGlzLl9kKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX28uZmllbGQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vLmZpZWxkLnZhbHVlID0gdGhpcy50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgIGZpcmVFdmVudCh0aGlzLl9vLmZpZWxkLCAnY2hhbmdlJywgeyBmaXJlZEJ5OiB0aGlzIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFwcmV2ZW50T25TZWxlY3QgJiYgdHlwZW9mIHRoaXMuX28ub25TZWxlY3QgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vLm9uU2VsZWN0LmNhbGwodGhpcywgdGhpcy5nZXREYXRlKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjbGVhciBhbmQgcmVzZXQgdGhlIGRhdGVcbiAgICAgICAgICovXG4gICAgICAgIGNsZWFyOiBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZShudWxsKTtcbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogY2hhbmdlIHZpZXcgdG8gYSBzcGVjaWZpYyBkYXRlXG4gICAgICAgICAqL1xuICAgICAgICBnb3RvRGF0ZTogZnVuY3Rpb24oZGF0ZSlcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIG5ld0NhbGVuZGFyID0gdHJ1ZTtcblxuICAgICAgICAgICAgaWYgKCFpc0RhdGUoZGF0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmNhbGVuZGFycykge1xuICAgICAgICAgICAgICAgIHZhciBmaXJzdFZpc2libGVEYXRlID0gbmV3IERhdGUodGhpcy5jYWxlbmRhcnNbMF0ueWVhciwgdGhpcy5jYWxlbmRhcnNbMF0ubW9udGgsIDEpLFxuICAgICAgICAgICAgICAgICAgICBsYXN0VmlzaWJsZURhdGUgPSBuZXcgRGF0ZSh0aGlzLmNhbGVuZGFyc1t0aGlzLmNhbGVuZGFycy5sZW5ndGgtMV0ueWVhciwgdGhpcy5jYWxlbmRhcnNbdGhpcy5jYWxlbmRhcnMubGVuZ3RoLTFdLm1vbnRoLCAxKSxcbiAgICAgICAgICAgICAgICAgICAgdmlzaWJsZURhdGUgPSBkYXRlLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAvLyBnZXQgdGhlIGVuZCBvZiB0aGUgbW9udGhcbiAgICAgICAgICAgICAgICBsYXN0VmlzaWJsZURhdGUuc2V0TW9udGgobGFzdFZpc2libGVEYXRlLmdldE1vbnRoKCkrMSk7XG4gICAgICAgICAgICAgICAgbGFzdFZpc2libGVEYXRlLnNldERhdGUobGFzdFZpc2libGVEYXRlLmdldERhdGUoKS0xKTtcbiAgICAgICAgICAgICAgICBuZXdDYWxlbmRhciA9ICh2aXNpYmxlRGF0ZSA8IGZpcnN0VmlzaWJsZURhdGUuZ2V0VGltZSgpIHx8IGxhc3RWaXNpYmxlRGF0ZS5nZXRUaW1lKCkgPCB2aXNpYmxlRGF0ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdDYWxlbmRhcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJzID0gW3tcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogZGF0ZS5nZXRGdWxsWWVhcigpXG4gICAgICAgICAgICAgICAgfV07XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX28ubWFpbkNhbGVuZGFyID09PSAncmlnaHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJzWzBdLm1vbnRoICs9IDEgLSB0aGlzLl9vLm51bWJlck9mTW9udGhzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5hZGp1c3RDYWxlbmRhcnMoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBhZGp1c3REYXRlOiBmdW5jdGlvbihzaWduLCBkYXlzKSB7XG5cbiAgICAgICAgICAgIHZhciBkYXkgPSB0aGlzLmdldERhdGUoKSB8fCBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgdmFyIGRpZmZlcmVuY2UgPSBwYXJzZUludChkYXlzKSoyNCo2MCo2MCoxMDAwO1xuXG4gICAgICAgICAgICB2YXIgbmV3RGF5O1xuXG4gICAgICAgICAgICBpZiAoc2lnbiA9PT0gJ2FkZCcpIHtcbiAgICAgICAgICAgICAgICBuZXdEYXkgPSBuZXcgRGF0ZShkYXkudmFsdWVPZigpICsgZGlmZmVyZW5jZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHNpZ24gPT09ICdzdWJ0cmFjdCcpIHtcbiAgICAgICAgICAgICAgICBuZXdEYXkgPSBuZXcgRGF0ZShkYXkudmFsdWVPZigpIC0gZGlmZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZShuZXdEYXkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGFkanVzdENhbGVuZGFyczogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyc1swXSA9IGFkanVzdENhbGVuZGFyKHRoaXMuY2FsZW5kYXJzWzBdKTtcbiAgICAgICAgICAgIGZvciAodmFyIGMgPSAxOyBjIDwgdGhpcy5fby5udW1iZXJPZk1vbnRoczsgYysrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcnNbY10gPSBhZGp1c3RDYWxlbmRhcih7XG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiB0aGlzLmNhbGVuZGFyc1swXS5tb250aCArIGMsXG4gICAgICAgICAgICAgICAgICAgIHllYXI6IHRoaXMuY2FsZW5kYXJzWzBdLnllYXJcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZHJhdygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIGdvdG9Ub2RheTogZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLmdvdG9EYXRlKG5ldyBEYXRlKCkpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGFuZ2UgdmlldyB0byBhIHNwZWNpZmljIG1vbnRoICh6ZXJvLWluZGV4LCBlLmcuIDA6IEphbnVhcnkpXG4gICAgICAgICAqL1xuICAgICAgICBnb3RvTW9udGg6IGZ1bmN0aW9uKG1vbnRoKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZiAoIWlzTmFOKG1vbnRoKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJzWzBdLm1vbnRoID0gcGFyc2VJbnQobW9udGgsIDEwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmFkanVzdENhbGVuZGFycygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuXG4gICAgICAgIG5leHRNb250aDogZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLmNhbGVuZGFyc1swXS5tb250aCsrO1xuICAgICAgICAgICAgdGhpcy5hZGp1c3RDYWxlbmRhcnMoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBwcmV2TW9udGg6IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhcnNbMF0ubW9udGgtLTtcbiAgICAgICAgICAgIHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoYW5nZSB2aWV3IHRvIGEgc3BlY2lmaWMgZnVsbCB5ZWFyIChlLmcuIFwiMjAxMlwiKVxuICAgICAgICAgKi9cbiAgICAgICAgZ290b1llYXI6IGZ1bmN0aW9uKHllYXIpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmICghaXNOYU4oeWVhcikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyc1swXS55ZWFyID0gcGFyc2VJbnQoeWVhciwgMTApO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRqdXN0Q2FsZW5kYXJzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGNoYW5nZSB0aGUgbWluRGF0ZVxuICAgICAgICAgKi9cbiAgICAgICAgc2V0TWluRGF0ZTogZnVuY3Rpb24odmFsdWUpXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlmKHZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldFRvU3RhcnRPZkRheSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5taW5EYXRlID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5taW5ZZWFyICA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5taW5Nb250aCA9IHZhbHVlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX28ubWluRGF0ZSA9IGRlZmF1bHRzLm1pbkRhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5taW5ZZWFyICA9IGRlZmF1bHRzLm1pblllYXI7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5taW5Nb250aCA9IGRlZmF1bHRzLm1pbk1vbnRoO1xuICAgICAgICAgICAgICAgIHRoaXMuX28uc3RhcnRSYW5nZSA9IGRlZmF1bHRzLnN0YXJ0UmFuZ2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZHJhdygpO1xuICAgICAgICB9LFxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBjaGFuZ2UgdGhlIG1heERhdGVcbiAgICAgICAgICovXG4gICAgICAgIHNldE1heERhdGU6IGZ1bmN0aW9uKHZhbHVlKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZih2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICBzZXRUb1N0YXJ0T2ZEYXkodmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuX28ubWF4RGF0ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX28ubWF4WWVhciA9IHZhbHVlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5tYXhNb250aCA9IHZhbHVlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX28ubWF4RGF0ZSA9IGRlZmF1bHRzLm1heERhdGU7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5tYXhZZWFyID0gZGVmYXVsdHMubWF4WWVhcjtcbiAgICAgICAgICAgICAgICB0aGlzLl9vLm1heE1vbnRoID0gZGVmYXVsdHMubWF4TW9udGg7XG4gICAgICAgICAgICAgICAgdGhpcy5fby5lbmRSYW5nZSA9IGRlZmF1bHRzLmVuZFJhbmdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICAgICAgfSxcblxuICAgICAgICBzZXRTdGFydFJhbmdlOiBmdW5jdGlvbih2YWx1ZSlcbiAgICAgICAge1xuICAgICAgICAgICAgdGhpcy5fby5zdGFydFJhbmdlID0gdmFsdWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2V0RW5kUmFuZ2U6IGZ1bmN0aW9uKHZhbHVlKVxuICAgICAgICB7XG4gICAgICAgICAgICB0aGlzLl9vLmVuZFJhbmdlID0gdmFsdWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJlZnJlc2ggdGhlIEhUTUxcbiAgICAgICAgICovXG4gICAgICAgIGRyYXc6IGZ1bmN0aW9uKGZvcmNlKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuX3YgJiYgIWZvcmNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG9wdHMgPSB0aGlzLl9vLFxuICAgICAgICAgICAgICAgIG1pblllYXIgPSBvcHRzLm1pblllYXIsXG4gICAgICAgICAgICAgICAgbWF4WWVhciA9IG9wdHMubWF4WWVhcixcbiAgICAgICAgICAgICAgICBtaW5Nb250aCA9IG9wdHMubWluTW9udGgsXG4gICAgICAgICAgICAgICAgbWF4TW9udGggPSBvcHRzLm1heE1vbnRoLFxuICAgICAgICAgICAgICAgIGh0bWwgPSAnJyxcbiAgICAgICAgICAgICAgICByYW5kSWQ7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl95IDw9IG1pblllYXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl95ID0gbWluWWVhcjtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG1pbk1vbnRoKSAmJiB0aGlzLl9tIDwgbWluTW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbSA9IG1pbk1vbnRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLl95ID49IG1heFllYXIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl95ID0gbWF4WWVhcjtcbiAgICAgICAgICAgICAgICBpZiAoIWlzTmFOKG1heE1vbnRoKSAmJiB0aGlzLl9tID4gbWF4TW9udGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbSA9IG1heE1vbnRoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBvcHRzLm51bWJlck9mTW9udGhzOyBjKyspIHtcbiAgICAgICAgICAgICAgICByYW5kSWQgPSAncGlrYS10aXRsZS0nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikucmVwbGFjZSgvW15hLXpdKy9nLCAnJykuc3Vic3RyKDAsIDIpO1xuICAgICAgICAgICAgICAgIGh0bWwgKz0gJzxkaXYgY2xhc3M9XCJwaWthLWxlbmRhclwiPicgKyByZW5kZXJUaXRsZSh0aGlzLCBjLCB0aGlzLmNhbGVuZGFyc1tjXS55ZWFyLCB0aGlzLmNhbGVuZGFyc1tjXS5tb250aCwgdGhpcy5jYWxlbmRhcnNbMF0ueWVhciwgcmFuZElkKSArIHRoaXMucmVuZGVyKHRoaXMuY2FsZW5kYXJzW2NdLnllYXIsIHRoaXMuY2FsZW5kYXJzW2NdLm1vbnRoLCByYW5kSWQpICsgJzwvZGl2Pic7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZWwuaW5uZXJIVE1MID0gaHRtbDtcblxuICAgICAgICAgICAgaWYgKG9wdHMuYm91bmQpIHtcbiAgICAgICAgICAgICAgICBpZihvcHRzLmZpZWxkLnR5cGUgIT09ICdoaWRkZW4nKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0byhmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMudHJpZ2dlci5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9LCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fby5vbkRyYXcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9vLm9uRHJhdyh0aGlzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG9wdHMuYm91bmQpIHtcbiAgICAgICAgICAgICAgICAvLyBsZXQgdGhlIHNjcmVlbiByZWFkZXIgdXNlciBrbm93IHRvIHVzZSBhcnJvdyBrZXlzXG4gICAgICAgICAgICAgICAgb3B0cy5maWVsZC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCBvcHRzLmFyaWFMYWJlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgYWRqdXN0UG9zaXRpb246IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIGZpZWxkLCBwRWwsIHdpZHRoLCBoZWlnaHQsIHZpZXdwb3J0V2lkdGgsIHZpZXdwb3J0SGVpZ2h0LCBzY3JvbGxUb3AsIGxlZnQsIHRvcCwgY2xpZW50UmVjdCwgbGVmdEFsaWduZWQsIGJvdHRvbUFsaWduZWQ7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9vLmNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgICAgICAgICB0aGlzLmVsLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcblxuICAgICAgICAgICAgZmllbGQgPSB0aGlzLl9vLnRyaWdnZXI7XG4gICAgICAgICAgICBwRWwgPSBmaWVsZDtcbiAgICAgICAgICAgIHdpZHRoID0gdGhpcy5lbC5vZmZzZXRXaWR0aDtcbiAgICAgICAgICAgIGhlaWdodCA9IHRoaXMuZWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgdmlld3BvcnRXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgICAgICAgIHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICAgICAgICBzY3JvbGxUb3AgPSB3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgICAgICAgIGxlZnRBbGlnbmVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJvdHRvbUFsaWduZWQgPSB0cnVlO1xuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGZpZWxkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNsaWVudFJlY3QgPSBmaWVsZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gY2xpZW50UmVjdC5sZWZ0ICsgd2luZG93LnBhZ2VYT2Zmc2V0O1xuICAgICAgICAgICAgICAgIHRvcCA9IGNsaWVudFJlY3QuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gcEVsLm9mZnNldExlZnQ7XG4gICAgICAgICAgICAgICAgdG9wICA9IHBFbC5vZmZzZXRUb3AgKyBwRWwub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIHdoaWxlKChwRWwgPSBwRWwub2Zmc2V0UGFyZW50KSkge1xuICAgICAgICAgICAgICAgICAgICBsZWZ0ICs9IHBFbC5vZmZzZXRMZWZ0O1xuICAgICAgICAgICAgICAgICAgICB0b3AgICs9IHBFbC5vZmZzZXRUb3A7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBkZWZhdWx0IHBvc2l0aW9uIGlzIGJvdHRvbSAmIGxlZnRcbiAgICAgICAgICAgIGlmICgodGhpcy5fby5yZXBvc2l0aW9uICYmIGxlZnQgKyB3aWR0aCA+IHZpZXdwb3J0V2lkdGgpIHx8XG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9vLnBvc2l0aW9uLmluZGV4T2YoJ3JpZ2h0JykgPiAtMSAmJlxuICAgICAgICAgICAgICAgICAgICBsZWZ0IC0gd2lkdGggKyBmaWVsZC5vZmZzZXRXaWR0aCA+IDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdCAtIHdpZHRoICsgZmllbGQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgbGVmdEFsaWduZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGhpcy5fby5yZXBvc2l0aW9uICYmIHRvcCArIGhlaWdodCA+IHZpZXdwb3J0SGVpZ2h0ICsgc2Nyb2xsVG9wKSB8fFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fby5wb3NpdGlvbi5pbmRleE9mKCd0b3AnKSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgIHRvcCAtIGhlaWdodCAtIGZpZWxkLm9mZnNldEhlaWdodCA+IDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0b3AgPSB0b3AgLSBoZWlnaHQgLSBmaWVsZC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgYm90dG9tQWxpZ25lZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmVsLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICAgICAgICAgIHRoaXMuZWwuc3R5bGUudG9wID0gdG9wICsgJ3B4JztcblxuICAgICAgICAgICAgYWRkQ2xhc3ModGhpcy5lbCwgbGVmdEFsaWduZWQgPyAnbGVmdC1hbGlnbmVkJyA6ICdyaWdodC1hbGlnbmVkJyk7XG4gICAgICAgICAgICBhZGRDbGFzcyh0aGlzLmVsLCBib3R0b21BbGlnbmVkID8gJ2JvdHRvbS1hbGlnbmVkJyA6ICd0b3AtYWxpZ25lZCcpO1xuICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgIWxlZnRBbGlnbmVkID8gJ2xlZnQtYWxpZ25lZCcgOiAncmlnaHQtYWxpZ25lZCcpO1xuICAgICAgICAgICAgcmVtb3ZlQ2xhc3ModGhpcy5lbCwgIWJvdHRvbUFsaWduZWQgPyAnYm90dG9tLWFsaWduZWQnIDogJ3RvcC1hbGlnbmVkJyk7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHJlbmRlciBIVE1MIGZvciBhIHBhcnRpY3VsYXIgbW9udGhcbiAgICAgICAgICovXG4gICAgICAgIHJlbmRlcjogZnVuY3Rpb24oeWVhciwgbW9udGgsIHJhbmRJZClcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIG9wdHMgICA9IHRoaXMuX28sXG4gICAgICAgICAgICAgICAgbm93ICAgID0gbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICBkYXlzICAgPSBnZXREYXlzSW5Nb250aCh5ZWFyLCBtb250aCksXG4gICAgICAgICAgICAgICAgYmVmb3JlID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpLmdldERheSgpLFxuICAgICAgICAgICAgICAgIGRhdGEgICA9IFtdLFxuICAgICAgICAgICAgICAgIHJvdyAgICA9IFtdO1xuICAgICAgICAgICAgc2V0VG9TdGFydE9mRGF5KG5vdyk7XG4gICAgICAgICAgICBpZiAob3B0cy5maXJzdERheSA+IDApIHtcbiAgICAgICAgICAgICAgICBiZWZvcmUgLT0gb3B0cy5maXJzdERheTtcbiAgICAgICAgICAgICAgICBpZiAoYmVmb3JlIDwgMCkge1xuICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKz0gNztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcHJldmlvdXNNb250aCA9IG1vbnRoID09PSAwID8gMTEgOiBtb250aCAtIDEsXG4gICAgICAgICAgICAgICAgbmV4dE1vbnRoID0gbW9udGggPT09IDExID8gMCA6IG1vbnRoICsgMSxcbiAgICAgICAgICAgICAgICB5ZWFyT2ZQcmV2aW91c01vbnRoID0gbW9udGggPT09IDAgPyB5ZWFyIC0gMSA6IHllYXIsXG4gICAgICAgICAgICAgICAgeWVhck9mTmV4dE1vbnRoID0gbW9udGggPT09IDExID8geWVhciArIDEgOiB5ZWFyLFxuICAgICAgICAgICAgICAgIGRheXNJblByZXZpb3VzTW9udGggPSBnZXREYXlzSW5Nb250aCh5ZWFyT2ZQcmV2aW91c01vbnRoLCBwcmV2aW91c01vbnRoKTtcbiAgICAgICAgICAgIHZhciBjZWxscyA9IGRheXMgKyBiZWZvcmUsXG4gICAgICAgICAgICAgICAgYWZ0ZXIgPSBjZWxscztcbiAgICAgICAgICAgIHdoaWxlKGFmdGVyID4gNykge1xuICAgICAgICAgICAgICAgIGFmdGVyIC09IDc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjZWxscyArPSA3IC0gYWZ0ZXI7XG4gICAgICAgICAgICB2YXIgaXNXZWVrU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwLCByID0gMDsgaSA8IGNlbGxzOyBpKyspXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgdmFyIGRheSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAxICsgKGkgLSBiZWZvcmUpKSxcbiAgICAgICAgICAgICAgICAgICAgaXNTZWxlY3RlZCA9IGlzRGF0ZSh0aGlzLl9kKSA/IGNvbXBhcmVEYXRlcyhkYXksIHRoaXMuX2QpIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlzVG9kYXkgPSBjb21wYXJlRGF0ZXMoZGF5LCBub3cpLFxuICAgICAgICAgICAgICAgICAgICBoYXNFdmVudCA9IG9wdHMuZXZlbnRzLmluZGV4T2YoZGF5LnRvRGF0ZVN0cmluZygpKSAhPT0gLTEgPyB0cnVlIDogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGlzRW1wdHkgPSBpIDwgYmVmb3JlIHx8IGkgPj0gKGRheXMgKyBiZWZvcmUpLFxuICAgICAgICAgICAgICAgICAgICBkYXlOdW1iZXIgPSAxICsgKGkgLSBiZWZvcmUpLFxuICAgICAgICAgICAgICAgICAgICBtb250aE51bWJlciA9IG1vbnRoLFxuICAgICAgICAgICAgICAgICAgICB5ZWFyTnVtYmVyID0geWVhcixcbiAgICAgICAgICAgICAgICAgICAgaXNTdGFydFJhbmdlID0gb3B0cy5zdGFydFJhbmdlICYmIGNvbXBhcmVEYXRlcyhvcHRzLnN0YXJ0UmFuZ2UsIGRheSksXG4gICAgICAgICAgICAgICAgICAgIGlzRW5kUmFuZ2UgPSBvcHRzLmVuZFJhbmdlICYmIGNvbXBhcmVEYXRlcyhvcHRzLmVuZFJhbmdlLCBkYXkpLFxuICAgICAgICAgICAgICAgICAgICBpc0luUmFuZ2UgPSBvcHRzLnN0YXJ0UmFuZ2UgJiYgb3B0cy5lbmRSYW5nZSAmJiBvcHRzLnN0YXJ0UmFuZ2UgPCBkYXkgJiYgZGF5IDwgb3B0cy5lbmRSYW5nZSxcbiAgICAgICAgICAgICAgICAgICAgaXNEaXNhYmxlZCA9IChvcHRzLm1pbkRhdGUgJiYgZGF5IDwgb3B0cy5taW5EYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9wdHMubWF4RGF0ZSAmJiBkYXkgPiBvcHRzLm1heERhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0cy5kaXNhYmxlV2Vla2VuZHMgJiYgaXNXZWVrZW5kKGRheSkpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3B0cy5kaXNhYmxlRGF5Rm4gJiYgb3B0cy5kaXNhYmxlRGF5Rm4oZGF5KSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGJlZm9yZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF5TnVtYmVyID0gZGF5c0luUHJldmlvdXNNb250aCArIGRheU51bWJlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoTnVtYmVyID0gcHJldmlvdXNNb250aDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHllYXJOdW1iZXIgPSB5ZWFyT2ZQcmV2aW91c01vbnRoO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGF5TnVtYmVyID0gZGF5TnVtYmVyIC0gZGF5cztcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoTnVtYmVyID0gbmV4dE1vbnRoO1xuICAgICAgICAgICAgICAgICAgICAgICAgeWVhck51bWJlciA9IHllYXJPZk5leHRNb250aDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHZhciBkYXlDb25maWcgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXk6IGRheU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoOiBtb250aE51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHllYXI6IHllYXJOdW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNFdmVudDogaGFzRXZlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNUb2RheTogaXNUb2RheSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzRGlzYWJsZWQ6IGlzRGlzYWJsZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0VtcHR5OiBpc0VtcHR5LFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNTdGFydFJhbmdlOiBpc1N0YXJ0UmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0VuZFJhbmdlOiBpc0VuZFJhbmdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlOiBpc0luUmFuZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93RGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzOiBvcHRzLnNob3dEYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHMsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVTZWxlY3Rpb25EYXlzSW5OZXh0QW5kUHJldmlvdXNNb250aHM6IG9wdHMuZW5hYmxlU2VsZWN0aW9uRGF5c0luTmV4dEFuZFByZXZpb3VzTW9udGhzXG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBpZiAob3B0cy5waWNrV2hvbGVXZWVrICYmIGlzU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgaXNXZWVrU2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJvdy5wdXNoKHJlbmRlckRheShkYXlDb25maWcpKTtcblxuICAgICAgICAgICAgICAgIGlmICgrK3IgPT09IDcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wdHMuc2hvd1dlZWtOdW1iZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdy51bnNoaWZ0KHJlbmRlcldlZWsoaSAtIGJlZm9yZSwgbW9udGgsIHllYXIsIG9wdHMuZmlyc3RXZWVrT2ZZZWFyTWluRGF5cykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEucHVzaChyZW5kZXJSb3cocm93LCBvcHRzLmlzUlRMLCBvcHRzLnBpY2tXaG9sZVdlZWssIGlzV2Vla1NlbGVjdGVkKSk7XG4gICAgICAgICAgICAgICAgICAgIHJvdyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICByID0gMDtcbiAgICAgICAgICAgICAgICAgICAgaXNXZWVrU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyVGFibGUob3B0cywgZGF0YSwgcmFuZElkKTtcbiAgICAgICAgfSxcblxuICAgICAgICBpc1Zpc2libGU6IGZ1bmN0aW9uKClcbiAgICAgICAge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Y7XG4gICAgICAgIH0sXG5cbiAgICAgICAgc2hvdzogZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNWaXNpYmxlKCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl92ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyh0aGlzLmVsLCAnaXMtaGlkZGVuJyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuX28uYm91bmQpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkRXZlbnQoZG9jdW1lbnQsICdjbGljaycsIHRoaXMuX29uQ2xpY2spO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkanVzdFBvc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5fby5vbk9wZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fby5vbk9wZW4uY2FsbCh0aGlzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG5cbiAgICAgICAgaGlkZTogZnVuY3Rpb24oKVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgdiA9IHRoaXMuX3Y7XG4gICAgICAgICAgICBpZiAodiAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fby5ib3VuZCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVFdmVudChkb2N1bWVudCwgJ2NsaWNrJywgdGhpcy5fb25DbGljayk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9vLmNvbnRhaW5lcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLnN0eWxlLnBvc2l0aW9uID0gJ3N0YXRpYyc7IC8vIHJlc2V0XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZWwuc3R5bGUubGVmdCA9ICdhdXRvJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5zdHlsZS50b3AgPSAnYXV0byc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFkZENsYXNzKHRoaXMuZWwsICdpcy1oaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB0aGlzLl92ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHYgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdGhpcy5fby5vbkNsb3NlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX28ub25DbG9zZS5jYWxsKHRoaXMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcblxuICAgICAgICAvKipcbiAgICAgICAgICogR0FNRSBPVkVSXG4gICAgICAgICAqL1xuICAgICAgICBkZXN0cm95OiBmdW5jdGlvbigpXG4gICAgICAgIHtcbiAgICAgICAgICAgIHZhciBvcHRzID0gdGhpcy5fbztcblxuICAgICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgICAgICByZW1vdmVFdmVudCh0aGlzLmVsLCAnbW91c2Vkb3duJywgdGhpcy5fb25Nb3VzZURvd24sIHRydWUpO1xuICAgICAgICAgICAgcmVtb3ZlRXZlbnQodGhpcy5lbCwgJ3RvdWNoZW5kJywgdGhpcy5fb25Nb3VzZURvd24sIHRydWUpO1xuICAgICAgICAgICAgcmVtb3ZlRXZlbnQodGhpcy5lbCwgJ2NoYW5nZScsIHRoaXMuX29uQ2hhbmdlKTtcbiAgICAgICAgICAgIGlmIChvcHRzLmtleWJvYXJkSW5wdXQpIHtcbiAgICAgICAgICAgICAgICByZW1vdmVFdmVudChkb2N1bWVudCwgJ2tleWRvd24nLCB0aGlzLl9vbktleUNoYW5nZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0cy5maWVsZCkge1xuICAgICAgICAgICAgICAgIHJlbW92ZUV2ZW50KG9wdHMuZmllbGQsICdjaGFuZ2UnLCB0aGlzLl9vbklucHV0Q2hhbmdlKTtcbiAgICAgICAgICAgICAgICBpZiAob3B0cy5ib3VuZCkge1xuICAgICAgICAgICAgICAgICAgICByZW1vdmVFdmVudChvcHRzLnRyaWdnZXIsICdjbGljaycsIHRoaXMuX29uSW5wdXRDbGljayk7XG4gICAgICAgICAgICAgICAgICAgIHJlbW92ZUV2ZW50KG9wdHMudHJpZ2dlciwgJ2ZvY3VzJywgdGhpcy5fb25JbnB1dEZvY3VzKTtcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlRXZlbnQob3B0cy50cmlnZ2VyLCAnYmx1cicsIHRoaXMuX29uSW5wdXRCbHVyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5lbC5wYXJlbnROb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMuZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgcmV0dXJuIFBpa2FkYXk7XG59KSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5BdXRvbGlua2VyOyIsIi8qIGVzbGludCBrZXktc3BhY2luZzogMCAqL1xuLyogZXNsaW50IHF1b3RlLXByb3BzOiAwICovXG5cbmNvbnN0IE1pbWUgPSB7XG5cdCdlbWwnOiAnbWVzc2FnZS9yZmM4MjInLFxuXHQnbWltZSc6ICdtZXNzYWdlL3JmYzgyMicsXG5cdCd0eHQnOiAndGV4dC9wbGFpbicsXG5cdCd0ZXh0JzogJ3RleHQvcGxhaW4nLFxuXHQnZGVmJzogJ3RleHQvcGxhaW4nLFxuXHQnbGlzdCc6ICd0ZXh0L3BsYWluJyxcblx0J2luJzogJ3RleHQvcGxhaW4nLFxuXHQnaW5pJzogJ3RleHQvcGxhaW4nLFxuXHQnbG9nJzogJ3RleHQvcGxhaW4nLFxuXHQnc3FsJzogJ3RleHQvcGxhaW4nLFxuXHQnY2ZnJzogJ3RleHQvcGxhaW4nLFxuXHQnY29uZic6ICd0ZXh0L3BsYWluJyxcblx0J2FzYyc6ICd0ZXh0L3BsYWluJyxcblx0J3J0eCc6ICd0ZXh0L3JpY2h0ZXh0Jyxcblx0J3ZjYXJkJzogJ3RleHQvdmNhcmQnLFxuXHQndmNmJzogJ3RleHQvdmNhcmQnLFxuXHQnaHRtJzogJ3RleHQvaHRtbCcsXG5cdCdodG1sJzogJ3RleHQvaHRtbCcsXG5cdCdjc3YnOiAndGV4dC9jc3YnLFxuXHQnaWNzJzogJ3RleHQvY2FsZW5kYXInLFxuXHQnaWZiJzogJ3RleHQvY2FsZW5kYXInLFxuXHQneG1sJzogJ3RleHQveG1sJyxcblx0J2pzb24nOiAnYXBwbGljYXRpb24vanNvbicsXG5cdCdzd2YnOiAnYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnLFxuXHQnaGxwJzogJ2FwcGxpY2F0aW9uL3dpbmhscCcsXG5cdCd3Z3QnOiAnYXBwbGljYXRpb24vd2lkZ2V0Jyxcblx0J2NobSc6ICdhcHBsaWNhdGlvbi92bmQubXMtaHRtbGhlbHAnLFxuXHQncDEwJzogJ2FwcGxpY2F0aW9uL3BrY3MxMCcsXG5cdCdwN2MnOiAnYXBwbGljYXRpb24vcGtjczctbWltZScsXG5cdCdwN20nOiAnYXBwbGljYXRpb24vcGtjczctbWltZScsXG5cdCdwN3MnOiAnYXBwbGljYXRpb24vcGtjczctc2lnbmF0dXJlJyxcblx0J3RvcnJlbnQnOiAnYXBwbGljYXRpb24veC1iaXR0b3JyZW50JyxcblxuXHQvLyBzY3JpcHRzXG5cdCdqcyc6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0Jyxcblx0J3BsJzogJ3RleHQvcGVybCcsXG5cdCdjc3MnOiAndGV4dC9jc3MnLFxuXHQnYXNwJzogJ3RleHQvYXNwJyxcblx0J3BocCc6ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsXG5cdCdwaHAzJzogJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcGhwJyxcblx0J3BocDQnOiAnYXBwbGljYXRpb24veC1odHRwZC1waHAnLFxuXHQncGhwNSc6ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsXG5cdCdwaHRtbCc6ICdhcHBsaWNhdGlvbi94LWh0dHBkLXBocCcsXG5cblx0Ly8gaW1hZ2VzXG5cdCdwbmcnOiAnaW1hZ2UvcG5nJyxcblx0J2pwZyc6ICdpbWFnZS9qcGVnJyxcblx0J2pwZWcnOiAnaW1hZ2UvanBlZycsXG5cdCdqcGUnOiAnaW1hZ2UvanBlZycsXG5cdCdqZmlmJzogJ2ltYWdlL2pwZWcnLFxuXHQnZ2lmJzogJ2ltYWdlL2dpZicsXG5cdCdibXAnOiAnaW1hZ2UvYm1wJyxcblx0J2NnbSc6ICdpbWFnZS9jZ20nLFxuXHQnaWVmJzogJ2ltYWdlL2llZicsXG5cdCdpY28nOiAnaW1hZ2UveC1pY29uJyxcblx0J3RpZic6ICdpbWFnZS90aWZmJyxcblx0J3RpZmYnOiAnaW1hZ2UvdGlmZicsXG5cdCdzdmcnOiAnaW1hZ2Uvc3ZnK3htbCcsXG5cdCdzdmd6JzogJ2ltYWdlL3N2Zyt4bWwnLFxuXHQnZGp2JzogJ2ltYWdlL3ZuZC5kanZ1Jyxcblx0J2RqdnUnOiAnaW1hZ2Uvdm5kLmRqdnUnLFxuXHQnd2VicCc6ICdpbWFnZS93ZWJwJyxcblxuXHQvLyBhcmNoaXZlc1xuXHQnemlwJzogJ2FwcGxpY2F0aW9uL3ppcCcsXG5cdCc3eic6ICdhcHBsaWNhdGlvbi94LTd6LWNvbXByZXNzZWQnLFxuXHQncmFyJzogJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLFxuXHQnZXhlJzogJ2FwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCcsXG5cdCdkbGwnOiAnYXBwbGljYXRpb24veC1tc2Rvd25sb2FkJyxcblx0J3Njcic6ICdhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQnLFxuXHQnY29tJzogJ2FwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCcsXG5cdCdiYXQnOiAnYXBwbGljYXRpb24veC1tc2Rvd25sb2FkJyxcblx0J21zaSc6ICdhcHBsaWNhdGlvbi94LW1zZG93bmxvYWQnLFxuXHQnY2FiJzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1jYWItY29tcHJlc3NlZCcsXG5cdCdneic6ICdhcHBsaWNhdGlvbi94LWd6aXAnLFxuXHQndGd6JzogJ2FwcGxpY2F0aW9uL3gtZ3ppcCcsXG5cdCdieic6ICdhcHBsaWNhdGlvbi94LWJ6aXAnLFxuXHQnYnoyJzogJ2FwcGxpY2F0aW9uL3gtYnppcDInLFxuXHQnZGViJzogJ2FwcGxpY2F0aW9uL3gtZGViaWFuLXBhY2thZ2UnLFxuXG5cdC8vIGZvbnRzXG5cdCdwc2YnOiAnYXBwbGljYXRpb24veC1mb250LWxpbnV4LXBzZicsXG5cdCdvdGYnOiAnYXBwbGljYXRpb24veC1mb250LW90ZicsXG5cdCdwY2YnOiAnYXBwbGljYXRpb24veC1mb250LXBjZicsXG5cdCdzbmYnOiAnYXBwbGljYXRpb24veC1mb250LXNuZicsXG5cdCd0dGYnOiAnYXBwbGljYXRpb24veC1mb250LXR0ZicsXG5cdCd0dGMnOiAnYXBwbGljYXRpb24veC1mb250LXR0ZicsXG5cblx0Ly8gYXVkaW9cblx0J21wMyc6ICdhdWRpby9tcGVnJyxcblx0J2Ftcic6ICdhdWRpby9hbXInLFxuXHQnYWFjJzogJ2F1ZGlvL3gtYWFjJyxcblx0J2FpZic6ICdhdWRpby94LWFpZmYnLFxuXHQnYWlmYyc6ICdhdWRpby94LWFpZmYnLFxuXHQnYWlmZic6ICdhdWRpby94LWFpZmYnLFxuXHQnd2F2JzogJ2F1ZGlvL3gtd2F2Jyxcblx0J3dtYSc6ICdhdWRpby94LW1zLXdtYScsXG5cdCd3YXgnOiAnYXVkaW8veC1tcy13YXgnLFxuXHQnbWlkaSc6ICdhdWRpby9taWRpJyxcblx0J21wNGEnOiAnYXVkaW8vbXA0Jyxcblx0J29nZyc6ICdhdWRpby9vZ2cnLFxuXHQnd2ViYSc6ICdhdWRpby93ZWJtJyxcblx0J3JhJzogJ2F1ZGlvL3gtcG4tcmVhbGF1ZGlvJyxcblx0J3JhbSc6ICdhdWRpby94LXBuLXJlYWxhdWRpbycsXG5cdCdybXAnOiAnYXVkaW8veC1wbi1yZWFsYXVkaW8tcGx1Z2luJyxcblx0J20zdSc6ICdhdWRpby94LW1wZWd1cmwnLFxuXG5cdC8vIHZpZGVvXG5cdCdmbHYnOiAndmlkZW8veC1mbHYnLFxuXHQncXQnOiAndmlkZW8vcXVpY2t0aW1lJyxcblx0J21vdic6ICd2aWRlby9xdWlja3RpbWUnLFxuXHQnd212JzogJ3ZpZGVvL3dpbmRvd3MtbWVkaWEnLFxuXHQnYXZpJzogJ3ZpZGVvL3gtbXN2aWRlbycsXG5cdCdtcGcnOiAndmlkZW8vbXBlZycsXG5cdCdtcGVnJzogJ3ZpZGVvL21wZWcnLFxuXHQnbXBlJzogJ3ZpZGVvL21wZWcnLFxuXHQnbTF2JzogJ3ZpZGVvL21wZWcnLFxuXHQnbTJ2JzogJ3ZpZGVvL21wZWcnLFxuXHQnM2dwJzogJ3ZpZGVvLzNncHAnLFxuXHQnM2cyJzogJ3ZpZGVvLzNncHAyJyxcblx0J2gyNjEnOiAndmlkZW8vaDI2MScsXG5cdCdoMjYzJzogJ3ZpZGVvL2gyNjMnLFxuXHQnaDI2NCc6ICd2aWRlby9oMjY0Jyxcblx0J2pwZ3YnOiAndmlkZW8vanBndicsXG5cdCdtcDQnOiAndmlkZW8vbXA0Jyxcblx0J21wNHYnOiAndmlkZW8vbXA0Jyxcblx0J21wZzQnOiAndmlkZW8vbXA0Jyxcblx0J29ndic6ICd2aWRlby9vZ2cnLFxuXHQnd2VibSc6ICd2aWRlby93ZWJtJyxcblx0J200dic6ICd2aWRlby94LW00dicsXG5cdCdhc2YnOiAndmlkZW8veC1tcy1hc2YnLFxuXHQnYXN4JzogJ3ZpZGVvL3gtbXMtYXNmJyxcblx0J3dtJzogJ3ZpZGVvL3gtbXMtd20nLFxuXHQnd214JzogJ3ZpZGVvL3gtbXMtd214Jyxcblx0J3d2eCc6ICd2aWRlby94LW1zLXd2eCcsXG5cdCdtb3ZpZSc6ICd2aWRlby94LXNnaS1tb3ZpZScsXG5cblx0Ly8gYWRvYmVcblx0J3BkZic6ICdhcHBsaWNhdGlvbi9wZGYnLFxuXHQncHNkJzogJ2ltYWdlL3ZuZC5hZG9iZS5waG90b3Nob3AnLFxuXHQnYWknOiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsXG5cdCdlcHMnOiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsXG5cdCdwcyc6ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JyxcblxuXHQvLyBtcyBvZmZpY2Vcblx0J2RvYyc6ICdhcHBsaWNhdGlvbi9tc3dvcmQnLFxuXHQnZG90JzogJ2FwcGxpY2F0aW9uL21zd29yZCcsXG5cdCdydGYnOiAnYXBwbGljYXRpb24vcnRmJyxcblx0J3hscyc6ICdhcHBsaWNhdGlvbi92bmQubXMtZXhjZWwnLFxuXHQncHB0JzogJ2FwcGxpY2F0aW9uL3ZuZC5tcy1wb3dlcnBvaW50Jyxcblx0J2RvY3gnOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLFxuXHQneGxzeCc6ICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQuc3ByZWFkc2hlZXRtbC5zaGVldCcsXG5cdCdkb3R4JzogJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC53b3JkcHJvY2Vzc2luZ21sLnRlbXBsYXRlJyxcblx0J3BwdHgnOiAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicsXG5cblx0Ly8gb3BlbiBvZmZpY2Vcblx0J29kdCc6ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnLFxuXHQnb2RzJzogJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQnXG59O1xuXG5leHBvcnQgeyBNaW1lLCBNaW1lIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyBNYWdpY3MgfSBmcm9tICdDb21tb24vRW51bXMnO1xuXG5jbGFzcyBGaWx0ZXJVc2VyU3RvcmUge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmNhcGEgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLm1vZHVsZXMgPSBrby5vYnNlcnZhYmxlKHt9KTtcblxuXHRcdHRoaXMuZmlsdGVycyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cblx0XHR0aGlzLmZpbHRlcnMubG9hZGluZyA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IHRocm90dGxlOiBNYWdpY3MuVGltZTIwMG1zIH0pO1xuXHRcdHRoaXMuZmlsdGVycy5zYXZpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyB0aHJvdHRsZTogTWFnaWNzLlRpbWUyMDBtcyB9KTtcblxuXHRcdHRoaXMucmF3ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IEZpbHRlclVzZXJTdG9yZSgpO1xuIiwidmFyIGludGVybmFsT2JqZWN0S2V5cyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VudW0tYnVnLWtleXMnKTtcblxuLy8gYE9iamVjdC5rZXlzYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmtleXNcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1vYmplY3Qta2V5cyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gaW50ZXJuYWxPYmplY3RLZXlzKE8sIGVudW1CdWdLZXlzKTtcbn07XG4iLCJ2YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgY3JlYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1jcmVhdGUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbnZhciBVTlNDT1BBQkxFUyA9IHdlbGxLbm93blN5bWJvbCgndW5zY29wYWJsZXMnKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS1AQHVuc2NvcGFibGVzXG5pZiAoQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdID09IHVuZGVmaW5lZCkge1xuICBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKEFycmF5UHJvdG90eXBlLCBVTlNDT1BBQkxFUywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICB2YWx1ZTogY3JlYXRlKG51bGwpXG4gIH0pO1xufVxuXG4vLyBhZGQgYSBrZXkgdG8gQXJyYXkucHJvdG90eXBlW0BAdW5zY29wYWJsZXNdXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgQXJyYXlQcm90b3R5cGVbVU5TQ09QQUJMRVNdW2tleV0gPSB0cnVlO1xufTtcbiIsInZhciBnZXRCdWlsdEluID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dldC1idWlsdC1pbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEJ1aWx0SW4oJ2RvY3VtZW50JywgJ2RvY3VtZW50RWxlbWVudCcpO1xuIiwidmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbi8vIGBTcGVjaWVzQ29uc3RydWN0b3JgIGFic3RyYWN0IG9wZXJhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE8sIGRlZmF1bHRDb25zdHJ1Y3Rvcikge1xuICB2YXIgQyA9IGFuT2JqZWN0KE8pLmNvbnN0cnVjdG9yO1xuICB2YXIgUztcbiAgcmV0dXJuIEMgPT09IHVuZGVmaW5lZCB8fCAoUyA9IGFuT2JqZWN0KEMpW1NQRUNJRVNdKSA9PSB1bmRlZmluZWQgPyBkZWZhdWx0Q29uc3RydWN0b3IgOiBhRnVuY3Rpb24oUyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgY3JlYXRlSXRlcmF0b3JDb25zdHJ1Y3RvciA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtaXRlcmF0b3ItY29uc3RydWN0b3InKTtcbnZhciBnZXRQcm90b3R5cGVPZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZ2V0LXByb3RvdHlwZS1vZicpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJU19QVVJFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLXB1cmUnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgSXRlcmF0b3JzQ29yZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpO1xuXG52YXIgSXRlcmF0b3JQcm90b3R5cGUgPSBJdGVyYXRvcnNDb3JlLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgPSBJdGVyYXRvcnNDb3JlLkJVR0dZX1NBRkFSSV9JVEVSQVRPUlM7XG52YXIgSVRFUkFUT1IgPSB3ZWxsS25vd25TeW1ib2woJ2l0ZXJhdG9yJyk7XG52YXIgS0VZUyA9ICdrZXlzJztcbnZhciBWQUxVRVMgPSAndmFsdWVzJztcbnZhciBFTlRSSUVTID0gJ2VudHJpZXMnO1xuXG52YXIgcmV0dXJuVGhpcyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKEl0ZXJhYmxlLCBOQU1FLCBJdGVyYXRvckNvbnN0cnVjdG9yLCBuZXh0LCBERUZBVUxULCBJU19TRVQsIEZPUkNFRCkge1xuICBjcmVhdGVJdGVyYXRvckNvbnN0cnVjdG9yKEl0ZXJhdG9yQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuXG4gIHZhciBnZXRJdGVyYXRpb25NZXRob2QgPSBmdW5jdGlvbiAoS0lORCkge1xuICAgIGlmIChLSU5EID09PSBERUZBVUxUICYmIGRlZmF1bHRJdGVyYXRvcikgcmV0dXJuIGRlZmF1bHRJdGVyYXRvcjtcbiAgICBpZiAoIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgS0lORCBpbiBJdGVyYWJsZVByb3RvdHlwZSkgcmV0dXJuIEl0ZXJhYmxlUHJvdG90eXBlW0tJTkRdO1xuICAgIHN3aXRjaCAoS0lORCkge1xuICAgICAgY2FzZSBLRVlTOiByZXR1cm4gZnVuY3Rpb24ga2V5cygpIHsgcmV0dXJuIG5ldyBJdGVyYXRvckNvbnN0cnVjdG9yKHRoaXMsIEtJTkQpOyB9O1xuICAgICAgY2FzZSBWQUxVRVM6IHJldHVybiBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICAgIGNhc2UgRU5UUklFUzogcmV0dXJuIGZ1bmN0aW9uIGVudHJpZXMoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzLCBLSU5EKTsgfTtcbiAgICB9IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBuZXcgSXRlcmF0b3JDb25zdHJ1Y3Rvcih0aGlzKTsgfTtcbiAgfTtcblxuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgdmFyIElOQ09SUkVDVF9WQUxVRVNfTkFNRSA9IGZhbHNlO1xuICB2YXIgSXRlcmFibGVQcm90b3R5cGUgPSBJdGVyYWJsZS5wcm90b3R5cGU7XG4gIHZhciBuYXRpdmVJdGVyYXRvciA9IEl0ZXJhYmxlUHJvdG90eXBlW0lURVJBVE9SXVxuICAgIHx8IEl0ZXJhYmxlUHJvdG90eXBlWydAQGl0ZXJhdG9yJ11cbiAgICB8fCBERUZBVUxUICYmIEl0ZXJhYmxlUHJvdG90eXBlW0RFRkFVTFRdO1xuICB2YXIgZGVmYXVsdEl0ZXJhdG9yID0gIUJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgJiYgbmF0aXZlSXRlcmF0b3IgfHwgZ2V0SXRlcmF0aW9uTWV0aG9kKERFRkFVTFQpO1xuICB2YXIgYW55TmF0aXZlSXRlcmF0b3IgPSBOQU1FID09ICdBcnJheScgPyBJdGVyYWJsZVByb3RvdHlwZS5lbnRyaWVzIHx8IG5hdGl2ZUl0ZXJhdG9yIDogbmF0aXZlSXRlcmF0b3I7XG4gIHZhciBDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIG1ldGhvZHMsIEtFWTtcblxuICAvLyBmaXggbmF0aXZlXG4gIGlmIChhbnlOYXRpdmVJdGVyYXRvcikge1xuICAgIEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mKGFueU5hdGl2ZUl0ZXJhdG9yLmNhbGwobmV3IEl0ZXJhYmxlKCkpKTtcbiAgICBpZiAoSXRlcmF0b3JQcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlLm5leHQpIHtcbiAgICAgIGlmICghSVNfUFVSRSAmJiBnZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUpICE9PSBJdGVyYXRvclByb3RvdHlwZSkge1xuICAgICAgICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgICAgICBzZXRQcm90b3R5cGVPZihDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIEl0ZXJhdG9yUHJvdG90eXBlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgQ3VycmVudEl0ZXJhdG9yUHJvdG90eXBlW0lURVJBVE9SXSAhPSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KEN1cnJlbnRJdGVyYXRvclByb3RvdHlwZSwgSVRFUkFUT1IsIHJldHVyblRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQgQEB0b1N0cmluZ1RhZyB0byBuYXRpdmUgaXRlcmF0b3JzXG4gICAgICBzZXRUb1N0cmluZ1RhZyhDdXJyZW50SXRlcmF0b3JQcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIHRydWUsIHRydWUpO1xuICAgICAgaWYgKElTX1BVUkUpIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gICAgfVxuICB9XG5cbiAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICBpZiAoREVGQVVMVCA9PSBWQUxVRVMgJiYgbmF0aXZlSXRlcmF0b3IgJiYgbmF0aXZlSXRlcmF0b3IubmFtZSAhPT0gVkFMVUVTKSB7XG4gICAgSU5DT1JSRUNUX1ZBTFVFU19OQU1FID0gdHJ1ZTtcbiAgICBkZWZhdWx0SXRlcmF0b3IgPSBmdW5jdGlvbiB2YWx1ZXMoKSB7IHJldHVybiBuYXRpdmVJdGVyYXRvci5jYWxsKHRoaXMpOyB9O1xuICB9XG5cbiAgLy8gZGVmaW5lIGl0ZXJhdG9yXG4gIGlmICgoIUlTX1BVUkUgfHwgRk9SQ0VEKSAmJiBJdGVyYWJsZVByb3RvdHlwZVtJVEVSQVRPUl0gIT09IGRlZmF1bHRJdGVyYXRvcikge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShJdGVyYWJsZVByb3RvdHlwZSwgSVRFUkFUT1IsIGRlZmF1bHRJdGVyYXRvcik7XG4gIH1cbiAgSXRlcmF0b3JzW05BTUVdID0gZGVmYXVsdEl0ZXJhdG9yO1xuXG4gIC8vIGV4cG9ydCBhZGRpdGlvbmFsIG1ldGhvZHNcbiAgaWYgKERFRkFVTFQpIHtcbiAgICBtZXRob2RzID0ge1xuICAgICAgdmFsdWVzOiBnZXRJdGVyYXRpb25NZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6IElTX1NFVCA/IGRlZmF1bHRJdGVyYXRvciA6IGdldEl0ZXJhdGlvbk1ldGhvZChLRVlTKSxcbiAgICAgIGVudHJpZXM6IGdldEl0ZXJhdGlvbk1ldGhvZChFTlRSSUVTKVxuICAgIH07XG4gICAgaWYgKEZPUkNFRCkgZm9yIChLRVkgaW4gbWV0aG9kcykge1xuICAgICAgaWYgKEJVR0dZX1NBRkFSSV9JVEVSQVRPUlMgfHwgSU5DT1JSRUNUX1ZBTFVFU19OQU1FIHx8ICEoS0VZIGluIEl0ZXJhYmxlUHJvdG90eXBlKSkge1xuICAgICAgICByZWRlZmluZShJdGVyYWJsZVByb3RvdHlwZSwgS0VZLCBtZXRob2RzW0tFWV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSAkKHsgdGFyZ2V0OiBOQU1FLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBCVUdHWV9TQUZBUklfSVRFUkFUT1JTIHx8IElOQ09SUkVDVF9WQUxVRVNfTkFNRSB9LCBtZXRob2RzKTtcbiAgfVxuXG4gIHJldHVybiBtZXRob2RzO1xufTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQga2V5IGZyb20gJ2tleSc7XG5cbmltcG9ydCB7IEtleVN0YXRlIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IGlzRnVuYyB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5pbXBvcnQgeyBwb3B1cCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHBvcHVwKHtcblx0bmFtZTogJ1ZpZXcvUG9wdXAvQXNrJyxcblx0dGVtcGxhdGVJRDogJ1BvcHVwc0Fzaydcbn0pXG5jbGFzcyBBc2tQb3B1cFZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMuYXNrRGVzYyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMueWVzQnV0dG9uID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5ub0J1dHRvbiA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy55ZXNGb2N1cyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMubm9Gb2N1cyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5mWWVzQWN0aW9uID0gbnVsbDtcblx0XHR0aGlzLmZOb0FjdGlvbiA9IG51bGw7XG5cblx0XHR0aGlzLmJGb2N1c1llc09uU2hvdyA9IHRydWU7XG5cdFx0dGhpcy5iRGlzYWJlQ2xvc2VPbkVzYyA9IHRydWU7XG5cdFx0dGhpcy5zRGVmYXVsdEtleVNjb3BlID0gS2V5U3RhdGUuUG9wdXBBc2s7XG5cdH1cblxuXHRjbGVhclBvcHVwKCkge1xuXHRcdHRoaXMuYXNrRGVzYygnJyk7XG5cdFx0dGhpcy55ZXNCdXR0b24oaTE4bignUE9QVVBTX0FTSy9CVVRUT05fWUVTJykpO1xuXHRcdHRoaXMubm9CdXR0b24oaTE4bignUE9QVVBTX0FTSy9CVVRUT05fTk8nKSk7XG5cblx0XHR0aGlzLnllc0ZvY3VzKGZhbHNlKTtcblx0XHR0aGlzLm5vRm9jdXMoZmFsc2UpO1xuXG5cdFx0dGhpcy5mWWVzQWN0aW9uID0gbnVsbDtcblx0XHR0aGlzLmZOb0FjdGlvbiA9IG51bGw7XG5cdH1cblxuXHR5ZXNDbGljaygpIHtcblx0XHR0aGlzLmNhbmNlbENvbW1hbmQoKTtcblxuXHRcdGlmIChpc0Z1bmModGhpcy5mWWVzQWN0aW9uKSkge1xuXHRcdFx0dGhpcy5mWWVzQWN0aW9uLmNhbGwobnVsbCk7XG5cdFx0fVxuXHR9XG5cblx0bm9DbGljaygpIHtcblx0XHR0aGlzLmNhbmNlbENvbW1hbmQoKTtcblxuXHRcdGlmIChpc0Z1bmModGhpcy5mTm9BY3Rpb24pKSB7XG5cdFx0XHR0aGlzLmZOb0FjdGlvbi5jYWxsKG51bGwpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0Fza0Rlc2Ncblx0ICogQHBhcmFtIHtGdW5jdGlvbj19IGZZZXNGdW5jXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb249fSBmTm9GdW5jXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gc1llc0J1dHRvblxuXHQgKiBAcGFyYW0ge3N0cmluZz19IHNOb0J1dHRvblxuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSBiRm9jdXNZZXNPblNob3cgPSB0cnVlXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0b25TaG93KGFza0Rlc2MsIGZZZXNGdW5jID0gbnVsbCwgZk5vRnVuYyA9IG51bGwsIHllc0J1dHRvbiA9ICcnLCBub0J1dHRvbiA9ICcnLCBpc0ZvY3VzWWVzT25TaG93ID0gdHJ1ZSkge1xuXHRcdHRoaXMuY2xlYXJQb3B1cCgpO1xuXG5cdFx0dGhpcy5mWWVzQWN0aW9uID0gZlllc0Z1bmMgfHwgbnVsbDtcblx0XHR0aGlzLmZOb0FjdGlvbiA9IGZOb0Z1bmMgfHwgbnVsbDtcblxuXHRcdHRoaXMuYXNrRGVzYyhhc2tEZXNjIHx8ICcnKTtcblxuXHRcdGlmICh5ZXNCdXR0b24pIHtcblx0XHRcdHRoaXMueWVzQnV0dG9uKHllc0J1dHRvbik7XG5cdFx0fVxuXG5cdFx0aWYgKG5vQnV0dG9uKSB7XG5cdFx0XHR0aGlzLm5vQnV0dG9uKG5vQnV0dG9uKTtcblx0XHR9XG5cblx0XHR0aGlzLmJGb2N1c1llc09uU2hvdyA9ICEhaXNGb2N1c1llc09uU2hvdztcblx0fVxuXG5cdG9uU2hvd1dpdGhEZWxheSgpIHtcblx0XHRpZiAodGhpcy5iRm9jdXNZZXNPblNob3cpIHtcblx0XHRcdHRoaXMueWVzRm9jdXModHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0b25CdWlsZCgpIHtcblx0XHRrZXkoJ3RhYiwgc2hpZnQrdGFiLCByaWdodCwgbGVmdCcsIEtleVN0YXRlLlBvcHVwQXNrLCAoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy55ZXNGb2N1cygpKSB7XG5cdFx0XHRcdHRoaXMubm9Gb2N1cyh0cnVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMueWVzRm9jdXModHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRrZXkoJ2VzYycsIEtleVN0YXRlLlBvcHVwQXNrLCAoKSA9PiB7XG5cdFx0XHR0aGlzLm5vQ2xpY2soKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgeyBBc2tQb3B1cFZpZXcsIEFza1BvcHVwVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBNYWdpY3MgfSBmcm9tICdDb21tb24vRW51bXMnO1xuXG5jbGFzcyBRdW90YVVzZXJTdG9yZSB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMucXVvdGEgPSBrby5vYnNlcnZhYmxlKDApO1xuXHRcdHRoaXMudXNhZ2UgPSBrby5vYnNlcnZhYmxlKDApO1xuXG5cdFx0dGhpcy5wZXJjZW50YWdlID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgcXVvdGEgPSB0aGlzLnF1b3RhKCksXG5cdFx0XHRcdHVzYWdlID0gdGhpcy51c2FnZSgpO1xuXG5cdFx0XHRyZXR1cm4gMCA8IHF1b3RhID8gd2luZG93Lk1hdGguY2VpbCgodXNhZ2UgLyBxdW90YSkgKiAxMDApIDogMDtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge251bWJlcn0gcXVvdGFcblx0ICogQHBhcmFtIHtudW1iZXJ9IHVzYWdlXG5cdCAqL1xuXHRwb3B1bGF0ZURhdGEocXVvdGEsIHVzYWdlKSB7XG5cdFx0dGhpcy5xdW90YShxdW90YSAqIE1hZ2ljcy5CaXRMZW5ndGgxMDI0KTtcblx0XHR0aGlzLnVzYWdlKHVzYWdlICogTWFnaWNzLkJpdExlbmd0aDEwMjQpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBRdW90YVVzZXJTdG9yZSgpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3cuaWZ2aXNpYmxlOyIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZXMvbm8tb2JqZWN0LWRlZmluZXByb3BlcnRpZXMgLS0gc2FmZVxubW9kdWxlLmV4cG9ydHMgPSBERVNDUklQVE9SUyA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzIDogZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhPLCBQcm9wZXJ0aWVzKSB7XG4gIGFuT2JqZWN0KE8pO1xuICB2YXIga2V5cyA9IG9iamVjdEtleXMoUHJvcGVydGllcyk7XG4gIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGtleTtcbiAgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKE8sIGtleSA9IGtleXNbaW5kZXgrK10sIFByb3BlcnRpZXNba2V5XSk7XG4gIHJldHVybiBPO1xufTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YtcmF3Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBNQVRDSCA9IHdlbGxLbm93blN5bWJvbCgnbWF0Y2gnKTtcblxuLy8gYElzUmVnRXhwYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtaXNyZWdleHBcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBpc1JlZ0V4cDtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiAoKGlzUmVnRXhwID0gaXRbTUFUQ0hdKSAhPT0gdW5kZWZpbmVkID8gISFpc1JlZ0V4cCA6IGNsYXNzb2YoaXQpID09ICdSZWdFeHAnKTtcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBGKCkgeyAvKiBlbXB0eSAqLyB9XG4gIEYucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gbnVsbDtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1nZXRwcm90b3R5cGVvZiAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSAmJiBpdCAhPT0gbnVsbCkge1xuICAgIHRocm93IFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArIFN0cmluZyhpdCkgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgSXRlcmF0b3JDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvckNvbnN0cnVjdG9yLCBUT19TVFJJTkdfVEFHLCBmYWxzZSwgdHJ1ZSk7XG4gIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gIHJldHVybiBJdGVyYXRvckNvbnN0cnVjdG9yO1xufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgRE9NSXRlcmFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RvbS1pdGVyYWJsZXMnKTtcbnZhciBBcnJheUl0ZXJhdG9yTWV0aG9kcyA9IHJlcXVpcmUoJy4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLW5vbi1lbnVtZXJhYmxlLXByb3BlcnR5Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBUT19TVFJJTkdfVEFHID0gd2VsbEtub3duU3ltYm9sKCd0b1N0cmluZ1RhZycpO1xudmFyIEFycmF5VmFsdWVzID0gQXJyYXlJdGVyYXRvck1ldGhvZHMudmFsdWVzO1xuXG5mb3IgKHZhciBDT0xMRUNUSU9OX05BTUUgaW4gRE9NSXRlcmFibGVzKSB7XG4gIHZhciBDb2xsZWN0aW9uID0gZ2xvYmFsW0NPTExFQ1RJT05fTkFNRV07XG4gIHZhciBDb2xsZWN0aW9uUHJvdG90eXBlID0gQ29sbGVjdGlvbiAmJiBDb2xsZWN0aW9uLnByb3RvdHlwZTtcbiAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGUpIHtcbiAgICAvLyBzb21lIENocm9tZSB2ZXJzaW9ucyBoYXZlIG5vbi1jb25maWd1cmFibGUgbWV0aG9kcyBvbiBET01Ub2tlbkxpc3RcbiAgICBpZiAoQ29sbGVjdGlvblByb3RvdHlwZVtJVEVSQVRPUl0gIT09IEFycmF5VmFsdWVzKSB0cnkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsIElURVJBVE9SLCBBcnJheVZhbHVlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIENvbGxlY3Rpb25Qcm90b3R5cGVbSVRFUkFUT1JdID0gQXJyYXlWYWx1ZXM7XG4gICAgfVxuICAgIGlmICghQ29sbGVjdGlvblByb3RvdHlwZVtUT19TVFJJTkdfVEFHXSkge1xuICAgICAgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KENvbGxlY3Rpb25Qcm90b3R5cGUsIFRPX1NUUklOR19UQUcsIENPTExFQ1RJT05fTkFNRSk7XG4gICAgfVxuICAgIGlmIChET01JdGVyYWJsZXNbQ09MTEVDVElPTl9OQU1FXSkgZm9yICh2YXIgTUVUSE9EX05BTUUgaW4gQXJyYXlJdGVyYXRvck1ldGhvZHMpIHtcbiAgICAgIC8vIHNvbWUgQ2hyb21lIHZlcnNpb25zIGhhdmUgbm9uLWNvbmZpZ3VyYWJsZSBtZXRob2RzIG9uIERPTVRva2VuTGlzdFxuICAgICAgaWYgKENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdICE9PSBBcnJheUl0ZXJhdG9yTWV0aG9kc1tNRVRIT0RfTkFNRV0pIHRyeSB7XG4gICAgICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShDb2xsZWN0aW9uUHJvdG90eXBlLCBNRVRIT0RfTkFNRSwgQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIENvbGxlY3Rpb25Qcm90b3R5cGVbTUVUSE9EX05BTUVdID0gQXJyYXlJdGVyYXRvck1ldGhvZHNbTUVUSE9EX05BTUVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwicmVxdWlyZSgnLi4vbW9kdWxlcy93ZWIudGltZXJzJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5zZXRUaW1lb3V0O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIG5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlID0ge30ucHJvcGVydHlJc0VudW1lcmFibGU7XG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxuLy8gTmFzaG9ybiB+IEpESzggYnVnXG52YXIgTkFTSE9STl9CVUcgPSBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgJiYgIW5hdGl2ZVByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoeyAxOiAyIH0sIDEpO1xuXG4vLyBgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZWAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5wcm90b3R5cGUucHJvcGVydHlpc2VudW1lcmFibGVcbmV4cG9ydHMuZiA9IE5BU0hPUk5fQlVHID8gZnVuY3Rpb24gcHJvcGVydHlJc0VudW1lcmFibGUoVikge1xuICB2YXIgZGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcih0aGlzLCBWKTtcbiAgcmV0dXJuICEhZGVzY3JpcHRvciAmJiBkZXNjcmlwdG9yLmVudW1lcmFibGU7XG59IDogbmF0aXZlUHJvcGVydHlJc0VudW1lcmFibGU7XG4iLCJ2YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvcHJvbWlzZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMuYWdncmVnYXRlLWVycm9yJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcnKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMucHJvbWlzZScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5wcm9taXNlLmFsbC1zZXR0bGVkJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UuYW55Jyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLnByb21pc2UuZmluYWxseScpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3InKTtcbnJlcXVpcmUoJy4uLy4uL21vZHVsZXMvd2ViLmRvbS1jb2xsZWN0aW9ucy5pdGVyYXRvcicpO1xudmFyIHBhdGggPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvcGF0aCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhdGguUHJvbWlzZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGdldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtcHJvdG90eXBlLW9mJyk7XG52YXIgc2V0UHJvdG90eXBlT2YgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LXNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBjcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWNyZWF0ZScpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcbnZhciBjcmVhdGVQcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvY3JlYXRlLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBpdGVyYXRlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2l0ZXJhdGUnKTtcblxudmFyICRBZ2dyZWdhdGVFcnJvciA9IGZ1bmN0aW9uIEFnZ3JlZ2F0ZUVycm9yKGVycm9ycywgbWVzc2FnZSkge1xuICB2YXIgdGhhdCA9IHRoaXM7XG4gIGlmICghKHRoYXQgaW5zdGFuY2VvZiAkQWdncmVnYXRlRXJyb3IpKSByZXR1cm4gbmV3ICRBZ2dyZWdhdGVFcnJvcihlcnJvcnMsIG1lc3NhZ2UpO1xuICBpZiAoc2V0UHJvdG90eXBlT2YpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9lcnJvci1tZXNzYWdlXG4gICAgdGhhdCA9IHNldFByb3RvdHlwZU9mKG5ldyBFcnJvcih1bmRlZmluZWQpLCBnZXRQcm90b3R5cGVPZih0aGF0KSk7XG4gIH1cbiAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkgY3JlYXRlTm9uRW51bWVyYWJsZVByb3BlcnR5KHRoYXQsICdtZXNzYWdlJywgU3RyaW5nKG1lc3NhZ2UpKTtcbiAgdmFyIGVycm9yc0FycmF5ID0gW107XG4gIGl0ZXJhdGUoZXJyb3JzLCBlcnJvcnNBcnJheS5wdXNoLCB7IHRoYXQ6IGVycm9yc0FycmF5IH0pO1xuICBjcmVhdGVOb25FbnVtZXJhYmxlUHJvcGVydHkodGhhdCwgJ2Vycm9ycycsIGVycm9yc0FycmF5KTtcbiAgcmV0dXJuIHRoYXQ7XG59O1xuXG4kQWdncmVnYXRlRXJyb3IucHJvdG90eXBlID0gY3JlYXRlKEVycm9yLnByb3RvdHlwZSwge1xuICBjb25zdHJ1Y3RvcjogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDUsICRBZ2dyZWdhdGVFcnJvciksXG4gIG1lc3NhZ2U6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcig1LCAnJyksXG4gIG5hbWU6IGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcig1LCAnQWdncmVnYXRlRXJyb3InKVxufSk7XG5cbi8vIGBBZ2dyZWdhdGVFcnJvcmAgY29uc3RydWN0b3Jcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYWdncmVnYXRlLWVycm9yLWNvbnN0cnVjdG9yXG4kKHsgZ2xvYmFsOiB0cnVlIH0sIHtcbiAgQWdncmVnYXRlRXJyb3I6ICRBZ2dyZWdhdGVFcnJvclxufSk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtbm9uLWVudW1lcmFibGUtcHJvcGVydHknKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICB0cnkge1xuICAgIGNyZWF0ZU5vbkVudW1lcmFibGVQcm9wZXJ0eShnbG9iYWwsIGtleSwgdmFsdWUpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGdsb2JhbFtrZXldID0gdmFsdWU7XG4gIH0gcmV0dXJuIHZhbHVlO1xufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICFmYWlscyhmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEYoKSB7IC8qIGVtcHR5ICovIH1cbiAgRi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBudWxsO1xuICByZXR1cm4gT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBGKCkpICE9PSBGLnByb3RvdHlwZTtcbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSAmJiBpdCAhPT0gbnVsbCkge1xuICAgIHRocm93IFR5cGVFcnJvcihcIkNhbid0IHNldCBcIiArIFN0cmluZyhpdCkgKyAnIGFzIGEgcHJvdG90eXBlJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGRlZmluZVByb3BlcnR5TW9kdWxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1kZWZpbmUtcHJvcGVydHknKTtcbnZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcbnZhciBvYmplY3RLZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1rZXlzJyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydGllc2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5kZWZpbmVwcm9wZXJ0aWVzXG5tb2R1bGUuZXhwb3J0cyA9IERFU0NSSVBUT1JTID8gT2JqZWN0LmRlZmluZVByb3BlcnRpZXMgOiBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIHZhciBrZXlzID0gb2JqZWN0S2V5cyhQcm9wZXJ0aWVzKTtcbiAgdmFyIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAwO1xuICB2YXIga2V5O1xuICB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIGRlZmluZVByb3BlcnR5TW9kdWxlLmYoTywga2V5ID0ga2V5c1tpbmRleCsrXSwgUHJvcGVydGllc1trZXldKTtcbiAgcmV0dXJuIE87XG59O1xuIiwidmFyIGhhcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9oYXMnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBpbmRleE9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWluY2x1ZGVzJykuaW5kZXhPZjtcbnZhciBoaWRkZW5LZXlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hpZGRlbi1rZXlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pICFoYXMoaGlkZGVuS2V5cywga2V5KSAmJiBoYXMoTywga2V5KSAmJiByZXN1bHQucHVzaChrZXkpO1xuICAvLyBEb24ndCBlbnVtIGJ1ZyAmIGhpZGRlbiBrZXlzXG4gIHdoaWxlIChuYW1lcy5sZW5ndGggPiBpKSBpZiAoaGFzKE8sIGtleSA9IG5hbWVzW2krK10pKSB7XG4gICAgfmluZGV4T2YocmVzdWx0LCBrZXkpIHx8IHJlc3VsdC5wdXNoKGtleSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCJ2YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tbGVuZ3RoJyk7XG52YXIgdG9BYnNvbHV0ZUluZGV4ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWFic29sdXRlLWluZGV4Jyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBpbmRleE9mLCBpbmNsdWRlcyB9YCBtZXRob2RzIGltcGxlbWVudGF0aW9uXG52YXIgY3JlYXRlTWV0aG9kID0gZnVuY3Rpb24gKElTX0lOQ0xVREVTKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoJHRoaXMsIGVsLCBmcm9tSW5kZXgpIHtcbiAgICB2YXIgTyA9IHRvSW5kZXhlZE9iamVjdCgkdGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSB0b0Fic29sdXRlSW5kZXgoZnJvbUluZGV4LCBsZW5ndGgpO1xuICAgIHZhciB2YWx1ZTtcbiAgICAvLyBBcnJheSNpbmNsdWRlcyB1c2VzIFNhbWVWYWx1ZVplcm8gZXF1YWxpdHkgYWxnb3JpdGhtXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtY29tcGFyZVxuICAgIGlmIChJU19JTkNMVURFUyAmJiBlbCAhPSBlbCkgd2hpbGUgKGxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YWx1ZSA9IE9baW5kZXgrK107XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgICBpZiAodmFsdWUgIT0gdmFsdWUpIHJldHVybiB0cnVlO1xuICAgIC8vIEFycmF5I2luZGV4T2YgaWdub3JlcyBob2xlcywgQXJyYXkjaW5jbHVkZXMgLSBub3RcbiAgICB9IGVsc2UgZm9yICg7bGVuZ3RoID4gaW5kZXg7IGluZGV4KyspIHtcbiAgICAgIGlmICgoSVNfSU5DTFVERVMgfHwgaW5kZXggaW4gTykgJiYgT1tpbmRleF0gPT09IGVsKSByZXR1cm4gSVNfSU5DTFVERVMgfHwgaW5kZXggfHwgMDtcbiAgICB9IHJldHVybiAhSVNfSU5DTFVERVMgJiYgLTE7XG4gIH07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5pbmNsdWRlc2AgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluY2x1ZGVzXG4gIGluY2x1ZGVzOiBjcmVhdGVNZXRob2QodHJ1ZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuaW5kZXhPZmAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmluZGV4b2ZcbiAgaW5kZXhPZjogY3JlYXRlTWV0aG9kKGZhbHNlKVxufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxuLy8gY2hlY2sgb24gZGVmYXVsdCBBcnJheSBpdGVyYXRvclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGl0ICE9PSB1bmRlZmluZWQgJiYgKEl0ZXJhdG9ycy5BcnJheSA9PT0gaXQgfHwgQXJyYXlQcm90b3R5cGVbSVRFUkFUT1JdID09PSBpdCk7XG59O1xuIiwidmFyIE5BVElWRV9TWU1CT0wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXN5bWJvbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE5BVElWRV9TWU1CT0xcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICYmICFTeW1ib2wuc2hhbVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PSAnc3ltYm9sJztcbiIsInZhciBjbGFzc29mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NsYXNzb2YnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG5cbnZhciBJVEVSQVRPUiA9IHdlbGxLbm93blN5bWJvbCgnaXRlcmF0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKGl0ICE9IHVuZGVmaW5lZCkgcmV0dXJuIGl0W0lURVJBVE9SXVxuICAgIHx8IGl0WydAQGl0ZXJhdG9yJ11cbiAgICB8fCBJdGVyYXRvcnNbY2xhc3NvZihpdCldO1xufTtcbiIsInZhciBhbk9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hbi1vYmplY3QnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlcmF0b3IpIHtcbiAgdmFyIHJldHVybk1ldGhvZCA9IGl0ZXJhdG9yWydyZXR1cm4nXTtcbiAgaWYgKHJldHVybk1ldGhvZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGFuT2JqZWN0KHJldHVybk1ldGhvZC5jYWxsKGl0ZXJhdG9yKSkudmFsdWU7XG4gIH1cbn07XG4iLCIvLyBlbXB0eVxuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgSVNfUFVSRSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1wdXJlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2dsb2JhbCcpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgTmF0aXZlUHJvbWlzZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uYXRpdmUtcHJvbWlzZS1jb25zdHJ1Y3RvcicpO1xudmFyIHJlZGVmaW5lID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZGVmaW5lJyk7XG52YXIgcmVkZWZpbmVBbGwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUtYWxsJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBzZXRTcGVjaWVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NldC1zcGVjaWVzJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgYUZ1bmN0aW9uID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2EtZnVuY3Rpb24nKTtcbnZhciBhbkluc3RhbmNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLWluc3RhbmNlJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xudmFyIGNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jaGVjay1jb3JyZWN0bmVzcy1vZi1pdGVyYXRpb24nKTtcbnZhciBzcGVjaWVzQ29uc3RydWN0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc3BlY2llcy1jb25zdHJ1Y3RvcicpO1xudmFyIHRhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdGFzaycpLnNldDtcbnZhciBtaWNyb3Rhc2sgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbWljcm90YXNrJyk7XG52YXIgcHJvbWlzZVJlc29sdmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcHJvbWlzZS1yZXNvbHZlJyk7XG52YXIgaG9zdFJlcG9ydEVycm9ycyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9ob3N0LXJlcG9ydC1lcnJvcnMnKTtcbnZhciBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9uZXctcHJvbWlzZS1jYXBhYmlsaXR5Jyk7XG52YXIgcGVyZm9ybSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wZXJmb3JtJyk7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGlzRm9yY2VkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLWZvcmNlZCcpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcbnZhciBWOF9WRVJTSU9OID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS12OC12ZXJzaW9uJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG52YXIgUFJPTUlTRSA9ICdQcm9taXNlJztcbnZhciBnZXRJbnRlcm5hbFN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXQ7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsUHJvbWlzZVN0YXRlID0gSW50ZXJuYWxTdGF0ZU1vZHVsZS5nZXR0ZXJGb3IoUFJPTUlTRSk7XG52YXIgUHJvbWlzZUNvbnN0cnVjdG9yID0gTmF0aXZlUHJvbWlzZTtcbnZhciBUeXBlRXJyb3IgPSBnbG9iYWwuVHlwZUVycm9yO1xudmFyIGRvY3VtZW50ID0gZ2xvYmFsLmRvY3VtZW50O1xudmFyIHByb2Nlc3MgPSBnbG9iYWwucHJvY2VzcztcbnZhciAkZmV0Y2ggPSBnZXRCdWlsdEluKCdmZXRjaCcpO1xudmFyIG5ld1Byb21pc2VDYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZjtcbnZhciBuZXdHZW5lcmljUHJvbWlzZUNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eTtcbnZhciBESVNQQVRDSF9FVkVOVCA9ICEhKGRvY3VtZW50ICYmIGRvY3VtZW50LmNyZWF0ZUV2ZW50ICYmIGdsb2JhbC5kaXNwYXRjaEV2ZW50KTtcbnZhciBOQVRJVkVfUkVKRUNUSU9OX0VWRU5UID0gdHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCA9PSAnZnVuY3Rpb24nO1xudmFyIFVOSEFORExFRF9SRUpFQ1RJT04gPSAndW5oYW5kbGVkcmVqZWN0aW9uJztcbnZhciBSRUpFQ1RJT05fSEFORExFRCA9ICdyZWplY3Rpb25oYW5kbGVkJztcbnZhciBQRU5ESU5HID0gMDtcbnZhciBGVUxGSUxMRUQgPSAxO1xudmFyIFJFSkVDVEVEID0gMjtcbnZhciBIQU5ETEVEID0gMTtcbnZhciBVTkhBTkRMRUQgPSAyO1xudmFyIEludGVybmFsLCBPd25Qcm9taXNlQ2FwYWJpbGl0eSwgUHJvbWlzZVdyYXBwZXIsIG5hdGl2ZVRoZW47XG5cbnZhciBGT1JDRUQgPSBpc0ZvcmNlZChQUk9NSVNFLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBHTE9CQUxfQ09SRV9KU19QUk9NSVNFID0gaW5zcGVjdFNvdXJjZShQcm9taXNlQ29uc3RydWN0b3IpICE9PSBTdHJpbmcoUHJvbWlzZUNvbnN0cnVjdG9yKTtcbiAgaWYgKCFHTE9CQUxfQ09SRV9KU19QUk9NSVNFKSB7XG4gICAgLy8gVjggNi42IChOb2RlIDEwIGFuZCBDaHJvbWUgNjYpIGhhdmUgYSBidWcgd2l0aCByZXNvbHZpbmcgY3VzdG9tIHRoZW5hYmxlc1xuICAgIC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTgzMDU2NVxuICAgIC8vIFdlIGNhbid0IGRldGVjdCBpdCBzeW5jaHJvbm91c2x5LCBzbyBqdXN0IGNoZWNrIHZlcnNpb25zXG4gICAgaWYgKFY4X1ZFUlNJT04gPT09IDY2KSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBVbmhhbmRsZWQgcmVqZWN0aW9ucyB0cmFja2luZyBzdXBwb3J0LCBOb2RlSlMgUHJvbWlzZSB3aXRob3V0IGl0IGZhaWxzIEBAc3BlY2llcyB0ZXN0XG4gICAgaWYgKCFJU19OT0RFICYmICFOQVRJVkVfUkVKRUNUSU9OX0VWRU5UKSByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBXZSBuZWVkIFByb21pc2UjZmluYWxseSBpbiB0aGUgcHVyZSB2ZXJzaW9uIGZvciBwcmV2ZW50aW5nIHByb3RvdHlwZSBwb2xsdXRpb25cbiAgaWYgKElTX1BVUkUgJiYgIVByb21pc2VDb25zdHJ1Y3Rvci5wcm90b3R5cGVbJ2ZpbmFsbHknXSkgcmV0dXJuIHRydWU7XG4gIC8vIFdlIGNhbid0IHVzZSBAQHNwZWNpZXMgZmVhdHVyZSBkZXRlY3Rpb24gaW4gVjggc2luY2UgaXQgY2F1c2VzXG4gIC8vIGRlb3B0aW1pemF0aW9uIGFuZCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc5XG4gIGlmIChWOF9WRVJTSU9OID49IDUxICYmIC9uYXRpdmUgY29kZS8udGVzdChQcm9taXNlQ29uc3RydWN0b3IpKSByZXR1cm4gZmFsc2U7XG4gIC8vIERldGVjdCBjb3JyZWN0bmVzcyBvZiBzdWJjbGFzc2luZyB3aXRoIEBAc3BlY2llcyBzdXBwb3J0XG4gIHZhciBwcm9taXNlID0gUHJvbWlzZUNvbnN0cnVjdG9yLnJlc29sdmUoMSk7XG4gIHZhciBGYWtlUHJvbWlzZSA9IGZ1bmN0aW9uIChleGVjKSB7XG4gICAgZXhlYyhmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0sIGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSk7XG4gIH07XG4gIHZhciBjb25zdHJ1Y3RvciA9IHByb21pc2UuY29uc3RydWN0b3IgPSB7fTtcbiAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBGYWtlUHJvbWlzZTtcbiAgcmV0dXJuICEocHJvbWlzZS50aGVuKGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSkgaW5zdGFuY2VvZiBGYWtlUHJvbWlzZSk7XG59KTtcblxudmFyIElOQ09SUkVDVF9JVEVSQVRJT04gPSBGT1JDRUQgfHwgIWNoZWNrQ29ycmVjdG5lc3NPZkl0ZXJhdGlvbihmdW5jdGlvbiAoaXRlcmFibGUpIHtcbiAgUHJvbWlzZUNvbnN0cnVjdG9yLmFsbChpdGVyYWJsZSlbJ2NhdGNoJ10oZnVuY3Rpb24gKCkgeyAvKiBlbXB0eSAqLyB9KTtcbn0pO1xuXG4vLyBoZWxwZXJzXG52YXIgaXNUaGVuYWJsZSA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgdGhlbjtcbiAgcmV0dXJuIGlzT2JqZWN0KGl0KSAmJiB0eXBlb2YgKHRoZW4gPSBpdC50aGVuKSA9PSAnZnVuY3Rpb24nID8gdGhlbiA6IGZhbHNlO1xufTtcblxudmFyIG5vdGlmeSA9IGZ1bmN0aW9uIChzdGF0ZSwgaXNSZWplY3QpIHtcbiAgaWYgKHN0YXRlLm5vdGlmaWVkKSByZXR1cm47XG4gIHN0YXRlLm5vdGlmaWVkID0gdHJ1ZTtcbiAgdmFyIGNoYWluID0gc3RhdGUucmVhY3Rpb25zO1xuICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgIHZhciB2YWx1ZSA9IHN0YXRlLnZhbHVlO1xuICAgIHZhciBvayA9IHN0YXRlLnN0YXRlID09IEZVTEZJTExFRDtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIC8vIHZhcmlhYmxlIGxlbmd0aCAtIGNhbid0IHVzZSBmb3JFYWNoXG4gICAgd2hpbGUgKGNoYWluLmxlbmd0aCA+IGluZGV4KSB7XG4gICAgICB2YXIgcmVhY3Rpb24gPSBjaGFpbltpbmRleCsrXTtcbiAgICAgIHZhciBoYW5kbGVyID0gb2sgPyByZWFjdGlvbi5vayA6IHJlYWN0aW9uLmZhaWw7XG4gICAgICB2YXIgcmVzb2x2ZSA9IHJlYWN0aW9uLnJlc29sdmU7XG4gICAgICB2YXIgcmVqZWN0ID0gcmVhY3Rpb24ucmVqZWN0O1xuICAgICAgdmFyIGRvbWFpbiA9IHJlYWN0aW9uLmRvbWFpbjtcbiAgICAgIHZhciByZXN1bHQsIHRoZW4sIGV4aXRlZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChoYW5kbGVyKSB7XG4gICAgICAgICAgaWYgKCFvaykge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnJlamVjdGlvbiA9PT0gVU5IQU5ETEVEKSBvbkhhbmRsZVVuaGFuZGxlZChzdGF0ZSk7XG4gICAgICAgICAgICBzdGF0ZS5yZWplY3Rpb24gPSBIQU5ETEVEO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGFuZGxlciA9PT0gdHJ1ZSkgcmVzdWx0ID0gdmFsdWU7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAoZG9tYWluKSBkb21haW4uZW50ZXIoKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZXIodmFsdWUpOyAvLyBjYW4gdGhyb3dcbiAgICAgICAgICAgIGlmIChkb21haW4pIHtcbiAgICAgICAgICAgICAgZG9tYWluLmV4aXQoKTtcbiAgICAgICAgICAgICAgZXhpdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJlc3VsdCA9PT0gcmVhY3Rpb24ucHJvbWlzZSkge1xuICAgICAgICAgICAgcmVqZWN0KFR5cGVFcnJvcignUHJvbWlzZS1jaGFpbiBjeWNsZScpKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRoZW4gPSBpc1RoZW5hYmxlKHJlc3VsdCkpIHtcbiAgICAgICAgICAgIHRoZW4uY2FsbChyZXN1bHQsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgICAgfSBlbHNlIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSBlbHNlIHJlamVjdCh2YWx1ZSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoZG9tYWluICYmICFleGl0ZWQpIGRvbWFpbi5leGl0KCk7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICAgIHN0YXRlLnJlYWN0aW9ucyA9IFtdO1xuICAgIHN0YXRlLm5vdGlmaWVkID0gZmFsc2U7XG4gICAgaWYgKGlzUmVqZWN0ICYmICFzdGF0ZS5yZWplY3Rpb24pIG9uVW5oYW5kbGVkKHN0YXRlKTtcbiAgfSk7XG59O1xuXG52YXIgZGlzcGF0Y2hFdmVudCA9IGZ1bmN0aW9uIChuYW1lLCBwcm9taXNlLCByZWFzb24pIHtcbiAgdmFyIGV2ZW50LCBoYW5kbGVyO1xuICBpZiAoRElTUEFUQ0hfRVZFTlQpIHtcbiAgICBldmVudCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuICAgIGV2ZW50LnByb21pc2UgPSBwcm9taXNlO1xuICAgIGV2ZW50LnJlYXNvbiA9IHJlYXNvbjtcbiAgICBldmVudC5pbml0RXZlbnQobmFtZSwgZmFsc2UsIHRydWUpO1xuICAgIGdsb2JhbC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgfSBlbHNlIGV2ZW50ID0geyBwcm9taXNlOiBwcm9taXNlLCByZWFzb246IHJlYXNvbiB9O1xuICBpZiAoIU5BVElWRV9SRUpFQ1RJT05fRVZFTlQgJiYgKGhhbmRsZXIgPSBnbG9iYWxbJ29uJyArIG5hbWVdKSkgaGFuZGxlcihldmVudCk7XG4gIGVsc2UgaWYgKG5hbWUgPT09IFVOSEFORExFRF9SRUpFQ1RJT04pIGhvc3RSZXBvcnRFcnJvcnMoJ1VuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvbicsIHJlYXNvbik7XG59O1xuXG52YXIgb25VbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgdGFzay5jYWxsKGdsb2JhbCwgZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gc3RhdGUuZmFjYWRlO1xuICAgIHZhciB2YWx1ZSA9IHN0YXRlLnZhbHVlO1xuICAgIHZhciBJU19VTkhBTkRMRUQgPSBpc1VuaGFuZGxlZChzdGF0ZSk7XG4gICAgdmFyIHJlc3VsdDtcbiAgICBpZiAoSVNfVU5IQU5ETEVEKSB7XG4gICAgICByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKElTX05PREUpIHtcbiAgICAgICAgICBwcm9jZXNzLmVtaXQoJ3VuaGFuZGxlZFJlamVjdGlvbicsIHZhbHVlLCBwcm9taXNlKTtcbiAgICAgICAgfSBlbHNlIGRpc3BhdGNoRXZlbnQoVU5IQU5ETEVEX1JFSkVDVElPTiwgcHJvbWlzZSwgdmFsdWUpO1xuICAgICAgfSk7XG4gICAgICAvLyBCcm93c2VycyBzaG91bGQgbm90IHRyaWdnZXIgYHJlamVjdGlvbkhhbmRsZWRgIGV2ZW50IGlmIGl0IHdhcyBoYW5kbGVkIGhlcmUsIE5vZGVKUyAtIHNob3VsZFxuICAgICAgc3RhdGUucmVqZWN0aW9uID0gSVNfTk9ERSB8fCBpc1VuaGFuZGxlZChzdGF0ZSkgPyBVTkhBTkRMRUQgOiBIQU5ETEVEO1xuICAgICAgaWYgKHJlc3VsdC5lcnJvcikgdGhyb3cgcmVzdWx0LnZhbHVlO1xuICAgIH1cbiAgfSk7XG59O1xuXG52YXIgaXNVbmhhbmRsZWQgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgcmV0dXJuIHN0YXRlLnJlamVjdGlvbiAhPT0gSEFORExFRCAmJiAhc3RhdGUucGFyZW50O1xufTtcblxudmFyIG9uSGFuZGxlVW5oYW5kbGVkID0gZnVuY3Rpb24gKHN0YXRlKSB7XG4gIHRhc2suY2FsbChnbG9iYWwsIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcHJvbWlzZSA9IHN0YXRlLmZhY2FkZTtcbiAgICBpZiAoSVNfTk9ERSkge1xuICAgICAgcHJvY2Vzcy5lbWl0KCdyZWplY3Rpb25IYW5kbGVkJywgcHJvbWlzZSk7XG4gICAgfSBlbHNlIGRpc3BhdGNoRXZlbnQoUkVKRUNUSU9OX0hBTkRMRUQsIHByb21pc2UsIHN0YXRlLnZhbHVlKTtcbiAgfSk7XG59O1xuXG52YXIgYmluZCA9IGZ1bmN0aW9uIChmbiwgc3RhdGUsIHVud3JhcCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgZm4oc3RhdGUsIHZhbHVlLCB1bndyYXApO1xuICB9O1xufTtcblxudmFyIGludGVybmFsUmVqZWN0ID0gZnVuY3Rpb24gKHN0YXRlLCB2YWx1ZSwgdW53cmFwKSB7XG4gIGlmIChzdGF0ZS5kb25lKSByZXR1cm47XG4gIHN0YXRlLmRvbmUgPSB0cnVlO1xuICBpZiAodW53cmFwKSBzdGF0ZSA9IHVud3JhcDtcbiAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgc3RhdGUuc3RhdGUgPSBSRUpFQ1RFRDtcbiAgbm90aWZ5KHN0YXRlLCB0cnVlKTtcbn07XG5cbnZhciBpbnRlcm5hbFJlc29sdmUgPSBmdW5jdGlvbiAoc3RhdGUsIHZhbHVlLCB1bndyYXApIHtcbiAgaWYgKHN0YXRlLmRvbmUpIHJldHVybjtcbiAgc3RhdGUuZG9uZSA9IHRydWU7XG4gIGlmICh1bndyYXApIHN0YXRlID0gdW53cmFwO1xuICB0cnkge1xuICAgIGlmIChzdGF0ZS5mYWNhZGUgPT09IHZhbHVlKSB0aHJvdyBUeXBlRXJyb3IoXCJQcm9taXNlIGNhbid0IGJlIHJlc29sdmVkIGl0c2VsZlwiKTtcbiAgICB2YXIgdGhlbiA9IGlzVGhlbmFibGUodmFsdWUpO1xuICAgIGlmICh0aGVuKSB7XG4gICAgICBtaWNyb3Rhc2soZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgd3JhcHBlciA9IHsgZG9uZTogZmFsc2UgfTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGVuLmNhbGwodmFsdWUsXG4gICAgICAgICAgICBiaW5kKGludGVybmFsUmVzb2x2ZSwgd3JhcHBlciwgc3RhdGUpLFxuICAgICAgICAgICAgYmluZChpbnRlcm5hbFJlamVjdCwgd3JhcHBlciwgc3RhdGUpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBpbnRlcm5hbFJlamVjdCh3cmFwcGVyLCBlcnJvciwgc3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUudmFsdWUgPSB2YWx1ZTtcbiAgICAgIHN0YXRlLnN0YXRlID0gRlVMRklMTEVEO1xuICAgICAgbm90aWZ5KHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGludGVybmFsUmVqZWN0KHsgZG9uZTogZmFsc2UgfSwgZXJyb3IsIHN0YXRlKTtcbiAgfVxufTtcblxuLy8gY29uc3RydWN0b3IgcG9seWZpbGxcbmlmIChGT1JDRUQpIHtcbiAgLy8gMjUuNC4zLjEgUHJvbWlzZShleGVjdXRvcilcbiAgUHJvbWlzZUNvbnN0cnVjdG9yID0gZnVuY3Rpb24gUHJvbWlzZShleGVjdXRvcikge1xuICAgIGFuSW5zdGFuY2UodGhpcywgUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFKTtcbiAgICBhRnVuY3Rpb24oZXhlY3V0b3IpO1xuICAgIEludGVybmFsLmNhbGwodGhpcyk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZSh0aGlzKTtcbiAgICB0cnkge1xuICAgICAgZXhlY3V0b3IoYmluZChpbnRlcm5hbFJlc29sdmUsIHN0YXRlKSwgYmluZChpbnRlcm5hbFJlamVjdCwgc3RhdGUpKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaW50ZXJuYWxSZWplY3Qoc3RhdGUsIGVycm9yKTtcbiAgICB9XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBJbnRlcm5hbCA9IGZ1bmN0aW9uIFByb21pc2UoZXhlY3V0b3IpIHtcbiAgICBzZXRJbnRlcm5hbFN0YXRlKHRoaXMsIHtcbiAgICAgIHR5cGU6IFBST01JU0UsXG4gICAgICBkb25lOiBmYWxzZSxcbiAgICAgIG5vdGlmaWVkOiBmYWxzZSxcbiAgICAgIHBhcmVudDogZmFsc2UsXG4gICAgICByZWFjdGlvbnM6IFtdLFxuICAgICAgcmVqZWN0aW9uOiBmYWxzZSxcbiAgICAgIHN0YXRlOiBQRU5ESU5HLFxuICAgICAgdmFsdWU6IHVuZGVmaW5lZFxuICAgIH0pO1xuICB9O1xuICBJbnRlcm5hbC5wcm90b3R5cGUgPSByZWRlZmluZUFsbChQcm9taXNlQ29uc3RydWN0b3IucHJvdG90eXBlLCB7XG4gICAgLy8gYFByb21pc2UucHJvdG90eXBlLnRoZW5gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUudGhlblxuICAgIHRoZW46IGZ1bmN0aW9uIHRoZW4ob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgICAgIHZhciBzdGF0ZSA9IGdldEludGVybmFsUHJvbWlzZVN0YXRlKHRoaXMpO1xuICAgICAgdmFyIHJlYWN0aW9uID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIFByb21pc2VDb25zdHJ1Y3RvcikpO1xuICAgICAgcmVhY3Rpb24ub2sgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVkIDogdHJ1ZTtcbiAgICAgIHJlYWN0aW9uLmZhaWwgPSB0eXBlb2Ygb25SZWplY3RlZCA9PSAnZnVuY3Rpb24nICYmIG9uUmVqZWN0ZWQ7XG4gICAgICByZWFjdGlvbi5kb21haW4gPSBJU19OT0RFID8gcHJvY2Vzcy5kb21haW4gOiB1bmRlZmluZWQ7XG4gICAgICBzdGF0ZS5wYXJlbnQgPSB0cnVlO1xuICAgICAgc3RhdGUucmVhY3Rpb25zLnB1c2gocmVhY3Rpb24pO1xuICAgICAgaWYgKHN0YXRlLnN0YXRlICE9IFBFTkRJTkcpIG5vdGlmeShzdGF0ZSwgZmFsc2UpO1xuICAgICAgcmV0dXJuIHJlYWN0aW9uLnByb21pc2U7XG4gICAgfSxcbiAgICAvLyBgUHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuY2F0Y2hcbiAgICAnY2F0Y2gnOiBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHRoaXMudGhlbih1bmRlZmluZWQsIG9uUmVqZWN0ZWQpO1xuICAgIH1cbiAgfSk7XG4gIE93blByb21pc2VDYXBhYmlsaXR5ID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBwcm9taXNlID0gbmV3IEludGVybmFsKCk7XG4gICAgdmFyIHN0YXRlID0gZ2V0SW50ZXJuYWxTdGF0ZShwcm9taXNlKTtcbiAgICB0aGlzLnByb21pc2UgPSBwcm9taXNlO1xuICAgIHRoaXMucmVzb2x2ZSA9IGJpbmQoaW50ZXJuYWxSZXNvbHZlLCBzdGF0ZSk7XG4gICAgdGhpcy5yZWplY3QgPSBiaW5kKGludGVybmFsUmVqZWN0LCBzdGF0ZSk7XG4gIH07XG4gIG5ld1Byb21pc2VDYXBhYmlsaXR5TW9kdWxlLmYgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSA9IGZ1bmN0aW9uIChDKSB7XG4gICAgcmV0dXJuIEMgPT09IFByb21pc2VDb25zdHJ1Y3RvciB8fCBDID09PSBQcm9taXNlV3JhcHBlclxuICAgICAgPyBuZXcgT3duUHJvbWlzZUNhcGFiaWxpdHkoQylcbiAgICAgIDogbmV3R2VuZXJpY1Byb21pc2VDYXBhYmlsaXR5KEMpO1xuICB9O1xuXG4gIGlmICghSVNfUFVSRSAmJiB0eXBlb2YgTmF0aXZlUHJvbWlzZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgbmF0aXZlVGhlbiA9IE5hdGl2ZVByb21pc2UucHJvdG90eXBlLnRoZW47XG5cbiAgICAvLyB3cmFwIG5hdGl2ZSBQcm9taXNlI3RoZW4gZm9yIG5hdGl2ZSBhc3luYyBmdW5jdGlvbnNcbiAgICByZWRlZmluZShOYXRpdmVQcm9taXNlLnByb3RvdHlwZSwgJ3RoZW4nLCBmdW5jdGlvbiB0aGVuKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gICAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2VDb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIG5hdGl2ZVRoZW4uY2FsbCh0aGF0LCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSkudGhlbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCk7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY0MFxuICAgIH0sIHsgdW5zYWZlOiB0cnVlIH0pO1xuXG4gICAgLy8gd3JhcCBmZXRjaCByZXN1bHRcbiAgICBpZiAodHlwZW9mICRmZXRjaCA9PSAnZnVuY3Rpb24nKSAkKHsgZ2xvYmFsOiB0cnVlLCBlbnVtZXJhYmxlOiB0cnVlLCBmb3JjZWQ6IHRydWUgfSwge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgICBmZXRjaDogZnVuY3Rpb24gZmV0Y2goaW5wdXQgLyogLCBpbml0ICovKSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShQcm9taXNlQ29uc3RydWN0b3IsICRmZXRjaC5hcHBseShnbG9iYWwsIGFyZ3VtZW50cykpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbiQoeyBnbG9iYWw6IHRydWUsIHdyYXA6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgUHJvbWlzZTogUHJvbWlzZUNvbnN0cnVjdG9yXG59KTtcblxuc2V0VG9TdHJpbmdUYWcoUHJvbWlzZUNvbnN0cnVjdG9yLCBQUk9NSVNFLCBmYWxzZSwgdHJ1ZSk7XG5zZXRTcGVjaWVzKFBST01JU0UpO1xuXG5Qcm9taXNlV3JhcHBlciA9IGdldEJ1aWx0SW4oUFJPTUlTRSk7XG5cbi8vIHN0YXRpY3NcbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogRk9SQ0VEIH0sIHtcbiAgLy8gYFByb21pc2UucmVqZWN0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlamVjdFxuICByZWplY3Q6IGZ1bmN0aW9uIHJlamVjdChyKSB7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTtcbiAgICBjYXBhYmlsaXR5LnJlamVjdC5jYWxsKHVuZGVmaW5lZCwgcik7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG5cbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogSVNfUFVSRSB8fCBGT1JDRUQgfSwge1xuICAvLyBgUHJvbWlzZS5yZXNvbHZlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLnJlc29sdmVcbiAgcmVzb2x2ZTogZnVuY3Rpb24gcmVzb2x2ZSh4KSB7XG4gICAgcmV0dXJuIHByb21pc2VSZXNvbHZlKElTX1BVUkUgJiYgdGhpcyA9PT0gUHJvbWlzZVdyYXBwZXIgPyBQcm9taXNlQ29uc3RydWN0b3IgOiB0aGlzLCB4KTtcbiAgfVxufSk7XG5cbiQoeyB0YXJnZXQ6IFBST01JU0UsIHN0YXQ6IHRydWUsIGZvcmNlZDogSU5DT1JSRUNUX0lURVJBVElPTiB9LCB7XG4gIC8vIGBQcm9taXNlLmFsbGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxcbiAgYWxsOiBmdW5jdGlvbiBhbGwoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eShDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRwcm9taXNlUmVzb2x2ZSA9IGFGdW5jdGlvbihDLnJlc29sdmUpO1xuICAgICAgdmFyIHZhbHVlcyA9IFtdO1xuICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgdmFyIHJlbWFpbmluZyA9IDE7XG4gICAgICBpdGVyYXRlKGl0ZXJhYmxlLCBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgICAgICB2YXIgaW5kZXggPSBjb3VudGVyKys7XG4gICAgICAgIHZhciBhbHJlYWR5Q2FsbGVkID0gZmFsc2U7XG4gICAgICAgIHZhbHVlcy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICAkcHJvbWlzZVJlc29sdmUuY2FsbChDLCBwcm9taXNlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgIGlmIChhbHJlYWR5Q2FsbGVkKSByZXR1cm47XG4gICAgICAgICAgYWxyZWFkeUNhbGxlZCA9IHRydWU7XG4gICAgICAgICAgdmFsdWVzW2luZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgIH0pO1xuICAgICAgLS1yZW1haW5pbmcgfHwgcmVzb2x2ZSh2YWx1ZXMpO1xuICAgIH0pO1xuICAgIGlmIChyZXN1bHQuZXJyb3IpIHJlamVjdChyZXN1bHQudmFsdWUpO1xuICAgIHJldHVybiBjYXBhYmlsaXR5LnByb21pc2U7XG4gIH0sXG4gIC8vIGBQcm9taXNlLnJhY2VgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXByb21pc2UucmFjZVxuICByYWNlOiBmdW5jdGlvbiByYWNlKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHkoQyk7XG4gICAgdmFyIHJlamVjdCA9IGNhcGFiaWxpdHkucmVqZWN0O1xuICAgIHZhciByZXN1bHQgPSBwZXJmb3JtKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkcHJvbWlzZVJlc29sdmUgPSBhRnVuY3Rpb24oQy5yZXNvbHZlKTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgICRwcm9taXNlUmVzb2x2ZS5jYWxsKEMsIHByb21pc2UpLnRoZW4oY2FwYWJpbGl0eS5yZXNvbHZlLCByZWplY3QpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCJ2YXIgcmVkZWZpbmUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVkZWZpbmUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodGFyZ2V0LCBzcmMsIG9wdGlvbnMpIHtcbiAgZm9yICh2YXIga2V5IGluIHNyYykge1xuICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMudW5zYWZlICYmIHRhcmdldFtrZXldKSB0YXJnZXRba2V5XSA9IHNyY1trZXldO1xuICAgIGVsc2UgcmVkZWZpbmUodGFyZ2V0LCBrZXksIHNyY1trZXldLCBvcHRpb25zKTtcbiAgfSByZXR1cm4gdGFyZ2V0O1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tc3RyaW5nLXRhZy1zdXBwb3J0Jyk7XG52YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mJyk7XG5cbi8vIGBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nYCBtZXRob2QgaW1wbGVtZW50YXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZ1xubW9kdWxlLmV4cG9ydHMgPSBUT19TVFJJTkdfVEFHX1NVUFBPUlQgPyB7fS50b1N0cmluZyA6IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gJ1tvYmplY3QgJyArIGNsYXNzb2YodGhpcykgKyAnXSc7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgZGVmaW5lUHJvcGVydHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWRlZmluZS1wcm9wZXJ0eScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbnZhciBTUEVDSUVTID0gd2VsbEtub3duU3ltYm9sKCdzcGVjaWVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKENPTlNUUlVDVE9SX05BTUUpIHtcbiAgdmFyIENvbnN0cnVjdG9yID0gZ2V0QnVpbHRJbihDT05TVFJVQ1RPUl9OQU1FKTtcbiAgdmFyIGRlZmluZVByb3BlcnR5ID0gZGVmaW5lUHJvcGVydHlNb2R1bGUuZjtcblxuICBpZiAoREVTQ1JJUFRPUlMgJiYgQ29uc3RydWN0b3IgJiYgIUNvbnN0cnVjdG9yW1NQRUNJRVNdKSB7XG4gICAgZGVmaW5lUHJvcGVydHkoQ29uc3RydWN0b3IsIFNQRUNJRVMsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfVxuICAgIH0pO1xuICB9XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIENvbnN0cnVjdG9yLCBuYW1lKSB7XG4gIGlmICghKGl0IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7XG4gICAgdGhyb3cgVHlwZUVycm9yKCdJbmNvcnJlY3QgJyArIChuYW1lID8gbmFtZSArICcgJyA6ICcnKSArICdpbnZvY2F0aW9uJyk7XG4gIH0gcmV0dXJuIGl0O1xufTtcbiIsInZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIElURVJBVE9SID0gd2VsbEtub3duU3ltYm9sKCdpdGVyYXRvcicpO1xudmFyIFNBRkVfQ0xPU0lORyA9IGZhbHNlO1xuXG50cnkge1xuICB2YXIgY2FsbGVkID0gMDtcbiAgdmFyIGl0ZXJhdG9yV2l0aFJldHVybiA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBkb25lOiAhIWNhbGxlZCsrIH07XG4gICAgfSxcbiAgICAncmV0dXJuJzogZnVuY3Rpb24gKCkge1xuICAgICAgU0FGRV9DTE9TSU5HID0gdHJ1ZTtcbiAgICB9XG4gIH07XG4gIGl0ZXJhdG9yV2l0aFJldHVybltJVEVSQVRPUl0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10aHJvdy1saXRlcmFsXG4gIEFycmF5LmZyb20oaXRlcmF0b3JXaXRoUmV0dXJuLCBmdW5jdGlvbiAoKSB7IHRocm93IDI7IH0pO1xufSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChleGVjLCBTS0lQX0NMT1NJTkcpIHtcbiAgaWYgKCFTS0lQX0NMT1NJTkcgJiYgIVNBRkVfQ0xPU0lORykgcmV0dXJuIGZhbHNlO1xuICB2YXIgSVRFUkFUSU9OX1NVUFBPUlQgPSBmYWxzZTtcbiAgdHJ5IHtcbiAgICB2YXIgb2JqZWN0ID0ge307XG4gICAgb2JqZWN0W0lURVJBVE9SXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4geyBkb25lOiBJVEVSQVRJT05fU1VQUE9SVCA9IHRydWUgfTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuICAgIGV4ZWMob2JqZWN0KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHsgLyogZW1wdHkgKi8gfVxuICByZXR1cm4gSVRFUkFUSU9OX1NVUFBPUlQ7XG59O1xuIiwidmFyIGdsb2JhbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9nbG9iYWwnKTtcbnZhciBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWdldC1vd24tcHJvcGVydHktZGVzY3JpcHRvcicpLmY7XG52YXIgbWFjcm90YXNrID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3Rhc2snKS5zZXQ7XG52YXIgSVNfSU9TID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1pb3MnKTtcbnZhciBJU19XRUJPU19XRUJLSVQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLXdlYm9zLXdlYmtpdCcpO1xudmFyIElTX05PREUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLWlzLW5vZGUnKTtcblxudmFyIE11dGF0aW9uT2JzZXJ2ZXIgPSBnbG9iYWwuTXV0YXRpb25PYnNlcnZlciB8fCBnbG9iYWwuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcbnZhciBkb2N1bWVudCA9IGdsb2JhbC5kb2N1bWVudDtcbnZhciBwcm9jZXNzID0gZ2xvYmFsLnByb2Nlc3M7XG52YXIgUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuLy8gTm9kZS5qcyAxMSBzaG93cyBFeHBlcmltZW50YWxXYXJuaW5nIG9uIGdldHRpbmcgYHF1ZXVlTWljcm90YXNrYFxudmFyIHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvciA9IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWwsICdxdWV1ZU1pY3JvdGFzaycpO1xudmFyIHF1ZXVlTWljcm90YXNrID0gcXVldWVNaWNyb3Rhc2tEZXNjcmlwdG9yICYmIHF1ZXVlTWljcm90YXNrRGVzY3JpcHRvci52YWx1ZTtcblxudmFyIGZsdXNoLCBoZWFkLCBsYXN0LCBub3RpZnksIHRvZ2dsZSwgbm9kZSwgcHJvbWlzZSwgdGhlbjtcblxuLy8gbW9kZXJuIGVuZ2luZXMgaGF2ZSBxdWV1ZU1pY3JvdGFzayBtZXRob2RcbmlmICghcXVldWVNaWNyb3Rhc2spIHtcbiAgZmx1c2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHBhcmVudCwgZm47XG4gICAgaWYgKElTX05PREUgJiYgKHBhcmVudCA9IHByb2Nlc3MuZG9tYWluKSkgcGFyZW50LmV4aXQoKTtcbiAgICB3aGlsZSAoaGVhZCkge1xuICAgICAgZm4gPSBoZWFkLmZuO1xuICAgICAgaGVhZCA9IGhlYWQubmV4dDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZuKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoaGVhZCkgbm90aWZ5KCk7XG4gICAgICAgIGVsc2UgbGFzdCA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSBsYXN0ID0gdW5kZWZpbmVkO1xuICAgIGlmIChwYXJlbnQpIHBhcmVudC5lbnRlcigpO1xuICB9O1xuXG4gIC8vIGJyb3dzZXJzIHdpdGggTXV0YXRpb25PYnNlcnZlciwgZXhjZXB0IGlPUyAtIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy8zMzlcbiAgLy8gYWxzbyBleGNlcHQgV2ViT1MgV2Via2l0IGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84OThcbiAgaWYgKCFJU19JT1MgJiYgIUlTX05PREUgJiYgIUlTX1dFQk9TX1dFQktJVCAmJiBNdXRhdGlvbk9ic2VydmVyICYmIGRvY3VtZW50KSB7XG4gICAgdG9nZ2xlID0gdHJ1ZTtcbiAgICBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJycpO1xuICAgIG5ldyBNdXRhdGlvbk9ic2VydmVyKGZsdXNoKS5vYnNlcnZlKG5vZGUsIHsgY2hhcmFjdGVyRGF0YTogdHJ1ZSB9KTtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBub2RlLmRhdGEgPSB0b2dnbGUgPSAhdG9nZ2xlO1xuICAgIH07XG4gIC8vIGVudmlyb25tZW50cyB3aXRoIG1heWJlIG5vbi1jb21wbGV0ZWx5IGNvcnJlY3QsIGJ1dCBleGlzdGVudCBQcm9taXNlXG4gIH0gZWxzZSBpZiAoUHJvbWlzZSAmJiBQcm9taXNlLnJlc29sdmUpIHtcbiAgICAvLyBQcm9taXNlLnJlc29sdmUgd2l0aG91dCBhbiBhcmd1bWVudCB0aHJvd3MgYW4gZXJyb3IgaW4gTEcgV2ViT1MgMlxuICAgIHByb21pc2UgPSBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB0aGVuID0gcHJvbWlzZS50aGVuO1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRoZW4uY2FsbChwcm9taXNlLCBmbHVzaCk7XG4gICAgfTtcbiAgLy8gTm9kZS5qcyB3aXRob3V0IHByb21pc2VzXG4gIH0gZWxzZSBpZiAoSVNfTk9ERSkge1xuICAgIG5vdGlmeSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHByb2Nlc3MubmV4dFRpY2soZmx1c2gpO1xuICAgIH07XG4gIC8vIGZvciBvdGhlciBlbnZpcm9ubWVudHMgLSBtYWNyb3Rhc2sgYmFzZWQgb246XG4gIC8vIC0gc2V0SW1tZWRpYXRlXG4gIC8vIC0gTWVzc2FnZUNoYW5uZWxcbiAgLy8gLSB3aW5kb3cucG9zdE1lc3NhZ1xuICAvLyAtIG9ucmVhZHlzdGF0ZWNoYW5nZVxuICAvLyAtIHNldFRpbWVvdXRcbiAgfSBlbHNlIHtcbiAgICBub3RpZnkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBzdHJhbmdlIElFICsgd2VicGFjayBkZXYgc2VydmVyIGJ1ZyAtIHVzZSAuY2FsbChnbG9iYWwpXG4gICAgICBtYWNyb3Rhc2suY2FsbChnbG9iYWwsIGZsdXNoKTtcbiAgICB9O1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcXVldWVNaWNyb3Rhc2sgfHwgZnVuY3Rpb24gKGZuKSB7XG4gIHZhciB0YXNrID0geyBmbjogZm4sIG5leHQ6IHVuZGVmaW5lZCB9O1xuICBpZiAobGFzdCkgbGFzdC5uZXh0ID0gdGFzaztcbiAgaWYgKCFoZWFkKSB7XG4gICAgaGVhZCA9IHRhc2s7XG4gICAgbm90aWZ5KCk7XG4gIH0gbGFzdCA9IHRhc2s7XG59O1xuIiwidmFyIHVzZXJBZ2VudCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdXNlci1hZ2VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IC93ZWIwcyg/IS4qY2hyb21lKS9pLnRlc3QodXNlckFnZW50KTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGEsIGIpIHtcbiAgdmFyIGNvbnNvbGUgPSBnbG9iYWwuY29uc29sZTtcbiAgaWYgKGNvbnNvbGUgJiYgY29uc29sZS5lcnJvcikge1xuICAgIGFyZ3VtZW50cy5sZW5ndGggPT09IDEgPyBjb25zb2xlLmVycm9yKGEpIDogY29uc29sZS5lcnJvcihhLCBiKTtcbiAgfVxufTtcbiIsInZhciBnbG9iYWwgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2xvYmFsJyk7XG52YXIgaW5zcGVjdFNvdXJjZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnNwZWN0LXNvdXJjZScpO1xuXG52YXIgV2Vha01hcCA9IGdsb2JhbC5XZWFrTWFwO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVvZiBXZWFrTWFwID09PSAnZnVuY3Rpb24nICYmIC9uYXRpdmUgY29kZS8udGVzdChpbnNwZWN0U291cmNlKFdlYWtNYXApKTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWZ1bmN0aW9uJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG4vLyBgUHJvbWlzZS5hbGxTZXR0bGVkYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5hbGxzZXR0bGVkXG4kKHsgdGFyZ2V0OiAnUHJvbWlzZScsIHN0YXQ6IHRydWUgfSwge1xuICBhbGxTZXR0bGVkOiBmdW5jdGlvbiBhbGxTZXR0bGVkKGl0ZXJhYmxlKSB7XG4gICAgdmFyIEMgPSB0aGlzO1xuICAgIHZhciBjYXBhYmlsaXR5ID0gbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUuZihDKTtcbiAgICB2YXIgcmVzb2x2ZSA9IGNhcGFiaWxpdHkucmVzb2x2ZTtcbiAgICB2YXIgcmVqZWN0ID0gY2FwYWJpbGl0eS5yZWplY3Q7XG4gICAgdmFyIHJlc3VsdCA9IHBlcmZvcm0oZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIHByb21pc2VSZXNvbHZlID0gYUZ1bmN0aW9uKEMucmVzb2x2ZSk7XG4gICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICB2YXIgY291bnRlciA9IDA7XG4gICAgICB2YXIgcmVtYWluaW5nID0gMTtcbiAgICAgIGl0ZXJhdGUoaXRlcmFibGUsIGZ1bmN0aW9uIChwcm9taXNlKSB7XG4gICAgICAgIHZhciBpbmRleCA9IGNvdW50ZXIrKztcbiAgICAgICAgdmFyIGFscmVhZHlDYWxsZWQgPSBmYWxzZTtcbiAgICAgICAgdmFsdWVzLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgcmVtYWluaW5nKys7XG4gICAgICAgIHByb21pc2VSZXNvbHZlLmNhbGwoQywgcHJvbWlzZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeUNhbGxlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlDYWxsZWQgPSB0cnVlO1xuICAgICAgICAgIHZhbHVlc1tpbmRleF0gPSB7IHN0YXR1czogJ2Z1bGZpbGxlZCcsIHZhbHVlOiB2YWx1ZSB9O1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlc29sdmUodmFsdWVzKTtcbiAgICAgICAgfSwgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlDYWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5Q2FsbGVkID0gdHJ1ZTtcbiAgICAgICAgICB2YWx1ZXNbaW5kZXhdID0geyBzdGF0dXM6ICdyZWplY3RlZCcsIHJlYXNvbjogZXJyb3IgfTtcbiAgICAgICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICAtLXJlbWFpbmluZyB8fCByZXNvbHZlKHZhbHVlcyk7XG4gICAgfSk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcikgcmVqZWN0KHJlc3VsdC52YWx1ZSk7XG4gICAgcmV0dXJuIGNhcGFiaWxpdHkucHJvbWlzZTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgbmV3UHJvbWlzZUNhcGFiaWxpdHlNb2R1bGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmV3LXByb21pc2UtY2FwYWJpbGl0eScpO1xudmFyIHBlcmZvcm0gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcGVyZm9ybScpO1xudmFyIGl0ZXJhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0ZScpO1xuXG52YXIgUFJPTUlTRV9BTllfRVJST1IgPSAnTm8gb25lIHByb21pc2UgcmVzb2x2ZWQnO1xuXG4vLyBgUHJvbWlzZS5hbnlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1wcm9taXNlLmFueVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBzdGF0OiB0cnVlIH0sIHtcbiAgYW55OiBmdW5jdGlvbiBhbnkoaXRlcmFibGUpIHtcbiAgICB2YXIgQyA9IHRoaXM7XG4gICAgdmFyIGNhcGFiaWxpdHkgPSBuZXdQcm9taXNlQ2FwYWJpbGl0eU1vZHVsZS5mKEMpO1xuICAgIHZhciByZXNvbHZlID0gY2FwYWJpbGl0eS5yZXNvbHZlO1xuICAgIHZhciByZWplY3QgPSBjYXBhYmlsaXR5LnJlamVjdDtcbiAgICB2YXIgcmVzdWx0ID0gcGVyZm9ybShmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgcHJvbWlzZVJlc29sdmUgPSBhRnVuY3Rpb24oQy5yZXNvbHZlKTtcbiAgICAgIHZhciBlcnJvcnMgPSBbXTtcbiAgICAgIHZhciBjb3VudGVyID0gMDtcbiAgICAgIHZhciByZW1haW5pbmcgPSAxO1xuICAgICAgdmFyIGFscmVhZHlSZXNvbHZlZCA9IGZhbHNlO1xuICAgICAgaXRlcmF0ZShpdGVyYWJsZSwgZnVuY3Rpb24gKHByb21pc2UpIHtcbiAgICAgICAgdmFyIGluZGV4ID0gY291bnRlcisrO1xuICAgICAgICB2YXIgYWxyZWFkeVJlamVjdGVkID0gZmFsc2U7XG4gICAgICAgIGVycm9ycy5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIHJlbWFpbmluZysrO1xuICAgICAgICBwcm9taXNlUmVzb2x2ZS5jYWxsKEMsIHByb21pc2UpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgICAgaWYgKGFscmVhZHlSZWplY3RlZCB8fCBhbHJlYWR5UmVzb2x2ZWQpIHJldHVybjtcbiAgICAgICAgICBhbHJlYWR5UmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIHJlc29sdmUodmFsdWUpO1xuICAgICAgICB9LCBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICBpZiAoYWxyZWFkeVJlamVjdGVkIHx8IGFscmVhZHlSZXNvbHZlZCkgcmV0dXJuO1xuICAgICAgICAgIGFscmVhZHlSZWplY3RlZCA9IHRydWU7XG4gICAgICAgICAgZXJyb3JzW2luZGV4XSA9IGVycm9yO1xuICAgICAgICAgIC0tcmVtYWluaW5nIHx8IHJlamVjdChuZXcgKGdldEJ1aWx0SW4oJ0FnZ3JlZ2F0ZUVycm9yJykpKGVycm9ycywgUFJPTUlTRV9BTllfRVJST1IpKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIC0tcmVtYWluaW5nIHx8IHJlamVjdChuZXcgKGdldEJ1aWx0SW4oJ0FnZ3JlZ2F0ZUVycm9yJykpKGVycm9ycywgUFJPTUlTRV9BTllfRVJST1IpKTtcbiAgICB9KTtcbiAgICBpZiAocmVzdWx0LmVycm9yKSByZWplY3QocmVzdWx0LnZhbHVlKTtcbiAgICByZXR1cm4gY2FwYWJpbGl0eS5wcm9taXNlO1xuICB9XG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIElTX1BVUkUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtcHVyZScpO1xudmFyIE5hdGl2ZVByb21pc2UgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvbmF0aXZlLXByb21pc2UtY29uc3RydWN0b3InKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGdldEJ1aWx0SW4gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZ2V0LWJ1aWx0LWluJyk7XG52YXIgc3BlY2llc0NvbnN0cnVjdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NwZWNpZXMtY29uc3RydWN0b3InKTtcbnZhciBwcm9taXNlUmVzb2x2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9wcm9taXNlLXJlc29sdmUnKTtcbnZhciByZWRlZmluZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9yZWRlZmluZScpO1xuXG4vLyBTYWZhcmkgYnVnIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDA4MjlcbnZhciBOT05fR0VORVJJQyA9ICEhTmF0aXZlUHJvbWlzZSAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gIE5hdGl2ZVByb21pc2UucHJvdG90eXBlWydmaW5hbGx5J10uY2FsbCh7IHRoZW46IGZ1bmN0aW9uICgpIHsgLyogZW1wdHkgKi8gfSB9LCBmdW5jdGlvbiAoKSB7IC8qIGVtcHR5ICovIH0pO1xufSk7XG5cbi8vIGBQcm9taXNlLnByb3RvdHlwZS5maW5hbGx5YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcHJvbWlzZS5wcm90b3R5cGUuZmluYWxseVxuJCh7IHRhcmdldDogJ1Byb21pc2UnLCBwcm90bzogdHJ1ZSwgcmVhbDogdHJ1ZSwgZm9yY2VkOiBOT05fR0VORVJJQyB9LCB7XG4gICdmaW5hbGx5JzogZnVuY3Rpb24gKG9uRmluYWxseSkge1xuICAgIHZhciBDID0gc3BlY2llc0NvbnN0cnVjdG9yKHRoaXMsIGdldEJ1aWx0SW4oJ1Byb21pc2UnKSk7XG4gICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2Ygb25GaW5hbGx5ID09ICdmdW5jdGlvbic7XG4gICAgcmV0dXJuIHRoaXMudGhlbihcbiAgICAgIGlzRnVuY3Rpb24gPyBmdW5jdGlvbiAoeCkge1xuICAgICAgICByZXR1cm4gcHJvbWlzZVJlc29sdmUoQywgb25GaW5hbGx5KCkpLnRoZW4oZnVuY3Rpb24gKCkgeyByZXR1cm4geDsgfSk7XG4gICAgICB9IDogb25GaW5hbGx5LFxuICAgICAgaXNGdW5jdGlvbiA/IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHJldHVybiBwcm9taXNlUmVzb2x2ZShDLCBvbkZpbmFsbHkoKSkudGhlbihmdW5jdGlvbiAoKSB7IHRocm93IGU7IH0pO1xuICAgICAgfSA6IG9uRmluYWxseVxuICAgICk7XG4gIH1cbn0pO1xuXG4vLyBwYXRjaCBuYXRpdmUgUHJvbWlzZS5wcm90b3R5cGUgZm9yIG5hdGl2ZSBhc3luYyBmdW5jdGlvbnNcbmlmICghSVNfUFVSRSAmJiB0eXBlb2YgTmF0aXZlUHJvbWlzZSA9PSAnZnVuY3Rpb24nICYmICFOYXRpdmVQcm9taXNlLnByb3RvdHlwZVsnZmluYWxseSddKSB7XG4gIHJlZGVmaW5lKE5hdGl2ZVByb21pc2UucHJvdG90eXBlLCAnZmluYWxseScsIGdldEJ1aWx0SW4oJ1Byb21pc2UnKS5wcm90b3R5cGVbJ2ZpbmFsbHknXSk7XG59XG4iLCIndXNlIHN0cmljdCc7XG52YXIgY2hhckF0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3N0cmluZy1tdWx0aWJ5dGUnKS5jaGFyQXQ7XG52YXIgSW50ZXJuYWxTdGF0ZU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbnRlcm5hbC1zdGF0ZScpO1xudmFyIGRlZmluZUl0ZXJhdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2RlZmluZS1pdGVyYXRvcicpO1xuXG52YXIgU1RSSU5HX0lURVJBVE9SID0gJ1N0cmluZyBJdGVyYXRvcic7XG52YXIgc2V0SW50ZXJuYWxTdGF0ZSA9IEludGVybmFsU3RhdGVNb2R1bGUuc2V0O1xudmFyIGdldEludGVybmFsU3RhdGUgPSBJbnRlcm5hbFN0YXRlTW9kdWxlLmdldHRlckZvcihTVFJJTkdfSVRFUkFUT1IpO1xuXG4vLyBgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUtQEBpdGVyYXRvclxuZGVmaW5lSXRlcmF0b3IoU3RyaW5nLCAnU3RyaW5nJywgZnVuY3Rpb24gKGl0ZXJhdGVkKSB7XG4gIHNldEludGVybmFsU3RhdGUodGhpcywge1xuICAgIHR5cGU6IFNUUklOR19JVEVSQVRPUixcbiAgICBzdHJpbmc6IFN0cmluZyhpdGVyYXRlZCksXG4gICAgaW5kZXg6IDBcbiAgfSk7XG4vLyBgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0YCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtJXN0cmluZ2l0ZXJhdG9ycHJvdG90eXBlJS5uZXh0XG59LCBmdW5jdGlvbiBuZXh0KCkge1xuICB2YXIgc3RhdGUgPSBnZXRJbnRlcm5hbFN0YXRlKHRoaXMpO1xuICB2YXIgc3RyaW5nID0gc3RhdGUuc3RyaW5nO1xuICB2YXIgaW5kZXggPSBzdGF0ZS5pbmRleDtcbiAgdmFyIHBvaW50O1xuICBpZiAoaW5kZXggPj0gc3RyaW5nLmxlbmd0aCkgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICBwb2ludCA9IGNoYXJBdChzdHJpbmcsIGluZGV4KTtcbiAgc3RhdGUuaW5kZXggKz0gcG9pbnQubGVuZ3RoO1xuICByZXR1cm4geyB2YWx1ZTogcG9pbnQsIGRvbmU6IGZhbHNlIH07XG59KTtcbiIsInZhciB0b0ludGVnZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW50ZWdlcicpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnsgY29kZVBvaW50QXQsIGF0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoQ09OVkVSVF9UT19TVFJJTkcpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgcG9zKSB7XG4gICAgdmFyIFMgPSBTdHJpbmcocmVxdWlyZU9iamVjdENvZXJjaWJsZSgkdGhpcykpO1xuICAgIHZhciBwb3NpdGlvbiA9IHRvSW50ZWdlcihwb3MpO1xuICAgIHZhciBzaXplID0gUy5sZW5ndGg7XG4gICAgdmFyIGZpcnN0LCBzZWNvbmQ7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBzaXplKSByZXR1cm4gQ09OVkVSVF9UT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBmaXJzdCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbik7XG4gICAgcmV0dXJuIGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gc2l6ZVxuICAgICAgfHwgKHNlY29uZCA9IFMuY2hhckNvZGVBdChwb3NpdGlvbiArIDEpKSA8IDB4REMwMCB8fCBzZWNvbmQgPiAweERGRkZcbiAgICAgICAgPyBDT05WRVJUX1RPX1NUUklORyA/IFMuY2hhckF0KHBvc2l0aW9uKSA6IGZpcnN0XG4gICAgICAgIDogQ09OVkVSVF9UT19TVFJJTkcgPyBTLnNsaWNlKHBvc2l0aW9uLCBwb3NpdGlvbiArIDIpIDogKGZpcnN0IC0gMHhEODAwIDw8IDEwKSArIChzZWNvbmQgLSAweERDMDApICsgMHgxMDAwMDtcbiAgfTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAvLyBgU3RyaW5nLnByb3RvdHlwZS5jb2RlUG9pbnRBdGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5jb2RlcG9pbnRhdFxuICBjb2RlQXQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLmF0YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21hdGhpYXNieW5lbnMvU3RyaW5nLnByb3RvdHlwZS5hdFxuICBjaGFyQXQ6IGNyZWF0ZU1ldGhvZCh0cnVlKVxufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciBJdGVyYXRvclByb3RvdHlwZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pdGVyYXRvcnMtY29yZScpLkl0ZXJhdG9yUHJvdG90eXBlO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG52YXIgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvc2V0LXRvLXN0cmluZy10YWcnKTtcbnZhciBJdGVyYXRvcnMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXRlcmF0b3JzJyk7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSXRlcmF0b3JDb25zdHJ1Y3RvciwgTkFNRSwgbmV4dCkge1xuICB2YXIgVE9fU1RSSU5HX1RBRyA9IE5BTUUgKyAnIEl0ZXJhdG9yJztcbiAgSXRlcmF0b3JDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBjcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUsIHsgbmV4dDogY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yKDEsIG5leHQpIH0pO1xuICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvckNvbnN0cnVjdG9yLCBUT19TVFJJTkdfVEFHLCBmYWxzZSwgdHJ1ZSk7XG4gIEl0ZXJhdG9yc1tUT19TVFJJTkdfVEFHXSA9IHJldHVyblRoaXM7XG4gIHJldHVybiBJdGVyYXRvckNvbnN0cnVjdG9yO1xufTtcbiIsIi8vIGl0ZXJhYmxlIERPTSBjb2xsZWN0aW9uc1xuLy8gZmxhZyAtIGBpdGVyYWJsZWAgaW50ZXJmYWNlIC0gJ2VudHJpZXMnLCAna2V5cycsICd2YWx1ZXMnLCAnZm9yRWFjaCcgbWV0aG9kc1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIENTU1J1bGVMaXN0OiAwLFxuICBDU1NTdHlsZURlY2xhcmF0aW9uOiAwLFxuICBDU1NWYWx1ZUxpc3Q6IDAsXG4gIENsaWVudFJlY3RMaXN0OiAwLFxuICBET01SZWN0TGlzdDogMCxcbiAgRE9NU3RyaW5nTGlzdDogMCxcbiAgRE9NVG9rZW5MaXN0OiAxLFxuICBEYXRhVHJhbnNmZXJJdGVtTGlzdDogMCxcbiAgRmlsZUxpc3Q6IDAsXG4gIEhUTUxBbGxDb2xsZWN0aW9uOiAwLFxuICBIVE1MQ29sbGVjdGlvbjogMCxcbiAgSFRNTEZvcm1FbGVtZW50OiAwLFxuICBIVE1MU2VsZWN0RWxlbWVudDogMCxcbiAgTWVkaWFMaXN0OiAwLFxuICBNaW1lVHlwZUFycmF5OiAwLFxuICBOYW1lZE5vZGVNYXA6IDAsXG4gIE5vZGVMaXN0OiAxLFxuICBQYWludFJlcXVlc3RMaXN0OiAwLFxuICBQbHVnaW46IDAsXG4gIFBsdWdpbkFycmF5OiAwLFxuICBTVkdMZW5ndGhMaXN0OiAwLFxuICBTVkdOdW1iZXJMaXN0OiAwLFxuICBTVkdQYXRoU2VnTGlzdDogMCxcbiAgU1ZHUG9pbnRMaXN0OiAwLFxuICBTVkdTdHJpbmdMaXN0OiAwLFxuICBTVkdUcmFuc2Zvcm1MaXN0OiAwLFxuICBTb3VyY2VCdWZmZXJMaXN0OiAwLFxuICBTdHlsZVNoZWV0TGlzdDogMCxcbiAgVGV4dFRyYWNrQ3VlTGlzdDogMCxcbiAgVGV4dFRyYWNrTGlzdDogMCxcbiAgVG91Y2hMaXN0OiAwXG59O1xuIiwidmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xuXG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xudmFyIHJlcGxhY2UgPSAnJy5yZXBsYWNlO1xudmFyIFNVQlNUSVRVVElPTl9TWU1CT0xTID0gL1xcJChbJCYnYF18XFxkezEsMn18PFtePl0qPikvZztcbnZhciBTVUJTVElUVVRJT05fU1lNQk9MU19OT19OQU1FRCA9IC9cXCQoWyQmJ2BdfFxcZHsxLDJ9KS9nO1xuXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWdldHN1YnN0aXR1dGlvblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobWF0Y2hlZCwgc3RyLCBwb3NpdGlvbiwgY2FwdHVyZXMsIG5hbWVkQ2FwdHVyZXMsIHJlcGxhY2VtZW50KSB7XG4gIHZhciB0YWlsUG9zID0gcG9zaXRpb24gKyBtYXRjaGVkLmxlbmd0aDtcbiAgdmFyIG0gPSBjYXB0dXJlcy5sZW5ndGg7XG4gIHZhciBzeW1ib2xzID0gU1VCU1RJVFVUSU9OX1NZTUJPTFNfTk9fTkFNRUQ7XG4gIGlmIChuYW1lZENhcHR1cmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBuYW1lZENhcHR1cmVzID0gdG9PYmplY3QobmFtZWRDYXB0dXJlcyk7XG4gICAgc3ltYm9scyA9IFNVQlNUSVRVVElPTl9TWU1CT0xTO1xuICB9XG4gIHJldHVybiByZXBsYWNlLmNhbGwocmVwbGFjZW1lbnQsIHN5bWJvbHMsIGZ1bmN0aW9uIChtYXRjaCwgY2gpIHtcbiAgICB2YXIgY2FwdHVyZTtcbiAgICBzd2l0Y2ggKGNoLmNoYXJBdCgwKSkge1xuICAgICAgY2FzZSAnJCc6IHJldHVybiAnJCc7XG4gICAgICBjYXNlICcmJzogcmV0dXJuIG1hdGNoZWQ7XG4gICAgICBjYXNlICdgJzogcmV0dXJuIHN0ci5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICBjYXNlIFwiJ1wiOiByZXR1cm4gc3RyLnNsaWNlKHRhaWxQb3MpO1xuICAgICAgY2FzZSAnPCc6XG4gICAgICAgIGNhcHR1cmUgPSBuYW1lZENhcHR1cmVzW2NoLnNsaWNlKDEsIC0xKV07XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDogLy8gXFxkXFxkP1xuICAgICAgICB2YXIgbiA9ICtjaDtcbiAgICAgICAgaWYgKG4gPT09IDApIHJldHVybiBtYXRjaDtcbiAgICAgICAgaWYgKG4gPiBtKSB7XG4gICAgICAgICAgdmFyIGYgPSBmbG9vcihuIC8gMTApO1xuICAgICAgICAgIGlmIChmID09PSAwKSByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgaWYgKGYgPD0gbSkgcmV0dXJuIGNhcHR1cmVzW2YgLSAxXSA9PT0gdW5kZWZpbmVkID8gY2guY2hhckF0KDEpIDogY2FwdHVyZXNbZiAtIDFdICsgY2guY2hhckF0KDEpO1xuICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgfVxuICAgICAgICBjYXB0dXJlID0gY2FwdHVyZXNbbiAtIDFdO1xuICAgIH1cbiAgICByZXR1cm4gY2FwdHVyZSA9PT0gdW5kZWZpbmVkID8gJycgOiBjYXB0dXJlO1xuICB9KTtcbn07XG4iLCJyZXF1aXJlKCcuLi9tb2R1bGVzL3dlYi50aW1lcnMnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLnNldEludGVydmFsO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FLCBhcmd1bWVudCkge1xuICB2YXIgbWV0aG9kID0gW11bTUVUSE9EX05BTUVdO1xuICByZXR1cm4gISFtZXRob2QgJiYgZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNhbGwsbm8tdGhyb3ctbGl0ZXJhbCAtLSByZXF1aXJlZCBmb3IgdGVzdGluZ1xuICAgIG1ldGhvZC5jYWxsKG51bGwsIGFyZ3VtZW50IHx8IGZ1bmN0aW9uICgpIHsgdGhyb3cgMTsgfSwgMSk7XG4gIH0pO1xufTtcbiIsIi8vIGEgc3RyaW5nIG9mIGFsbCB2YWxpZCB1bmljb2RlIHdoaXRlc3BhY2VzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxubW9kdWxlLmV4cG9ydHMgPSAnXFx1MDAwOVxcdTAwMEFcXHUwMDBCXFx1MDAwQ1xcdTAwMERcXHUwMDIwXFx1MDBBMFxcdTE2ODBcXHUyMDAwXFx1MjAwMVxcdTIwMDJcXHUyMDAzXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjhcXHUyMDI5XFx1RkVGRic7XG4iLCJ2YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xudmFyIHdlbGxLbm93blN5bWJvbCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy93ZWxsLWtub3duLXN5bWJvbCcpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG4vLyBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBhYnN0cmFjdCBvcGVyYXRpb25cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvcmlnaW5hbEFycmF5LCBsZW5ndGgpIHtcbiAgdmFyIEM7XG4gIGlmIChpc0FycmF5KG9yaWdpbmFsQXJyYXkpKSB7XG4gICAgQyA9IG9yaWdpbmFsQXJyYXkuY29uc3RydWN0b3I7XG4gICAgLy8gY3Jvc3MtcmVhbG0gZmFsbGJhY2tcbiAgICBpZiAodHlwZW9mIEMgPT0gJ2Z1bmN0aW9uJyAmJiAoQyA9PT0gQXJyYXkgfHwgaXNBcnJheShDLnByb3RvdHlwZSkpKSBDID0gdW5kZWZpbmVkO1xuICAgIGVsc2UgaWYgKGlzT2JqZWN0KEMpKSB7XG4gICAgICBDID0gQ1tTUEVDSUVTXTtcbiAgICAgIGlmIChDID09PSBudWxsKSBDID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSByZXR1cm4gbmV3IChDID09PSB1bmRlZmluZWQgPyBBcnJheSA6IEMpKGxlbmd0aCA9PT0gMCA/IDAgOiBsZW5ndGgpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1wcmltaXRpdmUnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eU1vZHVsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgY3JlYXRlUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2NyZWF0ZS1wcm9wZXJ0eS1kZXNjcmlwdG9yJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICB2YXIgcHJvcGVydHlLZXkgPSB0b1ByaW1pdGl2ZShrZXkpO1xuICBpZiAocHJvcGVydHlLZXkgaW4gb2JqZWN0KSBkZWZpbmVQcm9wZXJ0eU1vZHVsZS5mKG9iamVjdCwgcHJvcGVydHlLZXksIGNyZWF0ZVByb3BlcnR5RGVzY3JpcHRvcigwLCB2YWx1ZSkpO1xuICBlbHNlIG9iamVjdFtwcm9wZXJ0eUtleV0gPSB2YWx1ZTtcbn07XG4iLCJ2YXIgcmVkdWNlID0gcmVxdWlyZSgnLi4vYXJyYXkvdmlydHVhbC9yZWR1Y2UnKTtcblxudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgb3duID0gaXQucmVkdWNlO1xuICByZXR1cm4gaXQgPT09IEFycmF5UHJvdG90eXBlIHx8IChpdCBpbnN0YW5jZW9mIEFycmF5ICYmIG93biA9PT0gQXJyYXlQcm90b3R5cGUucmVkdWNlKSA/IHJlZHVjZSA6IG93bjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUsIGFyZ3VtZW50KSB7XG4gIHZhciBtZXRob2QgPSBbXVtNRVRIT0RfTkFNRV07XG4gIHJldHVybiAhIW1ldGhvZCAmJiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY2FsbCxuby10aHJvdy1saXRlcmFsXG4gICAgbWV0aG9kLmNhbGwobnVsbCwgYXJndW1lbnQgfHwgZnVuY3Rpb24gKCkgeyB0aHJvdyAxOyB9LCAxKTtcbiAgfSk7XG59O1xuIiwidmFyIGJpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1jb250ZXh0Jyk7XG52YXIgSW5kZXhlZE9iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pbmRleGVkLW9iamVjdCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIHRvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWxlbmd0aCcpO1xudmFyIGFycmF5U3BlY2llc0NyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1zcGVjaWVzLWNyZWF0ZScpO1xuXG52YXIgcHVzaCA9IFtdLnB1c2g7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUueyBmb3JFYWNoLCBtYXAsIGZpbHRlciwgc29tZSwgZXZlcnksIGZpbmQsIGZpbmRJbmRleCwgZmlsdGVyT3V0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICB2YXIgSVNfTUFQID0gVFlQRSA9PSAxO1xuICB2YXIgSVNfRklMVEVSID0gVFlQRSA9PSAyO1xuICB2YXIgSVNfU09NRSA9IFRZUEUgPT0gMztcbiAgdmFyIElTX0VWRVJZID0gVFlQRSA9PSA0O1xuICB2YXIgSVNfRklORF9JTkRFWCA9IFRZUEUgPT0gNjtcbiAgdmFyIElTX0ZJTFRFUl9PVVQgPSBUWVBFID09IDc7XG4gIHZhciBOT19IT0xFUyA9IFRZUEUgPT0gNSB8fCBJU19GSU5EX0lOREVYO1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzLCBjYWxsYmFja2ZuLCB0aGF0LCBzcGVjaWZpY0NyZWF0ZSkge1xuICAgIHZhciBPID0gdG9PYmplY3QoJHRoaXMpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgYm91bmRGdW5jdGlvbiA9IGJpbmQoY2FsbGJhY2tmbiwgdGhhdCwgMyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKHNlbGYubGVuZ3RoKTtcbiAgICB2YXIgaW5kZXggPSAwO1xuICAgIHZhciBjcmVhdGUgPSBzcGVjaWZpY0NyZWF0ZSB8fCBhcnJheVNwZWNpZXNDcmVhdGU7XG4gICAgdmFyIHRhcmdldCA9IElTX01BUCA/IGNyZWF0ZSgkdGhpcywgbGVuZ3RoKSA6IElTX0ZJTFRFUiB8fCBJU19GSUxURVJfT1VUID8gY3JlYXRlKCR0aGlzLCAwKSA6IHVuZGVmaW5lZDtcbiAgICB2YXIgdmFsdWUsIHJlc3VsdDtcbiAgICBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKE5PX0hPTEVTIHx8IGluZGV4IGluIHNlbGYpIHtcbiAgICAgIHZhbHVlID0gc2VsZltpbmRleF07XG4gICAgICByZXN1bHQgPSBib3VuZEZ1bmN0aW9uKHZhbHVlLCBpbmRleCwgTyk7XG4gICAgICBpZiAoVFlQRSkge1xuICAgICAgICBpZiAoSVNfTUFQKSB0YXJnZXRbaW5kZXhdID0gcmVzdWx0OyAvLyBtYXBcbiAgICAgICAgZWxzZSBpZiAocmVzdWx0KSBzd2l0Y2ggKFRZUEUpIHtcbiAgICAgICAgICBjYXNlIDM6IHJldHVybiB0cnVlOyAgICAgICAgICAgICAgLy8gc29tZVxuICAgICAgICAgIGNhc2UgNTogcmV0dXJuIHZhbHVlOyAgICAgICAgICAgICAvLyBmaW5kXG4gICAgICAgICAgY2FzZSA2OiByZXR1cm4gaW5kZXg7ICAgICAgICAgICAgIC8vIGZpbmRJbmRleFxuICAgICAgICAgIGNhc2UgMjogcHVzaC5jYWxsKHRhcmdldCwgdmFsdWUpOyAvLyBmaWx0ZXJcbiAgICAgICAgfSBlbHNlIHN3aXRjaCAoVFlQRSkge1xuICAgICAgICAgIGNhc2UgNDogcmV0dXJuIGZhbHNlOyAgICAgICAgICAgICAvLyBldmVyeVxuICAgICAgICAgIGNhc2UgNzogcHVzaC5jYWxsKHRhcmdldCwgdmFsdWUpOyAvLyBmaWx0ZXJPdXRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gSVNfRklORF9JTkRFWCA/IC0xIDogSVNfU09NRSB8fCBJU19FVkVSWSA/IElTX0VWRVJZIDogdGFyZ2V0O1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZvcmVhY2hcbiAgZm9yRWFjaDogY3JlYXRlTWV0aG9kKDApLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLm1hcGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLm1hcFxuICBtYXA6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maWx0ZXJcbiAgZmlsdGVyOiBjcmVhdGVNZXRob2QoMiksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuc29tZWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnNvbWVcbiAgc29tZTogY3JlYXRlTWV0aG9kKDMpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmV2ZXJ5YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZXZlcnlcbiAgZXZlcnk6IGNyZWF0ZU1ldGhvZCg0KSxcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5maW5kYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZFxuICBmaW5kOiBjcmVhdGVNZXRob2QoNSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUuZmluZEluZGV4YCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmluZEluZGV4XG4gIGZpbmRJbmRleDogY3JlYXRlTWV0aG9kKDYpLFxuICAvLyBgQXJyYXkucHJvdG90eXBlLmZpbHRlck91dGAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLWFycmF5LWZpbHRlcmluZ1xuICBmaWx0ZXJPdXQ6IGNyZWF0ZU1ldGhvZCg3KVxufTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgY29udmVydExhbmdOYW1lIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuLy8gaW1wb3J0IHt2aWV3LCBWaWV3VHlwZX0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgcG9wdXAgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL0xhbmd1YWdlcycsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNMYW5ndWFnZXMnXG59KVxuY2xhc3MgTGFuZ3VhZ2VzUG9wdXBWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmZMYW5nID0gbnVsbDtcblx0XHR0aGlzLnVzZXJMYW5ndWFnZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5sYW5ncyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cblx0XHR0aGlzLmxhbmd1YWdlcyA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHVzZXJMYW5ndWFnZSA9IHRoaXMudXNlckxhbmd1YWdlKCk7XG5cdFx0XHRyZXR1cm4gXy5tYXAodGhpcy5sYW5ncygpLCAobGFuZ3VhZ2UpID0+ICh7XG5cdFx0XHRcdGtleTogbGFuZ3VhZ2UsXG5cdFx0XHRcdHVzZXI6IGxhbmd1YWdlID09PSB1c2VyTGFuZ3VhZ2UsXG5cdFx0XHRcdHNlbGVjdGVkOiBrby5vYnNlcnZhYmxlKGZhbHNlKSxcblx0XHRcdFx0ZnVsbE5hbWU6IGNvbnZlcnRMYW5nTmFtZShsYW5ndWFnZSlcblx0XHRcdH0pKTtcblx0XHR9KTtcblxuXHRcdHRoaXMubGFuZ3Muc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuc2V0TGFuZ3VhZ2VTZWxlY3Rpb24oKTtcblx0XHR9KTtcblx0fVxuXG5cdGxhbmd1YWdlVG9vbHRpcE5hbWUobGFuZ3VhZ2UpIHtcblx0XHRyZXR1cm4gY29udmVydExhbmdOYW1lKGxhbmd1YWdlLCB0cnVlKTtcblx0fVxuXG5cdHNldExhbmd1YWdlU2VsZWN0aW9uKCkge1xuXHRcdGNvbnN0IGN1cnJlbnRMYW5nID0gdGhpcy5mTGFuZyA/IGtvLnVud3JhcCh0aGlzLmZMYW5nKSA6ICcnO1xuXHRcdF8uZWFjaCh0aGlzLmxhbmd1YWdlcygpLCAoaXRlbSkgPT4ge1xuXHRcdFx0aXRlbS5zZWxlY3RlZChpdGVtLmtleSA9PT0gY3VycmVudExhbmcpO1xuXHRcdH0pO1xuXHR9XG5cblx0b25CZWZvcmVTaG93KCkge1xuXHRcdHRoaXMuZkxhbmcgPSBudWxsO1xuXHRcdHRoaXMudXNlckxhbmd1YWdlKCcnKTtcblxuXHRcdHRoaXMubGFuZ3MoW10pO1xuXHR9XG5cblx0b25TaG93KGZMYW5ndWFnZSwgbGFuZ3MsIHVzZXJMYW5ndWFnZSkge1xuXHRcdHRoaXMuZkxhbmcgPSBmTGFuZ3VhZ2U7XG5cdFx0dGhpcy51c2VyTGFuZ3VhZ2UodXNlckxhbmd1YWdlIHx8ICcnKTtcblxuXHRcdHRoaXMubGFuZ3MobGFuZ3MpO1xuXHR9XG5cblx0Y2hhbmdlTGFuZ3VhZ2UobGFuZykge1xuXHRcdGlmICh0aGlzLmZMYW5nKSB7XG5cdFx0XHR0aGlzLmZMYW5nKGxhbmcpO1xuXHRcdH1cblxuXHRcdHRoaXMuY2FuY2VsQ29tbWFuZCgpO1xuXHR9XG59XG5cbmV4cG9ydCB7IExhbmd1YWdlc1BvcHVwVmlldywgTGFuZ3VhZ2VzUG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCB7IGtpbGxDdHJsQUN0cmxTLCBkZXRlY3REcm9wZG93blZpc2liaWxpdHksIGNyZWF0ZUNvbW1hbmRMZWdhY3ksIGRvbVJlYWR5IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7ICR3aW4sICRodG1sLCBkYXRhIGFzIEdsb2JhbHNEYXRhLCBiTW9iaWxlRGV2aWNlIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0ICogYXMgRW51bXMgZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCAqIGFzIFBsdWdpbnMgZnJvbSAnQ29tbW9uL1BsdWdpbnMnO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcbmltcG9ydCB7IEVtYWlsTW9kZWwgfSBmcm9tICdNb2RlbC9FbWFpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IChBcHApID0+IHtcblx0R2xvYmFsc0RhdGEuX19BUFBfXyA9IEFwcDtcblxuXHQkd2luLm9uKCdrZXlkb3duJywga2lsbEN0cmxBQ3RybFMpLm9uKCd1bmxvYWQnLCAoKSA9PiB7XG5cdFx0R2xvYmFsc0RhdGEuYlVubG9hZCA9IHRydWU7XG5cdH0pO1xuXG5cdCRodG1sLmFkZENsYXNzKGJNb2JpbGVEZXZpY2UgPyAnbW9iaWxlJyA6ICduby1tb2JpbGUnKS5vbignY2xpY2suZHJvcGRvd24uZGF0YS1hcGknLCBkZXRlY3REcm9wZG93blZpc2liaWxpdHkpO1xuXG5cdGNvbnN0IHJsID0gd2luZG93LnJsIHx8IHt9O1xuXG5cdHJsLmkxOG4gPSBpMThuO1xuXHRybC5jcmVhdGVDb21tYW5kID0gY3JlYXRlQ29tbWFuZExlZ2FjeTtcblxuXHRybC5hZGRTZXR0aW5nc1ZpZXdNb2RlbCA9IFBsdWdpbnMuYWRkU2V0dGluZ3NWaWV3TW9kZWw7XG5cdHJsLmFkZFNldHRpbmdzVmlld01vZGVsRm9yQWRtaW4gPSBQbHVnaW5zLmFkZFNldHRpbmdzVmlld01vZGVsRm9yQWRtaW47XG5cblx0cmwuYWRkSG9vayA9IFBsdWdpbnMuYWRkSG9vaztcblx0cmwuc2V0dGluZ3NHZXQgPSBQbHVnaW5zLm1haW5TZXR0aW5nc0dldDtcblx0cmwucGx1Z2luU2V0dGluZ3NHZXQgPSBQbHVnaW5zLnNldHRpbmdzR2V0O1xuXHRybC5wbHVnaW5SZW1vdGVSZXF1ZXN0ID0gUGx1Z2lucy5yZW1vdGVSZXF1ZXN0O1xuXG5cdHJsLkVtYWlsTW9kZWwgPSBFbWFpbE1vZGVsO1xuXHRybC5FbnVtcyA9IEVudW1zO1xuXG5cdHdpbmRvdy5ybCA9IHJsO1xuXG5cdGNvbnN0IHN0YXJ0ID0gKCkgPT4ge1xuXHRcdHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdCRodG1sLnJlbW92ZUNsYXNzKCduby1qcyBybC1ib290ZWQtdHJpZ2dlcicpLmFkZENsYXNzKCdybC1ib290ZWQnKTtcblxuXHRcdFx0QXBwLmJvb3RzdGFydCgpO1xuXHRcdH0sIEVudW1zLk1hZ2ljcy5UaW1lMTBtcyk7XG5cdH07XG5cblx0d2luZG93Ll9fQVBQX0JPT1QgPSAoZkVycm9yQ2FsbGJhY2spID0+IHtcblx0XHRkb21SZWFkeSgoKSA9PiB7XG5cdFx0XHR3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdGlmICh3aW5kb3cuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JhaW5sb29wLXRlbXBsYXRlcy1pZCcpKSB7XG5cdFx0XHRcdFx0c3RhcnQoKTtcblx0XHRcdFx0fSBlbHNlIGlmICh3aW5kb3cucmFpbmxvb3BURU1QTEFURVMgJiYgd2luZG93LnJhaW5sb29wVEVNUExBVEVTWzBdKSB7XG5cdFx0XHRcdFx0d2luZG93LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdybC10ZW1wbGF0ZXMnKS5pbm5lckhUTUwgPSB3aW5kb3cucmFpbmxvb3BURU1QTEFURVNbMF07XG5cdFx0XHRcdFx0c3RhcnQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRmRXJyb3JDYWxsYmFjaygpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0d2luZG93Ll9fQVBQX0JPT1QgPSBudWxsO1xuXHRcdFx0fSwgRW51bXMuTWFnaWNzLlRpbWUxMG1zKTtcblx0XHR9KTtcblx0fTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvZmVhdHVyZXMvb2JqZWN0L2NyZWF0ZVwiKTsiLCJpbXBvcnQgX09iamVjdCRzZXRQcm90b3R5cGVPZiBmcm9tIFwiQGJhYmVsL3J1bnRpbWUtY29yZWpzMy9jb3JlLWpzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBfT2JqZWN0JHNldFByb3RvdHlwZU9mIHx8IGZ1bmN0aW9uIF9zZXRQcm90b3R5cGVPZihvLCBwKSB7XG4gICAgby5fX3Byb3RvX18gPSBwO1xuICAgIHJldHVybiBvO1xuICB9O1xuXG4gIHJldHVybiBfc2V0UHJvdG90eXBlT2YobywgcCk7XG59IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL2ZlYXR1cmVzL29iamVjdC9zZXQtcHJvdG90eXBlLW9mXCIpOyIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyAkaHRtbCwgYk1vYmlsZURldmljZSB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5jbGFzcyBBYnN0cmFjdEFwcFN0b3JlIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5hbGxvd0xhbmd1YWdlc09uU2V0dGluZ3MgPSBrby5vYnNlcnZhYmxlKHRydWUpO1xuXHRcdHRoaXMuYWxsb3dMYW5ndWFnZXNPbkxvZ2luID0ga28ub2JzZXJ2YWJsZSh0cnVlKTtcblx0XHR0aGlzLm5ld01vdmVUb0ZvbGRlciA9IGtvLm9ic2VydmFibGUodHJ1ZSk7XG5cblx0XHR0aGlzLmludGVyZmFjZUFuaW1hdGlvbiA9IGtvLm9ic2VydmFibGUodHJ1ZSk7XG5cblx0XHR0aGlzLmludGVyZmFjZUFuaW1hdGlvbi5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRjb25zdCBhbmltID0gYk1vYmlsZURldmljZSB8fCAhdmFsdWU7XG5cdFx0XHQkaHRtbC50b2dnbGVDbGFzcygncmwtYW5pbScsICFhbmltKS50b2dnbGVDbGFzcygnbm8tcmwtYW5pbScsIGFuaW0pO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5pbnRlcmZhY2VBbmltYXRpb24udmFsdWVIYXNNdXRhdGVkKCk7XG5cdH1cblxuXHRwb3B1bGF0ZSgpIHtcblx0XHR0aGlzLmFsbG93TGFuZ3VhZ2VzT25Mb2dpbighIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0xhbmd1YWdlc09uTG9naW4nKSk7XG5cdFx0dGhpcy5hbGxvd0xhbmd1YWdlc09uU2V0dGluZ3MoISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnQWxsb3dMYW5ndWFnZXNPblNldHRpbmdzJykpO1xuXHRcdHRoaXMubmV3TW92ZVRvRm9sZGVyKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ05ld01vdmVUb0ZvbGRlcicpKTtcblxuXHRcdHRoaXMuaW50ZXJmYWNlQW5pbWF0aW9uKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0ludGVyZmFjZUFuaW1hdGlvbicpKTtcblx0fVxufVxuXG5leHBvcnQgeyBBYnN0cmFjdEFwcFN0b3JlLCBBYnN0cmFjdEFwcFN0b3JlIGFzIGRlZmF1bHQgfTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9mZWF0dXJlcy9pbnN0YW5jZS9mb3ItZWFjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvZmVhdHVyZXMvb2JqZWN0L2tleXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL2ZlYXR1cmVzL2luc3RhbmNlL3JlZHVjZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvZmVhdHVyZXMvaW5zdGFuY2UvcmV2ZXJzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJjb3JlLWpzLXB1cmUvZmVhdHVyZXMvaW5zdGFuY2Uvc2xpY2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiY29yZS1qcy1wdXJlL2ZlYXR1cmVzL29iamVjdC9kZWZpbmUtcHJvcGVydHlcIik7IiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgJCBmcm9tICckJztcblxuaW1wb3J0IHsgVE9LRU5fRVJST1JfTElNSVQsIEFKQVhfRVJST1JfTElNSVQsIERFRkFVTFRfQUpBWF9USU1FT1VUIH0gZnJvbSAnQ29tbW9uL0NvbnN0cyc7XG5pbXBvcnQgeyBTdG9yYWdlUmVzdWx0VHlwZSwgTm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IGluQXJyYXksIHBJbnQsIHBTdHJpbmcsIGlzVW5kIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IGRhdGEgYXMgR2xvYmFsc0RhdGEgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5pbXBvcnQgeyBhamF4IH0gZnJvbSAnQ29tbW9uL0xpbmtzJztcbmltcG9ydCB7IHJ1bkhvb2sgfSBmcm9tICdDb21tb24vUGx1Z2lucyc7XG5cbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5jbGFzcyBBYnN0cmFjdEFqYXhSZW1vdGUge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLm9SZXF1ZXN0cyA9IHt9O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNSZXF1ZXN0QWN0aW9uXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzVHlwZVxuXHQgKiBAcGFyYW0gez9BamF4SnNvbkRlZmF1bHRSZXNwb25zZX0gb0RhdGFcblx0ICogQHBhcmFtIHtib29sZWFufSBiQ2FjaGVkXG5cdCAqIEBwYXJhbSB7Kj19IG9SZXF1ZXN0UGFyYW1ldGVyc1xuXHQgKi9cblx0ZGVmYXVsdFJlc3BvbnNlKGZDYWxsYmFjaywgc1JlcXVlc3RBY3Rpb24sIHNUeXBlLCBvRGF0YSwgYkNhY2hlZCwgb1JlcXVlc3RQYXJhbWV0ZXJzKSB7XG5cdFx0Y29uc3QgZkNhbGwgPSAoKSA9PiB7XG5cdFx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyAhPT0gc1R5cGUgJiYgR2xvYmFsc0RhdGEuYlVubG9hZCkge1xuXHRcdFx0XHRzVHlwZSA9IFN0b3JhZ2VSZXN1bHRUeXBlLlVubG9hZDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHNUeXBlICYmIG9EYXRhICYmICFvRGF0YS5SZXN1bHQpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdG9EYXRhICYmXG5cdFx0XHRcdFx0LTEgPFxuXHRcdFx0XHRcdFx0aW5BcnJheShvRGF0YS5FcnJvckNvZGUsIFtcblx0XHRcdFx0XHRcdFx0Tm90aWZpY2F0aW9uLkF1dGhFcnJvcixcblx0XHRcdFx0XHRcdFx0Tm90aWZpY2F0aW9uLkFjY2Vzc0Vycm9yLFxuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uQ29ubmVjdGlvbkVycm9yLFxuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uRG9tYWluTm90QWxsb3dlZCxcblx0XHRcdFx0XHRcdFx0Tm90aWZpY2F0aW9uLkFjY291bnROb3RBbGxvd2VkLFxuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uTWFpbFNlcnZlckVycm9yLFxuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uVW5rbm93bk5vdGlmaWNhdGlvbixcblx0XHRcdFx0XHRcdFx0Tm90aWZpY2F0aW9uLlVua25vd25FcnJvclxuXHRcdFx0XHRcdFx0XSlcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0R2xvYmFsc0RhdGEuaUFqYXhFcnJvckNvdW50ICs9IDE7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAob0RhdGEgJiYgTm90aWZpY2F0aW9uLkludmFsaWRUb2tlbiA9PT0gb0RhdGEuRXJyb3JDb2RlKSB7XG5cdFx0XHRcdFx0R2xvYmFsc0RhdGEuaVRva2VuRXJyb3JDb3VudCArPSAxO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFRPS0VOX0VSUk9SX0xJTUlUIDwgR2xvYmFsc0RhdGEuaVRva2VuRXJyb3JDb3VudCkge1xuXHRcdFx0XHRcdGlmIChHbG9iYWxzRGF0YS5fX0FQUF9fICYmIEdsb2JhbHNEYXRhLl9fQVBQX18ubG9naW5BbmRMb2dvdXRSZWxvYWQpIHtcblx0XHRcdFx0XHRcdEdsb2JhbHNEYXRhLl9fQVBQX18ubG9naW5BbmRMb2dvdXRSZWxvYWQoZmFsc2UsIHRydWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChvRGF0YS5DbGVhckF1dGggfHwgb0RhdGEuTG9nb3V0IHx8IEFKQVhfRVJST1JfTElNSVQgPCBHbG9iYWxzRGF0YS5pQWpheEVycm9yQ291bnQpIHtcblx0XHRcdFx0XHRpZiAoR2xvYmFsc0RhdGEuX19BUFBfXyAmJiBHbG9iYWxzRGF0YS5fX0FQUF9fLmNsZWFyQ2xpZW50U2lkZVRva2VuKSB7XG5cdFx0XHRcdFx0XHRHbG9iYWxzRGF0YS5fX0FQUF9fLmNsZWFyQ2xpZW50U2lkZVRva2VuKCk7XG5cblx0XHRcdFx0XHRcdGlmICghb0RhdGEuQ2xlYXJBdXRoICYmIEdsb2JhbHNEYXRhLl9fQVBQX18ubG9naW5BbmRMb2dvdXRSZWxvYWQpIHtcblx0XHRcdFx0XHRcdFx0R2xvYmFsc0RhdGEuX19BUFBfXy5sb2dpbkFuZExvZ291dFJlbG9hZChmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHNUeXBlICYmIG9EYXRhICYmIG9EYXRhLlJlc3VsdCkge1xuXHRcdFx0XHRHbG9iYWxzRGF0YS5pQWpheEVycm9yQ291bnQgPSAwO1xuXHRcdFx0XHRHbG9iYWxzRGF0YS5pVG9rZW5FcnJvckNvdW50ID0gMDtcblx0XHRcdH1cblxuXHRcdFx0cnVuSG9vaygnYWpheC1kZWZhdWx0LXJlc3BvbnNlJywgW1xuXHRcdFx0XHRzUmVxdWVzdEFjdGlvbixcblx0XHRcdFx0U3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gc1R5cGUgPyBvRGF0YSA6IG51bGwsXG5cdFx0XHRcdHNUeXBlLFxuXHRcdFx0XHRiQ2FjaGVkLFxuXHRcdFx0XHRvUmVxdWVzdFBhcmFtZXRlcnNcblx0XHRcdF0pO1xuXG5cdFx0XHRpZiAoZkNhbGxiYWNrKSB7XG5cdFx0XHRcdGZDYWxsYmFjayhcblx0XHRcdFx0XHRzVHlwZSxcblx0XHRcdFx0XHRTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSBzVHlwZSA/IG9EYXRhIDogbnVsbCxcblx0XHRcdFx0XHRiQ2FjaGVkLFxuXHRcdFx0XHRcdHNSZXF1ZXN0QWN0aW9uLFxuXHRcdFx0XHRcdG9SZXF1ZXN0UGFyYW1ldGVyc1xuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHRzd2l0Y2ggKHNUeXBlKSB7XG5cdFx0XHRjYXNlICdzdWNjZXNzJzpcblx0XHRcdFx0c1R5cGUgPSBTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgJ2Fib3J0Jzpcblx0XHRcdFx0c1R5cGUgPSBTdG9yYWdlUmVzdWx0VHlwZS5BYm9ydDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRzVHlwZSA9IFN0b3JhZ2VSZXN1bHRUeXBlLkVycm9yO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuRXJyb3IgPT09IHNUeXBlKSB7XG5cdFx0XHRfLmRlbGF5KGZDYWxsLCAzMDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmQ2FsbCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZlJlc3VsdENhbGxiYWNrXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvUGFyYW1ldGVyc1xuXHQgKiBAcGFyYW0gez9udW1iZXI9fSBpVGltZU91dCA9IDIwMDAwXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gc0dldEFkZCA9ICcnXG5cdCAqIEBwYXJhbSB7QXJyYXk9fSBhQWJvcnRBY3Rpb25zID0gW11cblx0ICogQHJldHVybnMge2pRdWVyeS5qcVhIUn1cblx0ICovXG5cdGFqYXhSZXF1ZXN0KGZSZXN1bHRDYWxsYmFjaywgcGFyYW1zLCBpVGltZU91dCA9IDIwMDAwLCBzR2V0QWRkID0gJycsIGFib3J0QWN0aW9ucyA9IFtdKSB7XG5cdFx0Y29uc3QgaXNQb3N0ID0gJycgPT09IHNHZXRBZGQsXG5cdFx0XHRoZWFkZXJzID0ge30sXG5cdFx0XHRzdGFydCA9IG5ldyB3aW5kb3cuRGF0ZSgpLmdldFRpbWUoKTtcblxuXHRcdGxldCBhY3Rpb24gPSAnJztcblxuXHRcdHBhcmFtcyA9IHBhcmFtcyB8fCB7fTtcblx0XHRhY3Rpb24gPSBwYXJhbXMuQWN0aW9uIHx8ICcnO1xuXG5cdFx0aWYgKGFjdGlvbiAmJiAwIDwgYWJvcnRBY3Rpb25zLmxlbmd0aCkge1xuXHRcdFx0Xy5lYWNoKGFib3J0QWN0aW9ucywgKGFjdGlvblRvQWJvcnQpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMub1JlcXVlc3RzW2FjdGlvblRvQWJvcnRdKSB7XG5cdFx0XHRcdFx0dGhpcy5vUmVxdWVzdHNbYWN0aW9uVG9BYm9ydF0uX19hYm9ydGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAodGhpcy5vUmVxdWVzdHNbYWN0aW9uVG9BYm9ydF0uYWJvcnQpIHtcblx0XHRcdFx0XHRcdHRoaXMub1JlcXVlc3RzW2FjdGlvblRvQWJvcnRdLmFib3J0KCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMub1JlcXVlc3RzW2FjdGlvblRvQWJvcnRdID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKGlzUG9zdCkge1xuXHRcdFx0cGFyYW1zLlhUb2tlbiA9IFNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCd0b2tlbicpO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9EZWZBamF4ID0gJC5hamF4KHtcblx0XHRcdHR5cGU6IGlzUG9zdCA/ICdQT1NUJyA6ICdHRVQnLFxuXHRcdFx0dXJsOiBhamF4KHNHZXRBZGQpLFxuXHRcdFx0YXN5bmM6IHRydWUsXG5cdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0ZGF0YTogaXNQb3N0ID8gcGFyYW1zIDoge30sXG5cdFx0XHRoZWFkZXJzOiBoZWFkZXJzLFxuXHRcdFx0dGltZW91dDogaVRpbWVPdXQsXG5cdFx0XHRnbG9iYWw6IHRydWVcblx0XHR9KTtcblxuXHRcdG9EZWZBamF4LmFsd2F5cygob0RhdGEsIHNUeXBlKSA9PiB7XG5cdFx0XHRsZXQgY2FjaGVkID0gZmFsc2U7XG5cdFx0XHRpZiAob0RhdGEgJiYgb0RhdGEuVGltZSkge1xuXHRcdFx0XHRjYWNoZWQgPSBwSW50KG9EYXRhLlRpbWUpID4gbmV3IHdpbmRvdy5EYXRlKCkuZ2V0VGltZSgpIC0gc3RhcnQ7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChvRGF0YSAmJiBvRGF0YS5VcGRhdGVUb2tlbikge1xuXHRcdFx0XHRpZiAoR2xvYmFsc0RhdGEuX19BUFBfXyAmJiBHbG9iYWxzRGF0YS5fX0FQUF9fLnNldENsaWVudFNpZGVUb2tlbikge1xuXHRcdFx0XHRcdEdsb2JhbHNEYXRhLl9fQVBQX18uc2V0Q2xpZW50U2lkZVRva2VuKG9EYXRhLlVwZGF0ZVRva2VuKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoYWN0aW9uICYmIHRoaXMub1JlcXVlc3RzW2FjdGlvbl0pIHtcblx0XHRcdFx0aWYgKHRoaXMub1JlcXVlc3RzW2FjdGlvbl0uX19hYm9ydGVkKSB7XG5cdFx0XHRcdFx0c1R5cGUgPSAnYWJvcnQnO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5vUmVxdWVzdHNbYWN0aW9uXSA9IG51bGw7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuZGVmYXVsdFJlc3BvbnNlKGZSZXN1bHRDYWxsYmFjaywgYWN0aW9uLCBzVHlwZSwgb0RhdGEsIGNhY2hlZCwgcGFyYW1zKTtcblx0XHR9KTtcblxuXHRcdGlmIChhY3Rpb24gJiYgMCA8IGFib3J0QWN0aW9ucy5sZW5ndGggJiYgLTEgPCBpbkFycmF5KGFjdGlvbiwgYWJvcnRBY3Rpb25zKSkge1xuXHRcdFx0aWYgKHRoaXMub1JlcXVlc3RzW2FjdGlvbl0pIHtcblx0XHRcdFx0dGhpcy5vUmVxdWVzdHNbYWN0aW9uXS5fX2Fib3J0ZWQgPSB0cnVlO1xuXHRcdFx0XHRpZiAodGhpcy5vUmVxdWVzdHNbYWN0aW9uXS5hYm9ydCkge1xuXHRcdFx0XHRcdHRoaXMub1JlcXVlc3RzW2FjdGlvbl0uYWJvcnQoKTtcblx0XHRcdFx0fVxuXHRcdFx0XHR0aGlzLm9SZXF1ZXN0c1thY3Rpb25dID0gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5vUmVxdWVzdHNbYWN0aW9uXSA9IG9EZWZBamF4O1xuXHRcdH1cblxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG5cdFx0b0RlZkFqYXguY2F0Y2goY29uc29sZS5sb2cpO1xuXHRcdHJldHVybiBvRGVmQWpheDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzQWN0aW9uXG5cdCAqIEBwYXJhbSB7T2JqZWN0PX0gb1BhcmFtZXRlcnNcblx0ICogQHBhcmFtIHs/bnVtYmVyPX0gaVRpbWVvdXRcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBzR2V0QWRkID0gJydcblx0ICogQHBhcmFtIHtBcnJheT19IGFBYm9ydEFjdGlvbnMgPSBbXVxuXHQgKi9cblx0ZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCBzQWN0aW9uLCBvUGFyYW1ldGVycywgaVRpbWVvdXQsIHNHZXRBZGQsIGFBYm9ydEFjdGlvbnMpIHtcblx0XHRvUGFyYW1ldGVycyA9IG9QYXJhbWV0ZXJzIHx8IHt9O1xuXHRcdG9QYXJhbWV0ZXJzLkFjdGlvbiA9IHNBY3Rpb247XG5cblx0XHRzR2V0QWRkID0gcFN0cmluZyhzR2V0QWRkKTtcblxuXHRcdHJ1bkhvb2soJ2FqYXgtZGVmYXVsdC1yZXF1ZXN0JywgW3NBY3Rpb24sIG9QYXJhbWV0ZXJzLCBzR2V0QWRkXSk7XG5cblx0XHRyZXR1cm4gdGhpcy5hamF4UmVxdWVzdChcblx0XHRcdGZDYWxsYmFjayxcblx0XHRcdG9QYXJhbWV0ZXJzLFxuXHRcdFx0aXNVbmQoaVRpbWVvdXQpID8gREVGQVVMVF9BSkFYX1RJTUVPVVQgOiBwSW50KGlUaW1lb3V0KSxcblx0XHRcdHNHZXRBZGQsXG5cdFx0XHRhQWJvcnRBY3Rpb25zXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZkNhbGxiYWNrXG5cdCAqL1xuXHRub29wKGZDYWxsYmFjaykge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnTm9vcCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICovXG5cdGdldFB1YmxpY0tleShmQ2FsbGJhY2spIHtcblx0XHR0aGlzLmRlZmF1bHRSZXF1ZXN0KGZDYWxsYmFjaywgJ0dldFB1YmxpY0tleScpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBmQ2FsbGJhY2tcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNWZXJzaW9uXG5cdCAqL1xuXHRqc1ZlcnNpb24oZkNhbGxiYWNrLCBzVmVyc2lvbikge1xuXHRcdHRoaXMuZGVmYXVsdFJlcXVlc3QoZkNhbGxiYWNrLCAnVmVyc2lvbicsIHtcblx0XHRcdCdWZXJzaW9uJzogc1ZlcnNpb25cblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgeyBBYnN0cmFjdEFqYXhSZW1vdGUsIEFic3RyYWN0QWpheFJlbW90ZSBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCAkIGZyb20gJyQnO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgVklFV19NT0RFTFMgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5pbXBvcnQgeyBkZWxlZ2F0ZVJ1biwgd2luZG93UmVzaXplLCBsb2csIGlzVW5kLCBwU3RyaW5nIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IHNldHRpbmdzIH0gZnJvbSAnQ29tbW9uL0xpbmtzJztcblxuaW1wb3J0IHsgc2V0SGFzaCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0U2NyZWVuIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RTY3JlZW4nO1xuXG5jbGFzcyBBYnN0cmFjdFNldHRpbmdzU2NyZWVuIGV4dGVuZHMgQWJzdHJhY3RTY3JlZW4ge1xuXHQvKipcblx0ICogQHBhcmFtIHtBcnJheX0gdmlld01vZGVsc1xuXHQgKi9cblx0Y29uc3RydWN0b3Iodmlld01vZGVscykge1xuXHRcdHN1cGVyKCdzZXR0aW5ncycsIHZpZXdNb2RlbHMpO1xuXG5cdFx0dGhpcy5tZW51ID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblxuXHRcdHRoaXMub0N1cnJlbnRTdWJTY3JlZW4gPSBudWxsO1xuXHRcdHRoaXMub1ZpZXdNb2RlbFBsYWNlID0gbnVsbDtcblxuXHRcdHRoaXMuc2V0dXBTZXR0aW5ncygpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb249fSBmQ2FsbGJhY2tcblx0ICovXG5cdHNldHVwU2V0dGluZ3MoZkNhbGxiYWNrID0gbnVsbCkge1xuXHRcdGlmIChmQ2FsbGJhY2spIHtcblx0XHRcdGZDYWxsYmFjaygpO1xuXHRcdH1cblx0fVxuXG5cdG9uUm91dGUoc3ViTmFtZSkge1xuXHRcdGxldCBzZXR0aW5nc1NjcmVlbiA9IG51bGwsXG5cdFx0XHRSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbCA9IG51bGwsXG5cdFx0XHR2aWV3TW9kZWxQbGFjZSA9IG51bGwsXG5cdFx0XHR2aWV3TW9kZWxEb20gPSBudWxsO1xuXG5cdFx0Um91dGVkU2V0dGluZ3NWaWV3TW9kZWwgPSBfLmZpbmQoXG5cdFx0XHRWSUVXX01PREVMUy5zZXR0aW5ncyxcblx0XHRcdChTZXR0aW5nc1ZpZXdNb2RlbCkgPT5cblx0XHRcdFx0U2V0dGluZ3NWaWV3TW9kZWwgJiYgU2V0dGluZ3NWaWV3TW9kZWwuX19ybFNldHRpbmdzRGF0YSAmJiBzdWJOYW1lID09PSBTZXR0aW5nc1ZpZXdNb2RlbC5fX3JsU2V0dGluZ3NEYXRhLlJvdXRlXG5cdFx0KTtcblxuXHRcdGlmIChSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbCkge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRfLmZpbmQoXG5cdFx0XHRcdFx0VklFV19NT0RFTFNbJ3NldHRpbmdzLXJlbW92ZWQnXSxcblx0XHRcdFx0XHQoRGlzYWJsZWRTZXR0aW5nc1ZpZXdNb2RlbCkgPT5cblx0XHRcdFx0XHRcdERpc2FibGVkU2V0dGluZ3NWaWV3TW9kZWwgJiYgRGlzYWJsZWRTZXR0aW5nc1ZpZXdNb2RlbCA9PT0gUm91dGVkU2V0dGluZ3NWaWV3TW9kZWxcblx0XHRcdFx0KVxuXHRcdFx0KSB7XG5cdFx0XHRcdFJvdXRlZFNldHRpbmdzVmlld01vZGVsID0gbnVsbDtcblx0XHRcdH1cblxuXHRcdFx0aWYgKFxuXHRcdFx0XHRSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbCAmJlxuXHRcdFx0XHRfLmZpbmQoXG5cdFx0XHRcdFx0VklFV19NT0RFTFNbJ3NldHRpbmdzLWRpc2FibGVkJ10sXG5cdFx0XHRcdFx0KERpc2FibGVkU2V0dGluZ3NWaWV3TW9kZWwpID0+XG5cdFx0XHRcdFx0XHREaXNhYmxlZFNldHRpbmdzVmlld01vZGVsICYmIERpc2FibGVkU2V0dGluZ3NWaWV3TW9kZWwgPT09IFJvdXRlZFNldHRpbmdzVmlld01vZGVsXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHRSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbCA9IG51bGw7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKFJvdXRlZFNldHRpbmdzVmlld01vZGVsKSB7XG5cdFx0XHRpZiAoUm91dGVkU2V0dGluZ3NWaWV3TW9kZWwuX19idWlsZGVkICYmIFJvdXRlZFNldHRpbmdzVmlld01vZGVsLl9fdm0pIHtcblx0XHRcdFx0c2V0dGluZ3NTY3JlZW4gPSBSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbC5fX3ZtO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmlld01vZGVsUGxhY2UgPSB0aGlzLm9WaWV3TW9kZWxQbGFjZTtcblx0XHRcdFx0aWYgKHZpZXdNb2RlbFBsYWNlICYmIDEgPT09IHZpZXdNb2RlbFBsYWNlLmxlbmd0aCkge1xuXHRcdFx0XHRcdHNldHRpbmdzU2NyZWVuID0gbmV3IFJvdXRlZFNldHRpbmdzVmlld01vZGVsKCk7XG5cblx0XHRcdFx0XHR2aWV3TW9kZWxEb20gPSAkKCc8ZGl2PjwvZGl2PicpXG5cdFx0XHRcdFx0XHQuYWRkQ2xhc3MoJ3JsLXNldHRpbmdzLXZpZXctbW9kZWwnKVxuXHRcdFx0XHRcdFx0LmhpZGUoKTtcblx0XHRcdFx0XHR2aWV3TW9kZWxEb20uYXBwZW5kVG8odmlld01vZGVsUGxhY2UpO1xuXG5cdFx0XHRcdFx0c2V0dGluZ3NTY3JlZW4udmlld01vZGVsRG9tID0gdmlld01vZGVsRG9tO1xuXG5cdFx0XHRcdFx0c2V0dGluZ3NTY3JlZW4uX19ybFNldHRpbmdzRGF0YSA9IFJvdXRlZFNldHRpbmdzVmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGE7XG5cblx0XHRcdFx0XHRSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbC5fX2RvbSA9IHZpZXdNb2RlbERvbTtcblx0XHRcdFx0XHRSb3V0ZWRTZXR0aW5nc1ZpZXdNb2RlbC5fX2J1aWxkZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFJvdXRlZFNldHRpbmdzVmlld01vZGVsLl9fdm0gPSBzZXR0aW5nc1NjcmVlbjtcblxuXHRcdFx0XHRcdGNvbnN0IHRtcGwgPSB7IG5hbWU6IFJvdXRlZFNldHRpbmdzVmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGEuVGVtcGxhdGUgfTtcblx0XHRcdFx0XHRrby5hcHBseUJpbmRpbmdBY2Nlc3NvcnNUb05vZGUoXG5cdFx0XHRcdFx0XHR2aWV3TW9kZWxEb21bMF0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHRyYW5zbGF0b3JJbml0OiB0cnVlLFxuXHRcdFx0XHRcdFx0XHR0ZW1wbGF0ZTogKCkgPT4gdG1wbFxuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdHNldHRpbmdzU2NyZWVuXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGRlbGVnYXRlUnVuKHNldHRpbmdzU2NyZWVuLCAnb25CdWlsZCcsIFt2aWV3TW9kZWxEb21dKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRsb2coJ0Nhbm5vdCBmaW5kIHN1YiBzZXR0aW5ncyB2aWV3IG1vZGVsIHBvc2l0aW9uOiBTZXR0aW5nc1N1YlNjcmVlbicpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChzZXR0aW5nc1NjcmVlbikge1xuXHRcdFx0XHRfLmRlZmVyKCgpID0+IHtcblx0XHRcdFx0XHQvLyBoaWRlXG5cdFx0XHRcdFx0aWYgKHRoaXMub0N1cnJlbnRTdWJTY3JlZW4pIHtcblx0XHRcdFx0XHRcdGRlbGVnYXRlUnVuKHRoaXMub0N1cnJlbnRTdWJTY3JlZW4sICdvbkhpZGUnKTtcblx0XHRcdFx0XHRcdHRoaXMub0N1cnJlbnRTdWJTY3JlZW4udmlld01vZGVsRG9tLmhpZGUoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly8gLS1cblxuXHRcdFx0XHRcdHRoaXMub0N1cnJlbnRTdWJTY3JlZW4gPSBzZXR0aW5nc1NjcmVlbjtcblxuXHRcdFx0XHRcdC8vIHNob3dcblx0XHRcdFx0XHRpZiAodGhpcy5vQ3VycmVudFN1YlNjcmVlbikge1xuXHRcdFx0XHRcdFx0ZGVsZWdhdGVSdW4odGhpcy5vQ3VycmVudFN1YlNjcmVlbiwgJ29uQmVmb3JlU2hvdycpO1xuXHRcdFx0XHRcdFx0dGhpcy5vQ3VycmVudFN1YlNjcmVlbi52aWV3TW9kZWxEb20uc2hvdygpO1xuXHRcdFx0XHRcdFx0ZGVsZWdhdGVSdW4odGhpcy5vQ3VycmVudFN1YlNjcmVlbiwgJ29uU2hvdycpO1xuXHRcdFx0XHRcdFx0ZGVsZWdhdGVSdW4odGhpcy5vQ3VycmVudFN1YlNjcmVlbiwgJ29uU2hvd1dpdGhEZWxheScsIFtdLCAyMDApO1xuXG5cdFx0XHRcdFx0XHRfLmVhY2godGhpcy5tZW51KCksIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGl0ZW0uc2VsZWN0ZWQoXG5cdFx0XHRcdFx0XHRcdFx0c2V0dGluZ3NTY3JlZW4gJiZcblx0XHRcdFx0XHRcdFx0XHRcdHNldHRpbmdzU2NyZWVuLl9fcmxTZXR0aW5nc0RhdGEgJiZcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZW0ucm91dGUgPT09IHNldHRpbmdzU2NyZWVuLl9fcmxTZXR0aW5nc0RhdGEuUm91dGVcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHQkKCcjcmwtY29udGVudCAuYi1zZXR0aW5ncyAuYi1jb250ZW50IC5jb250ZW50Jykuc2Nyb2xsVG9wKDApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvLyAtLVxuXG5cdFx0XHRcdFx0d2luZG93UmVzaXplKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZXRIYXNoKHNldHRpbmdzKCksIGZhbHNlLCB0cnVlKTtcblx0XHR9XG5cdH1cblxuXHRvbkhpZGUoKSB7XG5cdFx0aWYgKHRoaXMub0N1cnJlbnRTdWJTY3JlZW4gJiYgdGhpcy5vQ3VycmVudFN1YlNjcmVlbi52aWV3TW9kZWxEb20pIHtcblx0XHRcdGRlbGVnYXRlUnVuKHRoaXMub0N1cnJlbnRTdWJTY3JlZW4sICdvbkhpZGUnKTtcblx0XHRcdHRoaXMub0N1cnJlbnRTdWJTY3JlZW4udmlld01vZGVsRG9tLmhpZGUoKTtcblx0XHR9XG5cdH1cblxuXHRvbkJ1aWxkKCkge1xuXHRcdF8uZWFjaChWSUVXX01PREVMUy5zZXR0aW5ncywgKFNldHRpbmdzVmlld01vZGVsKSA9PiB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdFNldHRpbmdzVmlld01vZGVsICYmXG5cdFx0XHRcdFNldHRpbmdzVmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGEgJiZcblx0XHRcdFx0IV8uZmluZChcblx0XHRcdFx0XHRWSUVXX01PREVMU1snc2V0dGluZ3MtcmVtb3ZlZCddLFxuXHRcdFx0XHRcdChSZW1vdmVTZXR0aW5nc1ZpZXdNb2RlbCkgPT4gUmVtb3ZlU2V0dGluZ3NWaWV3TW9kZWwgJiYgUmVtb3ZlU2V0dGluZ3NWaWV3TW9kZWwgPT09IFNldHRpbmdzVmlld01vZGVsXG5cdFx0XHRcdClcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLm1lbnUucHVzaCh7XG5cdFx0XHRcdFx0cm91dGU6IFNldHRpbmdzVmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGEuUm91dGUsXG5cdFx0XHRcdFx0bGFiZWw6IFNldHRpbmdzVmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGEuTGFiZWwsXG5cdFx0XHRcdFx0c2VsZWN0ZWQ6IGtvLm9ic2VydmFibGUoZmFsc2UpLFxuXHRcdFx0XHRcdGRpc2FibGVkOiAhIV8uZmluZChcblx0XHRcdFx0XHRcdFZJRVdfTU9ERUxTWydzZXR0aW5ncy1kaXNhYmxlZCddLFxuXHRcdFx0XHRcdFx0KERpc2FibGVkU2V0dGluZ3NWaWV3TW9kZWwpID0+IERpc2FibGVkU2V0dGluZ3NWaWV3TW9kZWwgJiYgRGlzYWJsZWRTZXR0aW5nc1ZpZXdNb2RlbCA9PT0gU2V0dGluZ3NWaWV3TW9kZWxcblx0XHRcdFx0XHQpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5vVmlld01vZGVsUGxhY2UgPSAkKCcjcmwtY29udGVudCAjcmwtc2V0dGluZ3Mtc3Vic2NyZWVuJyk7XG5cdH1cblxuXHRyb3V0ZXMoKSB7XG5cdFx0Y29uc3QgRGVmYXVsdFZpZXdNb2RlbCA9IF8uZmluZChcblx0XHRcdFx0VklFV19NT0RFTFMuc2V0dGluZ3MsXG5cdFx0XHRcdChTZXR0aW5nc1ZpZXdNb2RlbCkgPT5cblx0XHRcdFx0XHRTZXR0aW5nc1ZpZXdNb2RlbCAmJiBTZXR0aW5nc1ZpZXdNb2RlbC5fX3JsU2V0dGluZ3NEYXRhICYmIFNldHRpbmdzVmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGEuSXNEZWZhdWx0XG5cdFx0XHQpLFxuXHRcdFx0ZGVmYXVsdFJvdXRlID1cblx0XHRcdFx0RGVmYXVsdFZpZXdNb2RlbCAmJiBEZWZhdWx0Vmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGEgPyBEZWZhdWx0Vmlld01vZGVsLl9fcmxTZXR0aW5nc0RhdGEuUm91dGUgOiAnZ2VuZXJhbCcsXG5cdFx0XHRydWxlcyA9IHtcblx0XHRcdFx0c3VibmFtZTogL14oLiopJC8sXG5cdFx0XHRcdG5vcm1hbGl6ZV86IChycXVlc3QsIHZhbHMpID0+IHtcblx0XHRcdFx0XHR2YWxzLnN1Ym5hbWUgPSBpc1VuZCh2YWxzLnN1Ym5hbWUpID8gZGVmYXVsdFJvdXRlIDogcFN0cmluZyh2YWxzLnN1Ym5hbWUpO1xuXHRcdFx0XHRcdHJldHVybiBbdmFscy5zdWJuYW1lXTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdHJldHVybiBbXG5cdFx0XHRbJ3tzdWJuYW1lfS8nLCBydWxlc10sXG5cdFx0XHRbJ3tzdWJuYW1lfScsIHJ1bGVzXSxcblx0XHRcdFsnJywgcnVsZXNdXG5cdFx0XTtcblx0fVxufVxuXG5leHBvcnQgeyBBYnN0cmFjdFNldHRpbmdzU2NyZWVuLCBBYnN0cmFjdFNldHRpbmdzU2NyZWVuIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCAkIGZyb20gJyQnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IGtleSBmcm9tICdrZXknO1xuaW1wb3J0IHNzbSBmcm9tICdzc20nO1xuXG5pbXBvcnQge1xuXHQkd2luLFxuXHQkaHRtbCxcblx0JGRvYyxcblx0bGVmdFBhbmVsRGlzYWJsZWQsXG5cdGxlZnRQYW5lbFR5cGUsXG5cdHNVc2VyQWdlbnQsXG5cdGJNb2JpbGVEZXZpY2UsXG5cdGJBbmltYXRpb25TdXBwb3J0ZWRcbn0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuXG5pbXBvcnQgeyBpc05vcm1hbCwgcFN0cmluZywgZGV0ZWN0RHJvcGRvd25WaXNpYmlsaXR5LCB3aW5kb3dSZXNpemVDYWxsYmFjayB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmltcG9ydCB7IEtleVN0YXRlLCBNYWdpY3MgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgcm9vdCwgcm9vdEFkbWluLCByb290VXNlciwgcG9wdWxhdGVBdXRoU3VmZml4IH0gZnJvbSAnQ29tbW9uL0xpbmtzJztcbmltcG9ydCB7IGluaXRPblN0YXJ0T3JMYW5nQ2hhbmdlLCBpbml0Tm90aWZpY2F0aW9uTGFuZ3VhZ2UgfSBmcm9tICdDb21tb24vVHJhbnNsYXRvcic7XG5pbXBvcnQgKiBhcyBFdmVudHMgZnJvbSAnQ29tbW9uL0V2ZW50cyc7XG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxuaW1wb3J0IExhbmd1YWdlU3RvcmUgZnJvbSAnU3RvcmVzL0xhbmd1YWdlJztcbmltcG9ydCBUaGVtZVN0b3JlIGZyb20gJ1N0b3Jlcy9UaGVtZSc7XG5pbXBvcnQgU29jaWFsU3RvcmUgZnJvbSAnU3RvcmVzL1NvY2lhbCc7XG5cbmltcG9ydCB7IHJvdXRlT2ZmLCBzZXRIYXNoIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RCb290IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RCb290JztcblxuY2xhc3MgQWJzdHJhY3RBcHAgZXh0ZW5kcyBBYnN0cmFjdEJvb3Qge1xuXHQvKipcblx0ICogQHBhcmFtIHtSZW1vdGVTdG9yYWdlfEFkbWluUmVtb3RlU3RvcmFnZX0gUmVtb3RlXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5nb29nbGVQcmV2aWV3U3VwcG9ydGVkQ2FjaGUgPSBudWxsO1xuXHRcdHRoaXMuaXNMb2NhbEF1dG9jb21wbGV0ZSA9IHRydWU7XG5cdFx0dGhpcy5pZnJhbWUgPSBudWxsO1xuXHRcdHRoaXMubGFzdEVycm9yVGltZSA9IDA7XG5cblx0XHR0aGlzLmlmcmFtZSA9ICQoJzxpZnJhbWUgY2xhc3M9XCJpbnRlcm5hbC1oaWRkZGVuXCIgLz4nKS5hcHBlbmRUbygnYm9keScpO1xuXG5cdFx0JHdpbi5vbigncmVzaXplJywgKCkgPT4ge1xuXHRcdFx0RXZlbnRzLnB1Yignd2luZG93LnJlc2l6ZScpO1xuXHRcdH0pO1xuXG5cdFx0RXZlbnRzLnN1Yihcblx0XHRcdCd3aW5kb3cucmVzaXplJyxcblx0XHRcdF8udGhyb3R0bGUoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBpSCA9ICR3aW4uaGVpZ2h0KCksXG5cdFx0XHRcdFx0aVcgPSAkd2luLmhlaWdodCgpO1xuXG5cdFx0XHRcdGlmICgkd2luLl9fc2l6ZXNbMF0gIT09IGlIIHx8ICR3aW4uX19zaXplc1sxXSAhPT0gaVcpIHtcblx0XHRcdFx0XHQkd2luLl9fc2l6ZXNbMF0gPSBpSDtcblx0XHRcdFx0XHQkd2luLl9fc2l6ZXNbMV0gPSBpVztcblxuXHRcdFx0XHRcdEV2ZW50cy5wdWIoJ3dpbmRvdy5yZXNpemUucmVhbCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCBNYWdpY3MuVGltZTUwbXMpXG5cdFx0KTtcblxuXHRcdC8vIERFQlVHXG5cdFx0Ly9cdFx0RXZlbnRzLnN1Yih7XG5cdFx0Ly9cdFx0XHQnd2luZG93LnJlc2l6ZSc6IGZ1bmN0aW9uKCkge1xuXHRcdC8vXHRcdFx0XHR3aW5kb3cuY29uc29sZS5sb2coJ3dpbmRvdy5yZXNpemUnKTtcblx0XHQvL1x0XHRcdH0sXG5cdFx0Ly9cdFx0XHQnd2luZG93LnJlc2l6ZS5yZWFsJzogZnVuY3Rpb24oKSB7XG5cdFx0Ly9cdFx0XHRcdHdpbmRvdy5jb25zb2xlLmxvZygnd2luZG93LnJlc2l6ZS5yZWFsJyk7XG5cdFx0Ly9cdFx0XHR9XG5cdFx0Ly9cdFx0fSk7XG5cblx0XHQkZG9jXG5cdFx0XHQub24oJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50ICYmIGV2ZW50LmN0cmxLZXkpIHtcblx0XHRcdFx0XHQkaHRtbC5hZGRDbGFzcygncmwtY3RybC1rZXktcHJlc3NlZCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdrZXl1cCcsIChldmVudCkgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQgJiYgIWV2ZW50LmN0cmxLZXkpIHtcblx0XHRcdFx0XHQkaHRtbC5yZW1vdmVDbGFzcygncmwtY3RybC1rZXktcHJlc3NlZCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdCRkb2Mub24oXG5cdFx0XHQnbW91c2Vtb3ZlIGtleXByZXNzIGNsaWNrJyxcblx0XHRcdF8uZGVib3VuY2UoKCkgPT4ge1xuXHRcdFx0XHRFdmVudHMucHViKCdybC5hdXRvLWxvZ291dC1yZWZyZXNoJyk7XG5cdFx0XHR9LCBNYWdpY3MuVGltZTVzKVxuXHRcdCk7XG5cblx0XHRrZXkoJ2VzYywgZW50ZXInLCBLZXlTdGF0ZS5BbGwsICgpID0+IHtcblx0XHRcdGRldGVjdERyb3Bkb3duVmlzaWJpbGl0eSgpO1xuXHRcdH0pO1xuXHR9XG5cblx0cmVtb3RlKCkge1xuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGdldEFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbihuYW1lLCBkZWZhdWx0Xykge1xuXHRcdHJldHVybiB0aGlzLmFwcGxpY2F0aW9uQ29uZmlndXJhdGlvbltuYW1lXSB8fCBkZWZhdWx0Xztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbGlua1xuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGRvd25sb2FkKGxpbmspIHtcblx0XHRpZiAoc1VzZXJBZ2VudCAmJiAoLTEgPCBzVXNlckFnZW50LmluZGV4T2YoJ2Nocm9tZScpIHx8IC0xIDwgc1VzZXJBZ2VudC5pbmRleE9mKCdjaHJvbWUnKSkpIHtcblx0XHRcdGNvbnN0IG9MaW5rID0gd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcblx0XHRcdG9MaW5rLmhyZWYgPSBsaW5rO1xuXG5cdFx0XHRpZiAod2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFdmVudCkge1xuXHRcdFx0XHRjb25zdCBvRSA9IHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFdmVudC5Nb3VzZUV2ZW50cztcblx0XHRcdFx0aWYgKG9FICYmIG9FLmluaXRFdmVudCAmJiBvTGluay5kaXNwYXRjaEV2ZW50KSB7XG5cdFx0XHRcdFx0b0UuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuXHRcdFx0XHRcdG9MaW5rLmRpc3BhdGNoRXZlbnQob0UpO1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKGJNb2JpbGVEZXZpY2UpIHtcblx0XHRcdHdpbmRvdy5vcGVuKGxpbmssICdfc2VsZicpO1xuXHRcdFx0d2luZG93LmZvY3VzKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuaWZyYW1lLmF0dHIoJ3NyYycsIGxpbmspO1xuXHRcdFx0Ly8gd2luZG93LmRvY3VtZW50LmxvY2F0aW9uLmhyZWYgPSBsaW5rO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0Z29vZ2xlUHJldmlld1N1cHBvcnRlZCgpIHtcblx0XHRpZiAobnVsbCA9PT0gdGhpcy5nb29nbGVQcmV2aWV3U3VwcG9ydGVkQ2FjaGUpIHtcblx0XHRcdHRoaXMuZ29vZ2xlUHJldmlld1N1cHBvcnRlZENhY2hlID1cblx0XHRcdFx0ISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnQWxsb3dHb29nbGVTb2NpYWwnKSAmJiAhIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0dvb2dsZVNvY2lhbFByZXZpZXcnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGhpcy5nb29nbGVQcmV2aWV3U3VwcG9ydGVkQ2FjaGU7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlXG5cdCAqL1xuXHRzZXRXaW5kb3dUaXRsZSh0aXRsZSkge1xuXHRcdHRpdGxlID0gaXNOb3JtYWwodGl0bGUpICYmIDAgPCB0aXRsZS5sZW5ndGggPyAnJyArIHRpdGxlIDogJyc7XG5cdFx0aWYgKFNldHRpbmdzLnNldHRpbmdzR2V0KCdUaXRsZScpKSB7XG5cdFx0XHR0aXRsZSArPSAodGl0bGUgPyAnIC0gJyA6ICcnKSArIFNldHRpbmdzLnNldHRpbmdzR2V0KCdUaXRsZScpO1xuXHRcdH1cblxuXHRcdHdpbmRvdy5kb2N1bWVudC50aXRsZSA9IHRpdGxlICsgJyAuLi4nO1xuXHRcdHdpbmRvdy5kb2N1bWVudC50aXRsZSA9IHRpdGxlO1xuXHR9XG5cblx0cmVkaXJlY3RUb0FkbWluUGFuZWwoKSB7XG5cdFx0Xy5kZWxheSgoKSA9PiB7XG5cdFx0XHR3aW5kb3cubG9jYXRpb24uaHJlZiA9IHJvb3RBZG1pbigpO1xuXHRcdH0sIE1hZ2ljcy5UaW1lMTAwbXMpO1xuXHR9XG5cblx0Y2xlYXJDbGllbnRTaWRlVG9rZW4oKSB7XG5cdFx0aWYgKHdpbmRvdy5fX3JsYWhfY2xlYXIpIHtcblx0XHRcdHdpbmRvdy5fX3JsYWhfY2xlYXIoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRva2VuXG5cdCAqL1xuXHRzZXRDbGllbnRTaWRlVG9rZW4odG9rZW4pIHtcblx0XHRpZiAod2luZG93Ll9fcmxhaF9zZXQpIHtcblx0XHRcdHdpbmRvdy5fX3JsYWhfc2V0KHRva2VuKTtcblxuXHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NTZXQoJ0F1dGhBY2NvdW50SGFzaCcsIHRva2VuKTtcblx0XHRcdHBvcHVsYXRlQXV0aFN1ZmZpeCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSBhZG1pbiA9IGZhbHNlXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGxvZ291dCA9IGZhbHNlXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGNsb3NlID0gZmFsc2Vcblx0ICovXG5cdGxvZ2luQW5kTG9nb3V0UmVsb2FkKGFkbWluID0gZmFsc2UsIGxvZ291dCA9IGZhbHNlLCBjbG9zZSA9IGZhbHNlKSB7XG5cdFx0Y29uc3QgaW5JZnJhbWUgPSAhIVNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdpbklmcmFtZScpO1xuXHRcdGxldCBjdXN0b21Mb2dvdXRMaW5rID0gcFN0cmluZyhTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnY3VzdG9tTG9nb3V0TGluaycpKTtcblxuXHRcdGlmIChsb2dvdXQpIHtcblx0XHRcdHRoaXMuY2xlYXJDbGllbnRTaWRlVG9rZW4oKTtcblx0XHR9XG5cblx0XHRpZiAobG9nb3V0ICYmIGNsb3NlICYmIHdpbmRvdy5jbG9zZSkge1xuXHRcdFx0d2luZG93LmNsb3NlKCk7XG5cdFx0fVxuXG5cdFx0Y3VzdG9tTG9nb3V0TGluayA9IGN1c3RvbUxvZ291dExpbmsgfHwgKGFkbWluID8gcm9vdEFkbWluKCkgOiByb290VXNlcigpKTtcblxuXHRcdGlmIChsb2dvdXQgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYgIT09IGN1c3RvbUxvZ291dExpbmspIHtcblx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRpZiAoaW5JZnJhbWUgJiYgd2luZG93LnBhcmVudCkge1xuXHRcdFx0XHRcdHdpbmRvdy5wYXJlbnQubG9jYXRpb24uaHJlZiA9IGN1c3RvbUxvZ291dExpbms7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0d2luZG93LmxvY2F0aW9uLmhyZWYgPSBjdXN0b21Mb2dvdXRMaW5rO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHdpbi50cmlnZ2VyKCdybC50b29sdGlwcy5kaWFjdGl2YXRlJyk7XG5cdFx0XHR9LCBNYWdpY3MuVGltZTEwMG1zKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cm91dGVPZmYoKTtcblx0XHRcdHNldEhhc2gocm9vdCgpLCB0cnVlKTtcblx0XHRcdHJvdXRlT2ZmKCk7XG5cblx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRpZiAoaW5JZnJhbWUgJiYgd2luZG93LnBhcmVudCkge1xuXHRcdFx0XHRcdHdpbmRvdy5wYXJlbnQubG9jYXRpb24ucmVsb2FkKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JHdpbi50cmlnZ2VyKCdybC50b29sdGlwcy5kaWFjdGl2YXRlJyk7XG5cdFx0XHR9LCBNYWdpY3MuVGltZTEwMG1zKTtcblx0XHR9XG5cdH1cblxuXHRoaXN0b3J5QmFjaygpIHtcblx0XHR3aW5kb3cuaGlzdG9yeS5iYWNrKCk7XG5cdH1cblxuXHRib290c3RhcnQoKSB7XG5cdFx0Ly8gbG9nKCdQcycgKyAnc3MsIGhhYycgKyAna2VycyEgVGhlJyArICdyZVxcJ3Mgbm90JyArICdoaW5nIGludGUnICsgJ3Jlc3RpbmcgOicgKyAnKScpO1xuXG5cdFx0RXZlbnRzLnB1YigncmwuYm9vdHN0YXJ0Jyk7XG5cblx0XHRjb25zdCBtb2JpbGUgPSBTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJyk7XG5cblx0XHRrby5jb21wb25lbnRzLnJlZ2lzdGVyKCdTYXZlVHJpZ2dlcicsIHJlcXVpcmUoJ0NvbXBvbmVudC9TYXZlVHJpZ2dlcicpLmRlZmF1bHQpO1xuXHRcdGtvLmNvbXBvbmVudHMucmVnaXN0ZXIoJ0lucHV0JywgcmVxdWlyZSgnQ29tcG9uZW50L0lucHV0JykuZGVmYXVsdCk7XG5cdFx0a28uY29tcG9uZW50cy5yZWdpc3RlcignU2VsZWN0JywgcmVxdWlyZSgnQ29tcG9uZW50L1NlbGVjdCcpLmRlZmF1bHQpO1xuXHRcdGtvLmNvbXBvbmVudHMucmVnaXN0ZXIoJ1JhZGlvJywgcmVxdWlyZSgnQ29tcG9uZW50L1JhZGlvJykuZGVmYXVsdCk7XG5cdFx0a28uY29tcG9uZW50cy5yZWdpc3RlcignVGV4dEFyZWEnLCByZXF1aXJlKCdDb21wb25lbnQvVGV4dEFyZWEnKS5kZWZhdWx0KTtcblx0XHRrby5jb21wb25lbnRzLnJlZ2lzdGVyKCdEYXRlJywgcmVxdWlyZSgnQ29tcG9uZW50L0RhdGUnKS5kZWZhdWx0KTtcblxuXHRcdGtvLmNvbXBvbmVudHMucmVnaXN0ZXIoJ3gtc2NyaXB0JywgcmVxdWlyZSgnQ29tcG9uZW50L1NjcmlwdCcpLmRlZmF1bHQpO1xuXHRcdC8vIGtvLmNvbXBvbmVudHMucmVnaXN0ZXIoJ3N2Zy1pY29uJywgcmVxdWlyZSgnQ29tcG9uZW50L1N2Z0ljb24nKS5kZWZhdWx0KTtcblxuXHRcdGlmIChTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbWF0ZXJpYWxEZXNpZ24nKSAmJiBiQW5pbWF0aW9uU3VwcG9ydGVkKSB7XG5cdFx0XHRrby5jb21wb25lbnRzLnJlZ2lzdGVyKCdDaGVja2JveCcsIHJlcXVpcmUoJ0NvbXBvbmVudC9NYXRlcmlhbERlc2lnbi9DaGVja2JveCcpLmRlZmF1bHQpO1xuXHRcdFx0a28uY29tcG9uZW50cy5yZWdpc3RlcignQ2hlY2tib3hTaW1wbGUnLCByZXF1aXJlKCdDb21wb25lbnQvQ2hlY2tib3gnKS5kZWZhdWx0KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8ga28uY29tcG9uZW50cy5yZWdpc3RlcignQ2hlY2tib3gnLCByZXF1aXJlKCdDb21wb25lbnQvQ2xhc3NpYy9DaGVja2JveCcpLmRlZmF1bHQpO1xuXHRcdFx0Ly8ga28uY29tcG9uZW50cy5yZWdpc3RlcignQ2hlY2tib3hTaW1wbGUnLCByZXF1aXJlKCdDb21wb25lbnQvQ2xhc3NpYy9DaGVja2JveCcpLmRlZmF1bHQpO1xuXHRcdFx0a28uY29tcG9uZW50cy5yZWdpc3RlcignQ2hlY2tib3gnLCByZXF1aXJlKCdDb21wb25lbnQvQ2hlY2tib3gnKS5kZWZhdWx0KTtcblx0XHRcdGtvLmNvbXBvbmVudHMucmVnaXN0ZXIoJ0NoZWNrYm94U2ltcGxlJywgcmVxdWlyZSgnQ29tcG9uZW50L0NoZWNrYm94JykuZGVmYXVsdCk7XG5cdFx0fVxuXG5cdFx0aW5pdE9uU3RhcnRPckxhbmdDaGFuZ2UoaW5pdE5vdGlmaWNhdGlvbkxhbmd1YWdlKTtcblxuXHRcdF8uZGVsYXkod2luZG93UmVzaXplQ2FsbGJhY2ssIE1hZ2ljcy5UaW1lMXMpO1xuXG5cdFx0RXZlbnRzLnN1Yignc3NtLm1vYmlsZS1lbnRlcicsICgpID0+IHtcblx0XHRcdGxlZnRQYW5lbERpc2FibGVkKHRydWUpO1xuXHRcdH0pO1xuXG5cdFx0RXZlbnRzLnN1Yignc3NtLm1vYmlsZS1sZWF2ZScsICgpID0+IHtcblx0XHRcdGxlZnRQYW5lbERpc2FibGVkKGZhbHNlKTtcblx0XHR9KTtcblxuXHRcdGlmICghbW9iaWxlKSB7XG5cdFx0XHQkaHRtbC5hZGRDbGFzcygncmwtZGVza3RvcCcpO1xuXG5cdFx0XHRzc20uYWRkU3RhdGUoe1xuXHRcdFx0XHRpZDogJ21vYmlsZScsXG5cdFx0XHRcdHF1ZXJ5OiAnKG1heC13aWR0aDogNzY3cHgpJyxcblx0XHRcdFx0b25FbnRlcjogKCkgPT4ge1xuXHRcdFx0XHRcdCRodG1sLmFkZENsYXNzKCdzc20tc3RhdGUtbW9iaWxlJyk7XG5cdFx0XHRcdFx0RXZlbnRzLnB1Yignc3NtLm1vYmlsZS1lbnRlcicpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHRvbkxlYXZlOiAoKSA9PiB7XG5cdFx0XHRcdFx0JGh0bWwucmVtb3ZlQ2xhc3MoJ3NzbS1zdGF0ZS1tb2JpbGUnKTtcblx0XHRcdFx0XHRFdmVudHMucHViKCdzc20ubW9iaWxlLWxlYXZlJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRzc20uYWRkU3RhdGUoe1xuXHRcdFx0XHRpZDogJ3RhYmxldCcsXG5cdFx0XHRcdHF1ZXJ5OiAnKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5OTlweCknLFxuXHRcdFx0XHRvbkVudGVyOiAoKSA9PiB7XG5cdFx0XHRcdFx0JGh0bWwuYWRkQ2xhc3MoJ3NzbS1zdGF0ZS10YWJsZXQnKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0b25MZWF2ZTogKCkgPT4ge1xuXHRcdFx0XHRcdCRodG1sLnJlbW92ZUNsYXNzKCdzc20tc3RhdGUtdGFibGV0Jyk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRzc20uYWRkU3RhdGUoe1xuXHRcdFx0XHRpZDogJ2Rlc2t0b3AnLFxuXHRcdFx0XHRxdWVyeTogJyhtaW4td2lkdGg6IDEwMDBweCkgYW5kIChtYXgtd2lkdGg6IDE0MDBweCknLFxuXHRcdFx0XHRvbkVudGVyOiAoKSA9PiB7XG5cdFx0XHRcdFx0JGh0bWwuYWRkQ2xhc3MoJ3NzbS1zdGF0ZS1kZXNrdG9wJyk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdG9uTGVhdmU6ICgpID0+IHtcblx0XHRcdFx0XHQkaHRtbC5yZW1vdmVDbGFzcygnc3NtLXN0YXRlLWRlc2t0b3AnKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHNzbS5hZGRTdGF0ZSh7XG5cdFx0XHRcdGlkOiAnZGVza3RvcC1sYXJnZScsXG5cdFx0XHRcdHF1ZXJ5OiAnKG1pbi13aWR0aDogMTQwMXB4KScsXG5cdFx0XHRcdG9uRW50ZXI6ICgpID0+IHtcblx0XHRcdFx0XHQkaHRtbC5hZGRDbGFzcygnc3NtLXN0YXRlLWRlc2t0b3AtbGFyZ2UnKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0b25MZWF2ZTogKCkgPT4ge1xuXHRcdFx0XHRcdCRodG1sLnJlbW92ZUNsYXNzKCdzc20tc3RhdGUtZGVza3RvcC1sYXJnZScpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGh0bWwuYWRkQ2xhc3MoJ3NzbS1zdGF0ZS1tb2JpbGUnKS5hZGRDbGFzcygncmwtbW9iaWxlJyk7XG5cdFx0XHRFdmVudHMucHViKCdzc20ubW9iaWxlLWVudGVyJyk7XG5cdFx0fVxuXG5cdFx0bGVmdFBhbmVsRGlzYWJsZWQuc3Vic2NyaWJlKChiVmFsdWUpID0+IHtcblx0XHRcdCRodG1sLnRvZ2dsZUNsYXNzKCdybC1sZWZ0LXBhbmVsLWRpc2FibGVkJywgYlZhbHVlKTtcblx0XHRcdCRodG1sLnRvZ2dsZUNsYXNzKCdybC1sZWZ0LXBhbmVsLWVuYWJsZWQnLCAhYlZhbHVlKTtcblx0XHR9KTtcblxuXHRcdGxlZnRQYW5lbFR5cGUuc3Vic2NyaWJlKChzVmFsdWUpID0+IHtcblx0XHRcdCRodG1sLnRvZ2dsZUNsYXNzKCdybC1sZWZ0LXBhbmVsLW5vbmUnLCAnbm9uZScgPT09IHNWYWx1ZSk7XG5cdFx0XHQkaHRtbC50b2dnbGVDbGFzcygncmwtbGVmdC1wYW5lbC1zaG9ydCcsICdzaG9ydCcgPT09IHNWYWx1ZSk7XG5cdFx0fSk7XG5cblx0XHRsZWZ0UGFuZWxEaXNhYmxlZC52YWx1ZUhhc011dGF0ZWQoKTtcblxuXHRcdExhbmd1YWdlU3RvcmUucG9wdWxhdGUoKTtcblx0XHRUaGVtZVN0b3JlLnBvcHVsYXRlKCk7XG5cdFx0U29jaWFsU3RvcmUucG9wdWxhdGUoKTtcblx0fVxufVxuXG5leHBvcnQgeyBBYnN0cmFjdEFwcCwgQWJzdHJhY3RBcHAgYXMgZGVmYXVsdCB9O1xuIiwiZXhwb3J0IGNsYXNzIEFic3RyYWN0Qm9vdCB7XG5cdGJvb3RzdGFydCgpIHtcblx0XHQvKiBuby1lbXB0eSAqL1xuXHR9XG59XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyBpc1VuZCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudCB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdCc7XG5cbmNsYXNzIEFic3RyYWN0UmFkaW8gZXh0ZW5kcyBBYnN0cmFjdENvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihwYXJhbXMpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy52YWx1ZXMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXG5cdFx0dGhpcy52YWx1ZSA9IHBhcmFtcy52YWx1ZTtcblx0XHRpZiAoaXNVbmQodGhpcy52YWx1ZSkgfHwgIXRoaXMudmFsdWUuc3Vic2NyaWJlKSB7XG5cdFx0XHR0aGlzLnZhbHVlID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5pbmxpbmUgPSBpc1VuZChwYXJhbXMuaW5saW5lKSA/IGZhbHNlIDogcGFyYW1zLmlubGluZTtcblx0XHR0aGlzLnJlYWRPbmx5ID0gaXNVbmQocGFyYW1zLnJlYWRPbmx5KSA/IGZhbHNlIDogISFwYXJhbXMucmVhZE9ubHk7XG5cblx0XHRpZiAocGFyYW1zLnZhbHVlcykge1xuXHRcdFx0dGhpcy52YWx1ZXMoXy5tYXAocGFyYW1zLnZhbHVlcywgKGxhYmVsLCB2YWx1ZSkgPT4gKHsgbGFiZWw6IGxhYmVsLCB2YWx1ZTogdmFsdWUgfSkpKTtcblx0XHR9XG5cblx0XHR0aGlzLmNsaWNrID0gXy5iaW5kKHRoaXMuY2xpY2ssIHRoaXMpO1xuXHR9XG5cblx0Y2xpY2sodmFsdWUpIHtcblx0XHRpZiAoIXRoaXMucmVhZE9ubHkgJiYgdmFsdWUpIHtcblx0XHRcdHRoaXMudmFsdWUodmFsdWUudmFsdWUpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgeyBBYnN0cmFjdFJhZGlvLCBBYnN0cmFjdFJhZGlvIGFzIGRlZmF1bHQgfTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImNvcmUtanMtcHVyZS9zdGFibGUvaW5zdGFuY2Uva2V5c1wiKTsiLCJpbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IHsgaXNVbmQsIHBJbnQsIGZyaWVuZGx5U2l6ZSwgbWltZUNvbnRlbnRUeXBlLCBnZXRGaWxlRXh0ZW5zaW9uIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IHsgc3RhdGljSWNvbkNsYXNzLCBzdGF0aWNGaWxlVHlwZSB9IGZyb20gJ01vZGVsL0F0dGFjaG1lbnQnO1xuaW1wb3J0IHsgQWJzdHJhY3RNb2RlbCB9IGZyb20gJ0tub2luL0Fic3RyYWN0TW9kZWwnO1xuXG5jbGFzcyBDb21wb3NlQXR0YWNobWVudE1vZGVsIGV4dGVuZHMgQWJzdHJhY3RNb2RlbCB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gaWRcblx0ICogQHBhcmFtIHtzdHJpbmd9IGZpbGVOYW1lXG5cdCAqIEBwYXJhbSB7P251bWJlcj19IHNpemUgPSBudWxsXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGlzSW5saW5lID0gZmFsc2Vcblx0ICogQHBhcmFtIHtib29sZWFuPX0gaXNMaW5rZWQgPSBmYWxzZVxuXHQgKiBAcGFyYW0ge3N0cmluZz19IENJRCA9ICcnXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gY29udGVudExvY2F0aW9uID0gJydcblx0ICovXG5cdGNvbnN0cnVjdG9yKGlkLCBmaWxlTmFtZSwgc2l6ZSA9IG51bGwsIGlzSW5saW5lID0gZmFsc2UsIGlzTGlua2VkID0gZmFsc2UsIENJRCA9ICcnLCBjb250ZW50TG9jYXRpb24gPSAnJykge1xuXHRcdHN1cGVyKCdDb21wb3NlQXR0YWNobWVudE1vZGVsJyk7XG5cblx0XHR0aGlzLmlkID0gaWQ7XG5cdFx0dGhpcy5pc0lubGluZSA9ICEhaXNJbmxpbmU7XG5cdFx0dGhpcy5pc0xpbmtlZCA9ICEhaXNMaW5rZWQ7XG5cdFx0dGhpcy5DSUQgPSBDSUQ7XG5cdFx0dGhpcy5jb250ZW50TG9jYXRpb24gPSBjb250ZW50TG9jYXRpb247XG5cdFx0dGhpcy5mcm9tTWVzc2FnZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5maWxlTmFtZSA9IGtvLm9ic2VydmFibGUoZmlsZU5hbWUpO1xuXHRcdHRoaXMuc2l6ZSA9IGtvLm9ic2VydmFibGUoc2l6ZSk7XG5cdFx0dGhpcy50ZW1wTmFtZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5wcm9ncmVzcyA9IGtvLm9ic2VydmFibGUoMCk7XG5cdFx0dGhpcy5lcnJvciA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMud2FpdGluZyA9IGtvLm9ic2VydmFibGUodHJ1ZSk7XG5cdFx0dGhpcy51cGxvYWRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKHRydWUpO1xuXHRcdHRoaXMuY29tcGxldGUgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMucHJvZ3Jlc3NUZXh0ID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgcCA9IHRoaXMucHJvZ3Jlc3MoKTtcblx0XHRcdHJldHVybiAwID09PSBwID8gJycgOiAnJyArICg5OCA8IHAgPyAxMDAgOiBwKSArICclJztcblx0XHR9KTtcblxuXHRcdHRoaXMucHJvZ3Jlc3NTdHlsZSA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IHAgPSB0aGlzLnByb2dyZXNzKCk7XG5cdFx0XHRyZXR1cm4gMCA9PT0gcCA/ICcnIDogJ3dpZHRoOicgKyAoOTggPCBwID8gMTAwIDogcCkgKyAnJSc7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnRpdGxlID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZXJyb3IgPSB0aGlzLmVycm9yKCk7XG5cdFx0XHRyZXR1cm4gJycgIT09IGVycm9yID8gZXJyb3IgOiB0aGlzLmZpbGVOYW1lKCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmZyaWVuZGx5U2l6ZSA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGxvY2FsU2l6ZSA9IHRoaXMuc2l6ZSgpO1xuXHRcdFx0cmV0dXJuIG51bGwgPT09IGxvY2FsU2l6ZSA/ICcnIDogZnJpZW5kbHlTaXplKGxvY2FsU2l6ZSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1pbWVUeXBlID0ga28uY29tcHV0ZWQoKCkgPT4gbWltZUNvbnRlbnRUeXBlKHRoaXMuZmlsZU5hbWUoKSkpO1xuXHRcdHRoaXMuZmlsZUV4dCA9IGtvLmNvbXB1dGVkKCgpID0+IGdldEZpbGVFeHRlbnNpb24odGhpcy5maWxlTmFtZSgpKSk7XG5cblx0XHR0aGlzLnJlZ0Rpc3Bvc2FibGVzKFtcblx0XHRcdHRoaXMucHJvZ3Jlc3NUZXh0LFxuXHRcdFx0dGhpcy5wcm9ncmVzc1N0eWxlLFxuXHRcdFx0dGhpcy50aXRsZSxcblx0XHRcdHRoaXMuZnJpZW5kbHlTaXplLFxuXHRcdFx0dGhpcy5taW1lVHlwZSxcblx0XHRcdHRoaXMuZmlsZUV4dFxuXHRcdF0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7QWpheEpzb25Db21wb3NlQXR0YWNobWVudH0ganNvblxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGluaXRCeVVwbG9hZEpzb24oanNvbikge1xuXHRcdGxldCBiUmVzdWx0ID0gZmFsc2U7XG5cdFx0aWYgKGpzb24pIHtcblx0XHRcdHRoaXMuZmlsZU5hbWUoanNvbi5OYW1lKTtcblx0XHRcdHRoaXMuc2l6ZShpc1VuZChqc29uLlNpemUpID8gMCA6IHBJbnQoanNvbi5TaXplKSk7XG5cdFx0XHR0aGlzLnRlbXBOYW1lKGlzVW5kKGpzb24uVGVtcE5hbWUpID8gJycgOiBqc29uLlRlbXBOYW1lKTtcblx0XHRcdHRoaXMuaXNJbmxpbmUgPSBmYWxzZTtcblxuXHRcdFx0YlJlc3VsdCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGJSZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGljb25DbGFzcygpIHtcblx0XHRyZXR1cm4gc3RhdGljSWNvbkNsYXNzKHN0YXRpY0ZpbGVUeXBlKHRoaXMuZmlsZUV4dCgpLCB0aGlzLm1pbWVUeXBlKCkpKVswXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0aWNvblRleHQoKSB7XG5cdFx0cmV0dXJuIHN0YXRpY0ljb25DbGFzcyhzdGF0aWNGaWxlVHlwZSh0aGlzLmZpbGVFeHQoKSwgdGhpcy5taW1lVHlwZSgpKSlbMV07XG5cdH1cbn1cblxuZXhwb3J0IHsgQ29tcG9zZUF0dGFjaG1lbnRNb2RlbCwgQ29tcG9zZUF0dGFjaG1lbnRNb2RlbCBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBDb250YWN0UHJvcGVydHlUeXBlIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IHBJbnQsIHBTdHJpbmcgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IHsgQWJzdHJhY3RNb2RlbCB9IGZyb20gJ0tub2luL0Fic3RyYWN0TW9kZWwnO1xuXG5jbGFzcyBDb250YWN0UHJvcGVydHlNb2RlbCBleHRlbmRzIEFic3RyYWN0TW9kZWwge1xuXHQvKipcblx0ICogQHBhcmFtIHtudW1iZXI9fSB0eXBlID0gRW51bXMuQ29udGFjdFByb3BlcnR5VHlwZS5Vbmtub3duXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gdHlwZVN0ciA9ICcnXG5cdCAqIEBwYXJhbSB7c3RyaW5nPX0gdmFsdWUgPSAnJ1xuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSBmb2N1c2VkID0gZmFsc2Vcblx0ICogQHBhcmFtIHtzdHJpbmc9fSBwbGFjZWhvbGRlciA9ICcnXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcih0eXBlID0gQ29udGFjdFByb3BlcnR5VHlwZS5Vbmtub3duLCB0eXBlU3RyID0gJycsIHZhbHVlID0gJycsIGZvY3VzZWQgPSBmYWxzZSwgcGxhY2Vob2xkZXIgPSAnJykge1xuXHRcdHN1cGVyKCdDb250YWN0UHJvcGVydHlNb2RlbCcpO1xuXG5cdFx0dGhpcy50eXBlID0ga28ub2JzZXJ2YWJsZShwSW50KHR5cGUpKTtcblx0XHR0aGlzLnR5cGVTdHIgPSBrby5vYnNlcnZhYmxlKHBTdHJpbmcodHlwZVN0cikpO1xuXHRcdHRoaXMuZm9jdXNlZCA9IGtvLm9ic2VydmFibGUoISFmb2N1c2VkKTtcblx0XHR0aGlzLnZhbHVlID0ga28ub2JzZXJ2YWJsZShwU3RyaW5nKHZhbHVlKSk7XG5cblx0XHR0aGlzLnBsYWNlaG9sZGVyID0ga28ub2JzZXJ2YWJsZShwbGFjZWhvbGRlcik7XG5cblx0XHR0aGlzLnBsYWNlaG9sZGVyVmFsdWUgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCB2ID0gdGhpcy5wbGFjZWhvbGRlcigpO1xuXHRcdFx0cmV0dXJuIHYgPyBpMThuKHYpIDogJyc7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmxhcmdlVmFsdWUgPSBrby5jb21wdXRlZCgoKSA9PiBDb250YWN0UHJvcGVydHlUeXBlLk5vdGUgPT09IHRoaXMudHlwZSgpKTtcblxuXHRcdHRoaXMucmVnRGlzcG9zYWJsZXMoW3RoaXMucGxhY2Vob2xkZXJWYWx1ZSwgdGhpcy5sYXJnZVZhbHVlXSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgQ29udGFjdFByb3BlcnR5TW9kZWwsIENvbnRhY3RQcm9wZXJ0eU1vZGVsIGFzIGRlZmF1bHQgfTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRmaWx0ZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmlsdGVyO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdmaWx0ZXInKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5maWx0ZXJgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuZmlsdGVyXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfSwge1xuICBmaWx0ZXI6IGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICAgIHJldHVybiAkZmlsdGVyKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgZml4UmVnRXhwV2VsbEtub3duU3ltYm9sTG9naWMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZml4LXJlZ2V4cC13ZWxsLWtub3duLXN5bWJvbC1sb2dpYycpO1xudmFyIGFuT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FuLW9iamVjdCcpO1xudmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG52YXIgc2FtZVZhbHVlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3NhbWUtdmFsdWUnKTtcbnZhciByZWdFeHBFeGVjID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlZ2V4cC1leGVjLWFic3RyYWN0Jyk7XG5cbi8vIEBAc2VhcmNoIGxvZ2ljXG5maXhSZWdFeHBXZWxsS25vd25TeW1ib2xMb2dpYygnc2VhcmNoJywgMSwgZnVuY3Rpb24gKFNFQVJDSCwgbmF0aXZlU2VhcmNoLCBtYXliZUNhbGxOYXRpdmUpIHtcbiAgcmV0dXJuIFtcbiAgICAvLyBgU3RyaW5nLnByb3RvdHlwZS5zZWFyY2hgIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS5zZWFyY2hcbiAgICBmdW5jdGlvbiBzZWFyY2gocmVnZXhwKSB7XG4gICAgICB2YXIgTyA9IHJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyk7XG4gICAgICB2YXIgc2VhcmNoZXIgPSByZWdleHAgPT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogcmVnZXhwW1NFQVJDSF07XG4gICAgICByZXR1cm4gc2VhcmNoZXIgIT09IHVuZGVmaW5lZCA/IHNlYXJjaGVyLmNhbGwocmVnZXhwLCBPKSA6IG5ldyBSZWdFeHAocmVnZXhwKVtTRUFSQ0hdKFN0cmluZyhPKSk7XG4gICAgfSxcbiAgICAvLyBgUmVnRXhwLnByb3RvdHlwZVtAQHNlYXJjaF1gIG1ldGhvZFxuICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtcmVnZXhwLnByb3RvdHlwZS1AQHNlYXJjaFxuICAgIGZ1bmN0aW9uIChyZWdleHApIHtcbiAgICAgIHZhciByZXMgPSBtYXliZUNhbGxOYXRpdmUobmF0aXZlU2VhcmNoLCByZWdleHAsIHRoaXMpO1xuICAgICAgaWYgKHJlcy5kb25lKSByZXR1cm4gcmVzLnZhbHVlO1xuXG4gICAgICB2YXIgcnggPSBhbk9iamVjdChyZWdleHApO1xuICAgICAgdmFyIFMgPSBTdHJpbmcodGhpcyk7XG5cbiAgICAgIHZhciBwcmV2aW91c0xhc3RJbmRleCA9IHJ4Lmxhc3RJbmRleDtcbiAgICAgIGlmICghc2FtZVZhbHVlKHByZXZpb3VzTGFzdEluZGV4LCAwKSkgcngubGFzdEluZGV4ID0gMDtcbiAgICAgIHZhciByZXN1bHQgPSByZWdFeHBFeGVjKHJ4LCBTKTtcbiAgICAgIGlmICghc2FtZVZhbHVlKHJ4Lmxhc3RJbmRleCwgcHJldmlvdXNMYXN0SW5kZXgpKSByeC5sYXN0SW5kZXggPSBwcmV2aW91c0xhc3RJbmRleDtcbiAgICAgIHJldHVybiByZXN1bHQgPT09IG51bGwgPyAtMSA6IHJlc3VsdC5pbmRleDtcbiAgICB9XG4gIF07XG59KTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgU2V0U3lzdGVtRm9sZGVyc05vdGlmaWNhdGlvbiwgTWFnaWNzIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IFVOVVNFRF9PUFRJT05fVkFMVUUgfSBmcm9tICdDb21tb24vQ29uc3RzJztcbmltcG9ydCB7IGZvbGRlckxpc3RPcHRpb25zQnVpbGRlciwgbm9vcCwgZGVmYXV0T3B0aW9uc0FmdGVyUmVuZGVyIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IGluaXRPblN0YXJ0T3JMYW5nQ2hhbmdlLCBpMThuIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5pbXBvcnQgRm9sZGVyU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvRm9sZGVyJztcblxuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5pbXBvcnQgeyBwb3B1cCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHBvcHVwKHtcblx0bmFtZTogJ1ZpZXcvUG9wdXAvRm9sZGVyU3lzdGVtJyxcblx0dGVtcGxhdGVJRDogJ1BvcHVwc0ZvbGRlclN5c3RlbSdcbn0pXG5jbGFzcyBGb2xkZXJTeXN0ZW1Qb3B1cFZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMuc0Nob29zZU9uVGV4dCA9ICcnO1xuXHRcdHRoaXMuc1VudXNlVGV4dCA9ICcnO1xuXG5cdFx0aW5pdE9uU3RhcnRPckxhbmdDaGFuZ2UoKCkgPT4ge1xuXHRcdFx0dGhpcy5zQ2hvb3NlT25UZXh0ID0gaTE4bignUE9QVVBTX1NZU1RFTV9GT0xERVJTL1NFTEVDVF9DSE9PU0VfT05FJyk7XG5cdFx0XHR0aGlzLnNVbnVzZVRleHQgPSBpMThuKCdQT1BVUFNfU1lTVEVNX0ZPTERFUlMvU0VMRUNUX1VOVVNFX05BTUUnKTtcblx0XHR9KTtcblxuXHRcdHRoaXMubm90aWZpY2F0aW9uID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmZvbGRlclNlbGVjdExpc3QgPSBrby5jb21wdXRlZCgoKSA9PlxuXHRcdFx0Zm9sZGVyTGlzdE9wdGlvbnNCdWlsZGVyKFxuXHRcdFx0XHRbXSxcblx0XHRcdFx0Rm9sZGVyU3RvcmUuZm9sZGVyTGlzdCgpLFxuXHRcdFx0XHRGb2xkZXJTdG9yZS5mb2xkZXJMaXN0U3lzdGVtTmFtZXMoKSxcblx0XHRcdFx0W1xuXHRcdFx0XHRcdFsnJywgdGhpcy5zQ2hvb3NlT25UZXh0XSxcblx0XHRcdFx0XHRbVU5VU0VEX09QVElPTl9WQUxVRSwgdGhpcy5zVW51c2VUZXh0XVxuXHRcdFx0XHRdLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHRudWxsLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpXG5cdFx0KTtcblxuXHRcdHRoaXMuc2VudEZvbGRlciA9IEZvbGRlclN0b3JlLnNlbnRGb2xkZXI7XG5cdFx0dGhpcy5kcmFmdEZvbGRlciA9IEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyO1xuXHRcdHRoaXMuc3BhbUZvbGRlciA9IEZvbGRlclN0b3JlLnNwYW1Gb2xkZXI7XG5cdFx0dGhpcy50cmFzaEZvbGRlciA9IEZvbGRlclN0b3JlLnRyYXNoRm9sZGVyO1xuXHRcdHRoaXMuYXJjaGl2ZUZvbGRlciA9IEZvbGRlclN0b3JlLmFyY2hpdmVGb2xkZXI7XG5cblx0XHRjb25zdCBmU2V0U3lzdGVtRm9sZGVycyA9ICgpID0+IHtcblx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NTZXQoJ1NlbnRGb2xkZXInLCBGb2xkZXJTdG9yZS5zZW50Rm9sZGVyKCkpO1xuXHRcdFx0XHRTZXR0aW5ncy5zZXR0aW5nc1NldCgnRHJhZnRGb2xkZXInLCBGb2xkZXJTdG9yZS5kcmFmdEZvbGRlcigpKTtcblx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NTZXQoJ1NwYW1Gb2xkZXInLCBGb2xkZXJTdG9yZS5zcGFtRm9sZGVyKCkpO1xuXHRcdFx0XHRTZXR0aW5ncy5zZXR0aW5nc1NldCgnVHJhc2hGb2xkZXInLCBGb2xkZXJTdG9yZS50cmFzaEZvbGRlcigpKTtcblx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NTZXQoJ0FyY2hpdmVGb2xkZXInLCBGb2xkZXJTdG9yZS5hcmNoaXZlRm9sZGVyKCkpO1xuXHRcdFx0fSxcblx0XHRcdGZTYXZlU3lzdGVtRm9sZGVycyA9IF8uZGVib3VuY2UoKCkgPT4ge1xuXHRcdFx0XHRmU2V0U3lzdGVtRm9sZGVycygpO1xuXHRcdFx0XHRSZW1vdGUuc2F2ZVN5c3RlbUZvbGRlcnMobm9vcCwge1xuXHRcdFx0XHRcdFNlbnRGb2xkZXI6IEZvbGRlclN0b3JlLnNlbnRGb2xkZXIoKSxcblx0XHRcdFx0XHREcmFmdEZvbGRlcjogRm9sZGVyU3RvcmUuZHJhZnRGb2xkZXIoKSxcblx0XHRcdFx0XHRTcGFtRm9sZGVyOiBGb2xkZXJTdG9yZS5zcGFtRm9sZGVyKCksXG5cdFx0XHRcdFx0VHJhc2hGb2xkZXI6IEZvbGRlclN0b3JlLnRyYXNoRm9sZGVyKCksXG5cdFx0XHRcdFx0QXJjaGl2ZUZvbGRlcjogRm9sZGVyU3RvcmUuYXJjaGl2ZUZvbGRlcigpLFxuXHRcdFx0XHRcdE51bGxGb2xkZXI6ICdOdWxsRm9sZGVyJ1xuXHRcdFx0XHR9KTtcblx0XHRcdH0sIE1hZ2ljcy5UaW1lMXMpLFxuXHRcdFx0ZkNhbGxiYWNrID0gKCkgPT4ge1xuXHRcdFx0XHRmU2V0U3lzdGVtRm9sZGVycygpO1xuXHRcdFx0XHRmU2F2ZVN5c3RlbUZvbGRlcnMoKTtcblx0XHRcdH07XG5cblx0XHRGb2xkZXJTdG9yZS5zZW50Rm9sZGVyLnN1YnNjcmliZShmQ2FsbGJhY2spO1xuXHRcdEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyLnN1YnNjcmliZShmQ2FsbGJhY2spO1xuXHRcdEZvbGRlclN0b3JlLnNwYW1Gb2xkZXIuc3Vic2NyaWJlKGZDYWxsYmFjayk7XG5cdFx0Rm9sZGVyU3RvcmUudHJhc2hGb2xkZXIuc3Vic2NyaWJlKGZDYWxsYmFjayk7XG5cdFx0Rm9sZGVyU3RvcmUuYXJjaGl2ZUZvbGRlci5zdWJzY3JpYmUoZkNhbGxiYWNrKTtcblxuXHRcdHRoaXMuZGVmYXV0T3B0aW9uc0FmdGVyUmVuZGVyID0gZGVmYXV0T3B0aW9uc0FmdGVyUmVuZGVyO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7bnVtYmVyPX0gbm90aWZpY2F0aW9uVHlwZSA9IFNldFN5c3RlbUZvbGRlcnNOb3RpZmljYXRpb24uTm9uZVxuXHQgKi9cblx0b25TaG93KG5vdGlmaWNhdGlvblR5cGUgPSBTZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uLk5vbmUpIHtcblx0XHRsZXQgbm90aWZpY2F0aW9uID0gJyc7XG5cdFx0c3dpdGNoIChub3RpZmljYXRpb25UeXBlKSB7XG5cdFx0XHRjYXNlIFNldFN5c3RlbUZvbGRlcnNOb3RpZmljYXRpb24uU2VudDpcblx0XHRcdFx0bm90aWZpY2F0aW9uID0gaTE4bignUE9QVVBTX1NZU1RFTV9GT0xERVJTL05PVElGSUNBVElPTl9TRU5UJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBTZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uLkRyYWZ0OlxuXHRcdFx0XHRub3RpZmljYXRpb24gPSBpMThuKCdQT1BVUFNfU1lTVEVNX0ZPTERFUlMvTk9USUZJQ0FUSU9OX0RSQUZUUycpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgU2V0U3lzdGVtRm9sZGVyc05vdGlmaWNhdGlvbi5TcGFtOlxuXHRcdFx0XHRub3RpZmljYXRpb24gPSBpMThuKCdQT1BVUFNfU1lTVEVNX0ZPTERFUlMvTk9USUZJQ0FUSU9OX1NQQU0nKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFNldFN5c3RlbUZvbGRlcnNOb3RpZmljYXRpb24uVHJhc2g6XG5cdFx0XHRcdG5vdGlmaWNhdGlvbiA9IGkxOG4oJ1BPUFVQU19TWVNURU1fRk9MREVSUy9OT1RJRklDQVRJT05fVFJBU0gnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFNldFN5c3RlbUZvbGRlcnNOb3RpZmljYXRpb24uQXJjaGl2ZTpcblx0XHRcdFx0bm90aWZpY2F0aW9uID0gaTE4bignUE9QVVBTX1NZU1RFTV9GT0xERVJTL05PVElGSUNBVElPTl9BUkNISVZFJyk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdH1cblxuXHRcdHRoaXMubm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7XG5cdH1cbn1cblxuZXhwb3J0IHsgRm9sZGVyU3lzdGVtUG9wdXBWaWV3LCBGb2xkZXJTeXN0ZW1Qb3B1cFZpZXcgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IHsgaXNBcnJheSB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdEJhc2ljUHJvbWlzZXMge1xuXHRvUHJvbWlzZXNTdGFjayA9IHt9O1xuXG5cdGZ1bmMoZkZ1bmMpIHtcblx0XHRmRnVuYygpO1xuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0ZmFzdFJlc29sdmUobURhdGEpIHtcblx0XHRyZXR1cm4gd2luZG93LlByb21pc2UucmVzb2x2ZShtRGF0YSk7XG5cdH1cblxuXHRmYXN0UmVqZWN0KG1EYXRhKSB7XG5cdFx0cmV0dXJuIHdpbmRvdy5Qcm9taXNlLnJlamVjdChtRGF0YSk7XG5cdH1cblxuXHRzZXRUcmlnZ2VyKHRyaWdnZXIsIHZhbHVlKSB7XG5cdFx0aWYgKHRyaWdnZXIpIHtcblx0XHRcdHZhbHVlID0gISF2YWx1ZTtcblx0XHRcdChpc0FycmF5KHRyaWdnZXIpID8gdHJpZ2dlciA6IFt0cmlnZ2VyXSkuZm9yRWFjaCgoZlRyaWdnZXIpID0+IHtcblx0XHRcdFx0aWYgKGZUcmlnZ2VyKSB7XG5cdFx0XHRcdFx0ZlRyaWdnZXIodmFsdWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcbmltcG9ydCBrZXkgZnJvbSAna2V5JztcblxuaW1wb3J0IEFwcFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0FwcCc7XG5pbXBvcnQgQWNjb3VudFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0FjY291bnQnO1xuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcblxuaW1wb3J0IHsgQ2FwYSwgTWFnaWNzLCBLZXlTdGF0ZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyB0cmltLCBpc1VuZCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBzZXR0aW5ncyB9IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5cbmltcG9ydCAqIGFzIEV2ZW50cyBmcm9tICdDb21tb24vRXZlbnRzJztcbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgc2hvd1NjcmVlblBvcHVwLCBzZXRIYXNoIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5jbGFzcyBBYnN0cmFjdFN5c3RlbURyb3BEb3duVXNlclZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMubG9nb0ltZyA9IHRyaW0oU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1VzZXJMb2dvJykpO1xuXHRcdHRoaXMubG9nb1RpdGxlID0gdHJpbShTZXR0aW5ncy5zZXR0aW5nc0dldCgnVXNlckxvZ29UaXRsZScpKTtcblxuXHRcdHRoaXMubW9iaWxlID0gISFTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJyk7XG5cdFx0dGhpcy5tb2JpbGVEZXZpY2UgPSAhIVNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdtb2JpbGVEZXZpY2UnKTtcblxuXHRcdHRoaXMuYWxsb3dTZXR0aW5ncyA9ICEhU2V0dGluZ3MuY2FwYShDYXBhLlNldHRpbmdzKTtcblx0XHR0aGlzLmFsbG93SGVscCA9ICEhU2V0dGluZ3MuY2FwYShDYXBhLkhlbHApO1xuXG5cdFx0dGhpcy5jdXJyZW50QXVkaW8gPSBBcHBTdG9yZS5jdXJyZW50QXVkaW87XG5cblx0XHR0aGlzLmFjY291bnRFbWFpbCA9IEFjY291bnRTdG9yZS5lbWFpbDtcblxuXHRcdHRoaXMuYWNjb3VudHMgPSBBY2NvdW50U3RvcmUuYWNjb3VudHM7XG5cdFx0dGhpcy5hY2NvdW50c1VucmVhZENvdW50ID0gQWNjb3VudFN0b3JlLmFjY291bnRzVW5yZWFkQ291bnQ7XG5cblx0XHR0aGlzLmFjY291bnRNZW51RHJvcGRvd25UcmlnZ2VyID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5jYXBhQWRkaXRpb25hbEFjY291bnRzID0ga28ub2JzZXJ2YWJsZShTZXR0aW5ncy5jYXBhKENhcGEuQWRkaXRpb25hbEFjY291bnRzKSk7XG5cblx0XHR0aGlzLmFkZEFjY291bnRDbGljayA9IF8uYmluZCh0aGlzLmFkZEFjY291bnRDbGljaywgdGhpcyk7XG5cblx0XHRFdmVudHMuc3ViKCdhdWRpby5zdG9wJywgKCkgPT4gQXBwU3RvcmUuY3VycmVudEF1ZGlvKCcnKSk7XG5cdFx0RXZlbnRzLnN1YignYXVkaW8uc3RhcnQnLCAobmFtZSkgPT4gQXBwU3RvcmUuY3VycmVudEF1ZGlvKG5hbWUpKTtcblx0fVxuXG5cdHN0b3BQbGF5KCkge1xuXHRcdEV2ZW50cy5wdWIoJ2F1ZGlvLmFwaS5zdG9wJyk7XG5cdH1cblxuXHRhY2NvdW50Q2xpY2soYWNjb3VudCwgZXZlbnQpIHtcblx0XHRpZiAoYWNjb3VudCAmJiBldmVudCAmJiAhaXNVbmQoZXZlbnQud2hpY2gpICYmIDEgPT09IGV2ZW50LndoaWNoKSB7XG5cdFx0XHRBY2NvdW50U3RvcmUuYWNjb3VudHMubG9hZGluZyh0cnVlKTtcblx0XHRcdF8uZGVsYXkoKCkgPT4gQWNjb3VudFN0b3JlLmFjY291bnRzLmxvYWRpbmcoZmFsc2UpLCBNYWdpY3MuVGltZTFzKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGVtYWlsVGl0bGUoKSB7XG5cdFx0cmV0dXJuIEFjY291bnRTdG9yZS5lbWFpbCgpO1xuXHR9XG5cblx0c2V0dGluZ3NDbGljaygpIHtcblx0XHRpZiAoU2V0dGluZ3MuY2FwYShDYXBhLlNldHRpbmdzKSkge1xuXHRcdFx0c2V0SGFzaChzZXR0aW5ncygpKTtcblx0XHR9XG5cdH1cblxuXHRzZXR0aW5nc0hlbHAoKSB7XG5cdFx0aWYgKFNldHRpbmdzLmNhcGEoQ2FwYS5IZWxwKSkge1xuXHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvS2V5Ym9hcmRTaG9ydGN1dHNIZWxwJykpO1xuXHRcdH1cblx0fVxuXG5cdGFkZEFjY291bnRDbGljaygpIHtcblx0XHRpZiAodGhpcy5jYXBhQWRkaXRpb25hbEFjY291bnRzKCkpIHtcblx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0FjY291bnQnKSk7XG5cdFx0fVxuXHR9XG5cblx0bG9nb3V0Q2xpY2soKSB7XG5cdFx0Z2V0QXBwKCkubG9nb3V0KCk7XG5cdH1cblxuXHRvbkJ1aWxkKCkge1xuXHRcdGtleSgnYCcsIFtLZXlTdGF0ZS5NZXNzYWdlTGlzdCwgS2V5U3RhdGUuTWVzc2FnZVZpZXcsIEtleVN0YXRlLlNldHRpbmdzXSwgKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMudmlld01vZGVsVmlzaWJpbGl0eSgpKSB7XG5cdFx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlRnVsbFNjcmVlbk1vZGUoZmFsc2UpO1xuXHRcdFx0XHR0aGlzLmFjY291bnRNZW51RHJvcGRvd25UcmlnZ2VyKHRydWUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0Ly8gc2hvcnRjdXRzIGhlbHBcblx0XHRrZXkoJ3NoaWZ0Ky8nLCBbS2V5U3RhdGUuTWVzc2FnZUxpc3QsIEtleVN0YXRlLk1lc3NhZ2VWaWV3LCBLZXlTdGF0ZS5TZXR0aW5nc10sICgpID0+IHtcblx0XHRcdGlmICh0aGlzLnZpZXdNb2RlbFZpc2liaWxpdHkoKSkge1xuXHRcdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9LZXlib2FyZFNob3J0Y3V0c0hlbHAnKSk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCB7IEFic3RyYWN0U3lzdGVtRHJvcERvd25Vc2VyVmlldywgQWJzdHJhY3RTeXN0ZW1Ecm9wRG93blVzZXJWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCAkIGZyb20gJyQnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga2V5IGZyb20gJ2tleSc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IHsgRXZlbnRLZXlDb2RlIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IGlzQXJyYXksIGluQXJyYXksIG5vb3AsIG5vb3BUcnVlIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuY2xhc3MgU2VsZWN0b3Ige1xuXHRsaXN0O1xuXHRsaXN0Q2hlY2tlZDtcblx0aXNMaXN0Q2hlY2tlZDtcblxuXHRmb2N1c2VkSXRlbTtcblx0c2VsZWN0ZWRJdGVtO1xuXG5cdGl0ZW1TZWxlY3RlZFRocm90dGxlO1xuXG5cdHNlbGVjdGVkSXRlbVVzZUNhbGxiYWNrID0gdHJ1ZTtcblxuXHRpU2VsZWN0TmV4dEhlbHBlciA9IDA7XG5cdGlGb2N1c2VkTmV4dEhlbHBlciA9IDA7XG5cdG9Db250ZW50VmlzaWJsZTtcblx0b0NvbnRlbnRTY3JvbGxhYmxlO1xuXG5cdHNJdGVtU2VsZWN0b3I7XG5cdHNJdGVtU2VsZWN0ZWRTZWxlY3Rvcjtcblx0c0l0ZW1DaGVja2VkU2VsZWN0b3I7XG5cdHNJdGVtRm9jdXNlZFNlbGVjdG9yO1xuXG5cdHNMYXN0VWlkID0gJyc7XG5cdG9DYWxsYmFja3MgPSB7fTtcblxuXHQvKipcblx0ICogQHBhcmFtIHtrb1Byb3BlcnR5fSBrb0xpc3Rcblx0ICogQHBhcmFtIHtrb1Byb3BlcnR5fSBrb1NlbGVjdGVkSXRlbVxuXHQgKiBAcGFyYW0ge2tvUHJvcGVydHl9IGtvRm9jdXNlZEl0ZW1cblx0ICogQHBhcmFtIHtzdHJpbmd9IHNJdGVtU2VsZWN0b3Jcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNJdGVtU2VsZWN0ZWRTZWxlY3RvclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0l0ZW1DaGVja2VkU2VsZWN0b3Jcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNJdGVtRm9jdXNlZFNlbGVjdG9yXG5cdCAqL1xuXHRjb25zdHJ1Y3Rvcihcblx0XHRrb0xpc3QsXG5cdFx0a29TZWxlY3RlZEl0ZW0sXG5cdFx0a29Gb2N1c2VkSXRlbSxcblx0XHRzSXRlbVNlbGVjdG9yLFxuXHRcdHNJdGVtU2VsZWN0ZWRTZWxlY3Rvcixcblx0XHRzSXRlbUNoZWNrZWRTZWxlY3Rvcixcblx0XHRzSXRlbUZvY3VzZWRTZWxlY3RvclxuXHQpIHtcblx0XHR0aGlzLmxpc3QgPSBrb0xpc3Q7XG5cblx0XHR0aGlzLmxpc3RDaGVja2VkID0ga28uY29tcHV0ZWQoKCkgPT4gXy5maWx0ZXIodGhpcy5saXN0KCksIChpdGVtKSA9PiBpdGVtLmNoZWNrZWQoKSkpLmV4dGVuZCh7IHJhdGVMaW1pdDogMCB9KTtcblx0XHR0aGlzLmlzTGlzdENoZWNrZWQgPSBrby5jb21wdXRlZCgoKSA9PiAwIDwgdGhpcy5saXN0Q2hlY2tlZCgpLmxlbmd0aCk7XG5cblx0XHR0aGlzLmZvY3VzZWRJdGVtID0ga29Gb2N1c2VkSXRlbSB8fCBrby5vYnNlcnZhYmxlKG51bGwpO1xuXHRcdHRoaXMuc2VsZWN0ZWRJdGVtID0ga29TZWxlY3RlZEl0ZW0gfHwga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdHRoaXMuaXRlbVNlbGVjdGVkVGhyb3R0bGUgPSBfLmRlYm91bmNlKF8uYmluZCh0aGlzLml0ZW1TZWxlY3RlZCwgdGhpcyksIDMwMCk7XG5cblx0XHR0aGlzLmxpc3RDaGVja2VkLnN1YnNjcmliZSgoaXRlbXMpID0+IHtcblx0XHRcdGlmICgwIDwgaXRlbXMubGVuZ3RoKSB7XG5cdFx0XHRcdGlmIChudWxsID09PSB0aGlzLnNlbGVjdGVkSXRlbSgpKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuc2VsZWN0ZWRJdGVtLnZhbHVlSGFzTXV0YXRlZCkge1xuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW0udmFsdWVIYXNNdXRhdGVkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtKG51bGwpO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuYXV0b1NlbGVjdCgpICYmIHRoaXMuZm9jdXNlZEl0ZW0oKSkge1xuXHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSh0aGlzLmZvY3VzZWRJdGVtKCkpO1xuXHRcdFx0fVxuXHRcdH0sIHRoaXMpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW0uc3Vic2NyaWJlKChpdGVtKSA9PiB7XG5cdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRpZiAodGhpcy5pc0xpc3RDaGVja2VkKCkpIHtcblx0XHRcdFx0XHRfLmVhY2godGhpcy5saXN0Q2hlY2tlZCgpLCAoc3ViSXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0c3ViSXRlbS5jaGVja2VkKGZhbHNlKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSXRlbVVzZUNhbGxiYWNrKSB7XG5cdFx0XHRcdFx0dGhpcy5pdGVtU2VsZWN0ZWRUaHJvdHRsZShpdGVtKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkSXRlbVVzZUNhbGxiYWNrKSB7XG5cdFx0XHRcdHRoaXMuaXRlbVNlbGVjdGVkKG51bGwpO1xuXHRcdFx0fVxuXHRcdH0sIHRoaXMpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW0gPSB0aGlzLnNlbGVjdGVkSXRlbS5leHRlbmQoeyB0b2dnbGVTdWJzY3JpYmVQcm9wZXJ0eTogW3RoaXMsICdzZWxlY3RlZCddIH0pO1xuXHRcdHRoaXMuZm9jdXNlZEl0ZW0gPSB0aGlzLmZvY3VzZWRJdGVtLmV4dGVuZCh7IHRvZ2dsZVN1YnNjcmliZVByb3BlcnR5OiBbbnVsbCwgJ2ZvY3VzZWQnXSB9KTtcblxuXHRcdHRoaXMuc0l0ZW1TZWxlY3RvciA9IHNJdGVtU2VsZWN0b3I7XG5cdFx0dGhpcy5zSXRlbVNlbGVjdGVkU2VsZWN0b3IgPSBzSXRlbVNlbGVjdGVkU2VsZWN0b3I7XG5cdFx0dGhpcy5zSXRlbUNoZWNrZWRTZWxlY3RvciA9IHNJdGVtQ2hlY2tlZFNlbGVjdG9yO1xuXHRcdHRoaXMuc0l0ZW1Gb2N1c2VkU2VsZWN0b3IgPSBzSXRlbUZvY3VzZWRTZWxlY3RvcjtcblxuXHRcdHRoaXMuZm9jdXNlZEl0ZW0uc3Vic2NyaWJlKChpdGVtKSA9PiB7XG5cdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHR0aGlzLnNMYXN0VWlkID0gdGhpcy5nZXRJdGVtVWlkKGl0ZW0pO1xuXHRcdFx0fVxuXHRcdH0sIHRoaXMpO1xuXG5cdFx0bGV0IGFDYWNoZSA9IFtdLFxuXHRcdFx0YUNoZWNrZWRDYWNoZSA9IFtdLFxuXHRcdFx0bUZvY3VzZWQgPSBudWxsLFxuXHRcdFx0bVNlbGVjdGVkID0gbnVsbDtcblxuXHRcdHRoaXMubGlzdC5zdWJzY3JpYmUoXG5cdFx0XHQoaXRlbXMpID0+IHtcblx0XHRcdFx0aWYgKGlzQXJyYXkoaXRlbXMpKSB7XG5cdFx0XHRcdFx0Xy5lYWNoKGl0ZW1zLCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgdWlkID0gdGhpcy5nZXRJdGVtVWlkKGl0ZW0pO1xuXG5cdFx0XHRcdFx0XHRcdGFDYWNoZS5wdXNoKHVpZCk7XG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtLmNoZWNrZWQoKSkge1xuXHRcdFx0XHRcdFx0XHRcdGFDaGVja2VkQ2FjaGUucHVzaCh1aWQpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChudWxsID09PSBtRm9jdXNlZCAmJiBpdGVtLmZvY3VzZWQoKSkge1xuXHRcdFx0XHRcdFx0XHRcdG1Gb2N1c2VkID0gdWlkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChudWxsID09PSBtU2VsZWN0ZWQgJiYgaXRlbS5zZWxlY3RlZCgpKSB7XG5cdFx0XHRcdFx0XHRcdFx0bVNlbGVjdGVkID0gdWlkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHR0aGlzLFxuXHRcdFx0J2JlZm9yZUNoYW5nZSdcblx0XHQpO1xuXG5cdFx0dGhpcy5saXN0LnN1YnNjcmliZSgoYUl0ZW1zKSA9PiB7XG5cdFx0XHRsZXQgdGVtcCA9IG51bGwsXG5cdFx0XHRcdGdldE5leHQgPSBmYWxzZSxcblx0XHRcdFx0aXNOZXh0Rm9jdXNlZCA9IG1Gb2N1c2VkLFxuXHRcdFx0XHRpc0NoZWNrZWQgPSBmYWxzZSxcblx0XHRcdFx0aXNTZWxlY3RlZCA9IGZhbHNlLFxuXHRcdFx0XHRsZW4gPSAwO1xuXG5cdFx0XHRjb25zdCB1aWRzID0gW107XG5cblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtVXNlQ2FsbGJhY2sgPSBmYWxzZTtcblxuXHRcdFx0dGhpcy5mb2N1c2VkSXRlbShudWxsKTtcblx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtKG51bGwpO1xuXG5cdFx0XHRpZiAoaXNBcnJheShhSXRlbXMpKSB7XG5cdFx0XHRcdGxlbiA9IGFDaGVja2VkQ2FjaGUubGVuZ3RoO1xuXG5cdFx0XHRcdF8uZWFjaChhSXRlbXMsIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgdWlkID0gdGhpcy5nZXRJdGVtVWlkKGl0ZW0pO1xuXHRcdFx0XHRcdHVpZHMucHVzaCh1aWQpO1xuXG5cdFx0XHRcdFx0aWYgKG51bGwgIT09IG1Gb2N1c2VkICYmIG1Gb2N1c2VkID09PSB1aWQpIHtcblx0XHRcdFx0XHRcdHRoaXMuZm9jdXNlZEl0ZW0oaXRlbSk7XG5cdFx0XHRcdFx0XHRtRm9jdXNlZCA9IG51bGw7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKDAgPCBsZW4gJiYgLTEgPCBpbkFycmF5KHVpZCwgYUNoZWNrZWRDYWNoZSkpIHtcblx0XHRcdFx0XHRcdGlzQ2hlY2tlZCA9IHRydWU7XG5cdFx0XHRcdFx0XHRpdGVtLmNoZWNrZWQodHJ1ZSk7XG5cdFx0XHRcdFx0XHRsZW4gLT0gMTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoIWlzQ2hlY2tlZCAmJiBudWxsICE9PSBtU2VsZWN0ZWQgJiYgbVNlbGVjdGVkID09PSB1aWQpIHtcblx0XHRcdFx0XHRcdGlzU2VsZWN0ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW0oaXRlbSk7XG5cdFx0XHRcdFx0XHRtU2VsZWN0ZWQgPSBudWxsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW1Vc2VDYWxsYmFjayA9IHRydWU7XG5cblx0XHRcdFx0aWYgKCFpc0NoZWNrZWQgJiYgIWlzU2VsZWN0ZWQgJiYgdGhpcy5hdXRvU2VsZWN0KCkpIHtcblx0XHRcdFx0XHRpZiAodGhpcy5mb2N1c2VkSXRlbSgpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSh0aGlzLmZvY3VzZWRJdGVtKCkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoMCA8IGFJdGVtcy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGlmIChudWxsICE9PSBpc05leHRGb2N1c2VkKSB7XG5cdFx0XHRcdFx0XHRcdGdldE5leHQgPSBmYWxzZTtcblx0XHRcdFx0XHRcdFx0aXNOZXh0Rm9jdXNlZCA9IF8uZmluZChhQ2FjaGUsIChzVWlkKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGdldE5leHQgJiYgLTEgPCBpbkFycmF5KHNVaWQsIHVpZHMpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gc1VpZDtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGlzTmV4dEZvY3VzZWQgPT09IHNVaWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGdldE5leHQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChpc05leHRGb2N1c2VkKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGVtcCA9IF8uZmluZChhSXRlbXMsIChvSXRlbSkgPT4gaXNOZXh0Rm9jdXNlZCA9PT0gdGhpcy5nZXRJdGVtVWlkKG9JdGVtKSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZEl0ZW0odGVtcCB8fCBudWxsKTtcblx0XHRcdFx0XHRcdHRoaXMuZm9jdXNlZEl0ZW0odGhpcy5zZWxlY3RlZEl0ZW0oKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdCgwICE9PSB0aGlzLmlTZWxlY3ROZXh0SGVscGVyIHx8IDAgIT09IHRoaXMuaUZvY3VzZWROZXh0SGVscGVyKSAmJlxuXHRcdFx0XHRcdDAgPCBhSXRlbXMubGVuZ3RoICYmXG5cdFx0XHRcdFx0IXRoaXMuZm9jdXNlZEl0ZW0oKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHR0ZW1wID0gbnVsbDtcblx0XHRcdFx0XHRpZiAoMCAhPT0gdGhpcy5pRm9jdXNlZE5leHRIZWxwZXIpIHtcblx0XHRcdFx0XHRcdHRlbXAgPSBhSXRlbXNbLTEgPT09IHRoaXMuaUZvY3VzZWROZXh0SGVscGVyID8gYUl0ZW1zLmxlbmd0aCAtIDEgOiAwXSB8fCBudWxsO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICghdGVtcCAmJiAwICE9PSB0aGlzLmlTZWxlY3ROZXh0SGVscGVyKSB7XG5cdFx0XHRcdFx0XHR0ZW1wID0gYUl0ZW1zWy0xID09PSB0aGlzLmlTZWxlY3ROZXh0SGVscGVyID8gYUl0ZW1zLmxlbmd0aCAtIDEgOiAwXSB8fCBudWxsO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICh0ZW1wKSB7XG5cdFx0XHRcdFx0XHRpZiAoMCAhPT0gdGhpcy5pU2VsZWN0TmV4dEhlbHBlcikge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkSXRlbSh0ZW1wIHx8IG51bGwpO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLmZvY3VzZWRJdGVtKHRlbXAgfHwgbnVsbCk7XG5cblx0XHRcdFx0XHRcdHRoaXMuc2Nyb2xsVG9Gb2N1c2VkKCk7XG5cblx0XHRcdFx0XHRcdF8uZGVsYXkoKCkgPT4gdGhpcy5zY3JvbGxUb0ZvY3VzZWQoKSwgMTAwKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLmlTZWxlY3ROZXh0SGVscGVyID0gMDtcblx0XHRcdFx0XHR0aGlzLmlGb2N1c2VkTmV4dEhlbHBlciA9IDA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0YUNhY2hlID0gW107XG5cdFx0XHRhQ2hlY2tlZENhY2hlID0gW107XG5cdFx0XHRtRm9jdXNlZCA9IG51bGw7XG5cdFx0XHRtU2VsZWN0ZWQgPSBudWxsO1xuXHRcdH0pO1xuXHR9XG5cblx0aXRlbVNlbGVjdGVkKGl0ZW0pIHtcblx0XHRpZiAodGhpcy5pc0xpc3RDaGVja2VkKCkpIHtcblx0XHRcdGlmICghaXRlbSkge1xuXHRcdFx0XHQodGhpcy5vQ2FsbGJhY2tzLm9uSXRlbVNlbGVjdCB8fCBub29wKShpdGVtIHx8IG51bGwpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSBpZiAoaXRlbSkge1xuXHRcdFx0KHRoaXMub0NhbGxiYWNrcy5vbkl0ZW1TZWxlY3QgfHwgbm9vcCkoaXRlbSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gZm9yY2VTZWxlY3Rcblx0ICovXG5cdGdvRG93bihmb3JjZVNlbGVjdCkge1xuXHRcdHRoaXMubmV3U2VsZWN0UG9zaXRpb24oRXZlbnRLZXlDb2RlLkRvd24sIGZhbHNlLCBmb3JjZVNlbGVjdCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtib29sZWFufSBmb3JjZVNlbGVjdFxuXHQgKi9cblx0Z29VcChmb3JjZVNlbGVjdCkge1xuXHRcdHRoaXMubmV3U2VsZWN0UG9zaXRpb24oRXZlbnRLZXlDb2RlLlVwLCBmYWxzZSwgZm9yY2VTZWxlY3QpO1xuXHR9XG5cblx0dW5zZWxlY3QoKSB7XG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW0obnVsbCk7XG5cdFx0dGhpcy5mb2N1c2VkSXRlbShudWxsKTtcblx0fVxuXG5cdGluaXQoY29udGVudFZpc2libGUsIGNvbnRlbnRTY3JvbGxhYmxlLCBrZXlTY29wZSA9ICdhbGwnKSB7XG5cdFx0dGhpcy5vQ29udGVudFZpc2libGUgPSBjb250ZW50VmlzaWJsZTtcblx0XHR0aGlzLm9Db250ZW50U2Nyb2xsYWJsZSA9IGNvbnRlbnRTY3JvbGxhYmxlO1xuXG5cdFx0aWYgKHRoaXMub0NvbnRlbnRWaXNpYmxlICYmIHRoaXMub0NvbnRlbnRTY3JvbGxhYmxlKSB7XG5cdFx0XHQkKHRoaXMub0NvbnRlbnRWaXNpYmxlKVxuXHRcdFx0XHQub24oJ3NlbGVjdHN0YXJ0JywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50ICYmIGV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG5cdFx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0Lm9uKCdjbGljaycsIHRoaXMuc0l0ZW1TZWxlY3RvciwgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5hY3Rpb25DbGljayhrby5kYXRhRm9yKGV2ZW50LmN1cnJlbnRUYXJnZXQpLCBldmVudCk7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5vbignY2xpY2snLCB0aGlzLnNJdGVtQ2hlY2tlZFNlbGVjdG9yLCAoZXZlbnQpID0+IHtcblx0XHRcdFx0XHRjb25zdCBpdGVtID0ga28uZGF0YUZvcihldmVudC5jdXJyZW50VGFyZ2V0KTtcblx0XHRcdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRcdFx0aWYgKGV2ZW50ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuYWN0aW9uQ2xpY2soaXRlbSwgZXZlbnQpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5mb2N1c2VkSXRlbShpdGVtKTtcblx0XHRcdFx0XHRcdFx0aXRlbS5jaGVja2VkKCFpdGVtLmNoZWNrZWQoKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblxuXHRcdFx0a2V5KCdlbnRlcicsIGtleVNjb3BlLCAoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLmZvY3VzZWRJdGVtKCkgJiYgIXRoaXMuZm9jdXNlZEl0ZW0oKS5zZWxlY3RlZCgpKSB7XG5cdFx0XHRcdFx0dGhpcy5hY3Rpb25DbGljayh0aGlzLmZvY3VzZWRJdGVtKCkpO1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fSk7XG5cblx0XHRcdGtleSgnY3RybCt1cCwgY29tbWFuZCt1cCwgY3RybCtkb3duLCBjb21tYW5kK2Rvd24nLCBrZXlTY29wZSwgKCkgPT4gZmFsc2UpO1xuXG5cdFx0XHRrZXkoJ3VwLCBzaGlmdCt1cCwgZG93biwgc2hpZnQrZG93biwgaG9tZSwgZW5kLCBwYWdldXAsIHBhZ2Vkb3duLCBpbnNlcnQsIHNwYWNlJywga2V5U2NvcGUsIChldmVudCwgaGFuZGxlcikgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQgJiYgaGFuZGxlciAmJiBoYW5kbGVyLnNob3J0Y3V0KSB7XG5cdFx0XHRcdFx0bGV0IGV2ZW50S2V5ID0gMDtcblx0XHRcdFx0XHRzd2l0Y2ggKGhhbmRsZXIuc2hvcnRjdXQpIHtcblx0XHRcdFx0XHRcdGNhc2UgJ3VwJzpcblx0XHRcdFx0XHRcdGNhc2UgJ3NoaWZ0K3VwJzpcblx0XHRcdFx0XHRcdFx0ZXZlbnRLZXkgPSBFdmVudEtleUNvZGUuVXA7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnZG93bic6XG5cdFx0XHRcdFx0XHRjYXNlICdzaGlmdCtkb3duJzpcblx0XHRcdFx0XHRcdFx0ZXZlbnRLZXkgPSBFdmVudEtleUNvZGUuRG93bjtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdpbnNlcnQnOlxuXHRcdFx0XHRcdFx0XHRldmVudEtleSA9IEV2ZW50S2V5Q29kZS5JbnNlcnQ7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAnc3BhY2UnOlxuXHRcdFx0XHRcdFx0XHRldmVudEtleSA9IEV2ZW50S2V5Q29kZS5TcGFjZTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdob21lJzpcblx0XHRcdFx0XHRcdFx0ZXZlbnRLZXkgPSBFdmVudEtleUNvZGUuSG9tZTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlICdlbmQnOlxuXHRcdFx0XHRcdFx0XHRldmVudEtleSA9IEV2ZW50S2V5Q29kZS5FbmQ7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Y2FzZSAncGFnZXVwJzpcblx0XHRcdFx0XHRcdFx0ZXZlbnRLZXkgPSBFdmVudEtleUNvZGUuUGFnZVVwO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgJ3BhZ2Vkb3duJzpcblx0XHRcdFx0XHRcdFx0ZXZlbnRLZXkgPSBFdmVudEtleUNvZGUuUGFnZURvd247XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmICgwIDwgZXZlbnRLZXkpIHtcblx0XHRcdFx0XHRcdHRoaXMubmV3U2VsZWN0UG9zaXRpb24oZXZlbnRLZXksIGtleS5zaGlmdCk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRhdXRvU2VsZWN0KCkge1xuXHRcdHJldHVybiAhISh0aGlzLm9DYWxsYmFja3Mub25BdXRvU2VsZWN0IHx8IG5vb3BUcnVlKSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gdXBcblx0ICovXG5cdGRvVXBVcE9yRG93bkRvd24odXApIHtcblx0XHQodGhpcy5vQ2FsbGJhY2tzLm9uVXBVcE9yRG93bkRvd24gfHwgbm9vcFRydWUpKCEhdXApO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvSXRlbVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0Z2V0SXRlbVVpZChpdGVtKSB7XG5cdFx0bGV0IHVpZCA9ICcnO1xuXG5cdFx0Y29uc3QgZ2V0SXRlbVVpZENhbGxiYWNrID0gdGhpcy5vQ2FsbGJhY2tzLm9uSXRlbUdldFVpZCB8fCBudWxsO1xuXHRcdGlmIChnZXRJdGVtVWlkQ2FsbGJhY2sgJiYgaXRlbSkge1xuXHRcdFx0dWlkID0gZ2V0SXRlbVVpZENhbGxiYWNrKGl0ZW0pO1xuXHRcdH1cblxuXHRcdHJldHVybiB1aWQudG9TdHJpbmcoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaUV2ZW50S2V5Q29kZVxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJTaGlmdEtleVxuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSBiRm9yY2VTZWxlY3QgPSBmYWxzZVxuXHQgKi9cblx0bmV3U2VsZWN0UG9zaXRpb24oaUV2ZW50S2V5Q29kZSwgYlNoaWZ0S2V5LCBiRm9yY2VTZWxlY3QpIHtcblx0XHRsZXQgaW5kZXggPSAwLFxuXHRcdFx0aXNOZXh0ID0gZmFsc2UsXG5cdFx0XHRpc1N0b3AgPSBmYWxzZSxcblx0XHRcdHJlc3VsdCA9IG51bGw7XG5cblx0XHRjb25zdCBwYWdlU3RlcCA9IDEwLFxuXHRcdFx0bGlzdCA9IHRoaXMubGlzdCgpLFxuXHRcdFx0bGlzdExlbiA9IGxpc3QgPyBsaXN0Lmxlbmd0aCA6IDAsXG5cdFx0XHRmb2N1c2VkID0gdGhpcy5mb2N1c2VkSXRlbSgpO1xuXG5cdFx0aWYgKDAgPCBsaXN0TGVuKSB7XG5cdFx0XHRpZiAoIWZvY3VzZWQpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdEV2ZW50S2V5Q29kZS5Eb3duID09PSBpRXZlbnRLZXlDb2RlIHx8XG5cdFx0XHRcdFx0RXZlbnRLZXlDb2RlLkluc2VydCA9PT0gaUV2ZW50S2V5Q29kZSB8fFxuXHRcdFx0XHRcdEV2ZW50S2V5Q29kZS5TcGFjZSA9PT0gaUV2ZW50S2V5Q29kZSB8fFxuXHRcdFx0XHRcdEV2ZW50S2V5Q29kZS5Ib21lID09PSBpRXZlbnRLZXlDb2RlIHx8XG5cdFx0XHRcdFx0RXZlbnRLZXlDb2RlLlBhZ2VVcCA9PT0gaUV2ZW50S2V5Q29kZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRyZXN1bHQgPSBsaXN0WzBdO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdEV2ZW50S2V5Q29kZS5VcCA9PT0gaUV2ZW50S2V5Q29kZSB8fFxuXHRcdFx0XHRcdEV2ZW50S2V5Q29kZS5FbmQgPT09IGlFdmVudEtleUNvZGUgfHxcblx0XHRcdFx0XHRFdmVudEtleUNvZGUuUGFnZURvd24gPT09IGlFdmVudEtleUNvZGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmVzdWx0ID0gbGlzdFtsaXN0Lmxlbmd0aCAtIDFdO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGZvY3VzZWQpIHtcblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdEV2ZW50S2V5Q29kZS5Eb3duID09PSBpRXZlbnRLZXlDb2RlIHx8XG5cdFx0XHRcdFx0RXZlbnRLZXlDb2RlLlVwID09PSBpRXZlbnRLZXlDb2RlIHx8XG5cdFx0XHRcdFx0RXZlbnRLZXlDb2RlLkluc2VydCA9PT0gaUV2ZW50S2V5Q29kZSB8fFxuXHRcdFx0XHRcdEV2ZW50S2V5Q29kZS5TcGFjZSA9PT0gaUV2ZW50S2V5Q29kZVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRfLmVhY2gobGlzdCwgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdGlmICghaXNTdG9wKSB7XG5cdFx0XHRcdFx0XHRcdHN3aXRjaCAoaUV2ZW50S2V5Q29kZSkge1xuXHRcdFx0XHRcdFx0XHRcdGNhc2UgRXZlbnRLZXlDb2RlLlVwOlxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGZvY3VzZWQgPT09IGl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXNTdG9wID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc3VsdCA9IGl0ZW07XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIEV2ZW50S2V5Q29kZS5Eb3duOlxuXHRcdFx0XHRcdFx0XHRcdGNhc2UgRXZlbnRLZXlDb2RlLkluc2VydDpcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpc05leHQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzdWx0ID0gaXRlbTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aXNTdG9wID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZm9jdXNlZCA9PT0gaXRlbSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpc05leHQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAoIXJlc3VsdCAmJiAoRXZlbnRLZXlDb2RlLkRvd24gPT09IGlFdmVudEtleUNvZGUgfHwgRXZlbnRLZXlDb2RlLlVwID09PSBpRXZlbnRLZXlDb2RlKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5kb1VwVXBPckRvd25Eb3duKEV2ZW50S2V5Q29kZS5VcCA9PT0gaUV2ZW50S2V5Q29kZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKEV2ZW50S2V5Q29kZS5Ib21lID09PSBpRXZlbnRLZXlDb2RlIHx8IEV2ZW50S2V5Q29kZS5FbmQgPT09IGlFdmVudEtleUNvZGUpIHtcblx0XHRcdFx0XHRpZiAoRXZlbnRLZXlDb2RlLkhvbWUgPT09IGlFdmVudEtleUNvZGUpIHtcblx0XHRcdFx0XHRcdHJlc3VsdCA9IGxpc3RbMF07XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChFdmVudEtleUNvZGUuRW5kID09PSBpRXZlbnRLZXlDb2RlKSB7XG5cdFx0XHRcdFx0XHRyZXN1bHQgPSBsaXN0W2xpc3QubGVuZ3RoIC0gMV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKEV2ZW50S2V5Q29kZS5QYWdlRG93biA9PT0gaUV2ZW50S2V5Q29kZSkge1xuXHRcdFx0XHRcdGZvciAoOyBpbmRleCA8IGxpc3RMZW47IGluZGV4KyspIHtcblx0XHRcdFx0XHRcdGlmIChmb2N1c2VkID09PSBsaXN0W2luZGV4XSkge1xuXHRcdFx0XHRcdFx0XHRpbmRleCArPSBwYWdlU3RlcDtcblx0XHRcdFx0XHRcdFx0aW5kZXggPSBsaXN0TGVuIC0gMSA8IGluZGV4ID8gbGlzdExlbiAtIDEgOiBpbmRleDtcblx0XHRcdFx0XHRcdFx0cmVzdWx0ID0gbGlzdFtpbmRleF07XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmIChFdmVudEtleUNvZGUuUGFnZVVwID09PSBpRXZlbnRLZXlDb2RlKSB7XG5cdFx0XHRcdFx0Zm9yIChpbmRleCA9IGxpc3RMZW47IDAgPD0gaW5kZXg7IGluZGV4LS0pIHtcblx0XHRcdFx0XHRcdGlmIChmb2N1c2VkID09PSBsaXN0W2luZGV4XSkge1xuXHRcdFx0XHRcdFx0XHRpbmRleCAtPSBwYWdlU3RlcDtcblx0XHRcdFx0XHRcdFx0aW5kZXggPSAwID4gaW5kZXggPyAwIDogaW5kZXg7XG5cdFx0XHRcdFx0XHRcdHJlc3VsdCA9IGxpc3RbaW5kZXhdO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAocmVzdWx0KSB7XG5cdFx0XHR0aGlzLmZvY3VzZWRJdGVtKHJlc3VsdCk7XG5cblx0XHRcdGlmIChmb2N1c2VkKSB7XG5cdFx0XHRcdGlmIChiU2hpZnRLZXkpIHtcblx0XHRcdFx0XHRpZiAoRXZlbnRLZXlDb2RlLlVwID09PSBpRXZlbnRLZXlDb2RlIHx8IEV2ZW50S2V5Q29kZS5Eb3duID09PSBpRXZlbnRLZXlDb2RlKSB7XG5cdFx0XHRcdFx0XHRmb2N1c2VkLmNoZWNrZWQoIWZvY3VzZWQuY2hlY2tlZCgpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSBpZiAoRXZlbnRLZXlDb2RlLkluc2VydCA9PT0gaUV2ZW50S2V5Q29kZSB8fCBFdmVudEtleUNvZGUuU3BhY2UgPT09IGlFdmVudEtleUNvZGUpIHtcblx0XHRcdFx0XHRmb2N1c2VkLmNoZWNrZWQoIWZvY3VzZWQuY2hlY2tlZCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoKHRoaXMuYXV0b1NlbGVjdCgpIHx8ICEhYkZvcmNlU2VsZWN0KSAmJiAhdGhpcy5pc0xpc3RDaGVja2VkKCkgJiYgRXZlbnRLZXlDb2RlLlNwYWNlICE9PSBpRXZlbnRLZXlDb2RlKSB7XG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtKHJlc3VsdCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuc2Nyb2xsVG9Gb2N1c2VkKCk7XG5cdFx0fSBlbHNlIGlmIChmb2N1c2VkKSB7XG5cdFx0XHRpZiAoYlNoaWZ0S2V5ICYmIChFdmVudEtleUNvZGUuVXAgPT09IGlFdmVudEtleUNvZGUgfHwgRXZlbnRLZXlDb2RlLkRvd24gPT09IGlFdmVudEtleUNvZGUpKSB7XG5cdFx0XHRcdGZvY3VzZWQuY2hlY2tlZCghZm9jdXNlZC5jaGVja2VkKCkpO1xuXHRcdFx0fSBlbHNlIGlmIChFdmVudEtleUNvZGUuSW5zZXJ0ID09PSBpRXZlbnRLZXlDb2RlIHx8IEV2ZW50S2V5Q29kZS5TcGFjZSA9PT0gaUV2ZW50S2V5Q29kZSkge1xuXHRcdFx0XHRmb2N1c2VkLmNoZWNrZWQoIWZvY3VzZWQuY2hlY2tlZCgpKTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5mb2N1c2VkSXRlbShmb2N1c2VkKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRzY3JvbGxUb0ZvY3VzZWQoKSB7XG5cdFx0aWYgKCF0aGlzLm9Db250ZW50VmlzaWJsZSB8fCAhdGhpcy5vQ29udGVudFNjcm9sbGFibGUpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBvZmZzZXQgPSAyMCxcblx0XHRcdGxpc3QgPSB0aGlzLmxpc3QoKSxcblx0XHRcdCRmb2N1c2VkID0gJCh0aGlzLnNJdGVtRm9jdXNlZFNlbGVjdG9yLCB0aGlzLm9Db250ZW50U2Nyb2xsYWJsZSksXG5cdFx0XHRwb3MgPSAkZm9jdXNlZC5wb3NpdGlvbigpLFxuXHRcdFx0dmlzaWJsZUhlaWdodCA9IHRoaXMub0NvbnRlbnRWaXNpYmxlLmhlaWdodCgpLFxuXHRcdFx0Zm9jdXNlZEhlaWdodCA9ICRmb2N1c2VkLm91dGVySGVpZ2h0KCk7XG5cblx0XHRpZiAobGlzdCAmJiBsaXN0WzBdICYmIGxpc3RbMF0uZm9jdXNlZCgpKSB7XG5cdFx0XHR0aGlzLm9Db250ZW50U2Nyb2xsYWJsZS5zY3JvbGxUb3AoMCk7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2UgaWYgKHBvcyAmJiAoMCA+IHBvcy50b3AgfHwgcG9zLnRvcCArIGZvY3VzZWRIZWlnaHQgPiB2aXNpYmxlSGVpZ2h0KSkge1xuXHRcdFx0dGhpcy5vQ29udGVudFNjcm9sbGFibGUuc2Nyb2xsVG9wKFxuXHRcdFx0XHQwID4gcG9zLnRvcFxuXHRcdFx0XHRcdD8gdGhpcy5vQ29udGVudFNjcm9sbGFibGUuc2Nyb2xsVG9wKCkgKyBwb3MudG9wIC0gb2Zmc2V0XG5cdFx0XHRcdFx0OiB0aGlzLm9Db250ZW50U2Nyb2xsYWJsZS5zY3JvbGxUb3AoKSArIHBvcy50b3AgLSB2aXNpYmxlSGVpZ2h0ICsgZm9jdXNlZEhlaWdodCArIG9mZnNldFxuXHRcdFx0KTtcblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGZhc3QgPSBmYWxzZVxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdHNjcm9sbFRvVG9wKGZhc3QgPSBmYWxzZSkge1xuXHRcdGlmICghdGhpcy5vQ29udGVudFZpc2libGUgfHwgIXRoaXMub0NvbnRlbnRTY3JvbGxhYmxlKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKGZhc3QgfHwgNTAgPiB0aGlzLm9Db250ZW50U2Nyb2xsYWJsZS5zY3JvbGxUb3AoKSkge1xuXHRcdFx0dGhpcy5vQ29udGVudFNjcm9sbGFibGUuc2Nyb2xsVG9wKDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLm9Db250ZW50U2Nyb2xsYWJsZS5zdG9wKCkuYW5pbWF0ZSh7IHNjcm9sbFRvcDogMCB9LCAyMDApO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0ZXZlbnRDbGlja0Z1bmN0aW9uKGl0ZW0sIGV2ZW50KSB7XG5cdFx0bGV0IGluZGV4ID0gMCxcblx0XHRcdGxlbmd0aCA9IDAsXG5cdFx0XHRjaGFuZ2VSYW5nZSA9IGZhbHNlLFxuXHRcdFx0aXNJblJhbmdlID0gZmFsc2UsXG5cdFx0XHRsaXN0ID0gW10sXG5cdFx0XHRjaGVja2VkID0gZmFsc2UsXG5cdFx0XHRsaXN0SXRlbSA9IG51bGwsXG5cdFx0XHRsaW5lVWlkID0gJyc7XG5cblx0XHRjb25zdCB1aWQgPSB0aGlzLmdldEl0ZW1VaWQoaXRlbSk7XG5cdFx0aWYgKGV2ZW50ICYmIGV2ZW50LnNoaWZ0S2V5KSB7XG5cdFx0XHRpZiAoJycgIT09IHVpZCAmJiAnJyAhPT0gdGhpcy5zTGFzdFVpZCAmJiB1aWQgIT09IHRoaXMuc0xhc3RVaWQpIHtcblx0XHRcdFx0bGlzdCA9IHRoaXMubGlzdCgpO1xuXHRcdFx0XHRjaGVja2VkID0gaXRlbS5jaGVja2VkKCk7XG5cblx0XHRcdFx0Zm9yIChpbmRleCA9IDAsIGxlbmd0aCA9IGxpc3QubGVuZ3RoOyBpbmRleCA8IGxlbmd0aDsgaW5kZXgrKykge1xuXHRcdFx0XHRcdGxpc3RJdGVtID0gbGlzdFtpbmRleF07XG5cdFx0XHRcdFx0bGluZVVpZCA9IHRoaXMuZ2V0SXRlbVVpZChsaXN0SXRlbSk7XG5cblx0XHRcdFx0XHRjaGFuZ2VSYW5nZSA9IGZhbHNlO1xuXHRcdFx0XHRcdGlmIChsaW5lVWlkID09PSB0aGlzLnNMYXN0VWlkIHx8IGxpbmVVaWQgPT09IHVpZCkge1xuXHRcdFx0XHRcdFx0Y2hhbmdlUmFuZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChjaGFuZ2VSYW5nZSkge1xuXHRcdFx0XHRcdFx0aXNJblJhbmdlID0gIWlzSW5SYW5nZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoaXNJblJhbmdlIHx8IGNoYW5nZVJhbmdlKSB7XG5cdFx0XHRcdFx0XHRsaXN0SXRlbS5jaGVja2VkKGNoZWNrZWQpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRoaXMuc0xhc3RVaWQgPSAnJyA9PT0gdWlkID8gJycgOiB1aWQ7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtPYmplY3R9IGl0ZW1cblx0ICogQHBhcmFtIHtPYmplY3Q9fSBldmVudFxuXHQgKi9cblx0YWN0aW9uQ2xpY2soaXRlbSwgZXZlbnQgPSBudWxsKSB7XG5cdFx0aWYgKGl0ZW0pIHtcblx0XHRcdGxldCBjbGljayA9IHRydWU7XG5cdFx0XHRpZiAoZXZlbnQpIHtcblx0XHRcdFx0aWYgKGV2ZW50LnNoaWZ0S2V5ICYmICEoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiAhZXZlbnQuYWx0S2V5KSB7XG5cdFx0XHRcdFx0Y2xpY2sgPSBmYWxzZTtcblx0XHRcdFx0XHRpZiAoJycgPT09IHRoaXMuc0xhc3RVaWQpIHtcblx0XHRcdFx0XHRcdHRoaXMuc0xhc3RVaWQgPSB0aGlzLmdldEl0ZW1VaWQoaXRlbSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aXRlbS5jaGVja2VkKCFpdGVtLmNoZWNrZWQoKSk7XG5cdFx0XHRcdFx0dGhpcy5ldmVudENsaWNrRnVuY3Rpb24oaXRlbSwgZXZlbnQpO1xuXG5cdFx0XHRcdFx0dGhpcy5mb2N1c2VkSXRlbShpdGVtKTtcblx0XHRcdFx0fSBlbHNlIGlmICgoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSAmJiAhZXZlbnQuc2hpZnRLZXkgJiYgIWV2ZW50LmFsdEtleSkge1xuXHRcdFx0XHRcdGNsaWNrID0gZmFsc2U7XG5cdFx0XHRcdFx0dGhpcy5mb2N1c2VkSXRlbShpdGVtKTtcblxuXHRcdFx0XHRcdGlmICh0aGlzLnNlbGVjdGVkSXRlbSgpICYmIGl0ZW0gIT09IHRoaXMuc2VsZWN0ZWRJdGVtKCkpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRJdGVtKCkuY2hlY2tlZCh0cnVlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpdGVtLmNoZWNrZWQoIWl0ZW0uY2hlY2tlZCgpKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoY2xpY2spIHtcblx0XHRcdFx0dGhpcy5zZWxlY3RNZXNzYWdlSXRlbShpdGVtKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRvbihldmVudE5hbWUsIGNhbGxiYWNrKSB7XG5cdFx0dGhpcy5vQ2FsbGJhY2tzW2V2ZW50TmFtZV0gPSBjYWxsYmFjaztcblx0fVxuXG5cdHNlbGVjdE1lc3NhZ2VJdGVtKG1lc3NhZ2VJdGVtKSB7XG5cdFx0dGhpcy5mb2N1c2VkSXRlbShtZXNzYWdlSXRlbSk7XG5cdFx0dGhpcy5zZWxlY3RlZEl0ZW0obWVzc2FnZUl0ZW0pO1xuXHRcdHRoaXMuc2Nyb2xsVG9Gb2N1c2VkKCk7XG5cdH1cbn1cblxuZXhwb3J0IHsgU2VsZWN0b3IsIFNlbGVjdG9yIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgbG96YWQgZnJvbSAnbG96YWQnO1xuXG5pbXBvcnQgeyBNZXNzYWdlUHJpb3JpdHksIFNpZ25lZFZlcmlmeVN0YXR1cyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBpMThuIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuaW1wb3J0IHsgREFUQV9JTUFHRV9MQVpZX1BMQUNFSE9MREVSX1BJQyB9IGZyb20gJ0NvbW1vbi9Db25zdHMnO1xuXG5pbXBvcnQge1xuXHRwSW50LFxuXHRpbkFycmF5LFxuXHRpc0FycmF5LFxuXHRpc1VuZCxcblx0dHJpbSxcblx0cHJldmlld01lc3NhZ2UsXG5cdHdpbmRvd1Jlc2l6ZSxcblx0ZnJpZW5kbHlTaXplLFxuXHRpc05vbkVtcHR5QXJyYXlcbn0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IHsgJHdpbiB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCB7IG1lc3NhZ2VWaWV3TGluaywgbWVzc2FnZURvd25sb2FkTGluayB9IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5cbmltcG9ydCBGb2xkZXJTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Gb2xkZXInO1xuaW1wb3J0IFBncFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1BncCc7XG5cbmltcG9ydCB7IGVtYWlsQXJyYXlGcm9tSnNvbiwgZW1haWxBcnJheVRvU3RyaW5nQ2xlYXIsIGVtYWlsQXJyYXlUb1N0cmluZywgcmVwbHlIZWxwZXIgfSBmcm9tICdIZWxwZXIvTWVzc2FnZSc7XG5cbmltcG9ydCB7IEF0dGFjaG1lbnRNb2RlbCwgc3RhdGljQ29tYmluZWRJY29uQ2xhc3MgfSBmcm9tICdNb2RlbC9BdHRhY2htZW50JztcbmltcG9ydCB7IEFic3RyYWN0TW9kZWwgfSBmcm9tICdLbm9pbi9BYnN0cmFjdE1vZGVsJztcblxuY2xhc3MgTWVzc2FnZU1vZGVsIGV4dGVuZHMgQWJzdHJhY3RNb2RlbCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCdNZXNzYWdlTW9kZWwnKTtcblxuXHRcdHRoaXMuZm9sZGVyRnVsbE5hbWVSYXcgPSAnJztcblx0XHR0aGlzLnVpZCA9ICcnO1xuXHRcdHRoaXMuaGFzaCA9ICcnO1xuXHRcdHRoaXMucmVxdWVzdEhhc2ggPSAnJztcblx0XHR0aGlzLnN1YmplY3QgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnN1YmplY3RQcmVmaXggPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnN1YmplY3RTdWZmaXggPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnNpemUgPSBrby5vYnNlcnZhYmxlKDApO1xuXHRcdHRoaXMuZGF0ZVRpbWVTdGFtcEluVVRDID0ga28ub2JzZXJ2YWJsZSgwKTtcblx0XHR0aGlzLnByaW9yaXR5ID0ga28ub2JzZXJ2YWJsZShNZXNzYWdlUHJpb3JpdHkuTm9ybWFsKTtcblxuXHRcdHRoaXMucHJveHkgPSBmYWxzZTtcblxuXHRcdHRoaXMuZnJvbUVtYWlsU3RyaW5nID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5mcm9tQ2xlYXJFbWFpbFN0cmluZyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudG9FbWFpbHNTdHJpbmcgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnRvQ2xlYXJFbWFpbHNTdHJpbmcgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMuc2VuZGVyRW1haWxzU3RyaW5nID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5zZW5kZXJDbGVhckVtYWlsc1N0cmluZyA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5lbWFpbHMgPSBbXTtcblxuXHRcdHRoaXMuZnJvbSA9IFtdO1xuXHRcdHRoaXMudG8gPSBbXTtcblx0XHR0aGlzLmNjID0gW107XG5cdFx0dGhpcy5iY2MgPSBbXTtcblx0XHR0aGlzLnJlcGx5VG8gPSBbXTtcblx0XHR0aGlzLmRlbGl2ZXJlZFRvID0gW107XG5cdFx0dGhpcy51bnN1YnNyaWJlTGlua3MgPSBbXTtcblxuXHRcdHRoaXMubmV3Rm9yQW5pbWF0aW9uID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmRlbGV0ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmRlbGV0ZWRNYXJrID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy51bnNlZW4gPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmZsYWdnZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmFuc3dlcmVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5mb3J3YXJkZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmlzUmVhZFJlY2VpcHQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZm9jdXNlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuc2VsZWN0ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmNoZWNrZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmhhc0F0dGFjaG1lbnRzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5hdHRhY2htZW50c1NwZWNEYXRhID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblxuXHRcdHRoaXMuYXR0YWNobWVudEljb25DbGFzcyA9IGtvLmNvbXB1dGVkKCgpID0+XG5cdFx0XHRzdGF0aWNDb21iaW5lZEljb25DbGFzcyh0aGlzLmhhc0F0dGFjaG1lbnRzKCkgPyB0aGlzLmF0dGFjaG1lbnRzU3BlY0RhdGEoKSA6IFtdKVxuXHRcdCk7XG5cblx0XHR0aGlzLmJvZHkgPSBudWxsO1xuXG5cdFx0dGhpcy5pc0h0bWwgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmhhc0ltYWdlcyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuYXR0YWNobWVudHMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXG5cdFx0dGhpcy5pc1BncFNpZ25lZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuaXNQZ3BFbmNyeXB0ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnBncFNpZ25lZFZlcmlmeVN0YXR1cyA9IGtvLm9ic2VydmFibGUoU2lnbmVkVmVyaWZ5U3RhdHVzLk5vbmUpO1xuXHRcdHRoaXMucGdwU2lnbmVkVmVyaWZ5VXNlciA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5wcmlvcml0eSA9IGtvLm9ic2VydmFibGUoTWVzc2FnZVByaW9yaXR5Lk5vcm1hbCk7XG5cdFx0dGhpcy5yZWFkUmVjZWlwdCA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5hRHJhZnRJbmZvID0gW107XG5cdFx0dGhpcy5zTWVzc2FnZUlkID0gJyc7XG5cdFx0dGhpcy5zSW5SZXBseVRvID0gJyc7XG5cdFx0dGhpcy5zUmVmZXJlbmNlcyA9ICcnO1xuXG5cdFx0dGhpcy5oYXNVbnNlZW5TdWJNZXNzYWdlID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5oYXNGbGFnZ2VkU3ViTWVzc2FnZSA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy50aHJlYWRzID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblxuXHRcdHRoaXMudGhyZWFkc0xlbiA9IGtvLmNvbXB1dGVkKCgpID0+IHRoaXMudGhyZWFkcygpLmxlbmd0aCk7XG5cdFx0dGhpcy5pc0ltcG9ydGFudCA9IGtvLmNvbXB1dGVkKCgpID0+IE1lc3NhZ2VQcmlvcml0eS5IaWdoID09PSB0aGlzLnByaW9yaXR5KCkpO1xuXG5cdFx0dGhpcy5yZWdEaXNwb3NhYmxlcyhbdGhpcy5hdHRhY2htZW50SWNvbkNsYXNzLCB0aGlzLnRocmVhZHNMZW4sIHRoaXMuaXNJbXBvcnRhbnRdKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAc3RhdGljXG5cdCAqIEBwYXJhbSB7QWpheEpzb25NZXNzYWdlfSBvSnNvbk1lc3NhZ2Vcblx0ICogQHJldHVybnMgez9NZXNzYWdlTW9kZWx9XG5cdCAqL1xuXHRzdGF0aWMgbmV3SW5zdGFuY2VGcm9tSnNvbihqc29uKSB7XG5cdFx0Y29uc3Qgb01lc3NhZ2VNb2RlbCA9IG5ldyBNZXNzYWdlTW9kZWwoKTtcblx0XHRyZXR1cm4gb01lc3NhZ2VNb2RlbC5pbml0QnlKc29uKGpzb24pID8gb01lc3NhZ2VNb2RlbCA6IG51bGw7XG5cdH1cblxuXHRjbGVhcigpIHtcblx0XHR0aGlzLmZvbGRlckZ1bGxOYW1lUmF3ID0gJyc7XG5cdFx0dGhpcy51aWQgPSAnJztcblx0XHR0aGlzLmhhc2ggPSAnJztcblx0XHR0aGlzLnJlcXVlc3RIYXNoID0gJyc7XG5cdFx0dGhpcy5zdWJqZWN0KCcnKTtcblx0XHR0aGlzLnN1YmplY3RQcmVmaXgoJycpO1xuXHRcdHRoaXMuc3ViamVjdFN1ZmZpeCgnJyk7XG5cdFx0dGhpcy5zaXplKDApO1xuXHRcdHRoaXMuZGF0ZVRpbWVTdGFtcEluVVRDKDApO1xuXHRcdHRoaXMucHJpb3JpdHkoTWVzc2FnZVByaW9yaXR5Lk5vcm1hbCk7XG5cblx0XHR0aGlzLnByb3h5ID0gZmFsc2U7XG5cblx0XHR0aGlzLmZyb21FbWFpbFN0cmluZygnJyk7XG5cdFx0dGhpcy5mcm9tQ2xlYXJFbWFpbFN0cmluZygnJyk7XG5cdFx0dGhpcy50b0VtYWlsc1N0cmluZygnJyk7XG5cdFx0dGhpcy50b0NsZWFyRW1haWxzU3RyaW5nKCcnKTtcblx0XHR0aGlzLnNlbmRlckVtYWlsc1N0cmluZygnJyk7XG5cdFx0dGhpcy5zZW5kZXJDbGVhckVtYWlsc1N0cmluZygnJyk7XG5cblx0XHR0aGlzLmVtYWlscyA9IFtdO1xuXG5cdFx0dGhpcy5mcm9tID0gW107XG5cdFx0dGhpcy50byA9IFtdO1xuXHRcdHRoaXMuY2MgPSBbXTtcblx0XHR0aGlzLmJjYyA9IFtdO1xuXHRcdHRoaXMucmVwbHlUbyA9IFtdO1xuXHRcdHRoaXMuZGVsaXZlcmVkVG8gPSBbXTtcblx0XHR0aGlzLnVuc3Vic3JpYmVMaW5rcyA9IFtdO1xuXG5cdFx0dGhpcy5uZXdGb3JBbmltYXRpb24oZmFsc2UpO1xuXG5cdFx0dGhpcy5kZWxldGVkKGZhbHNlKTtcblx0XHR0aGlzLmRlbGV0ZWRNYXJrKGZhbHNlKTtcblx0XHR0aGlzLnVuc2VlbihmYWxzZSk7XG5cdFx0dGhpcy5mbGFnZ2VkKGZhbHNlKTtcblx0XHR0aGlzLmFuc3dlcmVkKGZhbHNlKTtcblx0XHR0aGlzLmZvcndhcmRlZChmYWxzZSk7XG5cdFx0dGhpcy5pc1JlYWRSZWNlaXB0KGZhbHNlKTtcblxuXHRcdHRoaXMuc2VsZWN0ZWQoZmFsc2UpO1xuXHRcdHRoaXMuY2hlY2tlZChmYWxzZSk7XG5cdFx0dGhpcy5oYXNBdHRhY2htZW50cyhmYWxzZSk7XG5cdFx0dGhpcy5hdHRhY2htZW50c1NwZWNEYXRhKFtdKTtcblxuXHRcdHRoaXMuYm9keSA9IG51bGw7XG5cdFx0dGhpcy5pc0h0bWwoZmFsc2UpO1xuXHRcdHRoaXMuaGFzSW1hZ2VzKGZhbHNlKTtcblx0XHR0aGlzLmF0dGFjaG1lbnRzKFtdKTtcblxuXHRcdHRoaXMuaXNQZ3BTaWduZWQoZmFsc2UpO1xuXHRcdHRoaXMuaXNQZ3BFbmNyeXB0ZWQoZmFsc2UpO1xuXHRcdHRoaXMucGdwU2lnbmVkVmVyaWZ5U3RhdHVzKFNpZ25lZFZlcmlmeVN0YXR1cy5Ob25lKTtcblx0XHR0aGlzLnBncFNpZ25lZFZlcmlmeVVzZXIoJycpO1xuXG5cdFx0dGhpcy5wcmlvcml0eShNZXNzYWdlUHJpb3JpdHkuTm9ybWFsKTtcblx0XHR0aGlzLnJlYWRSZWNlaXB0KCcnKTtcblx0XHR0aGlzLmFEcmFmdEluZm8gPSBbXTtcblx0XHR0aGlzLnNNZXNzYWdlSWQgPSAnJztcblx0XHR0aGlzLnNJblJlcGx5VG8gPSAnJztcblx0XHR0aGlzLnNSZWZlcmVuY2VzID0gJyc7XG5cblx0XHR0aGlzLnRocmVhZHMoW10pO1xuXG5cdFx0dGhpcy5oYXNVbnNlZW5TdWJNZXNzYWdlKGZhbHNlKTtcblx0XHR0aGlzLmhhc0ZsYWdnZWRTdWJNZXNzYWdlKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0FycmF5fSBwcm9wZXJ0aWVzXG5cdCAqIEByZXR1cm5zIHtBcnJheX1cblx0ICovXG5cdGdldEVtYWlscyhwcm9wZXJ0aWVzKSB7XG5cdFx0cmV0dXJuIF8uY29tcGFjdChcblx0XHRcdF8udW5pcShcblx0XHRcdFx0Xy5tYXAoXG5cdFx0XHRcdFx0Xy5yZWR1Y2UocHJvcGVydGllcywgKGNhcnJ5LCBwcm9wZXJ0eSkgPT4gY2FycnkuY29uY2F0KHRoaXNbcHJvcGVydHldKSwgW10pLFxuXHRcdFx0XHRcdChvSXRlbSkgPT4gKG9JdGVtID8gb0l0ZW0uZW1haWwgOiAnJylcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge0FycmF5fVxuXHQgKi9cblx0Z2V0UmVjaXBpZW50c0VtYWlscygpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRFbWFpbHMoWyd0bycsICdjYyddKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0ZnJpZW5kbHlTaXplKCkge1xuXHRcdHJldHVybiBmcmllbmRseVNpemUodGhpcy5zaXplKCkpO1xuXHR9XG5cblx0Y29tcHV0ZVNlbmRlckVtYWlsKCkge1xuXHRcdGNvbnN0IHNlbnRGb2xkZXIgPSBGb2xkZXJTdG9yZS5zZW50Rm9sZGVyKCksXG5cdFx0XHRkcmFmdEZvbGRlciA9IEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyKCk7XG5cblx0XHR0aGlzLnNlbmRlckVtYWlsc1N0cmluZyhcblx0XHRcdHRoaXMuZm9sZGVyRnVsbE5hbWVSYXcgPT09IHNlbnRGb2xkZXIgfHwgdGhpcy5mb2xkZXJGdWxsTmFtZVJhdyA9PT0gZHJhZnRGb2xkZXJcblx0XHRcdFx0PyB0aGlzLnRvRW1haWxzU3RyaW5nKClcblx0XHRcdFx0OiB0aGlzLmZyb21FbWFpbFN0cmluZygpXG5cdFx0KTtcblxuXHRcdHRoaXMuc2VuZGVyQ2xlYXJFbWFpbHNTdHJpbmcoXG5cdFx0XHR0aGlzLmZvbGRlckZ1bGxOYW1lUmF3ID09PSBzZW50Rm9sZGVyIHx8IHRoaXMuZm9sZGVyRnVsbE5hbWVSYXcgPT09IGRyYWZ0Rm9sZGVyXG5cdFx0XHRcdD8gdGhpcy50b0NsZWFyRW1haWxzU3RyaW5nKClcblx0XHRcdFx0OiB0aGlzLmZyb21DbGVhckVtYWlsU3RyaW5nKClcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7QWpheEpzb25NZXNzYWdlfSBqc29uXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aW5pdEJ5SnNvbihqc29uKSB7XG5cdFx0bGV0IHJlc3VsdCA9IGZhbHNlLFxuXHRcdFx0cHJpb3JpdHkgPSBNZXNzYWdlUHJpb3JpdHkuTm9ybWFsO1xuXG5cdFx0aWYgKGpzb24gJiYgJ09iamVjdC9NZXNzYWdlJyA9PT0ganNvblsnQE9iamVjdCddKSB7XG5cdFx0XHRwcmlvcml0eSA9IHBJbnQoanNvbi5Qcmlvcml0eSk7XG5cdFx0XHR0aGlzLnByaW9yaXR5KFxuXHRcdFx0XHQtMSA8IGluQXJyYXkocHJpb3JpdHksIFtNZXNzYWdlUHJpb3JpdHkuSGlnaCwgTWVzc2FnZVByaW9yaXR5Lkxvd10pID8gcHJpb3JpdHkgOiBNZXNzYWdlUHJpb3JpdHkuTm9ybWFsXG5cdFx0XHQpO1xuXG5cdFx0XHR0aGlzLmZvbGRlckZ1bGxOYW1lUmF3ID0ganNvbi5Gb2xkZXI7XG5cdFx0XHR0aGlzLnVpZCA9IGpzb24uVWlkO1xuXHRcdFx0dGhpcy5oYXNoID0ganNvbi5IYXNoO1xuXHRcdFx0dGhpcy5yZXF1ZXN0SGFzaCA9IGpzb24uUmVxdWVzdEhhc2g7XG5cblx0XHRcdHRoaXMucHJveHkgPSAhIWpzb24uRXh0ZXJuYWxQcm94eTtcblxuXHRcdFx0dGhpcy5zaXplKHBJbnQoanNvbi5TaXplKSk7XG5cblx0XHRcdHRoaXMuZnJvbSA9IGVtYWlsQXJyYXlGcm9tSnNvbihqc29uLkZyb20pO1xuXHRcdFx0dGhpcy50byA9IGVtYWlsQXJyYXlGcm9tSnNvbihqc29uLlRvKTtcblx0XHRcdHRoaXMuY2MgPSBlbWFpbEFycmF5RnJvbUpzb24oanNvbi5DYyk7XG5cdFx0XHR0aGlzLmJjYyA9IGVtYWlsQXJyYXlGcm9tSnNvbihqc29uLkJjYyk7XG5cdFx0XHR0aGlzLnJlcGx5VG8gPSBlbWFpbEFycmF5RnJvbUpzb24oanNvbi5SZXBseVRvKTtcblx0XHRcdHRoaXMuZGVsaXZlcmVkVG8gPSBlbWFpbEFycmF5RnJvbUpzb24oanNvbi5EZWxpdmVyZWRUbyk7XG5cdFx0XHR0aGlzLnVuc3Vic3JpYmVMaW5rcyA9IGlzTm9uRW1wdHlBcnJheShqc29uLlVuc3Vic3JpYmVMaW5rcykgPyBqc29uLlVuc3Vic3JpYmVMaW5rcyA6IFtdO1xuXG5cdFx0XHR0aGlzLnN1YmplY3QoanNvbi5TdWJqZWN0KTtcblx0XHRcdGlmIChpc0FycmF5KGpzb24uU3ViamVjdFBhcnRzKSkge1xuXHRcdFx0XHR0aGlzLnN1YmplY3RQcmVmaXgoanNvbi5TdWJqZWN0UGFydHNbMF0pO1xuXHRcdFx0XHR0aGlzLnN1YmplY3RTdWZmaXgoanNvbi5TdWJqZWN0UGFydHNbMV0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zdWJqZWN0UHJlZml4KCcnKTtcblx0XHRcdFx0dGhpcy5zdWJqZWN0U3VmZml4KHRoaXMuc3ViamVjdCgpKTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5kYXRlVGltZVN0YW1wSW5VVEMocEludChqc29uLkRhdGVUaW1lU3RhbXBJblVUQykpO1xuXHRcdFx0dGhpcy5oYXNBdHRhY2htZW50cyghIWpzb24uSGFzQXR0YWNobWVudHMpO1xuXHRcdFx0dGhpcy5hdHRhY2htZW50c1NwZWNEYXRhKGlzQXJyYXkoanNvbi5BdHRhY2htZW50c1NwZWNEYXRhKSA/IGpzb24uQXR0YWNobWVudHNTcGVjRGF0YSA6IFtdKTtcblxuXHRcdFx0dGhpcy5mcm9tRW1haWxTdHJpbmcoZW1haWxBcnJheVRvU3RyaW5nKHRoaXMuZnJvbSwgdHJ1ZSkpO1xuXHRcdFx0dGhpcy5mcm9tQ2xlYXJFbWFpbFN0cmluZyhlbWFpbEFycmF5VG9TdHJpbmdDbGVhcih0aGlzLmZyb20pKTtcblx0XHRcdHRoaXMudG9FbWFpbHNTdHJpbmcoZW1haWxBcnJheVRvU3RyaW5nKHRoaXMudG8sIHRydWUpKTtcblx0XHRcdHRoaXMudG9DbGVhckVtYWlsc1N0cmluZyhlbWFpbEFycmF5VG9TdHJpbmdDbGVhcih0aGlzLnRvKSk7XG5cblx0XHRcdHRoaXMudGhyZWFkcyhpc0FycmF5KGpzb24uVGhyZWFkcykgPyBqc29uLlRocmVhZHMgOiBbXSk7XG5cblx0XHRcdHRoaXMuaW5pdEZsYWdzQnlKc29uKGpzb24pO1xuXHRcdFx0dGhpcy5jb21wdXRlU2VuZGVyRW1haWwoKTtcblxuXHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7QWpheEpzb25NZXNzYWdlfSBqc29uXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aW5pdFVwZGF0ZUJ5TWVzc2FnZUpzb24oanNvbikge1xuXHRcdGxldCByZXN1bHQgPSBmYWxzZSxcblx0XHRcdHByaW9yaXR5ID0gTWVzc2FnZVByaW9yaXR5Lk5vcm1hbDtcblxuXHRcdGlmIChqc29uICYmICdPYmplY3QvTWVzc2FnZScgPT09IGpzb25bJ0BPYmplY3QnXSkge1xuXHRcdFx0cHJpb3JpdHkgPSBwSW50KGpzb24uUHJpb3JpdHkpO1xuXHRcdFx0dGhpcy5wcmlvcml0eShcblx0XHRcdFx0LTEgPCBpbkFycmF5KHByaW9yaXR5LCBbTWVzc2FnZVByaW9yaXR5LkhpZ2gsIE1lc3NhZ2VQcmlvcml0eS5Mb3ddKSA/IHByaW9yaXR5IDogTWVzc2FnZVByaW9yaXR5Lk5vcm1hbFxuXHRcdFx0KTtcblxuXHRcdFx0dGhpcy5hRHJhZnRJbmZvID0ganNvbi5EcmFmdEluZm87XG5cblx0XHRcdHRoaXMuc01lc3NhZ2VJZCA9IGpzb24uTWVzc2FnZUlkO1xuXHRcdFx0dGhpcy5zSW5SZXBseVRvID0ganNvbi5JblJlcGx5VG87XG5cdFx0XHR0aGlzLnNSZWZlcmVuY2VzID0ganNvbi5SZWZlcmVuY2VzO1xuXG5cdFx0XHR0aGlzLnByb3h5ID0gISFqc29uLkV4dGVybmFsUHJveHk7XG5cblx0XHRcdGlmIChQZ3BTdG9yZS5jYXBhT3BlblBHUCgpKSB7XG5cdFx0XHRcdHRoaXMuaXNQZ3BTaWduZWQoISFqc29uLlBncFNpZ25lZCk7XG5cdFx0XHRcdHRoaXMuaXNQZ3BFbmNyeXB0ZWQoISFqc29uLlBncEVuY3J5cHRlZCk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMuaGFzQXR0YWNobWVudHMoISFqc29uLkhhc0F0dGFjaG1lbnRzKTtcblx0XHRcdHRoaXMuYXR0YWNobWVudHNTcGVjRGF0YShpc0FycmF5KGpzb24uQXR0YWNobWVudHNTcGVjRGF0YSkgPyBqc29uLkF0dGFjaG1lbnRzU3BlY0RhdGEgOiBbXSk7XG5cblx0XHRcdHRoaXMuZm91bmRlZENJRHMgPSBpc0FycmF5KGpzb24uRm91bmRlZENJRHMpID8ganNvbi5Gb3VuZGVkQ0lEcyA6IFtdO1xuXHRcdFx0dGhpcy5hdHRhY2htZW50cyh0aGlzLmluaXRBdHRhY2htZW50c0Zyb21Kc29uKGpzb24uQXR0YWNobWVudHMpKTtcblxuXHRcdFx0dGhpcy5yZWFkUmVjZWlwdChqc29uLlJlYWRSZWNlaXB0IHx8ICcnKTtcblxuXHRcdFx0dGhpcy5jb21wdXRlU2VuZGVyRW1haWwoKTtcblxuXHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7KEFqYXhKc29uQXR0YWNobWVudHxudWxsKX0gb0pzb25BdHRhY2htZW50c1xuXHQgKiBAcmV0dXJucyB7QXJyYXl9XG5cdCAqL1xuXHRpbml0QXR0YWNobWVudHNGcm9tSnNvbihqc29uKSB7XG5cdFx0bGV0IGluZGV4ID0gMCxcblx0XHRcdGxlbiA9IDAsXG5cdFx0XHRhdHRhY2htZW50ID0gbnVsbDtcblx0XHRjb25zdCByZXN1bHQgPSBbXTtcblxuXHRcdGlmIChqc29uICYmICdDb2xsZWN0aW9uL0F0dGFjaG1lbnRDb2xsZWN0aW9uJyA9PT0ganNvblsnQE9iamVjdCddICYmIGlzTm9uRW1wdHlBcnJheShqc29uWydAQ29sbGVjdGlvbiddKSkge1xuXHRcdFx0Zm9yIChpbmRleCA9IDAsIGxlbiA9IGpzb25bJ0BDb2xsZWN0aW9uJ10ubGVuZ3RoOyBpbmRleCA8IGxlbjsgaW5kZXgrKykge1xuXHRcdFx0XHRhdHRhY2htZW50ID0gQXR0YWNobWVudE1vZGVsLm5ld0luc3RhbmNlRnJvbUpzb24oanNvblsnQENvbGxlY3Rpb24nXVtpbmRleF0pO1xuXHRcdFx0XHRpZiAoYXR0YWNobWVudCkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdCcnICE9PSBhdHRhY2htZW50LmNpZFdpdGhPdXRUYWdzICYmXG5cdFx0XHRcdFx0XHQwIDwgdGhpcy5mb3VuZGVkQ0lEcy5sZW5ndGggJiZcblx0XHRcdFx0XHRcdDAgPD0gaW5BcnJheShhdHRhY2htZW50LmNpZFdpdGhPdXRUYWdzLCB0aGlzLmZvdW5kZWRDSURzKVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0YXR0YWNobWVudC5pc0xpbmtlZCA9IHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmVzdWx0LnB1c2goYXR0YWNobWVudCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aGFzVW5zdWJzcmliZUxpbmtzKCkge1xuXHRcdHJldHVybiB0aGlzLnVuc3Vic3JpYmVMaW5rcyAmJiAwIDwgdGhpcy51bnN1YnNyaWJlTGlua3MubGVuZ3RoO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRnZXRGaXJzdFVuc3Vic3JpYmVMaW5rKCkge1xuXHRcdHJldHVybiB0aGlzLnVuc3Vic3JpYmVMaW5rcyAmJiAwIDwgdGhpcy51bnN1YnNyaWJlTGlua3MubGVuZ3RoID8gdGhpcy51bnN1YnNyaWJlTGlua3NbMF0gfHwgJycgOiAnJztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0FqYXhKc29uTWVzc2FnZX0ganNvblxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGluaXRGbGFnc0J5SnNvbihqc29uKSB7XG5cdFx0bGV0IHJlc3VsdCA9IGZhbHNlO1xuXHRcdGlmIChqc29uICYmICdPYmplY3QvTWVzc2FnZScgPT09IGpzb25bJ0BPYmplY3QnXSkge1xuXHRcdFx0dGhpcy51bnNlZW4oIWpzb24uSXNTZWVuKTtcblx0XHRcdHRoaXMuZmxhZ2dlZCghIWpzb24uSXNGbGFnZ2VkKTtcblx0XHRcdHRoaXMuYW5zd2VyZWQoISFqc29uLklzQW5zd2VyZWQpO1xuXHRcdFx0dGhpcy5mb3J3YXJkZWQoISFqc29uLklzRm9yd2FyZGVkKTtcblx0XHRcdHRoaXMuaXNSZWFkUmVjZWlwdCghIWpzb24uSXNSZWFkUmVjZWlwdCk7XG5cdFx0XHR0aGlzLmRlbGV0ZWRNYXJrKCEhanNvbi5Jc0RlbGV0ZWQpO1xuXG5cdFx0XHRyZXN1bHQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtib29sZWFufSBmcmllbmRseVZpZXdcblx0ICogQHBhcmFtIHtib29sZWFuPX0gd3JhcFdpdGhMaW5rID0gZmFsc2Vcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGZyb21Ub0xpbmUoZnJpZW5kbHlWaWV3LCB3cmFwV2l0aExpbmsgPSBmYWxzZSkge1xuXHRcdHJldHVybiBlbWFpbEFycmF5VG9TdHJpbmcodGhpcy5mcm9tLCBmcmllbmRseVZpZXcsIHdyYXBXaXRoTGluayk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGZyb21Ea2ltRGF0YSgpIHtcblx0XHRsZXQgcmVzdWx0ID0gWydub25lJywgJyddO1xuXHRcdGlmIChpc05vbkVtcHR5QXJyYXkodGhpcy5mcm9tKSAmJiAxID09PSB0aGlzLmZyb20ubGVuZ3RoICYmIHRoaXMuZnJvbVswXSAmJiB0aGlzLmZyb21bMF0uZGtpbVN0YXR1cykge1xuXHRcdFx0cmVzdWx0ID0gW3RoaXMuZnJvbVswXS5ka2ltU3RhdHVzLCB0aGlzLmZyb21bMF0uZGtpbVZhbHVlIHx8ICcnXTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gZnJpZW5kbHlWaWV3XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IHdyYXBXaXRoTGluayA9IGZhbHNlXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHR0b1RvTGluZShmcmllbmRseVZpZXcsIHdyYXBXaXRoTGluayA9IGZhbHNlKSB7XG5cdFx0cmV0dXJuIGVtYWlsQXJyYXlUb1N0cmluZyh0aGlzLnRvLCBmcmllbmRseVZpZXcsIHdyYXBXaXRoTGluayk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtib29sZWFufSBmcmllbmRseVZpZXdcblx0ICogQHBhcmFtIHtib29sZWFuPX0gd3JhcFdpdGhMaW5rID0gZmFsc2Vcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGNjVG9MaW5lKGZyaWVuZGx5Vmlldywgd3JhcFdpdGhMaW5rID0gZmFsc2UpIHtcblx0XHRyZXR1cm4gZW1haWxBcnJheVRvU3RyaW5nKHRoaXMuY2MsIGZyaWVuZGx5Vmlldywgd3JhcFdpdGhMaW5rKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGZyaWVuZGx5Vmlld1xuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSB3cmFwV2l0aExpbmsgPSBmYWxzZVxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0YmNjVG9MaW5lKGZyaWVuZGx5Vmlldywgd3JhcFdpdGhMaW5rID0gZmFsc2UpIHtcblx0XHRyZXR1cm4gZW1haWxBcnJheVRvU3RyaW5nKHRoaXMuYmNjLCBmcmllbmRseVZpZXcsIHdyYXBXaXRoTGluayk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtib29sZWFufSBmcmllbmRseVZpZXdcblx0ICogQHBhcmFtIHtib29sZWFuPX0gd3JhcFdpdGhMaW5rID0gZmFsc2Vcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdHJlcGx5VG9Ub0xpbmUoZnJpZW5kbHlWaWV3LCB3cmFwV2l0aExpbmsgPSBmYWxzZSkge1xuXHRcdHJldHVybiBlbWFpbEFycmF5VG9TdHJpbmcodGhpcy5yZXBseVRvLCBmcmllbmRseVZpZXcsIHdyYXBXaXRoTGluayk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybiBzdHJpbmdcblx0ICovXG5cdGxpbmVBc0NzcygpIHtcblx0XHRyZXR1cm4gY2xhc3NuYW1lcyh7XG5cdFx0XHQnZGVsZXRlZCc6IHRoaXMuZGVsZXRlZCgpLFxuXHRcdFx0J2RlbGV0ZWQtbWFyayc6IHRoaXMuZGVsZXRlZE1hcmsoKSxcblx0XHRcdCdzZWxlY3RlZCc6IHRoaXMuc2VsZWN0ZWQoKSxcblx0XHRcdCdjaGVja2VkJzogdGhpcy5jaGVja2VkKCksXG5cdFx0XHQnZmxhZ2dlZCc6IHRoaXMuZmxhZ2dlZCgpLFxuXHRcdFx0J3Vuc2Vlbic6IHRoaXMudW5zZWVuKCksXG5cdFx0XHQnYW5zd2VyZWQnOiB0aGlzLmFuc3dlcmVkKCksXG5cdFx0XHQnZm9yd2FyZGVkJzogdGhpcy5mb3J3YXJkZWQoKSxcblx0XHRcdCdmb2N1c2VkJzogdGhpcy5mb2N1c2VkKCksXG5cdFx0XHQnaW1wb3J0YW50JzogdGhpcy5pc0ltcG9ydGFudCgpLFxuXHRcdFx0J3dpdGhBdHRhY2htZW50cyc6IHRoaXMuaGFzQXR0YWNobWVudHMoKSxcblx0XHRcdCduZXcnOiB0aGlzLm5ld0ZvckFuaW1hdGlvbigpLFxuXHRcdFx0J2VtcHR5U3ViamVjdCc6ICcnID09PSB0aGlzLnN1YmplY3QoKSxcblx0XHRcdC8vICdoYXNDaGlsZHJlbk1lc3NhZ2UnOiAxIDwgdGhpcy50aHJlYWRzTGVuKCksXG5cdFx0XHQnaGFzVW5zZWVuU3ViTWVzc2FnZSc6IHRoaXMuaGFzVW5zZWVuU3ViTWVzc2FnZSgpLFxuXHRcdFx0J2hhc0ZsYWdnZWRTdWJNZXNzYWdlJzogdGhpcy5oYXNGbGFnZ2VkU3ViTWVzc2FnZSgpXG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRoYXNWaXNpYmxlQXR0YWNobWVudHMoKSB7XG5cdFx0cmV0dXJuICEhXy5maW5kKHRoaXMuYXR0YWNobWVudHMoKSwgKGl0ZW0pID0+ICFpdGVtLmlzTGlua2VkKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY2lkXG5cdCAqIEByZXR1cm5zIHsqfVxuXHQgKi9cblx0ZmluZEF0dGFjaG1lbnRCeUNpZChjaWQpIHtcblx0XHRsZXQgcmVzdWx0ID0gbnVsbDtcblx0XHRjb25zdCBhdHRhY2htZW50cyA9IHRoaXMuYXR0YWNobWVudHMoKTtcblxuXHRcdGlmIChpc05vbkVtcHR5QXJyYXkoYXR0YWNobWVudHMpKSB7XG5cdFx0XHRjaWQgPSBjaWQucmVwbGFjZSgvXjwrLywgJycpLnJlcGxhY2UoLz4rJC8sICcnKTtcblx0XHRcdHJlc3VsdCA9IF8uZmluZChhdHRhY2htZW50cywgKGl0ZW0pID0+IGNpZCA9PT0gaXRlbS5jaWRXaXRoT3V0VGFncyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdCB8fCBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50TG9jYXRpb25cblx0ICogQHJldHVybnMgeyp9XG5cdCAqL1xuXHRmaW5kQXR0YWNobWVudEJ5Q29udGVudExvY2F0aW9uKGNvbnRlbnRMb2NhdGlvbikge1xuXHRcdGxldCByZXN1bHQgPSBudWxsO1xuXHRcdGNvbnN0IGF0dGFjaG1lbnRzID0gdGhpcy5hdHRhY2htZW50cygpO1xuXG5cdFx0aWYgKGlzTm9uRW1wdHlBcnJheShhdHRhY2htZW50cykpIHtcblx0XHRcdHJlc3VsdCA9IF8uZmluZChhdHRhY2htZW50cywgKGl0ZW0pID0+IGNvbnRlbnRMb2NhdGlvbiA9PT0gaXRlbS5jb250ZW50TG9jYXRpb24pO1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQgfHwgbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0bWVzc2FnZUlkKCkge1xuXHRcdHJldHVybiB0aGlzLnNNZXNzYWdlSWQ7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGluUmVwbHlUbygpIHtcblx0XHRyZXR1cm4gdGhpcy5zSW5SZXBseVRvO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRyZWZlcmVuY2VzKCkge1xuXHRcdHJldHVybiB0aGlzLnNSZWZlcmVuY2VzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRmcm9tQXNTaW5nbGVFbWFpbCgpIHtcblx0XHRyZXR1cm4gaXNBcnJheSh0aGlzLmZyb20pICYmIHRoaXMuZnJvbVswXSA/IHRoaXMuZnJvbVswXS5lbWFpbCA6ICcnO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHR2aWV3TGluaygpIHtcblx0XHRyZXR1cm4gbWVzc2FnZVZpZXdMaW5rKHRoaXMucmVxdWVzdEhhc2gpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRkb3dubG9hZExpbmsoKSB7XG5cdFx0cmV0dXJuIG1lc3NhZ2VEb3dubG9hZExpbmsodGhpcy5yZXF1ZXN0SGFzaCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtPYmplY3R9IGV4Y2x1ZGVFbWFpbHNcblx0ICogQHBhcmFtIHtib29sZWFuPX0gbGFzdCA9IGZhbHNlXG5cdCAqIEByZXR1cm5zIHtBcnJheX1cblx0ICovXG5cdHJlcGx5RW1haWxzKGV4Y2x1ZGVFbWFpbHMsIGxhc3QgPSBmYWxzZSkge1xuXHRcdGNvbnN0IHJlc3VsdCA9IFtdLFxuXHRcdFx0dW5pYyA9IGlzVW5kKGV4Y2x1ZGVFbWFpbHMpID8ge30gOiBleGNsdWRlRW1haWxzO1xuXG5cdFx0cmVwbHlIZWxwZXIodGhpcy5yZXBseVRvLCB1bmljLCByZXN1bHQpO1xuXHRcdGlmICgwID09PSByZXN1bHQubGVuZ3RoKSB7XG5cdFx0XHRyZXBseUhlbHBlcih0aGlzLmZyb20sIHVuaWMsIHJlc3VsdCk7XG5cdFx0fVxuXG5cdFx0aWYgKDAgPT09IHJlc3VsdC5sZW5ndGggJiYgIWxhc3QpIHtcblx0XHRcdHJldHVybiB0aGlzLnJlcGx5RW1haWxzKHt9LCB0cnVlKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBleGNsdWRlRW1haWxzXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGxhc3QgPSBmYWxzZVxuXHQgKiBAcmV0dXJucyB7QXJyYXkuPEFycmF5Pn1cblx0ICovXG5cdHJlcGx5QWxsRW1haWxzKGV4Y2x1ZGVFbWFpbHMsIGxhc3QgPSBmYWxzZSkge1xuXHRcdGxldCBkYXRhID0gW107XG5cdFx0Y29uc3QgdG9SZXN1bHQgPSBbXSxcblx0XHRcdGNjUmVzdWx0ID0gW10sXG5cdFx0XHR1bmljID0gaXNVbmQoZXhjbHVkZUVtYWlscykgPyB7fSA6IGV4Y2x1ZGVFbWFpbHM7XG5cblx0XHRyZXBseUhlbHBlcih0aGlzLnJlcGx5VG8sIHVuaWMsIHRvUmVzdWx0KTtcblx0XHRpZiAoMCA9PT0gdG9SZXN1bHQubGVuZ3RoKSB7XG5cdFx0XHRyZXBseUhlbHBlcih0aGlzLmZyb20sIHVuaWMsIHRvUmVzdWx0KTtcblx0XHR9XG5cblx0XHRyZXBseUhlbHBlcih0aGlzLnRvLCB1bmljLCB0b1Jlc3VsdCk7XG5cdFx0cmVwbHlIZWxwZXIodGhpcy5jYywgdW5pYywgY2NSZXN1bHQpO1xuXG5cdFx0aWYgKDAgPT09IHRvUmVzdWx0Lmxlbmd0aCAmJiAhbGFzdCkge1xuXHRcdFx0ZGF0YSA9IHRoaXMucmVwbHlBbGxFbWFpbHMoe30sIHRydWUpO1xuXHRcdFx0cmV0dXJuIFtkYXRhWzBdLCBjY1Jlc3VsdF07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIFt0b1Jlc3VsdCwgY2NSZXN1bHRdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHR0ZXh0Qm9keVRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLmJvZHkgPyB0aGlzLmJvZHkuaHRtbCgpIDogJyc7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGF0dGFjaG1lbnRzVG9TdHJpbmdMaW5lKCkge1xuXHRcdGNvbnN0IGF0dGFjaExpbmVzID0gXy5tYXAodGhpcy5hdHRhY2htZW50cygpLCAoaXRlbSkgPT4gaXRlbS5maWxlTmFtZSArICcgKCcgKyBpdGVtLmZyaWVuZGx5U2l6ZSArICcpJyk7XG5cdFx0cmV0dXJuIGF0dGFjaExpbmVzICYmIDAgPCBhdHRhY2hMaW5lcy5sZW5ndGggPyBhdHRhY2hMaW5lcy5qb2luKCcsICcpIDogJyc7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtib29sZWFuPX0gcHJpbnQgPSBmYWxzZVxuXHQgKi9cblx0dmlld1BvcHVwTWVzc2FnZShwcmludCA9IGZhbHNlKSB7XG5cdFx0dGhpcy5zaG93TGF6eUV4dGVybmFsSW1hZ2VzSW5Cb2R5KCk7XG5cblx0XHRjb25zdCB0aW1lU3RhbXBJblVUQyA9IHRoaXMuZGF0ZVRpbWVTdGFtcEluVVRDKCkgfHwgMCxcblx0XHRcdGNjTGluZSA9IHRoaXMuY2NUb0xpbmUoZmFsc2UpLFxuXHRcdFx0bSA9IDAgPCB0aW1lU3RhbXBJblVUQyA/IG1vbWVudC51bml4KHRpbWVTdGFtcEluVVRDKSA6IG51bGw7XG5cblx0XHRwcmV2aWV3TWVzc2FnZShcblx0XHRcdHtcblx0XHRcdFx0dGl0bGU6IHRoaXMuc3ViamVjdCgpLFxuXHRcdFx0XHRzdWJqZWN0OiB0aGlzLnN1YmplY3QoKSxcblx0XHRcdFx0ZGF0ZTogbSA/IG0uZm9ybWF0KCdMTEwnKSA6ICcnLFxuXHRcdFx0XHRmcm9tQ3JlZHM6IHRoaXMuZnJvbVRvTGluZShmYWxzZSksXG5cdFx0XHRcdHRvTGFiZWw6IGkxOG4oJ01FU1NBR0UvTEFCRUxfVE8nKSxcblx0XHRcdFx0dG9DcmVkczogdGhpcy50b1RvTGluZShmYWxzZSksXG5cdFx0XHRcdGNjQ2xhc3M6IGNjTGluZSA/ICcnIDogJ3JsLXByZXZpZXctaGlkZScsXG5cdFx0XHRcdGNjTGFiZWw6IGkxOG4oJ01FU1NBR0UvTEFCRUxfQ0MnKSxcblx0XHRcdFx0Y2NDcmVkczogY2NMaW5lXG5cdFx0XHR9LFxuXHRcdFx0dGhpcy5ib2R5LFxuXHRcdFx0dGhpcy5pc0h0bWwoKSxcblx0XHRcdHByaW50XG5cdFx0KTtcblx0fVxuXG5cdHByaW50TWVzc2FnZSgpIHtcblx0XHR0aGlzLnZpZXdQb3B1cE1lc3NhZ2UodHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGdlbmVyYXRlVWlkKCkge1xuXHRcdHJldHVybiB0aGlzLmZvbGRlckZ1bGxOYW1lUmF3ICsgJy8nICsgdGhpcy51aWQ7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtNZXNzYWdlTW9kZWx9IG1lc3NhZ2Vcblx0ICogQHJldHVybnMge01lc3NhZ2VNb2RlbH1cblx0ICovXG5cdHBvcHVsYXRlQnlNZXNzYWdlTGlzdEl0ZW0obWVzc2FnZSkge1xuXHRcdGlmIChtZXNzYWdlKSB7XG5cdFx0XHR0aGlzLmZvbGRlckZ1bGxOYW1lUmF3ID0gbWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdztcblx0XHRcdHRoaXMudWlkID0gbWVzc2FnZS51aWQ7XG5cdFx0XHR0aGlzLmhhc2ggPSBtZXNzYWdlLmhhc2g7XG5cdFx0XHR0aGlzLnJlcXVlc3RIYXNoID0gbWVzc2FnZS5yZXF1ZXN0SGFzaDtcblx0XHRcdHRoaXMuc3ViamVjdChtZXNzYWdlLnN1YmplY3QoKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdWJqZWN0UHJlZml4KHRoaXMuc3ViamVjdFByZWZpeCgpKTtcblx0XHR0aGlzLnN1YmplY3RTdWZmaXgodGhpcy5zdWJqZWN0U3VmZml4KCkpO1xuXG5cdFx0aWYgKG1lc3NhZ2UpIHtcblx0XHRcdHRoaXMuc2l6ZShtZXNzYWdlLnNpemUoKSk7XG5cdFx0XHR0aGlzLmRhdGVUaW1lU3RhbXBJblVUQyhtZXNzYWdlLmRhdGVUaW1lU3RhbXBJblVUQygpKTtcblx0XHRcdHRoaXMucHJpb3JpdHkobWVzc2FnZS5wcmlvcml0eSgpKTtcblxuXHRcdFx0dGhpcy5wcm94eSA9IG1lc3NhZ2UucHJveHk7XG5cblx0XHRcdHRoaXMuZnJvbUVtYWlsU3RyaW5nKG1lc3NhZ2UuZnJvbUVtYWlsU3RyaW5nKCkpO1xuXHRcdFx0dGhpcy5mcm9tQ2xlYXJFbWFpbFN0cmluZyhtZXNzYWdlLmZyb21DbGVhckVtYWlsU3RyaW5nKCkpO1xuXHRcdFx0dGhpcy50b0VtYWlsc1N0cmluZyhtZXNzYWdlLnRvRW1haWxzU3RyaW5nKCkpO1xuXHRcdFx0dGhpcy50b0NsZWFyRW1haWxzU3RyaW5nKG1lc3NhZ2UudG9DbGVhckVtYWlsc1N0cmluZygpKTtcblxuXHRcdFx0dGhpcy5lbWFpbHMgPSBtZXNzYWdlLmVtYWlscztcblxuXHRcdFx0dGhpcy5mcm9tID0gbWVzc2FnZS5mcm9tO1xuXHRcdFx0dGhpcy50byA9IG1lc3NhZ2UudG87XG5cdFx0XHR0aGlzLmNjID0gbWVzc2FnZS5jYztcblx0XHRcdHRoaXMuYmNjID0gbWVzc2FnZS5iY2M7XG5cdFx0XHR0aGlzLnJlcGx5VG8gPSBtZXNzYWdlLnJlcGx5VG87XG5cdFx0XHR0aGlzLmRlbGl2ZXJlZFRvID0gbWVzc2FnZS5kZWxpdmVyZWRUbztcblx0XHRcdHRoaXMudW5zdWJzcmliZUxpbmtzID0gbWVzc2FnZS51bnN1YnNyaWJlTGlua3M7XG5cblx0XHRcdHRoaXMudW5zZWVuKG1lc3NhZ2UudW5zZWVuKCkpO1xuXHRcdFx0dGhpcy5mbGFnZ2VkKG1lc3NhZ2UuZmxhZ2dlZCgpKTtcblx0XHRcdHRoaXMuYW5zd2VyZWQobWVzc2FnZS5hbnN3ZXJlZCgpKTtcblx0XHRcdHRoaXMuZm9yd2FyZGVkKG1lc3NhZ2UuZm9yd2FyZGVkKCkpO1xuXHRcdFx0dGhpcy5pc1JlYWRSZWNlaXB0KG1lc3NhZ2UuaXNSZWFkUmVjZWlwdCgpKTtcblx0XHRcdHRoaXMuZGVsZXRlZE1hcmsobWVzc2FnZS5kZWxldGVkTWFyaygpKTtcblxuXHRcdFx0dGhpcy5wcmlvcml0eShtZXNzYWdlLnByaW9yaXR5KCkpO1xuXG5cdFx0XHR0aGlzLnNlbGVjdGVkKG1lc3NhZ2Uuc2VsZWN0ZWQoKSk7XG5cdFx0XHR0aGlzLmNoZWNrZWQobWVzc2FnZS5jaGVja2VkKCkpO1xuXHRcdFx0dGhpcy5oYXNBdHRhY2htZW50cyhtZXNzYWdlLmhhc0F0dGFjaG1lbnRzKCkpO1xuXHRcdFx0dGhpcy5hdHRhY2htZW50c1NwZWNEYXRhKG1lc3NhZ2UuYXR0YWNobWVudHNTcGVjRGF0YSgpKTtcblx0XHR9XG5cblx0XHR0aGlzLmJvZHkgPSBudWxsO1xuXG5cdFx0dGhpcy5hRHJhZnRJbmZvID0gW107XG5cdFx0dGhpcy5zTWVzc2FnZUlkID0gJyc7XG5cdFx0dGhpcy5zSW5SZXBseVRvID0gJyc7XG5cdFx0dGhpcy5zUmVmZXJlbmNlcyA9ICcnO1xuXG5cdFx0aWYgKG1lc3NhZ2UpIHtcblx0XHRcdHRoaXMudGhyZWFkcyhtZXNzYWdlLnRocmVhZHMoKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5jb21wdXRlU2VuZGVyRW1haWwoKTtcblxuXHRcdHJldHVybiB0aGlzO1xuXHR9XG5cblx0c2hvd0xhenlFeHRlcm5hbEltYWdlc0luQm9keSgpIHtcblx0XHRpZiAodGhpcy5ib2R5KSB7XG5cdFx0XHQkKCcubGF6eVtkYXRhLW9yaWdpbmFsXScsIHRoaXMuYm9keSkuZWFjaChmdW5jdGlvbigpIHtcblx0XHRcdFx0JCh0aGlzKVxuXHRcdFx0XHRcdC5hdHRyKCdzcmMnLCAkKHRoaXMpLmF0dHIoJ2RhdGEtb3JpZ2luYWwnKSkgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0XHQucmVtb3ZlQXR0cignZGF0YS1vcmlnaW5hbCcpXG5cdFx0XHRcdFx0LnJlbW92ZUF0dHIoJ2RhdGEtbG9hZGVkJyk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRsb3phZCgpIHtcblx0XHRsb3phZCgnaW1nLmxhenk6bm90KC5sYXp5LWluaXRlZCknLCB7XG5cdFx0XHR0aHJlc2hvbGQ6IDAuNCxcblx0XHRcdGxvYWQ6IChlbGVtZW50KSA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCdsYXp5JywgZWxlbWVudC5kYXRhc2V0Lm9yaWdpbmFsKTtcblx0XHRcdFx0ZWxlbWVudC5zcmMgPSBEQVRBX0lNQUdFX0xBWllfUExBQ0VIT0xERVJfUElDO1xuXHRcdFx0XHQkKGVsZW1lbnQpXG5cdFx0XHRcdFx0LmFkZENsYXNzKCdsYXp5LWluaXRlZCcpXG5cdFx0XHRcdFx0LmF0dHIoJ3NyYycsIGVsZW1lbnQuZGF0YXNldC5vcmlnaW5hbClcblx0XHRcdFx0XHQucmVtb3ZlQXR0cignZGF0YS1sb2FkZWQnKVxuXHRcdFx0XHRcdC5yZW1vdmVBdHRyKCdkYXRhLW9yaWdpbmFsJylcblx0XHRcdFx0XHQuY3NzKHsgb3BhY2l0eTogMC4zIH0pXG5cdFx0XHRcdFx0LmFuaW1hdGUoeyBvcGFjaXR5OiAxIH0sIDUwMCk7XG5cdFx0XHR9XG5cdFx0fSkub2JzZXJ2ZSgpO1xuXHR9XG5cblx0c2hvd0V4dGVybmFsSW1hZ2VzKGxhenkgPSBmYWxzZSkge1xuXHRcdGlmICh0aGlzLmJvZHkgJiYgdGhpcy5ib2R5LmRhdGEoJ3JsLWhhcy1pbWFnZXMnKSkge1xuXHRcdFx0dGhpcy5oYXNJbWFnZXMoZmFsc2UpO1xuXHRcdFx0dGhpcy5ib2R5LmRhdGEoJ3JsLWhhcy1pbWFnZXMnLCBmYWxzZSk7XG5cblx0XHRcdGxldCBhdHRyID0gdGhpcy5wcm94eSA/ICdkYXRhLXgtYWRkaXRpb25hbC1zcmMnIDogJ2RhdGEteC1zcmMnO1xuXHRcdFx0JCgnWycgKyBhdHRyICsgJ10nLCB0aGlzLmJvZHkpLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNvbnN0ICR0aGlzID0gJCh0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0aWYgKGxhenkgJiYgJHRoaXMuaXMoJ2ltZycpKSB7XG5cdFx0XHRcdFx0JHRoaXNcblx0XHRcdFx0XHRcdC5hZGRDbGFzcygnbGF6eScpXG5cdFx0XHRcdFx0XHQuYXR0cignZGF0YS1vcmlnaW5hbCcsICR0aGlzLmF0dHIoYXR0cikpXG5cdFx0XHRcdFx0XHQucmVtb3ZlQXR0cignZGF0YS1sb2FkZWQnKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQkdGhpcy5hdHRyKCdzcmMnLCAkdGhpcy5hdHRyKGF0dHIpKS5yZW1vdmVBdHRyKCdkYXRhLWxvYWRlZCcpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0YXR0ciA9IHRoaXMucHJveHkgPyAnZGF0YS14LWFkZGl0aW9uYWwtc3R5bGUtdXJsJyA6ICdkYXRhLXgtc3R5bGUtdXJsJztcblx0XHRcdCQoJ1snICsgYXR0ciArICddJywgdGhpcy5ib2R5KS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjb25zdCAkdGhpcyA9ICQodGhpcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHRcdGxldCBzdHlsZSA9IHRyaW0oJHRoaXMuYXR0cignc3R5bGUnKSk7XG5cdFx0XHRcdHN0eWxlID0gJycgPT09IHN0eWxlID8gJycgOiAnOycgPT09IHN0eWxlLnN1YnN0cigtMSkgPyBzdHlsZSArICcgJyA6IHN0eWxlICsgJzsgJztcblx0XHRcdFx0JHRoaXMuYXR0cignc3R5bGUnLCBzdHlsZSArICR0aGlzLmF0dHIoYXR0cikpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGlmIChsYXp5KSB7XG5cdFx0XHRcdHRoaXMubG96YWQoKTtcblx0XHRcdFx0JHdpbi5yZXNpemUoKTtcblx0XHRcdH1cblxuXHRcdFx0d2luZG93UmVzaXplKDUwMCk7XG5cdFx0fVxuXHR9XG5cblx0c2hvd0ludGVybmFsSW1hZ2VzKGxhenkgPSBmYWxzZSkge1xuXHRcdGlmICh0aGlzLmJvZHkgJiYgIXRoaXMuYm9keS5kYXRhKCdybC1pbml0LWludGVybmFsLWltYWdlcycpKSB7XG5cdFx0XHR0aGlzLmJvZHkuZGF0YSgncmwtaW5pdC1pbnRlcm5hbC1pbWFnZXMnLCB0cnVlKTtcblxuXHRcdFx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0XHRcdCQoJ1tkYXRhLXgtc3JjLWNpZF0nLCB0aGlzLmJvZHkpLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHRcdGNvbnN0ICR0aGlzID0gJCh0aGlzKSwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0XHRhdHRhY2htZW50ID0gc2VsZi5maW5kQXR0YWNobWVudEJ5Q2lkKCR0aGlzLmF0dHIoJ2RhdGEteC1zcmMtY2lkJykpO1xuXG5cdFx0XHRcdGlmIChhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQuZG93bmxvYWQpIHtcblx0XHRcdFx0XHRpZiAobGF6eSAmJiAkdGhpcy5pcygnaW1nJykpIHtcblx0XHRcdFx0XHRcdCR0aGlzLmFkZENsYXNzKCdsYXp5JykuYXR0cignZGF0YS1vcmlnaW5hbCcsIGF0dGFjaG1lbnQubGlua1ByZXZpZXcoKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdCR0aGlzLmF0dHIoJ3NyYycsIGF0dGFjaG1lbnQubGlua1ByZXZpZXcoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0JCgnW2RhdGEteC1zcmMtbG9jYXRpb25dJywgdGhpcy5ib2R5KS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRjb25zdCAkdGhpcyA9ICQodGhpcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHRcdGxldCBhdHRhY2htZW50ID0gc2VsZi5maW5kQXR0YWNobWVudEJ5Q29udGVudExvY2F0aW9uKCR0aGlzLmF0dHIoJ2RhdGEteC1zcmMtbG9jYXRpb24nKSk7XG5cdFx0XHRcdGlmICghYXR0YWNobWVudCkge1xuXHRcdFx0XHRcdGF0dGFjaG1lbnQgPSBzZWxmLmZpbmRBdHRhY2htZW50QnlDaWQoJHRoaXMuYXR0cignZGF0YS14LXNyYy1sb2NhdGlvbicpKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChhdHRhY2htZW50ICYmIGF0dGFjaG1lbnQuZG93bmxvYWQpIHtcblx0XHRcdFx0XHRpZiAobGF6eSAmJiAkdGhpcy5pcygnaW1nJykpIHtcblx0XHRcdFx0XHRcdCR0aGlzLmFkZENsYXNzKCdsYXp5JykuYXR0cignZGF0YS1vcmlnaW5hbCcsIGF0dGFjaG1lbnQubGlua1ByZXZpZXcoKSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdCR0aGlzLmF0dHIoJ3NyYycsIGF0dGFjaG1lbnQubGlua1ByZXZpZXcoKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0JCgnW2RhdGEteC1zdHlsZS1jaWRdJywgdGhpcy5ib2R5KS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRsZXQgc3R5bGUgPSAnJyxcblx0XHRcdFx0XHRuYW1lID0gJyc7XG5cblx0XHRcdFx0Y29uc3QgJHRoaXMgPSAkKHRoaXMpLCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXHRcdFx0XHRcdGF0dGFjaG1lbnQgPSBzZWxmLmZpbmRBdHRhY2htZW50QnlDaWQoJHRoaXMuYXR0cignZGF0YS14LXN0eWxlLWNpZCcpKTtcblxuXHRcdFx0XHRpZiAoYXR0YWNobWVudCAmJiBhdHRhY2htZW50LmxpbmtQcmV2aWV3KSB7XG5cdFx0XHRcdFx0bmFtZSA9ICR0aGlzLmF0dHIoJ2RhdGEteC1zdHlsZS1jaWQtbmFtZScpO1xuXHRcdFx0XHRcdGlmICgnJyAhPT0gbmFtZSkge1xuXHRcdFx0XHRcdFx0c3R5bGUgPSB0cmltKCR0aGlzLmF0dHIoJ3N0eWxlJykpO1xuXHRcdFx0XHRcdFx0c3R5bGUgPSAnJyA9PT0gc3R5bGUgPyAnJyA6ICc7JyA9PT0gc3R5bGUuc3Vic3RyKC0xKSA/IHN0eWxlICsgJyAnIDogc3R5bGUgKyAnOyAnO1xuXHRcdFx0XHRcdFx0JHRoaXMuYXR0cignc3R5bGUnLCBzdHlsZSArIG5hbWUgKyBcIjogdXJsKCdcIiArIGF0dGFjaG1lbnQubGlua1ByZXZpZXcoKSArIFwiJylcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKGxhenkpIHtcblx0XHRcdFx0Ly8gJCgnLlJMLU1haWxNZXNzYWdlVmlldyAubWVzc2FnZVZpZXcgLm1lc3NhZ2VJdGVtIC5jb250ZW50JylbMF1cblx0XHRcdFx0Xy5kZWxheSgoKSA9PiB0aGlzLmxvemFkKCksIDMwMCk7XG5cdFx0XHR9XG5cblx0XHRcdHdpbmRvd1Jlc2l6ZSg1MDApO1xuXHRcdH1cblx0fVxuXG5cdHN0b3JlRGF0YUluRG9tKCkge1xuXHRcdGlmICh0aGlzLmJvZHkpIHtcblx0XHRcdHRoaXMuYm9keS5kYXRhKCdybC1pcy1odG1sJywgISF0aGlzLmlzSHRtbCgpKTtcblx0XHRcdHRoaXMuYm9keS5kYXRhKCdybC1oYXMtaW1hZ2VzJywgISF0aGlzLmhhc0ltYWdlcygpKTtcblx0XHR9XG5cdH1cblxuXHRmZXRjaERhdGFGcm9tRG9tKCkge1xuXHRcdGlmICh0aGlzLmJvZHkpIHtcblx0XHRcdHRoaXMuaXNIdG1sKCEhdGhpcy5ib2R5LmRhdGEoJ3JsLWlzLWh0bWwnKSk7XG5cdFx0XHR0aGlzLmhhc0ltYWdlcyghIXRoaXMuYm9keS5kYXRhKCdybC1oYXMtaW1hZ2VzJykpO1xuXHRcdH1cblx0fVxuXG5cdHJlcGxhY2VQbGFuZVRleHRCb2R5KHBsYWluKSB7XG5cdFx0aWYgKHRoaXMuYm9keSkge1xuXHRcdFx0dGhpcy5ib2R5Lmh0bWwocGxhaW4pLmFkZENsYXNzKCdiLXRleHQtcGFydCBwbGFpbicpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0ZmxhZ0hhc2goKSB7XG5cdFx0cmV0dXJuIFtcblx0XHRcdHRoaXMuZGVsZXRlZCgpLFxuXHRcdFx0dGhpcy5kZWxldGVkTWFyaygpLFxuXHRcdFx0dGhpcy51bnNlZW4oKSxcblx0XHRcdHRoaXMuZmxhZ2dlZCgpLFxuXHRcdFx0dGhpcy5hbnN3ZXJlZCgpLFxuXHRcdFx0dGhpcy5mb3J3YXJkZWQoKSxcblx0XHRcdHRoaXMuaXNSZWFkUmVjZWlwdCgpXG5cdFx0XS5qb2luKCcsJyk7XG5cdH1cbn1cblxuZXhwb3J0IHsgTWVzc2FnZU1vZGVsLCBNZXNzYWdlTW9kZWwgYXMgZGVmYXVsdCB9O1xuIiwiLyohXG4gKiBKYXZhU2NyaXB0IENvb2tpZSB2Mi4yLjFcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9qcy1jb29raWUvanMtY29va2llXG4gKlxuICogQ29weXJpZ2h0IDIwMDYsIDIwMTUgS2xhdXMgSGFydGwgJiBGYWduZXIgQnJhY2tcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICovXG47KGZ1bmN0aW9uIChmYWN0b3J5KSB7XG5cdHZhciByZWdpc3RlcmVkSW5Nb2R1bGVMb2FkZXI7XG5cdGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHtcblx0XHRkZWZpbmUoZmFjdG9yeSk7XG5cdFx0cmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyID0gdHJ1ZTtcblx0fVxuXHRpZiAodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKSB7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdFx0cmVnaXN0ZXJlZEluTW9kdWxlTG9hZGVyID0gdHJ1ZTtcblx0fVxuXHRpZiAoIXJlZ2lzdGVyZWRJbk1vZHVsZUxvYWRlcikge1xuXHRcdHZhciBPbGRDb29raWVzID0gd2luZG93LkNvb2tpZXM7XG5cdFx0dmFyIGFwaSA9IHdpbmRvdy5Db29raWVzID0gZmFjdG9yeSgpO1xuXHRcdGFwaS5ub0NvbmZsaWN0ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0d2luZG93LkNvb2tpZXMgPSBPbGRDb29raWVzO1xuXHRcdFx0cmV0dXJuIGFwaTtcblx0XHR9O1xuXHR9XG59KGZ1bmN0aW9uICgpIHtcblx0ZnVuY3Rpb24gZXh0ZW5kICgpIHtcblx0XHR2YXIgaSA9IDA7XG5cdFx0dmFyIHJlc3VsdCA9IHt9O1xuXHRcdGZvciAoOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXR0cmlidXRlcyA9IGFyZ3VtZW50c1sgaSBdO1xuXHRcdFx0Zm9yICh2YXIga2V5IGluIGF0dHJpYnV0ZXMpIHtcblx0XHRcdFx0cmVzdWx0W2tleV0gPSBhdHRyaWJ1dGVzW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRmdW5jdGlvbiBkZWNvZGUgKHMpIHtcblx0XHRyZXR1cm4gcy5yZXBsYWNlKC8oJVswLTlBLVpdezJ9KSsvZywgZGVjb2RlVVJJQ29tcG9uZW50KTtcblx0fVxuXG5cdGZ1bmN0aW9uIGluaXQgKGNvbnZlcnRlcikge1xuXHRcdGZ1bmN0aW9uIGFwaSgpIHt9XG5cblx0XHRmdW5jdGlvbiBzZXQgKGtleSwgdmFsdWUsIGF0dHJpYnV0ZXMpIHtcblx0XHRcdGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0YXR0cmlidXRlcyA9IGV4dGVuZCh7XG5cdFx0XHRcdHBhdGg6ICcvJ1xuXHRcdFx0fSwgYXBpLmRlZmF1bHRzLCBhdHRyaWJ1dGVzKTtcblxuXHRcdFx0aWYgKHR5cGVvZiBhdHRyaWJ1dGVzLmV4cGlyZXMgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGF0dHJpYnV0ZXMuZXhwaXJlcyA9IG5ldyBEYXRlKG5ldyBEYXRlKCkgKiAxICsgYXR0cmlidXRlcy5leHBpcmVzICogODY0ZSs1KTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gV2UncmUgdXNpbmcgXCJleHBpcmVzXCIgYmVjYXVzZSBcIm1heC1hZ2VcIiBpcyBub3Qgc3VwcG9ydGVkIGJ5IElFXG5cdFx0XHRhdHRyaWJ1dGVzLmV4cGlyZXMgPSBhdHRyaWJ1dGVzLmV4cGlyZXMgPyBhdHRyaWJ1dGVzLmV4cGlyZXMudG9VVENTdHJpbmcoKSA6ICcnO1xuXG5cdFx0XHR0cnkge1xuXHRcdFx0XHR2YXIgcmVzdWx0ID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuXHRcdFx0XHRpZiAoL15bXFx7XFxbXS8udGVzdChyZXN1bHQpKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSByZXN1bHQ7XG5cdFx0XHRcdH1cblx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cblx0XHRcdHZhbHVlID0gY29udmVydGVyLndyaXRlID9cblx0XHRcdFx0Y29udmVydGVyLndyaXRlKHZhbHVlLCBrZXkpIDpcblx0XHRcdFx0ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2YWx1ZSkpXG5cdFx0XHRcdFx0LnJlcGxhY2UoLyUoMjN8MjR8MjZ8MkJ8M0F8M0N8M0V8M0R8MkZ8M0Z8NDB8NUJ8NUR8NUV8NjB8N0J8N0R8N0MpL2csIGRlY29kZVVSSUNvbXBvbmVudCk7XG5cblx0XHRcdGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChTdHJpbmcoa2V5KSlcblx0XHRcdFx0LnJlcGxhY2UoLyUoMjN8MjR8MjZ8MkJ8NUV8NjB8N0MpL2csIGRlY29kZVVSSUNvbXBvbmVudClcblx0XHRcdFx0LnJlcGxhY2UoL1tcXChcXCldL2csIGVzY2FwZSk7XG5cblx0XHRcdHZhciBzdHJpbmdpZmllZEF0dHJpYnV0ZXMgPSAnJztcblx0XHRcdGZvciAodmFyIGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykge1xuXHRcdFx0XHRpZiAoIWF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0pIHtcblx0XHRcdFx0XHRjb250aW51ZTtcblx0XHRcdFx0fVxuXHRcdFx0XHRzdHJpbmdpZmllZEF0dHJpYnV0ZXMgKz0gJzsgJyArIGF0dHJpYnV0ZU5hbWU7XG5cdFx0XHRcdGlmIChhdHRyaWJ1dGVzW2F0dHJpYnV0ZU5hbWVdID09PSB0cnVlKSB7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBDb25zaWRlcnMgUkZDIDYyNjUgc2VjdGlvbiA1LjI6XG5cdFx0XHRcdC8vIC4uLlxuXHRcdFx0XHQvLyAzLiAgSWYgdGhlIHJlbWFpbmluZyB1bnBhcnNlZC1hdHRyaWJ1dGVzIGNvbnRhaW5zIGEgJXgzQiAoXCI7XCIpXG5cdFx0XHRcdC8vICAgICBjaGFyYWN0ZXI6XG5cdFx0XHRcdC8vIENvbnN1bWUgdGhlIGNoYXJhY3RlcnMgb2YgdGhlIHVucGFyc2VkLWF0dHJpYnV0ZXMgdXAgdG8sXG5cdFx0XHRcdC8vIG5vdCBpbmNsdWRpbmcsIHRoZSBmaXJzdCAleDNCIChcIjtcIikgY2hhcmFjdGVyLlxuXHRcdFx0XHQvLyAuLi5cblx0XHRcdFx0c3RyaW5naWZpZWRBdHRyaWJ1dGVzICs9ICc9JyArIGF0dHJpYnV0ZXNbYXR0cmlidXRlTmFtZV0uc3BsaXQoJzsnKVswXTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIChkb2N1bWVudC5jb29raWUgPSBrZXkgKyAnPScgKyB2YWx1ZSArIHN0cmluZ2lmaWVkQXR0cmlidXRlcyk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gZ2V0IChrZXksIGpzb24pIHtcblx0XHRcdGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGphciA9IHt9O1xuXHRcdFx0Ly8gVG8gcHJldmVudCB0aGUgZm9yIGxvb3AgaW4gdGhlIGZpcnN0IHBsYWNlIGFzc2lnbiBhbiBlbXB0eSBhcnJheVxuXHRcdFx0Ly8gaW4gY2FzZSB0aGVyZSBhcmUgbm8gY29va2llcyBhdCBhbGwuXG5cdFx0XHR2YXIgY29va2llcyA9IGRvY3VtZW50LmNvb2tpZSA/IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOyAnKSA6IFtdO1xuXHRcdFx0dmFyIGkgPSAwO1xuXG5cdFx0XHRmb3IgKDsgaSA8IGNvb2tpZXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIHBhcnRzID0gY29va2llc1tpXS5zcGxpdCgnPScpO1xuXHRcdFx0XHR2YXIgY29va2llID0gcGFydHMuc2xpY2UoMSkuam9pbignPScpO1xuXG5cdFx0XHRcdGlmICghanNvbiAmJiBjb29raWUuY2hhckF0KDApID09PSAnXCInKSB7XG5cdFx0XHRcdFx0Y29va2llID0gY29va2llLnNsaWNlKDEsIC0xKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0dmFyIG5hbWUgPSBkZWNvZGUocGFydHNbMF0pO1xuXHRcdFx0XHRcdGNvb2tpZSA9IChjb252ZXJ0ZXIucmVhZCB8fCBjb252ZXJ0ZXIpKGNvb2tpZSwgbmFtZSkgfHxcblx0XHRcdFx0XHRcdGRlY29kZShjb29raWUpO1xuXG5cdFx0XHRcdFx0aWYgKGpzb24pIHtcblx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdGNvb2tpZSA9IEpTT04ucGFyc2UoY29va2llKTtcblx0XHRcdFx0XHRcdH0gY2F0Y2ggKGUpIHt9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0amFyW25hbWVdID0gY29va2llO1xuXG5cdFx0XHRcdFx0aWYgKGtleSA9PT0gbmFtZSkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGNhdGNoIChlKSB7fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4ga2V5ID8gamFyW2tleV0gOiBqYXI7XG5cdFx0fVxuXG5cdFx0YXBpLnNldCA9IHNldDtcblx0XHRhcGkuZ2V0ID0gZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuIGdldChrZXksIGZhbHNlIC8qIHJlYWQgYXMgcmF3ICovKTtcblx0XHR9O1xuXHRcdGFwaS5nZXRKU09OID0gZnVuY3Rpb24gKGtleSkge1xuXHRcdFx0cmV0dXJuIGdldChrZXksIHRydWUgLyogcmVhZCBhcyBqc29uICovKTtcblx0XHR9O1xuXHRcdGFwaS5yZW1vdmUgPSBmdW5jdGlvbiAoa2V5LCBhdHRyaWJ1dGVzKSB7XG5cdFx0XHRzZXQoa2V5LCAnJywgZXh0ZW5kKGF0dHJpYnV0ZXMsIHtcblx0XHRcdFx0ZXhwaXJlczogLTFcblx0XHRcdH0pKTtcblx0XHR9O1xuXG5cdFx0YXBpLmRlZmF1bHRzID0ge307XG5cblx0XHRhcGkud2l0aENvbnZlcnRlciA9IGluaXQ7XG5cblx0XHRyZXR1cm4gYXBpO1xuXHR9XG5cblx0cmV0dXJuIGluaXQoZnVuY3Rpb24gKCkge30pO1xufSkpO1xuIiwidmFyIHJlcXVpcmVPYmplY3RDb2VyY2libGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvcmVxdWlyZS1vYmplY3QtY29lcmNpYmxlJyk7XG5cbnZhciBxdW90ID0gL1wiL2c7XG5cbi8vIEIuMi4zLjIuMSBDcmVhdGVIVE1MKHN0cmluZywgdGFnLCBhdHRyaWJ1dGUsIHZhbHVlKVxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1jcmVhdGVodG1sXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChzdHJpbmcsIHRhZywgYXR0cmlidXRlLCB2YWx1ZSkge1xuICB2YXIgUyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHN0cmluZykpO1xuICB2YXIgcDEgPSAnPCcgKyB0YWc7XG4gIGlmIChhdHRyaWJ1dGUgIT09ICcnKSBwMSArPSAnICcgKyBhdHRyaWJ1dGUgKyAnPVwiJyArIFN0cmluZyh2YWx1ZSkucmVwbGFjZShxdW90LCAnJnF1b3Q7JykgKyAnXCInO1xuICByZXR1cm4gcDEgKyAnPicgKyBTICsgJzwvJyArIHRhZyArICc+Jztcbn07XG4iLCJ2YXIgZmFpbHMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZmFpbHMnKTtcblxuLy8gY2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBhIG1ldGhvZCwgbG93ZXJjYXNlXG4vLyBvZiBhIHRhZyBhbmQgZXNjYXBpbmcgcXVvdGVzIGluIGFyZ3VtZW50c1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoTUVUSE9EX05BTUUpIHtcbiAgcmV0dXJuIGZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdGVzdCA9ICcnW01FVEhPRF9OQU1FXSgnXCInKTtcbiAgICByZXR1cm4gdGVzdCAhPT0gdGVzdC50b0xvd2VyQ2FzZSgpIHx8IHRlc3Quc3BsaXQoJ1wiJykubGVuZ3RoID4gMztcbiAgfSk7XG59O1xuIiwidmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL2luc3RhbmNlL3RyaW0nKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCJ2YXIgdHJpbSA9IHJlcXVpcmUoJy4uL3N0cmluZy92aXJ0dWFsL3RyaW0nKTtcblxudmFyIFN0cmluZ1Byb3RvdHlwZSA9IFN0cmluZy5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBvd24gPSBpdC50cmltO1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnc3RyaW5nJyB8fCBpdCA9PT0gU3RyaW5nUHJvdG90eXBlXG4gICAgfHwgKGl0IGluc3RhbmNlb2YgU3RyaW5nICYmIG93biA9PT0gU3RyaW5nUHJvdG90eXBlLnRyaW0pID8gdHJpbSA6IG93bjtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi8uLi9tb2R1bGVzL2VzLnN0cmluZy50cmltJyk7XG52YXIgZW50cnlWaXJ0dWFsID0gcmVxdWlyZSgnLi4vLi4vLi4vaW50ZXJuYWxzL2VudHJ5LXZpcnR1YWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbnRyeVZpcnR1YWwoJ1N0cmluZycpLnRyaW07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkdHJpbSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbScpLnRyaW07XG52YXIgZm9yY2VkU3RyaW5nVHJpbU1ldGhvZCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9zdHJpbmctdHJpbS1mb3JjZWQnKTtcblxuLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbVxuJCh7IHRhcmdldDogJ1N0cmluZycsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IGZvcmNlZFN0cmluZ1RyaW1NZXRob2QoJ3RyaW0nKSB9LCB7XG4gIHRyaW06IGZ1bmN0aW9uIHRyaW0oKSB7XG4gICAgcmV0dXJuICR0cmltKHRoaXMpO1xuICB9XG59KTtcbiIsInZhciByZXF1aXJlT2JqZWN0Q29lcmNpYmxlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3JlcXVpcmUtb2JqZWN0LWNvZXJjaWJsZScpO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciB3aGl0ZXNwYWNlID0gJ1snICsgd2hpdGVzcGFjZXMgKyAnXSc7XG52YXIgbHRyaW0gPSBSZWdFeHAoJ14nICsgd2hpdGVzcGFjZSArIHdoaXRlc3BhY2UgKyAnKicpO1xudmFyIHJ0cmltID0gUmVnRXhwKHdoaXRlc3BhY2UgKyB3aGl0ZXNwYWNlICsgJyokJyk7XG5cbi8vIGBTdHJpbmcucHJvdG90eXBlLnsgdHJpbSwgdHJpbVN0YXJ0LCB0cmltRW5kLCB0cmltTGVmdCwgdHJpbVJpZ2h0IH1gIG1ldGhvZHMgaW1wbGVtZW50YXRpb25cbnZhciBjcmVhdGVNZXRob2QgPSBmdW5jdGlvbiAoVFlQRSkge1xuICByZXR1cm4gZnVuY3Rpb24gKCR0aGlzKSB7XG4gICAgdmFyIHN0cmluZyA9IFN0cmluZyhyZXF1aXJlT2JqZWN0Q29lcmNpYmxlKCR0aGlzKSk7XG4gICAgaWYgKFRZUEUgJiAxKSBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShsdHJpbSwgJycpO1xuICAgIGlmIChUWVBFICYgMikgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UocnRyaW0sICcnKTtcbiAgICByZXR1cm4gc3RyaW5nO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBTdHJpbmcucHJvdG90eXBlLnsgdHJpbUxlZnQsIHRyaW1TdGFydCB9YCBtZXRob2RzXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltc3RhcnRcbiAgc3RhcnQ6IGNyZWF0ZU1ldGhvZCgxKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUueyB0cmltUmlnaHQsIHRyaW1FbmQgfWAgbWV0aG9kc1xuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXN0cmluZy5wcm90b3R5cGUudHJpbWVuZFxuICBlbmQ6IGNyZWF0ZU1ldGhvZCgyKSxcbiAgLy8gYFN0cmluZy5wcm90b3R5cGUudHJpbWAgbWV0aG9kXG4gIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtc3RyaW5nLnByb3RvdHlwZS50cmltXG4gIHRyaW06IGNyZWF0ZU1ldGhvZCgzKVxufTtcbiIsInZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIHdoaXRlc3BhY2VzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3doaXRlc3BhY2VzJyk7XG5cbnZhciBub24gPSAnXFx1MjAwQlxcdTAwODVcXHUxODBFJztcblxuLy8gY2hlY2sgdGhhdCBhIG1ldGhvZCB3b3JrcyB3aXRoIHRoZSBjb3JyZWN0IGxpc3Rcbi8vIG9mIHdoaXRlc3BhY2VzIGFuZCBoYXMgYSBjb3JyZWN0IG5hbWVcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKE1FVEhPRF9OQU1FKSB7XG4gIHJldHVybiBmYWlscyhmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhd2hpdGVzcGFjZXNbTUVUSE9EX05BTUVdKCkgfHwgbm9uW01FVEhPRF9OQU1FXSgpICE9IG5vbiB8fCB3aGl0ZXNwYWNlc1tNRVRIT0RfTkFNRV0ubmFtZSAhPT0gTUVUSE9EX05BTUU7XG4gIH0pO1xufTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9pbnN0YW5jZS9maW5kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwidmFyIGZpbmQgPSByZXF1aXJlKCcuLi9hcnJheS92aXJ0dWFsL2ZpbmQnKTtcblxudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgb3duID0gaXQuZmluZDtcbiAgcmV0dXJuIGl0ID09PSBBcnJheVByb3RvdHlwZSB8fCAoaXQgaW5zdGFuY2VvZiBBcnJheSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLmZpbmQpID8gZmluZCA6IG93bjtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi8uLi9tb2R1bGVzL2VzLmFycmF5LmZpbmQnKTtcbnZhciBlbnRyeVZpcnR1YWwgPSByZXF1aXJlKCcuLi8uLi8uLi9pbnRlcm5hbHMvZW50cnktdmlydHVhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVudHJ5VmlydHVhbCgnQXJyYXknKS5maW5kO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJGZpbmQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmluZDtcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FkZC10by11bnNjb3BhYmxlcycpO1xudmFyIGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC11c2VzLXRvLWxlbmd0aCcpO1xuXG52YXIgRklORCA9ICdmaW5kJztcbnZhciBTS0lQU19IT0xFUyA9IHRydWU7XG5cbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKEZJTkQpO1xuXG4vLyBTaG91bGRuJ3Qgc2tpcCBob2xlc1xuaWYgKEZJTkQgaW4gW10pIEFycmF5KDEpW0ZJTkRdKGZ1bmN0aW9uICgpIHsgU0tJUFNfSE9MRVMgPSBmYWxzZTsgfSk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmluZGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5maW5kXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBTS0lQU19IT0xFUyB8fCAhVVNFU19UT19MRU5HVEggfSwge1xuICBmaW5kOiBmdW5jdGlvbiBmaW5kKGNhbGxiYWNrZm4gLyogLCB0aGF0ID0gdW5kZWZpbmVkICovKSB7XG4gICAgcmV0dXJuICRmaW5kKHRoaXMsIGNhbGxiYWNrZm4sIGFyZ3VtZW50cy5sZW5ndGggPiAxID8gYXJndW1lbnRzWzFdIDogdW5kZWZpbmVkKTtcbiAgfVxufSk7XG5cbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLUBAdW5zY29wYWJsZXNcbmFkZFRvVW5zY29wYWJsZXMoRklORCk7XG4iLCJ2YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvaW5zdGFuY2UvY29uY2F0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwidmFyIGNvbmNhdCA9IHJlcXVpcmUoJy4uL2FycmF5L3ZpcnR1YWwvY29uY2F0Jyk7XG5cbnZhciBBcnJheVByb3RvdHlwZSA9IEFycmF5LnByb3RvdHlwZTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgdmFyIG93biA9IGl0LmNvbmNhdDtcbiAgcmV0dXJuIGl0ID09PSBBcnJheVByb3RvdHlwZSB8fCAoaXQgaW5zdGFuY2VvZiBBcnJheSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLmNvbmNhdCkgPyBjb25jYXQgOiBvd247XG59O1xuIiwicmVxdWlyZSgnLi4vLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5jb25jYXQnKTtcbnZhciBlbnRyeVZpcnR1YWwgPSByZXF1aXJlKCcuLi8uLi8uLi9pbnRlcm5hbHMvZW50cnktdmlydHVhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVudHJ5VmlydHVhbCgnQXJyYXknKS5jb25jYXQ7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1vYmplY3QnKTtcbnZhciB0b09iamVjdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciBhcnJheVNwZWNpZXNDcmVhdGUgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktc3BlY2llcy1jcmVhdGUnKTtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgSVNfQ09OQ0FUX1NQUkVBREFCTEUgPSB3ZWxsS25vd25TeW1ib2woJ2lzQ29uY2F0U3ByZWFkYWJsZScpO1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSAweDFGRkZGRkZGRkZGRkZGO1xudmFyIE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCA9ICdNYXhpbXVtIGFsbG93ZWQgaW5kZXggZXhjZWVkZWQnO1xuXG4vLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbi8vIGRlb3B0aW1pemF0aW9uIGFuZCBzZXJpb3VzIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uXG4vLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNjc5XG52YXIgSVNfQ09OQ0FUX1NQUkVBREFCTEVfU1VQUE9SVCA9IFY4X1ZFUlNJT04gPj0gNTEgfHwgIWZhaWxzKGZ1bmN0aW9uICgpIHtcbiAgdmFyIGFycmF5ID0gW107XG4gIGFycmF5W0lTX0NPTkNBVF9TUFJFQURBQkxFXSA9IGZhbHNlO1xuICByZXR1cm4gYXJyYXkuY29uY2F0KClbMF0gIT09IGFycmF5O1xufSk7XG5cbnZhciBTUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdjb25jYXQnKTtcblxudmFyIGlzQ29uY2F0U3ByZWFkYWJsZSA9IGZ1bmN0aW9uIChPKSB7XG4gIGlmICghaXNPYmplY3QoTykpIHJldHVybiBmYWxzZTtcbiAgdmFyIHNwcmVhZGFibGUgPSBPW0lTX0NPTkNBVF9TUFJFQURBQkxFXTtcbiAgcmV0dXJuIHNwcmVhZGFibGUgIT09IHVuZGVmaW5lZCA/ICEhc3ByZWFkYWJsZSA6IGlzQXJyYXkoTyk7XG59O1xuXG52YXIgRk9SQ0VEID0gIUlTX0NPTkNBVF9TUFJFQURBQkxFX1NVUFBPUlQgfHwgIVNQRUNJRVNfU1VQUE9SVDtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5jb25jYXRgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuY29uY2F0XG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAaXNDb25jYXRTcHJlYWRhYmxlIGFuZCBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCB9LCB7XG4gIGNvbmNhdDogZnVuY3Rpb24gY29uY2F0KGFyZykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gICAgdmFyIE8gPSB0b09iamVjdCh0aGlzKTtcbiAgICB2YXIgQSA9IGFycmF5U3BlY2llc0NyZWF0ZShPLCAwKTtcbiAgICB2YXIgbiA9IDA7XG4gICAgdmFyIGksIGssIGxlbmd0aCwgbGVuLCBFO1xuICAgIGZvciAoaSA9IC0xLCBsZW5ndGggPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIEUgPSBpID09PSAtMSA/IE8gOiBhcmd1bWVudHNbaV07XG4gICAgICBpZiAoaXNDb25jYXRTcHJlYWRhYmxlKEUpKSB7XG4gICAgICAgIGxlbiA9IHRvTGVuZ3RoKEUubGVuZ3RoKTtcbiAgICAgICAgaWYgKG4gKyBsZW4gPiBNQVhfU0FGRV9JTlRFR0VSKSB0aHJvdyBUeXBlRXJyb3IoTUFYSU1VTV9BTExPV0VEX0lOREVYX0VYQ0VFREVEKTtcbiAgICAgICAgZm9yIChrID0gMDsgayA8IGxlbjsgaysrLCBuKyspIGlmIChrIGluIEUpIGNyZWF0ZVByb3BlcnR5KEEsIG4sIEVba10pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKG4gPj0gTUFYX1NBRkVfSU5URUdFUikgdGhyb3cgVHlwZUVycm9yKE1BWElNVU1fQUxMT1dFRF9JTkRFWF9FWENFRURFRCk7XG4gICAgICAgIGNyZWF0ZVByb3BlcnR5KEEsIG4rKywgRSk7XG4gICAgICB9XG4gICAgfVxuICAgIEEubGVuZ3RoID0gbjtcbiAgICByZXR1cm4gQTtcbiAgfVxufSk7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3InKTtcbnZhciB2YWx1ZXMgPSByZXF1aXJlKCcuLi9hcnJheS92aXJ0dWFsL3ZhbHVlcycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG52YXIgRE9NSXRlcmFibGVzID0ge1xuICBET01Ub2tlbkxpc3Q6IHRydWUsXG4gIE5vZGVMaXN0OiB0cnVlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgb3duID0gaXQudmFsdWVzO1xuICByZXR1cm4gaXQgPT09IEFycmF5UHJvdG90eXBlIHx8IChpdCBpbnN0YW5jZW9mIEFycmF5ICYmIG93biA9PT0gQXJyYXlQcm90b3R5cGUudmFsdWVzKVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbiAgICB8fCBET01JdGVyYWJsZXMuaGFzT3duUHJvcGVydHkoY2xhc3NvZihpdCkpID8gdmFsdWVzIDogb3duO1xufTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi8uLi9lcy9hcnJheS92aXJ0dWFsL3ZhbHVlcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsInJlcXVpcmUoJy4uLy4uLy4uL21vZHVsZXMvZXMuYXJyYXkuaXRlcmF0b3InKTtcbnZhciBlbnRyeVZpcnR1YWwgPSByZXF1aXJlKCcuLi8uLi8uLi9pbnRlcm5hbHMvZW50cnktdmlydHVhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVudHJ5VmlydHVhbCgnQXJyYXknKS52YWx1ZXM7XG4iLCJ2YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvaW5zdGFuY2UvcmVkdWNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwicmVxdWlyZSgnLi4vLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5yZWR1Y2UnKTtcbnZhciBlbnRyeVZpcnR1YWwgPSByZXF1aXJlKCcuLi8uLi8uLi9pbnRlcm5hbHMvZW50cnktdmlydHVhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVudHJ5VmlydHVhbCgnQXJyYXknKS5yZWR1Y2U7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciAkcmVkdWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXJlZHVjZScpLmxlZnQ7XG52YXIgYXJyYXlNZXRob2RJc1N0cmljdCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaXMtc3RyaWN0Jyk7XG52YXIgYXJyYXlNZXRob2RVc2VzVG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLXVzZXMtdG8tbGVuZ3RoJyk7XG52YXIgQ0hST01FX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZW5naW5lLXY4LXZlcnNpb24nKTtcbnZhciBJU19OT0RFID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2VuZ2luZS1pcy1ub2RlJyk7XG5cbnZhciBTVFJJQ1RfTUVUSE9EID0gYXJyYXlNZXRob2RJc1N0cmljdCgncmVkdWNlJyk7XG52YXIgVVNFU19UT19MRU5HVEggPSBhcnJheU1ldGhvZFVzZXNUb0xlbmd0aCgncmVkdWNlJywgeyAxOiAwIH0pO1xuLy8gQ2hyb21lIDgwLTgyIGhhcyBhIGNyaXRpY2FsIGJ1Z1xuLy8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9MTA0OTk4MlxudmFyIENIUk9NRV9CVUcgPSAhSVNfTk9ERSAmJiBDSFJPTUVfVkVSU0lPTiA+IDc5ICYmIENIUk9NRV9WRVJTSU9OIDwgODM7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnJlZHVjZVxuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIVNUUklDVF9NRVRIT0QgfHwgIVVTRVNfVE9fTEVOR1RIIHx8IENIUk9NRV9CVUcgfSwge1xuICByZWR1Y2U6IGZ1bmN0aW9uIHJlZHVjZShjYWxsYmFja2ZuIC8qICwgaW5pdGlhbFZhbHVlICovKSB7XG4gICAgcmV0dXJuICRyZWR1Y2UodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsInZhciBhRnVuY3Rpb24gPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYS1mdW5jdGlvbicpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIEluZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaW5kZXhlZC1vYmplY3QnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS57IHJlZHVjZSwgcmVkdWNlUmlnaHQgfWAgbWV0aG9kcyBpbXBsZW1lbnRhdGlvblxudmFyIGNyZWF0ZU1ldGhvZCA9IGZ1bmN0aW9uIChJU19SSUdIVCkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRoYXQsIGNhbGxiYWNrZm4sIGFyZ3VtZW50c0xlbmd0aCwgbWVtbykge1xuICAgIGFGdW5jdGlvbihjYWxsYmFja2ZuKTtcbiAgICB2YXIgTyA9IHRvT2JqZWN0KHRoYXQpO1xuICAgIHZhciBzZWxmID0gSW5kZXhlZE9iamVjdChPKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IElTX1JJR0hUID8gbGVuZ3RoIC0gMSA6IDA7XG4gICAgdmFyIGkgPSBJU19SSUdIVCA/IC0xIDogMTtcbiAgICBpZiAoYXJndW1lbnRzTGVuZ3RoIDwgMikgd2hpbGUgKHRydWUpIHtcbiAgICAgIGlmIChpbmRleCBpbiBzZWxmKSB7XG4gICAgICAgIG1lbW8gPSBzZWxmW2luZGV4XTtcbiAgICAgICAgaW5kZXggKz0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBpbmRleCArPSBpO1xuICAgICAgaWYgKElTX1JJR0hUID8gaW5kZXggPCAwIDogbGVuZ3RoIDw9IGluZGV4KSB7XG4gICAgICAgIHRocm93IFR5cGVFcnJvcignUmVkdWNlIG9mIGVtcHR5IGFycmF5IHdpdGggbm8gaW5pdGlhbCB2YWx1ZScpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKDtJU19SSUdIVCA/IGluZGV4ID49IDAgOiBsZW5ndGggPiBpbmRleDsgaW5kZXggKz0gaSkgaWYgKGluZGV4IGluIHNlbGYpIHtcbiAgICAgIG1lbW8gPSBjYWxsYmFja2ZuKG1lbW8sIHNlbGZbaW5kZXhdLCBpbmRleCwgTyk7XG4gICAgfVxuICAgIHJldHVybiBtZW1vO1xuICB9O1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIC8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlYCBtZXRob2RcbiAgLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUucmVkdWNlXG4gIGxlZnQ6IGNyZWF0ZU1ldGhvZChmYWxzZSksXG4gIC8vIGBBcnJheS5wcm90b3R5cGUucmVkdWNlUmlnaHRgIG1ldGhvZFxuICAvLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5yZWR1Y2VyaWdodFxuICByaWdodDogY3JlYXRlTWV0aG9kKHRydWUpXG59O1xuIiwidmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL2luc3RhbmNlL21hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsInZhciBtYXAgPSByZXF1aXJlKCcuLi9hcnJheS92aXJ0dWFsL21hcCcpO1xuXG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBvd24gPSBpdC5tYXA7XG4gIHJldHVybiBpdCA9PT0gQXJyYXlQcm90b3R5cGUgfHwgKGl0IGluc3RhbmNlb2YgQXJyYXkgJiYgb3duID09PSBBcnJheVByb3RvdHlwZS5tYXApID8gbWFwIDogb3duO1xufTtcbiIsInJlcXVpcmUoJy4uLy4uLy4uL21vZHVsZXMvZXMuYXJyYXkubWFwJyk7XG52YXIgZW50cnlWaXJ0dWFsID0gcmVxdWlyZSgnLi4vLi4vLi4vaW50ZXJuYWxzL2VudHJ5LXZpcnR1YWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbnRyeVZpcnR1YWwoJ0FycmF5JykubWFwO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgJG1hcCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5tYXA7XG52YXIgYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtaGFzLXNwZWNpZXMtc3VwcG9ydCcpO1xudmFyIGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC11c2VzLXRvLWxlbmd0aCcpO1xuXG52YXIgSEFTX1NQRUNJRVNfU1VQUE9SVCA9IGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQoJ21hcCcpO1xuLy8gRkY0OS0gaXNzdWVcbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKCdtYXAnKTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5tYXBgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUubWFwXG4vLyB3aXRoIGFkZGluZyBzdXBwb3J0IG9mIEBAc3BlY2llc1xuJCh7IHRhcmdldDogJ0FycmF5JywgcHJvdG86IHRydWUsIGZvcmNlZDogIUhBU19TUEVDSUVTX1NVUFBPUlQgfHwgIVVTRVNfVE9fTEVOR1RIIH0sIHtcbiAgbWFwOiBmdW5jdGlvbiBtYXAoY2FsbGJhY2tmbiAvKiAsIHRoaXNBcmcgKi8pIHtcbiAgICByZXR1cm4gJG1hcCh0aGlzLCBjYWxsYmFja2ZuLCBhcmd1bWVudHMubGVuZ3RoID4gMSA/IGFyZ3VtZW50c1sxXSA6IHVuZGVmaW5lZCk7XG4gIH1cbn0pO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcblxudmFyIFNQRUNJRVMgPSB3ZWxsS25vd25TeW1ib2woJ3NwZWNpZXMnKTtcblxuLy8gYEFycmF5U3BlY2llc0NyZWF0ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5c3BlY2llc2NyZWF0ZVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3JpZ2luYWxBcnJheSwgbGVuZ3RoKSB7XG4gIHZhciBDO1xuICBpZiAoaXNBcnJheShvcmlnaW5hbEFycmF5KSkge1xuICAgIEMgPSBvcmlnaW5hbEFycmF5LmNvbnN0cnVjdG9yO1xuICAgIC8vIGNyb3NzLXJlYWxtIGZhbGxiYWNrXG4gICAgaWYgKHR5cGVvZiBDID09ICdmdW5jdGlvbicgJiYgKEMgPT09IEFycmF5IHx8IGlzQXJyYXkoQy5wcm90b3R5cGUpKSkgQyA9IHVuZGVmaW5lZDtcbiAgICBlbHNlIGlmIChpc09iamVjdChDKSkge1xuICAgICAgQyA9IENbU1BFQ0lFU107XG4gICAgICBpZiAoQyA9PT0gbnVsbCkgQyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH0gcmV0dXJuIG5ldyAoQyA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDKShsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoKTtcbn07XG4iLCJ2YXIgY2xhc3NvZiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jbGFzc29mLXJhdycpO1xuXG4vLyBgSXNBcnJheWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWlzYXJyYXlcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1hcnJheS1pc2FycmF5IC0tIHNhZmVcbm1vZHVsZS5leHBvcnRzID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICByZXR1cm4gY2xhc3NvZihhcmcpID09ICdBcnJheSc7XG59O1xuIiwidmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgd2VsbEtub3duU3ltYm9sID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3dlbGwta25vd24tc3ltYm9sJyk7XG52YXIgVjhfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9lbmdpbmUtdjgtdmVyc2lvbicpO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChNRVRIT0RfTkFNRSkge1xuICAvLyBXZSBjYW4ndCB1c2UgdGhpcyBmZWF0dXJlIGRldGVjdGlvbiBpbiBWOCBzaW5jZSBpdCBjYXVzZXNcbiAgLy8gZGVvcHRpbWl6YXRpb24gYW5kIHNlcmlvdXMgcGVyZm9ybWFuY2UgZGVncmFkYXRpb25cbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzY3N1xuICByZXR1cm4gVjhfVkVSU0lPTiA+PSA1MSB8fCAhZmFpbHMoZnVuY3Rpb24gKCkge1xuICAgIHZhciBhcnJheSA9IFtdO1xuICAgIHZhciBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVjdG9yID0ge307XG4gICAgY29uc3RydWN0b3JbU1BFQ0lFU10gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4geyBmb286IDEgfTtcbiAgICB9O1xuICAgIHJldHVybiBhcnJheVtNRVRIT0RfTkFNRV0oQm9vbGVhbikuZm9vICE9PSAxO1xuICB9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJGZvckVhY2ggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZm9yRWFjaDtcbnZhciBhcnJheU1ldGhvZElzU3RyaWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1pcy1zdHJpY3QnKTtcblxudmFyIFNUUklDVF9NRVRIT0QgPSBhcnJheU1ldGhvZElzU3RyaWN0KCdmb3JFYWNoJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG5tb2R1bGUuZXhwb3J0cyA9ICFTVFJJQ1RfTUVUSE9EID8gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZvckVhY2godGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWFycmF5LXByb3RvdHlwZS1mb3JlYWNoIC0tIHNhZmVcbn0gOiBbXS5mb3JFYWNoO1xuIiwiLy8gYFNhbWVWYWx1ZWAgYWJzdHJhY3Qgb3BlcmF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLXNhbWV2YWx1ZVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLW9iamVjdC1pcyAtLSBzYWZlXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5pcyB8fCBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmUgLS0gTmFOIGNoZWNrXG4gIHJldHVybiB4ID09PSB5ID8geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHkgOiB4ICE9IHggJiYgeSAhPSB5O1xufTtcbiIsImV4cG9ydCBkZWZhdWx0IFwiPGh0bWw+XFxuPGhlYWQ+XFxuXFx0PG1ldGEgY2hhcnNldD1cXFwidXRmLThcXFwiIC8+XFxuXFx0PG1ldGEgbmFtZT1cXFwidmlld3BvcnRcXFwiIGNvbnRlbnQ9XFxcInVzZXItc2NhbGFibGU9bm9cXFwiIC8+XFxuXFx0PG1ldGEgbmFtZT1cXFwiYXBwbGUtbW9iaWxlLXdlYi1hcHAtY2FwYWJsZVxcXCIgY29udGVudD1cXFwieWVzXFxcIiAvPlxcblxcdDxtZXRhIG5hbWU9XFxcInJvYm90c1xcXCIgY29udGVudD1cXFwibm9pbmRleCwgbm9mb2xsb3csIG5vb2RwXFxcIiAvPlxcblxcdDx0aXRsZT57e3RpdGxlfX08L3RpdGxlPlxcblxcdDxzdHlsZT5cXG5odG1sLCBib2R5IHtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xcblxcdGZvbnQtc2l6ZTogMTNweDtcXG5cXHRmb250LWZhbWlseTogYXJpYWwsIHNhbnMtc2VyaWY7XFxuXFx0bWFyZ2luOiAwO1xcblxcdHBhZGRpbmc6IDA7XFxufVxcblxcbmEge2NvbG9yOiBibHVlOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZX1cXG5hOnZpc2l0ZWQge2NvbG9yOiAjNjA5fVxcbmE6YWN0aXZlIHtjb2xvcjogcmVkfVxcbmJsb2NrcXVvdGUge2JvcmRlci1sZWZ0OiAycHggc29saWQgYmxhY2s7IG1hcmdpbjogMDsgcGFkZGluZzogMHB4IDEwcHh9XFxuXFxucHJlIHtcXG5cXHRtYXJnaW46IDBweDtcXG5cXHRwYWRkaW5nOiAwcHg7XFxuXFx0Zm9udC1mYW1pbHk6IE1vbmFjbywgTWVubG8sIENvbnNvbGFzLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7XFxuXFx0YmFja2dyb3VuZDogI2ZmZjtcXG5cXHRib3JkZXI6IG5vbmU7XFxuXFx0d2hpdGUtc3BhY2U6IHByZS13cmFwO1xcblxcdHdvcmQtd3JhcDogYnJlYWstd29yZDtcXG5cXHR3b3JkLWJyZWFrOiBicmVhay1hbGw7XFxufVxcblxcbi5ib2R5LXdycCB7XFxuXFx0cGFkZGluZzogMTBweDtcXG59XFxuXFxuLmJvZHktd3JwLmh0bWwgcHJlIHtcXG5cXHRmb250LWZhbWlseTogTW9uYWNvLCBNZW5sbywgQ29uc29sYXMsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcXG5cXHR3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XFxuXFx0d29yZC13cmFwOiBicmVhay13b3JkO1xcblxcdHdvcmQtYnJlYWs6IG5vcm1hbDtcXG59XFxuXFxuLmJvZHktd3JwLnBsYWluIHtcXG5cXHRwYWRkaW5nOiAxNXB4O1xcblxcdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcXG5cXHRmb250LWZhbWlseTogTW9uYWNvLCBNZW5sbywgQ29uc29sYXMsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcXG59XFxuXFxuLmJvZHktd3JwLnBsYWluIHByZSB7XFxuXFx0bWFyZ2luOiAwcHg7XFxuXFx0cGFkZGluZzogMHB4O1xcblxcdGJhY2tncm91bmQ6ICNmZmY7XFxuXFx0Ym9yZGVyOiBub25lO1xcblxcdGZvbnQtZmFtaWx5OiBNb25hY28sIE1lbmxvLCBDb25zb2xhcywgJ0NvdXJpZXIgTmV3JywgbW9ub3NwYWNlO1xcblxcdHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcXG5cXHR3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XFxuXFx0d29yZC1icmVhazogbm9ybWFsO1xcbn1cXG5cXG4uYm9keS13cnAucGxhaW4gYmxvY2txdW90ZSB7XFxuXFx0Ym9yZGVyLWxlZnQ6IDJweCBzb2xpZCBibHVlO1xcblxcdGNvbG9yOiBibHVlO1xcbn1cXG5cXG4uYm9keS13cnAucGxhaW4gYmxvY2txdW90ZSBibG9ja3F1b3RlIHtcXG5cXHRib3JkZXItbGVmdDogMnB4IHNvbGlkIGdyZWVuO1xcblxcdGNvbG9yOiBncmVlbjtcXG59XFxuXFxuLmJvZHktd3JwLnBsYWluIGJsb2NrcXVvdGUgYmxvY2txdW90ZSBibG9ja3F1b3RlIHtcXG5cXHRib3JkZXItbGVmdDogMnB4IHNvbGlkIHJlZDtcXG5cXHRjb2xvcjogcmVkO1xcbn1cXG4ucmwtcHJldmlldy1zdWJqZWN0IHtcXG5cXHRmb250LXNpemU6IDE2cHg7XFxuXFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XFxuXFx0cGFkZGluZzogMTVweDtcXG59XFxuLnJsLXByZXZpZXctY3JlZHMtZnJvbSwgLnJsLXByZXZpZXctY3JlZHMtdG8sIC5ybC1wcmV2aWV3LWNyZWRzLWNjIHtcXG5cXHRmb250LXNpemU6IDEycHg7XFxuXFx0cGFkZGluZzogNXB4IDE1cHg7XFxufVxcbi5ybC1wcmV2aWV3LWRhdGUge1xcblxcdGZsb2F0OiByaWdodDtcXG5cXHRmb250LXNpemU6IDEycHg7XFxuXFx0cGFkZGluZzogMTBweCAxNXB4O1xcbn1cXG4ucmwtcHJldmlldy1zZWN0aW9uIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdG1hcmdpbjogMDtcXG5cXHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2NjYztcXG59XFxuLnJsLXByZXZpZXctaGlkZSB7XFxuXFx0ZGlzcGxheTogbm9uZTtcXG59XFxuXFx0PC9zdHlsZT5cXG48L2hlYWQ+XFxuPGJvZHk+XFxuXFx0PGRpdiBjbGFzcz1cXFwicmwtcHJldmlldy1zZWN0aW9uXFxcIj5cXG5cXHRcXHQ8ZGl2IGNsYXNzPVxcXCJybC1wcmV2aWV3LXN1YmplY3RcXFwiPnt7c3ViamVjdH19PC9kaXY+XFxuXFx0PC9kaXY+XFxuXFx0PGRpdiBjbGFzcz1cXFwicmwtcHJldmlldy1zZWN0aW9uXFxcIj5cXG5cXHRcXHQ8ZGl2IGNsYXNzPVxcXCJybC1wcmV2aWV3LWRhdGVcXFwiPnt7ZGF0ZX19PC9kaXY+XFxuXFx0XFx0PGRpdiBjbGFzcz1cXFwicmwtcHJldmlldy1jcmVkcy1mcm9tXFxcIj57e2Zyb21DcmVkc319PC9kaXY+XFxuXFx0XFx0PGRpdiBjbGFzcz1cXFwicmwtcHJldmlldy1jcmVkcy10b1xcXCI+e3t0b0xhYmVsfX06IHt7dG9DcmVkc319PC9kaXY+XFxuXFx0XFx0PGRpdiBjbGFzcz1cXFwicmwtcHJldmlldy1jcmVkcy1jYyB7e2NjQ2xhc3N9fVxcXCI+e3tjY0xhYmVsfX06IHt7Y2NDcmVkc319PC9kaXY+XFxuXFx0PC9kaXY+XFxuXFx0PGRpdiBjbGFzcz1cXFwiYm9keS13cnAge3tib2R5Q2xhc3N9fVxcXCI+e3todG1sfX08L2Rpdj5cXG48L2JvZHk+XFxuPC9odG1sPlwiOyIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9pbnN0YW5jZS9maWx0ZXInKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCJ2YXIgZmlsdGVyID0gcmVxdWlyZSgnLi4vYXJyYXkvdmlydHVhbC9maWx0ZXInKTtcblxudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgb3duID0gaXQuZmlsdGVyO1xuICByZXR1cm4gaXQgPT09IEFycmF5UHJvdG90eXBlIHx8IChpdCBpbnN0YW5jZW9mIEFycmF5ICYmIG93biA9PT0gQXJyYXlQcm90b3R5cGUuZmlsdGVyKSA/IGZpbHRlciA6IG93bjtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi8uLi9tb2R1bGVzL2VzLmFycmF5LmZpbHRlcicpO1xudmFyIGVudHJ5VmlydHVhbCA9IHJlcXVpcmUoJy4uLy4uLy4uL2ludGVybmFscy9lbnRyeS12aXJ0dWFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZW50cnlWaXJ0dWFsKCdBcnJheScpLmZpbHRlcjtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyICRmaWx0ZXIgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktaXRlcmF0aW9uJykuZmlsdGVyO1xudmFyIGFycmF5TWV0aG9kSGFzU3BlY2llc1N1cHBvcnQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWhhcy1zcGVjaWVzLXN1cHBvcnQnKTtcbnZhciBhcnJheU1ldGhvZFVzZXNUb0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1tZXRob2QtdXNlcy10by1sZW5ndGgnKTtcblxudmFyIEhBU19TUEVDSUVTX1NVUFBPUlQgPSBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0KCdmaWx0ZXInKTtcbi8vIEVkZ2UgMTQtIGlzc3VlXG52YXIgVVNFU19UT19MRU5HVEggPSBhcnJheU1ldGhvZFVzZXNUb0xlbmd0aCgnZmlsdGVyJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZmlsdGVyYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLmZpbHRlclxuLy8gd2l0aCBhZGRpbmcgc3VwcG9ydCBvZiBAQHNwZWNpZXNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIHx8ICFVU0VTX1RPX0xFTkdUSCB9LCB7XG4gIGZpbHRlcjogZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrZm4gLyogLCB0aGlzQXJnICovKSB7XG4gICAgcmV0dXJuICRmaWx0ZXIodGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xuICB9XG59KTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9vYmplY3QvY3JlYXRlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5vYmplY3QuY3JlYXRlJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9wYXRoJyk7XG5cbnZhciBPYmplY3QgPSBwYXRoLk9iamVjdDtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjcmVhdGUoUCwgRCkge1xuICByZXR1cm4gT2JqZWN0LmNyZWF0ZShQLCBEKTtcbn07XG4iLCJ2YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBERVNDUklQVE9SUyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9kZXNjcmlwdG9ycycpO1xudmFyIGNyZWF0ZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtY3JlYXRlJyk7XG5cbi8vIGBPYmplY3QuY3JlYXRlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtb2JqZWN0LmNyZWF0ZVxuJCh7IHRhcmdldDogJ09iamVjdCcsIHN0YXQ6IHRydWUsIHNoYW06ICFERVNDUklQVE9SUyB9LCB7XG4gIGNyZWF0ZTogY3JlYXRlXG59KTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9vYmplY3Qvc2V0LXByb3RvdHlwZS1vZicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXMub2JqZWN0LnNldC1wcm90b3R5cGUtb2YnKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXRoLk9iamVjdC5zZXRQcm90b3R5cGVPZjtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHNldFByb3RvdHlwZU9mID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1zZXQtcHJvdG90eXBlLW9mJyk7XG5cbi8vIGBPYmplY3Quc2V0UHJvdG90eXBlT2ZgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3Quc2V0cHJvdG90eXBlb2ZcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlIH0sIHtcbiAgc2V0UHJvdG90eXBlT2Y6IHNldFByb3RvdHlwZU9mXG59KTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9zdGFibGUvaW5zdGFuY2UvZm9yLWVhY2gnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3InKTtcbnZhciBmb3JFYWNoID0gcmVxdWlyZSgnLi4vYXJyYXkvdmlydHVhbC9mb3ItZWFjaCcpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG52YXIgRE9NSXRlcmFibGVzID0ge1xuICBET01Ub2tlbkxpc3Q6IHRydWUsXG4gIE5vZGVMaXN0OiB0cnVlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgb3duID0gaXQuZm9yRWFjaDtcbiAgcmV0dXJuIGl0ID09PSBBcnJheVByb3RvdHlwZSB8fCAoaXQgaW5zdGFuY2VvZiBBcnJheSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLmZvckVhY2gpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgIHx8IERPTUl0ZXJhYmxlcy5oYXNPd25Qcm9wZXJ0eShjbGFzc29mKGl0KSkgPyBmb3JFYWNoIDogb3duO1xufTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi8uLi9lcy9hcnJheS92aXJ0dWFsL2Zvci1lYWNoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwicmVxdWlyZSgnLi4vLi4vLi4vbW9kdWxlcy9lcy5hcnJheS5mb3ItZWFjaCcpO1xudmFyIGVudHJ5VmlydHVhbCA9IHJlcXVpcmUoJy4uLy4uLy4uL2ludGVybmFscy9lbnRyeS12aXJ0dWFsJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZW50cnlWaXJ0dWFsKCdBcnJheScpLmZvckVhY2g7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBmb3JFYWNoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LWZvci1lYWNoJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBbXS5mb3JFYWNoICE9IGZvckVhY2ggfSwge1xuICBmb3JFYWNoOiBmb3JFYWNoXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkZm9yRWFjaCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hcnJheS1pdGVyYXRpb24nKS5mb3JFYWNoO1xudmFyIGFycmF5TWV0aG9kSXNTdHJpY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLWlzLXN0cmljdCcpO1xudmFyIGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC11c2VzLXRvLWxlbmd0aCcpO1xuXG52YXIgU1RSSUNUX01FVEhPRCA9IGFycmF5TWV0aG9kSXNTdHJpY3QoJ2ZvckVhY2gnKTtcbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKCdmb3JFYWNoJyk7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuZm9yRWFjaGAgbWV0aG9kIGltcGxlbWVudGF0aW9uXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLWFycmF5LnByb3RvdHlwZS5mb3JlYWNoXG5tb2R1bGUuZXhwb3J0cyA9ICghU1RSSUNUX01FVEhPRCB8fCAhVVNFU19UT19MRU5HVEgpID8gZnVuY3Rpb24gZm9yRWFjaChjYWxsYmFja2ZuIC8qICwgdGhpc0FyZyAqLykge1xuICByZXR1cm4gJGZvckVhY2godGhpcywgY2FsbGJhY2tmbiwgYXJndW1lbnRzLmxlbmd0aCA+IDEgPyBhcmd1bWVudHNbMV0gOiB1bmRlZmluZWQpO1xufSA6IFtdLmZvckVhY2g7XG4iLCJ2YXIgcGFyZW50ID0gcmVxdWlyZSgnLi4vLi4vZXMvb2JqZWN0L2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5rZXlzJyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9wYXRoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGF0aC5PYmplY3Qua2V5cztcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIHRvT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLW9iamVjdCcpO1xudmFyIG5hdGl2ZUtleXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvb2JqZWN0LWtleXMnKTtcbnZhciBmYWlscyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mYWlscycpO1xuXG52YXIgRkFJTFNfT05fUFJJTUlUSVZFUyA9IGZhaWxzKGZ1bmN0aW9uICgpIHsgbmF0aXZlS2V5cygxKTsgfSk7XG5cbi8vIGBPYmplY3Qua2V5c2AgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5rZXlzXG4kKHsgdGFyZ2V0OiAnT2JqZWN0Jywgc3RhdDogdHJ1ZSwgZm9yY2VkOiBGQUlMU19PTl9QUklNSVRJVkVTIH0sIHtcbiAga2V5czogZnVuY3Rpb24ga2V5cyhpdCkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzKHRvT2JqZWN0KGl0KSk7XG4gIH1cbn0pO1xuIiwidmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL2luc3RhbmNlL3JlZHVjZScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudDtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9pbnN0YW5jZS9yZXZlcnNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwidmFyIHJldmVyc2UgPSByZXF1aXJlKCcuLi9hcnJheS92aXJ0dWFsL3JldmVyc2UnKTtcblxudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgb3duID0gaXQucmV2ZXJzZTtcbiAgcmV0dXJuIGl0ID09PSBBcnJheVByb3RvdHlwZSB8fCAoaXQgaW5zdGFuY2VvZiBBcnJheSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLnJldmVyc2UpID8gcmV2ZXJzZSA6IG93bjtcbn07XG4iLCJyZXF1aXJlKCcuLi8uLi8uLi9tb2R1bGVzL2VzLmFycmF5LnJldmVyc2UnKTtcbnZhciBlbnRyeVZpcnR1YWwgPSByZXF1aXJlKCcuLi8uLi8uLi9pbnRlcm5hbHMvZW50cnktdmlydHVhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVudHJ5VmlydHVhbCgnQXJyYXknKS5yZXZlcnNlO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9pcy1hcnJheScpO1xuXG52YXIgbmF0aXZlUmV2ZXJzZSA9IFtdLnJldmVyc2U7XG52YXIgdGVzdCA9IFsxLCAyXTtcblxuLy8gYEFycmF5LnByb3RvdHlwZS5yZXZlcnNlYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtYXJyYXkucHJvdG90eXBlLnJldmVyc2Vcbi8vIGZpeCBmb3IgU2FmYXJpIDEyLjAgYnVnXG4vLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4Nzk0XG4kKHsgdGFyZ2V0OiAnQXJyYXknLCBwcm90bzogdHJ1ZSwgZm9yY2VkOiBTdHJpbmcodGVzdCkgPT09IFN0cmluZyh0ZXN0LnJldmVyc2UoKSkgfSwge1xuICByZXZlcnNlOiBmdW5jdGlvbiByZXZlcnNlKCkge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgIGlmIChpc0FycmF5KHRoaXMpKSB0aGlzLmxlbmd0aCA9IHRoaXMubGVuZ3RoO1xuICAgIHJldHVybiBuYXRpdmVSZXZlcnNlLmNhbGwodGhpcyk7XG4gIH1cbn0pO1xuIiwidmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL2luc3RhbmNlL3NsaWNlJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwidmFyIHNsaWNlID0gcmVxdWlyZSgnLi4vYXJyYXkvdmlydHVhbC9zbGljZScpO1xuXG52YXIgQXJyYXlQcm90b3R5cGUgPSBBcnJheS5wcm90b3R5cGU7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHZhciBvd24gPSBpdC5zbGljZTtcbiAgcmV0dXJuIGl0ID09PSBBcnJheVByb3RvdHlwZSB8fCAoaXQgaW5zdGFuY2VvZiBBcnJheSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLnNsaWNlKSA/IHNsaWNlIDogb3duO1xufTtcbiIsInJlcXVpcmUoJy4uLy4uLy4uL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UnKTtcbnZhciBlbnRyeVZpcnR1YWwgPSByZXF1aXJlKCcuLi8uLi8uLi9pbnRlcm5hbHMvZW50cnktdmlydHVhbCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGVudHJ5VmlydHVhbCgnQXJyYXknKS5zbGljZTtcbiIsIid1c2Ugc3RyaWN0JztcbnZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2lzLW9iamVjdCcpO1xudmFyIGlzQXJyYXkgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtYXJyYXknKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8tYWJzb2x1dGUtaW5kZXgnKTtcbnZhciB0b0xlbmd0aCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy90by1sZW5ndGgnKTtcbnZhciB0b0luZGV4ZWRPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvdG8taW5kZXhlZC1vYmplY3QnKTtcbnZhciBjcmVhdGVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9jcmVhdGUtcHJvcGVydHknKTtcbnZhciB3ZWxsS25vd25TeW1ib2wgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvd2VsbC1rbm93bi1zeW1ib2wnKTtcbnZhciBhcnJheU1ldGhvZEhhc1NwZWNpZXNTdXBwb3J0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LW1ldGhvZC1oYXMtc3BlY2llcy1zdXBwb3J0Jyk7XG52YXIgYXJyYXlNZXRob2RVc2VzVG9MZW5ndGggPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvYXJyYXktbWV0aG9kLXVzZXMtdG8tbGVuZ3RoJyk7XG5cbnZhciBIQVNfU1BFQ0lFU19TVVBQT1JUID0gYXJyYXlNZXRob2RIYXNTcGVjaWVzU3VwcG9ydCgnc2xpY2UnKTtcbnZhciBVU0VTX1RPX0xFTkdUSCA9IGFycmF5TWV0aG9kVXNlc1RvTGVuZ3RoKCdzbGljZScsIHsgQUNDRVNTT1JTOiB0cnVlLCAwOiAwLCAxOiAyIH0pO1xuXG52YXIgU1BFQ0lFUyA9IHdlbGxLbm93blN5bWJvbCgnc3BlY2llcycpO1xudmFyIG5hdGl2ZVNsaWNlID0gW10uc2xpY2U7XG52YXIgbWF4ID0gTWF0aC5tYXg7XG5cbi8vIGBBcnJheS5wcm90b3R5cGUuc2xpY2VgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1hcnJheS5wcm90b3R5cGUuc2xpY2Vcbi8vIGZhbGxiYWNrIGZvciBub3QgYXJyYXktbGlrZSBFUzMgc3RyaW5ncyBhbmQgRE9NIG9iamVjdHNcbiQoeyB0YXJnZXQ6ICdBcnJheScsIHByb3RvOiB0cnVlLCBmb3JjZWQ6ICFIQVNfU1BFQ0lFU19TVVBQT1JUIHx8ICFVU0VTX1RPX0xFTkdUSCB9LCB7XG4gIHNsaWNlOiBmdW5jdGlvbiBzbGljZShzdGFydCwgZW5kKSB7XG4gICAgdmFyIE8gPSB0b0luZGV4ZWRPYmplY3QodGhpcyk7XG4gICAgdmFyIGxlbmd0aCA9IHRvTGVuZ3RoKE8ubGVuZ3RoKTtcbiAgICB2YXIgayA9IHRvQWJzb2x1dGVJbmRleChzdGFydCwgbGVuZ3RoKTtcbiAgICB2YXIgZmluID0gdG9BYnNvbHV0ZUluZGV4KGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuZ3RoIDogZW5kLCBsZW5ndGgpO1xuICAgIC8vIGlubGluZSBgQXJyYXlTcGVjaWVzQ3JlYXRlYCBmb3IgdXNhZ2UgbmF0aXZlIGBBcnJheSNzbGljZWAgd2hlcmUgaXQncyBwb3NzaWJsZVxuICAgIHZhciBDb25zdHJ1Y3RvciwgcmVzdWx0LCBuO1xuICAgIGlmIChpc0FycmF5KE8pKSB7XG4gICAgICBDb25zdHJ1Y3RvciA9IE8uY29uc3RydWN0b3I7XG4gICAgICAvLyBjcm9zcy1yZWFsbSBmYWxsYmFja1xuICAgICAgaWYgKHR5cGVvZiBDb25zdHJ1Y3RvciA9PSAnZnVuY3Rpb24nICYmIChDb25zdHJ1Y3RvciA9PT0gQXJyYXkgfHwgaXNBcnJheShDb25zdHJ1Y3Rvci5wcm90b3R5cGUpKSkge1xuICAgICAgICBDb25zdHJ1Y3RvciA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoQ29uc3RydWN0b3IpKSB7XG4gICAgICAgIENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3JbU1BFQ0lFU107XG4gICAgICAgIGlmIChDb25zdHJ1Y3RvciA9PT0gbnVsbCkgQ29uc3RydWN0b3IgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICBpZiAoQ29uc3RydWN0b3IgPT09IEFycmF5IHx8IENvbnN0cnVjdG9yID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIG5hdGl2ZVNsaWNlLmNhbGwoTywgaywgZmluKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0ID0gbmV3IChDb25zdHJ1Y3RvciA9PT0gdW5kZWZpbmVkID8gQXJyYXkgOiBDb25zdHJ1Y3RvcikobWF4KGZpbiAtIGssIDApKTtcbiAgICBmb3IgKG4gPSAwOyBrIDwgZmluOyBrKyssIG4rKykgaWYgKGsgaW4gTykgY3JlYXRlUHJvcGVydHkocmVzdWx0LCBuLCBPW2tdKTtcbiAgICByZXN1bHQubGVuZ3RoID0gbjtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59KTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi9lcy9vYmplY3QvZGVmaW5lLXByb3BlcnR5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcGFyZW50O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lcy5vYmplY3QuZGVmaW5lLXByb3BlcnR5Jyk7XG52YXIgcGF0aCA9IHJlcXVpcmUoJy4uLy4uL2ludGVybmFscy9wYXRoJyk7XG5cbnZhciBPYmplY3QgPSBwYXRoLk9iamVjdDtcblxudmFyIGRlZmluZVByb3BlcnR5ID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBkZXNjKSB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoaXQsIGtleSwgZGVzYyk7XG59O1xuXG5pZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5LnNoYW0pIGRlZmluZVByb3BlcnR5LnNoYW0gPSB0cnVlO1xuIiwidmFyICQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZXhwb3J0Jyk7XG52YXIgREVTQ1JJUFRPUlMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZGVzY3JpcHRvcnMnKTtcbnZhciBvYmplY3REZWZpbmVQcm9wZXJ0eU1vZGlsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5Jyk7XG5cbi8vIGBPYmplY3QuZGVmaW5lUHJvcGVydHlgIG1ldGhvZFxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1vYmplY3QuZGVmaW5lcHJvcGVydHlcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6ICFERVNDUklQVE9SUywgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgZGVmaW5lUHJvcGVydHk6IG9iamVjdERlZmluZVByb3BlcnR5TW9kaWxlLmZcbn0pO1xuIiwidmFyIHBhcmVudCA9IHJlcXVpcmUoJy4uLy4uL2VzL29iamVjdC9nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzLm9iamVjdC5nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKTtcbnZhciBwYXRoID0gcmVxdWlyZSgnLi4vLi4vaW50ZXJuYWxzL3BhdGgnKTtcblxudmFyIE9iamVjdCA9IHBhdGguT2JqZWN0O1xuXG52YXIgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICByZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpdCwga2V5KTtcbn07XG5cbmlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLnNoYW0pIGdldE93blByb3BlcnR5RGVzY3JpcHRvci5zaGFtID0gdHJ1ZTtcbiIsInZhciAkID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2V4cG9ydCcpO1xudmFyIGZhaWxzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2ZhaWxzJyk7XG52YXIgdG9JbmRleGVkT2JqZWN0ID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL3RvLWluZGV4ZWQtb2JqZWN0Jyk7XG52YXIgbmF0aXZlR2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL29iamVjdC1nZXQtb3duLXByb3BlcnR5LWRlc2NyaXB0b3InKS5mO1xudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG5cbnZhciBGQUlMU19PTl9QUklNSVRJVkVTID0gZmFpbHMoZnVuY3Rpb24gKCkgeyBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoMSk7IH0pO1xudmFyIEZPUkNFRCA9ICFERVNDUklQVE9SUyB8fCBGQUlMU19PTl9QUklNSVRJVkVTO1xuXG4vLyBgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcmAgbWV0aG9kXG4vLyBodHRwczovL3RjMzkuZXMvZWNtYTI2Mi8jc2VjLW9iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JcbiQoeyB0YXJnZXQ6ICdPYmplY3QnLCBzdGF0OiB0cnVlLCBmb3JjZWQ6IEZPUkNFRCwgc2hhbTogIURFU0NSSVBUT1JTIH0sIHtcbiAgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOiBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoaXQsIGtleSkge1xuICAgIHJldHVybiBuYXRpdmVHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodG9JbmRleGVkT2JqZWN0KGl0KSwga2V5KTtcbiAgfVxufSk7XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBTdG9yYWdlUmVzdWx0VHlwZSwgTm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IHRyaW0gfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgZ2V0Tm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgcG9wdXAsIGNvbW1hbmQgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL0FjY291bnQnLFxuXHR0ZW1wbGF0ZUlEOiAnUG9wdXBzQWNjb3VudCdcbn0pXG5jbGFzcyBBY2NvdW50UG9wdXBWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmlzTmV3ID0ga28ub2JzZXJ2YWJsZSh0cnVlKTtcblxuXHRcdHRoaXMuZW1haWwgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnBhc3N3b3JkID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmVtYWlsRXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnBhc3N3b3JkRXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZW1haWwuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuZW1haWxFcnJvcihmYWxzZSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnBhc3N3b3JkLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLnBhc3N3b3JkRXJyb3IoZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5zdWJtaXRSZXF1ZXN0ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zdWJtaXRFcnJvciA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuc3VibWl0RXJyb3JBZGRpdGlvbmFsID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmVtYWlsRm9jdXMgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiAhc2VsZi5zdWJtaXRSZXF1ZXN0KCkpXG5cdGFkZEFjY291bnRDb21tYW5kKCkge1xuXHRcdHRoaXMuZW1haWxFcnJvcignJyA9PT0gdHJpbSh0aGlzLmVtYWlsKCkpKTtcblx0XHR0aGlzLnBhc3N3b3JkRXJyb3IoJycgPT09IHRyaW0odGhpcy5wYXNzd29yZCgpKSk7XG5cblx0XHRpZiAodGhpcy5lbWFpbEVycm9yKCkgfHwgdGhpcy5wYXNzd29yZEVycm9yKCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG5cblx0XHRSZW1vdGUuYWNjb3VudFNldHVwKFxuXHRcdFx0KHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuXHRcdFx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gcmVzdWx0ICYmIGRhdGEpIHtcblx0XHRcdFx0XHRpZiAoZGF0YS5SZXN1bHQpIHtcblx0XHRcdFx0XHRcdGdldEFwcCgpLmFjY291bnRzQW5kSWRlbnRpdGllcygpO1xuXHRcdFx0XHRcdFx0dGhpcy5jYW5jZWxDb21tYW5kKCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuc3VibWl0RXJyb3IoXG5cdFx0XHRcdFx0XHRcdGRhdGEuRXJyb3JDb2RlID8gZ2V0Tm90aWZpY2F0aW9uKGRhdGEuRXJyb3JDb2RlKSA6IGdldE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24uVW5rbm93bkVycm9yKVxuXHRcdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdFx0aWYgKGRhdGEuRXJyb3JNZXNzYWdlQWRkaXRpb25hbCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnN1Ym1pdEVycm9yQWRkaXRpb25hbChkYXRhLkVycm9yTWVzc2FnZUFkZGl0aW9uYWwpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0aGlzLnN1Ym1pdEVycm9yKGdldE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24uVW5rbm93bkVycm9yKSk7XG5cdFx0XHRcdFx0dGhpcy5zdWJtaXRFcnJvckFkZGl0aW9uYWwoJycpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0dGhpcy5lbWFpbCgpLFxuXHRcdFx0dGhpcy5wYXNzd29yZCgpLFxuXHRcdFx0dGhpcy5pc05ldygpXG5cdFx0KTtcblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2xlYXJQb3B1cCgpIHtcblx0XHR0aGlzLmlzTmV3KHRydWUpO1xuXG5cdFx0dGhpcy5lbWFpbCgnJyk7XG5cdFx0dGhpcy5wYXNzd29yZCgnJyk7XG5cblx0XHR0aGlzLmVtYWlsRXJyb3IoZmFsc2UpO1xuXHRcdHRoaXMucGFzc3dvcmRFcnJvcihmYWxzZSk7XG5cblx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuXHRcdHRoaXMuc3VibWl0RXJyb3IoJycpO1xuXHRcdHRoaXMuc3VibWl0RXJyb3JBZGRpdGlvbmFsKCcnKTtcblx0fVxuXG5cdG9uU2hvdyhhY2NvdW50KSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cdFx0aWYgKGFjY291bnQgJiYgYWNjb3VudC5jYW5CZUVkaXQoKSkge1xuXHRcdFx0dGhpcy5pc05ldyhmYWxzZSk7XG5cdFx0XHR0aGlzLmVtYWlsKGFjY291bnQuZW1haWwpO1xuXHRcdH1cblx0fVxuXG5cdG9uU2hvd1dpdGhEZWxheSgpIHtcblx0XHR0aGlzLmVtYWlsRm9jdXModHJ1ZSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgQWNjb3VudFBvcHVwVmlldywgQWNjb3VudFBvcHVwVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBTdG9yYWdlUmVzdWx0VHlwZSwgTm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IGJNb2JpbGVEZXZpY2UgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5pbXBvcnQgeyB0cmltLCBmYWtlTWQ1IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IGdldE5vdGlmaWNhdGlvbiB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IFJlbW90ZSBmcm9tICdSZW1vdGUvVXNlci9BamF4JztcblxuaW1wb3J0IHsgZ2V0QXBwIH0gZnJvbSAnSGVscGVyL0FwcHMvVXNlcic7XG5cbmltcG9ydCB7IHBvcHVwLCBjb21tYW5kIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5AcG9wdXAoe1xuXHRuYW1lOiAnVmlldy9Qb3B1cC9JZGVudGl0eScsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNJZGVudGl0eSdcbn0pXG5jbGFzcyBJZGVudGl0eVBvcHVwVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5pZCA9ICcnO1xuXHRcdHRoaXMuZWRpdCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMub3duZXIgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZW1haWwgPSBrby5vYnNlcnZhYmxlKCcnKS52YWxpZGF0ZUVtYWlsKCk7XG5cdFx0dGhpcy5lbWFpbC5mb2N1c2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5uYW1lID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5uYW1lLmZvY3VzZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnJlcGx5VG8gPSBrby5vYnNlcnZhYmxlKCcnKS52YWxpZGF0ZVNpbXBsZUVtYWlsKCk7XG5cdFx0dGhpcy5yZXBseVRvLmZvY3VzZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmJjYyA9IGtvLm9ic2VydmFibGUoJycpLnZhbGlkYXRlU2ltcGxlRW1haWwoKTtcblx0XHR0aGlzLmJjYy5mb2N1c2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnNpZ25hdHVyZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuc2lnbmF0dXJlSW5zZXJ0QmVmb3JlID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnNob3dCY2MgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnNob3dSZXBseVRvID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnN1Ym1pdEVycm9yID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmJjYy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAoZmFsc2UgPT09IHRoaXMuc2hvd0JjYygpICYmIDAgPCB2YWx1ZS5sZW5ndGgpIHtcblx0XHRcdFx0dGhpcy5zaG93QmNjKHRydWUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5yZXBseVRvLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmIChmYWxzZSA9PT0gdGhpcy5zaG93UmVwbHlUbygpICYmIDAgPCB2YWx1ZS5sZW5ndGgpIHtcblx0XHRcdFx0dGhpcy5zaG93UmVwbHlUbyh0cnVlKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiAhc2VsZi5zdWJtaXRSZXF1ZXN0KCkpXG5cdGFkZE9yRWRpdElkZW50aXR5Q29tbWFuZCgpIHtcblx0XHRpZiAodGhpcy5zaWduYXR1cmUgJiYgdGhpcy5zaWduYXR1cmUuX19mZXRjaEVkaXRvclZhbHVlKSB7XG5cdFx0XHR0aGlzLnNpZ25hdHVyZS5fX2ZldGNoRWRpdG9yVmFsdWUoKTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuZW1haWwuaGFzRXJyb3IoKSkge1xuXHRcdFx0dGhpcy5lbWFpbC5oYXNFcnJvcignJyA9PT0gdHJpbSh0aGlzLmVtYWlsKCkpKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5lbWFpbC5oYXNFcnJvcigpKSB7XG5cdFx0XHRpZiAoIXRoaXMub3duZXIoKSkge1xuXHRcdFx0XHR0aGlzLmVtYWlsLmZvY3VzZWQodHJ1ZSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5yZXBseVRvLmhhc0Vycm9yKCkpIHtcblx0XHRcdHRoaXMucmVwbHlUby5mb2N1c2VkKHRydWUpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmJjYy5oYXNFcnJvcigpKSB7XG5cdFx0XHR0aGlzLmJjYy5mb2N1c2VkKHRydWUpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHRoaXMuc3VibWl0UmVxdWVzdCh0cnVlKTtcblxuXHRcdFJlbW90ZS5pZGVudGl0eVVwZGF0ZShcblx0XHRcdChyZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdFx0dGhpcy5zdWJtaXRSZXF1ZXN0KGZhbHNlKTtcblx0XHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhKSB7XG5cdFx0XHRcdFx0aWYgKGRhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRnZXRBcHAoKS5hY2NvdW50c0FuZElkZW50aXRpZXMoKTtcblx0XHRcdFx0XHRcdHRoaXMuY2FuY2VsQ29tbWFuZCgpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZGF0YS5FcnJvckNvZGUpIHtcblx0XHRcdFx0XHRcdHRoaXMuc3VibWl0RXJyb3IoZ2V0Tm90aWZpY2F0aW9uKGRhdGEuRXJyb3JDb2RlKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuc3VibWl0RXJyb3IoZ2V0Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbi5Vbmtub3duRXJyb3IpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdHRoaXMuaWQsXG5cdFx0XHR0aGlzLmVtYWlsKCksXG5cdFx0XHR0aGlzLm5hbWUoKSxcblx0XHRcdHRoaXMucmVwbHlUbygpLFxuXHRcdFx0dGhpcy5iY2MoKSxcblx0XHRcdHRoaXMuc2lnbmF0dXJlKCksXG5cdFx0XHR0aGlzLnNpZ25hdHVyZUluc2VydEJlZm9yZSgpXG5cdFx0KTtcblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2xlYXJQb3B1cCgpIHtcblx0XHR0aGlzLmlkID0gJyc7XG5cdFx0dGhpcy5lZGl0KGZhbHNlKTtcblx0XHR0aGlzLm93bmVyKGZhbHNlKTtcblxuXHRcdHRoaXMubmFtZSgnJyk7XG5cdFx0dGhpcy5lbWFpbCgnJyk7XG5cdFx0dGhpcy5yZXBseVRvKCcnKTtcblx0XHR0aGlzLmJjYygnJyk7XG5cdFx0dGhpcy5zaWduYXR1cmUoJycpO1xuXHRcdHRoaXMuc2lnbmF0dXJlSW5zZXJ0QmVmb3JlKGZhbHNlKTtcblxuXHRcdHRoaXMuZW1haWwuaGFzRXJyb3IoZmFsc2UpO1xuXHRcdHRoaXMucmVwbHlUby5oYXNFcnJvcihmYWxzZSk7XG5cdFx0dGhpcy5iY2MuaGFzRXJyb3IoZmFsc2UpO1xuXG5cdFx0dGhpcy5zaG93QmNjKGZhbHNlKTtcblx0XHR0aGlzLnNob3dSZXBseVRvKGZhbHNlKTtcblxuXHRcdHRoaXMuc3VibWl0UmVxdWVzdChmYWxzZSk7XG5cdFx0dGhpcy5zdWJtaXRFcnJvcignJyk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHs/SWRlbnRpdHlNb2RlbH0gb0lkZW50aXR5XG5cdCAqL1xuXHRvblNob3coaWRlbnRpdHkpIHtcblx0XHR0aGlzLmNsZWFyUG9wdXAoKTtcblxuXHRcdGlmIChpZGVudGl0eSkge1xuXHRcdFx0dGhpcy5lZGl0KHRydWUpO1xuXG5cdFx0XHR0aGlzLmlkID0gaWRlbnRpdHkuaWQoKSB8fCAnJztcblx0XHRcdHRoaXMubmFtZShpZGVudGl0eS5uYW1lKCkpO1xuXHRcdFx0dGhpcy5lbWFpbChpZGVudGl0eS5lbWFpbCgpKTtcblx0XHRcdHRoaXMucmVwbHlUbyhpZGVudGl0eS5yZXBseVRvKCkpO1xuXHRcdFx0dGhpcy5iY2MoaWRlbnRpdHkuYmNjKCkpO1xuXHRcdFx0dGhpcy5zaWduYXR1cmUoaWRlbnRpdHkuc2lnbmF0dXJlKCkpO1xuXHRcdFx0dGhpcy5zaWduYXR1cmVJbnNlcnRCZWZvcmUoaWRlbnRpdHkuc2lnbmF0dXJlSW5zZXJ0QmVmb3JlKCkpO1xuXG5cdFx0XHR0aGlzLm93bmVyKCcnID09PSB0aGlzLmlkKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5pZCA9IGZha2VNZDUoKTtcblx0XHR9XG5cdH1cblxuXHRvblNob3dXaXRoRGVsYXkoKSB7XG5cdFx0aWYgKCF0aGlzLm93bmVyKCkgJiYgIWJNb2JpbGVEZXZpY2UpIHtcblx0XHRcdHRoaXMuZW1haWwuZm9jdXNlZCh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHRvbkhpZGVXaXRoRGVsYXkoKSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cdH1cbn1cblxuZXhwb3J0IHsgSWRlbnRpdHlQb3B1cFZpZXcsIElkZW50aXR5UG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IHBJbnQgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgU2F2ZVNldHRpbmdzU3RlcCB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbXBvbmVudCwgY29tcG9uZW50RXhwb3J0SGVscGVyIH0gZnJvbSAnQ29tcG9uZW50L0Fic3RyYWN0JztcblxuY2xhc3MgU2F2ZVRyaWdnZXJDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdENvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihwYXJhbXMpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5lbGVtZW50ID0gcGFyYW1zLmVsZW1lbnQgfHwgbnVsbDtcblx0XHR0aGlzLnZhbHVlID0gcGFyYW1zLnZhbHVlICYmIHBhcmFtcy52YWx1ZS5zdWJzY3JpYmUgPyBwYXJhbXMudmFsdWUgOiBudWxsO1xuXG5cdFx0aWYgKHRoaXMuZWxlbWVudCkge1xuXHRcdFx0aWYgKHRoaXMudmFsdWUpIHtcblx0XHRcdFx0dGhpcy5lbGVtZW50LmNzcygnZGlzcGxheScsICdpbmxpbmUtYmxvY2snKTtcblxuXHRcdFx0XHRpZiAocGFyYW1zLnZlcnRpY2FsQWxpZ24pIHtcblx0XHRcdFx0XHR0aGlzLmVsZW1lbnQuY3NzKCd2ZXJ0aWNhbC1hbGlnbicsIHBhcmFtcy52ZXJ0aWNhbEFsaWduKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHRoaXMuc2V0U3RhdGUodGhpcy52YWx1ZSgpKTtcblxuXHRcdFx0XHR0aGlzLmRpc3Bvc2FibGUucHVzaCh0aGlzLnZhbHVlLnN1YnNjcmliZSh0aGlzLnNldFN0YXRlLCB0aGlzKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQuaGlkZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHNldFN0YXRlKHZhbHVlKSB7XG5cdFx0c3dpdGNoIChwSW50KHZhbHVlKSkge1xuXHRcdFx0Y2FzZSBTYXZlU2V0dGluZ3NTdGVwLlRydWVSZXN1bHQ6XG5cdFx0XHRcdHRoaXMuZWxlbWVudFxuXHRcdFx0XHRcdC5maW5kKCcuYW5pbWF0ZWQsLmVycm9yJylcblx0XHRcdFx0XHQuaGlkZSgpXG5cdFx0XHRcdFx0LnJlbW92ZUNsYXNzKCd2aXNpYmxlJylcblx0XHRcdFx0XHQuZW5kKClcblx0XHRcdFx0XHQuZmluZCgnLnN1Y2Nlc3MnKVxuXHRcdFx0XHRcdC5zaG93KClcblx0XHRcdFx0XHQuYWRkQ2xhc3MoJ3Zpc2libGUnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFNhdmVTZXR0aW5nc1N0ZXAuRmFsc2VSZXN1bHQ6XG5cdFx0XHRcdHRoaXMuZWxlbWVudFxuXHRcdFx0XHRcdC5maW5kKCcuYW5pbWF0ZWQsLnN1Y2Nlc3MnKVxuXHRcdFx0XHRcdC5oaWRlKClcblx0XHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ3Zpc2libGUnKVxuXHRcdFx0XHRcdC5lbmQoKVxuXHRcdFx0XHRcdC5maW5kKCcuZXJyb3InKVxuXHRcdFx0XHRcdC5zaG93KClcblx0XHRcdFx0XHQuYWRkQ2xhc3MoJ3Zpc2libGUnKTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIFNhdmVTZXR0aW5nc1N0ZXAuQW5pbWF0ZTpcblx0XHRcdFx0dGhpcy5lbGVtZW50XG5cdFx0XHRcdFx0LmZpbmQoJy5lcnJvciwuc3VjY2VzcycpXG5cdFx0XHRcdFx0LmhpZGUoKVxuXHRcdFx0XHRcdC5yZW1vdmVDbGFzcygndmlzaWJsZScpXG5cdFx0XHRcdFx0LmVuZCgpXG5cdFx0XHRcdFx0LmZpbmQoJy5hbmltYXRlZCcpXG5cdFx0XHRcdFx0LnNob3coKVxuXHRcdFx0XHRcdC5hZGRDbGFzcygndmlzaWJsZScpO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgU2F2ZVNldHRpbmdzU3RlcC5JZGxlOlxuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0dGhpcy5lbGVtZW50XG5cdFx0XHRcdFx0LmZpbmQoJy5hbmltYXRlZCcpXG5cdFx0XHRcdFx0LmhpZGUoKVxuXHRcdFx0XHRcdC5lbmQoKVxuXHRcdFx0XHRcdC5maW5kKCcuZXJyb3IsLnN1Y2Nlc3MnKVxuXHRcdFx0XHRcdC5yZW1vdmVDbGFzcygndmlzaWJsZScpO1xuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50RXhwb3J0SGVscGVyKFNhdmVUcmlnZ2VyQ29tcG9uZW50LCAnU2F2ZVRyaWdnZXJDb21wb25lbnQnKTtcbiIsImltcG9ydCB7IGNvbXBvbmVudEV4cG9ydEhlbHBlciB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdCc7XG5pbXBvcnQgeyBBYnN0cmFjdElucHV0IH0gZnJvbSAnQ29tcG9uZW50L0Fic3RyYWN0SW5wdXQnO1xuXG5jbGFzcyBJbnB1dENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0SW5wdXQge31cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50RXhwb3J0SGVscGVyKElucHV0Q29tcG9uZW50LCAnSW5wdXRDb21wb25lbnQnKTtcbiIsImltcG9ydCB7IGkxOG4gfSBmcm9tICdDb21tb24vVHJhbnNsYXRvcic7XG5pbXBvcnQgeyBkZWZhdXRPcHRpb25zQWZ0ZXJSZW5kZXIgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgY29tcG9uZW50RXhwb3J0SGVscGVyIH0gZnJvbSAnQ29tcG9uZW50L0Fic3RyYWN0JztcbmltcG9ydCB7IEFic3RyYWN0SW5wdXQgfSBmcm9tICdDb21wb25lbnQvQWJzdHJhY3RJbnB1dCc7XG5cbmNsYXNzIFNlbGVjdENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0SW5wdXQge1xuXHQvKipcblx0ICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGFyYW1zKSB7XG5cdFx0c3VwZXIocGFyYW1zKTtcblxuXHRcdHRoaXMub3B0aW9ucyA9IHBhcmFtcy5vcHRpb25zIHx8ICcnO1xuXG5cdFx0dGhpcy5vcHRpb25zVGV4dCA9IHBhcmFtcy5vcHRpb25zVGV4dCB8fCBudWxsO1xuXHRcdHRoaXMub3B0aW9uc1ZhbHVlID0gcGFyYW1zLm9wdGlvbnNWYWx1ZSB8fCBudWxsO1xuXHRcdHRoaXMub3B0aW9uc0NhcHRpb24gPSBwYXJhbXMub3B0aW9uc0NhcHRpb24gfHwgbnVsbDtcblxuXHRcdGlmICh0aGlzLm9wdGlvbnNDYXB0aW9uKSB7XG5cdFx0XHR0aGlzLm9wdGlvbnNDYXB0aW9uID0gaTE4bih0aGlzLm9wdGlvbnNDYXB0aW9uKTtcblx0XHR9XG5cblx0XHR0aGlzLmRlZmF1dE9wdGlvbnNBZnRlclJlbmRlciA9IGRlZmF1dE9wdGlvbnNBZnRlclJlbmRlcjtcblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRFeHBvcnRIZWxwZXIoU2VsZWN0Q29tcG9uZW50LCAnU2VsZWN0Q29tcG9uZW50Jyk7XG4iLCJpbXBvcnQgeyBjb21wb25lbnRFeHBvcnRIZWxwZXIgfSBmcm9tICdDb21wb25lbnQvQWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RSYWRpbyB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdFJhZGlvJztcblxuY2xhc3MgUmFkaW9Db21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFJhZGlvIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudEV4cG9ydEhlbHBlcihSYWRpb0NvbXBvbmVudCwgJ1JhZGlvQ29tcG9uZW50Jyk7XG4iLCJpbXBvcnQgeyBpc1VuZCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBjb21wb25lbnRFeHBvcnRIZWxwZXIgfSBmcm9tICdDb21wb25lbnQvQWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RJbnB1dCB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdElucHV0JztcblxuY29uc3QgREVGQVVMVF9ST1dTID0gNTtcblxuY2xhc3MgVGV4dEFyZWFDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdElucHV0IHtcblx0LyoqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXNcblx0ICovXG5cdGNvbnN0cnVjdG9yKHBhcmFtcykge1xuXHRcdHN1cGVyKHBhcmFtcyk7XG5cblx0XHR0aGlzLnJvd3MgPSBwYXJhbXMucm93cyB8fCBERUZBVUxUX1JPV1M7XG5cdFx0dGhpcy5zcGVsbGNoZWNrID0gaXNVbmQocGFyYW1zLnNwZWxsY2hlY2spID8gZmFsc2UgOiAhIXBhcmFtcy5zcGVsbGNoZWNrO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudEV4cG9ydEhlbHBlcihUZXh0QXJlYUNvbXBvbmVudCwgJ1RleHRBcmVhQ29tcG9uZW50Jyk7XG4iLCJpbXBvcnQgeyBjb21wb25lbnRFeHBvcnRIZWxwZXIgfSBmcm9tICdDb21wb25lbnQvQWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RJbnB1dCB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdElucHV0JztcblxuY2xhc3MgRGF0ZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0SW5wdXQge31cblxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50RXhwb3J0SGVscGVyKERhdGVDb21wb25lbnQsICdEYXRlQ29tcG9uZW50Jyk7XG4iLCJpbXBvcnQgJCBmcm9tICckJztcbmltcG9ydCB7IEFic3RyYWN0Q29tcG9uZW50LCBjb21wb25lbnRFeHBvcnRIZWxwZXIgfSBmcm9tICdDb21wb25lbnQvQWJzdHJhY3QnO1xuXG5jbGFzcyBTY3JpcHRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdENvbXBvbmVudCB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gcGFyYW1zXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihwYXJhbXMpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0aWYgKFxuXHRcdFx0cGFyYW1zLmNvbXBvbmVudCAmJlxuXHRcdFx0cGFyYW1zLmNvbXBvbmVudC50ZW1wbGF0ZU5vZGVzICYmXG5cdFx0XHRwYXJhbXMuZWxlbWVudCAmJlxuXHRcdFx0cGFyYW1zLmVsZW1lbnRbMF0gJiZcblx0XHRcdHBhcmFtcy5lbGVtZW50WzBdLm91dGVySFRNTFxuXHRcdCkge1xuXHRcdFx0bGV0IHNjcmlwdCA9IHBhcmFtcy5lbGVtZW50WzBdLm91dGVySFRNTDtcblx0XHRcdHNjcmlwdCA9ICFzY3JpcHQgPyAnJyA6IHNjcmlwdC5yZXBsYWNlKC88eC1zY3JpcHQvaSwgJzxzY3JpcHQnKS5yZXBsYWNlKC88Yj48XFwvYj48XFwveC1zY3JpcHQ+L2ksICc8L3NjcmlwdD4nKTtcblxuXHRcdFx0aWYgKHNjcmlwdCkge1xuXHRcdFx0XHRwYXJhbXMuZWxlbWVudC50ZXh0KCcnKTtcblx0XHRcdFx0cGFyYW1zLmVsZW1lbnQucmVwbGFjZVdpdGgoXG5cdFx0XHRcdFx0JChzY3JpcHQpLnRleHQoXG5cdFx0XHRcdFx0XHRwYXJhbXMuY29tcG9uZW50LnRlbXBsYXRlTm9kZXNbMF0gJiYgcGFyYW1zLmNvbXBvbmVudC50ZW1wbGF0ZU5vZGVzWzBdLm5vZGVWYWx1ZVxuXHRcdFx0XHRcdFx0XHQ/IHBhcmFtcy5jb21wb25lbnQudGVtcGxhdGVOb2Rlc1swXS5ub2RlVmFsdWVcblx0XHRcdFx0XHRcdFx0OiAnJ1xuXHRcdFx0XHRcdClcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHBhcmFtcy5lbGVtZW50LnJlbW92ZSgpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRFeHBvcnRIZWxwZXIoU2NyaXB0Q29tcG9uZW50LCAnU2NyaXB0Q29tcG9uZW50Jyk7XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyBjb21wb25lbnRFeHBvcnRIZWxwZXIgfSBmcm9tICdDb21wb25lbnQvQWJzdHJhY3QnO1xuaW1wb3J0IHsgQWJzdHJhY3RDaGVja2JveCB9IGZyb20gJ0NvbXBvbmVudC9BYnN0cmFjdENoZWNrYm94JztcblxuY2xhc3MgQ2hlY2tib3hNYXRlcmlhbERlc2lnbkNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0Q2hlY2tib3gge1xuXHQvKipcblx0ICogQHBhcmFtIHtPYmplY3R9IHBhcmFtc1xuXHQgKi9cblx0Y29uc3RydWN0b3IocGFyYW1zKSB7XG5cdFx0c3VwZXIocGFyYW1zKTtcblxuXHRcdHRoaXMuYW5pbWF0aW9uQm94ID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgZmFsc2VUaW1lb3V0OiAyMDAgfSk7XG5cdFx0dGhpcy5hbmltYXRpb25DaGVja21hcmsgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyBmYWxzZVRpbWVvdXQ6IDIwMCB9KTtcblxuXHRcdHRoaXMuYW5pbWF0aW9uQm94U2V0VHJ1ZSA9IF8uYmluZCh0aGlzLmFuaW1hdGlvbkJveFNldFRydWUsIHRoaXMpO1xuXHRcdHRoaXMuYW5pbWF0aW9uQ2hlY2ttYXJrU2V0VHJ1ZSA9IF8uYmluZCh0aGlzLmFuaW1hdGlvbkNoZWNrbWFya1NldFRydWUsIHRoaXMpO1xuXG5cdFx0dGhpcy5kaXNwb3NhYmxlLnB1c2goXG5cdFx0XHR0aGlzLnZhbHVlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdFx0dGhpcy50cmlnZ2VyQW5pbWF0aW9uKHZhbHVlKTtcblx0XHRcdH0sIHRoaXMpXG5cdFx0KTtcblx0fVxuXG5cdGFuaW1hdGlvbkJveFNldFRydWUoKSB7XG5cdFx0dGhpcy5hbmltYXRpb25Cb3godHJ1ZSk7XG5cdH1cblxuXHRhbmltYXRpb25DaGVja21hcmtTZXRUcnVlKCkge1xuXHRcdHRoaXMuYW5pbWF0aW9uQ2hlY2ttYXJrKHRydWUpO1xuXHR9XG5cblx0dHJpZ2dlckFuaW1hdGlvbihib3gpIHtcblx0XHRpZiAoYm94KSB7XG5cdFx0XHR0aGlzLmFuaW1hdGlvbkJveFNldFRydWUoKTtcblx0XHRcdF8uZGVsYXkodGhpcy5hbmltYXRpb25DaGVja21hcmtTZXRUcnVlLCAyMDApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmFuaW1hdGlvbkNoZWNrbWFya1NldFRydWUoKTtcblx0XHRcdF8uZGVsYXkodGhpcy5hbmltYXRpb25Cb3hTZXRUcnVlLCAyMDApO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnRFeHBvcnRIZWxwZXIoQ2hlY2tib3hNYXRlcmlhbERlc2lnbkNvbXBvbmVudCwgJ0NoZWNrYm94TWF0ZXJpYWxEZXNpZ25Db21wb25lbnQnKTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQgcHJvZ3Jlc3NKcyBmcm9tICdwcm9ncmVzc0pzJztcblxuaW1wb3J0IHtcblx0bm9vcCxcblx0dHJpbSxcblx0bG9nLFxuXHRoYXMsXG5cdGlzQXJyYXksXG5cdGluQXJyYXksXG5cdGlzVW5kLFxuXHRpc05vcm1hbCxcblx0aXNQb3NOdW1lcmljLFxuXHRpc05vbkVtcHR5QXJyYXksXG5cdHBJbnQsXG5cdHBTdHJpbmcsXG5cdGRlbGVnYXRlUnVuT25EZXN0cm95LFxuXHRtYWlsVG9IZWxwZXIsXG5cdHdpbmRvd1Jlc2l6ZSxcblx0amFzc2xcbn0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IHtcblx0TGF5b3V0LFxuXHRDYXBhLFxuXHRTdG9yYWdlUmVzdWx0VHlwZSxcblx0Tm90aWZpY2F0aW9uLFxuXHRGb2xkZXJUeXBlLFxuXHRTZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uLFxuXHRNZXNzYWdlU2V0QWN0aW9uLFxuXHRDbGllbnRTaWRlS2V5TmFtZSxcblx0TWFnaWNzXG59IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5cbmltcG9ydCB7ICRodG1sLCBsZWZ0UGFuZWxXaWR0aCwgbGVmdFBhbmVsRGlzYWJsZWQsIGJBbmltYXRpb25TdXBwb3J0ZWQsIGJNb2JpbGVEZXZpY2UgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5cbmltcG9ydCB7IFVOVVNFRF9PUFRJT05fVkFMVUUgfSBmcm9tICdDb21tb24vQ29uc3RzJztcbmltcG9ydCB7IHJ1bkhvb2sgfSBmcm9tICdDb21tb24vUGx1Z2lucyc7XG5pbXBvcnQgeyBtb21lbnROb3dVbml4LCByZWxvYWQgYXMgbW9tZW50UmVsb2FkIH0gZnJvbSAnQ29tbW9uL01vbWVudG9yJztcblxuaW1wb3J0IHtcblx0aW5pdE1lc3NhZ2VGbGFnc0Zyb21DYWNoZSxcblx0c2V0Rm9sZGVySGFzaCxcblx0Z2V0Rm9sZGVySGFzaCxcblx0Z2V0Rm9sZGVySW5ib3hOYW1lLFxuXHRnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0LFxuXHRjbGVhck1lc3NhZ2VGbGFnc0Zyb21DYWNoZUJ5Rm9sZGVyLFxuXHRzdG9yZU1lc3NhZ2VGbGFnc1RvQ2FjaGVCeVNldEFjdGlvbixcblx0c3RvcmVNZXNzYWdlRmxhZ3NUb0NhY2hlQnlGb2xkZXJBbmRVaWRcbn0gZnJvbSAnQ29tbW9uL0NhY2hlJztcblxuaW1wb3J0IHtcblx0dXNlckJhY2tncm91bmQsXG5cdG1haWxCb3gsXG5cdHJvb3QsXG5cdG9wZW5QZ3BXb3JrZXJKcyxcblx0b3BlblBncEpzLFxuXHRzb2NpYWxHb29nbGUsXG5cdHNvY2lhbFR3aXR0ZXIsXG5cdHNvY2lhbEZhY2Vib29rXG59IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5cbmltcG9ydCAqIGFzIEV2ZW50cyBmcm9tICdDb21tb24vRXZlbnRzJztcblxuaW1wb3J0IHsgZ2V0Tm90aWZpY2F0aW9uLCBpMThuIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5pbXBvcnQgU29jaWFsU3RvcmUgZnJvbSAnU3RvcmVzL1NvY2lhbCc7XG5pbXBvcnQgQXBwU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQXBwJztcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1NldHRpbmdzJztcbmltcG9ydCBOb3RpZmljYXRpb25TdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Ob3RpZmljYXRpb24nO1xuaW1wb3J0IEFjY291bnRTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BY2NvdW50JztcbmltcG9ydCBDb250YWN0U3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQ29udGFjdCc7XG5pbXBvcnQgSWRlbnRpdHlTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9JZGVudGl0eSc7XG5pbXBvcnQgVGVtcGxhdGVTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9UZW1wbGF0ZSc7XG5pbXBvcnQgRm9sZGVyU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvRm9sZGVyJztcbmltcG9ydCBQZ3BTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9QZ3AnO1xuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcbmltcG9ydCBRdW90YVN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1F1b3RhJztcblxuaW1wb3J0ICogYXMgTG9jYWwgZnJvbSAnU3RvcmFnZS9DbGllbnQnO1xuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5pbXBvcnQgeyBjaGVja1RpbWVzdGFtcCB9IGZyb20gJ1N0b3JhZ2UvUmFpbkxvb3AnO1xuXG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuaW1wb3J0IFByb21pc2VzIGZyb20gJ1Byb21pc2VzL1VzZXIvQWpheCc7XG5cbmltcG9ydCB7IEVtYWlsTW9kZWwgfSBmcm9tICdNb2RlbC9FbWFpbCc7XG5pbXBvcnQgeyBBY2NvdW50TW9kZWwgfSBmcm9tICdNb2RlbC9BY2NvdW50JztcbmltcG9ydCB7IElkZW50aXR5TW9kZWwgfSBmcm9tICdNb2RlbC9JZGVudGl0eSc7XG5pbXBvcnQgeyBUZW1wbGF0ZU1vZGVsIH0gZnJvbSAnTW9kZWwvVGVtcGxhdGUnO1xuaW1wb3J0IHsgT3BlblBncEtleU1vZGVsIH0gZnJvbSAnTW9kZWwvT3BlblBncEtleSc7XG5cbi8vIGltcG9ydCB7QWJvdXRVc2VyU2NyZWVufSBmcm9tICdTY3JlZW4vVXNlci9BYm91dCc7XG5pbXBvcnQgeyBMb2dpblVzZXJTY3JlZW4gfSBmcm9tICdTY3JlZW4vVXNlci9Mb2dpbic7XG5pbXBvcnQgeyBNYWlsQm94VXNlclNjcmVlbiB9IGZyb20gJ1NjcmVlbi9Vc2VyL01haWxCb3gnO1xuaW1wb3J0IHsgU2V0dGluZ3NVc2VyU2NyZWVuIH0gZnJvbSAnU2NyZWVuL1VzZXIvU2V0dGluZ3MnO1xuXG5pbXBvcnQgeyBoaWRlTG9hZGluZywgcm91dGVPZmYsIHJvdXRlT24sIHNldEhhc2gsIHN0YXJ0U2NyZWVucywgc2hvd1NjcmVlblBvcHVwIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuXG5pbXBvcnQgeyBBYnN0cmFjdEFwcCB9IGZyb20gJ0FwcC9BYnN0cmFjdCc7XG5cbmNsYXNzIEFwcFVzZXIgZXh0ZW5kcyBBYnN0cmFjdEFwcCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKFJlbW90ZSk7XG5cblx0XHR0aGlzLm1vdmVDYWNoZSA9IHt9O1xuXG5cdFx0dGhpcy5xdW90YURlYm91bmNlID0gXy5kZWJvdW5jZSh0aGlzLnF1b3RhLCBNYWdpY3MuVGltZTMwcyk7XG5cdFx0dGhpcy5tb3ZlT3JEZWxldGVSZXNwb25zZUhlbHBlciA9IF8uYmluZCh0aGlzLm1vdmVPckRlbGV0ZVJlc3BvbnNlSGVscGVyLCB0aGlzKTtcblxuXHRcdHRoaXMubWVzc2FnZXNNb3ZlVHJpZ2dlciA9IF8uZGVib3VuY2UodGhpcy5tZXNzYWdlc01vdmVUcmlnZ2VyLCA1MDApO1xuXG5cdFx0d2luZG93LnNldEludGVydmFsKCgpID0+IEV2ZW50cy5wdWIoJ2ludGVydmFsLjMwcycpLCBNYWdpY3MuVGltZTMwcyk7XG5cdFx0d2luZG93LnNldEludGVydmFsKCgpID0+IEV2ZW50cy5wdWIoJ2ludGVydmFsLjFtJyksIE1hZ2ljcy5UaW1lMW0pO1xuXHRcdHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiBFdmVudHMucHViKCdpbnRlcnZhbC4ybScpLCBNYWdpY3MuVGltZTJtKTtcblx0XHR3aW5kb3cuc2V0SW50ZXJ2YWwoKCkgPT4gRXZlbnRzLnB1YignaW50ZXJ2YWwuM20nKSwgTWFnaWNzLlRpbWUzbSk7XG5cdFx0d2luZG93LnNldEludGVydmFsKCgpID0+IEV2ZW50cy5wdWIoJ2ludGVydmFsLjVtJyksIE1hZ2ljcy5UaW1lNW0pO1xuXHRcdHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiBFdmVudHMucHViKCdpbnRlcnZhbC4xMG0nKSwgTWFnaWNzLlRpbWUxMG0pO1xuXHRcdHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiBFdmVudHMucHViKCdpbnRlcnZhbC4xNW0nKSwgTWFnaWNzLlRpbWUxNW0pO1xuXHRcdHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiBFdmVudHMucHViKCdpbnRlcnZhbC4yMG0nKSwgTWFnaWNzLlRpbWUyMG0pO1xuXG5cdFx0d2luZG93LnNldFRpbWVvdXQoKCkgPT4gd2luZG93LnNldEludGVydmFsKCgpID0+IEV2ZW50cy5wdWIoJ2ludGVydmFsLjJtLWFmdGVyNW0nKSwgTWFnaWNzLlRpbWUybSksIE1hZ2ljcy5UaW1lNW0pO1xuXHRcdHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiBFdmVudHMucHViKCdpbnRlcnZhbC41bS1hZnRlcjVtJyksIE1hZ2ljcy5UaW1lNW0pLCBNYWdpY3MuVGltZTVtKTtcblx0XHR3aW5kb3cuc2V0VGltZW91dChcblx0XHRcdCgpID0+IHdpbmRvdy5zZXRJbnRlcnZhbCgoKSA9PiBFdmVudHMucHViKCdpbnRlcnZhbC4xMG0tYWZ0ZXI1bScpLCBNYWdpY3MuVGltZTEwbSksXG5cdFx0XHRNYWdpY3MuVGltZTVtXG5cdFx0KTtcblxuXHRcdCQud2FrZVVwKFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRpZiAoY2hlY2tUaW1lc3RhbXAoKSkge1xuXHRcdFx0XHRcdHRoaXMucmVsb2FkKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRSZW1vdGUuanNWZXJzaW9uKChzUmVzdWx0LCBvRGF0YSkgPT4ge1xuXHRcdFx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSBzUmVzdWx0ICYmIG9EYXRhICYmICFvRGF0YS5SZXN1bHQpIHtcblx0XHRcdFx0XHRcdHRoaXMucmVsb2FkKCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LCBTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgndmVyc2lvbicpKTtcblx0XHRcdH0sXG5cdFx0XHR7fSxcblx0XHRcdE1hZ2ljcy5UaW1lNjBtXG5cdFx0KTtcblxuXHRcdGlmIChjaGVja1RpbWVzdGFtcCgpKSB7XG5cdFx0XHR0aGlzLnJlbG9hZCgpO1xuXHRcdH1cblxuXHRcdGlmIChTZXR0aW5ncy5zZXR0aW5nc0dldCgnVXNlckJhY2tncm91bmRIYXNoJykpIHtcblx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHQkKCcjcmwtYmcnKVxuXHRcdFx0XHRcdC5hdHRyKCdzdHlsZScsICdiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7Jylcblx0XHRcdFx0XHQuYmFja3N0cmV0Y2godXNlckJhY2tncm91bmQoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1VzZXJCYWNrZ3JvdW5kSGFzaCcpKSwge1xuXHRcdFx0XHRcdFx0ZmFkZTogYkFuaW1hdGlvblN1cHBvcnRlZCA/IE1hZ2ljcy5UaW1lMXMgOiAwLFxuXHRcdFx0XHRcdFx0Y2VudGVyZWRYOiB0cnVlLFxuXHRcdFx0XHRcdFx0Y2VudGVyZWRZOiB0cnVlXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQucmVtb3ZlQXR0cignc3R5bGUnKTtcblx0XHRcdH0sIE1hZ2ljcy5UaW1lMXMpO1xuXHRcdH1cblxuXHRcdHRoaXMuc29jaWFsVXNlcnMgPSBfLmJpbmQodGhpcy5zb2NpYWxVc2VycywgdGhpcyk7XG5cdH1cblxuXHRyZW1vdGUoKSB7XG5cdFx0cmV0dXJuIFJlbW90ZTtcblx0fVxuXG5cdHJlbG9hZCgpIHtcblx0XHRpZiAod2luZG93LnBhcmVudCAmJiAhIVNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdpbklmcmFtZScpKSB7XG5cdFx0XHR3aW5kb3cucGFyZW50LmxvY2F0aW9uLnJlbG9hZCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG5cdFx0fVxuXHR9XG5cblx0cmVsb2FkRmxhZ3NDdXJyZW50TWVzc2FnZUxpc3RBbmRNZXNzYWdlRnJvbUNhY2hlKCkge1xuXHRcdF8uZWFjaChNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3QoKSwgKG1lc3NhZ2UpID0+IHtcblx0XHRcdGluaXRNZXNzYWdlRmxhZ3NGcm9tQ2FjaGUobWVzc2FnZSk7XG5cdFx0fSk7XG5cdFx0aW5pdE1lc3NhZ2VGbGFnc0Zyb21DYWNoZShNZXNzYWdlU3RvcmUubWVzc2FnZSgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSBiRHJvcFBhZ2VQb3NpdGlvbiA9IGZhbHNlXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGJEcm9wQ3VycmVuRm9sZGVyQ2FjaGUgPSBmYWxzZVxuXHQgKi9cblx0cmVsb2FkTWVzc2FnZUxpc3QoYkRyb3BQYWdlUG9zaXRpb24gPSBmYWxzZSwgYkRyb3BDdXJyZW5Gb2xkZXJDYWNoZSA9IGZhbHNlKSB7XG5cdFx0bGV0IGlPZmZzZXQgPSAoTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0UGFnZSgpIC0gMSkgKiBTZXR0aW5nc1N0b3JlLm1lc3NhZ2VzUGVyUGFnZSgpO1xuXG5cdFx0aWYgKGJEcm9wQ3VycmVuRm9sZGVyQ2FjaGUpIHtcblx0XHRcdHNldEZvbGRlckhhc2goRm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lUmF3KCksICcnKTtcblx0XHR9XG5cblx0XHRpZiAoYkRyb3BQYWdlUG9zaXRpb24pIHtcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdFBhZ2UoMSk7XG5cdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RQYWdlQmVmb3JlVGhyZWFkKDEpO1xuXHRcdFx0aU9mZnNldCA9IDA7XG5cblx0XHRcdHNldEhhc2goXG5cdFx0XHRcdG1haWxCb3goXG5cdFx0XHRcdFx0Rm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lSGFzaCgpLFxuXHRcdFx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdFBhZ2UoKSxcblx0XHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RTZWFyY2goKSxcblx0XHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RUaHJlYWRVaWQoKVxuXHRcdFx0XHQpLFxuXHRcdFx0XHR0cnVlLFxuXHRcdFx0XHR0cnVlXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdExvYWRpbmcodHJ1ZSk7XG5cdFx0UmVtb3RlLm1lc3NhZ2VMaXN0KFxuXHRcdFx0KHNSZXN1bHQsIG9EYXRhLCBiQ2FjaGVkKSA9PiB7XG5cdFx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSBzUmVzdWx0ICYmIG9EYXRhICYmIG9EYXRhLlJlc3VsdCkge1xuXHRcdFx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdEVycm9yKCcnKTtcblx0XHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RMb2FkaW5nKGZhbHNlKTtcblxuXHRcdFx0XHRcdE1lc3NhZ2VTdG9yZS5zZXRNZXNzYWdlTGlzdChvRGF0YSwgYkNhY2hlZCk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoU3RvcmFnZVJlc3VsdFR5cGUuVW5sb2FkID09PSBzUmVzdWx0KSB7XG5cdFx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0RXJyb3IoJycpO1xuXHRcdFx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdExvYWRpbmcoZmFsc2UpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKFN0b3JhZ2VSZXN1bHRUeXBlLkFib3J0ICE9PSBzUmVzdWx0KSB7XG5cdFx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0KFtdKTtcblx0XHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RMb2FkaW5nKGZhbHNlKTtcblx0XHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RFcnJvcihcblx0XHRcdFx0XHRcdG9EYXRhICYmIG9EYXRhLkVycm9yQ29kZSA/IGdldE5vdGlmaWNhdGlvbihvRGF0YS5FcnJvckNvZGUpIDogaTE4bignTk9USUZJQ0FUSU9OUy9DQU5UX0dFVF9NRVNTQUdFX0xJU1QnKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdGlPZmZzZXQsXG5cdFx0XHRTZXR0aW5nc1N0b3JlLm1lc3NhZ2VzUGVyUGFnZSgpLFxuXHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0U2VhcmNoKCksXG5cdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RUaHJlYWRVaWQoKVxuXHRcdCk7XG5cdH1cblxuXHRyZWNhY2hlSW5ib3hNZXNzYWdlTGlzdCgpIHtcblx0XHRSZW1vdGUubWVzc2FnZUxpc3Qobm9vcCwgZ2V0Rm9sZGVySW5ib3hOYW1lKCksIDAsIFNldHRpbmdzU3RvcmUubWVzc2FnZXNQZXJQYWdlKCksICcnLCAnJywgdHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gZlJlc3VsdEZ1bmNcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRjb250YWN0c1N5bmMoZlJlc3VsdEZ1bmMpIHtcblx0XHRjb25zdCBvQ29udGFjdHMgPSBDb250YWN0U3RvcmUuY29udGFjdHM7XG5cdFx0aWYgKFxuXHRcdFx0b0NvbnRhY3RzLmltcG9ydGluZygpIHx8XG5cdFx0XHRvQ29udGFjdHMuc3luY2luZygpIHx8XG5cdFx0XHQhQ29udGFjdFN0b3JlLmVuYWJsZUNvbnRhY3RzU3luYygpIHx8XG5cdFx0XHQhQ29udGFjdFN0b3JlLmFsbG93Q29udGFjdHNTeW5jKClcblx0XHQpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRvQ29udGFjdHMuc3luY2luZyh0cnVlKTtcblxuXHRcdFJlbW90ZS5jb250YWN0c1N5bmMoKHNSZXN1bHQsIG9EYXRhKSA9PiB7XG5cdFx0XHRvQ29udGFjdHMuc3luY2luZyhmYWxzZSk7XG5cblx0XHRcdGlmIChmUmVzdWx0RnVuYykge1xuXHRcdFx0XHRmUmVzdWx0RnVuYyhzUmVzdWx0LCBvRGF0YSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdG1lc3NhZ2VzTW92ZVRyaWdnZXIoKSB7XG5cdFx0Y29uc3Qgc1RyYXNoRm9sZGVyID0gRm9sZGVyU3RvcmUudHJhc2hGb2xkZXIoKSxcblx0XHRcdHNTcGFtRm9sZGVyID0gRm9sZGVyU3RvcmUuc3BhbUZvbGRlcigpO1xuXG5cdFx0Xy5lYWNoKHRoaXMubW92ZUNhY2hlLCAoaXRlbSkgPT4ge1xuXHRcdFx0Y29uc3QgaXNTcGFtID0gc1NwYW1Gb2xkZXIgPT09IGl0ZW0uVG8sXG5cdFx0XHRcdGlzVHJhc2ggPSBzVHJhc2hGb2xkZXIgPT09IGl0ZW0uVG8sXG5cdFx0XHRcdGlzSGFtID0gIWlzU3BhbSAmJiBzU3BhbUZvbGRlciA9PT0gaXRlbS5Gcm9tICYmIGdldEZvbGRlckluYm94TmFtZSgpID09PSBpdGVtLlRvO1xuXG5cdFx0XHRSZW1vdGUubWVzc2FnZXNNb3ZlKFxuXHRcdFx0XHR0aGlzLm1vdmVPckRlbGV0ZVJlc3BvbnNlSGVscGVyLFxuXHRcdFx0XHRpdGVtLkZyb20sXG5cdFx0XHRcdGl0ZW0uVG8sXG5cdFx0XHRcdGl0ZW0uVWlkLFxuXHRcdFx0XHRpc1NwYW0gPyAnU1BBTScgOiBpc0hhbSA/ICdIQU0nIDogJycsXG5cdFx0XHRcdGlzU3BhbSB8fCBpc1RyYXNoXG5cdFx0XHQpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5tb3ZlQ2FjaGUgPSB7fTtcblx0fVxuXG5cdG1lc3NhZ2VzTW92ZUhlbHBlcihmcm9tRm9sZGVyRnVsbE5hbWVSYXcsIHRvRm9sZGVyRnVsbE5hbWVSYXcsIHVpZHNGb3JNb3ZlKSB7XG5cdFx0Y29uc3QgaGFzaCA9ICckJCcgKyBmcm9tRm9sZGVyRnVsbE5hbWVSYXcgKyAnJCQnICsgdG9Gb2xkZXJGdWxsTmFtZVJhdyArICckJCc7XG5cdFx0aWYgKCF0aGlzLm1vdmVDYWNoZVtoYXNoXSkge1xuXHRcdFx0dGhpcy5tb3ZlQ2FjaGVbaGFzaF0gPSB7XG5cdFx0XHRcdEZyb206IGZyb21Gb2xkZXJGdWxsTmFtZVJhdyxcblx0XHRcdFx0VG86IHRvRm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHRcdFVpZDogW11cblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0dGhpcy5tb3ZlQ2FjaGVbaGFzaF0uVWlkID0gXy51bmlvbih0aGlzLm1vdmVDYWNoZVtoYXNoXS5VaWQsIHVpZHNGb3JNb3ZlKTtcblx0XHR0aGlzLm1lc3NhZ2VzTW92ZVRyaWdnZXIoKTtcblx0fVxuXG5cdG1lc3NhZ2VzQ29weUhlbHBlcihzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBzVG9Gb2xkZXJGdWxsTmFtZVJhdywgYVVpZEZvckNvcHkpIHtcblx0XHRSZW1vdGUubWVzc2FnZXNDb3B5KHRoaXMubW92ZU9yRGVsZXRlUmVzcG9uc2VIZWxwZXIsIHNGcm9tRm9sZGVyRnVsbE5hbWVSYXcsIHNUb0ZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yQ29weSk7XG5cdH1cblxuXHRtZXNzYWdlc0RlbGV0ZUhlbHBlcihzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yUmVtb3ZlKSB7XG5cdFx0UmVtb3RlLm1lc3NhZ2VzRGVsZXRlKHRoaXMubW92ZU9yRGVsZXRlUmVzcG9uc2VIZWxwZXIsIHNGcm9tRm9sZGVyRnVsbE5hbWVSYXcsIGFVaWRGb3JSZW1vdmUpO1xuXHR9XG5cblx0bW92ZU9yRGVsZXRlUmVzcG9uc2VIZWxwZXIoc1Jlc3VsdCwgb0RhdGEpIHtcblx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gc1Jlc3VsdCAmJiBGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyKCkpIHtcblx0XHRcdGlmIChvRGF0YSAmJiBpc0FycmF5KG9EYXRhLlJlc3VsdCkgJiYgMiA9PT0gb0RhdGEuUmVzdWx0Lmxlbmd0aCkge1xuXHRcdFx0XHRzZXRGb2xkZXJIYXNoKG9EYXRhLlJlc3VsdFswXSwgb0RhdGEuUmVzdWx0WzFdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHNldEZvbGRlckhhc2goRm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lUmF3KCksICcnKTtcblxuXHRcdFx0XHRpZiAob0RhdGEgJiYgLTEgPCBpbkFycmF5KG9EYXRhLkVycm9yQ29kZSwgW05vdGlmaWNhdGlvbi5DYW50TW92ZU1lc3NhZ2UsIE5vdGlmaWNhdGlvbi5DYW50Q29weU1lc3NhZ2VdKSkge1xuXHRcdFx0XHRcdHdpbmRvdy5hbGVydChnZXROb3RpZmljYXRpb24ob0RhdGEuRXJyb3JDb2RlKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0dGhpcy5yZWxvYWRNZXNzYWdlTGlzdCgwID09PSBNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3QoKS5sZW5ndGgpO1xuXHRcdFx0dGhpcy5xdW90YURlYm91bmNlKCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzRnJvbUZvbGRlckZ1bGxOYW1lUmF3XG5cdCAqIEBwYXJhbSB7QXJyYXl9IGFVaWRGb3JSZW1vdmVcblx0ICovXG5cdGRlbGV0ZU1lc3NhZ2VzRnJvbUZvbGRlcldpdGhvdXRDaGVjayhzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yUmVtb3ZlKSB7XG5cdFx0dGhpcy5tZXNzYWdlc0RlbGV0ZUhlbHBlcihzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yUmVtb3ZlKTtcblx0XHRNZXNzYWdlU3RvcmUucmVtb3ZlTWVzc2FnZXNGcm9tTGlzdChzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yUmVtb3ZlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge251bWJlcn0gaURlbGV0ZVR5cGVcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNGcm9tRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtBcnJheX0gYVVpZEZvclJlbW92ZVxuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSBiVXNlRm9sZGVyID0gdHJ1ZVxuXHQgKi9cblx0ZGVsZXRlTWVzc2FnZXNGcm9tRm9sZGVyKGlEZWxldGVUeXBlLCBzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yUmVtb3ZlLCBiVXNlRm9sZGVyKSB7XG5cdFx0bGV0IG9Nb3ZlRm9sZGVyID0gbnVsbCxcblx0XHRcdG5TZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uID0gbnVsbDtcblxuXHRcdHN3aXRjaCAoaURlbGV0ZVR5cGUpIHtcblx0XHRcdGNhc2UgRm9sZGVyVHlwZS5TcGFtOlxuXHRcdFx0XHRvTW92ZUZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3QoRm9sZGVyU3RvcmUuc3BhbUZvbGRlcigpKTtcblx0XHRcdFx0blNldFN5c3RlbUZvbGRlcnNOb3RpZmljYXRpb24gPSBTZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uLlNwYW07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBGb2xkZXJUeXBlLk5vdFNwYW06XG5cdFx0XHRcdG9Nb3ZlRm9sZGVyID0gZ2V0Rm9sZGVyRnJvbUNhY2hlTGlzdChnZXRGb2xkZXJJbmJveE5hbWUoKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBGb2xkZXJUeXBlLlRyYXNoOlxuXHRcdFx0XHRvTW92ZUZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3QoRm9sZGVyU3RvcmUudHJhc2hGb2xkZXIoKSk7XG5cdFx0XHRcdG5TZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uID0gU2V0U3lzdGVtRm9sZGVyc05vdGlmaWNhdGlvbi5UcmFzaDtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIEZvbGRlclR5cGUuQXJjaGl2ZTpcblx0XHRcdFx0b01vdmVGb2xkZXIgPSBnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0KEZvbGRlclN0b3JlLmFyY2hpdmVGb2xkZXIoKSk7XG5cdFx0XHRcdG5TZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uID0gU2V0U3lzdGVtRm9sZGVyc05vdGlmaWNhdGlvbi5BcmNoaXZlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHR9XG5cblx0XHRiVXNlRm9sZGVyID0gaXNVbmQoYlVzZUZvbGRlcikgPyB0cnVlIDogISFiVXNlRm9sZGVyO1xuXHRcdGlmIChiVXNlRm9sZGVyKSB7XG5cdFx0XHRpZiAoXG5cdFx0XHRcdChGb2xkZXJUeXBlLlNwYW0gPT09IGlEZWxldGVUeXBlICYmIFVOVVNFRF9PUFRJT05fVkFMVUUgPT09IEZvbGRlclN0b3JlLnNwYW1Gb2xkZXIoKSkgfHxcblx0XHRcdFx0KEZvbGRlclR5cGUuVHJhc2ggPT09IGlEZWxldGVUeXBlICYmIFVOVVNFRF9PUFRJT05fVkFMVUUgPT09IEZvbGRlclN0b3JlLnRyYXNoRm9sZGVyKCkpIHx8XG5cdFx0XHRcdChGb2xkZXJUeXBlLkFyY2hpdmUgPT09IGlEZWxldGVUeXBlICYmIFVOVVNFRF9PUFRJT05fVkFMVUUgPT09IEZvbGRlclN0b3JlLmFyY2hpdmVGb2xkZXIoKSlcblx0XHRcdCkge1xuXHRcdFx0XHRiVXNlRm9sZGVyID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCFvTW92ZUZvbGRlciAmJiBiVXNlRm9sZGVyKSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Gb2xkZXJTeXN0ZW0nKSwgW25TZXRTeXN0ZW1Gb2xkZXJzTm90aWZpY2F0aW9uXSk7XG5cdFx0fSBlbHNlIGlmIChcblx0XHRcdCFiVXNlRm9sZGVyIHx8XG5cdFx0XHQoRm9sZGVyVHlwZS5UcmFzaCA9PT0gaURlbGV0ZVR5cGUgJiZcblx0XHRcdFx0KHNGcm9tRm9sZGVyRnVsbE5hbWVSYXcgPT09IEZvbGRlclN0b3JlLnNwYW1Gb2xkZXIoKSB8fCBzRnJvbUZvbGRlckZ1bGxOYW1lUmF3ID09PSBGb2xkZXJTdG9yZS50cmFzaEZvbGRlcigpKSlcblx0XHQpIHtcblx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0FzaycpLCBbXG5cdFx0XHRcdGkxOG4oJ1BPUFVQU19BU0svREVTQ19XQU5UX0RFTEVURV9NRVNTQUdFUycpLFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlc0RlbGV0ZUhlbHBlcihzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yUmVtb3ZlKTtcblx0XHRcdFx0XHRNZXNzYWdlU3RvcmUucmVtb3ZlTWVzc2FnZXNGcm9tTGlzdChzRnJvbUZvbGRlckZ1bGxOYW1lUmF3LCBhVWlkRm9yUmVtb3ZlKTtcblx0XHRcdFx0fVxuXHRcdFx0XSk7XG5cdFx0fSBlbHNlIGlmIChvTW92ZUZvbGRlcikge1xuXHRcdFx0dGhpcy5tZXNzYWdlc01vdmVIZWxwZXIoc0Zyb21Gb2xkZXJGdWxsTmFtZVJhdywgb01vdmVGb2xkZXIuZnVsbE5hbWVSYXcsIGFVaWRGb3JSZW1vdmUpO1xuXHRcdFx0TWVzc2FnZVN0b3JlLnJlbW92ZU1lc3NhZ2VzRnJvbUxpc3Qoc0Zyb21Gb2xkZXJGdWxsTmFtZVJhdywgYVVpZEZvclJlbW92ZSwgb01vdmVGb2xkZXIuZnVsbE5hbWVSYXcpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0Zyb21Gb2xkZXJGdWxsTmFtZVJhd1xuXHQgKiBAcGFyYW0ge0FycmF5fSBhVWlkRm9yTW92ZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1RvRm9sZGVyRnVsbE5hbWVSYXdcblx0ICogQHBhcmFtIHtib29sZWFuPX0gYkNvcHkgPSBmYWxzZVxuXHQgKi9cblx0bW92ZU1lc3NhZ2VzVG9Gb2xkZXIoc0Zyb21Gb2xkZXJGdWxsTmFtZVJhdywgYVVpZEZvck1vdmUsIHNUb0ZvbGRlckZ1bGxOYW1lUmF3LCBiQ29weSkge1xuXHRcdGlmIChzRnJvbUZvbGRlckZ1bGxOYW1lUmF3ICE9PSBzVG9Gb2xkZXJGdWxsTmFtZVJhdyAmJiBpc0FycmF5KGFVaWRGb3JNb3ZlKSAmJiAwIDwgYVVpZEZvck1vdmUubGVuZ3RoKSB7XG5cdFx0XHRjb25zdCBvRnJvbUZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3Qoc0Zyb21Gb2xkZXJGdWxsTmFtZVJhdyksXG5cdFx0XHRcdG9Ub0ZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3Qoc1RvRm9sZGVyRnVsbE5hbWVSYXcpO1xuXG5cdFx0XHRpZiAob0Zyb21Gb2xkZXIgJiYgb1RvRm9sZGVyKSB7XG5cdFx0XHRcdGlmIChpc1VuZChiQ29weSkgPyBmYWxzZSA6ICEhYkNvcHkpIHtcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2VzQ29weUhlbHBlcihvRnJvbUZvbGRlci5mdWxsTmFtZVJhdywgb1RvRm9sZGVyLmZ1bGxOYW1lUmF3LCBhVWlkRm9yTW92ZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5tZXNzYWdlc01vdmVIZWxwZXIob0Zyb21Gb2xkZXIuZnVsbE5hbWVSYXcsIG9Ub0ZvbGRlci5mdWxsTmFtZVJhdywgYVVpZEZvck1vdmUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0TWVzc2FnZVN0b3JlLnJlbW92ZU1lc3NhZ2VzRnJvbUxpc3Qob0Zyb21Gb2xkZXIuZnVsbE5hbWVSYXcsIGFVaWRGb3JNb3ZlLCBvVG9Gb2xkZXIuZnVsbE5hbWVSYXcsIGJDb3B5KTtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb249fSBjYWxsYmFjayA9IG51bGxcblx0ICovXG5cdGZvbGRlcnNSZWxvYWQoY2FsbGJhY2sgPSBudWxsKSB7XG5cdFx0Y29uc3QgcHJvbSA9IFByb21pc2VzLmZvbGRlcnNSZWxvYWQoRm9sZGVyU3RvcmUuZm9sZGVyc0xvYWRpbmcpO1xuXHRcdGlmIChjYWxsYmFjaykge1xuXHRcdFx0cHJvbVxuXHRcdFx0XHQudGhlbigodmFsdWUpID0+ICEhdmFsdWUpXG5cdFx0XHRcdC50aGVuKGNhbGxiYWNrKVxuXHRcdFx0XHQuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKGNhbGxiYWNrKSB7XG5cdFx0XHRcdFx0XHRcdGNhbGxiYWNrKGZhbHNlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjYWxsYmFjay1yZXR1cm5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LCAxKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0Zm9sZGVyc1Byb21pc2VzQWN0aW9uSGVscGVyKHByb21pc2UsIGVycm9yRGVmQ29kZSkge1xuXHRcdFByb21pc2VzLmFib3J0KCdGb2xkZXJzJylcblx0XHRcdC5mYXN0UmVzb2x2ZSh0cnVlKVxuXHRcdFx0LnRoZW4oKCkgPT4gcHJvbWlzZSlcblx0XHRcdC50aGVuKFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0UHJvbWlzZXMuZm9sZGVyc1JlbG9hZFdpdGhUaW1lb3V0KEZvbGRlclN0b3JlLmZvbGRlcnNMb2FkaW5nKTtcblx0XHRcdFx0fSxcblx0XHRcdFx0KGVycm9yQ29kZSkgPT4ge1xuXHRcdFx0XHRcdEZvbGRlclN0b3JlLmZvbGRlckxpc3QuZXJyb3IoZ2V0Tm90aWZpY2F0aW9uKGVycm9yQ29kZSwgJycsIGVycm9yRGVmQ29kZSkpO1xuXHRcdFx0XHRcdFByb21pc2VzLmZvbGRlcnNSZWxvYWRXaXRoVGltZW91dChGb2xkZXJTdG9yZS5mb2xkZXJzTG9hZGluZyk7XG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdH1cblxuXHRyZWxvYWRPcGVuUGdwS2V5cygpIHtcblx0XHRpZiAoUGdwU3RvcmUuY2FwYU9wZW5QR1AoKSkge1xuXHRcdFx0Y29uc3Qga2V5cyA9IFtdLFxuXHRcdFx0XHRlbWFpbCA9IG5ldyBFbWFpbE1vZGVsKCksXG5cdFx0XHRcdG9wZW5wZ3BLZXlyaW5nID0gUGdwU3RvcmUub3BlbnBncEtleXJpbmcsXG5cdFx0XHRcdG9wZW5wZ3BLZXlzID0gb3BlbnBncEtleXJpbmcgPyBvcGVucGdwS2V5cmluZy5nZXRBbGxLZXlzKCkgOiBbXTtcblxuXHRcdFx0Xy5lYWNoKG9wZW5wZ3BLZXlzLCAob0l0ZW0sIGlJbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAob0l0ZW0gJiYgb0l0ZW0ucHJpbWFyeUtleSkge1xuXHRcdFx0XHRcdGNvbnN0IGFFbWFpbHMgPSBbXSxcblx0XHRcdFx0XHRcdGFVc2VycyA9IFtdLFxuXHRcdFx0XHRcdFx0cHJpbWFyeVVzZXIgPSBvSXRlbS5nZXRQcmltYXJ5VXNlcigpLFxuXHRcdFx0XHRcdFx0dXNlciA9XG5cdFx0XHRcdFx0XHRcdHByaW1hcnlVc2VyICYmIHByaW1hcnlVc2VyLnVzZXJcblx0XHRcdFx0XHRcdFx0XHQ/IHByaW1hcnlVc2VyLnVzZXIudXNlcklkLnVzZXJpZFxuXHRcdFx0XHRcdFx0XHRcdDogb0l0ZW0udXNlcnMgJiYgb0l0ZW0udXNlcnNbMF1cblx0XHRcdFx0XHRcdFx0XHQ/IG9JdGVtLnVzZXJzWzBdLnVzZXJJZC51c2VyaWRcblx0XHRcdFx0XHRcdFx0XHQ6ICcnO1xuXG5cdFx0XHRcdFx0aWYgKG9JdGVtLnVzZXJzKSB7XG5cdFx0XHRcdFx0XHRfLmVhY2gob0l0ZW0udXNlcnMsIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtLnVzZXJJZCkge1xuXHRcdFx0XHRcdFx0XHRcdGVtYWlsLmNsZWFyKCk7XG5cdFx0XHRcdFx0XHRcdFx0ZW1haWwucGFyc2UoaXRlbS51c2VySWQudXNlcmlkKTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoZW1haWwudmFsaWRhdGUoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0YUVtYWlscy5wdXNoKGVtYWlsLmVtYWlsKTtcblx0XHRcdFx0XHRcdFx0XHRcdGFVc2Vycy5wdXNoKGl0ZW0udXNlcklkLnVzZXJpZCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoYUVtYWlscy5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGtleXMucHVzaChcblx0XHRcdFx0XHRcdFx0bmV3IE9wZW5QZ3BLZXlNb2RlbChcblx0XHRcdFx0XHRcdFx0XHRpSW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0b0l0ZW0ucHJpbWFyeUtleS5nZXRGaW5nZXJwcmludCgpLFxuXHRcdFx0XHRcdFx0XHRcdG9JdGVtLnByaW1hcnlLZXlcblx0XHRcdFx0XHRcdFx0XHRcdC5nZXRLZXlJZCgpXG5cdFx0XHRcdFx0XHRcdFx0XHQudG9IZXgoKVxuXHRcdFx0XHRcdFx0XHRcdFx0LnRvTG93ZXJDYXNlKCksXG5cdFx0XHRcdFx0XHRcdFx0Xy51bmlxKF8uY29tcGFjdChfLm1hcChvSXRlbS5nZXRLZXlJZHMoKSwgKGl0ZW0pID0+IChpdGVtICYmIGl0ZW0udG9IZXggPyBpdGVtLnRvSGV4KCkgOiBudWxsKSkpKSxcblx0XHRcdFx0XHRcdFx0XHRhVXNlcnMsXG5cdFx0XHRcdFx0XHRcdFx0YUVtYWlscyxcblx0XHRcdFx0XHRcdFx0XHRvSXRlbS5pc1ByaXZhdGUoKSxcblx0XHRcdFx0XHRcdFx0XHRvSXRlbS5hcm1vcigpLFxuXHRcdFx0XHRcdFx0XHRcdHVzZXJcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXG5cdFx0XHRkZWxlZ2F0ZVJ1bk9uRGVzdHJveShQZ3BTdG9yZS5vcGVucGdwa2V5cygpKTtcblx0XHRcdFBncFN0b3JlLm9wZW5wZ3BrZXlzKGtleXMpO1xuXHRcdH1cblx0fVxuXG5cdGFjY291bnRzQ291bnRzKCkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0XHQvLyBBY2NvdW50U3RvcmUuYWNjb3VudHMubG9hZGluZyh0cnVlKTtcblx0XHQvL1xuXHRcdC8vIFJlbW90ZS5hY2NvdW50c0NvdW50cygoc1Jlc3VsdCwgb0RhdGEpID0+IHtcblx0XHQvL1xuXHRcdC8vIFx0QWNjb3VudFN0b3JlLmFjY291bnRzLmxvYWRpbmcoZmFsc2UpO1xuXHRcdC8vXG5cdFx0Ly8gXHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gc1Jlc3VsdCAmJiBvRGF0YS5SZXN1bHQgJiYgb0RhdGEuUmVzdWx0WydDb3VudHMnXSlcblx0XHQvLyBcdHtcblx0XHQvLyBcdFx0dmFyXG5cdFx0Ly8gXHRcdFx0c0VtYWlsID0gQWNjb3VudFN0b3JlLmVtYWlsKCksXG5cdFx0Ly8gXHRcdFx0YUFjb3VudHMgPSBBY2NvdW50U3RvcmUuYWNjb3VudHMoKVxuXHRcdC8vIFx0XHQ7XG5cdFx0Ly9cblx0XHQvLyBcdFx0Xy5lYWNoKG9EYXRhLlJlc3VsdFsnQ291bnRzJ10sIChvSXRlbSkgPT4ge1xuXHRcdC8vXG5cdFx0Ly8gXHRcdFx0dmFyIG9BY2NvdW50ID0gXy5maW5kKGFBY291bnRzLCAob0FjY291bnQpID0+IHtcblx0XHQvLyBcdFx0XHRcdHJldHVybiBvQWNjb3VudCAmJiBvSXRlbVswXSA9PT0gb0FjY291bnQuZW1haWwgJiYgc0VtYWlsICE9PSBvQWNjb3VudC5lbWFpbDtcblx0XHQvLyBcdFx0XHR9KTtcblx0XHQvL1xuXHRcdC8vIFx0XHRcdGlmIChvQWNjb3VudClcblx0XHQvLyBcdFx0XHR7XG5cdFx0Ly8gXHRcdFx0XHRvQWNjb3VudC5jb3VudChwSW50KG9JdGVtWzFdKSk7XG5cdFx0Ly8gXHRcdFx0fVxuXHRcdC8vIFx0XHR9KTtcblx0XHQvLyBcdH1cblx0XHQvLyB9KTtcblx0fVxuXG5cdGFjY291bnRzQW5kSWRlbnRpdGllcyhiQm9vdCkge1xuXHRcdEFjY291bnRTdG9yZS5hY2NvdW50cy5sb2FkaW5nKHRydWUpO1xuXHRcdElkZW50aXR5U3RvcmUuaWRlbnRpdGllcy5sb2FkaW5nKHRydWUpO1xuXG5cdFx0UmVtb3RlLmFjY291bnRzQW5kSWRlbnRpdGllcygoc1Jlc3VsdCwgb0RhdGEpID0+IHtcblx0XHRcdEFjY291bnRTdG9yZS5hY2NvdW50cy5sb2FkaW5nKGZhbHNlKTtcblx0XHRcdElkZW50aXR5U3RvcmUuaWRlbnRpdGllcy5sb2FkaW5nKGZhbHNlKTtcblxuXHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHNSZXN1bHQgJiYgb0RhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdGNvbnN0IGNvdW50cyA9IHt9LFxuXHRcdFx0XHRcdHNBY2NvdW50RW1haWwgPSBBY2NvdW50U3RvcmUuZW1haWwoKTtcblx0XHRcdFx0bGV0IHBhcmVudEVtYWlsID0gU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1BhcmVudEVtYWlsJyk7XG5cblx0XHRcdFx0cGFyZW50RW1haWwgPSAnJyA9PT0gcGFyZW50RW1haWwgPyBzQWNjb3VudEVtYWlsIDogcGFyZW50RW1haWw7XG5cblx0XHRcdFx0aWYgKGlzQXJyYXkob0RhdGEuUmVzdWx0LkFjY291bnRzKSkge1xuXHRcdFx0XHRcdF8uZWFjaChBY2NvdW50U3RvcmUuYWNjb3VudHMoKSwgKG9BY2NvdW50KSA9PiB7XG5cdFx0XHRcdFx0XHRjb3VudHNbb0FjY291bnQuZW1haWxdID0gb0FjY291bnQuY291bnQoKTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGRlbGVnYXRlUnVuT25EZXN0cm95KEFjY291bnRTdG9yZS5hY2NvdW50cygpKTtcblxuXHRcdFx0XHRcdEFjY291bnRTdG9yZS5hY2NvdW50cyhcblx0XHRcdFx0XHRcdF8ubWFwKFxuXHRcdFx0XHRcdFx0XHRvRGF0YS5SZXN1bHQuQWNjb3VudHMsXG5cdFx0XHRcdFx0XHRcdChzVmFsdWUpID0+IG5ldyBBY2NvdW50TW9kZWwoc1ZhbHVlLCBzVmFsdWUgIT09IHBhcmVudEVtYWlsLCBjb3VudHNbc1ZhbHVlXSB8fCAwKVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNVbmQoYkJvb3QpID8gZmFsc2UgOiAhIWJCb290KSB7XG5cdFx0XHRcdFx0Xy5kZWxheSgoKSA9PiB0aGlzLmFjY291bnRzQ291bnRzKCksIDEwMDAgKiA1KTtcblx0XHRcdFx0XHRFdmVudHMuc3ViKCdpbnRlcnZhbC4xMG0tYWZ0ZXI1bScsICgpID0+IHRoaXMuYWNjb3VudHNDb3VudHMoKSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoaXNBcnJheShvRGF0YS5SZXN1bHQuSWRlbnRpdGllcykpIHtcblx0XHRcdFx0XHRkZWxlZ2F0ZVJ1bk9uRGVzdHJveShJZGVudGl0eVN0b3JlLmlkZW50aXRpZXMoKSk7XG5cblx0XHRcdFx0XHRJZGVudGl0eVN0b3JlLmlkZW50aXRpZXMoXG5cdFx0XHRcdFx0XHRfLm1hcChvRGF0YS5SZXN1bHQuSWRlbnRpdGllcywgKGlkZW50aXR5RGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBpZCA9IHBTdHJpbmcoaWRlbnRpdHlEYXRhLklkKSxcblx0XHRcdFx0XHRcdFx0XHRlbWFpbCA9IHBTdHJpbmcoaWRlbnRpdHlEYXRhLkVtYWlsKSxcblx0XHRcdFx0XHRcdFx0XHRpZGVudGl0eSA9IG5ldyBJZGVudGl0eU1vZGVsKGlkLCBlbWFpbCk7XG5cblx0XHRcdFx0XHRcdFx0aWRlbnRpdHkubmFtZShwU3RyaW5nKGlkZW50aXR5RGF0YS5OYW1lKSk7XG5cdFx0XHRcdFx0XHRcdGlkZW50aXR5LnJlcGx5VG8ocFN0cmluZyhpZGVudGl0eURhdGEuUmVwbHlUbykpO1xuXHRcdFx0XHRcdFx0XHRpZGVudGl0eS5iY2MocFN0cmluZyhpZGVudGl0eURhdGEuQmNjKSk7XG5cdFx0XHRcdFx0XHRcdGlkZW50aXR5LnNpZ25hdHVyZShwU3RyaW5nKGlkZW50aXR5RGF0YS5TaWduYXR1cmUpKTtcblx0XHRcdFx0XHRcdFx0aWRlbnRpdHkuc2lnbmF0dXJlSW5zZXJ0QmVmb3JlKCEhaWRlbnRpdHlEYXRhLlNpZ25hdHVyZUluc2VydEJlZm9yZSk7XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuIGlkZW50aXR5O1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHR0ZW1wbGF0ZXMoKSB7XG5cdFx0VGVtcGxhdGVTdG9yZS50ZW1wbGF0ZXMubG9hZGluZyh0cnVlKTtcblxuXHRcdFJlbW90ZS50ZW1wbGF0ZXMoKHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0VGVtcGxhdGVTdG9yZS50ZW1wbGF0ZXMubG9hZGluZyhmYWxzZSk7XG5cblx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSByZXN1bHQgJiYgZGF0YS5SZXN1bHQgJiYgaXNBcnJheShkYXRhLlJlc3VsdC5UZW1wbGF0ZXMpKSB7XG5cdFx0XHRcdGRlbGVnYXRlUnVuT25EZXN0cm95KFRlbXBsYXRlU3RvcmUudGVtcGxhdGVzKCkpO1xuXG5cdFx0XHRcdFRlbXBsYXRlU3RvcmUudGVtcGxhdGVzKFxuXHRcdFx0XHRcdF8uY29tcGFjdChcblx0XHRcdFx0XHRcdF8ubWFwKGRhdGEuUmVzdWx0LlRlbXBsYXRlcywgKHRlbXBsYXRlRGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCB0ZW1wbGF0ZSA9IG5ldyBUZW1wbGF0ZU1vZGVsKCk7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0ZW1wbGF0ZS5wYXJzZSh0ZW1wbGF0ZURhdGEpID8gdGVtcGxhdGUgOiBudWxsO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRxdW90YSgpIHtcblx0XHRSZW1vdGUucXVvdGEoKHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0aWYgKFxuXHRcdFx0XHRTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSByZXN1bHQgJiZcblx0XHRcdFx0ZGF0YSAmJlxuXHRcdFx0XHRkYXRhLlJlc3VsdCAmJlxuXHRcdFx0XHRpc0FycmF5KGRhdGEuUmVzdWx0KSAmJlxuXHRcdFx0XHQxIDwgZGF0YS5SZXN1bHQubGVuZ3RoICYmXG5cdFx0XHRcdGlzUG9zTnVtZXJpYyhkYXRhLlJlc3VsdFswXSwgdHJ1ZSkgJiZcblx0XHRcdFx0aXNQb3NOdW1lcmljKGRhdGEuUmVzdWx0WzFdLCB0cnVlKVxuXHRcdFx0KSB7XG5cdFx0XHRcdFF1b3RhU3RvcmUucG9wdWxhdGVEYXRhKHBJbnQoZGF0YS5SZXN1bHRbMV0pLCBwSW50KGRhdGEuUmVzdWx0WzBdKSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IGZvbGRlclxuXHQgKiBAcGFyYW0ge0FycmF5PX0gbGlzdCA9IFtdXG5cdCAqL1xuXHRmb2xkZXJJbmZvcm1hdGlvbihmb2xkZXIsIGxpc3QpIHtcblx0XHRpZiAoJycgIT09IHRyaW0oZm9sZGVyKSkge1xuXHRcdFx0UmVtb3RlLmZvbGRlckluZm9ybWF0aW9uKFxuXHRcdFx0XHQocmVzdWx0LCBkYXRhKSA9PiB7XG5cdFx0XHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCkge1xuXHRcdFx0XHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5SZXN1bHQgJiYgZGF0YS5SZXN1bHQuSGFzaCAmJiBkYXRhLlJlc3VsdC5Gb2xkZXIpIHtcblx0XHRcdFx0XHRcdFx0bGV0IHVpZCA9ICcnLFxuXHRcdFx0XHRcdFx0XHRcdGNoZWNrID0gZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0dW5yZWFkQ291bnRDaGFuZ2UgPSBmYWxzZTtcblxuXHRcdFx0XHRcdFx0XHRjb25zdCBmb2xkZXJGcm9tQ2FjaGUgPSBnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0KGRhdGEuUmVzdWx0LkZvbGRlcik7XG5cdFx0XHRcdFx0XHRcdGlmIChmb2xkZXJGcm9tQ2FjaGUpIHtcblx0XHRcdFx0XHRcdFx0XHRmb2xkZXJGcm9tQ2FjaGUuaW50ZXJ2YWwgPSBtb21lbnROb3dVbml4KCk7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoZGF0YS5SZXN1bHQuSGFzaCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0c2V0Rm9sZGVySGFzaChkYXRhLlJlc3VsdC5Gb2xkZXIsIGRhdGEuUmVzdWx0Lkhhc2gpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGlmIChpc05vcm1hbChkYXRhLlJlc3VsdC5NZXNzYWdlQ291bnQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb2xkZXJGcm9tQ2FjaGUubWVzc2FnZUNvdW50QWxsKGRhdGEuUmVzdWx0Lk1lc3NhZ2VDb3VudCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGlzTm9ybWFsKGRhdGEuUmVzdWx0Lk1lc3NhZ2VVbnNlZW5Db3VudCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChwSW50KGZvbGRlckZyb21DYWNoZS5tZXNzYWdlQ291bnRVbnJlYWQoKSkgIT09IHBJbnQoZGF0YS5SZXN1bHQuTWVzc2FnZVVuc2VlbkNvdW50KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1bnJlYWRDb3VudENoYW5nZSA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdGZvbGRlckZyb21DYWNoZS5tZXNzYWdlQ291bnRVbnJlYWQoZGF0YS5SZXN1bHQuTWVzc2FnZVVuc2VlbkNvdW50KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAodW5yZWFkQ291bnRDaGFuZ2UpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNsZWFyTWVzc2FnZUZsYWdzRnJvbUNhY2hlQnlGb2xkZXIoZm9sZGVyRnJvbUNhY2hlLmZ1bGxOYW1lUmF3KTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoZGF0YS5SZXN1bHQuRmxhZ3MpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodWlkIGluIGRhdGEuUmVzdWx0LkZsYWdzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChoYXMoZGF0YS5SZXN1bHQuRmxhZ3MsIHVpZCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjaGVjayA9IHRydWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc3QgZmxhZ3MgPSBkYXRhLlJlc3VsdC5GbGFnc1t1aWRdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZUJ5Rm9sZGVyQW5kVWlkKGZvbGRlckZyb21DYWNoZS5mdWxsTmFtZVJhdywgdWlkLnRvU3RyaW5nKCksIFtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCFmbGFncy5Jc1NlZW4sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhIWZsYWdzLklzRmxhZ2dlZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCEhZmxhZ3MuSXNBbnN3ZXJlZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCEhZmxhZ3MuSXNGb3J3YXJkZWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQhIWZsYWdzLklzUmVhZFJlY2VpcHRcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2hlY2spIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZWxvYWRGbGFnc0N1cnJlbnRNZXNzYWdlTGlzdEFuZE1lc3NhZ2VGcm9tQ2FjaGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRNZXNzYWdlU3RvcmUuaW5pdFVpZE5leHRBbmROZXdNZXNzYWdlcyhcblx0XHRcdFx0XHRcdFx0XHRcdGZvbGRlckZyb21DYWNoZS5mdWxsTmFtZVJhdyxcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGEuUmVzdWx0LlVpZE5leHQsXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhLlJlc3VsdC5OZXdNZXNzYWdlc1xuXHRcdFx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdFx0XHRjb25zdCBoYXNoID0gZ2V0Rm9sZGVySGFzaChkYXRhLlJlc3VsdC5Gb2xkZXIpO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChkYXRhLlJlc3VsdC5IYXNoICE9PSBoYXNoIHx8ICcnID09PSBoYXNoIHx8IHVucmVhZENvdW50Q2hhbmdlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoZm9sZGVyRnJvbUNhY2hlLmZ1bGxOYW1lUmF3ID09PSBGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnJlbG9hZE1lc3NhZ2VMaXN0KCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGdldEZvbGRlckluYm94TmFtZSgpID09PSBmb2xkZXJGcm9tQ2FjaGUuZnVsbE5hbWVSYXcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZWNhY2hlSW5ib3hNZXNzYWdlTGlzdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSxcblx0XHRcdFx0Zm9sZGVyLFxuXHRcdFx0XHRsaXN0XG5cdFx0XHQpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW49fSBib290ID0gZmFsc2Vcblx0ICovXG5cdGZvbGRlckluZm9ybWF0aW9uTXVsdGlwbHkoYm9vdCA9IGZhbHNlKSB7XG5cdFx0Y29uc3QgZm9sZGVycyA9IEZvbGRlclN0b3JlLmdldE5leHRGb2xkZXJOYW1lcygpO1xuXHRcdGlmIChpc05vbkVtcHR5QXJyYXkoZm9sZGVycykpIHtcblx0XHRcdFJlbW90ZS5mb2xkZXJJbmZvcm1hdGlvbk11bHRpcGx5KChzUmVzdWx0LCBvRGF0YSkgPT4ge1xuXHRcdFx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gc1Jlc3VsdCkge1xuXHRcdFx0XHRcdGlmIChvRGF0YSAmJiBvRGF0YS5SZXN1bHQgJiYgb0RhdGEuUmVzdWx0Lkxpc3QgJiYgaXNOb25FbXB0eUFycmF5KG9EYXRhLlJlc3VsdC5MaXN0KSkge1xuXHRcdFx0XHRcdFx0Y29uc3QgdXRjID0gbW9tZW50Tm93VW5peCgpO1xuXHRcdFx0XHRcdFx0Xy5lYWNoKG9EYXRhLlJlc3VsdC5MaXN0LCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBoYXNoID0gZ2V0Rm9sZGVySGFzaChpdGVtLkZvbGRlciksXG5cdFx0XHRcdFx0XHRcdFx0Zm9sZGVyID0gZ2V0Rm9sZGVyRnJvbUNhY2hlTGlzdChpdGVtLkZvbGRlcik7XG5cdFx0XHRcdFx0XHRcdGxldCB1bnJlYWRDb3VudENoYW5nZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRcdGlmIChmb2xkZXIpIHtcblx0XHRcdFx0XHRcdFx0XHRmb2xkZXIuaW50ZXJ2YWwgPSB1dGM7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoaXRlbS5IYXNoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRzZXRGb2xkZXJIYXNoKGl0ZW0uRm9sZGVyLCBpdGVtLkhhc2gpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGlmIChpc05vcm1hbChpdGVtLk1lc3NhZ2VDb3VudCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvbGRlci5tZXNzYWdlQ291bnRBbGwoaXRlbS5NZXNzYWdlQ291bnQpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdGlmIChpc05vcm1hbChpdGVtLk1lc3NhZ2VVbnNlZW5Db3VudCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChwSW50KGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoKSkgIT09IHBJbnQoaXRlbS5NZXNzYWdlVW5zZWVuQ291bnQpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVucmVhZENvdW50Q2hhbmdlID0gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZChpdGVtLk1lc3NhZ2VVbnNlZW5Db3VudCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHVucmVhZENvdW50Q2hhbmdlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRjbGVhck1lc3NhZ2VGbGFnc0Zyb21DYWNoZUJ5Rm9sZGVyKGZvbGRlci5mdWxsTmFtZVJhdyk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGl0ZW0uSGFzaCAhPT0gaGFzaCB8fCAnJyA9PT0gaGFzaCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGZvbGRlci5mdWxsTmFtZVJhdyA9PT0gRm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lUmF3KCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5yZWxvYWRNZXNzYWdlTGlzdCgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAodW5yZWFkQ291bnRDaGFuZ2UpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChmb2xkZXIuZnVsbE5hbWVSYXcgPT09IEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnN0IGxpc3QgPSBNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3QoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGlzTm9uRW1wdHlBcnJheShsaXN0KSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZm9sZGVySW5mb3JtYXRpb24oZm9sZGVyLmZ1bGxOYW1lUmF3LCBsaXN0KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdGlmIChib290KSB7XG5cdFx0XHRcdFx0XHRcdF8uZGVsYXkoKCkgPT4gdGhpcy5mb2xkZXJJbmZvcm1hdGlvbk11bHRpcGx5KHRydWUpLCAyMDAwKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0sIGZvbGRlcnMpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0ZvbGRlckZ1bGxOYW1lUmF3XG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBpU2V0QWN0aW9uXG5cdCAqIEBwYXJhbSB7QXJyYXk9fSBtZXNzYWdlcyA9IG51bGxcblx0ICovXG5cdG1lc3NhZ2VMaXN0QWN0aW9uKHNGb2xkZXJGdWxsTmFtZVJhdywgaVNldEFjdGlvbiwgbWVzc2FnZXMpIHtcblx0XHRsZXQgZm9sZGVyID0gbnVsbCxcblx0XHRcdGFscmVhZHlVbnJlYWQgPSAwLFxuXHRcdFx0cm9vdFVpZHMgPSBbXTtcblxuXHRcdGlmIChpc1VuZChtZXNzYWdlcykgfHwgIW1lc3NhZ2VzKSB7XG5cdFx0XHRtZXNzYWdlcyA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWQoKTtcblx0XHR9XG5cblx0XHRyb290VWlkcyA9IF8udW5pcShfLmNvbXBhY3QoXy5tYXAobWVzc2FnZXMsIChvTWVzc2FnZSkgPT4gKG9NZXNzYWdlICYmIG9NZXNzYWdlLnVpZCA/IG9NZXNzYWdlLnVpZCA6IG51bGwpKSkpO1xuXG5cdFx0aWYgKCcnICE9PSBzRm9sZGVyRnVsbE5hbWVSYXcgJiYgMCA8IHJvb3RVaWRzLmxlbmd0aCkge1xuXHRcdFx0c3dpdGNoIChpU2V0QWN0aW9uKSB7XG5cdFx0XHRcdGNhc2UgTWVzc2FnZVNldEFjdGlvbi5TZXRTZWVuOlxuXHRcdFx0XHRcdF8uZWFjaChyb290VWlkcywgKHNTdWJVaWQpID0+IHtcblx0XHRcdFx0XHRcdGFscmVhZHlVbnJlYWQgKz0gc3RvcmVNZXNzYWdlRmxhZ3NUb0NhY2hlQnlTZXRBY3Rpb24oc0ZvbGRlckZ1bGxOYW1lUmF3LCBzU3ViVWlkLCBpU2V0QWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3Qoc0ZvbGRlckZ1bGxOYW1lUmF3KTtcblx0XHRcdFx0XHRpZiAoZm9sZGVyKSB7XG5cdFx0XHRcdFx0XHRmb2xkZXIubWVzc2FnZUNvdW50VW5yZWFkKGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoKSAtIGFscmVhZHlVbnJlYWQpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFJlbW90ZS5tZXNzYWdlU2V0U2Vlbihub29wLCBzRm9sZGVyRnVsbE5hbWVSYXcsIHJvb3RVaWRzLCB0cnVlKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIE1lc3NhZ2VTZXRBY3Rpb24uVW5zZXRTZWVuOlxuXHRcdFx0XHRcdF8uZWFjaChyb290VWlkcywgKHNTdWJVaWQpID0+IHtcblx0XHRcdFx0XHRcdGFscmVhZHlVbnJlYWQgKz0gc3RvcmVNZXNzYWdlRmxhZ3NUb0NhY2hlQnlTZXRBY3Rpb24oc0ZvbGRlckZ1bGxOYW1lUmF3LCBzU3ViVWlkLCBpU2V0QWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3Qoc0ZvbGRlckZ1bGxOYW1lUmF3KTtcblx0XHRcdFx0XHRpZiAoZm9sZGVyKSB7XG5cdFx0XHRcdFx0XHRmb2xkZXIubWVzc2FnZUNvdW50VW5yZWFkKGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoKSAtIGFscmVhZHlVbnJlYWQgKyByb290VWlkcy5sZW5ndGgpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFJlbW90ZS5tZXNzYWdlU2V0U2Vlbihub29wLCBzRm9sZGVyRnVsbE5hbWVSYXcsIHJvb3RVaWRzLCBmYWxzZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cblx0XHRcdFx0Y2FzZSBNZXNzYWdlU2V0QWN0aW9uLlNldEZsYWc6XG5cdFx0XHRcdFx0Xy5lYWNoKHJvb3RVaWRzLCAoc1N1YlVpZCkgPT4ge1xuXHRcdFx0XHRcdFx0c3RvcmVNZXNzYWdlRmxhZ3NUb0NhY2hlQnlTZXRBY3Rpb24oc0ZvbGRlckZ1bGxOYW1lUmF3LCBzU3ViVWlkLCBpU2V0QWN0aW9uKTtcblx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFJlbW90ZS5tZXNzYWdlU2V0RmxhZ2dlZChub29wLCBzRm9sZGVyRnVsbE5hbWVSYXcsIHJvb3RVaWRzLCB0cnVlKTtcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIE1lc3NhZ2VTZXRBY3Rpb24uVW5zZXRGbGFnOlxuXHRcdFx0XHRcdF8uZWFjaChyb290VWlkcywgKHNTdWJVaWQpID0+IHtcblx0XHRcdFx0XHRcdHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZUJ5U2V0QWN0aW9uKHNGb2xkZXJGdWxsTmFtZVJhdywgc1N1YlVpZCwgaVNldEFjdGlvbik7XG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRSZW1vdGUubWVzc2FnZVNldEZsYWdnZWQobm9vcCwgc0ZvbGRlckZ1bGxOYW1lUmF3LCByb290VWlkcywgZmFsc2UpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucmVsb2FkRmxhZ3NDdXJyZW50TWVzc2FnZUxpc3RBbmRNZXNzYWdlRnJvbUNhY2hlKCk7XG5cdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZS52aWV3VHJpZ2dlcighTWVzc2FnZVN0b3JlLm1lc3NhZ2Uudmlld1RyaWdnZXIoKSk7XG5cdFx0fVxuXHR9XG5cblx0Z29vZ2xlQ29ubmVjdCgpIHtcblx0XHR3aW5kb3cub3Blbihcblx0XHRcdHNvY2lhbEdvb2dsZSgpLFxuXHRcdFx0J0dvb2dsZScsXG5cdFx0XHQnbGVmdD0yMDAsdG9wPTEwMCx3aWR0aD02NTAsaGVpZ2h0PTYwMCxtZW51YmFyPW5vLHN0YXR1cz1ubyxyZXNpemFibGU9eWVzLHNjcm9sbGJhcnM9eWVzJ1xuXHRcdCk7XG5cdH1cblxuXHR0d2l0dGVyQ29ubmVjdCgpIHtcblx0XHR3aW5kb3cub3Blbihcblx0XHRcdHNvY2lhbFR3aXR0ZXIoKSxcblx0XHRcdCdUd2l0dGVyJyxcblx0XHRcdCdsZWZ0PTIwMCx0b3A9MTAwLHdpZHRoPTY1MCxoZWlnaHQ9MzUwLG1lbnViYXI9bm8sc3RhdHVzPW5vLHJlc2l6YWJsZT15ZXMsc2Nyb2xsYmFycz15ZXMnXG5cdFx0KTtcblx0fVxuXG5cdGZhY2Vib29rQ29ubmVjdCgpIHtcblx0XHR3aW5kb3cub3Blbihcblx0XHRcdHNvY2lhbEZhY2Vib29rKCksXG5cdFx0XHQnRmFjZWJvb2snLFxuXHRcdFx0J2xlZnQ9MjAwLHRvcD0xMDAsd2lkdGg9NjUwLGhlaWdodD0zMzUsbWVudWJhcj1ubyxzdGF0dXM9bm8scmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllcydcblx0XHQpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGZpcmVBbGxBY3Rpb25zID0gZmFsc2Vcblx0ICovXG5cdHNvY2lhbFVzZXJzKGZpcmVBbGxBY3Rpb25zID0gZmFsc2UpIHtcblx0XHRpZiAodHJ1ZSA9PT0gZmlyZUFsbEFjdGlvbnMpIHtcblx0XHRcdFNvY2lhbFN0b3JlLmdvb2dsZS5sb2FkaW5nKHRydWUpO1xuXHRcdFx0U29jaWFsU3RvcmUuZmFjZWJvb2subG9hZGluZyh0cnVlKTtcblx0XHRcdFNvY2lhbFN0b3JlLnR3aXR0ZXIubG9hZGluZyh0cnVlKTtcblx0XHR9XG5cblx0XHRSZW1vdGUuc29jaWFsVXNlcnMoKHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdFNvY2lhbFN0b3JlLmdvb2dsZS51c2VyTmFtZShkYXRhLlJlc3VsdC5Hb29nbGUgfHwgJycpO1xuXHRcdFx0XHRTb2NpYWxTdG9yZS5mYWNlYm9vay51c2VyTmFtZShkYXRhLlJlc3VsdC5GYWNlYm9vayB8fCAnJyk7XG5cdFx0XHRcdFNvY2lhbFN0b3JlLnR3aXR0ZXIudXNlck5hbWUoZGF0YS5SZXN1bHQuVHdpdHRlciB8fCAnJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRTb2NpYWxTdG9yZS5nb29nbGUudXNlck5hbWUoJycpO1xuXHRcdFx0XHRTb2NpYWxTdG9yZS5mYWNlYm9vay51c2VyTmFtZSgnJyk7XG5cdFx0XHRcdFNvY2lhbFN0b3JlLnR3aXR0ZXIudXNlck5hbWUoJycpO1xuXHRcdFx0fVxuXG5cdFx0XHRTb2NpYWxTdG9yZS5nb29nbGUubG9hZGluZyhmYWxzZSk7XG5cdFx0XHRTb2NpYWxTdG9yZS5mYWNlYm9vay5sb2FkaW5nKGZhbHNlKTtcblx0XHRcdFNvY2lhbFN0b3JlLnR3aXR0ZXIubG9hZGluZyhmYWxzZSk7XG5cdFx0fSk7XG5cdH1cblxuXHRnb29nbGVEaXNjb25uZWN0KCkge1xuXHRcdFNvY2lhbFN0b3JlLmdvb2dsZS5sb2FkaW5nKHRydWUpO1xuXHRcdFJlbW90ZS5nb29nbGVEaXNjb25uZWN0KHRoaXMuc29jaWFsVXNlcnMpO1xuXHR9XG5cblx0ZmFjZWJvb2tEaXNjb25uZWN0KCkge1xuXHRcdFNvY2lhbFN0b3JlLmZhY2Vib29rLmxvYWRpbmcodHJ1ZSk7XG5cdFx0UmVtb3RlLmZhY2Vib29rRGlzY29ubmVjdCh0aGlzLnNvY2lhbFVzZXJzKTtcblx0fVxuXG5cdHR3aXR0ZXJEaXNjb25uZWN0KCkge1xuXHRcdFNvY2lhbFN0b3JlLnR3aXR0ZXIubG9hZGluZyh0cnVlKTtcblx0XHRSZW1vdGUudHdpdHRlckRpc2Nvbm5lY3QodGhpcy5zb2NpYWxVc2Vycyk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHF1ZXJ5XG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGF1dG9jb21wbGV0ZUNhbGxiYWNrXG5cdCAqL1xuXHRnZXRBdXRvY29tcGxldGUocXVlcnksIGF1dG9jb21wbGV0ZUNhbGxiYWNrKSB7XG5cdFx0UmVtb3RlLnN1Z2dlc3Rpb25zKChyZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSByZXN1bHQgJiYgZGF0YSAmJiBpc0FycmF5KGRhdGEuUmVzdWx0KSkge1xuXHRcdFx0XHRhdXRvY29tcGxldGVDYWxsYmFjayhcblx0XHRcdFx0XHRfLmNvbXBhY3QoXy5tYXAoZGF0YS5SZXN1bHQsIChpdGVtKSA9PiAoaXRlbSAmJiBpdGVtWzBdID8gbmV3IEVtYWlsTW9kZWwoaXRlbVswXSwgaXRlbVsxXSkgOiBudWxsKSkpXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2UgaWYgKFN0b3JhZ2VSZXN1bHRUeXBlLkFib3J0ICE9PSByZXN1bHQpIHtcblx0XHRcdFx0YXV0b2NvbXBsZXRlQ2FsbGJhY2soW10pO1xuXHRcdFx0fVxuXHRcdH0sIHF1ZXJ5KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0Z1bGxOYW1lSGFzaFxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IGJFeHBhbmRlZFxuXHQgKi9cblx0c2V0RXhwYW5kZWRGb2xkZXIoc0Z1bGxOYW1lSGFzaCwgYkV4cGFuZGVkKSB7XG5cdFx0bGV0IGFFeHBhbmRlZExpc3QgPSBMb2NhbC5nZXQoQ2xpZW50U2lkZUtleU5hbWUuRXhwYW5kZWRGb2xkZXJzKTtcblx0XHRpZiAoIWlzQXJyYXkoYUV4cGFuZGVkTGlzdCkpIHtcblx0XHRcdGFFeHBhbmRlZExpc3QgPSBbXTtcblx0XHR9XG5cblx0XHRpZiAoYkV4cGFuZGVkKSB7XG5cdFx0XHRhRXhwYW5kZWRMaXN0LnB1c2goc0Z1bGxOYW1lSGFzaCk7XG5cdFx0XHRhRXhwYW5kZWRMaXN0ID0gXy51bmlxKGFFeHBhbmRlZExpc3QpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRhRXhwYW5kZWRMaXN0ID0gXy53aXRob3V0KGFFeHBhbmRlZExpc3QsIHNGdWxsTmFtZUhhc2gpO1xuXHRcdH1cblxuXHRcdExvY2FsLnNldChDbGllbnRTaWRlS2V5TmFtZS5FeHBhbmRlZEZvbGRlcnMsIGFFeHBhbmRlZExpc3QpO1xuXHR9XG5cblx0aW5pdEhvcml6b250YWxMYXlvdXRSZXNpemVyKHNDbGllbnRTaWRlS2V5TmFtZSkge1xuXHRcdGxldCB0b3AgPSBudWxsLFxuXHRcdFx0Ym90dG9tID0gbnVsbDtcblxuXHRcdGNvbnN0IG1pbkhlaWdodCA9IDIwMCxcblx0XHRcdG1heEhlaWdodCA9IDUwMCxcblx0XHRcdGZTZXRIZWlnaHQgPSAoaGVpZ2h0KSA9PiB7XG5cdFx0XHRcdGlmIChoZWlnaHQpIHtcblx0XHRcdFx0XHRpZiAodG9wKSB7XG5cdFx0XHRcdFx0XHR0b3AuYXR0cignc3R5bGUnLCAnaGVpZ2h0OicgKyBoZWlnaHQgKyAncHgnKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoYm90dG9tKSB7XG5cdFx0XHRcdFx0XHRib3R0b20uYXR0cignc3R5bGUnLCAndG9wOicgKyAoNTUgLyogdG9wIHRvb2xiYXIgKi8gKyBoZWlnaHQpICsgJ3B4Jyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZlJlc2l6ZUNyZWF0ZUZ1bmN0aW9uID0gKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudCAmJiBldmVudC50YXJnZXQpIHtcblx0XHRcdFx0XHQkKGV2ZW50LnRhcmdldClcblx0XHRcdFx0XHRcdC5maW5kKCcudWktcmVzaXphYmxlLWhhbmRsZScpXG5cdFx0XHRcdFx0XHQub24oJ21vdXNlZG93bicsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0JGh0bWwuYWRkQ2xhc3MoJ3JsLXJlc2l6ZXInKTtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHQub24oJ21vdXNldXAnLCAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdCRodG1sLnJlbW92ZUNsYXNzKCdybC1yZXNpemVyJyk7XG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblx0XHRcdGZSZXNpemVTdGFydEZ1bmN0aW9uID0gKCkgPT4ge1xuXHRcdFx0XHQkaHRtbC5hZGRDbGFzcygncmwtcmVzaXplcicpO1xuXHRcdFx0fSxcblx0XHRcdGZSZXNpemVSZXNpemVGdW5jdGlvbiA9IF8uZGVib3VuY2UoXG5cdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHQkaHRtbC5hZGRDbGFzcygncmwtcmVzaXplcicpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQ1MDAsXG5cdFx0XHRcdHRydWVcblx0XHRcdCksXG5cdFx0XHRmUmVzaXplU3RvcEZ1bmN0aW9uID0gKG9FdmVudCwgb09iamVjdCkgPT4ge1xuXHRcdFx0XHQkaHRtbC5yZW1vdmVDbGFzcygncmwtcmVzaXplcicpO1xuXHRcdFx0XHRpZiAob09iamVjdCAmJiBvT2JqZWN0LnNpemUgJiYgb09iamVjdC5zaXplLmhlaWdodCkge1xuXHRcdFx0XHRcdExvY2FsLnNldChzQ2xpZW50U2lkZUtleU5hbWUsIG9PYmplY3Quc2l6ZS5oZWlnaHQpO1xuXG5cdFx0XHRcdFx0ZlNldEhlaWdodChvT2JqZWN0LnNpemUuaGVpZ2h0KTtcblxuXHRcdFx0XHRcdHdpbmRvd1Jlc2l6ZSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0b09wdGlvbnMgPSB7XG5cdFx0XHRcdGhlbHBlcjogJ3VpLXJlc2l6YWJsZS1oZWxwZXItaCcsXG5cdFx0XHRcdG1pbkhlaWdodDogbWluSGVpZ2h0LFxuXHRcdFx0XHRtYXhIZWlnaHQ6IG1heEhlaWdodCxcblx0XHRcdFx0aGFuZGxlczogJ3MnLFxuXHRcdFx0XHRjcmVhdGU6IGZSZXNpemVDcmVhdGVGdW5jdGlvbixcblx0XHRcdFx0cmVzaXplOiBmUmVzaXplUmVzaXplRnVuY3Rpb24sXG5cdFx0XHRcdHN0YXJ0OiBmUmVzaXplU3RhcnRGdW5jdGlvbixcblx0XHRcdFx0c3RvcDogZlJlc2l6ZVN0b3BGdW5jdGlvblxuXHRcdFx0fSxcblx0XHRcdGZEaXNhYmxlID0gKGJEaXNhYmxlKSA9PiB7XG5cdFx0XHRcdGlmIChiRGlzYWJsZSkge1xuXHRcdFx0XHRcdGlmICh0b3AgJiYgdG9wLmhhc0NsYXNzKCd1aS1yZXNpemFibGUnKSkge1xuXHRcdFx0XHRcdFx0dG9wLnJlc2l6YWJsZSgnZGVzdHJveScpLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGJvdHRvbSkge1xuXHRcdFx0XHRcdFx0Ym90dG9tLnJlbW92ZUF0dHIoJ3N0eWxlJyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2UgaWYgKCRodG1sLmhhc0NsYXNzKCdybC1ib3R0b20tcHJldmlldy1wYW5lJykpIHtcblx0XHRcdFx0XHR0b3AgPSAkKCcuYi1tZXNzYWdlLWxpc3Qtd3JhcHBlcicpO1xuXHRcdFx0XHRcdGJvdHRvbSA9ICQoJy5iLW1lc3NhZ2Utdmlldy13cmFwcGVyJyk7XG5cblx0XHRcdFx0XHRpZiAoIXRvcC5oYXNDbGFzcygndWktcmVzaXphYmxlJykpIHtcblx0XHRcdFx0XHRcdHRvcC5yZXNpemFibGUob09wdGlvbnMpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGNvbnN0IGlIZWlnaHQgPSBwSW50KExvY2FsLmdldChzQ2xpZW50U2lkZUtleU5hbWUpKSB8fCAzMDA7XG5cdFx0XHRcdFx0ZlNldEhlaWdodChpSGVpZ2h0ID4gbWluSGVpZ2h0ID8gaUhlaWdodCA6IG1pbkhlaWdodCk7XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cblx0XHRmRGlzYWJsZShmYWxzZSk7XG5cblx0XHRFdmVudHMuc3ViKCdsYXlvdXQnLCAobGF5b3V0KSA9PiB7XG5cdFx0XHRmRGlzYWJsZShMYXlvdXQuQm90dG9tUHJldmlldyAhPT0gbGF5b3V0KTtcblx0XHR9KTtcblx0fVxuXG5cdGluaXRWZXJ0aWNhbExheW91dFJlc2l6ZXIoc0NsaWVudFNpZGVLZXlOYW1lKSB7XG5cdFx0Y29uc3QgZGlzYWJsZWRXaWR0aCA9IDYwLFxuXHRcdFx0bWluV2lkdGggPSAxNTUsXG5cdFx0XHRsTGVmdCA9ICQoJyNybC1sZWZ0JyksXG5cdFx0XHRyaWdodCA9ICQoJyNybC1yaWdodCcpLFxuXHRcdFx0bUxlZnRXaWR0aCA9IExvY2FsLmdldChzQ2xpZW50U2lkZUtleU5hbWUpIHx8IG51bGwsXG5cdFx0XHRmU2V0V2lkdGggPSAoaVdpZHRoKSA9PiB7XG5cdFx0XHRcdGlmIChpV2lkdGgpIHtcblx0XHRcdFx0XHRsZWZ0UGFuZWxXaWR0aChpV2lkdGgpO1xuXG5cdFx0XHRcdFx0JGh0bWwucmVtb3ZlQ2xhc3MoJ3JsLXJlc2l6ZXInKTtcblxuXHRcdFx0XHRcdGxMZWZ0LmNzcyh7XG5cdFx0XHRcdFx0XHR3aWR0aDogJycgKyBpV2lkdGggKyAncHgnXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRyaWdodC5jc3Moe1xuXHRcdFx0XHRcdFx0bGVmdDogJycgKyBpV2lkdGggKyAncHgnXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRmRGlzYWJsZSA9IChiRGlzYWJsZSkgPT4ge1xuXHRcdFx0XHRpZiAoYkRpc2FibGUpIHtcblx0XHRcdFx0XHRsTGVmdC5yZXNpemFibGUoJ2Rpc2FibGUnKTtcblx0XHRcdFx0XHRmU2V0V2lkdGgoZGlzYWJsZWRXaWR0aCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0bExlZnQucmVzaXphYmxlKCdlbmFibGUnKTtcblx0XHRcdFx0XHRjb25zdCB3aWR0aCA9IHBJbnQoTG9jYWwuZ2V0KHNDbGllbnRTaWRlS2V5TmFtZSkpIHx8IG1pbldpZHRoO1xuXHRcdFx0XHRcdGZTZXRXaWR0aCh3aWR0aCA+IG1pbldpZHRoID8gd2lkdGggOiBtaW5XaWR0aCk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRmUmVzaXplQ3JlYXRlRnVuY3Rpb24gPSAoZXZlbnQpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCkge1xuXHRcdFx0XHRcdCQoZXZlbnQudGFyZ2V0KVxuXHRcdFx0XHRcdFx0LmZpbmQoJy51aS1yZXNpemFibGUtaGFuZGxlJylcblx0XHRcdFx0XHRcdC5vbignbW91c2Vkb3duJywgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHQkaHRtbC5hZGRDbGFzcygncmwtcmVzaXplcicpO1xuXHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdC5vbignbW91c2V1cCcsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0JGh0bWwucmVtb3ZlQ2xhc3MoJ3JsLXJlc2l6ZXInKTtcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0ZlJlc2l6ZVJlc2l6ZUZ1bmN0aW9uID0gXy5kZWJvdW5jZShcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdCRodG1sLmFkZENsYXNzKCdybC1yZXNpemVyJyk7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdDUwMCxcblx0XHRcdFx0dHJ1ZVxuXHRcdFx0KSxcblx0XHRcdGZSZXNpemVTdGFydEZ1bmN0aW9uID0gKCkgPT4ge1xuXHRcdFx0XHQkaHRtbC5hZGRDbGFzcygncmwtcmVzaXplcicpO1xuXHRcdFx0fSxcblx0XHRcdGZSZXNpemVTdG9wRnVuY3Rpb24gPSAoZXZlbnQsIG9iaikgPT4ge1xuXHRcdFx0XHQkaHRtbC5yZW1vdmVDbGFzcygncmwtcmVzaXplcicpO1xuXHRcdFx0XHRpZiAob2JqICYmIG9iai5zaXplICYmIG9iai5zaXplLndpZHRoKSB7XG5cdFx0XHRcdFx0TG9jYWwuc2V0KHNDbGllbnRTaWRlS2V5TmFtZSwgb2JqLnNpemUud2lkdGgpO1xuXG5cdFx0XHRcdFx0bGVmdFBhbmVsV2lkdGgob2JqLnNpemUud2lkdGgpO1xuXG5cdFx0XHRcdFx0cmlnaHQuY3NzKHtcblx0XHRcdFx0XHRcdGxlZnQ6ICcnICsgb2JqLnNpemUud2lkdGggKyAncHgnXG5cdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRsTGVmdC5jc3Moe1xuXHRcdFx0XHRcdFx0cG9zaXRpb246ICcnLFxuXHRcdFx0XHRcdFx0dG9wOiAnJyxcblx0XHRcdFx0XHRcdGxlZnQ6ICcnLFxuXHRcdFx0XHRcdFx0aGVpZ2h0OiAnJ1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0aWYgKG51bGwgIT09IG1MZWZ0V2lkdGgpIHtcblx0XHRcdGZTZXRXaWR0aChtTGVmdFdpZHRoID4gbWluV2lkdGggPyBtTGVmdFdpZHRoIDogbWluV2lkdGgpO1xuXHRcdH1cblxuXHRcdGxMZWZ0LnJlc2l6YWJsZSh7XG5cdFx0XHRoZWxwZXI6ICd1aS1yZXNpemFibGUtaGVscGVyLXcnLFxuXHRcdFx0bWluV2lkdGg6IG1pbldpZHRoLFxuXHRcdFx0bWF4V2lkdGg6IE1hZ2ljcy5TaXplMzUwcHgsXG5cdFx0XHRoYW5kbGVzOiAnZScsXG5cdFx0XHRjcmVhdGU6IGZSZXNpemVDcmVhdGVGdW5jdGlvbixcblx0XHRcdHJlc2l6ZTogZlJlc2l6ZVJlc2l6ZUZ1bmN0aW9uLFxuXHRcdFx0c3RhcnQ6IGZSZXNpemVTdGFydEZ1bmN0aW9uLFxuXHRcdFx0c3RvcDogZlJlc2l6ZVN0b3BGdW5jdGlvblxuXHRcdH0pO1xuXG5cdFx0RXZlbnRzLnN1YignbGVmdC1wYW5lbC5vZmYnLCAoKSA9PiB7XG5cdFx0XHRmRGlzYWJsZSh0cnVlKTtcblx0XHR9KTtcblxuXHRcdEV2ZW50cy5zdWIoJ2xlZnQtcGFuZWwub24nLCAoKSA9PiB7XG5cdFx0XHRmRGlzYWJsZShmYWxzZSk7XG5cdFx0fSk7XG5cdH1cblxuXHRsb2dvdXQoKSB7XG5cdFx0UmVtb3RlLmxvZ291dCgoKSA9PiB7XG5cdFx0XHR0aGlzLmxvZ2luQW5kTG9nb3V0UmVsb2FkKFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1BhcmVudEVtYWlsJykgJiYgMCA8IFNldHRpbmdzLnNldHRpbmdzR2V0KCdQYXJlbnRFbWFpbCcpLmxlbmd0aFxuXHRcdFx0KTtcblx0XHR9KTtcblx0fVxuXG5cdGJvb3RzdGFydFR3b0ZhY3RvclNjcmVlbigpIHtcblx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Ud29GYWN0b3JDb25maWd1cmF0aW9uJyksIFt0cnVlXSk7XG5cdH1cblxuXHRib290c3RhcnRXZWxjb21lUG9wdXAodXJsKSB7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvV2VsY29tZVBhZ2UnKSwgW3VybF0pO1xuXHR9XG5cblx0Ym9vdHN0YXJ0TG9naW5TY3JlZW4oKSB7XG5cdFx0JGh0bWwucmVtb3ZlQ2xhc3MoJ3JsLXVzZXItYXV0aCcpLmFkZENsYXNzKCdybC11c2VyLW5vLWF1dGgnKTtcblxuXHRcdGNvbnN0IGN1c3RvbUxvZ2luTGluayA9IHBTdHJpbmcoU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2N1c3RvbUxvZ2luTGluaycpKTtcblx0XHRpZiAoIWN1c3RvbUxvZ2luTGluaykge1xuXHRcdFx0c3RhcnRTY3JlZW5zKFtMb2dpblVzZXJTY3JlZW5dKTtcblxuXHRcdFx0cnVuSG9vaygncmwtc3RhcnQtbG9naW4tc2NyZWVucycpO1xuXHRcdFx0RXZlbnRzLnB1YigncmwuYm9vdHN0YXJ0LWxvZ2luLXNjcmVlbnMnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cm91dGVPZmYoKTtcblx0XHRcdHNldEhhc2gocm9vdCgpLCB0cnVlKTtcblx0XHRcdHJvdXRlT2ZmKCk7XG5cblx0XHRcdF8uZGVmZXIoKCkgPT4ge1xuXHRcdFx0XHR3aW5kb3cubG9jYXRpb24uaHJlZiA9IGN1c3RvbUxvZ2luTGluaztcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGJvb3RlbmQoKSB7XG5cdFx0aWYgKHByb2dyZXNzSnMpIHtcblx0XHRcdHByb2dyZXNzSnMuc2V0KDEwMCkuZW5kKCk7XG5cdFx0fVxuXHRcdGhpZGVMb2FkaW5nKCk7XG5cdH1cblxuXHRib290c3RhcnQoKSB7XG5cdFx0c3VwZXIuYm9vdHN0YXJ0KCk7XG5cblx0XHRBcHBTdG9yZS5wb3B1bGF0ZSgpO1xuXHRcdFNldHRpbmdzU3RvcmUucG9wdWxhdGUoKTtcblx0XHROb3RpZmljYXRpb25TdG9yZS5wb3B1bGF0ZSgpO1xuXHRcdEFjY291bnRTdG9yZS5wb3B1bGF0ZSgpO1xuXHRcdENvbnRhY3RTdG9yZS5wb3B1bGF0ZSgpO1xuXG5cdFx0bGV0IGNvbnRhY3RzU3luY0ludGVydmFsID0gcEludChTZXR0aW5ncy5zZXR0aW5nc0dldCgnQ29udGFjdHNTeW5jSW50ZXJ2YWwnKSk7XG5cblx0XHRjb25zdCBqc0hhc2ggPSBTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnanNIYXNoJyksXG5cdFx0XHRzdGFydHVwVXJsID0gcFN0cmluZyhTZXR0aW5ncy5zZXR0aW5nc0dldCgnU3RhcnR1cFVybCcpKSxcblx0XHRcdGFsbG93R29vZ2xlID0gU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93R29vZ2xlU29jaWFsJyksXG5cdFx0XHRhbGxvd0ZhY2Vib29rID0gU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93RmFjZWJvb2tTb2NpYWwnKSxcblx0XHRcdGFsbG93VHdpdHRlciA9IFNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd1R3aXR0ZXJTb2NpYWwnKTtcblxuXHRcdGlmIChwcm9ncmVzc0pzKSB7XG5cdFx0XHRwcm9ncmVzc0pzLnNldCg5MCk7XG5cdFx0fVxuXG5cdFx0bGVmdFBhbmVsRGlzYWJsZWQuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0RXZlbnRzLnB1YignbGVmdC1wYW5lbC4nICsgKHZhbHVlID8gJ29mZicgOiAnb24nKSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNldFdpbmRvd1RpdGxlKCcnKTtcblx0XHRpZiAoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0F1dGgnKSkge1xuXHRcdFx0JGh0bWwuYWRkQ2xhc3MoJ3JsLXVzZXItYXV0aCcpO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdFNldHRpbmdzLmNhcGEoQ2FwYS5Ud29GYWN0b3IpICYmXG5cdFx0XHRcdFNldHRpbmdzLmNhcGEoQ2FwYS5Ud29GYWN0b3JGb3JjZSkgJiZcblx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1JlcXVpcmVUd29GYWN0b3InKVxuXHRcdFx0KSB7XG5cdFx0XHRcdHRoaXMuYm9vdGVuZCgpO1xuXHRcdFx0XHR0aGlzLmJvb3RzdGFydFR3b0ZhY3RvclNjcmVlbigpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zZXRXaW5kb3dUaXRsZShpMThuKCdUSVRMRVMvTE9BRElORycpKTtcblxuXHRcdFx0XHQvLyByZXF1aXJlLmVuc3VyZShbXSwgZnVuY3Rpb24oKSB7IC8vIHJlcXVpcmUgY29kZSBzcGxpdHRpbmdcblxuXHRcdFx0XHR0aGlzLmZvbGRlcnNSZWxvYWQoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5ib290ZW5kKCk7XG5cblx0XHRcdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdGlmICgnJyAhPT0gc3RhcnR1cFVybCkge1xuXHRcdFx0XHRcdFx0XHRyb3V0ZU9mZigpO1xuXHRcdFx0XHRcdFx0XHRzZXRIYXNoKHJvb3Qoc3RhcnR1cFVybCksIHRydWUpO1xuXHRcdFx0XHRcdFx0XHRyb3V0ZU9uKCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChqYXNzbCAmJiB3aW5kb3cuY3J5cHRvICYmIHdpbmRvdy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzICYmIFNldHRpbmdzLmNhcGEoQ2FwYS5PcGVuUEdQKSkge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBvcGVucGdwQ2FsbGJhY2sgPSAob3BlbnBncCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFBncFN0b3JlLm9wZW5wZ3AgPSBvcGVucGdwO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKHdpbmRvdy5Xb3JrZXIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFBncFN0b3JlLm9wZW5wZ3AuaW5pdFdvcmtlcih7IHBhdGg6IG9wZW5QZ3BXb3JrZXJKcygpIH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsb2coZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0UGdwU3RvcmUub3BlbnBncEtleXJpbmcgPSBuZXcgb3BlbnBncC5LZXlyaW5nKCk7XG5cdFx0XHRcdFx0XHRcdFx0UGdwU3RvcmUuY2FwYU9wZW5QR1AodHJ1ZSk7XG5cblx0XHRcdFx0XHRcdFx0XHRFdmVudHMucHViKCdvcGVucGdwLmluaXQnKTtcblxuXHRcdFx0XHRcdFx0XHRcdHRoaXMucmVsb2FkT3BlblBncEtleXMoKTtcblx0XHRcdFx0XHRcdFx0fTtcblxuXHRcdFx0XHRcdFx0XHRpZiAod2luZG93Lm9wZW5wZ3ApIHtcblx0XHRcdFx0XHRcdFx0XHRvcGVucGdwQ2FsbGJhY2sod2luZG93Lm9wZW5wZ3ApO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGphc3NsKG9wZW5QZ3BKcygpKS50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh3aW5kb3cub3BlbnBncCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRvcGVucGdwQ2FsbGJhY2sod2luZG93Lm9wZW5wZ3ApO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRQZ3BTdG9yZS5jYXBhT3BlblBHUChmYWxzZSk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHN0YXJ0U2NyZWVucyhbXG5cdFx0XHRcdFx0XHRcdE1haWxCb3hVc2VyU2NyZWVuLFxuXHRcdFx0XHRcdFx0XHRTZXR0aW5ncy5jYXBhKENhcGEuU2V0dGluZ3MpID8gU2V0dGluZ3NVc2VyU2NyZWVuIDogbnVsbFxuXHRcdFx0XHRcdFx0XHQvLyBmYWxzZSA/IEFib3V0VXNlclNjcmVlbiA6IG51bGxcblx0XHRcdFx0XHRcdF0pO1xuXG5cdFx0XHRcdFx0XHRpZiAoYWxsb3dHb29nbGUgfHwgYWxsb3dGYWNlYm9vayB8fCBhbGxvd1R3aXR0ZXIpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5zb2NpYWxVc2Vycyh0cnVlKTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0RXZlbnRzLnN1YignaW50ZXJ2YWwuMm0nLCAoKSA9PiB0aGlzLmZvbGRlckluZm9ybWF0aW9uKGdldEZvbGRlckluYm94TmFtZSgpKSk7XG5cdFx0XHRcdFx0XHRFdmVudHMuc3ViKCdpbnRlcnZhbC4zbScsICgpID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3Qgc0YgPSBGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKTtcblx0XHRcdFx0XHRcdFx0aWYgKGdldEZvbGRlckluYm94TmFtZSgpICE9PSBzRikge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZm9sZGVySW5mb3JtYXRpb24oc0YpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0RXZlbnRzLnN1YignaW50ZXJ2YWwuMm0tYWZ0ZXI1bScsICgpID0+IHRoaXMuZm9sZGVySW5mb3JtYXRpb25NdWx0aXBseSgpKTtcblx0XHRcdFx0XHRcdEV2ZW50cy5zdWIoJ2ludGVydmFsLjE1bScsICgpID0+IHRoaXMucXVvdGEoKSk7XG5cdFx0XHRcdFx0XHRFdmVudHMuc3ViKCdpbnRlcnZhbC4yMG0nLCAoKSA9PiB0aGlzLmZvbGRlcnNSZWxvYWQoKSk7XG5cblx0XHRcdFx0XHRcdGNvbnRhY3RzU3luY0ludGVydmFsID0gNSA8PSBjb250YWN0c1N5bmNJbnRlcnZhbCA/IGNvbnRhY3RzU3luY0ludGVydmFsIDogMjA7XG5cdFx0XHRcdFx0XHRjb250YWN0c1N5bmNJbnRlcnZhbCA9IDMyMCA+PSBjb250YWN0c1N5bmNJbnRlcnZhbCA/IGNvbnRhY3RzU3luY0ludGVydmFsIDogMzIwO1xuXG5cdFx0XHRcdFx0XHRfLmRlbGF5KCgpID0+IHRoaXMuY29udGFjdHNTeW5jKCksIE1hZ2ljcy5UaW1lMTBzKTtcblx0XHRcdFx0XHRcdF8uZGVsYXkoKCkgPT4gdGhpcy5mb2xkZXJJbmZvcm1hdGlvbk11bHRpcGx5KHRydWUpLCBNYWdpY3MuVGltZTJzKTtcblxuXHRcdFx0XHRcdFx0d2luZG93LnNldEludGVydmFsKCgpID0+IHRoaXMuY29udGFjdHNTeW5jKCksIGNvbnRhY3RzU3luY0ludGVydmFsICogNjAwMDAgKyA1MDAwKTtcblxuXHRcdFx0XHRcdFx0dGhpcy5hY2NvdW50c0FuZElkZW50aXRpZXModHJ1ZSk7XG5cblx0XHRcdFx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBzRiA9IEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZ2V0Rm9sZGVySW5ib3hOYW1lKCkgIT09IHNGKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5mb2xkZXJJbmZvcm1hdGlvbihzRik7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sIDEwMDApO1xuXG5cdFx0XHRcdFx0XHRfLmRlbGF5KCgpID0+IHRoaXMucXVvdGEoKSwgNTAwMCk7XG5cdFx0XHRcdFx0XHRfLmRlbGF5KCgpID0+IFJlbW90ZS5hcHBEZWxheVN0YXJ0KG5vb3ApLCAzNTAwMCk7XG5cblx0XHRcdFx0XHRcdEV2ZW50cy5zdWIoJ3JsLmF1dG8tbG9nb3V0JywgKCkgPT4gdGhpcy5sb2dvdXQoKSk7XG5cblx0XHRcdFx0XHRcdHJ1bkhvb2soJ3JsLXN0YXJ0LXVzZXItc2NyZWVucycpO1xuXHRcdFx0XHRcdFx0RXZlbnRzLnB1YigncmwuYm9vdHN0YXJ0LXVzZXItc2NyZWVucycpO1xuXG5cdFx0XHRcdFx0XHRpZiAoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1dlbGNvbWVQYWdlVXJsJykpIHtcblx0XHRcdFx0XHRcdFx0Xy5kZWxheSgoKSA9PiB0aGlzLmJvb3RzdGFydFdlbGNvbWVQb3B1cChTZXR0aW5ncy5zZXR0aW5nc0dldCgnV2VsY29tZVBhZ2VVcmwnKSksIDEwMDApO1xuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FjY291bnRTaWduTWUnKSAmJlxuXHRcdFx0XHRcdFx0XHR3aW5kb3cubmF2aWdhdG9yLnJlZ2lzdGVyUHJvdG9jb2xIYW5kbGVyICYmXG5cdFx0XHRcdFx0XHRcdFNldHRpbmdzLmNhcGEoQ2FwYS5Db21wb3Nlcilcblx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRcdFx0d2luZG93Lm5hdmlnYXRvci5yZWdpc3RlclByb3RvY29sSGFuZGxlcihcblx0XHRcdFx0XHRcdFx0XHRcdFx0J21haWx0bycsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCArICcvLycgKyB3aW5kb3cubG9jYXRpb24uaG9zdCArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArICc/bWFpbHRvJnRvPSVzJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0JycgKyAoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1RpdGxlJykgfHwgJ1JhaW5Mb29wJylcblx0XHRcdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKFNldHRpbmdzLnNldHRpbmdzR2V0KCdNYWlsVG9FbWFpbCcpKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRtYWlsVG9IZWxwZXIoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ01haWxUb0VtYWlsJyksIHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQ29tcG9zZScpKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0sIDUwMCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmICghYk1vYmlsZURldmljZSkge1xuXHRcdFx0XHRcdFx0XHRfLmRlZmVyKCgpID0+IHRoaXMuaW5pdFZlcnRpY2FsTGF5b3V0UmVzaXplcihDbGllbnRTaWRlS2V5TmFtZS5Gb2xkZXJMaXN0U2l6ZSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLmxvZ291dCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8gfSk7IC8vIHJlcXVpcmUgY29kZSBzcGxpdHRpbmdcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5ib290ZW5kKCk7XG5cdFx0XHR0aGlzLmJvb3RzdGFydExvZ2luU2NyZWVuKCk7XG5cdFx0fVxuXG5cdFx0aWYgKGFsbG93R29vZ2xlKSB7XG5cdFx0XHR3aW5kb3dbJ3JsXycgKyBqc0hhc2ggKyAnX2dvb2dsZV9zZXJ2aWNlJ10gPSAoKSA9PiB7XG5cdFx0XHRcdFNvY2lhbFN0b3JlLmdvb2dsZS5sb2FkaW5nKHRydWUpO1xuXHRcdFx0XHR0aGlzLnNvY2lhbFVzZXJzKCk7XG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGlmIChhbGxvd0ZhY2Vib29rKSB7XG5cdFx0XHR3aW5kb3dbJ3JsXycgKyBqc0hhc2ggKyAnX2ZhY2Vib29rX3NlcnZpY2UnXSA9ICgpID0+IHtcblx0XHRcdFx0U29jaWFsU3RvcmUuZmFjZWJvb2subG9hZGluZyh0cnVlKTtcblx0XHRcdFx0dGhpcy5zb2NpYWxVc2VycygpO1xuXHRcdFx0fTtcblx0XHR9XG5cblx0XHRpZiAoYWxsb3dUd2l0dGVyKSB7XG5cdFx0XHR3aW5kb3dbJ3JsXycgKyBqc0hhc2ggKyAnX3R3aXR0ZXJfc2VydmljZSddID0gKCkgPT4ge1xuXHRcdFx0XHRTb2NpYWxTdG9yZS50d2l0dGVyLmxvYWRpbmcodHJ1ZSk7XG5cdFx0XHRcdHRoaXMuc29jaWFsVXNlcnMoKTtcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0RXZlbnRzLnN1YignaW50ZXJ2YWwuMW0nLCAoKSA9PiBtb21lbnRSZWxvYWQoKSk7XG5cblx0XHRydW5Ib29rKCdybC1zdGFydC1zY3JlZW5zJyk7XG5cdFx0RXZlbnRzLnB1YigncmwuYm9vdHN0YXJ0LWVuZCcpO1xuXHR9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBBcHBVc2VyKCk7XG4iLCIvLyBCYXNlNjQgZW5jb2RlIC8gZGVjb2RlXG4vLyBodHRwOi8vd3d3LndlYnRvb2xraXQuaW5mby9cblxuY29uc3QgQkFTRV82NF9DSFIgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0nO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAgKi9cbmNvbnN0IEJhc2U2NCA9IHtcblx0Ly8gcHVibGljIG1ldGhvZCBmb3IgdXJsc2FmZSBlbmNvZGluZ1xuXHR1cmxzYWZlX2VuY29kZTogKGlucHV0KSA9PlxuXHRcdEJhc2U2NC5lbmNvZGUoaW5wdXQpXG5cdFx0XHQucmVwbGFjZSgvWytdL2csICctJylcblx0XHRcdC5yZXBsYWNlKC9bXFwvXS9nLCAnXycpXG5cdFx0XHQucmVwbGFjZSgvWz1dL2csICcnKSxcblxuXHQvLyBwdWJsaWMgbWV0aG9kIGZvciBlbmNvZGluZ1xuXHRlbmNvZGU6IChpbnB1dCkgPT4ge1xuXHRcdGxldCBvdXRwdXQgPSAnJyxcblx0XHRcdGNocjEsXG5cdFx0XHRjaHIyLFxuXHRcdFx0Y2hyMyxcblx0XHRcdGVuYzEsXG5cdFx0XHRlbmMyLFxuXHRcdFx0ZW5jMyxcblx0XHRcdGVuYzQsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlucHV0ID0gQmFzZTY0Ll91dGY4X2VuY29kZShpbnB1dCk7XG5cblx0XHR3aGlsZSAoaSA8IGlucHV0Lmxlbmd0aCkge1xuXHRcdFx0Y2hyMSA9IGlucHV0LmNoYXJDb2RlQXQoaSsrKTtcblx0XHRcdGNocjIgPSBpbnB1dC5jaGFyQ29kZUF0KGkrKyk7XG5cdFx0XHRjaHIzID0gaW5wdXQuY2hhckNvZGVBdChpKyspO1xuXG5cdFx0XHRlbmMxID0gY2hyMSA+PiAyO1xuXHRcdFx0ZW5jMiA9ICgoY2hyMSAmIDMpIDw8IDQpIHwgKGNocjIgPj4gNCk7XG5cdFx0XHRlbmMzID0gKChjaHIyICYgMTUpIDw8IDIpIHwgKGNocjMgPj4gNik7XG5cdFx0XHRlbmM0ID0gY2hyMyAmIDYzO1xuXG5cdFx0XHRpZiAoaXNOYU4oY2hyMikpIHtcblx0XHRcdFx0ZW5jMyA9IGVuYzQgPSA2NDtcblx0XHRcdH0gZWxzZSBpZiAoaXNOYU4oY2hyMykpIHtcblx0XHRcdFx0ZW5jNCA9IDY0O1xuXHRcdFx0fVxuXG5cdFx0XHRvdXRwdXQgPVxuXHRcdFx0XHRvdXRwdXQgK1xuXHRcdFx0XHRCQVNFXzY0X0NIUi5jaGFyQXQoZW5jMSkgK1xuXHRcdFx0XHRCQVNFXzY0X0NIUi5jaGFyQXQoZW5jMikgK1xuXHRcdFx0XHRCQVNFXzY0X0NIUi5jaGFyQXQoZW5jMykgK1xuXHRcdFx0XHRCQVNFXzY0X0NIUi5jaGFyQXQoZW5jNCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG91dHB1dDtcblx0fSxcblxuXHQvLyBwdWJsaWMgbWV0aG9kIGZvciBkZWNvZGluZ1xuXHRkZWNvZGU6IChpbnB1dCkgPT4ge1xuXHRcdGxldCBvdXRwdXQgPSAnJyxcblx0XHRcdGNocjEsXG5cdFx0XHRjaHIyLFxuXHRcdFx0Y2hyMyxcblx0XHRcdGVuYzEsXG5cdFx0XHRlbmMyLFxuXHRcdFx0ZW5jMyxcblx0XHRcdGVuYzQsXG5cdFx0XHRpID0gMDtcblxuXHRcdGlucHV0ID0gaW5wdXQucmVwbGFjZSgvW15BLVphLXowLTlcXCtcXC9cXD1dL2csICcnKTtcblxuXHRcdHdoaWxlIChpIDwgaW5wdXQubGVuZ3RoKSB7XG5cdFx0XHRlbmMxID0gQkFTRV82NF9DSFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG5cdFx0XHRlbmMyID0gQkFTRV82NF9DSFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG5cdFx0XHRlbmMzID0gQkFTRV82NF9DSFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG5cdFx0XHRlbmM0ID0gQkFTRV82NF9DSFIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7XG5cblx0XHRcdGNocjEgPSAoZW5jMSA8PCAyKSB8IChlbmMyID4+IDQpO1xuXHRcdFx0Y2hyMiA9ICgoZW5jMiAmIDE1KSA8PCA0KSB8IChlbmMzID4+IDIpO1xuXHRcdFx0Y2hyMyA9ICgoZW5jMyAmIDMpIDw8IDYpIHwgZW5jNDtcblxuXHRcdFx0b3V0cHV0ID0gb3V0cHV0ICsgU3RyaW5nLmZyb21DaGFyQ29kZShjaHIxKTtcblxuXHRcdFx0aWYgKGVuYzMgIT09IDY0KSB7XG5cdFx0XHRcdG91dHB1dCA9IG91dHB1dCArIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyMik7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChlbmM0ICE9PSA2NCkge1xuXHRcdFx0XHRvdXRwdXQgPSBvdXRwdXQgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjMpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBCYXNlNjQuX3V0ZjhfZGVjb2RlKG91dHB1dCk7XG5cdH0sXG5cblx0Ly8gcHJpdmF0ZSBtZXRob2QgZm9yIFVURi04IGVuY29kaW5nXG5cdF91dGY4X2VuY29kZTogKHN0cmluZykgPT4ge1xuXHRcdHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpO1xuXG5cdFx0bGV0IHV0ZnRleHQgPSAnJyxcblx0XHRcdG4gPSAwLFxuXHRcdFx0bCA9IHN0cmluZy5sZW5ndGgsXG5cdFx0XHRjID0gMDtcblxuXHRcdGZvciAoOyBuIDwgbDsgbisrKSB7XG5cdFx0XHRjID0gc3RyaW5nLmNoYXJDb2RlQXQobik7XG5cblx0XHRcdGlmIChjIDwgMTI4KSB7XG5cdFx0XHRcdHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjKTtcblx0XHRcdH0gZWxzZSBpZiAoYyA+IDEyNyAmJiBjIDwgMjA0OCkge1xuXHRcdFx0XHR1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgPj4gNikgfCAxOTIpO1xuXHRcdFx0XHR1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiA2MykgfCAxMjgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dXRmdGV4dCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKChjID4+IDEyKSB8IDIyNCk7XG5cdFx0XHRcdHV0ZnRleHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgPj4gNikgJiA2MykgfCAxMjgpO1xuXHRcdFx0XHR1dGZ0ZXh0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKGMgJiA2MykgfCAxMjgpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiB1dGZ0ZXh0O1xuXHR9LFxuXG5cdC8vIHByaXZhdGUgbWV0aG9kIGZvciBVVEYtOCBkZWNvZGluZ1xuXHRfdXRmOF9kZWNvZGU6ICh1dGZ0ZXh0KSA9PiB7XG5cdFx0bGV0IHN0cmluZyA9ICcnLFxuXHRcdFx0aSA9IDAsXG5cdFx0XHRjID0gMCxcblx0XHRcdGMyID0gMCxcblx0XHRcdGMzID0gMDtcblxuXHRcdHdoaWxlIChpIDwgdXRmdGV4dC5sZW5ndGgpIHtcblx0XHRcdGMgPSB1dGZ0ZXh0LmNoYXJDb2RlQXQoaSk7XG5cblx0XHRcdGlmIChjIDwgMTI4KSB7XG5cdFx0XHRcdHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpO1xuXHRcdFx0XHRpKys7XG5cdFx0XHR9IGVsc2UgaWYgKGMgPiAxOTEgJiYgYyA8IDIyNCkge1xuXHRcdFx0XHRjMiA9IHV0ZnRleHQuY2hhckNvZGVBdChpICsgMSk7XG5cdFx0XHRcdHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKCgoYyAmIDMxKSA8PCA2KSB8IChjMiAmIDYzKSk7XG5cdFx0XHRcdGkgKz0gMjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGMyID0gdXRmdGV4dC5jaGFyQ29kZUF0KGkgKyAxKTtcblx0XHRcdFx0YzMgPSB1dGZ0ZXh0LmNoYXJDb2RlQXQoaSArIDIpO1xuXHRcdFx0XHRzdHJpbmcgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgoKGMgJiAxNSkgPDwgMTIpIHwgKChjMiAmIDYzKSA8PCA2KSB8IChjMyAmIDYzKSk7XG5cdFx0XHRcdGkgKz0gMztcblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gc3RyaW5nO1xuXHR9XG59O1xuXG5leHBvcnQgY29uc3QgZGVjb2RlID0gQmFzZTY0LmRlY29kZTtcbmV4cG9ydCBjb25zdCBlbmNvZGUgPSBCYXNlNjQuZW5jb2RlO1xuZXhwb3J0IGNvbnN0IHVybHNhZmVfZW5jb2RlID0gQmFzZTY0LnVybHNhZmVfZW5jb2RlO1xuLyogZXNsaW50LWVuYWJsZSAqL1xuIiwiaW1wb3J0IF8gZnJvbSAnXyc7XG5cbmltcG9ydCB7IFVOVVNFRF9PUFRJT05fVkFMVUUgfSBmcm9tICdDb21tb24vQ29uc3RzJztcbmltcG9ydCB7IGlzQXJyYXksIGlzTm9ybWFsLCBwSW50LCBpc1VuZCwgbm9vcCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBDbGllbnRTaWRlS2V5TmFtZSwgU2VydmVyRm9sZGVyVHlwZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgKiBhcyBDYWNoZSBmcm9tICdDb21tb24vQ2FjaGUnO1xuXG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcbmltcG9ydCAqIGFzIExvY2FsIGZyb20gJ1N0b3JhZ2UvQ2xpZW50JztcblxuaW1wb3J0IEFwcFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0FwcCc7XG5pbXBvcnQgRm9sZGVyU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvRm9sZGVyJztcblxuaW1wb3J0IFJlbW90ZSBmcm9tICdSZW1vdGUvVXNlci9BamF4JztcblxuaW1wb3J0IHsgRm9sZGVyTW9kZWwgfSBmcm9tICdNb2RlbC9Gb2xkZXInO1xuaW1wb3J0IHsgQWJzdHJhY3RCYXNpY1Byb21pc2VzIH0gZnJvbSAnUHJvbWlzZXMvQWJzdHJhY3RCYXNpYyc7XG5cbmNsYXNzIFByb21pc2VzVXNlclBvcHVsYXRvciBleHRlbmRzIEFic3RyYWN0QmFzaWNQcm9taXNlcyB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0Z1bGxOYW1lSGFzaFxuXHQgKiBAcGFyYW0ge0FycmF5P30gZXhwYW5kZWRGb2xkZXJzXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aXNGb2xkZXJFeHBhbmRlZChzRnVsbE5hbWVIYXNoLCBleHBhbmRlZEZvbGRlcnMpIHtcblx0XHRyZXR1cm4gZXhwYW5kZWRGb2xkZXJzICYmIGlzQXJyYXkoZXhwYW5kZWRGb2xkZXJzKSAmJiAtMSAhPT0gXy5pbmRleE9mKGV4cGFuZGVkRm9sZGVycywgc0Z1bGxOYW1lSGFzaCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNGb2xkZXJGdWxsTmFtZVJhd1xuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0bm9ybWFsaXplRm9sZGVyKHNGb2xkZXJGdWxsTmFtZVJhdykge1xuXHRcdHJldHVybiAnJyA9PT0gc0ZvbGRlckZ1bGxOYW1lUmF3IHx8XG5cdFx0XHRVTlVTRURfT1BUSU9OX1ZBTFVFID09PSBzRm9sZGVyRnVsbE5hbWVSYXcgfHxcblx0XHRcdG51bGwgIT09IENhY2hlLmdldEZvbGRlckZyb21DYWNoZUxpc3Qoc0ZvbGRlckZ1bGxOYW1lUmF3KVxuXHRcdFx0PyBzRm9sZGVyRnVsbE5hbWVSYXdcblx0XHRcdDogJyc7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNOYW1lc3BhY2Vcblx0ICogQHBhcmFtIHtBcnJheX0gYUZvbGRlcnNcblx0ICogQHBhcmFtIHtBcnJheT99IGV4cGFuZGVkRm9sZGVyc1xuXHQgKiBAcmV0dXJucyB7QXJyYXl9XG5cdCAqL1xuXHRmb2xkZXJSZXNwb25zZVBhcnNlUmVjKHNOYW1lc3BhY2UsIGFGb2xkZXJzLCBleHBhbmRlZEZvbGRlcnMpIHtcblx0XHRjb25zdCBiRGlzcGxheVNwZWNTZXR0aW5nID0gRm9sZGVyU3RvcmUuZGlzcGxheVNwZWNTZXR0aW5nKCksXG5cdFx0XHRhTGlzdCA9IFtdO1xuXG5cdFx0Xy5lYWNoKGFGb2xkZXJzLCAob0ZvbGRlcikgPT4ge1xuXHRcdFx0aWYgKG9Gb2xkZXIpIHtcblx0XHRcdFx0bGV0IG9DYWNoZUZvbGRlciA9IENhY2hlLmdldEZvbGRlckZyb21DYWNoZUxpc3Qob0ZvbGRlci5GdWxsTmFtZVJhdyk7XG5cdFx0XHRcdGlmICghb0NhY2hlRm9sZGVyKSB7XG5cdFx0XHRcdFx0b0NhY2hlRm9sZGVyID0gRm9sZGVyTW9kZWwubmV3SW5zdGFuY2VGcm9tSnNvbihvRm9sZGVyKTtcblx0XHRcdFx0XHRpZiAob0NhY2hlRm9sZGVyKSB7XG5cdFx0XHRcdFx0XHRDYWNoZS5zZXRGb2xkZXJUb0NhY2hlTGlzdChvRm9sZGVyLkZ1bGxOYW1lUmF3LCBvQ2FjaGVGb2xkZXIpO1xuXHRcdFx0XHRcdFx0Q2FjaGUuc2V0Rm9sZGVyRnVsbE5hbWVSYXcob0NhY2hlRm9sZGVyLmZ1bGxOYW1lSGFzaCwgb0ZvbGRlci5GdWxsTmFtZVJhdywgb0NhY2hlRm9sZGVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAob0NhY2hlRm9sZGVyKSB7XG5cdFx0XHRcdFx0aWYgKGJEaXNwbGF5U3BlY1NldHRpbmcpIHtcblx0XHRcdFx0XHRcdG9DYWNoZUZvbGRlci5jaGVja2FibGUoISFvRm9sZGVyLkNoZWNrYWJsZSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9DYWNoZUZvbGRlci5jaGVja2FibGUodHJ1ZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0b0NhY2hlRm9sZGVyLmNvbGxhcHNlZCghdGhpcy5pc0ZvbGRlckV4cGFuZGVkKG9DYWNoZUZvbGRlci5mdWxsTmFtZUhhc2gsIGV4cGFuZGVkRm9sZGVycykpO1xuXG5cdFx0XHRcdFx0aWYgKG9Gb2xkZXIuRXh0ZW5kZWQpIHtcblx0XHRcdFx0XHRcdGlmIChvRm9sZGVyLkV4dGVuZGVkLkhhc2gpIHtcblx0XHRcdFx0XHRcdFx0Q2FjaGUuc2V0Rm9sZGVySGFzaChvQ2FjaGVGb2xkZXIuZnVsbE5hbWVSYXcsIG9Gb2xkZXIuRXh0ZW5kZWQuSGFzaCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChpc05vcm1hbChvRm9sZGVyLkV4dGVuZGVkLk1lc3NhZ2VDb3VudCkpIHtcblx0XHRcdFx0XHRcdFx0b0NhY2hlRm9sZGVyLm1lc3NhZ2VDb3VudEFsbChvRm9sZGVyLkV4dGVuZGVkLk1lc3NhZ2VDb3VudCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChpc05vcm1hbChvRm9sZGVyLkV4dGVuZGVkLk1lc3NhZ2VVbnNlZW5Db3VudCkpIHtcblx0XHRcdFx0XHRcdFx0b0NhY2hlRm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZChvRm9sZGVyLkV4dGVuZGVkLk1lc3NhZ2VVbnNlZW5Db3VudCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFx0b0ZvbGRlci5TdWJGb2xkZXJzICYmXG5cdFx0XHRcdFx0XHQnQ29sbGVjdGlvbi9Gb2xkZXJDb2xsZWN0aW9uJyA9PT0gb0ZvbGRlci5TdWJGb2xkZXJzWydAT2JqZWN0J10gJiZcblx0XHRcdFx0XHRcdG9Gb2xkZXIuU3ViRm9sZGVyc1snQENvbGxlY3Rpb24nXSAmJlxuXHRcdFx0XHRcdFx0aXNBcnJheShvRm9sZGVyLlN1YkZvbGRlcnNbJ0BDb2xsZWN0aW9uJ10pXG5cdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRvQ2FjaGVGb2xkZXIuc3ViRm9sZGVycyhcblx0XHRcdFx0XHRcdFx0dGhpcy5mb2xkZXJSZXNwb25zZVBhcnNlUmVjKHNOYW1lc3BhY2UsIG9Gb2xkZXIuU3ViRm9sZGVyc1snQENvbGxlY3Rpb24nXSwgZXhwYW5kZWRGb2xkZXJzKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRhTGlzdC5wdXNoKG9DYWNoZUZvbGRlcik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHJldHVybiBhTGlzdDtcblx0fVxuXG5cdGZvbGRlcnNMaXN0KG9EYXRhKSB7XG5cdFx0aWYgKFxuXHRcdFx0b0RhdGEgJiZcblx0XHRcdCdDb2xsZWN0aW9uL0ZvbGRlckNvbGxlY3Rpb24nID09PSBvRGF0YVsnQE9iamVjdCddICYmXG5cdFx0XHRvRGF0YVsnQENvbGxlY3Rpb24nXSAmJlxuXHRcdFx0aXNBcnJheShvRGF0YVsnQENvbGxlY3Rpb24nXSlcblx0XHQpIHtcblx0XHRcdGNvbnN0IGV4cGFuZGVkRm9sZGVycyA9IExvY2FsLmdldChDbGllbnRTaWRlS2V5TmFtZS5FeHBhbmRlZEZvbGRlcnMpLFxuXHRcdFx0XHRjbnQgPSBwSW50KG9EYXRhLkNvdW50UmVjKTtcblxuXHRcdFx0bGV0IGxpbWl0ID0gcEludChTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnZm9sZGVyU3BlY0xpbWl0JykpO1xuXHRcdFx0bGltaXQgPSAxMDAgPCBsaW1pdCA/IDEwMCA6IDEwID4gbGltaXQgPyAxMCA6IGxpbWl0O1xuXG5cdFx0XHRGb2xkZXJTdG9yZS5kaXNwbGF5U3BlY1NldHRpbmcoMCA+PSBjbnQgfHwgbGltaXQgPCBjbnQpO1xuXG5cdFx0XHRGb2xkZXJTdG9yZS5mb2xkZXJMaXN0KFxuXHRcdFx0XHR0aGlzLmZvbGRlclJlc3BvbnNlUGFyc2VSZWMoXG5cdFx0XHRcdFx0aXNVbmQob0RhdGEuTmFtZXNwYWNlKSA/ICcnIDogb0RhdGEuTmFtZXNwYWNlLFxuXHRcdFx0XHRcdG9EYXRhWydAQ29sbGVjdGlvbiddLFxuXHRcdFx0XHRcdGV4cGFuZGVkRm9sZGVyc1xuXHRcdFx0XHQpXG5cdFx0XHQpOyAvLyBAdG9kbyBvcHRpbWl6YXRpb24gcmVxdWlyZWRcblx0XHR9XG5cdH1cblxuXHRmb2xkZXJzQWRkaXRpb25hbFBhcmFtZXRlcnMob0RhdGEpIHtcblx0XHRpZiAoXG5cdFx0XHRvRGF0YSAmJlxuXHRcdFx0b0RhdGEgJiZcblx0XHRcdCdDb2xsZWN0aW9uL0ZvbGRlckNvbGxlY3Rpb24nID09PSBvRGF0YVsnQE9iamVjdCddICYmXG5cdFx0XHRvRGF0YVsnQENvbGxlY3Rpb24nXSAmJlxuXHRcdFx0aXNBcnJheShvRGF0YVsnQENvbGxlY3Rpb24nXSlcblx0XHQpIHtcblx0XHRcdGlmICghaXNVbmQob0RhdGEuTmFtZXNwYWNlKSkge1xuXHRcdFx0XHRGb2xkZXJTdG9yZS5uYW1lc3BhY2UgPSBvRGF0YS5OYW1lc3BhY2U7XG5cdFx0XHR9XG5cblx0XHRcdEFwcFN0b3JlLnRocmVhZHNBbGxvd2VkKCEhU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ3VzZUltYXBUaHJlYWQnKSAmJiBvRGF0YS5Jc1RocmVhZHNTdXBwb3J0ZWQgJiYgdHJ1ZSk7XG5cblx0XHRcdEZvbGRlclN0b3JlLmZvbGRlckxpc3Qub3B0aW1pemVkKCEhb0RhdGEuT3B0aW1pemVkKTtcblxuXHRcdFx0bGV0IHVwZGF0ZSA9IGZhbHNlO1xuXG5cdFx0XHRpZiAoXG5cdFx0XHRcdG9EYXRhLlN5c3RlbUZvbGRlcnMgJiZcblx0XHRcdFx0JycgPT09XG5cdFx0XHRcdFx0JycgK1xuXHRcdFx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1NlbnRGb2xkZXInKSArXG5cdFx0XHRcdFx0XHRTZXR0aW5ncy5zZXR0aW5nc0dldCgnRHJhZnRGb2xkZXInKSArXG5cdFx0XHRcdFx0XHRTZXR0aW5ncy5zZXR0aW5nc0dldCgnU3BhbUZvbGRlcicpICtcblx0XHRcdFx0XHRcdFNldHRpbmdzLnNldHRpbmdzR2V0KCdUcmFzaEZvbGRlcicpICtcblx0XHRcdFx0XHRcdFNldHRpbmdzLnNldHRpbmdzR2V0KCdBcmNoaXZlRm9sZGVyJykgK1xuXHRcdFx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NHZXQoJ051bGxGb2xkZXInKVxuXHRcdFx0KSB7XG5cdFx0XHRcdFNldHRpbmdzLnNldHRpbmdzU2V0KCdTZW50Rm9sZGVyJywgb0RhdGEuU3lzdGVtRm9sZGVyc1tTZXJ2ZXJGb2xkZXJUeXBlLlNFTlRdIHx8IG51bGwpO1xuXHRcdFx0XHRTZXR0aW5ncy5zZXR0aW5nc1NldCgnRHJhZnRGb2xkZXInLCBvRGF0YS5TeXN0ZW1Gb2xkZXJzW1NlcnZlckZvbGRlclR5cGUuRFJBRlRTXSB8fCBudWxsKTtcblx0XHRcdFx0U2V0dGluZ3Muc2V0dGluZ3NTZXQoJ1NwYW1Gb2xkZXInLCBvRGF0YS5TeXN0ZW1Gb2xkZXJzW1NlcnZlckZvbGRlclR5cGUuSlVOS10gfHwgbnVsbCk7XG5cdFx0XHRcdFNldHRpbmdzLnNldHRpbmdzU2V0KCdUcmFzaEZvbGRlcicsIG9EYXRhLlN5c3RlbUZvbGRlcnNbU2VydmVyRm9sZGVyVHlwZS5UUkFTSF0gfHwgbnVsbCk7XG5cdFx0XHRcdFNldHRpbmdzLnNldHRpbmdzU2V0KCdBcmNoaXZlRm9sZGVyJywgb0RhdGEuU3lzdGVtRm9sZGVyc1tTZXJ2ZXJGb2xkZXJUeXBlLkFMTF0gfHwgbnVsbCk7XG5cblx0XHRcdFx0dXBkYXRlID0gdHJ1ZTtcblx0XHRcdH1cblxuXHRcdFx0Rm9sZGVyU3RvcmUuc2VudEZvbGRlcih0aGlzLm5vcm1hbGl6ZUZvbGRlcihTZXR0aW5ncy5zZXR0aW5nc0dldCgnU2VudEZvbGRlcicpKSk7XG5cdFx0XHRGb2xkZXJTdG9yZS5kcmFmdEZvbGRlcih0aGlzLm5vcm1hbGl6ZUZvbGRlcihTZXR0aW5ncy5zZXR0aW5nc0dldCgnRHJhZnRGb2xkZXInKSkpO1xuXHRcdFx0Rm9sZGVyU3RvcmUuc3BhbUZvbGRlcih0aGlzLm5vcm1hbGl6ZUZvbGRlcihTZXR0aW5ncy5zZXR0aW5nc0dldCgnU3BhbUZvbGRlcicpKSk7XG5cdFx0XHRGb2xkZXJTdG9yZS50cmFzaEZvbGRlcih0aGlzLm5vcm1hbGl6ZUZvbGRlcihTZXR0aW5ncy5zZXR0aW5nc0dldCgnVHJhc2hGb2xkZXInKSkpO1xuXHRcdFx0Rm9sZGVyU3RvcmUuYXJjaGl2ZUZvbGRlcih0aGlzLm5vcm1hbGl6ZUZvbGRlcihTZXR0aW5ncy5zZXR0aW5nc0dldCgnQXJjaGl2ZUZvbGRlcicpKSk7XG5cblx0XHRcdGlmICh1cGRhdGUpIHtcblx0XHRcdFx0UmVtb3RlLnNhdmVTeXN0ZW1Gb2xkZXJzKG5vb3AsIHtcblx0XHRcdFx0XHRTZW50Rm9sZGVyOiBGb2xkZXJTdG9yZS5zZW50Rm9sZGVyKCksXG5cdFx0XHRcdFx0RHJhZnRGb2xkZXI6IEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyKCksXG5cdFx0XHRcdFx0U3BhbUZvbGRlcjogRm9sZGVyU3RvcmUuc3BhbUZvbGRlcigpLFxuXHRcdFx0XHRcdFRyYXNoRm9sZGVyOiBGb2xkZXJTdG9yZS50cmFzaEZvbGRlcigpLFxuXHRcdFx0XHRcdEFyY2hpdmVGb2xkZXI6IEZvbGRlclN0b3JlLmFyY2hpdmVGb2xkZXIoKSxcblx0XHRcdFx0XHROdWxsRm9sZGVyOiAnTnVsbEZvbGRlcidcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdExvY2FsLnNldChDbGllbnRTaWRlS2V5TmFtZS5Gb2xkZXJzTGFzaEhhc2gsIG9EYXRhLkZvbGRlcnNIYXNoKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgbmV3IFByb21pc2VzVXNlclBvcHVsYXRvcigpO1xuIiwiaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBGaWx0ZXJSdWxlc1R5cGUsIEZpbHRlcnNBY3Rpb24gfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgcFN0cmluZywgaW5BcnJheSwgaXNOb25FbXB0eUFycmF5LCBmYWtlTWQ1LCBkZWxlZ2F0ZVJ1bk9uRGVzdHJveSwgd2luZG93UmVzaXplQ2FsbGJhY2sgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcbmltcG9ydCB7IGdldEZvbGRlckZyb21DYWNoZUxpc3QgfSBmcm9tICdDb21tb24vQ2FjaGUnO1xuXG5pbXBvcnQgQWNjb3VudFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0FjY291bnQnO1xuXG5pbXBvcnQgeyBGaWx0ZXJDb25kaXRpb25Nb2RlbCB9IGZyb20gJ01vZGVsL0ZpbHRlckNvbmRpdGlvbic7XG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmNsYXNzIEZpbHRlck1vZGVsIGV4dGVuZHMgQWJzdHJhY3RNb2RlbCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCdGaWx0ZXJNb2RlbCcpO1xuXG5cdFx0dGhpcy5lbmFibGVkID0ga28ub2JzZXJ2YWJsZSh0cnVlKTtcblxuXHRcdHRoaXMuaWQgPSAnJztcblxuXHRcdHRoaXMubmFtZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMubmFtZS5lcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMubmFtZS5mb2N1c2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmNvbmRpdGlvbnMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXHRcdHRoaXMuY29uZGl0aW9uc1R5cGUgPSBrby5vYnNlcnZhYmxlKEZpbHRlclJ1bGVzVHlwZS5BbnkpO1xuXG5cdFx0Ly8gQWN0aW9uc1xuXHRcdHRoaXMuYWN0aW9uVmFsdWUgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLmFjdGlvblZhbHVlLmVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmFjdGlvblZhbHVlU2Vjb25kID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5hY3Rpb25WYWx1ZVRoaXJkID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmFjdGlvblZhbHVlRm91cnRoID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5hY3Rpb25WYWx1ZUZvdXJ0aC5lcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5hY3Rpb25NYXJrQXNSZWFkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmFjdGlvbktlZXAgPSBrby5vYnNlcnZhYmxlKHRydWUpO1xuXHRcdHRoaXMuYWN0aW9uTm9TdG9wID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmFjdGlvblR5cGUgPSBrby5vYnNlcnZhYmxlKEZpbHRlcnNBY3Rpb24uTW92ZVRvKTtcblxuXHRcdHRoaXMuYWN0aW9uVHlwZS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5hY3Rpb25WYWx1ZSgnJyk7XG5cdFx0XHR0aGlzLmFjdGlvblZhbHVlLmVycm9yKGZhbHNlKTtcblx0XHRcdHRoaXMuYWN0aW9uVmFsdWVTZWNvbmQoJycpO1xuXHRcdFx0dGhpcy5hY3Rpb25WYWx1ZVRoaXJkKCcnKTtcblx0XHRcdHRoaXMuYWN0aW9uVmFsdWVGb3VydGgoJycpO1xuXHRcdFx0dGhpcy5hY3Rpb25WYWx1ZUZvdXJ0aC5lcnJvcihmYWxzZSk7XG5cdFx0fSk7XG5cblx0XHRjb25zdCBmR2V0UmVhbEZvbGRlck5hbWUgPSAoZm9sZGVyRnVsbE5hbWVSYXcpID0+IHtcblx0XHRcdGNvbnN0IGZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3QoZm9sZGVyRnVsbE5hbWVSYXcpO1xuXHRcdFx0cmV0dXJuIGZvbGRlciA/IGZvbGRlci5mdWxsTmFtZS5yZXBsYWNlKCcuJyA9PT0gZm9sZGVyLmRlbGltaXRlciA/IC9cXC4vIDogL1tcXFxcL10rLywgJyAvICcpIDogZm9sZGVyRnVsbE5hbWVSYXc7XG5cdFx0fTtcblxuXHRcdHRoaXMubmFtZVN1YiA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGxldCByZXN1bHQgPSAnJztcblx0XHRcdGNvbnN0IGFjdGlvblZhbHVlID0gdGhpcy5hY3Rpb25WYWx1ZSgpO1xuXG5cdFx0XHRzd2l0Y2ggKHRoaXMuYWN0aW9uVHlwZSgpKSB7XG5cdFx0XHRcdGNhc2UgRmlsdGVyc0FjdGlvbi5Nb3ZlVG86XG5cdFx0XHRcdFx0cmVzdWx0ID0gaTE4bignU0VUVElOR1NfRklMVEVSUy9TVUJOQU1FX01PVkVfVE8nLCB7XG5cdFx0XHRcdFx0XHRGT0xERVI6IGZHZXRSZWFsRm9sZGVyTmFtZShhY3Rpb25WYWx1ZSlcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBGaWx0ZXJzQWN0aW9uLkZvcndhcmQ6XG5cdFx0XHRcdFx0cmVzdWx0ID0gaTE4bignU0VUVElOR1NfRklMVEVSUy9TVUJOQU1FX0ZPUldBUkRfVE8nLCB7XG5cdFx0XHRcdFx0XHRFTUFJTDogYWN0aW9uVmFsdWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBGaWx0ZXJzQWN0aW9uLlZhY2F0aW9uOlxuXHRcdFx0XHRcdHJlc3VsdCA9IGkxOG4oJ1NFVFRJTkdTX0ZJTFRFUlMvU1VCTkFNRV9WQUNBVElPTl9NRVNTQUdFJyk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgRmlsdGVyc0FjdGlvbi5SZWplY3Q6XG5cdFx0XHRcdFx0cmVzdWx0ID0gaTE4bignU0VUVElOR1NfRklMVEVSUy9TVUJOQU1FX1JFSkVDVCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbHRlcnNBY3Rpb24uRGlzY2FyZDpcblx0XHRcdFx0XHRyZXN1bHQgPSBpMThuKCdTRVRUSU5HU19GSUxURVJTL1NVQk5BTUVfRElTQ0FSRCcpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiByZXN1bHQgPyAnKCcgKyByZXN1bHQgKyAnKScgOiAnJztcblx0XHR9KTtcblxuXHRcdHRoaXMuYWN0aW9uVGVtcGxhdGUgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRsZXQgcmVzdWx0ID0gJyc7XG5cblx0XHRcdHN3aXRjaCAodGhpcy5hY3Rpb25UeXBlKCkpIHtcblx0XHRcdFx0Y2FzZSBGaWx0ZXJzQWN0aW9uLkZvcndhcmQ6XG5cdFx0XHRcdFx0cmVzdWx0ID0gJ1NldHRpbmdzRmlsdGVyc0FjdGlvbkZvcndhcmQnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbHRlcnNBY3Rpb24uVmFjYXRpb246XG5cdFx0XHRcdFx0cmVzdWx0ID0gJ1NldHRpbmdzRmlsdGVyc0FjdGlvblZhY2F0aW9uJztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBGaWx0ZXJzQWN0aW9uLlJlamVjdDpcblx0XHRcdFx0XHRyZXN1bHQgPSAnU2V0dGluZ3NGaWx0ZXJzQWN0aW9uUmVqZWN0Jztcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSBGaWx0ZXJzQWN0aW9uLk5vbmU6XG5cdFx0XHRcdFx0cmVzdWx0ID0gJ1NldHRpbmdzRmlsdGVyc0FjdGlvbk5vbmUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIEZpbHRlcnNBY3Rpb24uRGlzY2FyZDpcblx0XHRcdFx0XHRyZXN1bHQgPSAnU2V0dGluZ3NGaWx0ZXJzQWN0aW9uRGlzY2FyZCc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgRmlsdGVyc0FjdGlvbi5Nb3ZlVG86XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0cmVzdWx0ID0gJ1NldHRpbmdzRmlsdGVyc0FjdGlvbk1vdmVUb0ZvbGRlcic7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnJlZ0Rpc3Bvc2FibGVzKHRoaXMuY29uZGl0aW9ucy5zdWJzY3JpYmUod2luZG93UmVzaXplQ2FsbGJhY2spKTtcblxuXHRcdHRoaXMucmVnRGlzcG9zYWJsZXMoXG5cdFx0XHR0aGlzLm5hbWUuc3Vic2NyaWJlKChzVmFsdWUpID0+IHtcblx0XHRcdFx0dGhpcy5uYW1lLmVycm9yKCcnID09PSBzVmFsdWUpO1xuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0dGhpcy5yZWdEaXNwb3NhYmxlcyhcblx0XHRcdHRoaXMuYWN0aW9uVmFsdWUuc3Vic2NyaWJlKChzVmFsdWUpID0+IHtcblx0XHRcdFx0dGhpcy5hY3Rpb25WYWx1ZS5lcnJvcignJyA9PT0gc1ZhbHVlKTtcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHRoaXMucmVnRGlzcG9zYWJsZXMoW3RoaXMuYWN0aW9uTm9TdG9wLCB0aGlzLmFjdGlvblRlbXBsYXRlXSk7XG5cblx0XHR0aGlzLmRlbGV0ZUFjY2VzcyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuY2FuQmVEZWxldGVkID0ga28ub2JzZXJ2YWJsZSh0cnVlKTtcblx0fVxuXG5cdGdlbmVyYXRlSUQoKSB7XG5cdFx0dGhpcy5pZCA9IGZha2VNZDUoKTtcblx0fVxuXG5cdHZlcmlmeSgpIHtcblx0XHRpZiAoJycgPT09IHRoaXMubmFtZSgpKSB7XG5cdFx0XHR0aGlzLm5hbWUuZXJyb3IodHJ1ZSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKDAgPCB0aGlzLmNvbmRpdGlvbnMoKS5sZW5ndGgpIHtcblx0XHRcdGlmIChfLmZpbmQodGhpcy5jb25kaXRpb25zKCksIChjb25kKSA9PiBjb25kICYmICFjb25kLnZlcmlmeSgpKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKCcnID09PSB0aGlzLmFjdGlvblZhbHVlKCkpIHtcblx0XHRcdGlmIChcblx0XHRcdFx0LTEgPFxuXHRcdFx0XHRpbkFycmF5KHRoaXMuYWN0aW9uVHlwZSgpLCBbXG5cdFx0XHRcdFx0RmlsdGVyc0FjdGlvbi5Nb3ZlVG8sXG5cdFx0XHRcdFx0RmlsdGVyc0FjdGlvbi5Gb3J3YXJkLFxuXHRcdFx0XHRcdEZpbHRlcnNBY3Rpb24uUmVqZWN0LFxuXHRcdFx0XHRcdEZpbHRlcnNBY3Rpb24uVmFjYXRpb25cblx0XHRcdFx0XSlcblx0XHRcdCkge1xuXHRcdFx0XHR0aGlzLmFjdGlvblZhbHVlLmVycm9yKHRydWUpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0aWYgKEZpbHRlcnNBY3Rpb24uRm9yd2FyZCA9PT0gdGhpcy5hY3Rpb25UeXBlKCkgJiYgLTEgPT09IHRoaXMuYWN0aW9uVmFsdWUoKS5pbmRleE9mKCdAJykpIHtcblx0XHRcdHRoaXMuYWN0aW9uVmFsdWUuZXJyb3IodHJ1ZSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKFxuXHRcdFx0RmlsdGVyc0FjdGlvbi5WYWNhdGlvbiA9PT0gdGhpcy5hY3Rpb25UeXBlKCkgJiZcblx0XHRcdCcnICE9PSB0aGlzLmFjdGlvblZhbHVlRm91cnRoKCkgJiZcblx0XHRcdC0xID09PSB0aGlzLmFjdGlvblZhbHVlRm91cnRoKCkuaW5kZXhPZignQCcpXG5cdFx0KSB7XG5cdFx0XHR0aGlzLmFjdGlvblZhbHVlRm91cnRoLmVycm9yKHRydWUpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHRoaXMubmFtZS5lcnJvcihmYWxzZSk7XG5cdFx0dGhpcy5hY3Rpb25WYWx1ZS5lcnJvcihmYWxzZSk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdHRvSnNvbigpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0SUQ6IHRoaXMuaWQsXG5cdFx0XHRFbmFibGVkOiB0aGlzLmVuYWJsZWQoKSA/ICcxJyA6ICcwJyxcblx0XHRcdE5hbWU6IHRoaXMubmFtZSgpLFxuXHRcdFx0Q29uZGl0aW9uc1R5cGU6IHRoaXMuY29uZGl0aW9uc1R5cGUoKSxcblx0XHRcdENvbmRpdGlvbnM6IF8ubWFwKHRoaXMuY29uZGl0aW9ucygpLCAoaXRlbSkgPT4gaXRlbS50b0pzb24oKSksXG5cblx0XHRcdEFjdGlvblZhbHVlOiB0aGlzLmFjdGlvblZhbHVlKCksXG5cdFx0XHRBY3Rpb25WYWx1ZVNlY29uZDogdGhpcy5hY3Rpb25WYWx1ZVNlY29uZCgpLFxuXHRcdFx0QWN0aW9uVmFsdWVUaGlyZDogdGhpcy5hY3Rpb25WYWx1ZVRoaXJkKCksXG5cdFx0XHRBY3Rpb25WYWx1ZUZvdXJ0aDogdGhpcy5hY3Rpb25WYWx1ZUZvdXJ0aCgpLFxuXHRcdFx0QWN0aW9uVHlwZTogdGhpcy5hY3Rpb25UeXBlKCksXG5cblx0XHRcdFN0b3A6IHRoaXMuYWN0aW9uTm9TdG9wKCkgPyAnMCcgOiAnMScsXG5cdFx0XHRLZWVwOiB0aGlzLmFjdGlvbktlZXAoKSA/ICcxJyA6ICcwJyxcblx0XHRcdE1hcmtBc1JlYWQ6IHRoaXMuYWN0aW9uTWFya0FzUmVhZCgpID8gJzEnIDogJzAnXG5cdFx0fTtcblx0fVxuXG5cdGFkZENvbmRpdGlvbigpIHtcblx0XHR0aGlzLmNvbmRpdGlvbnMucHVzaChuZXcgRmlsdGVyQ29uZGl0aW9uTW9kZWwoKSk7XG5cdH1cblxuXHRyZW1vdmVDb25kaXRpb24ob0NvbmRpdGlvblRvRGVsZXRlKSB7XG5cdFx0dGhpcy5jb25kaXRpb25zLnJlbW92ZShvQ29uZGl0aW9uVG9EZWxldGUpO1xuXHRcdGRlbGVnYXRlUnVuT25EZXN0cm95KG9Db25kaXRpb25Ub0RlbGV0ZSk7XG5cdH1cblxuXHRzZXRSZWNpcGllbnRzKCkge1xuXHRcdHRoaXMuYWN0aW9uVmFsdWVGb3VydGgoQWNjb3VudFN0b3JlLmFjY291bnRzRW1haWxzKCkuam9pbignLCAnKSk7XG5cdH1cblxuXHRwYXJzZShqc29uKSB7XG5cdFx0bGV0IHJlc3VsdCA9IGZhbHNlO1xuXHRcdGlmIChqc29uICYmICdPYmplY3QvRmlsdGVyJyA9PT0ganNvblsnQE9iamVjdCddKSB7XG5cdFx0XHR0aGlzLmlkID0gcFN0cmluZyhqc29uLklEKTtcblx0XHRcdHRoaXMubmFtZShwU3RyaW5nKGpzb24uTmFtZSkpO1xuXHRcdFx0dGhpcy5lbmFibGVkKCEhanNvbi5FbmFibGVkKTtcblxuXHRcdFx0dGhpcy5jb25kaXRpb25zVHlwZShwU3RyaW5nKGpzb24uQ29uZGl0aW9uc1R5cGUpKTtcblxuXHRcdFx0dGhpcy5jb25kaXRpb25zKFtdKTtcblxuXHRcdFx0aWYgKGlzTm9uRW1wdHlBcnJheShqc29uLkNvbmRpdGlvbnMpKSB7XG5cdFx0XHRcdHRoaXMuY29uZGl0aW9ucyhcblx0XHRcdFx0XHRfLmNvbXBhY3QoXG5cdFx0XHRcdFx0XHRfLm1hcChqc29uLkNvbmRpdGlvbnMsIChhRGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zdCBmaWx0ZXJDb25kaXRpb24gPSBuZXcgRmlsdGVyQ29uZGl0aW9uTW9kZWwoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGZpbHRlckNvbmRpdGlvbiAmJiBmaWx0ZXJDb25kaXRpb24ucGFyc2UoYURhdGEpID8gZmlsdGVyQ29uZGl0aW9uIDogbnVsbDtcblx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLmFjdGlvblR5cGUocFN0cmluZyhqc29uLkFjdGlvblR5cGUpKTtcblxuXHRcdFx0dGhpcy5hY3Rpb25WYWx1ZShwU3RyaW5nKGpzb24uQWN0aW9uVmFsdWUpKTtcblx0XHRcdHRoaXMuYWN0aW9uVmFsdWVTZWNvbmQocFN0cmluZyhqc29uLkFjdGlvblZhbHVlU2Vjb25kKSk7XG5cdFx0XHR0aGlzLmFjdGlvblZhbHVlVGhpcmQocFN0cmluZyhqc29uLkFjdGlvblZhbHVlVGhpcmQpKTtcblx0XHRcdHRoaXMuYWN0aW9uVmFsdWVGb3VydGgocFN0cmluZyhqc29uLkFjdGlvblZhbHVlRm91cnRoKSk7XG5cblx0XHRcdHRoaXMuYWN0aW9uTm9TdG9wKCFqc29uLlN0b3ApO1xuXHRcdFx0dGhpcy5hY3Rpb25LZWVwKCEhanNvbi5LZWVwKTtcblx0XHRcdHRoaXMuYWN0aW9uTWFya0FzUmVhZCghIWpzb24uTWFya0FzUmVhZCk7XG5cblx0XHRcdHJlc3VsdCA9IHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdGNsb25lU2VsZigpIHtcblx0XHRjb25zdCBmaWx0ZXIgPSBuZXcgRmlsdGVyTW9kZWwoKTtcblxuXHRcdGZpbHRlci5pZCA9IHRoaXMuaWQ7XG5cblx0XHRmaWx0ZXIuZW5hYmxlZCh0aGlzLmVuYWJsZWQoKSk7XG5cblx0XHRmaWx0ZXIubmFtZSh0aGlzLm5hbWUoKSk7XG5cdFx0ZmlsdGVyLm5hbWUuZXJyb3IodGhpcy5uYW1lLmVycm9yKCkpO1xuXG5cdFx0ZmlsdGVyLmNvbmRpdGlvbnNUeXBlKHRoaXMuY29uZGl0aW9uc1R5cGUoKSk7XG5cblx0XHRmaWx0ZXIuYWN0aW9uTWFya0FzUmVhZCh0aGlzLmFjdGlvbk1hcmtBc1JlYWQoKSk7XG5cblx0XHRmaWx0ZXIuYWN0aW9uVHlwZSh0aGlzLmFjdGlvblR5cGUoKSk7XG5cblx0XHRmaWx0ZXIuYWN0aW9uVmFsdWUodGhpcy5hY3Rpb25WYWx1ZSgpKTtcblx0XHRmaWx0ZXIuYWN0aW9uVmFsdWUuZXJyb3IodGhpcy5hY3Rpb25WYWx1ZS5lcnJvcigpKTtcblxuXHRcdGZpbHRlci5hY3Rpb25WYWx1ZVNlY29uZCh0aGlzLmFjdGlvblZhbHVlU2Vjb25kKCkpO1xuXHRcdGZpbHRlci5hY3Rpb25WYWx1ZVRoaXJkKHRoaXMuYWN0aW9uVmFsdWVUaGlyZCgpKTtcblx0XHRmaWx0ZXIuYWN0aW9uVmFsdWVGb3VydGgodGhpcy5hY3Rpb25WYWx1ZUZvdXJ0aCgpKTtcblxuXHRcdGZpbHRlci5hY3Rpb25LZWVwKHRoaXMuYWN0aW9uS2VlcCgpKTtcblx0XHRmaWx0ZXIuYWN0aW9uTm9TdG9wKHRoaXMuYWN0aW9uTm9TdG9wKCkpO1xuXG5cdFx0ZmlsdGVyLmNvbmRpdGlvbnMoXy5tYXAodGhpcy5jb25kaXRpb25zKCksIChpdGVtKSA9PiBpdGVtLmNsb25lU2VsZigpKSk7XG5cblx0XHRyZXR1cm4gZmlsdGVyO1xuXHR9XG59XG5cbmV4cG9ydCB7IEZpbHRlck1vZGVsLCBGaWx0ZXJNb2RlbCBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBGaWx0ZXJDb25kaXRpb25GaWVsZCwgRmlsdGVyQ29uZGl0aW9uVHlwZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBwU3RyaW5nIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IHsgQWJzdHJhY3RNb2RlbCB9IGZyb20gJ0tub2luL0Fic3RyYWN0TW9kZWwnO1xuXG5jbGFzcyBGaWx0ZXJDb25kaXRpb25Nb2RlbCBleHRlbmRzIEFic3RyYWN0TW9kZWwge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcignRmlsdGVyQ29uZGl0aW9uTW9kZWwnKTtcblxuXHRcdHRoaXMuZmllbGQgPSBrby5vYnNlcnZhYmxlKEZpbHRlckNvbmRpdGlvbkZpZWxkLkZyb20pO1xuXHRcdHRoaXMudHlwZSA9IGtvLm9ic2VydmFibGUoRmlsdGVyQ29uZGl0aW9uVHlwZS5Db250YWlucyk7XG5cdFx0dGhpcy52YWx1ZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmFsdWUuZXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMudmFsdWVTZWNvbmQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnZhbHVlU2Vjb25kLmVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnRlbXBsYXRlID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0bGV0IHRlbXBsYXRlID0gJyc7XG5cdFx0XHRzd2l0Y2ggKHRoaXMuZmllbGQoKSkge1xuXHRcdFx0XHRjYXNlIEZpbHRlckNvbmRpdGlvbkZpZWxkLlNpemU6XG5cdFx0XHRcdFx0dGVtcGxhdGUgPSAnU2V0dGluZ3NGaWx0ZXJzQ29uZGl0aW9uU2l6ZSc7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgRmlsdGVyQ29uZGl0aW9uRmllbGQuSGVhZGVyOlxuXHRcdFx0XHRcdHRlbXBsYXRlID0gJ1NldHRpbmdzRmlsdGVyc0NvbmRpdGlvbk1vcmUnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRcdHRlbXBsYXRlID0gJ1NldHRpbmdzRmlsdGVyc0NvbmRpdGlvbkRlZmF1bHQnO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdGVtcGxhdGU7XG5cdFx0fSwgdGhpcyk7XG5cblx0XHR0aGlzLmZpZWxkLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLnZhbHVlKCcnKTtcblx0XHRcdHRoaXMudmFsdWVTZWNvbmQoJycpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5yZWdEaXNwb3NhYmxlcyhbdGhpcy50ZW1wbGF0ZV0pO1xuXHR9XG5cblx0dmVyaWZ5KCkge1xuXHRcdGlmICgnJyA9PT0gdGhpcy52YWx1ZSgpKSB7XG5cdFx0XHR0aGlzLnZhbHVlLmVycm9yKHRydWUpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmIChGaWx0ZXJDb25kaXRpb25GaWVsZC5IZWFkZXIgPT09IHRoaXMuZmllbGQoKSAmJiAnJyA9PT0gdGhpcy52YWx1ZVNlY29uZCgpKSB7XG5cdFx0XHR0aGlzLnZhbHVlU2Vjb25kLmVycm9yKHRydWUpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0cGFyc2UoanNvbikge1xuXHRcdGlmIChqc29uICYmIGpzb24uRmllbGQgJiYganNvbi5UeXBlKSB7XG5cdFx0XHR0aGlzLmZpZWxkKHBTdHJpbmcoanNvbi5GaWVsZCkpO1xuXHRcdFx0dGhpcy50eXBlKHBTdHJpbmcoanNvbi5UeXBlKSk7XG5cdFx0XHR0aGlzLnZhbHVlKHBTdHJpbmcoanNvbi5WYWx1ZSkpO1xuXHRcdFx0dGhpcy52YWx1ZVNlY29uZChwU3RyaW5nKGpzb24uVmFsdWVTZWNvbmQpKTtcblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0dG9Kc29uKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRGaWVsZDogdGhpcy5maWVsZCgpLFxuXHRcdFx0VHlwZTogdGhpcy50eXBlKCksXG5cdFx0XHRWYWx1ZTogdGhpcy52YWx1ZSgpLFxuXHRcdFx0VmFsdWVTZWNvbmQ6IHRoaXMudmFsdWVTZWNvbmQoKVxuXHRcdH07XG5cdH1cblxuXHRjbG9uZVNlbGYoKSB7XG5cdFx0Y29uc3QgZmlsdGVyQ29uZCA9IG5ldyBGaWx0ZXJDb25kaXRpb25Nb2RlbCgpO1xuXG5cdFx0ZmlsdGVyQ29uZC5maWVsZCh0aGlzLmZpZWxkKCkpO1xuXHRcdGZpbHRlckNvbmQudHlwZSh0aGlzLnR5cGUoKSk7XG5cdFx0ZmlsdGVyQ29uZC52YWx1ZSh0aGlzLnZhbHVlKCkpO1xuXHRcdGZpbHRlckNvbmQudmFsdWVTZWNvbmQodGhpcy52YWx1ZVNlY29uZCgpKTtcblxuXHRcdHJldHVybiBmaWx0ZXJDb25kO1xuXHR9XG59XG5cbmV4cG9ydCB7IEZpbHRlckNvbmRpdGlvbk1vZGVsLCBGaWx0ZXJDb25kaXRpb25Nb2RlbCBhcyBkZWZhdWx0IH07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdy5xcjsiLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrZXkgZnJvbSAna2V5JztcblxuaW1wb3J0IHsgS2V5U3RhdGUsIE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5cbmltcG9ydCB7IHBvcHVwIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5AcG9wdXAoe1xuXHRuYW1lOiAnVmlldy9Qb3B1cC9LZXlib2FyZFNob3J0Y3V0c0hlbHAnLFxuXHR0ZW1wbGF0ZUlEOiAnUG9wdXBzS2V5Ym9hcmRTaG9ydGN1dHNIZWxwJ1xufSlcbmNsYXNzIEtleWJvYXJkU2hvcnRjdXRzSGVscFBvcHVwVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXHRcdHRoaXMuc0RlZmF1bHRLZXlTY29wZSA9IEtleVN0YXRlLlBvcHVwS2V5Ym9hcmRTaG9ydGN1dHNIZWxwO1xuXHR9XG5cblx0b25CdWlsZChkb20pIHtcblx0XHRrZXkoXG5cdFx0XHQndGFiLCBzaGlmdCt0YWIsIGxlZnQsIHJpZ2h0Jyxcblx0XHRcdEtleVN0YXRlLlBvcHVwS2V5Ym9hcmRTaG9ydGN1dHNIZWxwLFxuXHRcdFx0Xy50aHJvdHRsZSgoZXZlbnQsIGhhbmRsZXIpID0+IHtcblx0XHRcdFx0aWYgKGV2ZW50ICYmIGhhbmRsZXIpIHtcblx0XHRcdFx0XHRjb25zdCAkdGFicyA9IGRvbS5maW5kKCcubmF2Lm5hdi10YWJzID4gbGknKSxcblx0XHRcdFx0XHRcdGlzTmV4dCA9IGhhbmRsZXIgJiYgKCd0YWInID09PSBoYW5kbGVyLnNob3J0Y3V0IHx8ICdyaWdodCcgPT09IGhhbmRsZXIuc2hvcnRjdXQpO1xuXG5cdFx0XHRcdFx0bGV0IGluZGV4ID0gJHRhYnMuaW5kZXgoJHRhYnMuZmlsdGVyKCcuYWN0aXZlJykpO1xuXHRcdFx0XHRcdGlmICghaXNOZXh0ICYmIDAgPCBpbmRleCkge1xuXHRcdFx0XHRcdFx0aW5kZXggLT0gMTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGlzTmV4dCAmJiBpbmRleCA8ICR0YWJzLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHRcdGluZGV4ICs9IDE7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGluZGV4ID0gaXNOZXh0ID8gMCA6ICR0YWJzLmxlbmd0aCAtIDE7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0JHRhYnNcblx0XHRcdFx0XHRcdC5lcShpbmRleClcblx0XHRcdFx0XHRcdC5maW5kKCdhW2RhdGEtdG9nZ2xlPVwidGFiXCJdJylcblx0XHRcdFx0XHRcdC50YWIoJ3Nob3cnKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH0sIE1hZ2ljcy5UaW1lMTAwbXMpXG5cdFx0KTtcblx0fVxufVxuXG5leHBvcnQgeyBLZXlib2FyZFNob3J0Y3V0c0hlbHBQb3B1cFZpZXcsIEtleWJvYXJkU2hvcnRjdXRzSGVscFBvcHVwVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCAkIGZyb20gJyQnO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcbmltcG9ydCBrZXkgZnJvbSAna2V5JztcbmltcG9ydCBKdWEgZnJvbSAnSnVhJztcblxuaW1wb3J0IHtcblx0U2F2ZVNldHRpbmdzU3RlcCxcblx0Q29udGFjdFByb3BlcnR5VHlwZSxcblx0Q29tcG9zZVR5cGUsXG5cdENhcGEsXG5cdE1hZ2ljcyxcblx0U3RvcmFnZVJlc3VsdFR5cGUsXG5cdE5vdGlmaWNhdGlvbixcblx0S2V5U3RhdGVcbn0gZnJvbSAnQ29tbW9uL0VudW1zJztcblxuaW1wb3J0IHtcblx0ZGVsZWdhdGVSdW5PbkRlc3Ryb3ksXG5cdGNvbXB1dGVkUGFnZW5hdG9ySGVscGVyLFxuXHRpbkFycmF5LFxuXHR0cmltLFxuXHR3aW5kb3dSZXNpemVDYWxsYmFjayxcblx0aXNOb25FbXB0eUFycmF5LFxuXHRmYWtlTWQ1LFxuXHRwSW50LFxuXHRpc1VuZFxufSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5pbXBvcnQgeyBDT05UQUNUU19QRVJfUEFHRSB9IGZyb20gJ0NvbW1vbi9Db25zdHMnO1xuaW1wb3J0IHsgYk1vYmlsZURldmljZSB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcblxuaW1wb3J0IHsgU2VsZWN0b3IgfSBmcm9tICdDb21tb24vU2VsZWN0b3InO1xuaW1wb3J0IHsgZXhwb3J0Q29udGFjdHNWY2YsIGV4cG9ydENvbnRhY3RzQ3N2LCB1cGxvYWRDb250YWN0cyB9IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5pbXBvcnQgeyBpMThuLCBnZXROb3RpZmljYXRpb24gfSBmcm9tICdDb21tb24vVHJhbnNsYXRvcic7XG5cbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1NldHRpbmdzJztcbmltcG9ydCBDb250YWN0U3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQ29udGFjdCc7XG5cbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5pbXBvcnQgeyBFbWFpbE1vZGVsIH0gZnJvbSAnTW9kZWwvRW1haWwnO1xuaW1wb3J0IHsgQ29udGFjdE1vZGVsIH0gZnJvbSAnTW9kZWwvQ29udGFjdCc7XG5pbXBvcnQgeyBDb250YWN0UHJvcGVydHlNb2RlbCB9IGZyb20gJ01vZGVsL0NvbnRhY3RQcm9wZXJ0eSc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyBwb3B1cCwgY29tbWFuZCwgc2hvd1NjcmVlblBvcHVwLCBoaWRlU2NyZWVuUG9wdXAsIHJvdXRlT24sIHJvdXRlT2ZmIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5AcG9wdXAoe1xuXHRuYW1lOiAnVmlldy9Qb3B1cC9Db250YWN0cycsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNDb250YWN0cydcbn0pXG5jbGFzcyBDb250YWN0c1BvcHVwVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0Y29uc3QgZkZhc3RDbGVhckVtcHR5TGlzdEhlbHBlciA9IChsaXN0KSA9PiB7XG5cdFx0XHRpZiAobGlzdCAmJiAwIDwgbGlzdC5sZW5ndGgpIHtcblx0XHRcdFx0dGhpcy52aWV3UHJvcGVydGllcy5yZW1vdmVBbGwobGlzdCk7XG5cdFx0XHRcdGRlbGVnYXRlUnVuT25EZXN0cm95KGxpc3QpO1xuXHRcdFx0fVxuXHRcdH07XG5cblx0XHR0aGlzLmJCYWNrVG9Db21wb3NlID0gZmFsc2U7XG5cdFx0dGhpcy5zTGFzdENvbXBvc2VGb2N1c2VkRmllbGQgPSAnJztcblxuXHRcdHRoaXMuYWxsb3dDb250YWN0c1N5bmMgPSBDb250YWN0U3RvcmUuYWxsb3dDb250YWN0c1N5bmM7XG5cdFx0dGhpcy5lbmFibGVDb250YWN0c1N5bmMgPSBDb250YWN0U3RvcmUuZW5hYmxlQ29udGFjdHNTeW5jO1xuXHRcdHRoaXMuYWxsb3dFeHBvcnQgPSAhYk1vYmlsZURldmljZTtcblxuXHRcdHRoaXMuc2VhcmNoID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5jb250YWN0c0NvdW50ID0ga28ub2JzZXJ2YWJsZSgwKTtcblx0XHR0aGlzLmNvbnRhY3RzID0gQ29udGFjdFN0b3JlLmNvbnRhY3RzO1xuXG5cdFx0dGhpcy5jdXJyZW50Q29udGFjdCA9IGtvLm9ic2VydmFibGUobnVsbCk7XG5cblx0XHR0aGlzLmltcG9ydFVwbG9hZGVyQnV0dG9uID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdHRoaXMuY29udGFjdHNQYWdlID0ga28ub2JzZXJ2YWJsZSgxKTtcblx0XHR0aGlzLmNvbnRhY3RzUGFnZUNvdW50ID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaVBhZ2UgPSB3aW5kb3cuTWF0aC5jZWlsKHRoaXMuY29udGFjdHNDb3VudCgpIC8gQ09OVEFDVFNfUEVSX1BBR0UpO1xuXHRcdFx0cmV0dXJuIDAgPj0gaVBhZ2UgPyAxIDogaVBhZ2U7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmNvbnRhY3RzUGFnZW5hdG9yID0ga28uY29tcHV0ZWQoY29tcHV0ZWRQYWdlbmF0b3JIZWxwZXIodGhpcy5jb250YWN0c1BhZ2UsIHRoaXMuY29udGFjdHNQYWdlQ291bnQpKTtcblxuXHRcdHRoaXMuZW1wdHlTZWxlY3Rpb24gPSBrby5vYnNlcnZhYmxlKHRydWUpO1xuXHRcdHRoaXMudmlld0NsZWFyU2VhcmNoID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnZpZXdJRCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmlld1JlYWRPbmx5ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy52aWV3UHJvcGVydGllcyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cblx0XHR0aGlzLnZpZXdTYXZlVHJpZ2dlciA9IGtvLm9ic2VydmFibGUoU2F2ZVNldHRpbmdzU3RlcC5JZGxlKTtcblxuXHRcdHRoaXMudmlld1Byb3BlcnRpZXNOYW1lcyA9IGtvLmNvbXB1dGVkKCgpID0+XG5cdFx0XHRfLmZpbHRlcihcblx0XHRcdFx0dGhpcy52aWV3UHJvcGVydGllcygpLFxuXHRcdFx0XHQocHJvcGVydHkpID0+IC0xIDwgaW5BcnJheShwcm9wZXJ0eS50eXBlKCksIFtDb250YWN0UHJvcGVydHlUeXBlLkZpcnN0TmFtZSwgQ29udGFjdFByb3BlcnR5VHlwZS5MYXN0TmFtZV0pXG5cdFx0XHQpXG5cdFx0KTtcblx0XHR0aGlzLnZpZXdQcm9wZXJ0aWVzT3RoZXIgPSBrby5jb21wdXRlZCgoKSA9PlxuXHRcdFx0Xy5maWx0ZXIodGhpcy52aWV3UHJvcGVydGllcygpLCAocHJvcGVydHkpID0+IC0xIDwgaW5BcnJheShwcm9wZXJ0eS50eXBlKCksIFtDb250YWN0UHJvcGVydHlUeXBlLk5pY2tdKSlcblx0XHQpO1xuXG5cdFx0dGhpcy52aWV3UHJvcGVydGllc0VtYWlscyA9IGtvLmNvbXB1dGVkKCgpID0+XG5cdFx0XHRfLmZpbHRlcih0aGlzLnZpZXdQcm9wZXJ0aWVzKCksIChwcm9wZXJ0eSkgPT4gQ29udGFjdFByb3BlcnR5VHlwZS5FbWFpbCA9PT0gcHJvcGVydHkudHlwZSgpKVxuXHRcdCk7XG5cblx0XHR0aGlzLnZpZXdQcm9wZXJ0aWVzV2ViID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdF8uZmlsdGVyKHRoaXMudmlld1Byb3BlcnRpZXMoKSwgKHByb3BlcnR5KSA9PiBDb250YWN0UHJvcGVydHlUeXBlLldlYiA9PT0gcHJvcGVydHkudHlwZSgpKVxuXHRcdCk7XG5cblx0XHR0aGlzLnZpZXdIYXNOb25FbXB0eVJlcXVpcmVkUHJvcGVydGllcyA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IG5hbWVzID0gdGhpcy52aWV3UHJvcGVydGllc05hbWVzKCksXG5cdFx0XHRcdGVtYWlscyA9IHRoaXMudmlld1Byb3BlcnRpZXNFbWFpbHMoKSxcblx0XHRcdFx0ZkZpbHRlciA9IChwcm9wZXJ0eSkgPT4gJycgIT09IHRyaW0ocHJvcGVydHkudmFsdWUoKSk7XG5cblx0XHRcdHJldHVybiAhIShfLmZpbmQobmFtZXMsIGZGaWx0ZXIpIHx8IF8uZmluZChlbWFpbHMsIGZGaWx0ZXIpKTtcblx0XHR9KTtcblxuXHRcdHRoaXMudmlld1Byb3BlcnRpZXNQaG9uZXMgPSBrby5jb21wdXRlZCgoKSA9PlxuXHRcdFx0Xy5maWx0ZXIodGhpcy52aWV3UHJvcGVydGllcygpLCAocHJvcGVydHkpID0+IENvbnRhY3RQcm9wZXJ0eVR5cGUuUGhvbmUgPT09IHByb3BlcnR5LnR5cGUoKSlcblx0XHQpO1xuXG5cdFx0dGhpcy52aWV3UHJvcGVydGllc0VtYWlsc05vbkVtcHR5ID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdF8uZmlsdGVyKHRoaXMudmlld1Byb3BlcnRpZXNOYW1lcygpLCAocHJvcGVydHkpID0+ICcnICE9PSB0cmltKHByb3BlcnR5LnZhbHVlKCkpKVxuXHRcdCk7XG5cblx0XHRjb25zdCBwcm9wZXJ0eUZvY3VzZWQgPSAocHJvcGVydHkpID0+IHtcblx0XHRcdGNvbnN0IGZvY3VzZWQgPSBwcm9wZXJ0eS5mb2N1c2VkKCk7XG5cdFx0XHRyZXR1cm4gJycgPT09IHRyaW0ocHJvcGVydHkudmFsdWUoKSkgJiYgIWZvY3VzZWQ7XG5cdFx0fTtcblxuXHRcdHRoaXMudmlld1Byb3BlcnRpZXNFbWFpbHNFbXB0eUFuZE9uRm9jdXNlZCA9IGtvLmNvbXB1dGVkKCgpID0+XG5cdFx0XHRfLmZpbHRlcih0aGlzLnZpZXdQcm9wZXJ0aWVzRW1haWxzKCksIHByb3BlcnR5Rm9jdXNlZClcblx0XHQpO1xuXG5cdFx0dGhpcy52aWV3UHJvcGVydGllc1Bob25lc0VtcHR5QW5kT25Gb2N1c2VkID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdF8uZmlsdGVyKHRoaXMudmlld1Byb3BlcnRpZXNQaG9uZXMoKSwgcHJvcGVydHlGb2N1c2VkKVxuXHRcdCk7XG5cblx0XHR0aGlzLnZpZXdQcm9wZXJ0aWVzV2ViRW1wdHlBbmRPbkZvY3VzZWQgPSBrby5jb21wdXRlZCgoKSA9PiBfLmZpbHRlcih0aGlzLnZpZXdQcm9wZXJ0aWVzV2ViKCksIHByb3BlcnR5Rm9jdXNlZCkpO1xuXG5cdFx0dGhpcy52aWV3UHJvcGVydGllc090aGVyRW1wdHlBbmRPbkZvY3VzZWQgPSBrby5jb21wdXRlZCgoKSA9PlxuXHRcdFx0Xy5maWx0ZXIodGhpcy52aWV3UHJvcGVydGllc090aGVyKCksIHByb3BlcnR5Rm9jdXNlZClcblx0XHQpO1xuXG5cdFx0dGhpcy52aWV3UHJvcGVydGllc0VtYWlsc0VtcHR5QW5kT25Gb2N1c2VkLnN1YnNjcmliZShmRmFzdENsZWFyRW1wdHlMaXN0SGVscGVyKTtcblx0XHR0aGlzLnZpZXdQcm9wZXJ0aWVzUGhvbmVzRW1wdHlBbmRPbkZvY3VzZWQuc3Vic2NyaWJlKGZGYXN0Q2xlYXJFbXB0eUxpc3RIZWxwZXIpO1xuXHRcdHRoaXMudmlld1Byb3BlcnRpZXNXZWJFbXB0eUFuZE9uRm9jdXNlZC5zdWJzY3JpYmUoZkZhc3RDbGVhckVtcHR5TGlzdEhlbHBlcik7XG5cdFx0dGhpcy52aWV3UHJvcGVydGllc090aGVyRW1wdHlBbmRPbkZvY3VzZWQuc3Vic2NyaWJlKGZGYXN0Q2xlYXJFbXB0eUxpc3RIZWxwZXIpO1xuXG5cdFx0dGhpcy52aWV3U2F2aW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnVzZUNoZWNrYm94ZXNJbkxpc3QgPSBTZXR0aW5nc1N0b3JlLnVzZUNoZWNrYm94ZXNJbkxpc3Q7XG5cblx0XHR0aGlzLnNlYXJjaC5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5yZWxvYWRDb250YWN0TGlzdCgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5jb250YWN0cy5zdWJzY3JpYmUod2luZG93UmVzaXplQ2FsbGJhY2spO1xuXHRcdHRoaXMudmlld1Byb3BlcnRpZXMuc3Vic2NyaWJlKHdpbmRvd1Jlc2l6ZUNhbGxiYWNrKTtcblxuXHRcdHRoaXMuY29udGFjdHNDaGVja2VkID0ga28uY29tcHV0ZWQoKCkgPT4gXy5maWx0ZXIodGhpcy5jb250YWN0cygpLCAoaXRlbSkgPT4gaXRlbS5jaGVja2VkKCkpKTtcblxuXHRcdHRoaXMuY29udGFjdHNDaGVja2VkT3JTZWxlY3RlZCA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGNoZWNrZWQgPSB0aGlzLmNvbnRhY3RzQ2hlY2tlZCgpLFxuXHRcdFx0XHRzZWxlY3RlZCA9IHRoaXMuY3VycmVudENvbnRhY3QoKTtcblxuXHRcdFx0cmV0dXJuIF8udW5pb24oY2hlY2tlZCwgc2VsZWN0ZWQgPyBbc2VsZWN0ZWRdIDogW10pO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5jb250YWN0c0NoZWNrZWRPclNlbGVjdGVkVWlkcyA9IGtvLmNvbXB1dGVkKCgpID0+XG5cdFx0XHRfLm1hcCh0aGlzLmNvbnRhY3RzQ2hlY2tlZE9yU2VsZWN0ZWQoKSwgKGNvbnRhY3QpID0+IGNvbnRhY3QuaWRDb250YWN0KVxuXHRcdCk7XG5cblx0XHR0aGlzLnNlbGVjdG9yID0gbmV3IFNlbGVjdG9yKFxuXHRcdFx0dGhpcy5jb250YWN0cyxcblx0XHRcdHRoaXMuY3VycmVudENvbnRhY3QsXG5cdFx0XHRudWxsLFxuXHRcdFx0Jy5lLWNvbnRhY3QtaXRlbSAuYWN0aW9uSGFuZGxlJyxcblx0XHRcdCcuZS1jb250YWN0LWl0ZW0uc2VsZWN0ZWQnLFxuXHRcdFx0Jy5lLWNvbnRhY3QtaXRlbSAuY2hlY2tib3hJdGVtJyxcblx0XHRcdCcuZS1jb250YWN0LWl0ZW0uZm9jdXNlZCdcblx0XHQpO1xuXG5cdFx0dGhpcy5zZWxlY3Rvci5vbignb25JdGVtU2VsZWN0JywgKGNvbnRhY3QpID0+IHtcblx0XHRcdHRoaXMucG9wdWxhdGVWaWV3Q29udGFjdChjb250YWN0ID8gY29udGFjdCA6IG51bGwpO1xuXHRcdFx0aWYgKCFjb250YWN0KSB7XG5cdFx0XHRcdHRoaXMuZW1wdHlTZWxlY3Rpb24odHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNlbGVjdG9yLm9uKCdvbkl0ZW1HZXRVaWQnLCAoY29udGFjdCkgPT4gKGNvbnRhY3QgPyBjb250YWN0LmdlbmVyYXRlVWlkKCkgOiAnJykpO1xuXG5cdFx0dGhpcy5iRHJvcFBhZ2VBZnRlckRlbGV0ZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy53YXRjaERpcnR5ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy53YXRjaEhhc2ggPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMudmlld0hhc2ggPSBrby5jb21wdXRlZCgoKSA9PiAnJyArIF8ubWFwKHRoaXMudmlld1Byb3BlcnRpZXMoKSwgKG9JdGVtKSA9PiBvSXRlbS52YWx1ZSgpKS5qb2luKCcnKSk7XG5cblx0XHQvLyB0aGlzLnNhdmVDb21tYW5kRGVib3VuY2UgPSBfLmRlYm91bmNlKF8uYmluZCh0aGlzLnNhdmVDb21tYW5kLCB0aGlzKSwgMTAwMCk7XG5cblx0XHR0aGlzLnZpZXdIYXNoLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy53YXRjaEhhc2goKSAmJiAhdGhpcy52aWV3UmVhZE9ubHkoKSAmJiAhdGhpcy53YXRjaERpcnR5KCkpIHtcblx0XHRcdFx0dGhpcy53YXRjaERpcnR5KHRydWUpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5zRGVmYXVsdEtleVNjb3BlID0gS2V5U3RhdGUuQ29udGFjdExpc3Q7XG5cdH1cblxuXHRAY29tbWFuZCgpXG5cdG5ld0NvbW1hbmQoKSB7XG5cdFx0dGhpcy5wb3B1bGF0ZVZpZXdDb250YWN0KG51bGwpO1xuXHRcdHRoaXMuY3VycmVudENvbnRhY3QobnVsbCk7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gMCA8IHNlbGYuY29udGFjdHNDaGVja2VkT3JTZWxlY3RlZCgpLmxlbmd0aClcblx0ZGVsZXRlQ29tbWFuZCgpIHtcblx0XHR0aGlzLmRlbGV0ZVNlbGVjdGVkQ29udGFjdHMoKTtcblx0XHR0aGlzLmVtcHR5U2VsZWN0aW9uKHRydWUpO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+IDAgPCBzZWxmLmNvbnRhY3RzQ2hlY2tlZE9yU2VsZWN0ZWQoKS5sZW5ndGgpXG5cdG5ld01lc3NhZ2VDb21tYW5kKCkge1xuXHRcdGlmICghU2V0dGluZ3MuY2FwYShDYXBhLkNvbXBvc2VyKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGxldCBhRSA9IFtdLFxuXHRcdFx0dG9FbWFpbHMgPSBudWxsLFxuXHRcdFx0Y2NFbWFpbHMgPSBudWxsLFxuXHRcdFx0YmNjRW1haWxzID0gbnVsbDtcblxuXHRcdGNvbnN0IGFDID0gdGhpcy5jb250YWN0c0NoZWNrZWRPclNlbGVjdGVkKCk7XG5cdFx0aWYgKGlzTm9uRW1wdHlBcnJheShhQykpIHtcblx0XHRcdGFFID0gXy5tYXAoYUMsIChvSXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAob0l0ZW0pIHtcblx0XHRcdFx0XHRjb25zdCBkYXRhID0gb0l0ZW0uZ2V0TmFtZUFuZEVtYWlsSGVscGVyKCksXG5cdFx0XHRcdFx0XHRlbWFpbCA9IGRhdGEgPyBuZXcgRW1haWxNb2RlbChkYXRhWzBdLCBkYXRhWzFdKSA6IG51bGw7XG5cblx0XHRcdFx0XHRpZiAoZW1haWwgJiYgZW1haWwudmFsaWRhdGUoKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGVtYWlsO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fSk7XG5cblx0XHRcdGFFID0gXy5jb21wYWN0KGFFKTtcblx0XHR9XG5cblx0XHRpZiAoaXNOb25FbXB0eUFycmF5KGFFKSkge1xuXHRcdFx0dGhpcy5iQmFja1RvQ29tcG9zZSA9IGZhbHNlO1xuXG5cdFx0XHRoaWRlU2NyZWVuUG9wdXAoQ29udGFjdHNQb3B1cFZpZXcpO1xuXG5cdFx0XHRzd2l0Y2ggKHRoaXMuc0xhc3RDb21wb3NlRm9jdXNlZEZpZWxkKSB7XG5cdFx0XHRcdGNhc2UgJ2NjJzpcblx0XHRcdFx0XHRjY0VtYWlscyA9IGFFO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdiY2MnOlxuXHRcdFx0XHRcdGJjY0VtYWlscyA9IGFFO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICd0byc6XG5cdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0dG9FbWFpbHMgPSBhRTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5zTGFzdENvbXBvc2VGb2N1c2VkRmllbGQgPSAnJztcblxuXHRcdFx0Xy5kZWxheSgoKSA9PiB7XG5cdFx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0NvbXBvc2UnKSwgW0NvbXBvc2VUeXBlLkVtcHR5LCBudWxsLCB0b0VtYWlscywgY2NFbWFpbHMsIGJjY0VtYWlsc10pO1xuXHRcdFx0fSwgTWFnaWNzLlRpbWUyMDBtcyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRAY29tbWFuZCgpXG5cdGNsZWFyQ29tbWFuZCgpIHtcblx0XHR0aGlzLnNlYXJjaCgnJyk7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4ge1xuXHRcdGNvbnN0IGJWID0gc2VsZi52aWV3SGFzTm9uRW1wdHlSZXF1aXJlZFByb3BlcnRpZXMoKSxcblx0XHRcdGJSZWFkT25seSA9IHNlbGYudmlld1JlYWRPbmx5KCk7XG5cdFx0cmV0dXJuICFzZWxmLnZpZXdTYXZpbmcoKSAmJiBiViAmJiAhYlJlYWRPbmx5O1xuXHR9KVxuXHRzYXZlQ29tbWFuZCgpIHtcblx0XHR0aGlzLnZpZXdTYXZpbmcodHJ1ZSk7XG5cdFx0dGhpcy52aWV3U2F2ZVRyaWdnZXIoU2F2ZVNldHRpbmdzU3RlcC5BbmltYXRlKTtcblxuXHRcdGNvbnN0IHJlcXVlc3RVaWQgPSBmYWtlTWQ1KCksXG5cdFx0XHRwcm9wZXJ0aWVzID0gW107XG5cblx0XHRfLmVhY2godGhpcy52aWV3UHJvcGVydGllcygpLCAob0l0ZW0pID0+IHtcblx0XHRcdGlmIChvSXRlbS50eXBlKCkgJiYgb0l0ZW0udHlwZSgpICE9PSBDb250YWN0UHJvcGVydHlUeXBlLkZ1bGxOYW1lICYmICcnICE9PSB0cmltKG9JdGVtLnZhbHVlKCkpKSB7XG5cdFx0XHRcdHByb3BlcnRpZXMucHVzaChbb0l0ZW0udHlwZSgpLCBvSXRlbS52YWx1ZSgpLCBvSXRlbS50eXBlU3RyKCldKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdFJlbW90ZS5jb250YWN0U2F2ZShcblx0XHRcdChzUmVzdWx0LCBvRGF0YSkgPT4ge1xuXHRcdFx0XHRsZXQgcmVzID0gZmFsc2U7XG5cdFx0XHRcdHRoaXMudmlld1NhdmluZyhmYWxzZSk7XG5cblx0XHRcdFx0aWYgKFxuXHRcdFx0XHRcdFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHNSZXN1bHQgJiZcblx0XHRcdFx0XHRvRGF0YSAmJlxuXHRcdFx0XHRcdG9EYXRhLlJlc3VsdCAmJlxuXHRcdFx0XHRcdG9EYXRhLlJlc3VsdC5SZXF1ZXN0VWlkID09PSByZXF1ZXN0VWlkICYmXG5cdFx0XHRcdFx0MCA8IHBJbnQob0RhdGEuUmVzdWx0LlJlc3VsdElEKVxuXHRcdFx0XHQpIHtcblx0XHRcdFx0XHRpZiAoJycgPT09IHRoaXMudmlld0lEKCkpIHtcblx0XHRcdFx0XHRcdHRoaXMudmlld0lEKHBJbnQob0RhdGEuUmVzdWx0LlJlc3VsdElEKSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5yZWxvYWRDb250YWN0TGlzdCgpO1xuXHRcdFx0XHRcdHJlcyA9IHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLnZpZXdTYXZlVHJpZ2dlcihyZXMgPyBTYXZlU2V0dGluZ3NTdGVwLlRydWVSZXN1bHQgOiBTYXZlU2V0dGluZ3NTdGVwLkZhbHNlUmVzdWx0KTtcblx0XHRcdFx0fSwgTWFnaWNzLlRpbWUzNTBtcyk7XG5cblx0XHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHRcdHRoaXMud2F0Y2hEaXJ0eShmYWxzZSk7XG5cblx0XHRcdFx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMudmlld1NhdmVUcmlnZ2VyKFNhdmVTZXR0aW5nc1N0ZXAuSWRsZSk7XG5cdFx0XHRcdFx0fSwgTWFnaWNzLlRpbWUxcyk7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHRyZXF1ZXN0VWlkLFxuXHRcdFx0dGhpcy52aWV3SUQoKSxcblx0XHRcdHByb3BlcnRpZXNcblx0XHQpO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLmNvbnRhY3RzLnN5bmNpbmcoKSAmJiAhc2VsZi5jb250YWN0cy5pbXBvcnRpbmcoKSlcblx0c3luY0NvbW1hbmQoKSB7XG5cdFx0Z2V0QXBwKCkuY29udGFjdHNTeW5jKChyZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzICE9PSByZXN1bHQgfHwgIWRhdGEgfHwgIWRhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdHdpbmRvdy5hbGVydChnZXROb3RpZmljYXRpb24oZGF0YSAmJiBkYXRhLkVycm9yQ29kZSA/IGRhdGEuRXJyb3JDb2RlIDogTm90aWZpY2F0aW9uLkNvbnRhY3RzU3luY0Vycm9yKSk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMucmVsb2FkQ29udGFjdExpc3QodHJ1ZSk7XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRQcm9wZXJ0eVBsYWNlaG9sZGVyKHR5cGUpIHtcblx0XHRsZXQgcmVzdWx0ID0gJyc7XG5cdFx0c3dpdGNoICh0eXBlKSB7XG5cdFx0XHRjYXNlIENvbnRhY3RQcm9wZXJ0eVR5cGUuTGFzdE5hbWU6XG5cdFx0XHRcdHJlc3VsdCA9ICdDT05UQUNUUy9QTEFDRUhPTERFUl9FTlRFUl9MQVNUX05BTUUnO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgQ29udGFjdFByb3BlcnR5VHlwZS5GaXJzdE5hbWU6XG5cdFx0XHRcdHJlc3VsdCA9ICdDT05UQUNUUy9QTEFDRUhPTERFUl9FTlRFUl9GSVJTVF9OQU1FJztcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRjYXNlIENvbnRhY3RQcm9wZXJ0eVR5cGUuTmljazpcblx0XHRcdFx0cmVzdWx0ID0gJ0NPTlRBQ1RTL1BMQUNFSE9MREVSX0VOVEVSX05JQ0tfTkFNRSc7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRhZGROZXdQcm9wZXJ0eSh0eXBlLCB0eXBlU3RyKSB7XG5cdFx0dGhpcy52aWV3UHJvcGVydGllcy5wdXNoKFxuXHRcdFx0bmV3IENvbnRhY3RQcm9wZXJ0eU1vZGVsKHR5cGUsIHR5cGVTdHIgfHwgJycsICcnLCB0cnVlLCB0aGlzLmdldFByb3BlcnR5UGxhY2Vob2xkZXIodHlwZSkpXG5cdFx0KTtcblx0fVxuXG5cdGFkZE5ld09yRm9jdXNQcm9wZXJ0eSh0eXBlLCB0eXBlU3RyKSB7XG5cdFx0Y29uc3QgaXRlbSA9IF8uZmluZCh0aGlzLnZpZXdQcm9wZXJ0aWVzKCksIChwcm9wKSA9PiB0eXBlID09PSBwcm9wLnR5cGUoKSk7XG5cdFx0aWYgKGl0ZW0pIHtcblx0XHRcdGl0ZW0uZm9jdXNlZCh0cnVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5hZGROZXdQcm9wZXJ0eSh0eXBlLCB0eXBlU3RyKTtcblx0XHR9XG5cdH1cblxuXHRhZGROZXdFbWFpbCgpIHtcblx0XHR0aGlzLmFkZE5ld1Byb3BlcnR5KENvbnRhY3RQcm9wZXJ0eVR5cGUuRW1haWwsICdIb21lJyk7XG5cdH1cblxuXHRhZGROZXdQaG9uZSgpIHtcblx0XHR0aGlzLmFkZE5ld1Byb3BlcnR5KENvbnRhY3RQcm9wZXJ0eVR5cGUuUGhvbmUsICdNb2JpbGUnKTtcblx0fVxuXG5cdGFkZE5ld1dlYigpIHtcblx0XHR0aGlzLmFkZE5ld1Byb3BlcnR5KENvbnRhY3RQcm9wZXJ0eVR5cGUuV2ViKTtcblx0fVxuXG5cdGFkZE5ld05pY2tuYW1lKCkge1xuXHRcdHRoaXMuYWRkTmV3T3JGb2N1c1Byb3BlcnR5KENvbnRhY3RQcm9wZXJ0eVR5cGUuTmljayk7XG5cdH1cblxuXHRhZGROZXdOb3RlcygpIHtcblx0XHR0aGlzLmFkZE5ld09yRm9jdXNQcm9wZXJ0eShDb250YWN0UHJvcGVydHlUeXBlLk5vdGUpO1xuXHR9XG5cblx0YWRkTmV3QmlydGhkYXkoKSB7XG5cdFx0dGhpcy5hZGROZXdPckZvY3VzUHJvcGVydHkoQ29udGFjdFByb3BlcnR5VHlwZS5CaXJ0aGRheSk7XG5cdH1cblxuXHRleHBvcnRWY2YoKSB7XG5cdFx0Z2V0QXBwKCkuZG93bmxvYWQoZXhwb3J0Q29udGFjdHNWY2YoKSk7XG5cdH1cblxuXHRleHBvcnRDc3YoKSB7XG5cdFx0Z2V0QXBwKCkuZG93bmxvYWQoZXhwb3J0Q29udGFjdHNDc3YoKSk7XG5cdH1cblxuXHRpbml0VXBsb2FkZXIoKSB7XG5cdFx0aWYgKHRoaXMuaW1wb3J0VXBsb2FkZXJCdXR0b24oKSkge1xuXHRcdFx0Y29uc3QgaiA9IG5ldyBKdWEoe1xuXHRcdFx0XHQnYWN0aW9uJzogdXBsb2FkQ29udGFjdHMoKSxcblx0XHRcdFx0J25hbWUnOiAndXBsb2FkZXInLFxuXHRcdFx0XHQncXVldWVTaXplJzogMSxcblx0XHRcdFx0J211bHRpcGxlU2l6ZUxpbWl0JzogMSxcblx0XHRcdFx0J2Rpc2FibGVEcmFnQW5kRHJvcCc6IHRydWUsXG5cdFx0XHRcdCdkaXNhYmxlTXVsdGlwbGUnOiB0cnVlLFxuXHRcdFx0XHQnZGlzYWJsZURvY3VtZW50RHJvcFByZXZlbnQnOiB0cnVlLFxuXHRcdFx0XHQnY2xpY2tFbGVtZW50JzogdGhpcy5pbXBvcnRVcGxvYWRlckJ1dHRvbigpXG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKGopIHtcblx0XHRcdFx0ai5vbignb25TdGFydCcsICgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmNvbnRhY3RzLmltcG9ydGluZyh0cnVlKTtcblx0XHRcdFx0fSkub24oJ29uQ29tcGxldGUnLCAoaWQsIHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuY29udGFjdHMuaW1wb3J0aW5nKGZhbHNlKTtcblx0XHRcdFx0XHR0aGlzLnJlbG9hZENvbnRhY3RMaXN0KCk7XG5cdFx0XHRcdFx0aWYgKCFpZCB8fCAhcmVzdWx0IHx8ICFkYXRhIHx8ICFkYXRhLlJlc3VsdCkge1xuXHRcdFx0XHRcdFx0d2luZG93LmFsZXJ0KGkxOG4oJ0NPTlRBQ1RTL0VSUk9SX0lNUE9SVF9GSUxFJykpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmVtb3ZlQ2hlY2tlZE9yU2VsZWN0ZWRDb250YWN0c0Zyb21MaXN0KCkge1xuXHRcdGNvbnN0IGtvQ29udGFjdHMgPSB0aGlzLmNvbnRhY3RzLFxuXHRcdFx0Y29udGFjdHMgPSB0aGlzLmNvbnRhY3RzQ2hlY2tlZE9yU2VsZWN0ZWQoKTtcblxuXHRcdGxldCBjdXJyZW50Q29udGFjdCA9IHRoaXMuY3VycmVudENvbnRhY3QoKSxcblx0XHRcdGNvdW50ID0gdGhpcy5jb250YWN0cygpLmxlbmd0aDtcblxuXHRcdGlmICgwIDwgY29udGFjdHMubGVuZ3RoKSB7XG5cdFx0XHRfLmVhY2goY29udGFjdHMsIChjb250YWN0KSA9PiB7XG5cdFx0XHRcdGlmIChjdXJyZW50Q29udGFjdCAmJiBjdXJyZW50Q29udGFjdC5pZENvbnRhY3QgPT09IGNvbnRhY3QuaWRDb250YWN0KSB7XG5cdFx0XHRcdFx0Y3VycmVudENvbnRhY3QgPSBudWxsO1xuXHRcdFx0XHRcdHRoaXMuY3VycmVudENvbnRhY3QobnVsbCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb250YWN0LmRlbGV0ZWQodHJ1ZSk7XG5cdFx0XHRcdGNvdW50IC09IDE7XG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKDAgPj0gY291bnQpIHtcblx0XHRcdFx0dGhpcy5iRHJvcFBhZ2VBZnRlckRlbGV0ZSA9IHRydWU7XG5cdFx0XHR9XG5cblx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRfLmVhY2goY29udGFjdHMsIChjb250YWN0KSA9PiB7XG5cdFx0XHRcdFx0a29Db250YWN0cy5yZW1vdmUoY29udGFjdCk7XG5cdFx0XHRcdFx0ZGVsZWdhdGVSdW5PbkRlc3Ryb3koY29udGFjdCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSwgTWFnaWNzLlRpbWU1MDBtcyk7XG5cdFx0fVxuXHR9XG5cblx0ZGVsZXRlU2VsZWN0ZWRDb250YWN0cygpIHtcblx0XHRpZiAoMCA8IHRoaXMuY29udGFjdHNDaGVja2VkT3JTZWxlY3RlZCgpLmxlbmd0aCkge1xuXHRcdFx0UmVtb3RlLmNvbnRhY3RzRGVsZXRlKF8uYmluZCh0aGlzLmRlbGV0ZVJlc3BvbnNlLCB0aGlzKSwgdGhpcy5jb250YWN0c0NoZWNrZWRPclNlbGVjdGVkVWlkcygpKTtcblxuXHRcdFx0dGhpcy5yZW1vdmVDaGVja2VkT3JTZWxlY3RlZENvbnRhY3RzRnJvbUxpc3QoKTtcblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNSZXN1bHRcblx0ICogQHBhcmFtIHtBamF4SnNvbkRlZmF1bHRSZXNwb25zZX0gb0RhdGFcblx0ICovXG5cdGRlbGV0ZVJlc3BvbnNlKHNSZXN1bHQsIG9EYXRhKSB7XG5cdFx0aWYgKE1hZ2ljcy5UaW1lNTAwbXMgPCAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gc1Jlc3VsdCAmJiBvRGF0YSAmJiBvRGF0YS5UaW1lID8gcEludChvRGF0YS5UaW1lKSA6IDApKSB7XG5cdFx0XHR0aGlzLnJlbG9hZENvbnRhY3RMaXN0KHRoaXMuYkRyb3BQYWdlQWZ0ZXJEZWxldGUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdFx0dGhpcy5yZWxvYWRDb250YWN0TGlzdCh0aGlzLmJEcm9wUGFnZUFmdGVyRGVsZXRlKTtcblx0XHRcdH0sIE1hZ2ljcy5UaW1lNTAwbXMpO1xuXHRcdH1cblx0fVxuXG5cdHJlbW92ZVByb3BlcnR5KG9Qcm9wKSB7XG5cdFx0dGhpcy52aWV3UHJvcGVydGllcy5yZW1vdmUob1Byb3ApO1xuXHRcdGRlbGVnYXRlUnVuT25EZXN0cm95KG9Qcm9wKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0gez9Db250YWN0TW9kZWx9IGNvbnRhY3Rcblx0ICovXG5cdHBvcHVsYXRlVmlld0NvbnRhY3QoY29udGFjdCkge1xuXHRcdGxldCBpZCA9ICcnLFxuXHRcdFx0bGFzdE5hbWUgPSAnJyxcblx0XHRcdGZpcnN0TmFtZSA9ICcnO1xuXHRcdGNvbnN0IGxpc3QgPSBbXTtcblxuXHRcdHRoaXMud2F0Y2hIYXNoKGZhbHNlKTtcblxuXHRcdHRoaXMuZW1wdHlTZWxlY3Rpb24oZmFsc2UpO1xuXHRcdHRoaXMudmlld1JlYWRPbmx5KGZhbHNlKTtcblxuXHRcdGlmIChjb250YWN0KSB7XG5cdFx0XHRpZCA9IGNvbnRhY3QuaWRDb250YWN0O1xuXHRcdFx0aWYgKGlzTm9uRW1wdHlBcnJheShjb250YWN0LnByb3BlcnRpZXMpKSB7XG5cdFx0XHRcdF8uZWFjaChjb250YWN0LnByb3BlcnRpZXMsIChwcm9wZXJ0eSkgPT4ge1xuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eVswXSkge1xuXHRcdFx0XHRcdFx0aWYgKENvbnRhY3RQcm9wZXJ0eVR5cGUuTGFzdE5hbWUgPT09IHByb3BlcnR5WzBdKSB7XG5cdFx0XHRcdFx0XHRcdGxhc3ROYW1lID0gcHJvcGVydHlbMV07XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKENvbnRhY3RQcm9wZXJ0eVR5cGUuRmlyc3ROYW1lID09PSBwcm9wZXJ0eVswXSkge1xuXHRcdFx0XHRcdFx0XHRmaXJzdE5hbWUgPSBwcm9wZXJ0eVsxXTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGxpc3QucHVzaChuZXcgQ29udGFjdFByb3BlcnR5TW9kZWwocHJvcGVydHlbMF0sIHByb3BlcnR5WzJdIHx8ICcnLCBwcm9wZXJ0eVsxXSkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdHRoaXMudmlld1JlYWRPbmx5KCEhY29udGFjdC5yZWFkT25seSk7XG5cdFx0fVxuXG5cdFx0bGlzdC51bnNoaWZ0KFxuXHRcdFx0bmV3IENvbnRhY3RQcm9wZXJ0eU1vZGVsKFxuXHRcdFx0XHRDb250YWN0UHJvcGVydHlUeXBlLkxhc3ROYW1lLFxuXHRcdFx0XHQnJyxcblx0XHRcdFx0bGFzdE5hbWUsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHR0aGlzLmdldFByb3BlcnR5UGxhY2Vob2xkZXIoQ29udGFjdFByb3BlcnR5VHlwZS5MYXN0TmFtZSlcblx0XHRcdClcblx0XHQpO1xuXG5cdFx0bGlzdC51bnNoaWZ0KFxuXHRcdFx0bmV3IENvbnRhY3RQcm9wZXJ0eU1vZGVsKFxuXHRcdFx0XHRDb250YWN0UHJvcGVydHlUeXBlLkZpcnN0TmFtZSxcblx0XHRcdFx0JycsXG5cdFx0XHRcdGZpcnN0TmFtZSxcblx0XHRcdFx0IWNvbnRhY3QsXG5cdFx0XHRcdHRoaXMuZ2V0UHJvcGVydHlQbGFjZWhvbGRlcihDb250YWN0UHJvcGVydHlUeXBlLkZpcnN0TmFtZSlcblx0XHRcdClcblx0XHQpO1xuXG5cdFx0dGhpcy52aWV3SUQoaWQpO1xuXG5cdFx0ZGVsZWdhdGVSdW5PbkRlc3Ryb3kodGhpcy52aWV3UHJvcGVydGllcygpKTtcblxuXHRcdHRoaXMudmlld1Byb3BlcnRpZXMoW10pO1xuXHRcdHRoaXMudmlld1Byb3BlcnRpZXMobGlzdCk7XG5cblx0XHR0aGlzLndhdGNoRGlydHkoZmFsc2UpO1xuXHRcdHRoaXMud2F0Y2hIYXNoKHRydWUpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGRyb3BQYWdlUG9zaXRpb24gPSBmYWxzZVxuXHQgKi9cblx0cmVsb2FkQ29udGFjdExpc3QoZHJvcFBhZ2VQb3NpdGlvbiA9IGZhbHNlKSB7XG5cdFx0bGV0IG9mZnNldCA9ICh0aGlzLmNvbnRhY3RzUGFnZSgpIC0gMSkgKiBDT05UQUNUU19QRVJfUEFHRTtcblxuXHRcdHRoaXMuYkRyb3BQYWdlQWZ0ZXJEZWxldGUgPSBmYWxzZTtcblxuXHRcdGlmIChkcm9wUGFnZVBvc2l0aW9uKSB7XG5cdFx0XHR0aGlzLmNvbnRhY3RzUGFnZSgxKTtcblx0XHRcdG9mZnNldCA9IDA7XG5cdFx0fVxuXG5cdFx0dGhpcy5jb250YWN0cy5sb2FkaW5nKHRydWUpO1xuXHRcdFJlbW90ZS5jb250YWN0cyhcblx0XHRcdChyZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdFx0bGV0IGNvdW50ID0gMCxcblx0XHRcdFx0XHRsaXN0ID0gW107XG5cblx0XHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0ICYmIGRhdGEuUmVzdWx0Lkxpc3QpIHtcblx0XHRcdFx0XHRpZiAoaXNOb25FbXB0eUFycmF5KGRhdGEuUmVzdWx0Lkxpc3QpKSB7XG5cdFx0XHRcdFx0XHRsaXN0ID0gXy5tYXAoZGF0YS5SZXN1bHQuTGlzdCwgKGl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdFx0Y29uc3QgY29udGFjdCA9IG5ldyBDb250YWN0TW9kZWwoKTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIGNvbnRhY3QucGFyc2UoaXRlbSkgPyBjb250YWN0IDogbnVsbDtcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRsaXN0ID0gXy5jb21wYWN0KGxpc3QpO1xuXG5cdFx0XHRcdFx0XHRjb3VudCA9IHBJbnQoZGF0YS5SZXN1bHQuQ291bnQpO1xuXHRcdFx0XHRcdFx0Y291bnQgPSAwIDwgY291bnQgPyBjb3VudCA6IDA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5jb250YWN0c0NvdW50KGNvdW50KTtcblxuXHRcdFx0XHRkZWxlZ2F0ZVJ1bk9uRGVzdHJveSh0aGlzLmNvbnRhY3RzKCkpO1xuXHRcdFx0XHR0aGlzLmNvbnRhY3RzKGxpc3QpO1xuXG5cdFx0XHRcdHRoaXMuY29udGFjdHMubG9hZGluZyhmYWxzZSk7XG5cdFx0XHRcdHRoaXMudmlld0NsZWFyU2VhcmNoKCcnICE9PSB0aGlzLnNlYXJjaCgpKTtcblx0XHRcdH0sXG5cdFx0XHRvZmZzZXQsXG5cdFx0XHRDT05UQUNUU19QRVJfUEFHRSxcblx0XHRcdHRoaXMuc2VhcmNoKClcblx0XHQpO1xuXHR9XG5cblx0b25CdWlsZChkb20pIHtcblx0XHR0aGlzLm9Db250ZW50VmlzaWJsZSA9ICQoJy5iLWxpc3QtY29udGVudCcsIGRvbSk7XG5cdFx0dGhpcy5vQ29udGVudFNjcm9sbGFibGUgPSAkKCcuY29udGVudCcsIHRoaXMub0NvbnRlbnRWaXNpYmxlKTtcblxuXHRcdHRoaXMuc2VsZWN0b3IuaW5pdCh0aGlzLm9Db250ZW50VmlzaWJsZSwgdGhpcy5vQ29udGVudFNjcm9sbGFibGUsIEtleVN0YXRlLkNvbnRhY3RMaXN0KTtcblxuXHRcdGtleSgnZGVsZXRlJywgS2V5U3RhdGUuQ29udGFjdExpc3QsICgpID0+IHtcblx0XHRcdHRoaXMuZGVsZXRlQ29tbWFuZCgpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0a2V5KCdjLCB3JywgS2V5U3RhdGUuQ29udGFjdExpc3QsICgpID0+IHtcblx0XHRcdHRoaXMubmV3TWVzc2FnZUNvbW1hbmQoKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdFx0ZG9tLm9uKCdjbGljaycsICcuZS1wYWdlbmF0b3IgLmUtcGFnZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdGNvbnN0IHBhZ2UgPSBrby5kYXRhRm9yKHRoaXMpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXHRcdFx0aWYgKHBhZ2UpIHtcblx0XHRcdFx0c2VsZi5jb250YWN0c1BhZ2UocEludChwYWdlLnZhbHVlKSk7XG5cdFx0XHRcdHNlbGYucmVsb2FkQ29udGFjdExpc3QoKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMuaW5pdFVwbG9hZGVyKCk7XG5cdH1cblxuXHRvblNob3coYkJhY2tUb0NvbXBvc2UsIHNMYXN0Q29tcG9zZUZvY3VzZWRGaWVsZCkge1xuXHRcdHRoaXMuYkJhY2tUb0NvbXBvc2UgPSBpc1VuZChiQmFja1RvQ29tcG9zZSkgPyBmYWxzZSA6ICEhYkJhY2tUb0NvbXBvc2U7XG5cdFx0dGhpcy5zTGFzdENvbXBvc2VGb2N1c2VkRmllbGQgPSBpc1VuZChzTGFzdENvbXBvc2VGb2N1c2VkRmllbGQpID8gJycgOiBzTGFzdENvbXBvc2VGb2N1c2VkRmllbGQ7XG5cblx0XHRyb3V0ZU9mZigpO1xuXHRcdHRoaXMucmVsb2FkQ29udGFjdExpc3QodHJ1ZSk7XG5cdH1cblxuXHRvbkhpZGUoKSB7XG5cdFx0cm91dGVPbigpO1xuXG5cdFx0dGhpcy5jdXJyZW50Q29udGFjdChudWxsKTtcblx0XHR0aGlzLmVtcHR5U2VsZWN0aW9uKHRydWUpO1xuXHRcdHRoaXMuc2VhcmNoKCcnKTtcblx0XHR0aGlzLmNvbnRhY3RzQ291bnQoMCk7XG5cblx0XHRkZWxlZ2F0ZVJ1bk9uRGVzdHJveSh0aGlzLmNvbnRhY3RzKCkpO1xuXHRcdHRoaXMuY29udGFjdHMoW10pO1xuXG5cdFx0dGhpcy5zTGFzdENvbXBvc2VGb2N1c2VkRmllbGQgPSAnJztcblxuXHRcdGlmICh0aGlzLmJCYWNrVG9Db21wb3NlKSB7XG5cdFx0XHR0aGlzLmJCYWNrVG9Db21wb3NlID0gZmFsc2U7XG5cblx0XHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpKSB7XG5cdFx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0NvbXBvc2UnKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCB7IENvbnRhY3RzUG9wdXBWaWV3LCBDb250YWN0c1BvcHVwVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBOb3RpZmljYXRpb24gfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgVU5VU0VEX09QVElPTl9WQUxVRSB9IGZyb20gJ0NvbW1vbi9Db25zdHMnO1xuaW1wb3J0IHsgYk1vYmlsZURldmljZSB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCB7IHRyaW0sIGRlZmF1dE9wdGlvbnNBZnRlclJlbmRlciwgZm9sZGVyTGlzdE9wdGlvbnNCdWlsZGVyIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IEZvbGRlclN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0ZvbGRlcic7XG5cbmltcG9ydCBQcm9taXNlcyBmcm9tICdQcm9taXNlcy9Vc2VyL0FqYXgnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgcG9wdXAsIGNvbW1hbmQgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL0ZvbGRlckNyZWF0ZScsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNGb2xkZXJDcmVhdGUnXG59KVxuY2xhc3MgRm9sZGVyQ3JlYXRlVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5mb2xkZXJOYW1lID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5mb2xkZXJOYW1lLmZvY3VzZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuc2VsZWN0ZWRQYXJlbnRWYWx1ZSA9IGtvLm9ic2VydmFibGUoVU5VU0VEX09QVElPTl9WQUxVRSk7XG5cblx0XHR0aGlzLnBhcmVudEZvbGRlclNlbGVjdExpc3QgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCB0b3AgPSBbXSxcblx0XHRcdFx0bGlzdCA9IEZvbGRlclN0b3JlLmZvbGRlckxpc3QoKSxcblx0XHRcdFx0ZlJlbmFtZUNhbGxiYWNrID0gKG9JdGVtKSA9PlxuXHRcdFx0XHRcdG9JdGVtID8gKG9JdGVtLmlzU3lzdGVtRm9sZGVyKCkgPyBvSXRlbS5uYW1lKCkgKyAnICcgKyBvSXRlbS5tYW5hZ2VGb2xkZXJTeXN0ZW1OYW1lKCkgOiBvSXRlbS5uYW1lKCkpIDogJyc7XG5cblx0XHRcdHRvcC5wdXNoKFsnJywgJyddKTtcblxuXHRcdFx0bGV0IGZEaXNhYmxlQ2FsbGJhY2sgPSBudWxsO1xuXHRcdFx0aWYgKCcnICE9PSBGb2xkZXJTdG9yZS5uYW1lc3BhY2UpIHtcblx0XHRcdFx0ZkRpc2FibGVDYWxsYmFjayA9IChpdGVtKSA9PiBGb2xkZXJTdG9yZS5uYW1lc3BhY2UgIT09IGl0ZW0uZnVsbE5hbWVSYXcuc3Vic3RyKDAsIEZvbGRlclN0b3JlLm5hbWVzcGFjZS5sZW5ndGgpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZm9sZGVyTGlzdE9wdGlvbnNCdWlsZGVyKFtdLCBsaXN0LCBbXSwgdG9wLCBudWxsLCBmRGlzYWJsZUNhbGxiYWNrLCBudWxsLCBmUmVuYW1lQ2FsbGJhY2spO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5kZWZhdXRPcHRpb25zQWZ0ZXJSZW5kZXIgPSBkZWZhdXRPcHRpb25zQWZ0ZXJSZW5kZXI7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gc2VsZi5zaW1wbGVGb2xkZXJOYW1lVmFsaWRhdGlvbihzZWxmLmZvbGRlck5hbWUoKSkpXG5cdGNyZWF0ZUZvbGRlckNvbW1hbmQoKSB7XG5cdFx0bGV0IHBhcmVudEZvbGRlck5hbWUgPSB0aGlzLnNlbGVjdGVkUGFyZW50VmFsdWUoKTtcblx0XHRpZiAoJycgPT09IHBhcmVudEZvbGRlck5hbWUgJiYgMSA8IEZvbGRlclN0b3JlLm5hbWVzcGFjZS5sZW5ndGgpIHtcblx0XHRcdHBhcmVudEZvbGRlck5hbWUgPSBGb2xkZXJTdG9yZS5uYW1lc3BhY2Uuc3Vic3RyKDAsIEZvbGRlclN0b3JlLm5hbWVzcGFjZS5sZW5ndGggLSAxKTtcblx0XHR9XG5cblx0XHRnZXRBcHAoKS5mb2xkZXJzUHJvbWlzZXNBY3Rpb25IZWxwZXIoXG5cdFx0XHRQcm9taXNlcy5mb2xkZXJDcmVhdGUodGhpcy5mb2xkZXJOYW1lKCksIHBhcmVudEZvbGRlck5hbWUsIEZvbGRlclN0b3JlLmZvbGRlcnNDcmVhdGluZyksXG5cdFx0XHROb3RpZmljYXRpb24uQ2FudENyZWF0ZUZvbGRlclxuXHRcdCk7XG5cblx0XHR0aGlzLmNhbmNlbENvbW1hbmQoKTtcblx0fVxuXG5cdHNpbXBsZUZvbGRlck5hbWVWYWxpZGF0aW9uKHNOYW1lKSB7XG5cdFx0cmV0dXJuIC9eW15cXFxcL10rJC9nLnRlc3QodHJpbShzTmFtZSkpO1xuXHR9XG5cblx0Y2xlYXJQb3B1cCgpIHtcblx0XHR0aGlzLmZvbGRlck5hbWUoJycpO1xuXHRcdHRoaXMuc2VsZWN0ZWRQYXJlbnRWYWx1ZSgnJyk7XG5cdFx0dGhpcy5mb2xkZXJOYW1lLmZvY3VzZWQoZmFsc2UpO1xuXHR9XG5cblx0b25TaG93KCkge1xuXHRcdHRoaXMuY2xlYXJQb3B1cCgpO1xuXHR9XG5cblx0b25TaG93V2l0aERlbGF5KCkge1xuXHRcdGlmICghYk1vYmlsZURldmljZSkge1xuXHRcdFx0dGhpcy5mb2xkZXJOYW1lLmZvY3VzZWQodHJ1ZSk7XG5cdFx0fVxuXHR9XG59XG5cbmV4cG9ydCB7IEZvbGRlckNyZWF0ZVZpZXcsIEZvbGRlckNyZWF0ZVZpZXcgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBGaWx0ZXJzQWN0aW9uLCBGaWx0ZXJDb25kaXRpb25GaWVsZCwgRmlsdGVyQ29uZGl0aW9uVHlwZSB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBiTW9iaWxlRGV2aWNlIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0IHsgZGVmYXV0T3B0aW9uc0FmdGVyUmVuZGVyLCBkZWxlZ2F0ZVJ1biB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBpMThuLCBpbml0T25TdGFydE9yTGFuZ0NoYW5nZSB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IEZpbHRlclN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0ZpbHRlcic7XG5pbXBvcnQgRm9sZGVyU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvRm9sZGVyJztcblxuaW1wb3J0IHsgcG9wdXAsIGNvbW1hbmQgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL0ZpbHRlcicsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNGaWx0ZXInXG59KVxuY2xhc3MgRmlsdGVyUG9wdXBWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmlzTmV3ID0ga28ub2JzZXJ2YWJsZSh0cnVlKTtcblxuXHRcdHRoaXMubW9kdWxlcyA9IEZpbHRlclN0b3JlLm1vZHVsZXM7XG5cblx0XHR0aGlzLmZUcnVlQ2FsbGJhY2sgPSBudWxsO1xuXHRcdHRoaXMuZmlsdGVyID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdHRoaXMuYWxsb3dNYXJrQXNSZWFkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmRlZmF1dE9wdGlvbnNBZnRlclJlbmRlciA9IGRlZmF1dE9wdGlvbnNBZnRlclJlbmRlcjtcblx0XHR0aGlzLmZvbGRlclNlbGVjdExpc3QgPSBGb2xkZXJTdG9yZS5mb2xkZXJNZW51Rm9yRmlsdGVycztcblx0XHR0aGlzLnNlbGVjdGVkRm9sZGVyVmFsdWUgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMuc2VsZWN0ZWRGb2xkZXJWYWx1ZS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuZmlsdGVyKCkpIHtcblx0XHRcdFx0dGhpcy5maWx0ZXIoKS5hY3Rpb25WYWx1ZS5lcnJvcihmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLmFjdGlvblR5cGVPcHRpb25zID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblx0XHR0aGlzLmZpZWxkT3B0aW9ucyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cdFx0dGhpcy50eXBlT3B0aW9ucyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cdFx0dGhpcy50eXBlT3B0aW9uc1NpemUgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXG5cdFx0aW5pdE9uU3RhcnRPckxhbmdDaGFuZ2UoXy5iaW5kKHRoaXMucG9wdWxhdGVPcHRpb25zLCB0aGlzKSk7XG5cblx0XHR0aGlzLm1vZHVsZXMuc3Vic2NyaWJlKHRoaXMucG9wdWxhdGVPcHRpb25zLCB0aGlzKTtcblx0fVxuXG5cdEBjb21tYW5kKClcblx0c2F2ZUZpbHRlckNvbW1hbmQoKSB7XG5cdFx0aWYgKHRoaXMuZmlsdGVyKCkpIHtcblx0XHRcdGlmIChGaWx0ZXJzQWN0aW9uLk1vdmVUbyA9PT0gdGhpcy5maWx0ZXIoKS5hY3Rpb25UeXBlKCkpIHtcblx0XHRcdFx0dGhpcy5maWx0ZXIoKS5hY3Rpb25WYWx1ZSh0aGlzLnNlbGVjdGVkRm9sZGVyVmFsdWUoKSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmICghdGhpcy5maWx0ZXIoKS52ZXJpZnkoKSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLmZUcnVlQ2FsbGJhY2spIHtcblx0XHRcdFx0dGhpcy5mVHJ1ZUNhbGxiYWNrKHRoaXMuZmlsdGVyKCkpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy5tb2RhbFZpc2liaWxpdHkoKSkge1xuXHRcdFx0XHRkZWxlZ2F0ZVJ1bih0aGlzLCAnY2xvc2VDb21tYW5kJyk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRwb3B1bGF0ZU9wdGlvbnMoKSB7XG5cdFx0dGhpcy5hY3Rpb25UeXBlT3B0aW9ucyhbXSk7XG5cblx0XHQvLyB0aGlzLmFjdGlvblR5cGVPcHRpb25zLnB1c2goeydpZCc6IEZpbHRlcnNBY3Rpb24uTm9uZSxcblx0XHQvLyAnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX0FDVElPTl9OT05FJyl9KTtcblxuXHRcdGNvbnN0IG1vZHVsZXMgPSB0aGlzLm1vZHVsZXMoKTtcblx0XHRpZiAobW9kdWxlcykge1xuXHRcdFx0aWYgKG1vZHVsZXMubWFya2FzcmVhZCkge1xuXHRcdFx0XHR0aGlzLmFsbG93TWFya0FzUmVhZCh0cnVlKTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKG1vZHVsZXMubW92ZXRvKSB7XG5cdFx0XHRcdHRoaXMuYWN0aW9uVHlwZU9wdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0J2lkJzogRmlsdGVyc0FjdGlvbi5Nb3ZlVG8sXG5cdFx0XHRcdFx0J25hbWUnOiBpMThuKCdQT1BVUFNfRklMVEVSL1NFTEVDVF9BQ1RJT05fTU9WRV9UTycpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobW9kdWxlcy5yZWRpcmVjdCkge1xuXHRcdFx0XHR0aGlzLmFjdGlvblR5cGVPcHRpb25zLnB1c2goe1xuXHRcdFx0XHRcdCdpZCc6IEZpbHRlcnNBY3Rpb24uRm9yd2FyZCxcblx0XHRcdFx0XHQnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX0FDVElPTl9GT1JXQVJEX1RPJylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtb2R1bGVzLnJlamVjdCkge1xuXHRcdFx0XHR0aGlzLmFjdGlvblR5cGVPcHRpb25zLnB1c2goeyAnaWQnOiBGaWx0ZXJzQWN0aW9uLlJlamVjdCwgJ25hbWUnOiBpMThuKCdQT1BVUFNfRklMVEVSL1NFTEVDVF9BQ1RJT05fUkVKRUNUJykgfSk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtb2R1bGVzLnZhY2F0aW9uKSB7XG5cdFx0XHRcdHRoaXMuYWN0aW9uVHlwZU9wdGlvbnMucHVzaCh7XG5cdFx0XHRcdFx0J2lkJzogRmlsdGVyc0FjdGlvbi5WYWNhdGlvbixcblx0XHRcdFx0XHQnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX0FDVElPTl9WQUNBVElPTl9NRVNTQUdFJylcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dGhpcy5hY3Rpb25UeXBlT3B0aW9ucy5wdXNoKHsgJ2lkJzogRmlsdGVyc0FjdGlvbi5EaXNjYXJkLCAnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX0FDVElPTl9ESVNDQVJEJykgfSk7XG5cblx0XHR0aGlzLmZpZWxkT3B0aW9ucyhbXG5cdFx0XHR7ICdpZCc6IEZpbHRlckNvbmRpdGlvbkZpZWxkLkZyb20sICduYW1lJzogaTE4bignUE9QVVBTX0ZJTFRFUi9TRUxFQ1RfRklFTERfRlJPTScpIH0sXG5cdFx0XHR7ICdpZCc6IEZpbHRlckNvbmRpdGlvbkZpZWxkLlJlY2lwaWVudCwgJ25hbWUnOiBpMThuKCdQT1BVUFNfRklMVEVSL1NFTEVDVF9GSUVMRF9SRUNJUElFTlRTJykgfSxcblx0XHRcdHsgJ2lkJzogRmlsdGVyQ29uZGl0aW9uRmllbGQuU3ViamVjdCwgJ25hbWUnOiBpMThuKCdQT1BVUFNfRklMVEVSL1NFTEVDVF9GSUVMRF9TVUJKRUNUJykgfSxcblx0XHRcdHsgJ2lkJzogRmlsdGVyQ29uZGl0aW9uRmllbGQuU2l6ZSwgJ25hbWUnOiBpMThuKCdQT1BVUFNfRklMVEVSL1NFTEVDVF9GSUVMRF9TSVpFJykgfSxcblx0XHRcdHsgJ2lkJzogRmlsdGVyQ29uZGl0aW9uRmllbGQuSGVhZGVyLCAnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX0ZJRUxEX0hFQURFUicpIH1cblx0XHRdKTtcblxuXHRcdHRoaXMudHlwZU9wdGlvbnMoW1xuXHRcdFx0eyAnaWQnOiBGaWx0ZXJDb25kaXRpb25UeXBlLkNvbnRhaW5zLCAnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX1RZUEVfQ09OVEFJTlMnKSB9LFxuXHRcdFx0eyAnaWQnOiBGaWx0ZXJDb25kaXRpb25UeXBlLk5vdENvbnRhaW5zLCAnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX1RZUEVfTk9UX0NPTlRBSU5TJykgfSxcblx0XHRcdHsgJ2lkJzogRmlsdGVyQ29uZGl0aW9uVHlwZS5FcXVhbFRvLCAnbmFtZSc6IGkxOG4oJ1BPUFVQU19GSUxURVIvU0VMRUNUX1RZUEVfRVFVQUxfVE8nKSB9LFxuXHRcdFx0eyAnaWQnOiBGaWx0ZXJDb25kaXRpb25UeXBlLk5vdEVxdWFsVG8sICduYW1lJzogaTE4bignUE9QVVBTX0ZJTFRFUi9TRUxFQ1RfVFlQRV9OT1RfRVFVQUxfVE8nKSB9XG5cdFx0XSk7XG5cblx0XHRpZiAobW9kdWxlcyAmJiBtb2R1bGVzLnJlZ2V4KSB7XG5cdFx0XHR0aGlzLnR5cGVPcHRpb25zLnB1c2goeyAnaWQnOiBGaWx0ZXJDb25kaXRpb25UeXBlLlJlZ2V4LCAnbmFtZSc6ICdSZWdleCcgfSk7XG5cdFx0fVxuXG5cdFx0dGhpcy50eXBlT3B0aW9uc1NpemUoW1xuXHRcdFx0eyAnaWQnOiBGaWx0ZXJDb25kaXRpb25UeXBlLk92ZXIsICduYW1lJzogaTE4bignUE9QVVBTX0ZJTFRFUi9TRUxFQ1RfVFlQRV9PVkVSJykgfSxcblx0XHRcdHsgJ2lkJzogRmlsdGVyQ29uZGl0aW9uVHlwZS5VbmRlciwgJ25hbWUnOiBpMThuKCdQT1BVUFNfRklMVEVSL1NFTEVDVF9UWVBFX1VOREVSJykgfVxuXHRcdF0pO1xuXHR9XG5cblx0cmVtb3ZlQ29uZGl0aW9uKG9Db25kaXRpb25Ub0RlbGV0ZSkge1xuXHRcdGlmICh0aGlzLmZpbHRlcigpKSB7XG5cdFx0XHR0aGlzLmZpbHRlcigpLnJlbW92ZUNvbmRpdGlvbihvQ29uZGl0aW9uVG9EZWxldGUpO1xuXHRcdH1cblx0fVxuXG5cdGNsZWFyUG9wdXAoKSB7XG5cdFx0dGhpcy5pc05ldyh0cnVlKTtcblxuXHRcdHRoaXMuZlRydWVDYWxsYmFjayA9IG51bGw7XG5cdFx0dGhpcy5maWx0ZXIobnVsbCk7XG5cdH1cblxuXHRvblNob3cob0ZpbHRlciwgZlRydWVDYWxsYmFjaywgYkVkaXQpIHtcblx0XHR0aGlzLmNsZWFyUG9wdXAoKTtcblxuXHRcdHRoaXMuZlRydWVDYWxsYmFjayA9IGZUcnVlQ2FsbGJhY2s7XG5cdFx0dGhpcy5maWx0ZXIob0ZpbHRlcik7XG5cblx0XHRpZiAob0ZpbHRlcikge1xuXHRcdFx0dGhpcy5zZWxlY3RlZEZvbGRlclZhbHVlKG9GaWx0ZXIuYWN0aW9uVmFsdWUoKSk7XG5cdFx0fVxuXG5cdFx0dGhpcy5pc05ldyghYkVkaXQpO1xuXG5cdFx0aWYgKCFiRWRpdCAmJiBvRmlsdGVyKSB7XG5cdFx0XHRvRmlsdGVyLm5hbWUuZm9jdXNlZCh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHRvblNob3dXaXRoRGVsYXkoKSB7XG5cdFx0aWYgKHRoaXMuaXNOZXcoKSAmJiB0aGlzLmZpbHRlcigpICYmICFiTW9iaWxlRGV2aWNlKSB7XG5cdFx0XHR0aGlzLmZpbHRlcigpLm5hbWUuZm9jdXNlZCh0cnVlKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHsgRmlsdGVyUG9wdXBWaWV3LCBGaWx0ZXJQb3B1cFZpZXcgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IHFyIGZyb20gJ3FyJztcblxuaW1wb3J0IHsgQ2FwYSwgU3RvcmFnZVJlc3VsdFR5cGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgcFN0cmluZyB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBpMThuLCB0cmlnZ2VyIGFzIHRyYW5zbGF0b3JUcmlnZ2VyIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxuaW1wb3J0IFJlbW90ZSBmcm9tICdSZW1vdGUvVXNlci9BamF4JztcblxuaW1wb3J0IHsgZ2V0QXBwIH0gZnJvbSAnSGVscGVyL0FwcHMvVXNlcic7XG5cbmltcG9ydCB7IHBvcHVwLCBzaG93U2NyZWVuUG9wdXAgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL1R3b0ZhY3RvckNvbmZpZ3VyYXRpb24nLFxuXHR0ZW1wbGF0ZUlEOiAnUG9wdXBzVHdvRmFjdG9yQ29uZmlndXJhdGlvbidcbn0pXG5jbGFzcyBUd29GYWN0b3JDb25maWd1cmF0aW9uUG9wdXBWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmxvY2sgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuY2FwYVR3b0ZhY3RvciA9IFNldHRpbmdzLmNhcGEoQ2FwYS5Ud29GYWN0b3IpO1xuXG5cdFx0dGhpcy5wcm9jZXNzaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5jbGVhcmluZyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuc2VjcmV0aW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnZpZXdVc2VyID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy50d29GYWN0b3JTdGF0dXMgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMudHdvRmFjdG9yVGVzdGVkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnZpZXdTZWNyZXQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnZpZXdCYWNrdXBDb2RlcyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmlld1VybFRpdGxlID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy52aWV3VXJsID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLnZpZXdFbmFibGVfID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnZpZXdFbmFibGUgPSBrby5jb21wdXRlZCh7XG5cdFx0XHRyZWFkOiB0aGlzLnZpZXdFbmFibGVfLFxuXHRcdFx0d3JpdGU6ICh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR2YWx1ZSA9ICEhdmFsdWU7XG5cdFx0XHRcdGlmICh2YWx1ZSAmJiB0aGlzLnR3b0ZhY3RvclRlc3RlZCgpKSB7XG5cdFx0XHRcdFx0dGhpcy52aWV3RW5hYmxlXyh2YWx1ZSk7XG5cdFx0XHRcdFx0UmVtb3RlLmVuYWJsZVR3b0ZhY3RvcigocmVzdWx0LCBkYXRhKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyAhPT0gcmVzdWx0IHx8ICFkYXRhIHx8ICFkYXRhLlJlc3VsdCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnZpZXdFbmFibGVfKGZhbHNlKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LCB0cnVlKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnZpZXdFbmFibGVfKHZhbHVlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRSZW1vdGUuZW5hYmxlVHdvRmFjdG9yKChyZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdFx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzICE9PSByZXN1bHQgfHwgIWRhdGEgfHwgIWRhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMudmlld0VuYWJsZV8oZmFsc2UpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sIGZhbHNlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy52aWV3VHdvRmFjdG9yRW5hYmxlVG9vbHRpcCA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdHRyYW5zbGF0b3JUcmlnZ2VyKCk7XG5cdFx0XHRyZXR1cm4gdGhpcy50d29GYWN0b3JUZXN0ZWQoKSB8fCB0aGlzLnZpZXdFbmFibGVfKClcblx0XHRcdFx0PyAnJ1xuXHRcdFx0XHQ6IGkxOG4oJ1BPUFVQU19UV09fRkFDVE9SX0NGRy9UV09fRkFDVE9SX1NFQ1JFVF9URVNUX0JFRk9SRV9ERVNDJyk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnZpZXdUd29GYWN0b3JTdGF0dXMgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHR0cmFuc2xhdG9yVHJpZ2dlcigpO1xuXHRcdFx0cmV0dXJuIGkxOG4oXG5cdFx0XHRcdHRoaXMudHdvRmFjdG9yU3RhdHVzKClcblx0XHRcdFx0XHQ/ICdQT1BVUFNfVFdPX0ZBQ1RPUl9DRkcvVFdPX0ZBQ1RPUl9TRUNSRVRfQ09ORklHVVJFRF9ERVNDJ1xuXHRcdFx0XHRcdDogJ1BPUFVQU19UV09fRkFDVE9SX0NGRy9UV09fRkFDVE9SX1NFQ1JFVF9OT1RfQ09ORklHVVJFRF9ERVNDJ1xuXHRcdFx0KTtcblx0XHR9KTtcblxuXHRcdHRoaXMudHdvRmFjdG9yQWxsb3dlZEVuYWJsZSA9IGtvLmNvbXB1dGVkKCgpID0+IHRoaXMudmlld0VuYWJsZSgpIHx8IHRoaXMudHdvRmFjdG9yVGVzdGVkKCkpO1xuXG5cdFx0dGhpcy5vblJlc3VsdCA9IF8uYmluZCh0aGlzLm9uUmVzdWx0LCB0aGlzKTtcblx0XHR0aGlzLm9uU2hvd1NlY3JldFJlc3VsdCA9IF8uYmluZCh0aGlzLm9uU2hvd1NlY3JldFJlc3VsdCwgdGhpcyk7XG5cdH1cblxuXHRzaG93U2VjcmV0KCkge1xuXHRcdHRoaXMuc2VjcmV0aW5nKHRydWUpO1xuXHRcdFJlbW90ZS5zaG93VHdvRmFjdG9yU2VjcmV0KHRoaXMub25TaG93U2VjcmV0UmVzdWx0KTtcblx0fVxuXG5cdGhpZGVTZWNyZXQoKSB7XG5cdFx0dGhpcy52aWV3U2VjcmV0KCcnKTtcblx0XHR0aGlzLnZpZXdCYWNrdXBDb2RlcygnJyk7XG5cdFx0dGhpcy52aWV3VXJsVGl0bGUoJycpO1xuXHRcdHRoaXMudmlld1VybCgnJyk7XG5cdH1cblxuXHRjcmVhdGVUd29GYWN0b3IoKSB7XG5cdFx0dGhpcy5wcm9jZXNzaW5nKHRydWUpO1xuXHRcdFJlbW90ZS5jcmVhdGVUd29GYWN0b3IodGhpcy5vblJlc3VsdCk7XG5cdH1cblxuXHRsb2dvdXQoKSB7XG5cdFx0Z2V0QXBwKCkubG9nb3V0KCk7XG5cdH1cblxuXHR0ZXN0VHdvRmFjdG9yKCkge1xuXHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL1R3b0ZhY3RvclRlc3QnKSwgW3RoaXMudHdvRmFjdG9yVGVzdGVkXSk7XG5cdH1cblxuXHRjbGVhclR3b0ZhY3RvcigpIHtcblx0XHR0aGlzLnZpZXdTZWNyZXQoJycpO1xuXHRcdHRoaXMudmlld0JhY2t1cENvZGVzKCcnKTtcblx0XHR0aGlzLnZpZXdVcmxUaXRsZSgnJyk7XG5cdFx0dGhpcy52aWV3VXJsKCcnKTtcblxuXHRcdHRoaXMudHdvRmFjdG9yVGVzdGVkKGZhbHNlKTtcblxuXHRcdHRoaXMuY2xlYXJpbmcodHJ1ZSk7XG5cdFx0UmVtb3RlLmNsZWFyVHdvRmFjdG9yKHRoaXMub25SZXN1bHQpO1xuXHR9XG5cblx0b25TaG93KGJMb2NrKSB7XG5cdFx0dGhpcy5sb2NrKCEhYkxvY2spO1xuXG5cdFx0dGhpcy52aWV3U2VjcmV0KCcnKTtcblx0XHR0aGlzLnZpZXdCYWNrdXBDb2RlcygnJyk7XG5cdFx0dGhpcy52aWV3VXJsVGl0bGUoJycpO1xuXHRcdHRoaXMudmlld1VybCgnJyk7XG5cdH1cblxuXHRvbkhpZGUoKSB7XG5cdFx0aWYgKHRoaXMubG9jaygpKSB7XG5cdFx0XHR3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0UXIoKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdCdvdHBhdXRoOi8vdG90cC8nICtcblx0XHRcdHdpbmRvdy5lbmNvZGVVUklDb21wb25lbnQodGhpcy52aWV3VXNlcigpKSArXG5cdFx0XHQnP3NlY3JldD0nICtcblx0XHRcdHdpbmRvdy5lbmNvZGVVUklDb21wb25lbnQodGhpcy52aWV3U2VjcmV0KCkpICtcblx0XHRcdCcmaXNzdWVyPScgK1xuXHRcdFx0d2luZG93LmVuY29kZVVSSUNvbXBvbmVudCgnJylcblx0XHQpO1xuXHR9XG5cblx0b25SZXN1bHQoc1Jlc3VsdCwgb0RhdGEpIHtcblx0XHR0aGlzLnByb2Nlc3NpbmcoZmFsc2UpO1xuXHRcdHRoaXMuY2xlYXJpbmcoZmFsc2UpO1xuXG5cdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHNSZXN1bHQgJiYgb0RhdGEgJiYgb0RhdGEuUmVzdWx0KSB7XG5cdFx0XHR0aGlzLnZpZXdVc2VyKHBTdHJpbmcob0RhdGEuUmVzdWx0LlVzZXIpKTtcblx0XHRcdHRoaXMudmlld0VuYWJsZV8oISFvRGF0YS5SZXN1bHQuRW5hYmxlKTtcblx0XHRcdHRoaXMudHdvRmFjdG9yU3RhdHVzKCEhb0RhdGEuUmVzdWx0LklzU2V0KTtcblx0XHRcdHRoaXMudHdvRmFjdG9yVGVzdGVkKCEhb0RhdGEuUmVzdWx0LlRlc3RlZCk7XG5cblx0XHRcdHRoaXMudmlld1NlY3JldChwU3RyaW5nKG9EYXRhLlJlc3VsdC5TZWNyZXQpKTtcblx0XHRcdHRoaXMudmlld0JhY2t1cENvZGVzKHBTdHJpbmcob0RhdGEuUmVzdWx0LkJhY2t1cENvZGVzKS5yZXBsYWNlKC9bXFxzXSsvZywgJyAgJykpO1xuXG5cdFx0XHR0aGlzLnZpZXdVcmxUaXRsZShwU3RyaW5nKG9EYXRhLlJlc3VsdC5VcmxUaXRsZSkpO1xuXHRcdFx0dGhpcy52aWV3VXJsKHFyLnRvRGF0YVVSTCh7IGxldmVsOiAnTScsIHNpemU6IDgsIHZhbHVlOiB0aGlzLmdldFFyKCkgfSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLnZpZXdVc2VyKCcnKTtcblx0XHRcdHRoaXMudmlld0VuYWJsZV8oZmFsc2UpO1xuXHRcdFx0dGhpcy50d29GYWN0b3JTdGF0dXMoZmFsc2UpO1xuXHRcdFx0dGhpcy50d29GYWN0b3JUZXN0ZWQoZmFsc2UpO1xuXG5cdFx0XHR0aGlzLnZpZXdTZWNyZXQoJycpO1xuXHRcdFx0dGhpcy52aWV3QmFja3VwQ29kZXMoJycpO1xuXHRcdFx0dGhpcy52aWV3VXJsVGl0bGUoJycpO1xuXHRcdFx0dGhpcy52aWV3VXJsKCcnKTtcblx0XHR9XG5cdH1cblxuXHRvblNob3dTZWNyZXRSZXN1bHQocmVzdWx0LCBkYXRhKSB7XG5cdFx0dGhpcy5zZWNyZXRpbmcoZmFsc2UpO1xuXG5cdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KSB7XG5cdFx0XHR0aGlzLnZpZXdTZWNyZXQocFN0cmluZyhkYXRhLlJlc3VsdC5TZWNyZXQpKTtcblx0XHRcdHRoaXMudmlld1VybFRpdGxlKHBTdHJpbmcoZGF0YS5SZXN1bHQuVXJsVGl0bGUpKTtcblx0XHRcdHRoaXMudmlld1VybChxci50b0RhdGFVUkwoeyBsZXZlbDogJ00nLCBzaXplOiA2LCB2YWx1ZTogdGhpcy5nZXRRcigpIH0pKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy52aWV3U2VjcmV0KCcnKTtcblx0XHRcdHRoaXMudmlld1VybFRpdGxlKCcnKTtcblx0XHRcdHRoaXMudmlld1VybCgnJyk7XG5cdFx0fVxuXHR9XG5cblx0b25CdWlsZCgpIHtcblx0XHRpZiAodGhpcy5jYXBhVHdvRmFjdG9yKSB7XG5cdFx0XHR0aGlzLnByb2Nlc3NpbmcodHJ1ZSk7XG5cdFx0XHRSZW1vdGUuZ2V0VHdvRmFjdG9yKHRoaXMub25SZXN1bHQpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgeyBUd29GYWN0b3JDb25maWd1cmF0aW9uUG9wdXBWaWV3LCBUd29GYWN0b3JDb25maWd1cmF0aW9uUG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IFN0b3JhZ2VSZXN1bHRUeXBlLCBOb3RpZmljYXRpb24gfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgdHJpbSwgaXNOb3JtYWwgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgZ2V0Tm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuaW1wb3J0IHsgSHRtbEVkaXRvciB9IGZyb20gJ0NvbW1vbi9IdG1sRWRpdG9yJztcblxuaW1wb3J0IFJlbW90ZSBmcm9tICdSZW1vdGUvVXNlci9BamF4JztcblxuaW1wb3J0IHsgZ2V0QXBwIH0gZnJvbSAnSGVscGVyL0FwcHMvVXNlcic7XG5cbmltcG9ydCB7IHBvcHVwLCBjb21tYW5kIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5AcG9wdXAoe1xuXHRuYW1lOiAnVmlldy9Qb3B1cC9UZW1wbGF0ZScsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNUZW1wbGF0ZSdcbn0pXG5jbGFzcyBUZW1wbGF0ZVBvcHVwVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5lZGl0b3IgPSBudWxsO1xuXHRcdHRoaXMuc2lnbmF0dXJlRG9tID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdHRoaXMuaWQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMubmFtZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMubmFtZS5lcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMubmFtZS5mb2N1cyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5ib2R5ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5ib2R5LmxvYWRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmJvZHkuZXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMubmFtZS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5uYW1lLmVycm9yKGZhbHNlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuYm9keS5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5ib2R5LmVycm9yKGZhbHNlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuc3VibWl0UmVxdWVzdCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuc3VibWl0RXJyb3IgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiAhc2VsZi5zdWJtaXRSZXF1ZXN0KCkpXG5cdGFkZFRlbXBsYXRlQ29tbWFuZCgpIHtcblx0XHR0aGlzLnBvcHVsYXRlQm9keUZyb21FZGl0b3IoKTtcblxuXHRcdHRoaXMubmFtZS5lcnJvcignJyA9PT0gdHJpbSh0aGlzLm5hbWUoKSkpO1xuXHRcdHRoaXMuYm9keS5lcnJvcignJyA9PT0gdHJpbSh0aGlzLmJvZHkoKSkgfHwgJzpIVE1MOicgPT09IHRyaW0odGhpcy5ib2R5KCkpKTtcblxuXHRcdGlmICh0aGlzLm5hbWUuZXJyb3IoKSB8fCB0aGlzLmJvZHkuZXJyb3IoKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHRoaXMuc3VibWl0UmVxdWVzdCh0cnVlKTtcblxuXHRcdFJlbW90ZS50ZW1wbGF0ZVNldHVwKFxuXHRcdFx0KHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuXHRcdFx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gcmVzdWx0ICYmIGRhdGEpIHtcblx0XHRcdFx0XHRpZiAoZGF0YS5SZXN1bHQpIHtcblx0XHRcdFx0XHRcdGdldEFwcCgpLnRlbXBsYXRlcygpO1xuXHRcdFx0XHRcdFx0dGhpcy5jYW5jZWxDb21tYW5kKCk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmIChkYXRhLkVycm9yQ29kZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5zdWJtaXRFcnJvcihnZXROb3RpZmljYXRpb24oZGF0YS5FcnJvckNvZGUpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zdWJtaXRFcnJvcihnZXROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uLlVua25vd25FcnJvcikpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0dGhpcy5pZCgpLFxuXHRcdFx0dGhpcy5uYW1lKCksXG5cdFx0XHR0aGlzLmJvZHkoKVxuXHRcdCk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGNsZWFyUG9wdXAoKSB7XG5cdFx0dGhpcy5pZCgnJyk7XG5cblx0XHR0aGlzLm5hbWUoJycpO1xuXHRcdHRoaXMubmFtZS5lcnJvcihmYWxzZSk7XG5cblx0XHR0aGlzLmJvZHkoJycpO1xuXHRcdHRoaXMuYm9keS5sb2FkaW5nKGZhbHNlKTtcblx0XHR0aGlzLmJvZHkuZXJyb3IoZmFsc2UpO1xuXG5cdFx0dGhpcy5zdWJtaXRSZXF1ZXN0KGZhbHNlKTtcblx0XHR0aGlzLnN1Ym1pdEVycm9yKCcnKTtcblxuXHRcdGlmICh0aGlzLmVkaXRvcikge1xuXHRcdFx0dGhpcy5lZGl0b3Iuc2V0UGxhaW4oJycsIGZhbHNlKTtcblx0XHR9XG5cdH1cblxuXHRwb3B1bGF0ZUJvZHlGcm9tRWRpdG9yKCkge1xuXHRcdGlmICh0aGlzLmVkaXRvcikge1xuXHRcdFx0dGhpcy5ib2R5KHRoaXMuZWRpdG9yLmdldERhdGFXaXRoSHRtbE1hcmsoKSk7XG5cdFx0fVxuXHR9XG5cblx0ZWRpdG9yU2V0Qm9keShzQm9keSkge1xuXHRcdGlmICghdGhpcy5lZGl0b3IgJiYgdGhpcy5zaWduYXR1cmVEb20oKSkge1xuXHRcdFx0dGhpcy5lZGl0b3IgPSBuZXcgSHRtbEVkaXRvcihcblx0XHRcdFx0dGhpcy5zaWduYXR1cmVEb20oKSxcblx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucG9wdWxhdGVCb2R5RnJvbUVkaXRvcigpO1xuXHRcdFx0XHR9LFxuXHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5lZGl0b3Iuc2V0SHRtbE9yUGxhaW4oc0JvZHkpO1xuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRvci5zZXRIdG1sT3JQbGFpbihzQm9keSk7XG5cdFx0fVxuXHR9XG5cblx0b25TaG93KHRlbXBsYXRlKSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cblx0XHRpZiAodGVtcGxhdGUgJiYgdGVtcGxhdGUuaWQpIHtcblx0XHRcdHRoaXMuaWQodGVtcGxhdGUuaWQpO1xuXHRcdFx0dGhpcy5uYW1lKHRlbXBsYXRlLm5hbWUpO1xuXHRcdFx0dGhpcy5ib2R5KHRlbXBsYXRlLmJvZHkpO1xuXG5cdFx0XHRpZiAodGVtcGxhdGUucG9wdWxhdGVkKSB7XG5cdFx0XHRcdHRoaXMuZWRpdG9yU2V0Qm9keSh0aGlzLmJvZHkoKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLmJvZHkubG9hZGluZyh0cnVlKTtcblx0XHRcdFx0dGhpcy5ib2R5LmVycm9yKGZhbHNlKTtcblxuXHRcdFx0XHRSZW1vdGUudGVtcGxhdGVHZXRCeUlkKChyZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdFx0XHR0aGlzLmJvZHkubG9hZGluZyhmYWxzZSk7XG5cblx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSByZXN1bHQgJiZcblx0XHRcdFx0XHRcdGRhdGEgJiZcblx0XHRcdFx0XHRcdGRhdGEuUmVzdWx0ICYmXG5cdFx0XHRcdFx0XHQnT2JqZWN0L1RlbXBsYXRlJyA9PT0gZGF0YS5SZXN1bHRbJ0BPYmplY3QnXSAmJlxuXHRcdFx0XHRcdFx0aXNOb3JtYWwoZGF0YS5SZXN1bHQuQm9keSlcblx0XHRcdFx0XHQpIHtcblx0XHRcdFx0XHRcdHRlbXBsYXRlLmJvZHkgPSBkYXRhLlJlc3VsdC5Cb2R5O1xuXHRcdFx0XHRcdFx0dGVtcGxhdGUucG9wdWxhdGVkID0gdHJ1ZTtcblxuXHRcdFx0XHRcdFx0dGhpcy5ib2R5KHRlbXBsYXRlLmJvZHkpO1xuXHRcdFx0XHRcdFx0dGhpcy5ib2R5LmVycm9yKGZhbHNlKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5ib2R5KCcnKTtcblx0XHRcdFx0XHRcdHRoaXMuYm9keS5lcnJvcih0cnVlKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0aGlzLmVkaXRvclNldEJvZHkodGhpcy5ib2R5KCkpO1xuXHRcdFx0XHR9LCB0aGlzLmlkKCkpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVkaXRvclNldEJvZHkoJycpO1xuXHRcdH1cblx0fVxuXG5cdG9uU2hvd1dpdGhEZWxheSgpIHtcblx0XHR0aGlzLm5hbWUuZm9jdXModHJ1ZSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgVGVtcGxhdGVQb3B1cFZpZXcsIFRlbXBsYXRlUG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzKCkge1xuXHRcdHZhciBjbGFzc2VzID0gW107XG5cblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGFyZyA9IGFyZ3VtZW50c1tpXTtcblx0XHRcdGlmICghYXJnKSBjb250aW51ZTtcblxuXHRcdFx0dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycgfHwgYXJnVHlwZSA9PT0gJ251bWJlcicpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGFyZyk7XG5cdFx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoYXJnKSkge1xuXHRcdFx0XHRpZiAoYXJnLmxlbmd0aCkge1xuXHRcdFx0XHRcdHZhciBpbm5lciA9IGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKTtcblx0XHRcdFx0XHRpZiAoaW5uZXIpIHtcblx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChpbm5lcik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdGlmIChhcmcudG9TdHJpbmcgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnLnRvU3RyaW5nKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiLyohIGxvemFkLmpzIC0gdjEuMTYuMCAtIDIwMjAtMDktMDZcbiogaHR0cHM6Ly9naXRodWIuY29tL0Fwb29ydlNheGVuYS9sb3phZC5qc1xuKiBDb3B5cmlnaHQgKGMpIDIwMjAgQXBvb3J2IFNheGVuYTsgTGljZW5zZWQgTUlUICovXG4hZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKTp0LmxvemFkPWUoKX0odGhpcyxmdW5jdGlvbigpe1widXNlIHN0cmljdFwiO1xuLyoqXG4gICAqIERldGVjdCBJRSBicm93c2VyXG4gICAqIEBjb25zdCB7Ym9vbGVhbn1cbiAgICogQHByaXZhdGVcbiAgICovdmFyIGc9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudE1vZGUsZj17cm9vdE1hcmdpbjpcIjBweFwiLHRocmVzaG9sZDowLGxvYWQ6ZnVuY3Rpb24odCl7aWYoXCJwaWN0dXJlXCI9PT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBlPXQucXVlcnlTZWxlY3RvcihcImltZ1wiKSxyPSExO251bGw9PT1lJiYoZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaW1nXCIpLHI9ITApLGcmJnQuZ2V0QXR0cmlidXRlKFwiZGF0YS1pZXNyY1wiKSYmKGUuc3JjPXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1pZXNyY1wiKSksdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWFsdFwiKSYmKGUuYWx0PXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1hbHRcIikpLHImJnQuYXBwZW5kKGUpfWlmKFwidmlkZW9cIj09PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmIXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1zcmNcIikmJnQuY2hpbGRyZW4pe2Zvcih2YXIgYT10LmNoaWxkcmVuLG89dm9pZCAwLGk9MDtpPD1hLmxlbmd0aC0xO2krKykobz1hW2ldLmdldEF0dHJpYnV0ZShcImRhdGEtc3JjXCIpKSYmKGFbaV0uc3JjPW8pO3QubG9hZCgpfXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wb3N0ZXJcIikmJih0LnBvc3Rlcj10LmdldEF0dHJpYnV0ZShcImRhdGEtcG9zdGVyXCIpKSx0LmdldEF0dHJpYnV0ZShcImRhdGEtc3JjXCIpJiYodC5zcmM9dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXNyY1wiKSksdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXNyY3NldFwiKSYmdC5zZXRBdHRyaWJ1dGUoXCJzcmNzZXRcIix0LmdldEF0dHJpYnV0ZShcImRhdGEtc3Jjc2V0XCIpKTt2YXIgbj1cIixcIjtpZih0LmdldEF0dHJpYnV0ZShcImRhdGEtYmFja2dyb3VuZC1kZWxpbWl0ZXJcIikmJihuPXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1iYWNrZ3JvdW5kLWRlbGltaXRlclwiKSksdC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWJhY2tncm91bmQtaW1hZ2VcIikpdC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9XCJ1cmwoJ1wiK3QuZ2V0QXR0cmlidXRlKFwiZGF0YS1iYWNrZ3JvdW5kLWltYWdlXCIpLnNwbGl0KG4pLmpvaW4oXCInKSx1cmwoJ1wiKStcIicpXCI7ZWxzZSBpZih0LmdldEF0dHJpYnV0ZShcImRhdGEtYmFja2dyb3VuZC1pbWFnZS1zZXRcIikpe3ZhciBkPXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1iYWNrZ3JvdW5kLWltYWdlLXNldFwiKS5zcGxpdChuKSx1PWRbMF0uc3Vic3RyKDAsZFswXS5pbmRleE9mKFwiIFwiKSl8fGRbMF07Ly8gU3Vic3RyaW5nIGJlZm9yZSAuLi4gMXhcbnU9LTE9PT11LmluZGV4T2YoXCJ1cmwoXCIpP1widXJsKFwiK3UrXCIpXCI6dSwxPT09ZC5sZW5ndGg/dC5zdHlsZS5iYWNrZ3JvdW5kSW1hZ2U9dTp0LnNldEF0dHJpYnV0ZShcInN0eWxlXCIsKHQuZ2V0QXR0cmlidXRlKFwic3R5bGVcIil8fFwiXCIpK1wiYmFja2dyb3VuZC1pbWFnZTogXCIrdStcIjsgYmFja2dyb3VuZC1pbWFnZTogLXdlYmtpdC1pbWFnZS1zZXQoXCIrZCtcIik7IGJhY2tncm91bmQtaW1hZ2U6IGltYWdlLXNldChcIitkK1wiKVwiKX10LmdldEF0dHJpYnV0ZShcImRhdGEtdG9nZ2xlLWNsYXNzXCIpJiZ0LmNsYXNzTGlzdC50b2dnbGUodC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXRvZ2dsZS1jbGFzc1wiKSl9LGxvYWRlZDpmdW5jdGlvbigpe319O2Z1bmN0aW9uIEEodCl7dC5zZXRBdHRyaWJ1dGUoXCJkYXRhLWxvYWRlZFwiLCEwKX12YXIgbT1mdW5jdGlvbih0KXtyZXR1cm5cInRydWVcIj09PXQuZ2V0QXR0cmlidXRlKFwiZGF0YS1sb2FkZWRcIil9LHY9ZnVuY3Rpb24odCl7dmFyIGU9MTxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOmRvY3VtZW50O3JldHVybiB0IGluc3RhbmNlb2YgRWxlbWVudD9bdF06dCBpbnN0YW5jZW9mIE5vZGVMaXN0P3Q6ZS5xdWVyeVNlbGVjdG9yQWxsKHQpfTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcixhLG89MDxhcmd1bWVudHMubGVuZ3RoJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOlwiLmxvemFkXCIsdD0xPGFyZ3VtZW50cy5sZW5ndGgmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sZT1PYmplY3QuYXNzaWduKHt9LGYsdCksaT1lLnJvb3Qsbj1lLnJvb3RNYXJnaW4sZD1lLnRocmVzaG9sZCx1PWUubG9hZCxnPWUubG9hZGVkLHM9dm9pZCAwO1widW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlciYmKHM9bmV3IEludGVyc2VjdGlvbk9ic2VydmVyKChyPXUsYT1nLGZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpeygwPHQuaW50ZXJzZWN0aW9uUmF0aW98fHQuaXNJbnRlcnNlY3RpbmcpJiYoZS51bm9ic2VydmUodC50YXJnZXQpLG0odC50YXJnZXQpfHwocih0LnRhcmdldCksQSh0LnRhcmdldCksYSh0LnRhcmdldCkpKX0pfSkse3Jvb3Q6aSxyb290TWFyZ2luOm4sdGhyZXNob2xkOmR9KSk7Zm9yKHZhciBjLGw9dihvLGkpLGI9MDtiPGwubGVuZ3RoO2IrKykoYz1sW2JdKS5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBsYWNlaG9sZGVyLWJhY2tncm91bmRcIikmJihjLnN0eWxlLmJhY2tncm91bmQ9Yy5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBsYWNlaG9sZGVyLWJhY2tncm91bmRcIikpO3JldHVybntvYnNlcnZlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXYobyxpKSxlPTA7ZTx0Lmxlbmd0aDtlKyspbSh0W2VdKXx8KHM/cy5vYnNlcnZlKHRbZV0pOih1KHRbZV0pLEEodFtlXSksZyh0W2VdKSkpfSx0cmlnZ2VyTG9hZDpmdW5jdGlvbih0KXttKHQpfHwodSh0KSxBKHQpLGcodCkpfSxvYnNlcnZlcjpzfX19KTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBDb29raWVzIGZyb20gJ2pzLWNvb2tpZSc7XG5pbXBvcnQgeyBpc1VuZCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBDTElFTlRfU0lERV9TVE9SQUdFX0lOREVYX05BTUUgfSBmcm9tICdDb21tb24vQ29uc3RzJztcblxuY2xhc3MgQ29va2llRHJpdmVyIHtcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcblx0ICogQHBhcmFtIHsqfSBkYXRhXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0c2V0KGtleSwgZGF0YSkge1xuXHRcdGxldCByZXN1bHQgPSBmYWxzZSxcblx0XHRcdHN0b3JhZ2VSZXN1bHQgPSBudWxsO1xuXG5cdFx0dHJ5IHtcblx0XHRcdHN0b3JhZ2VSZXN1bHQgPSBDb29raWVzLmdldEpTT04oQ0xJRU5UX1NJREVfU1RPUkFHRV9JTkRFWF9OQU1FKTtcblx0XHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cblx0XHQoc3RvcmFnZVJlc3VsdCB8fCAoc3RvcmFnZVJlc3VsdCA9IHt9KSlba2V5XSA9IGRhdGE7XG5cblx0XHR0cnkge1xuXHRcdFx0Q29va2llcy5zZXQoQ0xJRU5UX1NJREVfU1RPUkFHRV9JTkRFWF9OQU1FLCBzdG9yYWdlUmVzdWx0LCB7XG5cdFx0XHRcdGV4cGlyZXM6IDMwXG5cdFx0XHR9KTtcblxuXHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcblx0ICogQHJldHVybnMgeyp9XG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0bGV0IHJlc3VsdCA9IG51bGw7XG5cblx0XHR0cnkge1xuXHRcdFx0Y29uc3Qgc3RvcmFnZVJlc3VsdCA9IENvb2tpZXMuZ2V0SlNPTihDTElFTlRfU0lERV9TVE9SQUdFX0lOREVYX05BTUUpO1xuXHRcdFx0cmVzdWx0ID0gc3RvcmFnZVJlc3VsdCAmJiAhaXNVbmQoc3RvcmFnZVJlc3VsdFtrZXldKSA/IHN0b3JhZ2VSZXN1bHRba2V5XSA6IG51bGw7XG5cdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdHN0YXRpYyBzdXBwb3J0ZWQoKSB7XG5cdFx0cmV0dXJuICEhKHdpbmRvdy5uYXZpZ2F0b3IgJiYgd2luZG93Lm5hdmlnYXRvci5jb29raWVFbmFibGVkKTtcblx0fVxufVxuXG5leHBvcnQgeyBDb29raWVEcml2ZXIsIENvb2tpZURyaXZlciBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQgeyBpc1VuZCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBpc1N0b3JhZ2VTdXBwb3J0ZWQgfSBmcm9tICdTdG9yYWdlL1JhaW5Mb29wJztcbmltcG9ydCB7IENMSUVOVF9TSURFX1NUT1JBR0VfSU5ERVhfTkFNRSB9IGZyb20gJ0NvbW1vbi9Db25zdHMnO1xuXG5jbGFzcyBMb2NhbFN0b3JhZ2VEcml2ZXIge1xuXHRzID0gbnVsbDtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnMgPSB3aW5kb3cubG9jYWxTdG9yYWdlIHx8IG51bGw7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IGtleVxuXHQgKiBAcGFyYW0geyp9IGRhdGFcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRzZXQoa2V5LCBkYXRhKSB7XG5cdFx0aWYgKCF0aGlzLnMpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRsZXQgc3RvcmFnZVJlc3VsdCA9IG51bGw7XG5cdFx0dHJ5IHtcblx0XHRcdGNvbnN0IHN0b3JhZ2VWYWx1ZSA9IHRoaXMucy5nZXRJdGVtKENMSUVOVF9TSURFX1NUT1JBR0VfSU5ERVhfTkFNRSkgfHwgbnVsbDtcblx0XHRcdHN0b3JhZ2VSZXN1bHQgPSBudWxsID09PSBzdG9yYWdlVmFsdWUgPyBudWxsIDogd2luZG93LkpTT04ucGFyc2Uoc3RvcmFnZVZhbHVlKTtcblx0XHR9IGNhdGNoIChlKSB7fSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWVtcHR5XG5cblx0XHQoc3RvcmFnZVJlc3VsdCB8fCAoc3RvcmFnZVJlc3VsdCA9IHt9KSlba2V5XSA9IGRhdGE7XG5cblx0XHR0cnkge1xuXHRcdFx0dGhpcy5zLnNldEl0ZW0oQ0xJRU5UX1NJREVfU1RPUkFHRV9JTkRFWF9OQU1FLCB3aW5kb3cuSlNPTi5zdHJpbmdpZnkoc3RvcmFnZVJlc3VsdCkpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBjYXRjaCAoZSkge30gLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1lbXB0eVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcblx0ICogQHJldHVybnMgeyp9XG5cdCAqL1xuXHRnZXQoa2V5KSB7XG5cdFx0aWYgKCF0aGlzLnMpIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBzdG9yYWdlVmFsdWUgPSB0aGlzLnMuZ2V0SXRlbShDTElFTlRfU0lERV9TVE9SQUdFX0lOREVYX05BTUUpIHx8IG51bGwsXG5cdFx0XHRcdHN0b3JhZ2VSZXN1bHQgPSBudWxsID09PSBzdG9yYWdlVmFsdWUgPyBudWxsIDogd2luZG93LkpTT04ucGFyc2Uoc3RvcmFnZVZhbHVlKTtcblxuXHRcdFx0cmV0dXJuIHN0b3JhZ2VSZXN1bHQgJiYgIWlzVW5kKHN0b3JhZ2VSZXN1bHRba2V5XSkgPyBzdG9yYWdlUmVzdWx0W2tleV0gOiBudWxsO1xuXHRcdH0gY2F0Y2ggKGUpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHlcblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0c3RhdGljIHN1cHBvcnRlZCgpIHtcblx0XHRyZXR1cm4gaXNTdG9yYWdlU3VwcG9ydGVkKCdsb2NhbFN0b3JhZ2UnKTtcblx0fVxufVxuXG5leHBvcnQgeyBMb2NhbFN0b3JhZ2VEcml2ZXIsIExvY2FsU3RvcmFnZURyaXZlciBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IEZvbGRlclR5cGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgaXNQb3NOdW1lcmljIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IGkxOG4sIHRyaWdnZXIgYXMgdHJhbnNsYXRvclRyaWdnZXIgfSBmcm9tICdDb21tb24vVHJhbnNsYXRvcic7XG5pbXBvcnQgeyBnZXRGb2xkZXJJbmJveE5hbWUgfSBmcm9tICdDb21tb24vQ2FjaGUnO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gJ0NvbW1vbi9FdmVudHMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmNsYXNzIEZvbGRlck1vZGVsIGV4dGVuZHMgQWJzdHJhY3RNb2RlbCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCdGb2xkZXJNb2RlbCcpO1xuXG5cdFx0dGhpcy5uYW1lID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5mdWxsTmFtZSA9ICcnO1xuXHRcdHRoaXMuZnVsbE5hbWVSYXcgPSAnJztcblx0XHR0aGlzLmZ1bGxOYW1lSGFzaCA9ICcnO1xuXHRcdHRoaXMuZGVsaW1pdGVyID0gJyc7XG5cdFx0dGhpcy5uYW1lc3BhY2UgPSAnJztcblx0XHR0aGlzLmRlZXAgPSAwO1xuXHRcdHRoaXMuaW50ZXJ2YWwgPSAwO1xuXG5cdFx0dGhpcy5zZWxlY3RhYmxlID0gZmFsc2U7XG5cdFx0dGhpcy5leGlzdGVuID0gdHJ1ZTtcblxuXHRcdHRoaXMudHlwZSA9IGtvLm9ic2VydmFibGUoRm9sZGVyVHlwZS5Vc2VyKTtcblxuXHRcdHRoaXMuZm9jdXNlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuc2VsZWN0ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmVkaXRlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuc3ViU2NyaWJlZCA9IGtvLm9ic2VydmFibGUodHJ1ZSk7XG5cdFx0dGhpcy5jaGVja2FibGUgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnN1YkZvbGRlcnMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXHRcdHRoaXMuZGVsZXRlQWNjZXNzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5hY3Rpb25CbGluayA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IGZhbHNlVGltZW91dDogMTAwMCB9KTtcblxuXHRcdHRoaXMubmFtZUZvckVkaXQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMucHJpdmF0ZU1lc3NhZ2VDb3VudEFsbCA9IGtvLm9ic2VydmFibGUoMCk7XG5cdFx0dGhpcy5wcml2YXRlTWVzc2FnZUNvdW50VW5yZWFkID0ga28ub2JzZXJ2YWJsZSgwKTtcblxuXHRcdHRoaXMuY29sbGFwc2VkUHJpdmF0ZSA9IGtvLm9ic2VydmFibGUodHJ1ZSk7XG5cdH1cblxuXHQvKipcblx0ICogQHN0YXRpY1xuXHQgKiBAcGFyYW0ge0FqYXhKc29uRm9sZGVyfSBqc29uXG5cdCAqIEByZXR1cm5zIHs/Rm9sZGVyTW9kZWx9XG5cdCAqL1xuXHRzdGF0aWMgbmV3SW5zdGFuY2VGcm9tSnNvbihqc29uKSB7XG5cdFx0Y29uc3QgZm9sZGVyID0gbmV3IEZvbGRlck1vZGVsKCk7XG5cdFx0cmV0dXJuIGZvbGRlci5pbml0QnlKc29uKGpzb24pID8gZm9sZGVyLmluaXRDb21wdXRlZCgpIDogbnVsbDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Rm9sZGVyTW9kZWx9XG5cdCAqL1xuXHRpbml0Q29tcHV0ZWQoKSB7XG5cdFx0Y29uc3QgaW5ib3hGb2xkZXJOYW1lID0gZ2V0Rm9sZGVySW5ib3hOYW1lKCk7XG5cblx0XHR0aGlzLmlzSW5ib3ggPSBrby5jb21wdXRlZCgoKSA9PiBGb2xkZXJUeXBlLkluYm94ID09PSB0aGlzLnR5cGUoKSk7XG5cblx0XHR0aGlzLmhhc1N1YlNjcmliZWRTdWJmb2xkZXJzID0ga28uY29tcHV0ZWQoXG5cdFx0XHQoKSA9PlxuXHRcdFx0XHQhIV8uZmluZChcblx0XHRcdFx0XHR0aGlzLnN1YkZvbGRlcnMoKSxcblx0XHRcdFx0XHQob0ZvbGRlcikgPT4gKG9Gb2xkZXIuc3ViU2NyaWJlZCgpIHx8IG9Gb2xkZXIuaGFzU3ViU2NyaWJlZFN1YmZvbGRlcnMoKSkgJiYgIW9Gb2xkZXIuaXNTeXN0ZW1Gb2xkZXIoKVxuXHRcdFx0XHQpXG5cdFx0KTtcblxuXHRcdHRoaXMuY2FuQmVFZGl0ZWQgPSBrby5jb21wdXRlZCgoKSA9PiBGb2xkZXJUeXBlLlVzZXIgPT09IHRoaXMudHlwZSgpICYmIHRoaXMuZXhpc3RlbiAmJiB0aGlzLnNlbGVjdGFibGUpO1xuXG5cdFx0dGhpcy52aXNpYmxlID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaXNTdWJTY3JpYmVkID0gdGhpcy5zdWJTY3JpYmVkKCksXG5cdFx0XHRcdGlzU3ViRm9sZGVycyA9IHRoaXMuaGFzU3ViU2NyaWJlZFN1YmZvbGRlcnMoKTtcblxuXHRcdFx0cmV0dXJuIGlzU3ViU2NyaWJlZCB8fCAoaXNTdWJGb2xkZXJzICYmICghdGhpcy5leGlzdGVuIHx8ICF0aGlzLnNlbGVjdGFibGUpKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuaXNTeXN0ZW1Gb2xkZXIgPSBrby5jb21wdXRlZCgoKSA9PiBGb2xkZXJUeXBlLlVzZXIgIT09IHRoaXMudHlwZSgpKTtcblxuXHRcdHRoaXMuaGlkZGVuID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgaXNTeXN0ZW0gPSB0aGlzLmlzU3lzdGVtRm9sZGVyKCksXG5cdFx0XHRcdGlzU3ViRm9sZGVycyA9IHRoaXMuaGFzU3ViU2NyaWJlZFN1YmZvbGRlcnMoKTtcblxuXHRcdFx0cmV0dXJuIChpc1N5c3RlbSAmJiAhaXNTdWJGb2xkZXJzKSB8fCAoIXRoaXMuc2VsZWN0YWJsZSAmJiAhaXNTdWJGb2xkZXJzKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuc2VsZWN0YWJsZUZvckZvbGRlckxpc3QgPSBrby5jb21wdXRlZCgoKSA9PiAhdGhpcy5pc1N5c3RlbUZvbGRlcigpICYmIHRoaXMuc2VsZWN0YWJsZSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VDb3VudEFsbCA9IGtvXG5cdFx0XHQuY29tcHV0ZWQoe1xuXHRcdFx0XHRyZWFkOiB0aGlzLnByaXZhdGVNZXNzYWdlQ291bnRBbGwsXG5cdFx0XHRcdHdyaXRlOiAoaVZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGlzUG9zTnVtZXJpYyhpVmFsdWUsIHRydWUpKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnByaXZhdGVNZXNzYWdlQ291bnRBbGwoaVZhbHVlKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5wcml2YXRlTWVzc2FnZUNvdW50QWxsLnZhbHVlSGFzTXV0YXRlZCgpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5leHRlbmQoeyBub3RpZnk6ICdhbHdheXMnIH0pO1xuXG5cdFx0dGhpcy5tZXNzYWdlQ291bnRVbnJlYWQgPSBrb1xuXHRcdFx0LmNvbXB1dGVkKHtcblx0XHRcdFx0cmVhZDogdGhpcy5wcml2YXRlTWVzc2FnZUNvdW50VW5yZWFkLFxuXHRcdFx0XHR3cml0ZTogKHZhbHVlKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGlzUG9zTnVtZXJpYyh2YWx1ZSwgdHJ1ZSkpIHtcblx0XHRcdFx0XHRcdHRoaXMucHJpdmF0ZU1lc3NhZ2VDb3VudFVucmVhZCh2YWx1ZSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMucHJpdmF0ZU1lc3NhZ2VDb3VudFVucmVhZC52YWx1ZUhhc011dGF0ZWQoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0XHQuZXh0ZW5kKHsgbm90aWZ5OiAnYWx3YXlzJyB9KTtcblxuXHRcdHRoaXMucHJpbnRhYmxlVW5yZWFkQ291bnQgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBjb3VudCA9IHRoaXMubWVzc2FnZUNvdW50QWxsKCksXG5cdFx0XHRcdHVucmVhZCA9IHRoaXMubWVzc2FnZUNvdW50VW5yZWFkKCksXG5cdFx0XHRcdHR5cGUgPSB0aGlzLnR5cGUoKTtcblxuXHRcdFx0aWYgKDAgPCBjb3VudCkge1xuXHRcdFx0XHRpZiAoRm9sZGVyVHlwZS5EcmFmdCA9PT0gdHlwZSkge1xuXHRcdFx0XHRcdHJldHVybiAnJyArIGNvdW50O1xuXHRcdFx0XHR9IGVsc2UgaWYgKFxuXHRcdFx0XHRcdDAgPCB1bnJlYWQgJiZcblx0XHRcdFx0XHRGb2xkZXJUeXBlLlRyYXNoICE9PSB0eXBlICYmXG5cdFx0XHRcdFx0Rm9sZGVyVHlwZS5BcmNoaXZlICE9PSB0eXBlICYmXG5cdFx0XHRcdFx0Rm9sZGVyVHlwZS5TZW50SXRlbXMgIT09IHR5cGVcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuICcnICsgdW5yZWFkO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiAnJztcblx0XHR9KTtcblxuXHRcdHRoaXMuY2FuQmVEZWxldGVkID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgYlN5c3RlbSA9IHRoaXMuaXNTeXN0ZW1Gb2xkZXIoKTtcblx0XHRcdHJldHVybiAhYlN5c3RlbSAmJiAwID09PSB0aGlzLnN1YkZvbGRlcnMoKS5sZW5ndGggJiYgaW5ib3hGb2xkZXJOYW1lICE9PSB0aGlzLmZ1bGxOYW1lUmF3O1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5jYW5CZVN1YlNjcmliZWQgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+ICF0aGlzLmlzU3lzdGVtRm9sZGVyKCkgJiYgdGhpcy5zZWxlY3RhYmxlICYmIGluYm94Rm9sZGVyTmFtZSAhPT0gdGhpcy5mdWxsTmFtZVJhd1xuXHRcdCk7XG5cblx0XHR0aGlzLmNhbkJlQ2hlY2tlZCA9IHRoaXMuY2FuQmVTdWJTY3JpYmVkO1xuXG5cdFx0dGhpcy5sb2NhbE5hbWUgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHR0cmFuc2xhdG9yVHJpZ2dlcigpO1xuXG5cdFx0XHRsZXQgbmFtZSA9IHRoaXMubmFtZSgpO1xuXHRcdFx0Y29uc3QgdHlwZSA9IHRoaXMudHlwZSgpO1xuXG5cdFx0XHRpZiAodGhpcy5pc1N5c3RlbUZvbGRlcigpKSB7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgRm9sZGVyVHlwZS5JbmJveDpcblx0XHRcdFx0XHRcdG5hbWUgPSBpMThuKCdGT0xERVJfTElTVC9JTkJPWF9OQU1FJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIEZvbGRlclR5cGUuU2VudEl0ZW1zOlxuXHRcdFx0XHRcdFx0bmFtZSA9IGkxOG4oJ0ZPTERFUl9MSVNUL1NFTlRfTkFNRScpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBGb2xkZXJUeXBlLkRyYWZ0OlxuXHRcdFx0XHRcdFx0bmFtZSA9IGkxOG4oJ0ZPTERFUl9MSVNUL0RSQUZUU19OQU1FJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIEZvbGRlclR5cGUuU3BhbTpcblx0XHRcdFx0XHRcdG5hbWUgPSBpMThuKCdGT0xERVJfTElTVC9TUEFNX05BTUUnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgRm9sZGVyVHlwZS5UcmFzaDpcblx0XHRcdFx0XHRcdG5hbWUgPSBpMThuKCdGT0xERVJfTElTVC9UUkFTSF9OQU1FJyk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIEZvbGRlclR5cGUuQXJjaGl2ZTpcblx0XHRcdFx0XHRcdG5hbWUgPSBpMThuKCdGT0xERVJfTElTVC9BUkNISVZFX05BTUUnKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gbmFtZTtcblx0XHR9KTtcblxuXHRcdHRoaXMubWFuYWdlRm9sZGVyU3lzdGVtTmFtZSA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdHRyYW5zbGF0b3JUcmlnZ2VyKCk7XG5cblx0XHRcdGxldCBzdWZmaXggPSAnJztcblx0XHRcdGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUoKSxcblx0XHRcdFx0bmFtZSA9IHRoaXMubmFtZSgpO1xuXG5cdFx0XHRpZiAodGhpcy5pc1N5c3RlbUZvbGRlcigpKSB7XG5cdFx0XHRcdHN3aXRjaCAodHlwZSkge1xuXHRcdFx0XHRcdGNhc2UgRm9sZGVyVHlwZS5JbmJveDpcblx0XHRcdFx0XHRcdHN1ZmZpeCA9ICcoJyArIGkxOG4oJ0ZPTERFUl9MSVNUL0lOQk9YX05BTUUnKSArICcpJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgRm9sZGVyVHlwZS5TZW50SXRlbXM6XG5cdFx0XHRcdFx0XHRzdWZmaXggPSAnKCcgKyBpMThuKCdGT0xERVJfTElTVC9TRU5UX05BTUUnKSArICcpJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgRm9sZGVyVHlwZS5EcmFmdDpcblx0XHRcdFx0XHRcdHN1ZmZpeCA9ICcoJyArIGkxOG4oJ0ZPTERFUl9MSVNUL0RSQUZUU19OQU1FJykgKyAnKSc7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlIEZvbGRlclR5cGUuU3BhbTpcblx0XHRcdFx0XHRcdHN1ZmZpeCA9ICcoJyArIGkxOG4oJ0ZPTERFUl9MSVNUL1NQQU1fTkFNRScpICsgJyknO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBGb2xkZXJUeXBlLlRyYXNoOlxuXHRcdFx0XHRcdFx0c3VmZml4ID0gJygnICsgaTE4bignRk9MREVSX0xJU1QvVFJBU0hfTkFNRScpICsgJyknO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBGb2xkZXJUeXBlLkFyY2hpdmU6XG5cdFx0XHRcdFx0XHRzdWZmaXggPSAnKCcgKyBpMThuKCdGT0xERVJfTElTVC9BUkNISVZFX05BTUUnKSArICcpJztcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAoKCcnICE9PSBzdWZmaXggJiYgJygnICsgbmFtZSArICcpJyA9PT0gc3VmZml4KSB8fCAnKGluYm94KScgPT09IHN1ZmZpeC50b0xvd2VyQ2FzZSgpKSB7XG5cdFx0XHRcdHN1ZmZpeCA9ICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gc3VmZml4O1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5jb2xsYXBzZWQgPSBrby5jb21wdXRlZCh7XG5cdFx0XHRyZWFkOiAoKSA9PiAhdGhpcy5oaWRkZW4oKSAmJiB0aGlzLmNvbGxhcHNlZFByaXZhdGUoKSxcblx0XHRcdHdyaXRlOiAodmFsdWUpID0+IHtcblx0XHRcdFx0dGhpcy5jb2xsYXBzZWRQcml2YXRlKHZhbHVlKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMuaGFzVW5yZWFkTWVzc2FnZXMgPSBrby5jb21wdXRlZCgoKSA9PiAwIDwgdGhpcy5tZXNzYWdlQ291bnRVbnJlYWQoKSAmJiAnJyAhPT0gdGhpcy5wcmludGFibGVVbnJlYWRDb3VudCgpKTtcblxuXHRcdHRoaXMuaGFzU3ViU2NyaWJlZFVucmVhZE1lc3NhZ2VzU3ViZm9sZGVycyA9IGtvLmNvbXB1dGVkKFxuXHRcdFx0KCkgPT5cblx0XHRcdFx0ISFfLmZpbmQoXG5cdFx0XHRcdFx0dGhpcy5zdWJGb2xkZXJzKCksXG5cdFx0XHRcdFx0KGZvbGRlcikgPT4gZm9sZGVyLmhhc1VucmVhZE1lc3NhZ2VzKCkgfHwgZm9sZGVyLmhhc1N1YlNjcmliZWRVbnJlYWRNZXNzYWdlc1N1YmZvbGRlcnMoKVxuXHRcdFx0XHQpXG5cdFx0KTtcblxuXHRcdC8vIHN1YnNjcmliZVxuXHRcdHRoaXMubmFtZS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHR0aGlzLm5hbWVGb3JFZGl0KHZhbHVlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuZWRpdGVkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLm5hbWVGb3JFZGl0KHRoaXMubmFtZSgpKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMubWVzc2FnZUNvdW50VW5yZWFkLnN1YnNjcmliZSgodW5yZWFkKSA9PiB7XG5cdFx0XHRpZiAoRm9sZGVyVHlwZS5JbmJveCA9PT0gdGhpcy50eXBlKCkpIHtcblx0XHRcdFx0RXZlbnRzLnB1YignbWFpbGJveC5pbmJveC11bnJlYWQtY291bnQnLCBbdW5yZWFkXSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHRyZXR1cm4gdGhpcztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0Y29sbGFwc2VkQ3NzKCkge1xuXHRcdHJldHVybiB0aGlzLmhhc1N1YlNjcmliZWRTdWJmb2xkZXJzKClcblx0XHRcdD8gdGhpcy5jb2xsYXBzZWQoKVxuXHRcdFx0XHQ/ICdpY29uLXJpZ2h0LW1pbmkgZS1jb2xsYXBzZWQtc2lnbidcblx0XHRcdFx0OiAnaWNvbi1kb3duLW1pbmkgZS1jb2xsYXBzZWQtc2lnbidcblx0XHRcdDogJ2ljb24tbm9uZSBlLWNvbGxhcHNlZC1zaWduJztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0FqYXhKc29uRm9sZGVyfSBqc29uXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aW5pdEJ5SnNvbihqc29uKSB7XG5cdFx0bGV0IGJSZXN1bHQgPSBmYWxzZTtcblx0XHRjb25zdCBzSW5ib3hGb2xkZXJOYW1lID0gZ2V0Rm9sZGVySW5ib3hOYW1lKCk7XG5cblx0XHRpZiAoanNvbiAmJiAnT2JqZWN0L0ZvbGRlcicgPT09IGpzb25bJ0BPYmplY3QnXSkge1xuXHRcdFx0dGhpcy5uYW1lKGpzb24uTmFtZSk7XG5cdFx0XHR0aGlzLmRlbGltaXRlciA9IGpzb24uRGVsaW1pdGVyO1xuXHRcdFx0dGhpcy5mdWxsTmFtZSA9IGpzb24uRnVsbE5hbWU7XG5cdFx0XHR0aGlzLmZ1bGxOYW1lUmF3ID0ganNvbi5GdWxsTmFtZVJhdztcblx0XHRcdHRoaXMuZnVsbE5hbWVIYXNoID0ganNvbi5GdWxsTmFtZUhhc2g7XG5cdFx0XHR0aGlzLmRlZXAgPSBqc29uLkZ1bGxOYW1lUmF3LnNwbGl0KHRoaXMuZGVsaW1pdGVyKS5sZW5ndGggLSAxO1xuXHRcdFx0dGhpcy5zZWxlY3RhYmxlID0gISFqc29uLklzU2VsZWN0YWJsZTtcblx0XHRcdHRoaXMuZXhpc3RlbiA9ICEhanNvbi5Jc0V4aXN0cztcblxuXHRcdFx0dGhpcy5zdWJTY3JpYmVkKCEhanNvbi5Jc1N1YnNjcmliZWQpO1xuXHRcdFx0dGhpcy5jaGVja2FibGUoISFqc29uLkNoZWNrYWJsZSk7XG5cblx0XHRcdHRoaXMudHlwZShzSW5ib3hGb2xkZXJOYW1lID09PSB0aGlzLmZ1bGxOYW1lUmF3ID8gRm9sZGVyVHlwZS5JbmJveCA6IEZvbGRlclR5cGUuVXNlcik7XG5cblx0XHRcdGJSZXN1bHQgPSB0cnVlO1xuXHRcdH1cblxuXHRcdHJldHVybiBiUmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRwcmludGFibGVGdWxsTmFtZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5mdWxsTmFtZS5zcGxpdCh0aGlzLmRlbGltaXRlcikuam9pbignIC8gJyk7XG5cdH1cbn1cblxuZXhwb3J0IHsgRm9sZGVyTW9kZWwsIEZvbGRlck1vZGVsIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCAkIGZyb20gJyQnO1xuXG5pbXBvcnQgeyBhamF4IH0gZnJvbSAnQ29tbW9uL0xpbmtzJztcbmltcG9ydCB7IG1pY3JvdGltZSwgaXNVbmQsIGlzTm9ybWFsLCBwU3RyaW5nLCBwSW50LCBpbkFycmF5IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IERFRkFVTFRfQUpBWF9USU1FT1VULCBUT0tFTl9FUlJPUl9MSU1JVCwgQUpBWF9FUlJPUl9MSU1JVCB9IGZyb20gJ0NvbW1vbi9Db25zdHMnO1xuaW1wb3J0IHsgU3RvcmFnZVJlc3VsdFR5cGUsIE5vdGlmaWNhdGlvbiB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBkYXRhIGFzIEdsb2JhbHNEYXRhIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0ICogYXMgUGx1Z2lucyBmcm9tICdDb21tb24vUGx1Z2lucyc7XG5pbXBvcnQgKiBhcyBTZXR0aW5ncyBmcm9tICdTdG9yYWdlL1NldHRpbmdzJztcblxuaW1wb3J0IHsgQWJzdHJhY3RCYXNpY1Byb21pc2VzIH0gZnJvbSAnUHJvbWlzZXMvQWJzdHJhY3RCYXNpYyc7XG5cbmNsYXNzIEFic3RyYWN0QWpheFByb21pc2VzIGV4dGVuZHMgQWJzdHJhY3RCYXNpY1Byb21pc2VzIHtcblx0b1JlcXVlc3RzID0ge307XG5cblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMuY2xlYXIoKTtcblx0fVxuXG5cdGNsZWFyKCkge1xuXHRcdHRoaXMub1JlcXVlc3RzID0ge307XG5cdH1cblxuXHRhYm9ydChzQWN0aW9uLCBiQ2xlYXJPbmx5KSB7XG5cdFx0aWYgKHRoaXMub1JlcXVlc3RzW3NBY3Rpb25dKSB7XG5cdFx0XHRpZiAoIWJDbGVhck9ubHkgJiYgdGhpcy5vUmVxdWVzdHNbc0FjdGlvbl0uYWJvcnQpIHtcblx0XHRcdFx0dGhpcy5vUmVxdWVzdHNbc0FjdGlvbl0uX19hYm9ydGVkX18gPSB0cnVlO1xuXHRcdFx0XHR0aGlzLm9SZXF1ZXN0c1tzQWN0aW9uXS5hYm9ydCgpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLm9SZXF1ZXN0c1tzQWN0aW9uXSA9IG51bGw7XG5cdFx0XHRkZWxldGUgdGhpcy5vUmVxdWVzdHNbc0FjdGlvbl07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cblxuXHRhamF4UmVxdWVzdChhY3Rpb24sIGlzUG9zdCwgdGltZU91dCwgcGFyYW1zLCBhZGRpdGlvbmFsR2V0U3RyaW5nLCBmVHJpZ2dlcikge1xuXHRcdHJldHVybiBuZXcgd2luZG93LlByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3RhcnQgPSBtaWNyb3RpbWUoKTtcblxuXHRcdFx0dGltZU91dCA9IGlzTm9ybWFsKHRpbWVPdXQpID8gdGltZU91dCA6IERFRkFVTFRfQUpBWF9USU1FT1VUO1xuXHRcdFx0YWRkaXRpb25hbEdldFN0cmluZyA9IGlzVW5kKGFkZGl0aW9uYWxHZXRTdHJpbmcpID8gJycgOiBwU3RyaW5nKGFkZGl0aW9uYWxHZXRTdHJpbmcpO1xuXG5cdFx0XHRpZiAoaXNQb3N0KSB7XG5cdFx0XHRcdHBhcmFtcy5YVG9rZW4gPSBTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgndG9rZW4nKTtcblx0XHRcdH1cblxuXHRcdFx0UGx1Z2lucy5ydW5Ib29rKCdhamF4LWRlZmF1bHQtcmVxdWVzdCcsIFthY3Rpb24sIHBhcmFtcywgYWRkaXRpb25hbEdldFN0cmluZ10pO1xuXG5cdFx0XHR0aGlzLnNldFRyaWdnZXIoZlRyaWdnZXIsIHRydWUpO1xuXG5cdFx0XHRjb25zdCBvSCA9ICQuYWpheCh7XG5cdFx0XHRcdHR5cGU6IGlzUG9zdCA/ICdQT1NUJyA6ICdHRVQnLFxuXHRcdFx0XHR1cmw6IGFqYXgoYWRkaXRpb25hbEdldFN0cmluZyksXG5cdFx0XHRcdGFzeW5jOiB0cnVlLFxuXHRcdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxuXHRcdFx0XHRkYXRhOiBpc1Bvc3QgPyBwYXJhbXMgfHwge30gOiB7fSxcblx0XHRcdFx0dGltZW91dDogdGltZU91dCxcblx0XHRcdFx0Z2xvYmFsOiB0cnVlXG5cdFx0XHR9KS5hbHdheXMoKGRhdGEsIHRleHRTdGF0dXMpID0+IHtcblx0XHRcdFx0bGV0IGlzQ2FjaGVkID0gZmFsc2UsXG5cdFx0XHRcdFx0ZXJyb3JEYXRhID0gbnVsbDtcblxuXHRcdFx0XHRpZiAoZGF0YSAmJiBkYXRhLlRpbWUpIHtcblx0XHRcdFx0XHRpc0NhY2hlZCA9IHBJbnQoZGF0YS5UaW1lKSA+IG1pY3JvdGltZSgpIC0gc3RhcnQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoZGF0YSAmJiBkYXRhLlVwZGF0ZVRva2VuKSB7XG5cdFx0XHRcdFx0aWYgKEdsb2JhbHNEYXRhLl9fQVBQX18gJiYgR2xvYmFsc0RhdGEuX19BUFBfXy5zZXRDbGllbnRTaWRlVG9rZW4pIHtcblx0XHRcdFx0XHRcdEdsb2JhbHNEYXRhLl9fQVBQX18uc2V0Q2xpZW50U2lkZVRva2VuKGRhdGEuVXBkYXRlVG9rZW4pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIGJhY2t3YXJkIGNhcGFiaWxpdHlcblx0XHRcdFx0bGV0IHR5cGUgPSAnJztcblx0XHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRcdFx0Y2FzZSAnc3VjY2VzcycgPT09IHRleHRTdGF0dXMgJiYgZGF0YSAmJiBkYXRhLlJlc3VsdCAmJiBhY3Rpb24gPT09IGRhdGEuQWN0aW9uOlxuXHRcdFx0XHRcdFx0dHlwZSA9IFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3M7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICdhYm9ydCcgPT09IHRleHRTdGF0dXMgJiYgKCFkYXRhIHx8ICFkYXRhLl9fYWJvcnRlZF9fKTpcblx0XHRcdFx0XHRcdHR5cGUgPSBTdG9yYWdlUmVzdWx0VHlwZS5BYm9ydDtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHR0eXBlID0gU3RvcmFnZVJlc3VsdFR5cGUuRXJyb3I7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0fVxuXG5cdFx0XHRcdFBsdWdpbnMucnVuSG9vaygnYWpheC1kZWZhdWx0LXJlc3BvbnNlJywgW1xuXHRcdFx0XHRcdGFjdGlvbixcblx0XHRcdFx0XHRTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSB0eXBlID8gZGF0YSA6IG51bGwsXG5cdFx0XHRcdFx0dHlwZSxcblx0XHRcdFx0XHRpc0NhY2hlZCxcblx0XHRcdFx0XHRwYXJhbXNcblx0XHRcdFx0XSk7XG5cblx0XHRcdFx0aWYgKCdzdWNjZXNzJyA9PT0gdGV4dFN0YXR1cykge1xuXHRcdFx0XHRcdGlmIChkYXRhICYmIGRhdGEuUmVzdWx0ICYmIGFjdGlvbiA9PT0gZGF0YS5BY3Rpb24pIHtcblx0XHRcdFx0XHRcdGRhdGEuX19jYWNoZWRfXyA9IGlzQ2FjaGVkO1xuXHRcdFx0XHRcdFx0cmVzb2x2ZShkYXRhKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKGRhdGEgJiYgZGF0YS5BY3Rpb24pIHtcblx0XHRcdFx0XHRcdGVycm9yRGF0YSA9IGRhdGE7XG5cdFx0XHRcdFx0XHRyZWplY3QoZGF0YS5FcnJvckNvZGUgPyBkYXRhLkVycm9yQ29kZSA6IE5vdGlmaWNhdGlvbi5BamF4RmFsc2UpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRlcnJvckRhdGEgPSBkYXRhO1xuXHRcdFx0XHRcdFx0cmVqZWN0KE5vdGlmaWNhdGlvbi5BamF4UGFyc2UpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIGlmICgndGltZW91dCcgPT09IHRleHRTdGF0dXMpIHtcblx0XHRcdFx0XHRlcnJvckRhdGEgPSBkYXRhO1xuXHRcdFx0XHRcdHJlamVjdChOb3RpZmljYXRpb24uQWpheFRpbWVvdXQpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKCdhYm9ydCcgPT09IHRleHRTdGF0dXMpIHtcblx0XHRcdFx0XHRpZiAoIWRhdGEgfHwgIWRhdGEuX19hYm9ydGVkX18pIHtcblx0XHRcdFx0XHRcdHJlamVjdChOb3RpZmljYXRpb24uQWpheEFib3J0KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ZXJyb3JEYXRhID0gZGF0YTtcblx0XHRcdFx0XHRyZWplY3QoTm90aWZpY2F0aW9uLkFqYXhQYXJzZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodGhpcy5vUmVxdWVzdHNbYWN0aW9uXSkge1xuXHRcdFx0XHRcdHRoaXMub1JlcXVlc3RzW2FjdGlvbl0gPSBudWxsO1xuXHRcdFx0XHRcdGRlbGV0ZSB0aGlzLm9SZXF1ZXN0c1thY3Rpb25dO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5zZXRUcmlnZ2VyKGZUcmlnZ2VyLCBmYWxzZSk7XG5cblx0XHRcdFx0aWYgKGVycm9yRGF0YSkge1xuXHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdC0xIDxcblx0XHRcdFx0XHRcdGluQXJyYXkoZXJyb3JEYXRhLkVycm9yQ29kZSwgW1xuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uQXV0aEVycm9yLFxuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uQWNjZXNzRXJyb3IsXG5cdFx0XHRcdFx0XHRcdE5vdGlmaWNhdGlvbi5Db25uZWN0aW9uRXJyb3IsXG5cdFx0XHRcdFx0XHRcdE5vdGlmaWNhdGlvbi5Eb21haW5Ob3RBbGxvd2VkLFxuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uQWNjb3VudE5vdEFsbG93ZWQsXG5cdFx0XHRcdFx0XHRcdE5vdGlmaWNhdGlvbi5NYWlsU2VydmVyRXJyb3IsXG5cdFx0XHRcdFx0XHRcdE5vdGlmaWNhdGlvbi5Vbmtub3duTm90aWZpY2F0aW9uLFxuXHRcdFx0XHRcdFx0XHROb3RpZmljYXRpb24uVW5rbm93bkVycm9yXG5cdFx0XHRcdFx0XHRdKVxuXHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0R2xvYmFsc0RhdGEuaUFqYXhFcnJvckNvdW50ICs9IDE7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKE5vdGlmaWNhdGlvbi5JbnZhbGlkVG9rZW4gPT09IGVycm9yRGF0YS5FcnJvckNvZGUpIHtcblx0XHRcdFx0XHRcdEdsb2JhbHNEYXRhLmlUb2tlbkVycm9yQ291bnQgKz0gMTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoVE9LRU5fRVJST1JfTElNSVQgPCBHbG9iYWxzRGF0YS5pVG9rZW5FcnJvckNvdW50KSB7XG5cdFx0XHRcdFx0XHRpZiAoR2xvYmFsc0RhdGEuX19BUFBfXyAmJiBHbG9iYWxzRGF0YS5fX0FQUF9fLmxvZ2luQW5kTG9nb3V0UmVsb2FkKSB7XG5cdFx0XHRcdFx0XHRcdEdsb2JhbHNEYXRhLl9fQVBQX18ubG9naW5BbmRMb2dvdXRSZWxvYWQoZmFsc2UsIHRydWUpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChlcnJvckRhdGEuQ2xlYXJBdXRoIHx8IGVycm9yRGF0YS5Mb2dvdXQgfHwgQUpBWF9FUlJPUl9MSU1JVCA8IEdsb2JhbHNEYXRhLmlBamF4RXJyb3JDb3VudCkge1xuXHRcdFx0XHRcdFx0aWYgKEdsb2JhbHNEYXRhLl9fQVBQX18gJiYgR2xvYmFsc0RhdGEuX19BUFBfXy5jbGVhckNsaWVudFNpZGVUb2tlbikge1xuXHRcdFx0XHRcdFx0XHRHbG9iYWxzRGF0YS5fX0FQUF9fLmNsZWFyQ2xpZW50U2lkZVRva2VuKCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChHbG9iYWxzRGF0YS5fX0FQUF9fICYmICFlcnJvckRhdGEuQ2xlYXJBdXRoICYmIEdsb2JhbHNEYXRhLl9fQVBQX18ubG9naW5BbmRMb2dvdXRSZWxvYWQpIHtcblx0XHRcdFx0XHRcdFx0R2xvYmFsc0RhdGEuX19BUFBfXy5sb2dpbkFuZExvZ291dFJlbG9hZChmYWxzZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0aWYgKG9IKSB7XG5cdFx0XHRcdGlmICh0aGlzLm9SZXF1ZXN0c1thY3Rpb25dKSB7XG5cdFx0XHRcdFx0dGhpcy5vUmVxdWVzdHNbYWN0aW9uXSA9IG51bGw7XG5cdFx0XHRcdFx0ZGVsZXRlIHRoaXMub1JlcXVlc3RzW2FjdGlvbl07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLm9SZXF1ZXN0c1thY3Rpb25dID0gb0g7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRSZXF1ZXN0KHNBY3Rpb24sIGZUcmlnZ2VyLCBzQWRkaXRpb25hbEdldFN0cmluZywgaVRpbWVPdXQpIHtcblx0XHRzQWRkaXRpb25hbEdldFN0cmluZyA9IGlzVW5kKHNBZGRpdGlvbmFsR2V0U3RyaW5nKSA/ICcnIDogcFN0cmluZyhzQWRkaXRpb25hbEdldFN0cmluZyk7XG5cdFx0c0FkZGl0aW9uYWxHZXRTdHJpbmcgPSBzQWN0aW9uICsgJy8nICsgc0FkZGl0aW9uYWxHZXRTdHJpbmc7XG5cblx0XHRyZXR1cm4gdGhpcy5hamF4UmVxdWVzdChzQWN0aW9uLCBmYWxzZSwgaVRpbWVPdXQsIG51bGwsIHNBZGRpdGlvbmFsR2V0U3RyaW5nLCBmVHJpZ2dlcik7XG5cdH1cblxuXHRwb3N0UmVxdWVzdChhY3Rpb24sIGZUcmlnZ2VyLCBwYXJhbXMsIHRpbWVPdXQpIHtcblx0XHRwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cdFx0cGFyYW1zLkFjdGlvbiA9IGFjdGlvbjtcblxuXHRcdHJldHVybiB0aGlzLmFqYXhSZXF1ZXN0KGFjdGlvbiwgdHJ1ZSwgdGltZU91dCwgcGFyYW1zLCAnJywgZlRyaWdnZXIpO1xuXHR9XG59XG5cbmV4cG9ydCB7IEFic3RyYWN0QWpheFByb21pc2VzLCBBYnN0cmFjdEFqYXhQcm9taXNlcyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBjaGFuZ2UgfSBmcm9tICdDb21tb24vTGlua3MnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmNsYXNzIEFjY291bnRNb2RlbCBleHRlbmRzIEFic3RyYWN0TW9kZWwge1xuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IGVtYWlsXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbj19IGNhbkJlRGVsZXRlID0gdHJ1ZVxuXHQgKiBAcGFyYW0ge251bWJlcj19IGNvdW50ID0gMFxuXHQgKi9cblx0Y29uc3RydWN0b3IoZW1haWwsIGNhbkJlRGVsZXRlID0gdHJ1ZSwgY291bnQgPSAwKSB7XG5cdFx0c3VwZXIoJ0FjY291bnRNb2RlbCcpO1xuXG5cdFx0dGhpcy5lbWFpbCA9IGVtYWlsO1xuXG5cdFx0dGhpcy5jb3VudCA9IGtvLm9ic2VydmFibGUoY291bnQpO1xuXG5cdFx0dGhpcy5kZWxldGVBY2Nlc3MgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmNhbkJlRGVsZXRlZCA9IGtvLm9ic2VydmFibGUoISFjYW5CZURlbGV0ZSk7XG5cdFx0dGhpcy5jYW5CZUVkaXQgPSB0aGlzLmNhbkJlRGVsZXRlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0Y2hhbmdlQWNjb3VudExpbmsoKSB7XG5cdFx0cmV0dXJuIGNoYW5nZSh0aGlzLmVtYWlsKTtcblx0fVxufVxuXG5leHBvcnQgeyBBY2NvdW50TW9kZWwsIEFjY291bnRNb2RlbCBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmNsYXNzIElkZW50aXR5TW9kZWwgZXh0ZW5kcyBBYnN0cmFjdE1vZGVsIHtcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZW1haWxcblx0ICovXG5cdGNvbnN0cnVjdG9yKGlkLCBlbWFpbCkge1xuXHRcdHN1cGVyKCdJZGVudGl0eU1vZGVsJyk7XG5cblx0XHR0aGlzLmlkID0ga28ub2JzZXJ2YWJsZShpZCB8fCAnJyk7XG5cdFx0dGhpcy5lbWFpbCA9IGtvLm9ic2VydmFibGUoZW1haWwpO1xuXHRcdHRoaXMubmFtZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5yZXBseVRvID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5iY2MgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMuc2lnbmF0dXJlID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5zaWduYXR1cmVJbnNlcnRCZWZvcmUgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZGVsZXRlQWNjZXNzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5jYW5CZURlbGV0ZWQgPSBrby5jb21wdXRlZCgoKSA9PiAnJyAhPT0gdGhpcy5pZCgpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0Zm9ybWF0dGVkTmFtZSgpIHtcblx0XHRjb25zdCBuYW1lID0gdGhpcy5uYW1lKCksXG5cdFx0XHRlbWFpbCA9IHRoaXMuZW1haWwoKTtcblxuXHRcdHJldHVybiAnJyAhPT0gbmFtZSA/IG5hbWUgKyAnICgnICsgZW1haWwgKyAnKScgOiBlbWFpbDtcblx0fVxufVxuXG5leHBvcnQgeyBJZGVudGl0eU1vZGVsLCBJZGVudGl0eU1vZGVsIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IHBTdHJpbmcgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmNsYXNzIFRlbXBsYXRlTW9kZWwgZXh0ZW5kcyBBYnN0cmFjdE1vZGVsIHtcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBpZFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgKiBAcGFyYW0ge3N0cmluZ30gYm9keVxuXHQgKi9cblx0Y29uc3RydWN0b3IoaWQsIG5hbWUsIGJvZHkpIHtcblx0XHRzdXBlcignVGVtcGxhdGVNb2RlbCcpO1xuXG5cdFx0dGhpcy5pZCA9IGlkO1xuXHRcdHRoaXMubmFtZSA9IG5hbWU7XG5cdFx0dGhpcy5ib2R5ID0gYm9keTtcblx0XHR0aGlzLnBvcHVsYXRlZCA9IHRydWU7XG5cblx0XHR0aGlzLmRlbGV0ZUFjY2VzcyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0cGFyc2UoanNvbikge1xuXHRcdGxldCByZXN1bHQgPSBmYWxzZTtcblx0XHRpZiAoanNvbiAmJiAnT2JqZWN0L1RlbXBsYXRlJyA9PT0ganNvblsnQE9iamVjdCddKSB7XG5cdFx0XHR0aGlzLmlkID0gcFN0cmluZyhqc29uLklEKTtcblx0XHRcdHRoaXMubmFtZSA9IHBTdHJpbmcoanNvbi5OYW1lKTtcblx0XHRcdHRoaXMuYm9keSA9IHBTdHJpbmcoanNvbi5Cb2R5KTtcblx0XHRcdHRoaXMucG9wdWxhdGVkID0gISFqc29uLlBvcHVsYXRlZDtcblxuXHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG59XG5cbmV4cG9ydCB7IFRlbXBsYXRlTW9kZWwsIFRlbXBsYXRlTW9kZWwgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgaXNOb25FbXB0eUFycmF5LCBsb2cgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmltcG9ydCBQZ3BTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9QZ3AnO1xuXG5jbGFzcyBPcGVuUGdwS2V5TW9kZWwgZXh0ZW5kcyBBYnN0cmFjdE1vZGVsIHtcblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBpbmRleFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZ3VJRFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gSURcblx0ICogQHBhcmFtIHthcnJheX0gSURzXG5cdCAqIEBwYXJhbSB7YXJyYXl9IHVzZXJJRHNcblx0ICogQHBhcmFtIHthcnJheX0gZW1haWxzXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNQcml2YXRlXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBhcm1vclxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdXNlcklEXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihpbmRleCwgZ3VJRCwgSUQsIElEcywgdXNlcklEcywgZW1haWxzLCBpc1ByaXZhdGUsIGFybW9yLCB1c2VySUQpIHtcblx0XHRzdXBlcignT3BlblBncEtleU1vZGVsJyk7XG5cblx0XHR0aGlzLmluZGV4ID0gaW5kZXg7XG5cdFx0dGhpcy5pZCA9IElEO1xuXHRcdHRoaXMuaWRzID0gaXNOb25FbXB0eUFycmF5KElEcykgPyBJRHMgOiBbSURdO1xuXHRcdHRoaXMuZ3VpZCA9IGd1SUQ7XG5cdFx0dGhpcy51c2VyID0gJyc7XG5cdFx0dGhpcy51c2VycyA9IHVzZXJJRHM7XG5cdFx0dGhpcy5lbWFpbCA9ICcnO1xuXHRcdHRoaXMuZW1haWxzID0gZW1haWxzO1xuXHRcdHRoaXMuYXJtb3IgPSBhcm1vcjtcblx0XHR0aGlzLmlzUHJpdmF0ZSA9ICEhaXNQcml2YXRlO1xuXG5cdFx0dGhpcy5zZWxlY3RVc2VyKHVzZXJJRCk7XG5cblx0XHR0aGlzLmRlbGV0ZUFjY2VzcyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHR9XG5cblx0Z2V0TmF0aXZlS2V5KCkge1xuXHRcdGxldCBrZXkgPSBudWxsO1xuXHRcdHRyeSB7XG5cdFx0XHRrZXkgPSBQZ3BTdG9yZS5vcGVucGdwLmtleS5yZWFkQXJtb3JlZCh0aGlzLmFybW9yKTtcblx0XHRcdGlmIChrZXkgJiYgIWtleS5lcnIgJiYga2V5LmtleXMgJiYga2V5LmtleXNbMF0pIHtcblx0XHRcdFx0cmV0dXJuIGtleTtcblx0XHRcdH1cblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRsb2coZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRnZXROYXRpdmVLZXlzKCkge1xuXHRcdGNvbnN0IGtleSA9IHRoaXMuZ2V0TmF0aXZlS2V5KCk7XG5cdFx0cmV0dXJuIGtleSAmJiBrZXkua2V5cyA/IGtleS5rZXlzIDogbnVsbDtcblx0fVxuXG5cdHNlbGVjdChwYXR0ZXJuLCBwcm9wZXJ0eSkge1xuXHRcdGlmICh0aGlzW3Byb3BlcnR5XSkge1xuXHRcdFx0Y29uc3QgaW5kZXggPSB0aGlzW3Byb3BlcnR5XS5pbmRleE9mKHBhdHRlcm4pO1xuXHRcdFx0aWYgKC0xICE9PSBpbmRleCkge1xuXHRcdFx0XHR0aGlzLnVzZXIgPSB0aGlzLnVzZXJzW2luZGV4XTtcblx0XHRcdFx0dGhpcy5lbWFpbCA9IHRoaXMuZW1haWxzW2luZGV4XTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRzZWxlY3RVc2VyKHVzZXIpIHtcblx0XHR0aGlzLnNlbGVjdCh1c2VyLCAndXNlcnMnKTtcblx0fVxuXG5cdHNlbGVjdEVtYWlsKGVtYWlsKSB7XG5cdFx0dGhpcy5zZWxlY3QoZW1haWwsICdlbWFpbHMnKTtcblx0fVxufVxuXG5leHBvcnQgeyBPcGVuUGdwS2V5TW9kZWwsIE9wZW5QZ3BLZXlNb2RlbCBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBBYnN0cmFjdFNjcmVlbiB9IGZyb20gJ0tub2luL0Fic3RyYWN0U2NyZWVuJztcblxuaW1wb3J0IHsgTG9naW5Vc2VyVmlldyB9IGZyb20gJ1ZpZXcvVXNlci9Mb2dpbic7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5jbGFzcyBMb2dpblVzZXJTY3JlZW4gZXh0ZW5kcyBBYnN0cmFjdFNjcmVlbiB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCdsb2dpbicsIFtMb2dpblVzZXJWaWV3XSk7XG5cdH1cblxuXHRvblNob3coKSB7XG5cdFx0Z2V0QXBwKCkuc2V0V2luZG93VGl0bGUoJycpO1xuXHR9XG59XG5cbmV4cG9ydCB7IExvZ2luVXNlclNjcmVlbiwgTG9naW5Vc2VyU2NyZWVuIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB3aW5kb3cgZnJvbSAnd2luZG93JztcbmltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHtcblx0TG9naW5TaWduTWVUeXBlLFxuXHRMb2dpblNpZ25NZVR5cGVBc1N0cmluZyxcblx0Q2xpZW50U2lkZUtleU5hbWUsXG5cdFN0b3JhZ2VSZXN1bHRUeXBlLFxuXHRNYWdpY3MsXG5cdE5vdGlmaWNhdGlvblxufSBmcm9tICdDb21tb24vRW51bXMnO1xuXG5pbXBvcnQgeyB0cmltLCBpbkFycmF5LCBwSW50LCBjb252ZXJ0TGFuZ05hbWUsIHRyaWdnZXJBdXRvY29tcGxldGVJbnB1dENoYW5nZSB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmltcG9ydCB7ICR3aW4gfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5pbXBvcnQgeyBzb2NpYWxGYWNlYm9vaywgc29jaWFsR29vZ2xlLCBzb2NpYWxUd2l0dGVyIH0gZnJvbSAnQ29tbW9uL0xpbmtzJztcbmltcG9ydCB7IGdldE5vdGlmaWNhdGlvbiwgZ2V0Tm90aWZpY2F0aW9uRnJvbVJlc3BvbnNlLCByZWxvYWQgYXMgdHJhbnNsYXRvclJlbG9hZCB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0ICogYXMgUGx1Z2lucyBmcm9tICdDb21tb24vUGx1Z2lucyc7XG5cbmltcG9ydCBBcHBTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BcHAnO1xuaW1wb3J0IExhbmd1YWdlU3RvcmUgZnJvbSAnU3RvcmVzL0xhbmd1YWdlJztcblxuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5pbXBvcnQgKiBhcyBMb2NhbCBmcm9tICdTdG9yYWdlL0NsaWVudCc7XG5cbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyB2aWV3LCBjb21tYW5kLCBWaWV3VHlwZSwgcm91dGVPZmYsIHNob3dTY3JlZW5Qb3B1cCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHZpZXcoe1xuXHRuYW1lOiBbJ1ZpZXcvQXBwL0xvZ2luJywgJ1ZpZXcvVXNlci9Mb2dpbiddLFxuXHR0eXBlOiBWaWV3VHlwZS5DZW50ZXIsXG5cdHRlbXBsYXRlSUQ6ICdMb2dpbidcbn0pXG5jbGFzcyBMb2dpblVzZXJWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmhpZGVTdWJtaXRCdXR0b24gPSAhIVNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdoaWRlU3VibWl0QnV0dG9uJyk7XG5cblx0XHR0aGlzLndlbGNvbWUgPSBrby5vYnNlcnZhYmxlKCEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1VzZUxvZ2luV2VsY29tZVBhZ2UnKSk7XG5cblx0XHR0aGlzLmVtYWlsID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5wYXNzd29yZCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuc2lnbk1lID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5hZGRpdGlvbmFsQ29kZS5lcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuYWRkaXRpb25hbENvZGUuZXJyb3JBbmltYXRpb24gPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyBmYWxzZVRpbWVvdXQ6IDUwMCB9KTtcblx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlLmZvY3VzZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlLnZpc2liaWxpdHkgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlU2lnbk1lID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmxvZ29JbWcgPSB0cmltKFNldHRpbmdzLnNldHRpbmdzR2V0KCdMb2dpbkxvZ28nKSk7XG5cdFx0dGhpcy5sb2dpbkRlc2NyaXB0aW9uID0gdHJpbShTZXR0aW5ncy5zZXR0aW5nc0dldCgnTG9naW5EZXNjcmlwdGlvbicpKTtcblxuXHRcdHRoaXMubW9iaWxlID0gISFTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJyk7XG5cdFx0dGhpcy5tb2JpbGVEZXZpY2UgPSAhIVNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdtb2JpbGVEZXZpY2UnKTtcblxuXHRcdHRoaXMuZm9yZ290UGFzc3dvcmRMaW5rVXJsID0gU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2ZvcmdvdFBhc3N3b3JkTGlua1VybCcpO1xuXHRcdHRoaXMucmVnaXN0cmF0aW9uTGlua1VybCA9IFNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdyZWdpc3RyYXRpb25MaW5rVXJsJyk7XG5cblx0XHR0aGlzLmVtYWlsRXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnBhc3N3b3JkRXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZW1haWxFcnJvckFuaW1hdGlvbiA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IGZhbHNlVGltZW91dDogNTAwIH0pO1xuXHRcdHRoaXMucGFzc3dvcmRFcnJvckFuaW1hdGlvbiA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IGZhbHNlVGltZW91dDogNTAwIH0pO1xuXG5cdFx0dGhpcy5mb3JtSGlkZGVuID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmZvcm1FcnJvciA9IGtvLmNvbXB1dGVkKFxuXHRcdFx0KCkgPT5cblx0XHRcdFx0dGhpcy5lbWFpbEVycm9yQW5pbWF0aW9uKCkgfHxcblx0XHRcdFx0dGhpcy5wYXNzd29yZEVycm9yQW5pbWF0aW9uKCkgfHxcblx0XHRcdFx0KHRoaXMuYWRkaXRpb25hbENvZGUudmlzaWJpbGl0eSgpICYmIHRoaXMuYWRkaXRpb25hbENvZGUuZXJyb3JBbmltYXRpb24oKSlcblx0XHQpO1xuXG5cdFx0dGhpcy5lbWFpbEZvY3VzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5wYXNzd29yZEZvY3VzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmVtYWlsLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLmVtYWlsRXJyb3IoZmFsc2UpO1xuXHRcdFx0dGhpcy5hZGRpdGlvbmFsQ29kZSgnJyk7XG5cdFx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlLnZpc2liaWxpdHkoZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5wYXNzd29yZC5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5wYXNzd29yZEVycm9yKGZhbHNlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuYWRkaXRpb25hbENvZGUuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuYWRkaXRpb25hbENvZGUuZXJyb3IoZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRpdGlvbmFsQ29kZS52aXNpYmlsaXR5LnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlLmVycm9yKGZhbHNlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuZW1haWxFcnJvci5zdWJzY3JpYmUoKGJWKSA9PiB7XG5cdFx0XHR0aGlzLmVtYWlsRXJyb3JBbmltYXRpb24oISFiVik7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnBhc3N3b3JkRXJyb3Iuc3Vic2NyaWJlKChiVikgPT4ge1xuXHRcdFx0dGhpcy5wYXNzd29yZEVycm9yQW5pbWF0aW9uKCEhYlYpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRpdGlvbmFsQ29kZS5lcnJvci5zdWJzY3JpYmUoKGJWKSA9PiB7XG5cdFx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlLmVycm9yQW5pbWF0aW9uKCEhYlYpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5zdWJtaXRSZXF1ZXN0ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zdWJtaXRFcnJvciA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuc3VibWl0RXJyb3JBZGRpZGlvbmFsID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLnN1Ym1pdEVycm9yLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICgnJyA9PT0gdmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zdWJtaXRFcnJvckFkZGlkaW9uYWwoJycpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5hbGxvd0xhbmd1YWdlc09uTG9naW4gPSBBcHBTdG9yZS5hbGxvd0xhbmd1YWdlc09uTG9naW47XG5cblx0XHR0aGlzLmxhbmdSZXF1ZXN0ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5sYW5ndWFnZSA9IExhbmd1YWdlU3RvcmUubGFuZ3VhZ2U7XG5cdFx0dGhpcy5sYW5ndWFnZXMgPSBMYW5ndWFnZVN0b3JlLmxhbmd1YWdlcztcblxuXHRcdHRoaXMuYlNlbmRMYW5ndWFnZSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5sYW5ndWFnZUZ1bGxOYW1lID0ga28uY29tcHV0ZWQoKCkgPT4gY29udmVydExhbmdOYW1lKHRoaXMubGFuZ3VhZ2UoKSkpO1xuXG5cdFx0dGhpcy5zaWduTWVUeXBlID0ga28ub2JzZXJ2YWJsZShMb2dpblNpZ25NZVR5cGUuVW51c2VkKTtcblxuXHRcdHRoaXMuc2lnbk1lVHlwZS5zdWJzY3JpYmUoKGlWYWx1ZSkgPT4ge1xuXHRcdFx0dGhpcy5zaWduTWUoTG9naW5TaWduTWVUeXBlLkRlZmF1bHRPbiA9PT0gaVZhbHVlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuc2lnbk1lVmlzaWJpbGl0eSA9IGtvLmNvbXB1dGVkKCgpID0+IExvZ2luU2lnbk1lVHlwZS5VbnVzZWQgIT09IHRoaXMuc2lnbk1lVHlwZSgpKTtcblxuXHRcdHRoaXMuZmFjZWJvb2tMb2dpbkVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmdvb2dsZUxvZ2luRW5hYmxlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZ29vZ2xlR21haWxMb2dpbkVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnR3aXR0ZXJMb2dpbkVuYWJsZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuc29jaWFsTG9naW5FbmFibGVkID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgYkYgPSB0aGlzLmZhY2Vib29rTG9naW5FbmFibGVkKCksXG5cdFx0XHRcdGJHID0gdGhpcy5nb29nbGVMb2dpbkVuYWJsZWQoKSxcblx0XHRcdFx0YlQgPSB0aGlzLnR3aXR0ZXJMb2dpbkVuYWJsZWQoKTtcblxuXHRcdFx0cmV0dXJuIGJGIHx8IGJHIHx8IGJUO1xuXHRcdH0pO1xuXG5cdFx0aWYgKFNldHRpbmdzLnNldHRpbmdzR2V0KCdBZGRpdGlvbmFsTG9naW5FcnJvcicpICYmICF0aGlzLnN1Ym1pdEVycm9yKCkpIHtcblx0XHRcdHRoaXMuc3VibWl0RXJyb3IoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FkZGl0aW9uYWxMb2dpbkVycm9yJykpO1xuXHRcdH1cblx0fVxuXG5cdHdpbmRvd09wZW5GZWF0dXJlcyh3aCkge1xuXHRcdHJldHVybiBgbGVmdD0yMDAsdG9wPTEwMCx3aWR0aD0ke3dofSxoZWlnaHQ9JHt3aH0sbWVudWJhcj1ubyxzdGF0dXM9bm8scmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPXllc2A7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gIXNlbGYuc3VibWl0UmVxdWVzdCgpICYmIHNlbGYuZmFjZWJvb2tMb2dpbkVuYWJsZWQoKSlcblx0ZmFjZWJvb2tDb21tYW5kKCkge1xuXHRcdHdpbmRvdy5vcGVuKHNvY2lhbEZhY2Vib29rKCksICdGYWNlYm9vaycsIHRoaXMud2luZG93T3BlbkZlYXR1cmVzKDUwMCkpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLnN1Ym1pdFJlcXVlc3QoKSAmJiBzZWxmLmdvb2dsZUxvZ2luRW5hYmxlZCgpKVxuXHRnb29nbGVDb21tYW5kKCkge1xuXHRcdHdpbmRvdy5vcGVuKHNvY2lhbEdvb2dsZSgpLCAnR29vZ2xlJywgdGhpcy53aW5kb3dPcGVuRmVhdHVyZXMoNTUwKSk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gIXNlbGYuc3VibWl0UmVxdWVzdCgpICYmIHNlbGYuZ29vZ2xlR21haWxMb2dpbkVuYWJsZWQoKSlcblx0Z29vZ2xlR21haWxDb21tYW5kKCkge1xuXHRcdHdpbmRvdy5vcGVuKHNvY2lhbEdvb2dsZSh0cnVlKSwgJ0dvb2dsZScsIHRoaXMud2luZG93T3BlbkZlYXR1cmVzKDU1MCkpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLnN1Ym1pdFJlcXVlc3QoKSAmJiBzZWxmLnR3aXR0ZXJMb2dpbkVuYWJsZWQoKSlcblx0dHdpdHRlckNvbW1hbmQoKSB7XG5cdFx0d2luZG93Lm9wZW4oc29jaWFsVHdpdHRlcigpLCAnVHdpdHRlcicsIHRoaXMud2luZG93T3BlbkZlYXR1cmVzKDUwMCkpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLnN1Ym1pdFJlcXVlc3QoKSlcblx0c3VibWl0Q29tbWFuZCgpIHtcblx0XHR0cmlnZ2VyQXV0b2NvbXBsZXRlSW5wdXRDaGFuZ2UoKTtcblxuXHRcdHRoaXMuZW1haWxFcnJvcihmYWxzZSk7XG5cdFx0dGhpcy5wYXNzd29yZEVycm9yKGZhbHNlKTtcblxuXHRcdHRoaXMuZW1haWxFcnJvcignJyA9PT0gdHJpbSh0aGlzLmVtYWlsKCkpKTtcblx0XHR0aGlzLnBhc3N3b3JkRXJyb3IoJycgPT09IHRyaW0odGhpcy5wYXNzd29yZCgpKSk7XG5cblx0XHRpZiAodGhpcy5hZGRpdGlvbmFsQ29kZS52aXNpYmlsaXR5KCkpIHtcblx0XHRcdHRoaXMuYWRkaXRpb25hbENvZGUuZXJyb3IoZmFsc2UpO1xuXHRcdFx0dGhpcy5hZGRpdGlvbmFsQ29kZS5lcnJvcignJyA9PT0gdHJpbSh0aGlzLmFkZGl0aW9uYWxDb2RlKCkpKTtcblx0XHR9XG5cblx0XHRpZiAoXG5cdFx0XHR0aGlzLmVtYWlsRXJyb3IoKSB8fFxuXHRcdFx0dGhpcy5wYXNzd29yZEVycm9yKCkgfHxcblx0XHRcdCh0aGlzLmFkZGl0aW9uYWxDb2RlLnZpc2liaWxpdHkoKSAmJiB0aGlzLmFkZGl0aW9uYWxDb2RlLmVycm9yKCkpXG5cdFx0KSB7XG5cdFx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRcdFx0Y2FzZSB0aGlzLmVtYWlsRXJyb3IoKTpcblx0XHRcdFx0XHR0aGlzLmVtYWlsRm9jdXModHJ1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgdGhpcy5wYXNzd29yZEVycm9yKCk6XG5cdFx0XHRcdFx0dGhpcy5wYXNzd29yZEZvY3VzKHRydWUpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlIHRoaXMuYWRkaXRpb25hbENvZGUudmlzaWJpbGl0eSgpICYmIHRoaXMuYWRkaXRpb25hbENvZGUuZXJyb3IoKTpcblx0XHRcdFx0XHR0aGlzLmFkZGl0aW9uYWxDb2RlLmZvY3VzZWQodHJ1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGxldCBwbHVnaW5SZXN1bHRDb2RlID0gMCxcblx0XHRcdHBsdWdpblJlc3VsdE1lc3NhZ2UgPSAnJztcblxuXHRcdGNvbnN0IGZTdWJtaXRSZXN1bHQgPSAoaVJlc3VsdENvZGUsIHNSZXN1bHRNZXNzYWdlKSA9PiB7XG5cdFx0XHRwbHVnaW5SZXN1bHRDb2RlID0gaVJlc3VsdENvZGUgfHwgMDtcblx0XHRcdHBsdWdpblJlc3VsdE1lc3NhZ2UgPSBzUmVzdWx0TWVzc2FnZSB8fCAnJztcblx0XHR9O1xuXG5cdFx0UGx1Z2lucy5ydW5Ib29rKCd1c2VyLWxvZ2luLXN1Ym1pdCcsIFtmU3VibWl0UmVzdWx0XSk7XG5cdFx0aWYgKDAgPCBwbHVnaW5SZXN1bHRDb2RlKSB7XG5cdFx0XHR0aGlzLnN1Ym1pdEVycm9yKGdldE5vdGlmaWNhdGlvbihwbHVnaW5SZXN1bHRDb2RlKSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIGlmICgnJyAhPT0gcGx1Z2luUmVzdWx0TWVzc2FnZSkge1xuXHRcdFx0dGhpcy5zdWJtaXRFcnJvcihwbHVnaW5SZXN1bHRNZXNzYWdlKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG5cdFx0JHdpbi50cmlnZ2VyKCdybC50b29sdGlwcy5kaWFjdGl2YXRlJyk7XG5cblx0XHRjb25zdCBmTG9naW5SZXF1ZXN0ID0gKHNMb2dpblBhc3N3b3JkKSA9PiB7XG5cdFx0XHRSZW1vdGUubG9naW4oXG5cdFx0XHRcdChzUmVzdWx0LCBvRGF0YSkgPT4ge1xuXHRcdFx0XHRcdCR3aW4udHJpZ2dlcigncmwudG9vbHRpcHMuZGlhY3RpdmF0ZScpO1xuXHRcdFx0XHRcdCR3aW4udHJpZ2dlcigncmwudG9vbHRpcHMuYWN0aXZhdGUnKTtcblxuXHRcdFx0XHRcdGlmIChTdG9yYWdlUmVzdWx0VHlwZS5TdWNjZXNzID09PSBzUmVzdWx0ICYmIG9EYXRhICYmICdMb2dpbicgPT09IG9EYXRhLkFjdGlvbikge1xuXHRcdFx0XHRcdFx0aWYgKG9EYXRhLlJlc3VsdCkge1xuXHRcdFx0XHRcdFx0XHRpZiAob0RhdGEuVHdvRmFjdG9yQXV0aCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYWRkaXRpb25hbENvZGUoJycpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuYWRkaXRpb25hbENvZGUudmlzaWJpbGl0eSh0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuXG5cdFx0XHRcdFx0XHRcdFx0Xy5kZWxheSgoKSA9PiB0aGlzLmFkZGl0aW9uYWxDb2RlLmZvY3VzZWQodHJ1ZSksIE1hZ2ljcy5UaW1lMTAwbXMpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKG9EYXRhLkFkbWluKSB7XG5cdFx0XHRcdFx0XHRcdFx0Z2V0QXBwKCkucmVkaXJlY3RUb0FkbWluUGFuZWwoKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRnZXRBcHAoKS5sb2dpbkFuZExvZ291dFJlbG9hZChmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAob0RhdGEuRXJyb3JDb2RlKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3VibWl0UmVxdWVzdChmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdGlmICgtMSA8IGluQXJyYXkob0RhdGEuRXJyb3JDb2RlLCBbTm90aWZpY2F0aW9uLkludmFsaWRJbnB1dEFyZ3VtZW50XSkpIHtcblx0XHRcdFx0XHRcdFx0XHRvRGF0YS5FcnJvckNvZGUgPSBOb3RpZmljYXRpb24uQXV0aEVycm9yO1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0dGhpcy5zdWJtaXRFcnJvcihnZXROb3RpZmljYXRpb25Gcm9tUmVzcG9uc2Uob0RhdGEpKTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoJycgPT09IHRoaXMuc3VibWl0RXJyb3IoKSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuc3VibWl0RXJyb3IoZ2V0Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbi5Vbmtub3duRXJyb3IpKTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChvRGF0YS5FcnJvck1lc3NhZ2VBZGRpdGlvbmFsKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zdWJtaXRFcnJvckFkZGlkaW9uYWwob0RhdGEuRXJyb3JNZXNzYWdlQWRkaXRpb25hbCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc3VibWl0UmVxdWVzdChmYWxzZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHRoaXMuc3VibWl0UmVxdWVzdChmYWxzZSk7XG5cdFx0XHRcdFx0XHR0aGlzLnN1Ym1pdEVycm9yKGdldE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24uVW5rbm93bkVycm9yKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGlzLmVtYWlsKCksXG5cdFx0XHRcdCcnLFxuXHRcdFx0XHRzTG9naW5QYXNzd29yZCxcblx0XHRcdFx0ISF0aGlzLnNpZ25NZSgpLFxuXHRcdFx0XHR0aGlzLmJTZW5kTGFuZ3VhZ2UgPyB0aGlzLmxhbmd1YWdlKCkgOiAnJyxcblx0XHRcdFx0dGhpcy5hZGRpdGlvbmFsQ29kZS52aXNpYmlsaXR5KCkgPyB0aGlzLmFkZGl0aW9uYWxDb2RlKCkgOiAnJyxcblx0XHRcdFx0dGhpcy5hZGRpdGlvbmFsQ29kZS52aXNpYmlsaXR5KCkgPyAhIXRoaXMuYWRkaXRpb25hbENvZGVTaWduTWUoKSA6IGZhbHNlXG5cdFx0XHQpO1xuXG5cdFx0XHRMb2NhbC5zZXQoQ2xpZW50U2lkZUtleU5hbWUuTGFzdFNpZ25NZSwgdGhpcy5zaWduTWUoKSA/ICctMS0nIDogJy0wLScpO1xuXHRcdH07XG5cblx0XHRmTG9naW5SZXF1ZXN0KHRoaXMucGFzc3dvcmQoKSk7XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGRpc3BsYXlNYWluRm9ybSgpIHtcblx0XHR0aGlzLndlbGNvbWUoZmFsc2UpO1xuXHR9XG5cblx0b25TaG93KCkge1xuXHRcdHJvdXRlT2ZmKCk7XG5cdH1cblxuXHRvblNob3dXaXRoRGVsYXkoKSB7XG5cdFx0aWYgKCcnICE9PSB0aGlzLmVtYWlsKCkgJiYgJycgIT09IHRoaXMucGFzc3dvcmQoKSkge1xuXHRcdFx0dGhpcy5wYXNzd29yZEZvY3VzKHRydWUpO1xuXHRcdH0gZWxzZSBpZiAoJycgPT09IHRoaXMuZW1haWwoKSkge1xuXHRcdFx0dGhpcy5lbWFpbEZvY3VzKHRydWUpO1xuXHRcdH0gZWxzZSBpZiAoJycgPT09IHRoaXMucGFzc3dvcmQoKSkge1xuXHRcdFx0dGhpcy5wYXNzd29yZEZvY3VzKHRydWUpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmVtYWlsRm9jdXModHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0b25IaWRlKCkge1xuXHRcdHRoaXMuZW1haWxGb2N1cyhmYWxzZSk7XG5cdFx0dGhpcy5wYXNzd29yZEZvY3VzKGZhbHNlKTtcblx0fVxuXG5cdG9uQnVpbGQoKSB7XG5cdFx0Y29uc3Qgc2lnbk1lTG9jYWwgPSBMb2NhbC5nZXQoQ2xpZW50U2lkZUtleU5hbWUuTGFzdFNpZ25NZSksXG5cdFx0XHRzaWduTWUgPSAoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1NpZ25NZScpIHx8ICd1bnVzZWQnKS50b0xvd2VyQ2FzZSgpLFxuXHRcdFx0anNIYXNoID0gU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2pzSGFzaCcpLFxuXHRcdFx0ZlNvY2lhbCA9IChpRXJyb3JDb2RlKSA9PiB7XG5cdFx0XHRcdGlFcnJvckNvZGUgPSBwSW50KGlFcnJvckNvZGUpO1xuXHRcdFx0XHRpZiAoMCA9PT0gaUVycm9yQ29kZSkge1xuXHRcdFx0XHRcdHRoaXMuc3VibWl0UmVxdWVzdCh0cnVlKTtcblx0XHRcdFx0XHRnZXRBcHAoKS5sb2dpbkFuZExvZ291dFJlbG9hZChmYWxzZSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5zdWJtaXRFcnJvcihnZXROb3RpZmljYXRpb24oaUVycm9yQ29kZSkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0dGhpcy5mYWNlYm9va0xvZ2luRW5hYmxlZCghIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0ZhY2Vib29rU29jaWFsJykpO1xuXHRcdHRoaXMudHdpdHRlckxvZ2luRW5hYmxlZCghIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd1R3aXR0ZXJTb2NpYWwnKSk7XG5cdFx0dGhpcy5nb29nbGVMb2dpbkVuYWJsZWQoXG5cdFx0XHQhIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0dvb2dsZVNvY2lhbCcpICYmICEhU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93R29vZ2xlU29jaWFsQXV0aCcpXG5cdFx0KTtcblx0XHR0aGlzLmdvb2dsZUdtYWlsTG9naW5FbmFibGVkKFxuXHRcdFx0ISFTZXR0aW5ncy5zZXR0aW5nc0dldCgnQWxsb3dHb29nbGVTb2NpYWwnKSAmJiAhIVNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd0dvb2dsZVNvY2lhbEF1dGhHbWFpbCcpXG5cdFx0KTtcblxuXHRcdHN3aXRjaCAoc2lnbk1lKSB7XG5cdFx0XHRjYXNlIExvZ2luU2lnbk1lVHlwZUFzU3RyaW5nLkRlZmF1bHRPZmY6XG5cdFx0XHRjYXNlIExvZ2luU2lnbk1lVHlwZUFzU3RyaW5nLkRlZmF1bHRPbjpcblx0XHRcdFx0dGhpcy5zaWduTWVUeXBlKFxuXHRcdFx0XHRcdExvZ2luU2lnbk1lVHlwZUFzU3RyaW5nLkRlZmF1bHRPbiA9PT0gc2lnbk1lID8gTG9naW5TaWduTWVUeXBlLkRlZmF1bHRPbiA6IExvZ2luU2lnbk1lVHlwZS5EZWZhdWx0T2ZmXG5cdFx0XHRcdCk7XG5cblx0XHRcdFx0c3dpdGNoIChzaWduTWVMb2NhbCkge1xuXHRcdFx0XHRcdGNhc2UgJy0xLSc6XG5cdFx0XHRcdFx0XHR0aGlzLnNpZ25NZVR5cGUoTG9naW5TaWduTWVUeXBlLkRlZmF1bHRPbik7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRjYXNlICctMC0nOlxuXHRcdFx0XHRcdFx0dGhpcy5zaWduTWVUeXBlKExvZ2luU2lnbk1lVHlwZS5EZWZhdWx0T2ZmKTtcblx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBMb2dpblNpZ25NZVR5cGVBc1N0cmluZy5VbnVzZWQ6XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHR0aGlzLnNpZ25NZVR5cGUoTG9naW5TaWduTWVUeXBlLlVudXNlZCk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblxuXHRcdHRoaXMuZW1haWwoQXBwU3RvcmUuZGV2RW1haWwpO1xuXHRcdHRoaXMucGFzc3dvcmQoQXBwU3RvcmUuZGV2UGFzc3dvcmQpO1xuXG5cdFx0aWYgKHRoaXMuZ29vZ2xlTG9naW5FbmFibGVkKCkgfHwgdGhpcy5nb29nbGVHbWFpbExvZ2luRW5hYmxlZCgpKSB7XG5cdFx0XHR3aW5kb3dbJ3JsXycgKyBqc0hhc2ggKyAnX2dvb2dsZV9sb2dpbl9zZXJ2aWNlJ10gPSBmU29jaWFsO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLmZhY2Vib29rTG9naW5FbmFibGVkKCkpIHtcblx0XHRcdHdpbmRvd1sncmxfJyArIGpzSGFzaCArICdfZmFjZWJvb2tfbG9naW5fc2VydmljZSddID0gZlNvY2lhbDtcblx0XHR9XG5cblx0XHRpZiAodGhpcy50d2l0dGVyTG9naW5FbmFibGVkKCkpIHtcblx0XHRcdHdpbmRvd1sncmxfJyArIGpzSGFzaCArICdfdHdpdHRlcl9sb2dpbl9zZXJ2aWNlJ10gPSBmU29jaWFsO1xuXHRcdH1cblxuXHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0TGFuZ3VhZ2VTdG9yZS5sYW5ndWFnZS5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRcdHRoaXMubGFuZ1JlcXVlc3QodHJ1ZSk7XG5cblx0XHRcdFx0dHJhbnNsYXRvclJlbG9hZChmYWxzZSwgdmFsdWUpLnRoZW4oXG5cdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5sYW5nUmVxdWVzdChmYWxzZSk7XG5cdFx0XHRcdFx0XHR0aGlzLmJTZW5kTGFuZ3VhZ2UgPSB0cnVlO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5sYW5nUmVxdWVzdChmYWxzZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cdFx0fSwgTWFnaWNzLlRpbWU1MG1zKTtcblxuXHRcdHRyaWdnZXJBdXRvY29tcGxldGVJbnB1dENoYW5nZSh0cnVlKTtcblx0fVxuXG5cdHN1Ym1pdEZvcm0oKSB7XG5cdFx0dGhpcy5zdWJtaXRDb21tYW5kKCk7XG5cdH1cblxuXHRzZWxlY3RMYW5ndWFnZSgpIHtcblx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9MYW5ndWFnZXMnKSwgW3RoaXMubGFuZ3VhZ2UsIHRoaXMubGFuZ3VhZ2VzKCksIExhbmd1YWdlU3RvcmUudXNlckxhbmd1YWdlKCldKTtcblx0fVxuXG5cdHNlbGVjdExhbmd1YWdlT25UYWIoYlNoaWZ0KSB7XG5cdFx0aWYgKCFiU2hpZnQpIHtcblx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmVtYWlsRm9jdXModHJ1ZSk7XG5cdFx0XHR9LCBNYWdpY3MuVGltZTUwbXMpO1xuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cbn1cblxuZXhwb3J0IHsgTG9naW5Vc2VyVmlldywgTG9naW5Vc2VyVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcblxuaW1wb3J0IHsgRm9jdXNlZCwgQ2FwYSwgQ2xpZW50U2lkZUtleU5hbWUsIE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyAkaHRtbCwgbGVmdFBhbmVsRGlzYWJsZWQsIGxlZnRQYW5lbFR5cGUsIG1vdmVBY3Rpb24sIGJNb2JpbGVEZXZpY2UgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5pbXBvcnQgeyBwU3RyaW5nLCBwSW50LCBkZWNvZGVVUkksIHdpbmRvd1Jlc2l6ZUNhbGxiYWNrIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IGdldEZvbGRlckZyb21DYWNoZUxpc3QsIGdldEZvbGRlckZ1bGxOYW1lUmF3LCBnZXRGb2xkZXJJbmJveE5hbWUgfSBmcm9tICdDb21tb24vQ2FjaGUnO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gJ0NvbW1vbi9FdmVudHMnO1xuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmltcG9ydCBBcHBTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BcHAnO1xuaW1wb3J0IEFjY291bnRTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BY2NvdW50JztcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1NldHRpbmdzJztcbmltcG9ydCBGb2xkZXJTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Gb2xkZXInO1xuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcblxuaW1wb3J0IHsgU3lzdGVtRHJvcERvd25NYWlsQm94VXNlclZpZXcgfSBmcm9tICdWaWV3L1VzZXIvTWFpbEJveC9TeXN0ZW1Ecm9wRG93bic7XG5pbXBvcnQgeyBGb2xkZXJMaXN0TWFpbEJveFVzZXJWaWV3IH0gZnJvbSAnVmlldy9Vc2VyL01haWxCb3gvRm9sZGVyTGlzdCc7XG5pbXBvcnQgeyBNZXNzYWdlTGlzdE1haWxCb3hVc2VyVmlldyB9IGZyb20gJ1ZpZXcvVXNlci9NYWlsQm94L01lc3NhZ2VMaXN0JztcbmltcG9ydCB7IE1lc3NhZ2VWaWV3TWFpbEJveFVzZXJWaWV3IH0gZnJvbSAnVmlldy9Vc2VyL01haWxCb3gvTWVzc2FnZVZpZXcnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgd2FybVVwU2NyZWVuUG9wdXAgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5cbmltcG9ydCB7IEFic3RyYWN0U2NyZWVuIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RTY3JlZW4nO1xuXG5jbGFzcyBNYWlsQm94VXNlclNjcmVlbiBleHRlbmRzIEFic3RyYWN0U2NyZWVuIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoJ21haWxib3gnLCBbXG5cdFx0XHRTeXN0ZW1Ecm9wRG93bk1haWxCb3hVc2VyVmlldyxcblx0XHRcdEZvbGRlckxpc3RNYWlsQm94VXNlclZpZXcsXG5cdFx0XHRNZXNzYWdlTGlzdE1haWxCb3hVc2VyVmlldyxcblx0XHRcdE1lc3NhZ2VWaWV3TWFpbEJveFVzZXJWaWV3XG5cdFx0XSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHR1cGRhdGVXaW5kb3dUaXRsZSgpIHtcblx0XHRsZXQgZm9sZGVyc0luYm94VW5yZWFkQ291bnQgPSBGb2xkZXJTdG9yZS5mb2xkZXJzSW5ib3hVbnJlYWRDb3VudCgpO1xuXHRcdGNvbnN0IGVtYWlsID0gQWNjb3VudFN0b3JlLmVtYWlsKCk7XG5cblx0XHRpZiAoU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2xpc3RQZXJtYW5lbnRGaWx0ZXJlZCcpKSB7XG5cdFx0XHRmb2xkZXJzSW5ib3hVbnJlYWRDb3VudCA9IDA7XG5cdFx0fVxuXG5cdFx0Z2V0QXBwKCkuc2V0V2luZG93VGl0bGUoXG5cdFx0XHQoJycgPT09IGVtYWlsXG5cdFx0XHRcdD8gJydcblx0XHRcdFx0OiAnJyArICgwIDwgZm9sZGVyc0luYm94VW5yZWFkQ291bnQgPyAnKCcgKyBmb2xkZXJzSW5ib3hVbnJlYWRDb3VudCArICcpICcgOiAnICcpICsgZW1haWwgKyAnIC0gJykgK1xuXHRcdFx0XHRpMThuKCdUSVRMRVMvTUFJTEJPWCcpXG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdG9uU2hvdygpIHtcblx0XHR0aGlzLnVwZGF0ZVdpbmRvd1RpdGxlKCk7XG5cblx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5Ob25lKTtcblx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5NZXNzYWdlTGlzdCk7XG5cblx0XHRpZiAoU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ21vYmlsZScpKSB7XG5cdFx0XHRsZWZ0UGFuZWxEaXNhYmxlZCh0cnVlKTtcblx0XHR9XG5cblx0XHRpZiAoIVNldHRpbmdzLmNhcGEoQ2FwYS5Gb2xkZXJzKSkge1xuXHRcdFx0bGVmdFBhbmVsVHlwZShTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpIHx8IFNldHRpbmdzLmNhcGEoQ2FwYS5Db250YWN0cykgPyAnc2hvcnQnIDogJ25vbmUnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0bGVmdFBhbmVsVHlwZSgnJyk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBmb2xkZXJIYXNoXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzZWFyY2hcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRvblJvdXRlKGZvbGRlckhhc2gsIHBhZ2UsIHNlYXJjaCkge1xuXHRcdGxldCB0aHJlYWRVaWQgPSBmb2xkZXJIYXNoLnJlcGxhY2UoL14oLispfihbXFxkXSspJC8sICckMicpO1xuXHRcdGNvbnN0IGZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3QoZ2V0Rm9sZGVyRnVsbE5hbWVSYXcoZm9sZGVySGFzaC5yZXBsYWNlKC9+KFtcXGRdKykkLywgJycpKSk7XG5cblx0XHRpZiAoZm9sZGVyKSB7XG5cdFx0XHRpZiAoZm9sZGVySGFzaCA9PT0gdGhyZWFkVWlkKSB7XG5cdFx0XHRcdHRocmVhZFVpZCA9ICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyKGZvbGRlcik7XG5cblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdFBhZ2UocGFnZSk7XG5cdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RTZWFyY2goc2VhcmNoKTtcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdFRocmVhZFVpZCh0aHJlYWRVaWQpO1xuXG5cdFx0XHRnZXRBcHAoKS5yZWxvYWRNZXNzYWdlTGlzdCgpO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdG9uU3RhcnQoKSB7XG5cdFx0Rm9sZGVyU3RvcmUuZm9sZGVyTGlzdC5zdWJzY3JpYmUod2luZG93UmVzaXplQ2FsbGJhY2spO1xuXG5cdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0LnN1YnNjcmliZSh3aW5kb3dSZXNpemVDYWxsYmFjayk7XG5cdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2Uuc3Vic2NyaWJlKHdpbmRvd1Jlc2l6ZUNhbGxiYWNrKTtcblxuXHRcdF8uZGVsYXkoKCkgPT4gU2V0dGluZ3NTdG9yZS5sYXlvdXQudmFsdWVIYXNNdXRhdGVkKCksIE1hZ2ljcy5UaW1lNTBtcyk7XG5cdFx0Xy5kZWxheSgoKSA9PiB3YXJtVXBTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0NvbXBvc2UnKSksIE1hZ2ljcy5UaW1lNTAwbXMpO1xuXG5cdFx0RXZlbnRzLnN1YignbWFpbGJveC5pbmJveC11bnJlYWQtY291bnQnLCAoY291bnQpID0+IHtcblx0XHRcdEZvbGRlclN0b3JlLmZvbGRlcnNJbmJveFVucmVhZENvdW50KGNvdW50KTtcblxuXHRcdFx0Y29uc3QgZW1haWwgPSBBY2NvdW50U3RvcmUuZW1haWwoKTtcblx0XHRcdF8uZWFjaChBY2NvdW50U3RvcmUuYWNjb3VudHMoKSwgKGl0ZW0pID0+IHtcblx0XHRcdFx0aWYgKGl0ZW0gJiYgZW1haWwgPT09IGl0ZW0uZW1haWwpIHtcblx0XHRcdFx0XHRpdGVtLmNvdW50KGNvdW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMudXBkYXRlV2luZG93VGl0bGUoKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdG9uQnVpbGQoKSB7XG5cdFx0aWYgKCFiTW9iaWxlRGV2aWNlICYmICFTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJykpIHtcblx0XHRcdF8uZGVmZXIoKCkgPT4ge1xuXHRcdFx0XHRnZXRBcHAoKS5pbml0SG9yaXpvbnRhbExheW91dFJlc2l6ZXIoQ2xpZW50U2lkZUtleU5hbWUuTWVzc2FnZUxpc3RTaXplKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdCRodG1sLm9uKCdjbGljaycsICcjcmwtcmlnaHQnLCAoKSA9PiB7XG5cdFx0XHRtb3ZlQWN0aW9uKGZhbHNlKTtcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9XG5cdCAqL1xuXHRyb3V0ZXMoKSB7XG5cdFx0Y29uc3QgaW5ib3hGb2xkZXJOYW1lID0gZ2V0Rm9sZGVySW5ib3hOYW1lKCksXG5cdFx0XHRmTm9ybVMgPSAocmVxdWVzdCwgdmFscykgPT4ge1xuXHRcdFx0XHR2YWxzWzBdID0gcFN0cmluZyh2YWxzWzBdKTtcblx0XHRcdFx0dmFsc1sxXSA9IHBJbnQodmFsc1sxXSk7XG5cdFx0XHRcdHZhbHNbMV0gPSAwID49IHZhbHNbMV0gPyAxIDogdmFsc1sxXTtcblx0XHRcdFx0dmFsc1syXSA9IHBTdHJpbmcodmFsc1syXSk7XG5cblx0XHRcdFx0aWYgKCcnID09PSByZXF1ZXN0KSB7XG5cdFx0XHRcdFx0dmFsc1swXSA9IGluYm94Rm9sZGVyTmFtZTtcblx0XHRcdFx0XHR2YWxzWzFdID0gMTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbZGVjb2RlVVJJKHZhbHNbMF0pLCB2YWxzWzFdLCBkZWNvZGVVUkkodmFsc1syXSldO1xuXHRcdFx0fSxcblx0XHRcdGZOb3JtRCA9IChyZXF1ZXN0LCB2YWxzKSA9PiB7XG5cdFx0XHRcdHZhbHNbMF0gPSBwU3RyaW5nKHZhbHNbMF0pO1xuXHRcdFx0XHR2YWxzWzFdID0gcFN0cmluZyh2YWxzWzFdKTtcblxuXHRcdFx0XHRpZiAoJycgPT09IHJlcXVlc3QpIHtcblx0XHRcdFx0XHR2YWxzWzBdID0gaW5ib3hGb2xkZXJOYW1lO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIFtkZWNvZGVVUkkodmFsc1swXSksIDEsIGRlY29kZVVSSSh2YWxzWzFdKV07XG5cdFx0XHR9O1xuXG5cdFx0cmV0dXJuIFtcblx0XHRcdFsvXihbYS16QS1aMC05fl0rKVxcL3AoWzEtOV1bMC05XSopXFwvKC4rKVxcLz8kLywgeyAnbm9ybWFsaXplXyc6IGZOb3JtUyB9XSxcblx0XHRcdFsvXihbYS16QS1aMC05fl0rKVxcL3AoWzEtOV1bMC05XSopJC8sIHsgJ25vcm1hbGl6ZV8nOiBmTm9ybVMgfV0sXG5cdFx0XHRbL14oW2EtekEtWjAtOX5dKylcXC8oLispXFwvPyQvLCB7ICdub3JtYWxpemVfJzogZk5vcm1EIH1dLFxuXHRcdFx0Wy9eKFteL10qKSQvLCB7ICdub3JtYWxpemVfJzogZk5vcm1TIH1dXG5cdFx0XTtcblx0fVxufVxuXG5leHBvcnQgeyBNYWlsQm94VXNlclNjcmVlbiwgTWFpbEJveFVzZXJTY3JlZW4gYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHsgdmlldywgVmlld1R5cGUgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFN5c3RlbURyb3BEb3duVXNlclZpZXcgfSBmcm9tICdWaWV3L1VzZXIvQWJzdHJhY3RTeXN0ZW1Ecm9wRG93bic7XG5cbkB2aWV3KHtcblx0bmFtZTogJ1ZpZXcvVXNlci9NYWlsQm94L1N5c3RlbURyb3BEb3duJyxcblx0dHlwZTogVmlld1R5cGUuUmlnaHQsXG5cdHRlbXBsYXRlSUQ6ICdTeXN0ZW1Ecm9wRG93bidcbn0pXG5jbGFzcyBTeXN0ZW1Ecm9wRG93bk1haWxCb3hVc2VyVmlldyBleHRlbmRzIEFic3RyYWN0U3lzdGVtRHJvcERvd25Vc2VyVmlldyB7fVxuXG5leHBvcnQgeyBTeXN0ZW1Ecm9wRG93bk1haWxCb3hVc2VyVmlldywgU3lzdGVtRHJvcERvd25NYWlsQm94VXNlclZpZXcgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IGtleSBmcm9tICdrZXknO1xuXG5pbXBvcnQgeyB0cmltLCBpc05vcm1hbCwgaXNBcnJheSwgd2luZG93UmVzaXplIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IENhcGEsIEZvY3VzZWQsIExheW91dCwgS2V5U3RhdGUsIEV2ZW50S2V5Q29kZSwgTWFnaWNzIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7ICRodG1sLCBsZWZ0UGFuZWxEaXNhYmxlZCwgbW92ZUFjdGlvbiB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcbmltcG9ydCB7IG1haWxCb3gsIHNldHRpbmdzIH0gZnJvbSAnQ29tbW9uL0xpbmtzJztcbmltcG9ydCB7IHNldEZvbGRlckhhc2ggfSBmcm9tICdDb21tb24vQ2FjaGUnO1xuXG5pbXBvcnQgQXBwU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQXBwJztcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1NldHRpbmdzJztcbmltcG9ydCBGb2xkZXJTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Gb2xkZXInO1xuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcblxuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyB2aWV3LCBWaWV3VHlwZSwgc2hvd1NjcmVlblBvcHVwLCBzZXRIYXNoIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5Admlldyh7XG5cdG5hbWU6ICdWaWV3L1VzZXIvTWFpbEJveC9Gb2xkZXJMaXN0Jyxcblx0dHlwZTogVmlld1R5cGUuTGVmdCxcblx0dGVtcGxhdGVJRDogJ01haWxGb2xkZXJMaXN0J1xufSlcbmNsYXNzIEZvbGRlckxpc3RNYWlsQm94VXNlclZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMub0NvbnRlbnRWaXNpYmxlID0gbnVsbDtcblx0XHR0aGlzLm9Db250ZW50U2Nyb2xsYWJsZSA9IG51bGw7XG5cblx0XHR0aGlzLmNvbXBvc2VJbkVkaXQgPSBBcHBTdG9yZS5jb21wb3NlSW5FZGl0O1xuXG5cdFx0dGhpcy5tZXNzYWdlTGlzdCA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdDtcblx0XHR0aGlzLmZvbGRlckxpc3QgPSBGb2xkZXJTdG9yZS5mb2xkZXJMaXN0O1xuXHRcdHRoaXMuZm9sZGVyTGlzdFN5c3RlbSA9IEZvbGRlclN0b3JlLmZvbGRlckxpc3RTeXN0ZW07XG5cdFx0dGhpcy5mb2xkZXJzQ2hhbmdpbmcgPSBGb2xkZXJTdG9yZS5mb2xkZXJzQ2hhbmdpbmc7XG5cblx0XHR0aGlzLm1vdmVBY3Rpb24gPSBtb3ZlQWN0aW9uO1xuXG5cdFx0dGhpcy5mb2xkZXJzTGlzdFdpdGhTaW5nbGVJbmJveFJvb3RGb2xkZXIgPSBGb2xkZXJTdG9yZS5mb2xkZXJzTGlzdFdpdGhTaW5nbGVJbmJveFJvb3RGb2xkZXI7XG5cblx0XHR0aGlzLmxlZnRQYW5lbERpc2FibGVkID0gbGVmdFBhbmVsRGlzYWJsZWQ7XG5cblx0XHR0aGlzLmlEcm9wT3ZlclRpbWVyID0gMDtcblxuXHRcdHRoaXMuYWxsb3dDb21wb3NlciA9ICEhU2V0dGluZ3MuY2FwYShDYXBhLkNvbXBvc2VyKTtcblx0XHR0aGlzLmFsbG93Q29udGFjdHMgPSAhIUFwcFN0b3JlLmNvbnRhY3RzSXNBbGxvd2VkKCk7XG5cdFx0dGhpcy5hbGxvd0ZvbGRlcnMgPSAhIVNldHRpbmdzLmNhcGEoQ2FwYS5Gb2xkZXJzKTtcblxuXHRcdHRoaXMuZm9sZGVyTGlzdEZvY3VzZWQgPSBrby5jb21wdXRlZCgoKSA9PiBGb2N1c2VkLkZvbGRlckxpc3QgPT09IEFwcFN0b3JlLmZvY3VzZWRTdGF0ZSgpKTtcblxuXHRcdHRoaXMuaXNJbmJveFN0YXJyZWQgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+XG5cdFx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXIoKSAmJlxuXHRcdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyKCkuaXNJbmJveCgpICYmXG5cdFx0XHRcdC0xIDwgdHJpbShNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RTZWFyY2goKSkuaW5kZXhPZignaXM6ZmxhZ2dlZCcpXG5cdFx0KTtcblx0fVxuXG5cdG9uQnVpbGQoZG9tKSB7XG5cdFx0dGhpcy5vQ29udGVudFZpc2libGUgPSAkKCcuYi1jb250ZW50JywgZG9tKTtcblx0XHR0aGlzLm9Db250ZW50U2Nyb2xsYWJsZSA9ICQoJy5jb250ZW50JywgdGhpcy5vQ29udGVudFZpc2libGUpO1xuXG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXMsXG5cdFx0XHRpc01vYmlsZSA9IFNldHRpbmdzLmFwcFNldHRpbmdzR2V0KCdtb2JpbGUnKSxcblx0XHRcdGZTZWxlY3RGb2xkZXIgPSAoZWwsIGV2ZW50LCBzdGFycmVkKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGlzTW92ZSA9IG1vdmVBY3Rpb24oKTtcblx0XHRcdFx0aWYgKGlzTW9iaWxlKSB7XG5cdFx0XHRcdFx0bGVmdFBhbmVsRGlzYWJsZWQodHJ1ZSk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0XHRcdGlmIChzdGFycmVkKSB7XG5cdFx0XHRcdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRjb25zdCBmb2xkZXIgPSBrby5kYXRhRm9yKGVsKTtcblx0XHRcdFx0aWYgKGZvbGRlcikge1xuXHRcdFx0XHRcdGlmIChpc01vdmUpIHtcblx0XHRcdFx0XHRcdG1vdmVBY3Rpb24oZmFsc2UpO1xuXHRcdFx0XHRcdFx0Z2V0QXBwKCkubW92ZU1lc3NhZ2VzVG9Gb2xkZXIoXG5cdFx0XHRcdFx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpLFxuXHRcdFx0XHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RDaGVja2VkT3JTZWxlY3RlZFVpZHNXaXRoU3ViTWFpbHMoKSxcblx0XHRcdFx0XHRcdFx0Zm9sZGVyLmZ1bGxOYW1lUmF3LFxuXHRcdFx0XHRcdFx0XHRmYWxzZVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0aWYgKExheW91dC5Ob1ByZXZpZXcgPT09IFNldHRpbmdzU3RvcmUubGF5b3V0KCkpIHtcblx0XHRcdFx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2UobnVsbCk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChmb2xkZXIuZnVsbE5hbWVSYXcgPT09IEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpKSB7XG5cdFx0XHRcdFx0XHRcdHNldEZvbGRlckhhc2goZm9sZGVyLmZ1bGxOYW1lUmF3LCAnJyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmIChzdGFycmVkKSB7XG5cdFx0XHRcdFx0XHRcdHNldEhhc2gobWFpbEJveChmb2xkZXIuZnVsbE5hbWVIYXNoLCAxLCAnaXM6ZmxhZ2dlZCcpKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHNldEhhc2gobWFpbEJveChmb2xkZXIuZnVsbE5hbWVIYXNoKSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0QXBwU3RvcmUuZm9jdXNlZFN0YXRlKEZvY3VzZWQuTWVzc2FnZUxpc3QpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0ZG9tXG5cdFx0XHQub24oJ2NsaWNrJywgJy5iLWZvbGRlcnMgLmUtaXRlbSAuZS1saW5rIC5lLWNvbGxhcHNlZC1zaWduJywgZnVuY3Rpb24oZXZlbnQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdFx0Y29uc3QgZm9sZGVyID0ga28uZGF0YUZvcih0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0aWYgKGZvbGRlciAmJiBldmVudCkge1xuXHRcdFx0XHRcdGNvbnN0IGNvbGxhcHNlZCA9IGZvbGRlci5jb2xsYXBzZWQoKTtcblx0XHRcdFx0XHRnZXRBcHAoKS5zZXRFeHBhbmRlZEZvbGRlcihmb2xkZXIuZnVsbE5hbWVIYXNoLCBjb2xsYXBzZWQpO1xuXG5cdFx0XHRcdFx0Zm9sZGVyLmNvbGxhcHNlZCghY29sbGFwc2VkKTtcblx0XHRcdFx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdjbGljaycsICcuYi1mb2xkZXJzIC5lLWl0ZW0gLmUtbGluay5zZWxlY3RhYmxlIC5pbmJveC1zdGFyLWljb24nLCBmdW5jdGlvbihldmVudCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0XHRmU2VsZWN0Rm9sZGVyKHRoaXMsIGV2ZW50LCAhc2VsZi5pc0luYm94U3RhcnJlZCgpKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdH0pXG5cdFx0XHQub24oJ2NsaWNrJywgJy5iLWZvbGRlcnMgLmUtaXRlbSAuZS1saW5rLnNlbGVjdGFibGUnLCBmdW5jdGlvbihldmVudCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0XHRmU2VsZWN0Rm9sZGVyKHRoaXMsIGV2ZW50LCBmYWxzZSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHR9KTtcblxuXHRcdGtleSgndXAsIGRvd24nLCBLZXlTdGF0ZS5Gb2xkZXJMaXN0LCAoZXZlbnQsIGhhbmRsZXIpID0+IHtcblx0XHRcdGNvbnN0IGtleUNvZGUgPSBoYW5kbGVyICYmICd1cCcgPT09IGhhbmRsZXIuc2hvcnRjdXQgPyBFdmVudEtleUNvZGUuVXAgOiBFdmVudEtleUNvZGUuRG93bixcblx0XHRcdFx0JGl0ZW1zID0gJCgnLmItZm9sZGVycyAuZS1pdGVtIC5lLWxpbms6bm90KC5oaWRkZW4pOnZpc2libGUnLCBkb20pO1xuXG5cdFx0XHRpZiAoZXZlbnQgJiYgJGl0ZW1zLmxlbmd0aCkge1xuXHRcdFx0XHRsZXQgaW5kZXggPSAkaXRlbXMuaW5kZXgoJGl0ZW1zLmZpbHRlcignLmZvY3VzZWQnKSk7XG5cdFx0XHRcdGlmICgtMSA8IGluZGV4KSB7XG5cdFx0XHRcdFx0JGl0ZW1zLmVxKGluZGV4KS5yZW1vdmVDbGFzcygnZm9jdXNlZCcpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKEV2ZW50S2V5Q29kZS5VcCA9PT0ga2V5Q29kZSAmJiAwIDwgaW5kZXgpIHtcblx0XHRcdFx0XHRpbmRleCAtPSAxO1xuXHRcdFx0XHR9IGVsc2UgaWYgKEV2ZW50S2V5Q29kZS5Eb3duID09PSBrZXlDb2RlICYmIGluZGV4IDwgJGl0ZW1zLmxlbmd0aCAtIDEpIHtcblx0XHRcdFx0XHRpbmRleCArPSAxO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0JGl0ZW1zLmVxKGluZGV4KS5hZGRDbGFzcygnZm9jdXNlZCcpO1xuXHRcdFx0XHRzZWxmLnNjcm9sbFRvRm9jdXNlZCgpO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRrZXkoJ2VudGVyJywgS2V5U3RhdGUuRm9sZGVyTGlzdCwgKCkgPT4ge1xuXHRcdFx0Y29uc3QgJGl0ZW1zID0gJCgnLmItZm9sZGVycyAuZS1pdGVtIC5lLWxpbms6bm90KC5oaWRkZW4pLmZvY3VzZWQnLCBkb20pO1xuXHRcdFx0aWYgKCRpdGVtcy5sZW5ndGggJiYgJGl0ZW1zWzBdKSB7XG5cdFx0XHRcdEFwcFN0b3JlLmZvY3VzZWRTdGF0ZShGb2N1c2VkLk1lc3NhZ2VMaXN0KTtcblx0XHRcdFx0JGl0ZW1zLmNsaWNrKCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdGtleSgnc3BhY2UnLCBLZXlTdGF0ZS5Gb2xkZXJMaXN0LCAoKSA9PiB7XG5cdFx0XHRjb25zdCAkaXRlbXMgPSAkKCcuYi1mb2xkZXJzIC5lLWl0ZW0gLmUtbGluazpub3QoLmhpZGRlbikuZm9jdXNlZCcsIGRvbSk7XG5cdFx0XHRpZiAoJGl0ZW1zLmxlbmd0aCAmJiAkaXRlbXNbMF0pIHtcblx0XHRcdFx0Y29uc3QgZm9sZGVyID0ga28uZGF0YUZvcigkaXRlbXNbMF0pO1xuXHRcdFx0XHRpZiAoZm9sZGVyKSB7XG5cdFx0XHRcdFx0Y29uc3QgY29sbGFwc2VkID0gZm9sZGVyLmNvbGxhcHNlZCgpO1xuXHRcdFx0XHRcdGdldEFwcCgpLnNldEV4cGFuZGVkRm9sZGVyKGZvbGRlci5mdWxsTmFtZUhhc2gsIGNvbGxhcHNlZCk7XG5cdFx0XHRcdFx0Zm9sZGVyLmNvbGxhcHNlZCghY29sbGFwc2VkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRrZXkoJ2VzYywgdGFiLCBzaGlmdCt0YWIsIHJpZ2h0JywgS2V5U3RhdGUuRm9sZGVyTGlzdCwgKCkgPT4ge1xuXHRcdFx0QXBwU3RvcmUuZm9jdXNlZFN0YXRlKEZvY3VzZWQuTWVzc2FnZUxpc3QpO1xuXHRcdFx0bW92ZUFjdGlvbihmYWxzZSk7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cblx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0JCgnLmItZm9sZGVycyAuZS1pdGVtIC5lLWxpbmsuZm9jdXNlZCcsIGRvbSkucmVtb3ZlQ2xhc3MoJ2ZvY3VzZWQnKTtcblx0XHRcdGlmIChGb2N1c2VkLkZvbGRlckxpc3QgPT09IHZhbHVlKSB7XG5cdFx0XHRcdCQoJy5iLWZvbGRlcnMgLmUtaXRlbSAuZS1saW5rLnNlbGVjdGVkJywgZG9tKS5hZGRDbGFzcygnZm9jdXNlZCcpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0bWVzc2FnZXNEcm9wT3Zlcihmb2xkZXIpIHtcblx0XHR3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuaURyb3BPdmVyVGltZXIpO1xuXHRcdGlmIChmb2xkZXIgJiYgZm9sZGVyLmNvbGxhcHNlZCgpKSB7XG5cdFx0XHR0aGlzLmlEcm9wT3ZlclRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRmb2xkZXIuY29sbGFwc2VkKGZhbHNlKTtcblx0XHRcdFx0Z2V0QXBwKCkuc2V0RXhwYW5kZWRGb2xkZXIoZm9sZGVyLmZ1bGxOYW1lSGFzaCwgdHJ1ZSk7XG5cdFx0XHRcdHdpbmRvd1Jlc2l6ZSgpO1xuXHRcdFx0fSwgTWFnaWNzLlRpbWU1MDBtcyk7XG5cdFx0fVxuXHR9XG5cblx0bWVzc2FnZXNEcm9wT3V0KCkge1xuXHRcdHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5pRHJvcE92ZXJUaW1lcik7XG5cdH1cblxuXHRzY3JvbGxUb0ZvY3VzZWQoKSB7XG5cdFx0aWYgKCF0aGlzLm9Db250ZW50VmlzaWJsZSB8fCAhdGhpcy5vQ29udGVudFNjcm9sbGFibGUpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRjb25zdCBvZmZzZXQgPSAyMCxcblx0XHRcdGZvY3VzZWQgPSAkKCcuZS1pdGVtIC5lLWxpbmsuZm9jdXNlZCcsIHRoaXMub0NvbnRlbnRTY3JvbGxhYmxlKSxcblx0XHRcdHBvcyA9IGZvY3VzZWQucG9zaXRpb24oKSxcblx0XHRcdHZpc2libGVIZWlnaHQgPSB0aGlzLm9Db250ZW50VmlzaWJsZS5oZWlnaHQoKSxcblx0XHRcdGZvY3VzZWRIZWlnaHQgPSBmb2N1c2VkLm91dGVySGVpZ2h0KCk7XG5cblx0XHRpZiAocG9zICYmICgwID4gcG9zLnRvcCB8fCBwb3MudG9wICsgZm9jdXNlZEhlaWdodCA+IHZpc2libGVIZWlnaHQpKSB7XG5cdFx0XHRpZiAoMCA+IHBvcy50b3ApIHtcblx0XHRcdFx0dGhpcy5vQ29udGVudFNjcm9sbGFibGUuc2Nyb2xsVG9wKHRoaXMub0NvbnRlbnRTY3JvbGxhYmxlLnNjcm9sbFRvcCgpICsgcG9zLnRvcCAtIG9mZnNldCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLm9Db250ZW50U2Nyb2xsYWJsZS5zY3JvbGxUb3AoXG5cdFx0XHRcdFx0dGhpcy5vQ29udGVudFNjcm9sbGFibGUuc2Nyb2xsVG9wKCkgKyBwb3MudG9wIC0gdmlzaWJsZUhlaWdodCArIGZvY3VzZWRIZWlnaHQgKyBvZmZzZXRcblx0XHRcdFx0KTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7Rm9sZGVyTW9kZWx9IHRvRm9sZGVyXG5cdCAqIEBwYXJhbSB7e2hlbHBlcjpqUXVlcnl9fSB1aVxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdG1lc3NhZ2VzRHJvcCh0b0ZvbGRlciwgdWkpIHtcblx0XHRpZiAodG9Gb2xkZXIgJiYgdWkgJiYgdWkuaGVscGVyKSB7XG5cdFx0XHRjb25zdCBmcm9tRm9sZGVyRnVsbE5hbWVSYXcgPSB1aS5oZWxwZXIuZGF0YSgncmwtZm9sZGVyJyksXG5cdFx0XHRcdGNvcHkgPSAkaHRtbC5oYXNDbGFzcygncmwtY3RybC1rZXktcHJlc3NlZCcpLFxuXHRcdFx0XHR1aWRzID0gdWkuaGVscGVyLmRhdGEoJ3JsLXVpZHMnKTtcblxuXHRcdFx0aWYgKGlzTm9ybWFsKGZyb21Gb2xkZXJGdWxsTmFtZVJhdykgJiYgJycgIT09IGZyb21Gb2xkZXJGdWxsTmFtZVJhdyAmJiBpc0FycmF5KHVpZHMpKSB7XG5cdFx0XHRcdGdldEFwcCgpLm1vdmVNZXNzYWdlc1RvRm9sZGVyKGZyb21Gb2xkZXJGdWxsTmFtZVJhdywgdWlkcywgdG9Gb2xkZXIuZnVsbE5hbWVSYXcsIGNvcHkpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGNvbXBvc2VDbGljaygpIHtcblx0XHRpZiAoU2V0dGluZ3MuY2FwYShDYXBhLkNvbXBvc2VyKSkge1xuXHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQ29tcG9zZScpKTtcblx0XHR9XG5cdH1cblxuXHRjcmVhdGVGb2xkZXIoKSB7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvRm9sZGVyQ3JlYXRlJykpO1xuXHR9XG5cblx0Y29uZmlndXJlRm9sZGVycygpIHtcblx0XHRzZXRIYXNoKHNldHRpbmdzKCdmb2xkZXJzJykpO1xuXHR9XG5cblx0Y29udGFjdHNDbGljaygpIHtcblx0XHRpZiAodGhpcy5hbGxvd0NvbnRhY3RzKSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Db250YWN0cycpKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHsgRm9sZGVyTGlzdE1haWxCb3hVc2VyVmlldywgRm9sZGVyTGlzdE1haWxCb3hVc2VyVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IENvbnRhY3RQcm9wZXJ0eVR5cGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgdHJpbSwgaXNOb25FbXB0eUFycmF5LCBpc05vcm1hbCwgcEludCwgcFN0cmluZyB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBlbXB0eUNvbnRhY3RQaWMgfSBmcm9tICdDb21tb24vTGlua3MnO1xuXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGVsIH0gZnJvbSAnS25vaW4vQWJzdHJhY3RNb2RlbCc7XG5cbmNsYXNzIENvbnRhY3RNb2RlbCBleHRlbmRzIEFic3RyYWN0TW9kZWwge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcignQ29udGFjdE1vZGVsJyk7XG5cblx0XHR0aGlzLmlkQ29udGFjdCA9IDA7XG5cdFx0dGhpcy5kaXNwbGF5ID0gJyc7XG5cdFx0dGhpcy5wcm9wZXJ0aWVzID0gW107XG5cdFx0dGhpcy5yZWFkT25seSA9IGZhbHNlO1xuXG5cdFx0dGhpcy5mb2N1c2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zZWxlY3RlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuY2hlY2tlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZGVsZXRlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtBcnJheXxudWxsfVxuXHQgKi9cblx0Z2V0TmFtZUFuZEVtYWlsSGVscGVyKCkge1xuXHRcdGxldCBuYW1lID0gJycsXG5cdFx0XHRlbWFpbCA9ICcnO1xuXG5cdFx0aWYgKGlzTm9uRW1wdHlBcnJheSh0aGlzLnByb3BlcnRpZXMpKSB7XG5cdFx0XHRfLmVhY2godGhpcy5wcm9wZXJ0aWVzLCAocHJvcGVydHkpID0+IHtcblx0XHRcdFx0aWYgKHByb3BlcnR5KSB7XG5cdFx0XHRcdFx0aWYgKENvbnRhY3RQcm9wZXJ0eVR5cGUuRmlyc3ROYW1lID09PSBwcm9wZXJ0eVswXSkge1xuXHRcdFx0XHRcdFx0bmFtZSA9IHRyaW0ocHJvcGVydHlbMV0gKyAnICcgKyBuYW1lKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKENvbnRhY3RQcm9wZXJ0eVR5cGUuTGFzdE5hbWUgPT09IHByb3BlcnR5WzBdKSB7XG5cdFx0XHRcdFx0XHRuYW1lID0gdHJpbShuYW1lICsgJyAnICsgcHJvcGVydHlbMV0pO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoJycgPT09IGVtYWlsICYmIENvbnRhY3RQcm9wZXJ0eVR5cGUuRW1haWwgPT09IHByb3BlcnR5WzBdKSB7XG5cdFx0XHRcdFx0XHRlbWFpbCA9IHByb3BlcnR5WzFdO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICcnID09PSBlbWFpbCA/IG51bGwgOiBbZW1haWwsIG5hbWVdO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvSXRlbVxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdHBhcnNlKGpzb24pIHtcblx0XHRsZXQgcmVzdWx0ID0gZmFsc2U7XG5cdFx0aWYgKGpzb24gJiYgJ09iamVjdC9Db250YWN0JyA9PT0ganNvblsnQE9iamVjdCddKSB7XG5cdFx0XHR0aGlzLmlkQ29udGFjdCA9IHBJbnQoanNvbi5JZENvbnRhY3QpO1xuXHRcdFx0dGhpcy5kaXNwbGF5ID0gcFN0cmluZyhqc29uLkRpc3BsYXkpO1xuXHRcdFx0dGhpcy5yZWFkT25seSA9ICEhanNvbi5SZWFkT25seTtcblxuXHRcdFx0aWYgKGlzTm9uRW1wdHlBcnJheShqc29uLlByb3BlcnRpZXMpKSB7XG5cdFx0XHRcdF8uZWFjaChqc29uLlByb3BlcnRpZXMsIChwcm9wZXJ0eSkgPT4ge1xuXHRcdFx0XHRcdGlmIChwcm9wZXJ0eSAmJiBwcm9wZXJ0eS5UeXBlICYmIGlzTm9ybWFsKHByb3BlcnR5LlZhbHVlKSAmJiBpc05vcm1hbChwcm9wZXJ0eS5UeXBlU3RyKSkge1xuXHRcdFx0XHRcdFx0dGhpcy5wcm9wZXJ0aWVzLnB1c2goW3BJbnQocHJvcGVydHkuVHlwZSksIHBTdHJpbmcocHJvcGVydHkuVmFsdWUpLCBwU3RyaW5nKHByb3BlcnR5LlR5cGVTdHIpXSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblxuXHRcdFx0cmVzdWx0ID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtzdHJpbmd9XG5cdCAqL1xuXHRzcmNBdHRyKCkge1xuXHRcdHJldHVybiBlbXB0eUNvbnRhY3RQaWMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0Z2VuZXJhdGVVaWQoKSB7XG5cdFx0cmV0dXJuIHBTdHJpbmcodGhpcy5pZENvbnRhY3QpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm4gc3RyaW5nXG5cdCAqL1xuXHRsaW5lQXNDc3MoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gW107XG5cdFx0aWYgKHRoaXMuZGVsZXRlZCgpKSB7XG5cdFx0XHRyZXN1bHQucHVzaCgnZGVsZXRlZCcpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5zZWxlY3RlZCgpKSB7XG5cdFx0XHRyZXN1bHQucHVzaCgnc2VsZWN0ZWQnKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuY2hlY2tlZCgpKSB7XG5cdFx0XHRyZXN1bHQucHVzaCgnY2hlY2tlZCcpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5mb2N1c2VkKCkpIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdmb2N1c2VkJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdC5qb2luKCcgJyk7XG5cdH1cbn1cblxuZXhwb3J0IHsgQ29udGFjdE1vZGVsLCBDb250YWN0TW9kZWwgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgJCBmcm9tICckJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQga2V5IGZyb20gJ2tleSc7XG5pbXBvcnQgSnVhIGZyb20gJ0p1YSc7XG5pbXBvcnQgaWZ2aXNpYmxlIGZyb20gJ2lmdmlzaWJsZSc7XG5cbmltcG9ydCB7XG5cdENhcGEsXG5cdExheW91dCxcblx0Rm9jdXNlZCxcblx0Q29tcG9zZVR5cGUsXG5cdEZvbGRlclR5cGUsXG5cdE1hZ2ljcyxcblx0TWVzc2FnZVNldEFjdGlvbixcblx0S2V5U3RhdGUsXG5cdFN0b3JhZ2VSZXN1bHRUeXBlXG59IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5cbmltcG9ydCB7IFVOVVNFRF9PUFRJT05fVkFMVUUgfSBmcm9tICdDb21tb24vQ29uc3RzJztcblxuaW1wb3J0IHsgYk1vYmlsZURldmljZSwgcG9wdXBWaXNpYmlsaXR5LCBsZWZ0UGFuZWxEaXNhYmxlZCwgbW92ZUFjdGlvbiB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcblxuaW1wb3J0IHsgbm9vcCwgbm9vcEZhbHNlLCBjb21wdXRlZFBhZ2VuYXRvckhlbHBlciwgZHJhZ2dhYmxlUGxhY2UsIGZyaWVuZGx5U2l6ZSwgaW5BcnJheSwgaXNVbmQgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5pbXBvcnQgeyBtYWlsQm94LCBhcHBlbmQgfSBmcm9tICdDb21tb24vTGlua3MnO1xuaW1wb3J0IHsgU2VsZWN0b3IgfSBmcm9tICdDb21tb24vU2VsZWN0b3InO1xuaW1wb3J0ICogYXMgRXZlbnRzIGZyb20gJ0NvbW1vbi9FdmVudHMnO1xuXG5pbXBvcnQgeyBpMThuLCBpbml0T25TdGFydE9yTGFuZ0NoYW5nZSB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IHtcblx0Z2V0Rm9sZGVyRnJvbUNhY2hlTGlzdCxcblx0Y2xlYXJNZXNzYWdlRmxhZ3NGcm9tQ2FjaGVCeUZvbGRlcixcblx0aGFzUmVxdWVzdGVkTWVzc2FnZSxcblx0YWRkUmVxdWVzdGVkTWVzc2FnZVxufSBmcm9tICdDb21tb24vQ2FjaGUnO1xuXG5pbXBvcnQgQXBwU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQXBwJztcbmltcG9ydCBRdW90YVN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1F1b3RhJztcbmltcG9ydCBTZXR0aW5nc1N0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1NldHRpbmdzJztcbmltcG9ydCBGb2xkZXJTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Gb2xkZXInO1xuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcblxuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgdmlldywgY29tbWFuZCwgVmlld1R5cGUsIHNob3dTY3JlZW5Qb3B1cCwgc2V0SGFzaCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuY29uc3QgY2FuQmVNb3ZlZEhlbHBlciA9IChzZWxmKSA9PiBzZWxmLmNhbkJlTW92ZWQoKTtcblxuQHZpZXcoe1xuXHRuYW1lOiAnVmlldy9Vc2VyL01haWxCb3gvTWVzc2FnZUxpc3QnLFxuXHR0eXBlOiBWaWV3VHlwZS5SaWdodCxcblx0dGVtcGxhdGVJRDogJ01haWxNZXNzYWdlTGlzdCdcbn0pXG5jbGFzcyBNZXNzYWdlTGlzdE1haWxCb3hVc2VyVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5zTGFzdFVpZCA9IG51bGw7XG5cdFx0dGhpcy5iUHJlZmV0Y2ggPSBmYWxzZTtcblx0XHR0aGlzLmVtcHR5U3ViamVjdFZhbHVlID0gJyc7XG5cblx0XHR0aGlzLmlHb1RvVXBVcE9yRG93bkRvd25UaW1lb3V0ID0gMDtcblxuXHRcdHRoaXMubW9iaWxlID0gISFTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJyk7XG5cdFx0dGhpcy5uZXdNb3ZlVG9Gb2xkZXIgPSBBcHBTdG9yZS5uZXdNb3ZlVG9Gb2xkZXI7XG5cblx0XHR0aGlzLmFsbG93UmVsb2FkID0gISFTZXR0aW5ncy5jYXBhKENhcGEuUmVsb2FkKTtcblx0XHR0aGlzLmFsbG93U2VhcmNoID0gISFTZXR0aW5ncy5jYXBhKENhcGEuU2VhcmNoKTtcblx0XHR0aGlzLmFsbG93U2VhcmNoQWR2ID0gISFTZXR0aW5ncy5jYXBhKENhcGEuU2VhcmNoQWR2KTtcblx0XHR0aGlzLmFsbG93Q29tcG9zZXIgPSAhIVNldHRpbmdzLmNhcGEoQ2FwYS5Db21wb3Nlcik7XG5cdFx0dGhpcy5hbGxvd01lc3NhZ2VMaXN0QWN0aW9ucyA9ICEhU2V0dGluZ3MuY2FwYShDYXBhLk1lc3NhZ2VMaXN0QWN0aW9ucyk7XG5cdFx0dGhpcy5hbGxvd0Rhbmdlcm91c0FjdGlvbnMgPSAhIVNldHRpbmdzLmNhcGEoQ2FwYS5EYW5nZXJvdXNBY3Rpb25zKTtcblx0XHR0aGlzLmFsbG93Rm9sZGVycyA9ICEhU2V0dGluZ3MuY2FwYShDYXBhLkZvbGRlcnMpO1xuXG5cdFx0dGhpcy5wb3B1cFZpc2liaWxpdHkgPSBwb3B1cFZpc2liaWxpdHk7XG5cblx0XHR0aGlzLm1lc3NhZ2UgPSBNZXNzYWdlU3RvcmUubWVzc2FnZTtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0ID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0O1xuXHRcdHRoaXMubWVzc2FnZUxpc3REaXNhYmxlQXV0b1NlbGVjdCA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdERpc2FibGVBdXRvU2VsZWN0O1xuXG5cdFx0dGhpcy5mb2xkZXJMaXN0ID0gRm9sZGVyU3RvcmUuZm9sZGVyTGlzdDtcblxuXHRcdHRoaXMuY29tcG9zZUluRWRpdCA9IEFwcFN0b3JlLmNvbXBvc2VJbkVkaXQ7XG5cdFx0dGhpcy5sZWZ0UGFuZWxEaXNhYmxlZCA9IGxlZnRQYW5lbERpc2FibGVkO1xuXG5cdFx0dGhpcy5zZWxlY3Rvck1lc3NhZ2VTZWxlY3RlZCA9IE1lc3NhZ2VTdG9yZS5zZWxlY3Rvck1lc3NhZ2VTZWxlY3RlZDtcblx0XHR0aGlzLnNlbGVjdG9yTWVzc2FnZUZvY3VzZWQgPSBNZXNzYWdlU3RvcmUuc2VsZWN0b3JNZXNzYWdlRm9jdXNlZDtcblx0XHR0aGlzLmlzTWVzc2FnZVNlbGVjdGVkID0gTWVzc2FnZVN0b3JlLmlzTWVzc2FnZVNlbGVjdGVkO1xuXHRcdHRoaXMubWVzc2FnZUxpc3RTZWFyY2ggPSBNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RTZWFyY2g7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdFRocmVhZFVpZCA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdFRocmVhZFVpZDtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0RXJyb3IgPSBNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RFcnJvcjtcblx0XHR0aGlzLmZvbGRlck1lbnVGb3JNb3ZlID0gRm9sZGVyU3RvcmUuZm9sZGVyTWVudUZvck1vdmU7XG5cblx0XHR0aGlzLnVzZUNoZWNrYm94ZXNJbkxpc3QgPSBTZXR0aW5nc1N0b3JlLnVzZUNoZWNrYm94ZXNJbkxpc3Q7XG5cblx0XHR0aGlzLm1haW5NZXNzYWdlTGlzdFNlYXJjaCA9IE1lc3NhZ2VTdG9yZS5tYWluTWVzc2FnZUxpc3RTZWFyY2g7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdEVuZEZvbGRlciA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdEVuZEZvbGRlcjtcblx0XHR0aGlzLm1lc3NhZ2VMaXN0RW5kVGhyZWFkVWlkID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0RW5kVGhyZWFkVWlkO1xuXG5cdFx0dGhpcy5tZXNzYWdlTGlzdENoZWNrZWQgPSBNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RDaGVja2VkO1xuXHRcdHRoaXMubWVzc2FnZUxpc3RDaGVja2VkT3JTZWxlY3RlZCA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkO1xuXHRcdHRoaXMubWVzc2FnZUxpc3RDaGVja2VkT3JTZWxlY3RlZFVpZHNXaXRoU3ViTWFpbHMgPSBNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RDaGVja2VkT3JTZWxlY3RlZFVpZHNXaXRoU3ViTWFpbHM7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdENvbXBsZXRlTG9hZGluZ1Rocm90dGxlID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nVGhyb3R0bGU7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdENvbXBsZXRlTG9hZGluZ1Rocm90dGxlRm9yQW5pbWF0aW9uID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nVGhyb3R0bGVGb3JBbmltYXRpb247XG5cblx0XHRpbml0T25TdGFydE9yTGFuZ0NoYW5nZSgoKSA9PiB7XG5cdFx0XHR0aGlzLmVtcHR5U3ViamVjdFZhbHVlID0gaTE4bignTUVTU0FHRV9MSVNUL0VNUFRZX1NVQkpFQ1RfVEVYVCcpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy51c2VyUXVvdGEgPSBRdW90YVN0b3JlLnF1b3RhO1xuXHRcdHRoaXMudXNlclVzYWdlU2l6ZSA9IFF1b3RhU3RvcmUudXNhZ2U7XG5cdFx0dGhpcy51c2VyVXNhZ2VQcm9jID0gUXVvdGFTdG9yZS5wZXJjZW50YWdlO1xuXG5cdFx0dGhpcy5tb3ZlRHJvcGRvd25UcmlnZ2VyID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5tb3JlRHJvcGRvd25UcmlnZ2VyID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHQvLyBhcHBlbmQgZHJhZyBhbmQgZHJvcFxuXHRcdHRoaXMuZHJhZ092ZXIgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyAndGhyb3R0bGUnOiAxIH0pO1xuXHRcdHRoaXMuZHJhZ092ZXJFbnRlciA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7ICd0aHJvdHRsZSc6IDEgfSk7XG5cdFx0dGhpcy5kcmFnT3ZlckFyZWEgPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXHRcdHRoaXMuZHJhZ092ZXJCb2R5QXJlYSA9IGtvLm9ic2VydmFibGUobnVsbCk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0SXRlbVRlbXBsYXRlID0ga28uY29tcHV0ZWQoKCkgPT5cblx0XHRcdHRoaXMubW9iaWxlIHx8IExheW91dC5TaWRlUHJldmlldyA9PT0gU2V0dGluZ3NTdG9yZS5sYXlvdXQoKVxuXHRcdFx0XHQ/ICdNYWlsTWVzc2FnZUxpc3RJdGVtJ1xuXHRcdFx0XHQ6ICdNYWlsTWVzc2FnZUxpc3RJdGVtTm9QcmV2aWV3UGFuZSdcblx0XHQpO1xuXG5cdFx0dGhpcy5tZXNzYWdlTGlzdFNlYXJjaERlc2MgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCB2YWx1ZSA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdEVuZFNlYXJjaCgpO1xuXHRcdFx0cmV0dXJuICcnID09PSB2YWx1ZSA/ICcnIDogaTE4bignTUVTU0FHRV9MSVNUL1NFQVJDSF9SRVNVTFRfRk9SJywgeyAnU0VBUkNIJzogdmFsdWUgfSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VMaXN0UGFnZW5hdG9yID0ga28uY29tcHV0ZWQoXG5cdFx0XHRjb21wdXRlZFBhZ2VuYXRvckhlbHBlcihNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RQYWdlLCBNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RQYWdlQ291bnQpXG5cdFx0KTtcblxuXHRcdHRoaXMuY2hlY2tBbGwgPSBrby5jb21wdXRlZCh7XG5cdFx0XHRyZWFkOiAoKSA9PiAwIDwgTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZCgpLmxlbmd0aCxcblx0XHRcdHdyaXRlOiAodmFsdWUpID0+IHtcblx0XHRcdFx0dmFsdWUgPSAhIXZhbHVlO1xuXHRcdFx0XHRfLmVhY2goTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0KCksIChtZXNzYWdlKSA9PiB7XG5cdFx0XHRcdFx0bWVzc2FnZS5jaGVja2VkKHZhbHVlKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLmlucHV0TWVzc2FnZUxpc3RTZWFyY2hGb2N1cyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5zTGFzdFNlYXJjaFZhbHVlID0gJyc7XG5cdFx0dGhpcy5pbnB1dFByb3h5TWVzc2FnZUxpc3RTZWFyY2ggPSBrby5jb21wdXRlZCh7XG5cdFx0XHRyZWFkOiB0aGlzLm1haW5NZXNzYWdlTGlzdFNlYXJjaCxcblx0XHRcdHdyaXRlOiAodmFsdWUpID0+IHtcblx0XHRcdFx0dGhpcy5zTGFzdFNlYXJjaFZhbHVlID0gdmFsdWU7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLmlzSW5jb21wbGV0ZUNoZWNrZWQgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRjb25zdCBtID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0KCkubGVuZ3RoLFxuXHRcdFx0XHRjID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZCgpLmxlbmd0aDtcblx0XHRcdHJldHVybiAwIDwgbSAmJiAwIDwgYyAmJiBtID4gYztcblx0XHR9KTtcblxuXHRcdHRoaXMuaGFzTWVzc2FnZXMgPSBrby5jb21wdXRlZCgoKSA9PiAwIDwgdGhpcy5tZXNzYWdlTGlzdCgpLmxlbmd0aCk7XG5cblx0XHR0aGlzLmhhc0NoZWNrZWRPclNlbGVjdGVkTGluZXMgPSBrby5jb21wdXRlZCgoKSA9PiAwIDwgdGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkKCkubGVuZ3RoKTtcblxuXHRcdHRoaXMuaXNTcGFtRm9sZGVyID0ga28uY29tcHV0ZWQoXG5cdFx0XHQoKSA9PiBGb2xkZXJTdG9yZS5zcGFtRm9sZGVyKCkgPT09IHRoaXMubWVzc2FnZUxpc3RFbmRGb2xkZXIoKSAmJiAnJyAhPT0gRm9sZGVyU3RvcmUuc3BhbUZvbGRlcigpXG5cdFx0KTtcblxuXHRcdHRoaXMuaXNTcGFtRGlzYWJsZWQgPSBrby5jb21wdXRlZCgoKSA9PiBVTlVTRURfT1BUSU9OX1ZBTFVFID09PSBGb2xkZXJTdG9yZS5zcGFtRm9sZGVyKCkpO1xuXG5cdFx0dGhpcy5pc1RyYXNoRm9sZGVyID0ga28uY29tcHV0ZWQoXG5cdFx0XHQoKSA9PiBGb2xkZXJTdG9yZS50cmFzaEZvbGRlcigpID09PSB0aGlzLm1lc3NhZ2VMaXN0RW5kRm9sZGVyKCkgJiYgJycgIT09IEZvbGRlclN0b3JlLnRyYXNoRm9sZGVyKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pc0RyYWZ0Rm9sZGVyID0ga28uY29tcHV0ZWQoXG5cdFx0XHQoKSA9PiBGb2xkZXJTdG9yZS5kcmFmdEZvbGRlcigpID09PSB0aGlzLm1lc3NhZ2VMaXN0RW5kRm9sZGVyKCkgJiYgJycgIT09IEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pc1NlbnRGb2xkZXIgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+IEZvbGRlclN0b3JlLnNlbnRGb2xkZXIoKSA9PT0gdGhpcy5tZXNzYWdlTGlzdEVuZEZvbGRlcigpICYmICcnICE9PSBGb2xkZXJTdG9yZS5zZW50Rm9sZGVyKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pc0FyY2hpdmVGb2xkZXIgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+IEZvbGRlclN0b3JlLmFyY2hpdmVGb2xkZXIoKSA9PT0gdGhpcy5tZXNzYWdlTGlzdEVuZEZvbGRlcigpICYmICcnICE9PSBGb2xkZXJTdG9yZS5hcmNoaXZlRm9sZGVyKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pc0FyY2hpdmVEaXNhYmxlZCA9IGtvLmNvbXB1dGVkKCgpID0+IFVOVVNFRF9PUFRJT05fVkFMVUUgPT09IEZvbGRlclN0b3JlLmFyY2hpdmVGb2xkZXIoKSk7XG5cblx0XHR0aGlzLmlzQXJjaGl2ZVZpc2libGUgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+ICF0aGlzLmlzQXJjaGl2ZUZvbGRlcigpICYmICF0aGlzLmlzQXJjaGl2ZURpc2FibGVkKCkgJiYgIXRoaXMuaXNEcmFmdEZvbGRlcigpXG5cdFx0KTtcblxuXHRcdHRoaXMuaXNTcGFtVmlzaWJsZSA9IGtvLmNvbXB1dGVkKFxuXHRcdFx0KCkgPT4gIXRoaXMuaXNTcGFtRm9sZGVyKCkgJiYgIXRoaXMuaXNTcGFtRGlzYWJsZWQoKSAmJiAhdGhpcy5pc0RyYWZ0Rm9sZGVyKCkgJiYgIXRoaXMuaXNTZW50Rm9sZGVyKClcblx0XHQpO1xuXG5cdFx0dGhpcy5pc1VuU3BhbVZpc2libGUgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+IHRoaXMuaXNTcGFtRm9sZGVyKCkgJiYgIXRoaXMuaXNTcGFtRGlzYWJsZWQoKSAmJiAhdGhpcy5pc0RyYWZ0Rm9sZGVyKCkgJiYgIXRoaXMuaXNTZW50Rm9sZGVyKClcblx0XHQpO1xuXG5cdFx0dGhpcy5tb2JpbGVDaGVja2VkU3RhdGVTaG93ID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgY2hlY2tlZCA9IDAgPCB0aGlzLm1lc3NhZ2VMaXN0Q2hlY2tlZCgpLmxlbmd0aDtcblx0XHRcdHJldHVybiB0aGlzLm1vYmlsZSA/IGNoZWNrZWQgOiB0cnVlO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5tb2JpbGVDaGVja2VkU3RhdGVIaWRlID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgY2hlY2tlZCA9IDAgPCB0aGlzLm1lc3NhZ2VMaXN0Q2hlY2tlZCgpLmxlbmd0aDtcblx0XHRcdHJldHVybiB0aGlzLm1vYmlsZSA/ICFjaGVja2VkIDogdHJ1ZTtcblx0XHR9KTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3RGb2N1c2VkID0ga28uY29tcHV0ZWQoKCkgPT4gRm9jdXNlZC5NZXNzYWdlTGlzdCA9PT0gQXBwU3RvcmUuZm9jdXNlZFN0YXRlKCkpO1xuXG5cdFx0dGhpcy5jYW5CZU1vdmVkID0gdGhpcy5oYXNDaGVja2VkT3JTZWxlY3RlZExpbmVzO1xuXG5cdFx0dGhpcy5xdW90YVRvb2x0aXAgPSBfLmJpbmQodGhpcy5xdW90YVRvb2x0aXAsIHRoaXMpO1xuXG5cdFx0dGhpcy5zZWxlY3RvciA9IG5ldyBTZWxlY3Rvcihcblx0XHRcdHRoaXMubWVzc2FnZUxpc3QsXG5cdFx0XHR0aGlzLnNlbGVjdG9yTWVzc2FnZVNlbGVjdGVkLFxuXHRcdFx0dGhpcy5zZWxlY3Rvck1lc3NhZ2VGb2N1c2VkLFxuXHRcdFx0Jy5tZXNzYWdlTGlzdEl0ZW0gLmFjdGlvbkhhbmRsZScsXG5cdFx0XHQnLm1lc3NhZ2VMaXN0SXRlbS5zZWxlY3RlZCcsXG5cdFx0XHQnLm1lc3NhZ2VMaXN0SXRlbSAuY2hlY2tib3hNZXNzYWdlJyxcblx0XHRcdCcubWVzc2FnZUxpc3RJdGVtLmZvY3VzZWQnXG5cdFx0KTtcblxuXHRcdHRoaXMuc2VsZWN0b3Iub24oJ29uSXRlbVNlbGVjdCcsIChtZXNzYWdlKSA9PiB7XG5cdFx0XHRNZXNzYWdlU3RvcmUuc2VsZWN0TWVzc2FnZShtZXNzYWdlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMuc2VsZWN0b3Iub24oJ29uSXRlbUdldFVpZCcsIChtZXNzYWdlKSA9PiAobWVzc2FnZSA/IG1lc3NhZ2UuZ2VuZXJhdGVVaWQoKSA6ICcnKSk7XG5cblx0XHR0aGlzLnNlbGVjdG9yLm9uKCdvbkF1dG9TZWxlY3QnLCAoKSA9PiB0aGlzLnVzZUF1dG9TZWxlY3QoKSk7XG5cblx0XHR0aGlzLnNlbGVjdG9yLm9uKCdvblVwVXBPckRvd25Eb3duJywgKHYpID0+IHtcblx0XHRcdHRoaXMuZ29Ub1VwVXBPckRvd25Eb3duKHYpO1xuXHRcdH0pO1xuXG5cdFx0RXZlbnRzLnN1YignbWFpbGJveC5tZXNzYWdlLWxpc3Quc2VsZWN0b3IuZ28tZG93bicsIChzZWxlY3QpID0+IHtcblx0XHRcdHRoaXMuc2VsZWN0b3IuZ29Eb3duKHNlbGVjdCk7XG5cdFx0fSk7XG5cblx0XHRFdmVudHMuc3ViKCdtYWlsYm94Lm1lc3NhZ2UtbGlzdC5zZWxlY3Rvci5nby11cCcsIChzZWxlY3QpID0+IHtcblx0XHRcdHRoaXMuc2VsZWN0b3IuZ29VcChzZWxlY3QpO1xuXHRcdH0pO1xuXG5cdFx0RXZlbnRzLnN1YignbWFpbGJveC5tZXNzYWdlLnNob3cnLCAoc0ZvbGRlciwgc1VpZCkgPT4ge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IF8uZmluZChcblx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdCgpLFxuXHRcdFx0XHQoaXRlbSkgPT4gaXRlbSAmJiBzRm9sZGVyID09PSBpdGVtLmZvbGRlckZ1bGxOYW1lUmF3ICYmIHNVaWQgPT09IGl0ZW0udWlkXG5cdFx0XHQpO1xuXG5cdFx0XHRpZiAoJ0lOQk9YJyA9PT0gc0ZvbGRlcikge1xuXHRcdFx0XHRzZXRIYXNoKG1haWxCb3goc0ZvbGRlciwgMSkpO1xuXHRcdFx0fVxuXG5cdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHR0aGlzLnNlbGVjdG9yLnNlbGVjdE1lc3NhZ2VJdGVtKG1lc3NhZ2UpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0aWYgKCdJTkJPWCcgIT09IHNGb2xkZXIpIHtcblx0XHRcdFx0XHRzZXRIYXNoKG1haWxCb3goc0ZvbGRlciwgMSkpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0TWVzc2FnZVN0b3JlLnNlbGVjdE1lc3NhZ2VCeUZvbGRlckFuZFVpZChzRm9sZGVyLCBzVWlkKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdEVuZEhhc2guc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuc2VsZWN0b3Iuc2Nyb2xsVG9Ub3AoKTtcblx0XHR9KTtcblx0fVxuXG5cdEBjb21tYW5kKClcblx0Y2xlYXJDb21tYW5kKCkge1xuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuRGFuZ2Vyb3VzQWN0aW9ucykpIHtcblx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0ZvbGRlckNsZWFyJyksIFtGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyKCldKTtcblx0XHR9XG5cdH1cblxuXHRAY29tbWFuZCgpXG5cdHJlbG9hZENvbW1hbmQoKSB7XG5cdFx0aWYgKCFNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RDb21wbGV0ZUxvYWRpbmdUaHJvdHRsZUZvckFuaW1hdGlvbigpICYmIHRoaXMuYWxsb3dSZWxvYWQpIHtcblx0XHRcdGdldEFwcCgpLnJlbG9hZE1lc3NhZ2VMaXN0KGZhbHNlLCB0cnVlKTtcblx0XHR9XG5cdH1cblxuXHRAY29tbWFuZChjYW5CZU1vdmVkSGVscGVyKVxuXHRtdWx0eUZvcndhcmRDb21tYW5kKCkge1xuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpKSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Db21wb3NlJyksIFtcblx0XHRcdFx0Q29tcG9zZVR5cGUuRm9yd2FyZEFzQXR0YWNobWVudCxcblx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZE9yU2VsZWN0ZWQoKVxuXHRcdFx0XSk7XG5cdFx0fVxuXHR9XG5cblx0QGNvbW1hbmQoY2FuQmVNb3ZlZEhlbHBlcilcblx0ZGVsZXRlV2l0aG91dE1vdmVDb21tYW5kKCkge1xuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuRGFuZ2Vyb3VzQWN0aW9ucykpIHtcblx0XHRcdGdldEFwcCgpLmRlbGV0ZU1lc3NhZ2VzRnJvbUZvbGRlcihcblx0XHRcdFx0Rm9sZGVyVHlwZS5UcmFzaCxcblx0XHRcdFx0Rm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lUmF3KCksXG5cdFx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscygpLFxuXHRcdFx0XHRmYWxzZVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRAY29tbWFuZChjYW5CZU1vdmVkSGVscGVyKVxuXHRkZWxldGVDb21tYW5kKCkge1xuXHRcdGdldEFwcCgpLmRlbGV0ZU1lc3NhZ2VzRnJvbUZvbGRlcihcblx0XHRcdEZvbGRlclR5cGUuVHJhc2gsXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscygpLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHRAY29tbWFuZChjYW5CZU1vdmVkSGVscGVyKVxuXHRhcmNoaXZlQ29tbWFuZCgpIHtcblx0XHRnZXRBcHAoKS5kZWxldGVNZXNzYWdlc0Zyb21Gb2xkZXIoXG5cdFx0XHRGb2xkZXJUeXBlLkFyY2hpdmUsXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscygpLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHRAY29tbWFuZChjYW5CZU1vdmVkSGVscGVyKVxuXHRzcGFtQ29tbWFuZCgpIHtcblx0XHRnZXRBcHAoKS5kZWxldGVNZXNzYWdlc0Zyb21Gb2xkZXIoXG5cdFx0XHRGb2xkZXJUeXBlLlNwYW0sXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscygpLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHRAY29tbWFuZChjYW5CZU1vdmVkSGVscGVyKVxuXHRub3RTcGFtQ29tbWFuZCgpIHtcblx0XHRnZXRBcHAoKS5kZWxldGVNZXNzYWdlc0Zyb21Gb2xkZXIoXG5cdFx0XHRGb2xkZXJUeXBlLk5vdFNwYW0sXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscygpLFxuXHRcdFx0dHJ1ZVxuXHRcdCk7XG5cdH1cblxuXHRAY29tbWFuZChjYW5CZU1vdmVkSGVscGVyKVxuXHRtb3ZlQ29tbWFuZCgpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cblxuXHRAY29tbWFuZChjYW5CZU1vdmVkSGVscGVyKVxuXHRtb3ZlTmV3Q29tbWFuZCh2bSwgZXZlbnQpIHtcblx0XHRpZiAodGhpcy5uZXdNb3ZlVG9Gb2xkZXIoKSAmJiB0aGlzLm1vYmlsZUNoZWNrZWRTdGF0ZVNob3coKSkge1xuXHRcdFx0aWYgKHZtICYmIGV2ZW50ICYmIGV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG5cdFx0XHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0XHRcdGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHtcblx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAobW92ZUFjdGlvbigpKSB7XG5cdFx0XHRcdEFwcFN0b3JlLmZvY3VzZWRTdGF0ZShGb2N1c2VkLk1lc3NhZ2VMaXN0KTtcblx0XHRcdFx0bW92ZUFjdGlvbihmYWxzZSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5Gb2xkZXJMaXN0KTtcblx0XHRcdFx0bW92ZUFjdGlvbih0cnVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRoaWRlTGVmdChpdGVtLCBldmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0XHRsZWZ0UGFuZWxEaXNhYmxlZCh0cnVlKTtcblx0fVxuXG5cdHNob3dMZWZ0KGl0ZW0sIGV2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdGxlZnRQYW5lbERpc2FibGVkKGZhbHNlKTtcblx0fVxuXG5cdGNvbXBvc2VDbGljaygpIHtcblx0XHRpZiAoU2V0dGluZ3MuY2FwYShDYXBhLkNvbXBvc2VyKSkge1xuXHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQ29tcG9zZScpKTtcblx0XHR9XG5cdH1cblxuXHRnb1RvVXBVcE9yRG93bkRvd24odXApIHtcblx0XHRpZiAoMCA8IHRoaXMubWVzc2FnZUxpc3RDaGVja2VkKCkubGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0d2luZG93LmNsZWFyVGltZW91dCh0aGlzLmlHb1RvVXBVcE9yRG93bkRvd25UaW1lb3V0KTtcblx0XHR0aGlzLmlHb1RvVXBVcE9yRG93bkRvd25UaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0bGV0IHByZXYgPSBudWxsLFxuXHRcdFx0XHRuZXh0ID0gbnVsbCxcblx0XHRcdFx0dGVtcCA9IG51bGwsXG5cdFx0XHRcdGN1cnJlbnQgPSBudWxsO1xuXG5cdFx0XHRfLmZpbmQodGhpcy5tZXNzYWdlTGlzdFBhZ2VuYXRvcigpLCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRpZiAoaXRlbSkge1xuXHRcdFx0XHRcdGlmIChjdXJyZW50KSB7XG5cdFx0XHRcdFx0XHRuZXh0ID0gaXRlbTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoaXRlbS5jdXJyZW50KSB7XG5cdFx0XHRcdFx0XHRjdXJyZW50ID0gaXRlbTtcblx0XHRcdFx0XHRcdHByZXYgPSB0ZW1wO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChuZXh0KSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR0ZW1wID0gaXRlbTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pO1xuXG5cdFx0XHRpZiAoTGF5b3V0Lk5vUHJldmlldyA9PT0gU2V0dGluZ3NTdG9yZS5sYXlvdXQoKSAmJiAhdGhpcy5tZXNzYWdlKCkpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3Rvci5pRm9jdXNlZE5leHRIZWxwZXIgPSB1cCA/IC0xIDogMTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuc2VsZWN0b3IuaVNlbGVjdE5leHRIZWxwZXIgPSB1cCA/IC0xIDogMTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHVwID8gcHJldiA6IG5leHQpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3Rvci51bnNlbGVjdCgpO1xuXHRcdFx0XHR0aGlzLmdvdG9QYWdlKHVwID8gcHJldiA6IG5leHQpO1xuXHRcdFx0fVxuXHRcdH0sIE1hZ2ljcy5UaW1lMzUwbXMpO1xuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHR1c2VBdXRvU2VsZWN0KCkge1xuXHRcdGlmICh0aGlzLm1lc3NhZ2VMaXN0RGlzYWJsZUF1dG9TZWxlY3QoKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICgvaXM6dW5zZWVuLy50ZXN0KHRoaXMubWFpbk1lc3NhZ2VMaXN0U2VhcmNoKCkpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIExheW91dC5Ob1ByZXZpZXcgIT09IFNldHRpbmdzU3RvcmUubGF5b3V0KCk7XG5cdH1cblxuXHRzZWFyY2hFbnRlckFjdGlvbigpIHtcblx0XHR0aGlzLm1haW5NZXNzYWdlTGlzdFNlYXJjaCh0aGlzLnNMYXN0U2VhcmNoVmFsdWUpO1xuXHRcdHRoaXMuaW5wdXRNZXNzYWdlTGlzdFNlYXJjaEZvY3VzKGZhbHNlKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHQgKi9cblx0cHJpbnRhYmxlTWVzc2FnZUNvdW50Rm9yRGVsZXRpb24oKSB7XG5cdFx0Y29uc3QgY250ID0gdGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscygpLmxlbmd0aDtcblx0XHRyZXR1cm4gMSA8IGNudCA/ICcgKCcgKyAoMTAwID4gY250ID8gY250IDogJzk5KycpICsgJyknIDogJyc7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuXHR9XG5cblx0Y2FuY2VsU2VhcmNoKCkge1xuXHRcdHRoaXMubWFpbk1lc3NhZ2VMaXN0U2VhcmNoKCcnKTtcblx0XHR0aGlzLmlucHV0TWVzc2FnZUxpc3RTZWFyY2hGb2N1cyhmYWxzZSk7XG5cdH1cblxuXHRjYW5jZWxUaHJlYWRVaWQoKSB7XG5cdFx0c2V0SGFzaChcblx0XHRcdG1haWxCb3goXG5cdFx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZUhhc2goKSxcblx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0UGFnZUJlZm9yZVRocmVhZCgpLFxuXHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RTZWFyY2goKVxuXHRcdFx0KVxuXHRcdCk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNUb0ZvbGRlckZ1bGxOYW1lUmF3XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gYkNvcHlcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRtb3ZlU2VsZWN0ZWRNZXNzYWdlc1RvRm9sZGVyKHNUb0ZvbGRlckZ1bGxOYW1lUmF3LCBiQ29weSkge1xuXHRcdGlmICh0aGlzLmNhbkJlTW92ZWQoKSkge1xuXHRcdFx0Z2V0QXBwKCkubW92ZU1lc3NhZ2VzVG9Gb2xkZXIoXG5cdFx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpLFxuXHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3RDaGVja2VkT3JTZWxlY3RlZFVpZHNXaXRoU3ViTWFpbHMoKSxcblx0XHRcdFx0c1RvRm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHRcdGJDb3B5XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdGRyYWdBbmREcm9uSGVscGVyKG9NZXNzYWdlTGlzdEl0ZW0pIHtcblx0XHRpZiAob01lc3NhZ2VMaXN0SXRlbSkge1xuXHRcdFx0b01lc3NhZ2VMaXN0SXRlbS5jaGVja2VkKHRydWUpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGVsID0gZHJhZ2dhYmxlUGxhY2UoKSxcblx0XHRcdHVwZGF0ZVVpZHNJbmZvID0gKCkgPT4ge1xuXHRcdFx0XHRjb25zdCB1aWRzID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZE9yU2VsZWN0ZWRVaWRzV2l0aFN1Yk1haWxzKCk7XG5cdFx0XHRcdGVsLmRhdGEoJ3JsLXVpZHMnLCB1aWRzKTtcblx0XHRcdFx0ZWwuZmluZCgnLnRleHQnKS50ZXh0KCcnICsgdWlkcy5sZW5ndGgpO1xuXHRcdFx0fTtcblxuXHRcdGVsLmRhdGEoJ3JsLWZvbGRlcicsIEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpKTtcblxuXHRcdHVwZGF0ZVVpZHNJbmZvKCk7XG5cdFx0Xy5kZWZlcih1cGRhdGVVaWRzSW5mbyk7XG5cblx0XHRyZXR1cm4gZWw7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHNGb2xkZXJGdWxsTmFtZVJhd1xuXHQgKiBAcGFyYW0ge251bWJlcn0gaVNldEFjdGlvblxuXHQgKiBAcGFyYW0ge0FycmF5PX0gYU1lc3NhZ2VzID0gbnVsbFxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdHNldEFjdGlvbihzRm9sZGVyRnVsbE5hbWVSYXcsIGlTZXRBY3Rpb24sIGFNZXNzYWdlcykge1xuXHRcdGdldEFwcCgpLm1lc3NhZ2VMaXN0QWN0aW9uKHNGb2xkZXJGdWxsTmFtZVJhdywgaVNldEFjdGlvbiwgYU1lc3NhZ2VzKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc0ZvbGRlckZ1bGxOYW1lUmF3XG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBpU2V0QWN0aW9uXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzVGhyZWFkVWlkID0gJydcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRzZXRBY3Rpb25Gb3JBbGwoc0ZvbGRlckZ1bGxOYW1lUmF3LCBpU2V0QWN0aW9uLCBzVGhyZWFkVWlkID0gJycpIHtcblx0XHRpZiAoJycgIT09IHNGb2xkZXJGdWxsTmFtZVJhdykge1xuXHRcdFx0bGV0IGNudCA9IDA7XG5cdFx0XHRjb25zdCB1aWRzID0gW107XG5cblx0XHRcdGxldCBmb2xkZXIgPSBnZXRGb2xkZXJGcm9tQ2FjaGVMaXN0KHNGb2xkZXJGdWxsTmFtZVJhdyk7XG5cdFx0XHRpZiAoZm9sZGVyKSB7XG5cdFx0XHRcdHN3aXRjaCAoaVNldEFjdGlvbikge1xuXHRcdFx0XHRcdGNhc2UgTWVzc2FnZVNldEFjdGlvbi5TZXRTZWVuOlxuXHRcdFx0XHRcdFx0Zm9sZGVyID0gZ2V0Rm9sZGVyRnJvbUNhY2hlTGlzdChzRm9sZGVyRnVsbE5hbWVSYXcpO1xuXHRcdFx0XHRcdFx0aWYgKGZvbGRlcikge1xuXHRcdFx0XHRcdFx0XHRfLmVhY2goTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0KCksIChtZXNzYWdlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKG1lc3NhZ2UudW5zZWVuKCkpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGNudCArPSAxO1xuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdG1lc3NhZ2UudW5zZWVuKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHR1aWRzLnB1c2gobWVzc2FnZS51aWQpO1xuXHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRpZiAoc1RocmVhZFVpZCkge1xuXHRcdFx0XHRcdFx0XHRcdGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoZm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZCgpIC0gY250KTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoMCA+IGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZCgwKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZCgwKTtcblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdGNsZWFyTWVzc2FnZUZsYWdzRnJvbUNhY2hlQnlGb2xkZXIoc0ZvbGRlckZ1bGxOYW1lUmF3KTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0UmVtb3RlLm1lc3NhZ2VTZXRTZWVuVG9BbGwobm9vcCwgc0ZvbGRlckZ1bGxOYW1lUmF3LCB0cnVlLCBzVGhyZWFkVWlkID8gdWlkcyA6IG51bGwpO1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSBNZXNzYWdlU2V0QWN0aW9uLlVuc2V0U2Vlbjpcblx0XHRcdFx0XHRcdGZvbGRlciA9IGdldEZvbGRlckZyb21DYWNoZUxpc3Qoc0ZvbGRlckZ1bGxOYW1lUmF3KTtcblx0XHRcdFx0XHRcdGlmIChmb2xkZXIpIHtcblx0XHRcdFx0XHRcdFx0Xy5lYWNoKE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdCgpLCAobWVzc2FnZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdGlmICghbWVzc2FnZS51bnNlZW4oKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Y250ICs9IDE7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0bWVzc2FnZS51bnNlZW4odHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0dWlkcy5wdXNoKG1lc3NhZ2UudWlkKTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0aWYgKHNUaHJlYWRVaWQpIHtcblx0XHRcdFx0XHRcdFx0XHRmb2xkZXIubWVzc2FnZUNvdW50VW5yZWFkKGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoKSArIGNudCk7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGZvbGRlci5tZXNzYWdlQ291bnRBbGwoKSA8IGZvbGRlci5tZXNzYWdlQ291bnRVbnJlYWQoKSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9sZGVyLm1lc3NhZ2VDb3VudFVucmVhZChmb2xkZXIubWVzc2FnZUNvdW50QWxsKCkpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRmb2xkZXIubWVzc2FnZUNvdW50VW5yZWFkKGZvbGRlci5tZXNzYWdlQ291bnRBbGwoKSk7XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRjbGVhck1lc3NhZ2VGbGFnc0Zyb21DYWNoZUJ5Rm9sZGVyKHNGb2xkZXJGdWxsTmFtZVJhdyk7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFJlbW90ZS5tZXNzYWdlU2V0U2VlblRvQWxsKG5vb3AsIHNGb2xkZXJGdWxsTmFtZVJhdywgZmFsc2UsIHNUaHJlYWRVaWQgPyB1aWRzIDogbnVsbCk7XG5cdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHQvLyBubyBkZWZhdWx0XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRnZXRBcHAoKS5yZWxvYWRGbGFnc0N1cnJlbnRNZXNzYWdlTGlzdEFuZE1lc3NhZ2VGcm9tQ2FjaGUoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRsaXN0U2V0U2VlbigpIHtcblx0XHR0aGlzLnNldEFjdGlvbihcblx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpLFxuXHRcdFx0TWVzc2FnZVNldEFjdGlvbi5TZXRTZWVuLFxuXHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZE9yU2VsZWN0ZWQoKVxuXHRcdCk7XG5cdH1cblxuXHRsaXN0U2V0QWxsU2VlbigpIHtcblx0XHR0aGlzLnNldEFjdGlvbkZvckFsbChcblx0XHRcdEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZVJhdygpLFxuXHRcdFx0TWVzc2FnZVNldEFjdGlvbi5TZXRTZWVuLFxuXHRcdFx0dGhpcy5tZXNzYWdlTGlzdEVuZFRocmVhZFVpZCgpXG5cdFx0KTtcblx0fVxuXG5cdGxpc3RVbnNldFNlZW4oKSB7XG5cdFx0dGhpcy5zZXRBY3Rpb24oXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdE1lc3NhZ2VTZXRBY3Rpb24uVW5zZXRTZWVuLFxuXHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZE9yU2VsZWN0ZWQoKVxuXHRcdCk7XG5cdH1cblxuXHRsaXN0U2V0RmxhZ3MoKSB7XG5cdFx0dGhpcy5zZXRBY3Rpb24oXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdE1lc3NhZ2VTZXRBY3Rpb24uU2V0RmxhZyxcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkKClcblx0XHQpO1xuXHR9XG5cblx0bGlzdFVuc2V0RmxhZ3MoKSB7XG5cdFx0dGhpcy5zZXRBY3Rpb24oXG5cdFx0XHRGb2xkZXJTdG9yZS5jdXJyZW50Rm9sZGVyRnVsbE5hbWVSYXcoKSxcblx0XHRcdE1lc3NhZ2VTZXRBY3Rpb24uVW5zZXRGbGFnLFxuXHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZE9yU2VsZWN0ZWQoKVxuXHRcdCk7XG5cdH1cblxuXHRmbGFnTWVzc2FnZXMoY3VycmVudE1lc3NhZ2UpIHtcblx0XHRjb25zdCBjaGVja2VkID0gdGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkKCk7XG5cdFx0aWYgKGN1cnJlbnRNZXNzYWdlKSB7XG5cdFx0XHRjb25zdCBjaGVja2VkVWlkcyA9IF8ubWFwKGNoZWNrZWQsIChtZXNzYWdlKSA9PiBtZXNzYWdlLnVpZCk7XG5cdFx0XHRpZiAoMCA8IGNoZWNrZWRVaWRzLmxlbmd0aCAmJiAtMSA8IGluQXJyYXkoY3VycmVudE1lc3NhZ2UudWlkLCBjaGVja2VkVWlkcykpIHtcblx0XHRcdFx0dGhpcy5zZXRBY3Rpb24oXG5cdFx0XHRcdFx0Y3VycmVudE1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHRcdFx0Y3VycmVudE1lc3NhZ2UuZmxhZ2dlZCgpID8gTWVzc2FnZVNldEFjdGlvbi5VbnNldEZsYWcgOiBNZXNzYWdlU2V0QWN0aW9uLlNldEZsYWcsXG5cdFx0XHRcdFx0Y2hlY2tlZFxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5zZXRBY3Rpb24oXG5cdFx0XHRcdFx0Y3VycmVudE1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHRcdFx0Y3VycmVudE1lc3NhZ2UuZmxhZ2dlZCgpID8gTWVzc2FnZVNldEFjdGlvbi5VbnNldEZsYWcgOiBNZXNzYWdlU2V0QWN0aW9uLlNldEZsYWcsXG5cdFx0XHRcdFx0W2N1cnJlbnRNZXNzYWdlXVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGZsYWdNZXNzYWdlc0Zhc3QoYkZsYWcpIHtcblx0XHRjb25zdCBjaGVja2VkID0gdGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkKCk7XG5cdFx0aWYgKDAgPCBjaGVja2VkLmxlbmd0aCkge1xuXHRcdFx0aWYgKGlzVW5kKGJGbGFnKSkge1xuXHRcdFx0XHRjb25zdCBmbGFnZ2VkID0gXy5maWx0ZXIoY2hlY2tlZCwgKG1lc3NhZ2UpID0+IG1lc3NhZ2UuZmxhZ2dlZCgpKTtcblx0XHRcdFx0dGhpcy5zZXRBY3Rpb24oXG5cdFx0XHRcdFx0Y2hlY2tlZFswXS5mb2xkZXJGdWxsTmFtZVJhdyxcblx0XHRcdFx0XHRjaGVja2VkLmxlbmd0aCA9PT0gZmxhZ2dlZC5sZW5ndGggPyBNZXNzYWdlU2V0QWN0aW9uLlVuc2V0RmxhZyA6IE1lc3NhZ2VTZXRBY3Rpb24uU2V0RmxhZyxcblx0XHRcdFx0XHRjaGVja2VkXG5cdFx0XHRcdCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnNldEFjdGlvbihcblx0XHRcdFx0XHRjaGVja2VkWzBdLmZvbGRlckZ1bGxOYW1lUmF3LFxuXHRcdFx0XHRcdCFiRmxhZyA/IE1lc3NhZ2VTZXRBY3Rpb24uVW5zZXRGbGFnIDogTWVzc2FnZVNldEFjdGlvbi5TZXRGbGFnLFxuXHRcdFx0XHRcdGNoZWNrZWRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRzZWVuTWVzc2FnZXNGYXN0KHNlZW4pIHtcblx0XHRjb25zdCBjaGVja2VkID0gdGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkKCk7XG5cdFx0aWYgKDAgPCBjaGVja2VkLmxlbmd0aCkge1xuXHRcdFx0aWYgKGlzVW5kKHNlZW4pKSB7XG5cdFx0XHRcdGNvbnN0IHVuc2VlbiA9IF8uZmlsdGVyKGNoZWNrZWQsIChtZXNzYWdlKSA9PiBtZXNzYWdlLnVuc2VlbigpKTtcblx0XHRcdFx0dGhpcy5zZXRBY3Rpb24oXG5cdFx0XHRcdFx0Y2hlY2tlZFswXS5mb2xkZXJGdWxsTmFtZVJhdyxcblx0XHRcdFx0XHQwIDwgdW5zZWVuLmxlbmd0aCA/IE1lc3NhZ2VTZXRBY3Rpb24uU2V0U2VlbiA6IE1lc3NhZ2VTZXRBY3Rpb24uVW5zZXRTZWVuLFxuXHRcdFx0XHRcdGNoZWNrZWRcblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMuc2V0QWN0aW9uKFxuXHRcdFx0XHRcdGNoZWNrZWRbMF0uZm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHRcdFx0c2VlbiA/IE1lc3NhZ2VTZXRBY3Rpb24uU2V0U2VlbiA6IE1lc3NhZ2VTZXRBY3Rpb24uVW5zZXRTZWVuLFxuXHRcdFx0XHRcdGNoZWNrZWRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRnb3RvUGFnZShwYWdlKSB7XG5cdFx0aWYgKHBhZ2UpIHtcblx0XHRcdHNldEhhc2goXG5cdFx0XHRcdG1haWxCb3goXG5cdFx0XHRcdFx0Rm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lSGFzaCgpLFxuXHRcdFx0XHRcdHBhZ2UudmFsdWUsXG5cdFx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0U2VhcmNoKCksXG5cdFx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0VGhyZWFkVWlkKClcblx0XHRcdFx0KVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblxuXHRnb3RvVGhyZWFkKG1lc3NhZ2UpIHtcblx0XHRpZiAobWVzc2FnZSAmJiAwIDwgbWVzc2FnZS50aHJlYWRzTGVuKCkpIHtcblx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdFBhZ2VCZWZvcmVUaHJlYWQoTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0UGFnZSgpKTtcblxuXHRcdFx0c2V0SGFzaChtYWlsQm94KEZvbGRlclN0b3JlLmN1cnJlbnRGb2xkZXJGdWxsTmFtZUhhc2goKSwgMSwgTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0U2VhcmNoKCksIG1lc3NhZ2UudWlkKSk7XG5cdFx0fVxuXHR9XG5cblx0Y2xlYXJMaXN0SXNWaXNpYmxlKCkge1xuXHRcdHJldHVybiAoXG5cdFx0XHQnJyA9PT0gdGhpcy5tZXNzYWdlTGlzdFNlYXJjaERlc2MoKSAmJlxuXHRcdFx0JycgPT09IHRoaXMubWVzc2FnZUxpc3RFcnJvcigpICYmXG5cdFx0XHQnJyA9PT0gdGhpcy5tZXNzYWdlTGlzdEVuZFRocmVhZFVpZCgpICYmXG5cdFx0XHQwIDwgdGhpcy5tZXNzYWdlTGlzdCgpLmxlbmd0aCAmJlxuXHRcdFx0KHRoaXMuaXNTcGFtRm9sZGVyKCkgfHwgdGhpcy5pc1RyYXNoRm9sZGVyKCkpXG5cdFx0KTtcblx0fVxuXG5cdG9uQnVpbGQoZG9tKSB7XG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0XHR0aGlzLm9Db250ZW50VmlzaWJsZSA9ICQoJy5iLWNvbnRlbnQnLCBkb20pO1xuXHRcdHRoaXMub0NvbnRlbnRTY3JvbGxhYmxlID0gJCgnLmNvbnRlbnQnLCB0aGlzLm9Db250ZW50VmlzaWJsZSk7XG5cblx0XHR0aGlzLnNlbGVjdG9yLmluaXQodGhpcy5vQ29udGVudFZpc2libGUsIHRoaXMub0NvbnRlbnRTY3JvbGxhYmxlLCBLZXlTdGF0ZS5NZXNzYWdlTGlzdCk7XG5cblx0XHRpZiAodGhpcy5tb2JpbGUpIHtcblx0XHRcdGRvbS5vbignY2xpY2snLCAoKSA9PiB7XG5cdFx0XHRcdGxlZnRQYW5lbERpc2FibGVkKHRydWUpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0ZG9tXG5cdFx0XHQub24oJ2NsaWNrJywgJy5tZXNzYWdlTGlzdCAuYi1tZXNzYWdlLWxpc3Qtd3JhcHBlcicsICgpID0+IHtcblx0XHRcdFx0aWYgKEZvY3VzZWQuTWVzc2FnZVZpZXcgPT09IEFwcFN0b3JlLmZvY3VzZWRTdGF0ZSgpKSB7XG5cdFx0XHRcdFx0QXBwU3RvcmUuZm9jdXNlZFN0YXRlKEZvY3VzZWQuTWVzc2FnZUxpc3QpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdjbGljaycsICcuZS1wYWdlbmF0b3IgLmUtcGFnZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0XHRzZWxmLmdvdG9QYWdlKGtvLmRhdGFGb3IodGhpcykpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXHRcdFx0fSlcblx0XHRcdC5vbignY2xpY2snLCAnLm1lc3NhZ2VMaXN0IC5jaGVja2JveENrZWNrQWxsJywgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmNoZWNrQWxsKCF0aGlzLmNoZWNrQWxsKCkpO1xuXHRcdFx0fSlcblx0XHRcdC5vbignY2xpY2snLCAnLm1lc3NhZ2VMaXN0IC5tZXNzYWdlTGlzdEl0ZW0gLmZsYWdQYXJlbnQnLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdFx0c2VsZi5mbGFnTWVzc2FnZXMoa28uZGF0YUZvcih0aGlzKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdjbGljaycsICcubWVzc2FnZUxpc3QgLm1lc3NhZ2VMaXN0SXRlbSAudGhyZWFkcy1sZW4nLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdFx0c2VsZi5nb3RvVGhyZWFkKGtvLmRhdGFGb3IodGhpcykpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXHRcdFx0fSlcblx0XHRcdC5vbignZGJsY2xpY2snLCAnLm1lc3NhZ2VMaXN0IC5tZXNzYWdlTGlzdEl0ZW0gLmFjdGlvbkhhbmRsZScsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0XHRzZWxmLmdvdG9UaHJlYWQoa28uZGF0YUZvcih0aGlzKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHR9KTtcblxuXHRcdHRoaXMuaW5pdFVwbG9hZGVyRm9yQXBwZW5kKCk7XG5cdFx0dGhpcy5pbml0U2hvcnRjdXRzKCk7XG5cblx0XHRpZiAoIWJNb2JpbGVEZXZpY2UgJiYgaWZ2aXNpYmxlICYmIFNldHRpbmdzLmNhcGEoQ2FwYS5QcmVmZXRjaCkpIHtcblx0XHRcdGlmdmlzaWJsZS5zZXRJZGxlRHVyYXRpb24oTWFnaWNzLmlmdmlzaWJsZUlkbGUxMHMpO1xuXG5cdFx0XHRpZnZpc2libGUuaWRsZSgoKSA9PiB7XG5cdFx0XHRcdHRoaXMucHJlZmV0Y2hOZXh0VGljaygpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cblx0aW5pdFNob3J0Y3V0cygpIHtcblx0XHRrZXkoJ2VudGVyJywgS2V5U3RhdGUuTWVzc2FnZUxpc3QsICgpID0+IHtcblx0XHRcdGlmICh0aGlzLm1lc3NhZ2UoKSAmJiB0aGlzLnVzZUF1dG9TZWxlY3QoKSkge1xuXHRcdFx0XHRFdmVudHMucHViKCdtYWlsYm94Lm1lc3NhZ2Utdmlldy50b2dnbGUtZnVsbC1zY3JlZW4nKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9KTtcblxuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuTWVzc2FnZUxpc3RBY3Rpb25zKSkge1xuXHRcdFx0Ly8gYXJjaGl2ZSAoemlwKVxuXHRcdFx0a2V5KCd6JywgW0tleVN0YXRlLk1lc3NhZ2VMaXN0LCBLZXlTdGF0ZS5NZXNzYWdlVmlld10sICgpID0+IHtcblx0XHRcdFx0dGhpcy5hcmNoaXZlQ29tbWFuZCgpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gZGVsZXRlXG5cdFx0XHRrZXkoJ2RlbGV0ZSwgc2hpZnQrZGVsZXRlLCBzaGlmdCszJywgS2V5U3RhdGUuTWVzc2FnZUxpc3QsIChldmVudCwgaGFuZGxlcikgPT4ge1xuXHRcdFx0XHRpZiAoZXZlbnQpIHtcblx0XHRcdFx0XHRpZiAoMCA8IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkKCkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRpZiAoaGFuZGxlciAmJiAnc2hpZnQrZGVsZXRlJyA9PT0gaGFuZGxlci5zaG9ydGN1dCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRlbGV0ZVdpdGhvdXRNb3ZlQ29tbWFuZCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kZWxldGVDb21tYW5kKCk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRpZiAoU2V0dGluZ3MuY2FwYShDYXBhLlJlbG9hZCkpIHtcblx0XHRcdC8vIGNoZWNrIG1haWxcblx0XHRcdGtleSgnY3RybCtyLCBjb21tYW5kK3InLCBbS2V5U3RhdGUuRm9sZGVyTGlzdCwgS2V5U3RhdGUuTWVzc2FnZUxpc3QsIEtleVN0YXRlLk1lc3NhZ2VWaWV3XSwgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnJlbG9hZENvbW1hbmQoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly8gY2hlY2sgYWxsXG5cdFx0a2V5KCdjdHJsK2EsIGNvbW1hbmQrYScsIEtleVN0YXRlLk1lc3NhZ2VMaXN0LCAoKSA9PiB7XG5cdFx0XHR0aGlzLmNoZWNrQWxsKCEodGhpcy5jaGVja0FsbCgpICYmICF0aGlzLmlzSW5jb21wbGV0ZUNoZWNrZWQoKSkpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0aWYgKFNldHRpbmdzLmNhcGEoQ2FwYS5Db21wb3NlcikpIHtcblx0XHRcdC8vIHdyaXRlL2NvbXBvc2UgKG9wZW4gY29tcG9zZSBwb3B1cClcblx0XHRcdGtleSgndyxjJywgW0tleVN0YXRlLk1lc3NhZ2VMaXN0LCBLZXlTdGF0ZS5NZXNzYWdlVmlld10sICgpID0+IHtcblx0XHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQ29tcG9zZScpKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKFNldHRpbmdzLmNhcGEoQ2FwYS5NZXNzYWdlTGlzdEFjdGlvbnMpKSB7XG5cdFx0XHQvLyBpbXBvcnRhbnQgLSBzdGFyL2ZsYWcgbWVzc2FnZXNcblx0XHRcdGtleSgnaScsIFtLZXlTdGF0ZS5NZXNzYWdlTGlzdCwgS2V5U3RhdGUuTWVzc2FnZVZpZXddLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZmxhZ01lc3NhZ2VzRmFzdCgpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHRrZXkoJ3QnLCBbS2V5U3RhdGUuTWVzc2FnZUxpc3RdLCAoKSA9PiB7XG5cdFx0XHRsZXQgbWVzc2FnZSA9IHRoaXMuc2VsZWN0b3JNZXNzYWdlU2VsZWN0ZWQoKTtcblx0XHRcdGlmICghbWVzc2FnZSkge1xuXHRcdFx0XHRtZXNzYWdlID0gdGhpcy5zZWxlY3Rvck1lc3NhZ2VGb2N1c2VkKCk7XG5cdFx0XHR9XG5cblx0XHRcdGlmIChtZXNzYWdlICYmIDAgPCBtZXNzYWdlLnRocmVhZHNMZW4oKSkge1xuXHRcdFx0XHR0aGlzLmdvdG9UaHJlYWQobWVzc2FnZSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuTWVzc2FnZUxpc3RBY3Rpb25zKSkge1xuXHRcdFx0Ly8gbW92ZVxuXHRcdFx0a2V5KCdtJywgS2V5U3RhdGUuTWVzc2FnZUxpc3QsICgpID0+IHtcblx0XHRcdFx0aWYgKHRoaXMubmV3TW92ZVRvRm9sZGVyKCkpIHtcblx0XHRcdFx0XHR0aGlzLm1vdmVOZXdDb21tYW5kKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5tb3ZlRHJvcGRvd25UcmlnZ2VyKHRydWUpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKFNldHRpbmdzLmNhcGEoQ2FwYS5NZXNzYWdlTGlzdEFjdGlvbnMpKSB7XG5cdFx0XHQvLyByZWFkXG5cdFx0XHRrZXkoJ3EnLCBbS2V5U3RhdGUuTWVzc2FnZUxpc3QsIEtleVN0YXRlLk1lc3NhZ2VWaWV3XSwgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLnNlZW5NZXNzYWdlc0Zhc3QodHJ1ZSk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyB1bnJlYWRcblx0XHRcdGtleSgndScsIFtLZXlTdGF0ZS5NZXNzYWdlTGlzdCwgS2V5U3RhdGUuTWVzc2FnZVZpZXddLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuc2Vlbk1lc3NhZ2VzRmFzdChmYWxzZSk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpKSB7XG5cdFx0XHRrZXkoJ3NoaWZ0K2YnLCBbS2V5U3RhdGUuTWVzc2FnZUxpc3QsIEtleVN0YXRlLk1lc3NhZ2VWaWV3XSwgKCkgPT4ge1xuXHRcdFx0XHR0aGlzLm11bHR5Rm9yd2FyZENvbW1hbmQoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0aWYgKFNldHRpbmdzLmNhcGEoQ2FwYS5TZWFyY2gpKSB7XG5cdFx0XHQvLyBzZWFyY2ggaW5wdXQgZm9jdXNcblx0XHRcdGtleSgnLycsIFtLZXlTdGF0ZS5NZXNzYWdlTGlzdCwgS2V5U3RhdGUuTWVzc2FnZVZpZXddLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuaW5wdXRNZXNzYWdlTGlzdFNlYXJjaEZvY3VzKHRydWUpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KTtcblx0XHR9XG5cblx0XHQvLyBjYW5jZWwgc2VhcmNoXG5cdFx0a2V5KCdlc2MnLCBLZXlTdGF0ZS5NZXNzYWdlTGlzdCwgKCkgPT4ge1xuXHRcdFx0aWYgKCcnICE9PSB0aGlzLm1lc3NhZ2VMaXN0U2VhcmNoRGVzYygpKSB7XG5cdFx0XHRcdHRoaXMuY2FuY2VsU2VhcmNoKCk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0gZWxzZSBpZiAoJycgIT09IHRoaXMubWVzc2FnZUxpc3RFbmRUaHJlYWRVaWQoKSkge1xuXHRcdFx0XHR0aGlzLmNhbmNlbFRocmVhZFVpZCgpO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0pO1xuXG5cdFx0Ly8gY2hhbmdlIGZvY3VzZWQgc3RhdGVcblx0XHRrZXkoJ3RhYiwgc2hpZnQrdGFiLCBsZWZ0LCByaWdodCcsIEtleVN0YXRlLk1lc3NhZ2VMaXN0LCAoZXZlbnQsIGhhbmRsZXIpID0+IHtcblx0XHRcdGlmIChldmVudCAmJiBoYW5kbGVyICYmICgnc2hpZnQrdGFiJyA9PT0gaGFuZGxlci5zaG9ydGN1dCB8fCAnbGVmdCcgPT09IGhhbmRsZXIuc2hvcnRjdXQpKSB7XG5cdFx0XHRcdEFwcFN0b3JlLmZvY3VzZWRTdGF0ZShGb2N1c2VkLkZvbGRlckxpc3QpO1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLm1lc3NhZ2UoKSkge1xuXHRcdFx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5NZXNzYWdlVmlldyk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdGtleSgnY3RybCtsZWZ0LCBjb21tYW5kK2xlZnQnLCBLZXlTdGF0ZS5NZXNzYWdlVmlldywgbm9vcEZhbHNlKTtcblx0XHRrZXkoJ2N0cmwrcmlnaHQsIGNvbW1hbmQrcmlnaHQnLCBLZXlTdGF0ZS5NZXNzYWdlVmlldywgbm9vcEZhbHNlKTtcblx0fVxuXG5cdHByZWZldGNoTmV4dFRpY2soKSB7XG5cdFx0aWYgKGlmdmlzaWJsZSAmJiAhdGhpcy5iUHJlZmV0Y2ggJiYgIWlmdmlzaWJsZS5ub3coKSAmJiB0aGlzLnZpZXdNb2RlbFZpc2liaWxpdHkoKSkge1xuXHRcdFx0Y29uc3QgbWVzc2FnZSA9IF8uZmluZChcblx0XHRcdFx0dGhpcy5tZXNzYWdlTGlzdCgpLFxuXHRcdFx0XHQoaXRlbSkgPT4gaXRlbSAmJiAhaGFzUmVxdWVzdGVkTWVzc2FnZShpdGVtLmZvbGRlckZ1bGxOYW1lUmF3LCBpdGVtLnVpZClcblx0XHRcdCk7XG5cdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHR0aGlzLmJQcmVmZXRjaCA9IHRydWU7XG5cblx0XHRcdFx0YWRkUmVxdWVzdGVkTWVzc2FnZShtZXNzYWdlLmZvbGRlckZ1bGxOYW1lUmF3LCBtZXNzYWdlLnVpZCk7XG5cblx0XHRcdFx0UmVtb3RlLm1lc3NhZ2UoXG5cdFx0XHRcdFx0KHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV4dCA9ICEhKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KTtcblx0XHRcdFx0XHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmJQcmVmZXRjaCA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0XHRpZiAobmV4dCkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucHJlZmV0Y2hOZXh0VGljaygpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LCBNYWdpY3MuVGltZTFzKTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdG1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcsXG5cdFx0XHRcdFx0bWVzc2FnZS51aWRcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhZHZhbmNlZFNlYXJjaENsaWNrKCkge1xuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuU2VhcmNoQWR2KSkge1xuXHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQWR2YW5jZWRTZWFyY2gnKSwgW3RoaXMubWFpbk1lc3NhZ2VMaXN0U2VhcmNoKCldKTtcblx0XHR9XG5cdH1cblxuXHRxdW90YVRvb2x0aXAoKSB7XG5cdFx0cmV0dXJuIGkxOG4oJ01FU1NBR0VfTElTVC9RVU9UQV9TSVpFJywge1xuXHRcdFx0J1NJWkUnOiBmcmllbmRseVNpemUodGhpcy51c2VyVXNhZ2VTaXplKCkpLFxuXHRcdFx0J1BST0MnOiB0aGlzLnVzZXJVc2FnZVByb2MoKSxcblx0XHRcdCdMSU1JVCc6IGZyaWVuZGx5U2l6ZSh0aGlzLnVzZXJRdW90YSgpKVxuXHRcdH0pO1xuXHR9XG5cblx0aW5pdFVwbG9hZGVyRm9yQXBwZW5kKCkge1xuXHRcdGlmICghU2V0dGluZ3MuYXBwU2V0dGluZ3NHZXQoJ2FsbG93QXBwZW5kTWVzc2FnZScpIHx8ICF0aGlzLmRyYWdPdmVyQXJlYSgpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb0p1YSA9IG5ldyBKdWEoe1xuXHRcdFx0YWN0aW9uOiBhcHBlbmQoKSxcblx0XHRcdG5hbWU6ICdBcHBlbmRGaWxlJyxcblx0XHRcdHF1ZXVlU2l6ZTogMSxcblx0XHRcdG11bHRpcGxlU2l6ZUxpbWl0OiAxLFxuXHRcdFx0aGlkZGVuOiB7XG5cdFx0XHRcdEZvbGRlcjogKCkgPT4gRm9sZGVyU3RvcmUuY3VycmVudEZvbGRlckZ1bGxOYW1lUmF3KClcblx0XHRcdH0sXG5cdFx0XHRkcmFnQW5kRHJvcEVsZW1lbnQ6IHRoaXMuZHJhZ092ZXJBcmVhKCksXG5cdFx0XHRkcmFnQW5kRHJvcEJvZHlFbGVtZW50OiB0aGlzLmRyYWdPdmVyQm9keUFyZWEoKVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5kcmFnT3Zlci5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0dGhpcy5zZWxlY3Rvci5zY3JvbGxUb1RvcCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0b0p1YVxuXHRcdFx0Lm9uKCdvbkRyYWdFbnRlcicsICgpID0+IHtcblx0XHRcdFx0dGhpcy5kcmFnT3ZlckVudGVyKHRydWUpO1xuXHRcdFx0fSlcblx0XHRcdC5vbignb25EcmFnTGVhdmUnLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZHJhZ092ZXJFbnRlcihmYWxzZSk7XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdvbkJvZHlEcmFnRW50ZXInLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZHJhZ092ZXIodHJ1ZSk7XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdvbkJvZHlEcmFnTGVhdmUnLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZHJhZ092ZXIoZmFsc2UpO1xuXHRcdFx0fSlcblx0XHRcdC5vbignb25TZWxlY3QnLCAoc1VpZCwgb0RhdGEpID0+IHtcblx0XHRcdFx0aWYgKHNVaWQgJiYgb0RhdGEgJiYgJ21lc3NhZ2UvcmZjODIyJyA9PT0gb0RhdGEuVHlwZSkge1xuXHRcdFx0XHRcdE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdExvYWRpbmcodHJ1ZSk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdvbkNvbXBsZXRlJywgKCkgPT4ge1xuXHRcdFx0XHRnZXRBcHAoKS5yZWxvYWRNZXNzYWdlTGlzdCh0cnVlLCB0cnVlKTtcblx0XHRcdH0pO1xuXG5cdFx0cmV0dXJuICEhb0p1YTtcblx0fVxufVxuXG5leHBvcnQgeyBNZXNzYWdlTGlzdE1haWxCb3hVc2VyVmlldywgTWVzc2FnZUxpc3RNYWlsQm94VXNlclZpZXcgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHdpbmRvdyBmcm9tICd3aW5kb3cnO1xuaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgJCBmcm9tICckJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQga2V5IGZyb20gJ2tleSc7XG5cbmltcG9ydCB7IERBVEFfSU1BR0VfVVNFUl9ET1RfUElDLCBVTlVTRURfT1BUSU9OX1ZBTFVFIH0gZnJvbSAnQ29tbW9uL0NvbnN0cyc7XG5cbmltcG9ydCB7XG5cdENhcGEsXG5cdENvbXBvc2VUeXBlLFxuXHRDbGllbnRTaWRlS2V5TmFtZSxcblx0S2V5U3RhdGUsXG5cdEZvbGRlclR5cGUsXG5cdEZvY3VzZWQsXG5cdExheW91dCxcblx0TWFnaWNzLFxuXHRNZXNzYWdlU2V0QWN0aW9uXG59IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5cbmltcG9ydCB7ICRodG1sLCBsZWZ0UGFuZWxEaXNhYmxlZCwga2V5U2NvcGVSZWFsLCB1c2VLZXlib2FyZFNob3J0Y3V0cywgbW92ZUFjdGlvbiB9IGZyb20gJ0NvbW1vbi9HbG9iYWxzJztcblxuaW1wb3J0IHtcblx0aW5BcnJheSxcblx0aXNBcnJheSxcblx0aXNOb25FbXB0eUFycmF5LFxuXHR0cmltLFxuXHRub29wLFxuXHR3aW5kb3dSZXNpemUsXG5cdHdpbmRvd1Jlc2l6ZUNhbGxiYWNrLFxuXHRpbkZvY3VzLFxuXHRyZW1vdmVTZWxlY3Rpb24sXG5cdHJlbW92ZUluRm9jdXMsXG5cdG1haWxUb0hlbHBlcixcblx0aXNUcmFuc3BhcmVudFxufSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5pbXBvcnQgQXVkaW8gZnJvbSAnQ29tbW9uL0F1ZGlvJztcbmltcG9ydCAqIGFzIEV2ZW50cyBmcm9tICdDb21tb24vRXZlbnRzJztcblxuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcbmltcG9ydCB7IGF0dGFjaG1lbnREb3dubG9hZCB9IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5cbmltcG9ydCB7IGdldFVzZXJQaWMsIHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZSB9IGZyb20gJ0NvbW1vbi9DYWNoZSc7XG5cbmltcG9ydCBTb2NpYWxTdG9yZSBmcm9tICdTdG9yZXMvU29jaWFsJztcbmltcG9ydCBBcHBTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BcHAnO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvU2V0dGluZ3MnO1xuaW1wb3J0IEFjY291bnRTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BY2NvdW50JztcbmltcG9ydCBGb2xkZXJTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Gb2xkZXInO1xuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcblxuaW1wb3J0ICogYXMgTG9jYWwgZnJvbSAnU3RvcmFnZS9DbGllbnQnO1xuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5pbXBvcnQgUHJvbWlzZXMgZnJvbSAnUHJvbWlzZXMvVXNlci9BamF4JztcblxuaW1wb3J0IHsgZ2V0QXBwIH0gZnJvbSAnSGVscGVyL0FwcHMvVXNlcic7XG5cbmltcG9ydCB7IHZpZXcsIGNvbW1hbmQsIFZpZXdUeXBlLCBzaG93U2NyZWVuUG9wdXAsIGNyZWF0ZUNvbW1hbmQgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkB2aWV3KHtcblx0bmFtZTogJ1ZpZXcvVXNlci9NYWlsQm94L01lc3NhZ2VWaWV3Jyxcblx0dHlwZTogVmlld1R5cGUuUmlnaHQsXG5cdHRlbXBsYXRlSUQ6ICdNYWlsTWVzc2FnZVZpZXcnXG59KVxuY2xhc3MgTWVzc2FnZVZpZXdNYWlsQm94VXNlclZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdGxldCBsYXN0RW1haWwgPSAnJztcblxuXHRcdGNvbnN0IGNyZWF0ZUNvbW1hbmRSZXBseUhlbHBlciA9ICh0eXBlKSA9PlxuXHRcdFx0Y3JlYXRlQ29tbWFuZCgoKSA9PiB7XG5cdFx0XHRcdHRoaXMubGFzdFJlcGx5QWN0aW9uKHR5cGUpO1xuXHRcdFx0XHR0aGlzLnJlcGx5T3Jmb3J3YXJkKHR5cGUpO1xuXHRcdFx0fSwgdGhpcy5jYW5CZVJlcGxpZWRPckZvcndhcmRlZCk7XG5cblx0XHRjb25zdCBjcmVhdGVDb21tYW5kQWN0aW9uSGVscGVyID0gKGZvbGRlclR5cGUsIHVzZUZvbGRlcikgPT5cblx0XHRcdGNyZWF0ZUNvbW1hbmQoKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlKCk7XG5cdFx0XHRcdGlmIChtZXNzYWdlICYmIHRoaXMuYWxsb3dNZXNzYWdlTGlzdEFjdGlvbnMpIHtcblx0XHRcdFx0XHR0aGlzLm1lc3NhZ2UobnVsbCk7XG5cdFx0XHRcdFx0Z2V0QXBwKCkuZGVsZXRlTWVzc2FnZXNGcm9tRm9sZGVyKGZvbGRlclR5cGUsIG1lc3NhZ2UuZm9sZGVyRnVsbE5hbWVSYXcsIFttZXNzYWdlLnVpZF0sIHVzZUZvbGRlcik7XG5cdFx0XHRcdH1cblx0XHRcdH0sIHRoaXMubWVzc2FnZVZpc2liaWxpdHkpO1xuXG5cdFx0dGhpcy5vRG9tID0gbnVsbDtcblx0XHR0aGlzLm9IZWFkZXJEb20gPSBudWxsO1xuXHRcdHRoaXMub01lc3NhZ2VTY3JvbGxlckRvbSA9IG51bGw7XG5cblx0XHR0aGlzLmJvZHlCYWNrZ3JvdW5kQ29sb3IgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMucHN3cCA9IG51bGw7XG5cblx0XHR0aGlzLm1vdmVBY3Rpb24gPSBtb3ZlQWN0aW9uO1xuXG5cdFx0dGhpcy5hbGxvd0NvbXBvc2VyID0gISFTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpO1xuXHRcdHRoaXMuYWxsb3dNZXNzYWdlQWN0aW9ucyA9ICEhU2V0dGluZ3MuY2FwYShDYXBhLk1lc3NhZ2VBY3Rpb25zKTtcblx0XHR0aGlzLmFsbG93TWVzc2FnZUxpc3RBY3Rpb25zID0gISFTZXR0aW5ncy5jYXBhKENhcGEuTWVzc2FnZUxpc3RBY3Rpb25zKTtcblxuXHRcdHRoaXMubG9nb0ltZyA9IHRyaW0oU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ1VzZXJMb2dvTWVzc2FnZScpKTtcblx0XHR0aGlzLmxvZ29JZnJhbWUgPSB0cmltKFNldHRpbmdzLnNldHRpbmdzR2V0KCdVc2VySWZyYW1lTWVzc2FnZScpKTtcblxuXHRcdHRoaXMubW9iaWxlID0gISFTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJyk7XG5cblx0XHR0aGlzLmF0dGFjaG1lbnRzQWN0aW9ucyA9IEFwcFN0b3JlLmF0dGFjaG1lbnRzQWN0aW9ucztcblxuXHRcdHRoaXMubWVzc2FnZSA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlO1xuXHRcdHRoaXMubWVzc2FnZUxpc3RDaGVja2VkID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q2hlY2tlZDtcblx0XHR0aGlzLmhhc0NoZWNrZWRNZXNzYWdlcyA9IE1lc3NhZ2VTdG9yZS5oYXNDaGVja2VkTWVzc2FnZXM7XG5cdFx0dGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscyA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscztcblx0XHR0aGlzLm1lc3NhZ2VMb2FkaW5nVGhyb3R0bGUgPSBNZXNzYWdlU3RvcmUubWVzc2FnZUxvYWRpbmdUaHJvdHRsZTtcblx0XHR0aGlzLm1lc3NhZ2VzQm9kaWVzRG9tID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VzQm9kaWVzRG9tO1xuXHRcdHRoaXMudXNlVGhyZWFkcyA9IFNldHRpbmdzU3RvcmUudXNlVGhyZWFkcztcblx0XHR0aGlzLnJlcGx5U2FtZUZvbGRlciA9IFNldHRpbmdzU3RvcmUucmVwbHlTYW1lRm9sZGVyO1xuXHRcdHRoaXMubGF5b3V0ID0gU2V0dGluZ3NTdG9yZS5sYXlvdXQ7XG5cdFx0dGhpcy51c2VQcmV2aWV3UGFuZSA9IFNldHRpbmdzU3RvcmUudXNlUHJldmlld1BhbmU7XG5cdFx0dGhpcy5pc01lc3NhZ2VTZWxlY3RlZCA9IE1lc3NhZ2VTdG9yZS5pc01lc3NhZ2VTZWxlY3RlZDtcblx0XHR0aGlzLm1lc3NhZ2VBY3RpdmVEb20gPSBNZXNzYWdlU3RvcmUubWVzc2FnZUFjdGl2ZURvbTtcblx0XHR0aGlzLm1lc3NhZ2VFcnJvciA9IE1lc3NhZ2VTdG9yZS5tZXNzYWdlRXJyb3I7XG5cblx0XHR0aGlzLmZ1bGxTY3JlZW5Nb2RlID0gTWVzc2FnZVN0b3JlLm1lc3NhZ2VGdWxsU2NyZWVuTW9kZTtcblxuXHRcdHRoaXMubWVzc2FnZUxpc3RPZlRocmVhZHNMb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgcmF0ZUxpbWl0OiAxIH0pO1xuXHRcdHRoaXMuaGlnaGxpZ2h0VW5zZWxlY3RlZEF0dGFjaG1lbnRzID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgZmFsc2VUaW1lb3V0OiAyMDAwIH0pO1xuXG5cdFx0dGhpcy5zaG93QXR0YWNobW5ldENvbnRyb2xzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnNob3dBdHRhY2htbmV0Q29udHJvbHNTdGF0ZSA9ICh2KSA9PiB7XG5cdFx0XHRMb2NhbC5zZXQoQ2xpZW50U2lkZUtleU5hbWUuTWVzc2FnZUF0dGFjaG1uZXRDb250cm9scywgISF2KTtcblx0XHR9O1xuXG5cdFx0dGhpcy5hbGxvd0F0dGFjaG1uZXRDb250cm9scyA9IGtvLmNvbXB1dGVkKFxuXHRcdFx0KCkgPT4gMCA8IHRoaXMuYXR0YWNobWVudHNBY3Rpb25zKCkubGVuZ3RoICYmIFNldHRpbmdzLmNhcGEoQ2FwYS5BdHRhY2htZW50c0FjdGlvbnMpXG5cdFx0KTtcblxuXHRcdHRoaXMuZG93bmxvYWRBc1ppcEFsbG93ZWQgPSBrby5jb21wdXRlZChcblx0XHRcdCgpID0+IC0xIDwgaW5BcnJheSgnemlwJywgdGhpcy5hdHRhY2htZW50c0FjdGlvbnMoKSkgJiYgdGhpcy5hbGxvd0F0dGFjaG1uZXRDb250cm9scygpXG5cdFx0KTtcblxuXHRcdHRoaXMuZG93bmxvYWRBc1ppcExvYWRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmRvd25sb2FkQXNaaXBFcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpLmV4dGVuZCh7IGZhbHNlVGltZW91dDogNzAwMCB9KTtcblxuXHRcdHRoaXMuc2F2ZVRvT3duQ2xvdWRBbGxvd2VkID0ga28uY29tcHV0ZWQoXG5cdFx0XHQoKSA9PiAtMSA8IGluQXJyYXkoJ293bmNsb3VkJywgdGhpcy5hdHRhY2htZW50c0FjdGlvbnMoKSkgJiYgdGhpcy5hbGxvd0F0dGFjaG1uZXRDb250cm9scygpXG5cdFx0KTtcblxuXHRcdHRoaXMuc2F2ZVRvT3duQ2xvdWRMb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zYXZlVG9Pd25DbG91ZFN1Y2Nlc3MgPSBrby5vYnNlcnZhYmxlKGZhbHNlKS5leHRlbmQoeyBmYWxzZVRpbWVvdXQ6IDIwMDAgfSk7XG5cdFx0dGhpcy5zYXZlVG9Pd25DbG91ZEVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgZmFsc2VUaW1lb3V0OiA3MDAwIH0pO1xuXG5cdFx0dGhpcy5zYXZlVG9Pd25DbG91ZFN1Y2Nlc3Muc3Vic2NyaWJlKCh2KSA9PiB7XG5cdFx0XHRpZiAodikge1xuXHRcdFx0XHR0aGlzLnNhdmVUb093bkNsb3VkRXJyb3IoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5zYXZlVG9Pd25DbG91ZEVycm9yLnN1YnNjcmliZSgodikgPT4ge1xuXHRcdFx0aWYgKHYpIHtcblx0XHRcdFx0dGhpcy5zYXZlVG9Pd25DbG91ZFN1Y2Nlc3MoZmFsc2UpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5zYXZlVG9Ecm9wYm94QWxsb3dlZCA9IGtvLmNvbXB1dGVkKFxuXHRcdFx0KCkgPT4gLTEgPCBpbkFycmF5KCdkcm9wYm94JywgdGhpcy5hdHRhY2htZW50c0FjdGlvbnMoKSkgJiYgdGhpcy5hbGxvd0F0dGFjaG1uZXRDb250cm9scygpXG5cdFx0KTtcblxuXHRcdHRoaXMuc2F2ZVRvRHJvcGJveExvYWRpbmcgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnNhdmVUb0Ryb3Bib3hTdWNjZXNzID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgZmFsc2VUaW1lb3V0OiAyMDAwIH0pO1xuXHRcdHRoaXMuc2F2ZVRvRHJvcGJveEVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgZmFsc2VUaW1lb3V0OiA3MDAwIH0pO1xuXG5cdFx0dGhpcy5zYXZlVG9Ecm9wYm94U3VjY2Vzcy5zdWJzY3JpYmUoKHYpID0+IHtcblx0XHRcdGlmICh2KSB7XG5cdFx0XHRcdHRoaXMuc2F2ZVRvRHJvcGJveEVycm9yKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMuc2F2ZVRvRHJvcGJveEVycm9yLnN1YnNjcmliZSgodikgPT4ge1xuXHRcdFx0aWYgKHYpIHtcblx0XHRcdFx0dGhpcy5zYXZlVG9Ecm9wYm94U3VjY2VzcyhmYWxzZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNob3dBdHRhY2htbmV0Q29udHJvbHMuc3Vic2NyaWJlKCh2KSA9PiB7XG5cdFx0XHRpZiAodGhpcy5tZXNzYWdlKCkpIHtcblx0XHRcdFx0Xy5lYWNoKHRoaXMubWVzc2FnZSgpLmF0dGFjaG1lbnRzKCksIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGl0ZW0pIHtcblx0XHRcdFx0XHRcdGl0ZW0uY2hlY2tlZCghIXYpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLmxhc3RSZXBseUFjdGlvbl8gPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLmxhc3RSZXBseUFjdGlvbiA9IGtvLmNvbXB1dGVkKHtcblx0XHRcdHJlYWQ6IHRoaXMubGFzdFJlcGx5QWN0aW9uXyxcblx0XHRcdHdyaXRlOiAodmFsdWUpID0+IHtcblx0XHRcdFx0dGhpcy5sYXN0UmVwbHlBY3Rpb25fKFxuXHRcdFx0XHRcdC0xID09PSBpbkFycmF5KHZhbHVlLCBbQ29tcG9zZVR5cGUuUmVwbHksIENvbXBvc2VUeXBlLlJlcGx5QWxsLCBDb21wb3NlVHlwZS5Gb3J3YXJkXSlcblx0XHRcdFx0XHRcdD8gQ29tcG9zZVR5cGUuUmVwbHlcblx0XHRcdFx0XHRcdDogdmFsdWVcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMubGFzdFJlcGx5QWN0aW9uKExvY2FsLmdldChDbGllbnRTaWRlS2V5TmFtZS5MYXN0UmVwbHlBY3Rpb24pIHx8IENvbXBvc2VUeXBlLlJlcGx5KTtcblxuXHRcdHRoaXMubGFzdFJlcGx5QWN0aW9uXy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRMb2NhbC5zZXQoQ2xpZW50U2lkZUtleU5hbWUuTGFzdFJlcGx5QWN0aW9uLCB2YWx1ZSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNob3dGdWxsSW5mbyA9IGtvLm9ic2VydmFibGUoJzEnID09PSBMb2NhbC5nZXQoQ2xpZW50U2lkZUtleU5hbWUuTWVzc2FnZUhlYWRlckZ1bGxJbmZvKSk7XG5cblx0XHR0aGlzLm1vcmVEcm9wZG93blRyaWdnZXIgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLm1lc3NhZ2VEb21Gb2N1c2VkID0ga28ub2JzZXJ2YWJsZShmYWxzZSkuZXh0ZW5kKHsgcmF0ZUxpbWl0OiAwIH0pO1xuXG5cdFx0dGhpcy5tZXNzYWdlVmlzaWJpbGl0eSA9IGtvLmNvbXB1dGVkKCgpID0+ICF0aGlzLm1lc3NhZ2VMb2FkaW5nVGhyb3R0bGUoKSAmJiAhIXRoaXMubWVzc2FnZSgpKTtcblxuXHRcdHRoaXMubWVzc2FnZS5zdWJzY3JpYmUoKG1lc3NhZ2UpID0+IHtcblx0XHRcdGlmICghbWVzc2FnZSkge1xuXHRcdFx0XHRNZXNzYWdlU3RvcmUuc2VsZWN0b3JNZXNzYWdlU2VsZWN0ZWQobnVsbCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLmNhbkJlUmVwbGllZE9yRm9yd2FyZGVkID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgdiA9IHRoaXMubWVzc2FnZVZpc2liaWxpdHkoKTtcblx0XHRcdHJldHVybiAhdGhpcy5pc0RyYWZ0Rm9sZGVyKCkgJiYgdjtcblx0XHR9KTtcblxuXHRcdC8vIGNvbW1hbmRzXG5cdFx0dGhpcy5yZXBseUNvbW1hbmQgPSBjcmVhdGVDb21tYW5kUmVwbHlIZWxwZXIoQ29tcG9zZVR5cGUuUmVwbHkpO1xuXHRcdHRoaXMucmVwbHlBbGxDb21tYW5kID0gY3JlYXRlQ29tbWFuZFJlcGx5SGVscGVyKENvbXBvc2VUeXBlLlJlcGx5QWxsKTtcblx0XHR0aGlzLmZvcndhcmRDb21tYW5kID0gY3JlYXRlQ29tbWFuZFJlcGx5SGVscGVyKENvbXBvc2VUeXBlLkZvcndhcmQpO1xuXHRcdHRoaXMuZm9yd2FyZEFzQXR0YWNobWVudENvbW1hbmQgPSBjcmVhdGVDb21tYW5kUmVwbHlIZWxwZXIoQ29tcG9zZVR5cGUuRm9yd2FyZEFzQXR0YWNobWVudCk7XG5cdFx0dGhpcy5lZGl0QXNOZXdDb21tYW5kID0gY3JlYXRlQ29tbWFuZFJlcGx5SGVscGVyKENvbXBvc2VUeXBlLkVkaXRBc05ldyk7XG5cblx0XHR0aGlzLmRlbGV0ZUNvbW1hbmQgPSBjcmVhdGVDb21tYW5kQWN0aW9uSGVscGVyKEZvbGRlclR5cGUuVHJhc2gsIHRydWUpO1xuXHRcdHRoaXMuZGVsZXRlV2l0aG91dE1vdmVDb21tYW5kID0gY3JlYXRlQ29tbWFuZEFjdGlvbkhlbHBlcihGb2xkZXJUeXBlLlRyYXNoLCBmYWxzZSk7XG5cdFx0dGhpcy5hcmNoaXZlQ29tbWFuZCA9IGNyZWF0ZUNvbW1hbmRBY3Rpb25IZWxwZXIoRm9sZGVyVHlwZS5BcmNoaXZlLCB0cnVlKTtcblx0XHR0aGlzLnNwYW1Db21tYW5kID0gY3JlYXRlQ29tbWFuZEFjdGlvbkhlbHBlcihGb2xkZXJUeXBlLlNwYW0sIHRydWUpO1xuXHRcdHRoaXMubm90U3BhbUNvbW1hbmQgPSBjcmVhdGVDb21tYW5kQWN0aW9uSGVscGVyKEZvbGRlclR5cGUuTm90U3BhbSwgdHJ1ZSk7XG5cblx0XHR0aGlzLmRyb3Bib3hFbmFibGVkID0gU29jaWFsU3RvcmUuZHJvcGJveC5lbmFibGVkO1xuXHRcdHRoaXMuZHJvcGJveEFwaUtleSA9IFNvY2lhbFN0b3JlLmRyb3Bib3guYXBpS2V5O1xuXG5cdFx0Ly8gdmlld2VyXG5cblx0XHR0aGlzLnZpZXdCb2R5VG9wVmFsdWUgPSBrby5vYnNlcnZhYmxlKDApO1xuXG5cdFx0dGhpcy52aWV3Rm9sZGVyID0gJyc7XG5cdFx0dGhpcy52aWV3VWlkID0gJyc7XG5cdFx0dGhpcy52aWV3SGFzaCA9ICcnO1xuXHRcdHRoaXMudmlld1N1YmplY3QgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnZpZXdGcm9tU2hvcnQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnZpZXdGcm9tRGtpbURhdGEgPSBrby5vYnNlcnZhYmxlKFsnbm9uZScsICcnXSk7XG5cdFx0dGhpcy52aWV3VG9TaG9ydCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmlld0Zyb20gPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnZpZXdUbyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmlld0NjID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy52aWV3QmNjID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy52aWV3UmVwbHlUbyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmlld1RpbWVTdGFtcCA9IGtvLm9ic2VydmFibGUoMCk7XG5cdFx0dGhpcy52aWV3U2l6ZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmlld0xpbmVBc0NzcyA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudmlld1ZpZXdMaW5rID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy52aWV3VW5zdWJzY3JpYmVMaW5rID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy52aWV3RG93bmxvYWRMaW5rID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy52aWV3VXNlclBpYyA9IGtvLm9ic2VydmFibGUoREFUQV9JTUFHRV9VU0VSX0RPVF9QSUMpO1xuXHRcdHRoaXMudmlld1VzZXJQaWNWaXNpYmxlID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy52aWV3SXNJbXBvcnRhbnQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnZpZXdJc0ZsYWdnZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMudmlld0Zyb21Ea2ltVmlzaWJpbGl0eSA9IGtvLmNvbXB1dGVkKCgpID0+ICdub25lJyAhPT0gdGhpcy52aWV3RnJvbURraW1EYXRhKClbMF0pO1xuXG5cdFx0dGhpcy52aWV3RnJvbURraW1TdGF0dXNJY29uQ2xhc3MgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHRzd2l0Y2ggKHRoaXMudmlld0Zyb21Ea2ltRGF0YSgpWzBdKSB7XG5cdFx0XHRcdGNhc2UgJ25vbmUnOlxuXHRcdFx0XHRcdHJldHVybiAnaWNvbi1ub25lIGljb25jb2xvci1kaXNwbGF5LW5vbmUnO1xuXHRcdFx0XHRjYXNlICdwYXNzJzpcblx0XHRcdFx0XHRyZXR1cm4gJ2ljb24tb2sgaWNvbmNvbG9yLWdyZWVuJztcblx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRyZXR1cm4gJ2ljb24td2FybmluZy1hbHQgaWNvbmNvbG9yLXJlZCc7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnZpZXdGcm9tRGtpbVN0YXR1c1RpdGxlID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgc3RhdHVzID0gdGhpcy52aWV3RnJvbURraW1EYXRhKCk7XG5cdFx0XHRpZiAoaXNOb25FbXB0eUFycmF5KHN0YXR1cykpIHtcblx0XHRcdFx0aWYgKHN0YXR1c1swXSAmJiBzdGF0dXNbMV0pIHtcblx0XHRcdFx0XHRyZXR1cm4gc3RhdHVzWzFdO1xuXHRcdFx0XHR9IGVsc2UgaWYgKHN0YXR1c1swXSkge1xuXHRcdFx0XHRcdHJldHVybiAnREtJTTogJyArIHN0YXR1c1swXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1lc3NhZ2VBY3RpdmVEb20uc3Vic2NyaWJlKChkb20pID0+IHtcblx0XHRcdHRoaXMuYm9keUJhY2tncm91bmRDb2xvcihkb20gPyB0aGlzLmRldGVjdERvbUJhY2tncm91bmRDb2xvcihkb20pIDogJycpO1xuXHRcdH0sIHRoaXMpO1xuXG5cdFx0dGhpcy5tZXNzYWdlLnN1YnNjcmliZSgobWVzc2FnZSkgPT4ge1xuXHRcdFx0dGhpcy5tZXNzYWdlQWN0aXZlRG9tKG51bGwpO1xuXG5cdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHR0aGlzLnNob3dBdHRhY2htbmV0Q29udHJvbHMoZmFsc2UpO1xuXHRcdFx0XHRpZiAoTG9jYWwuZ2V0KENsaWVudFNpZGVLZXlOYW1lLk1lc3NhZ2VBdHRhY2htbmV0Q29udHJvbHMpKSB7XG5cdFx0XHRcdFx0Xy5kZWxheSgoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnNob3dBdHRhY2htbmV0Q29udHJvbHModHJ1ZSk7XG5cdFx0XHRcdFx0fSwgTWFnaWNzLlRpbWU1MG1zKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh0aGlzLnZpZXdIYXNoICE9PSBtZXNzYWdlLmhhc2gpIHtcblx0XHRcdFx0XHR0aGlzLnNjcm9sbE1lc3NhZ2VUb1RvcCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy52aWV3Rm9sZGVyID0gbWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdztcblx0XHRcdFx0dGhpcy52aWV3VWlkID0gbWVzc2FnZS51aWQ7XG5cdFx0XHRcdHRoaXMudmlld0hhc2ggPSBtZXNzYWdlLmhhc2g7XG5cdFx0XHRcdHRoaXMudmlld1N1YmplY3QobWVzc2FnZS5zdWJqZWN0KCkpO1xuXHRcdFx0XHR0aGlzLnZpZXdGcm9tU2hvcnQobWVzc2FnZS5mcm9tVG9MaW5lKHRydWUsIHRydWUpKTtcblx0XHRcdFx0dGhpcy52aWV3RnJvbURraW1EYXRhKG1lc3NhZ2UuZnJvbURraW1EYXRhKCkpO1xuXHRcdFx0XHR0aGlzLnZpZXdUb1Nob3J0KG1lc3NhZ2UudG9Ub0xpbmUodHJ1ZSwgdHJ1ZSkpO1xuXHRcdFx0XHR0aGlzLnZpZXdGcm9tKG1lc3NhZ2UuZnJvbVRvTGluZShmYWxzZSkpO1xuXHRcdFx0XHR0aGlzLnZpZXdUbyhtZXNzYWdlLnRvVG9MaW5lKGZhbHNlKSk7XG5cdFx0XHRcdHRoaXMudmlld0NjKG1lc3NhZ2UuY2NUb0xpbmUoZmFsc2UpKTtcblx0XHRcdFx0dGhpcy52aWV3QmNjKG1lc3NhZ2UuYmNjVG9MaW5lKGZhbHNlKSk7XG5cdFx0XHRcdHRoaXMudmlld1JlcGx5VG8obWVzc2FnZS5yZXBseVRvVG9MaW5lKGZhbHNlKSk7XG5cdFx0XHRcdHRoaXMudmlld1RpbWVTdGFtcChtZXNzYWdlLmRhdGVUaW1lU3RhbXBJblVUQygpKTtcblx0XHRcdFx0dGhpcy52aWV3U2l6ZShtZXNzYWdlLmZyaWVuZGx5U2l6ZSgpKTtcblx0XHRcdFx0dGhpcy52aWV3TGluZUFzQ3NzKG1lc3NhZ2UubGluZUFzQ3NzKCkpO1xuXHRcdFx0XHR0aGlzLnZpZXdWaWV3TGluayhtZXNzYWdlLnZpZXdMaW5rKCkpO1xuXHRcdFx0XHR0aGlzLnZpZXdVbnN1YnNjcmliZUxpbmsobWVzc2FnZS5nZXRGaXJzdFVuc3Vic3JpYmVMaW5rKCkpO1xuXHRcdFx0XHR0aGlzLnZpZXdEb3dubG9hZExpbmsobWVzc2FnZS5kb3dubG9hZExpbmsoKSk7XG5cdFx0XHRcdHRoaXMudmlld0lzSW1wb3J0YW50KG1lc3NhZ2UuaXNJbXBvcnRhbnQoKSk7XG5cdFx0XHRcdHRoaXMudmlld0lzRmxhZ2dlZChtZXNzYWdlLmZsYWdnZWQoKSk7XG5cblx0XHRcdFx0bGFzdEVtYWlsID0gbWVzc2FnZS5mcm9tQXNTaW5nbGVFbWFpbCgpO1xuXHRcdFx0XHRnZXRVc2VyUGljKGxhc3RFbWFpbCwgKHBpYywgZW1haWwpID0+IHtcblx0XHRcdFx0XHRpZiAocGljICE9PSB0aGlzLnZpZXdVc2VyUGljKCkgJiYgbGFzdEVtYWlsID09PSBlbWFpbCkge1xuXHRcdFx0XHRcdFx0dGhpcy52aWV3VXNlclBpY1Zpc2libGUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0dGhpcy52aWV3VXNlclBpYyhEQVRBX0lNQUdFX1VTRVJfRE9UX1BJQyk7XG5cdFx0XHRcdFx0XHRpZiAoJycgIT09IHBpYykge1xuXHRcdFx0XHRcdFx0XHR0aGlzLnZpZXdVc2VyUGljVmlzaWJsZSh0cnVlKTtcblx0XHRcdFx0XHRcdFx0dGhpcy52aWV3VXNlclBpYyhwaWMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aGlzLnZpZXdGb2xkZXIgPSAnJztcblx0XHRcdFx0dGhpcy52aWV3VWlkID0gJyc7XG5cdFx0XHRcdHRoaXMudmlld0hhc2ggPSAnJztcblxuXHRcdFx0XHR0aGlzLnNjcm9sbE1lc3NhZ2VUb1RvcCgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0dGhpcy5tZXNzYWdlLnZpZXdUcmlnZ2VyLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHRjb25zdCBtZXNzYWdlID0gdGhpcy5tZXNzYWdlKCk7XG5cdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHR0aGlzLnZpZXdJc0ZsYWdnZWQobWVzc2FnZS5mbGFnZ2VkKCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy52aWV3SXNGbGFnZ2VkKGZhbHNlKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMuZnVsbFNjcmVlbk1vZGUuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0JGh0bWwudG9nZ2xlQ2xhc3MoJ3JsLW1lc3NhZ2UtZnVsbHNjcmVlbicsIHZhbHVlKTtcblx0XHRcdHdpbmRvd1Jlc2l6ZSgpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5tZXNzYWdlTG9hZGluZ1Rocm90dGxlLnN1YnNjcmliZSh3aW5kb3dSZXNpemVDYWxsYmFjayk7XG5cblx0XHR0aGlzLm1lc3NhZ2VGb2N1c2VkID0ga28uY29tcHV0ZWQoKCkgPT4gRm9jdXNlZC5NZXNzYWdlVmlldyA9PT0gQXBwU3RvcmUuZm9jdXNlZFN0YXRlKCkpO1xuXG5cdFx0dGhpcy5tZXNzYWdlTGlzdEFuZE1lc3NhZ2VWaWV3TG9hZGluZyA9IGtvLmNvbXB1dGVkKFxuXHRcdFx0KCkgPT4gTWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0Q29tcGxldGVMb2FkaW5nVGhyb3R0bGUoKSB8fCBNZXNzYWdlU3RvcmUubWVzc2FnZUxvYWRpbmdUaHJvdHRsZSgpXG5cdFx0KTtcblxuXHRcdEV2ZW50cy5zdWIoJ21haWxib3gubWVzc2FnZS12aWV3LnRvZ2dsZS1mdWxsLXNjcmVlbicsICgpID0+IHtcblx0XHRcdHRoaXMudG9nZ2xlRnVsbFNjcmVlbigpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5hdHRhY2htZW50UHJldmlldyA9IF8uYmluZCh0aGlzLmF0dGFjaG1lbnRQcmV2aWV3LCB0aGlzKTtcblx0fVxuXG5cdEBjb21tYW5kKClcblx0Y2xvc2VNZXNzYWdlQ29tbWFuZCgpIHtcblx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZShudWxsKTtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiBzZWxmLm1lc3NhZ2VWaXNpYmlsaXR5KCkpXG5cdG1lc3NhZ2VWaXNpYmlsaXR5Q29tbWFuZCgpIHt9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZW1wdHktZnVuY3Rpb25cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gc2VsZi5tZXNzYWdlVmlzaWJpbGl0eSgpKVxuXHRtZXNzYWdlRWRpdENvbW1hbmQoKSB7XG5cdFx0dGhpcy5lZGl0TWVzc2FnZSgpO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLm1lc3NhZ2VMaXN0QW5kTWVzc2FnZVZpZXdMb2FkaW5nKCkpXG5cdGdvVXBDb21tYW5kKCkge1xuXHRcdEV2ZW50cy5wdWIoJ21haWxib3gubWVzc2FnZS1saXN0LnNlbGVjdG9yLmdvLXVwJywgW0xheW91dC5Ob1ByZXZpZXcgPT09IHRoaXMubGF5b3V0KCkgPyAhIXRoaXMubWVzc2FnZSgpIDogdHJ1ZV0pO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLm1lc3NhZ2VMaXN0QW5kTWVzc2FnZVZpZXdMb2FkaW5nKCkpXG5cdGdvRG93bkNvbW1hbmQoKSB7XG5cdFx0RXZlbnRzLnB1YignbWFpbGJveC5tZXNzYWdlLWxpc3Quc2VsZWN0b3IuZ28tZG93bicsIFtMYXlvdXQuTm9QcmV2aWV3ID09PSB0aGlzLmxheW91dCgpID8gISF0aGlzLm1lc3NhZ2UoKSA6IHRydWVdKTtcblx0fVxuXG5cdGRldGVjdERvbUJhY2tncm91bmRDb2xvcihkb20pIHtcblx0XHRsZXQgbGltaXQgPSA1LFxuXHRcdFx0cmVzdWx0ID0gJyc7XG5cblx0XHRjb25zdCBmRmluZERvbSA9IGZ1bmN0aW9uKGlucHV0RG9tKSB7XG5cdFx0XHRcdGNvbnN0IGNoaWxkcmVuID0gaW5wdXREb20gPyBpbnB1dERvbS5jaGlsZHJlbigpIDogbnVsbDtcblx0XHRcdFx0cmV0dXJuIGNoaWxkcmVuICYmIDEgPT09IGNoaWxkcmVuLmxlbmd0aCAmJiBjaGlsZHJlbi5pcygndGFibGUsZGl2LGNlbnRlcicpID8gY2hpbGRyZW4gOiBudWxsO1xuXHRcdFx0fSxcblx0XHRcdGZGaW5kQ29sb3IgPSBmdW5jdGlvbihpbnB1dERvbSkge1xuXHRcdFx0XHRsZXQgY29sb3IgPSAnJztcblx0XHRcdFx0aWYgKGlucHV0RG9tKSB7XG5cdFx0XHRcdFx0Y29sb3IgPSBpbnB1dERvbS5jc3MoJ2JhY2tncm91bmQtY29sb3InKSB8fCAnJztcblx0XHRcdFx0XHRpZiAoIWlucHV0RG9tLmlzKCd0YWJsZScpKSB7XG5cdFx0XHRcdFx0XHRjb2xvciA9IGlzVHJhbnNwYXJlbnQoY29sb3IpID8gJycgOiBjb2xvcjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gY29sb3I7XG5cdFx0XHR9O1xuXG5cdFx0aWYgKGRvbSAmJiAxID09PSBkb20ubGVuZ3RoKSB7XG5cdFx0XHRsZXQgYUMgPSBkb207XG5cdFx0XHR3aGlsZSAoJycgPT09IHJlc3VsdCkge1xuXHRcdFx0XHRsaW1pdCAtPSAxO1xuXHRcdFx0XHRpZiAoMCA+PSBsaW1pdCkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YUMgPSBmRmluZERvbShhQyk7XG5cdFx0XHRcdGlmIChhQykge1xuXHRcdFx0XHRcdHJlc3VsdCA9IGZGaW5kQ29sb3IoYUMpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJlc3VsdCA9IGlzVHJhbnNwYXJlbnQocmVzdWx0KSA/ICcnIDogcmVzdWx0O1xuXHRcdH1cblxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxuXHRmdWxsU2NyZWVuKCkge1xuXHRcdHRoaXMuZnVsbFNjcmVlbk1vZGUodHJ1ZSk7XG5cdFx0d2luZG93UmVzaXplKCk7XG5cdH1cblxuXHR1bkZ1bGxTY3JlZW4oKSB7XG5cdFx0dGhpcy5mdWxsU2NyZWVuTW9kZShmYWxzZSk7XG5cdFx0d2luZG93UmVzaXplKCk7XG5cdH1cblxuXHR0b2dnbGVGdWxsU2NyZWVuKCkge1xuXHRcdHJlbW92ZVNlbGVjdGlvbigpO1xuXG5cdFx0dGhpcy5mdWxsU2NyZWVuTW9kZSghdGhpcy5mdWxsU2NyZWVuTW9kZSgpKTtcblx0XHR3aW5kb3dSZXNpemUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc1R5cGVcblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRyZXBseU9yZm9yd2FyZChzVHlwZSkge1xuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpKSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Db21wb3NlJyksIFtzVHlwZSwgTWVzc2FnZVN0b3JlLm1lc3NhZ2UoKV0pO1xuXHRcdH1cblx0fVxuXG5cdGNoZWNrSGVhZGVySGVpZ2h0KCkge1xuXHRcdGlmICh0aGlzLm9IZWFkZXJEb20pIHtcblx0XHRcdHRoaXMudmlld0JvZHlUb3BWYWx1ZShcblx0XHRcdFx0dGhpcy5tZXNzYWdlKClcblx0XHRcdFx0XHQ/IHRoaXMub0hlYWRlckRvbS5oZWlnaHQoKSArXG5cdFx0XHRcdFx0ICBNYWdpY3MuU2l6ZTIwcHggLyogcGFkZGluZy0odG9wL2JvdHRvbSk6IDIwcHggKi8gK1xuXHRcdFx0XHRcdFx0XHRNYWdpY3MuU2l6ZTFweCAvKiBib3JkZWQtYm90dG9tOiAxcHggKi9cblx0XHRcdFx0XHQ6IDBcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cblx0Ly8gIGRpc3BsYXlNYWlsVG9Qb3B1cChzTWFpbFRvVXJsKSB7XG5cdC8vXHRcdHNNYWlsVG9VcmwgPSBzTWFpbFRvVXJsLnJlcGxhY2UoL1xcPy4rJC8sICcnKTtcblx0Ly9cblx0Ly9cdFx0dmFyXG5cdC8vXHRcdFx0c1Jlc3VsdCA9ICcnLFxuXHQvL1x0XHRcdGFUbyA9IFtdLFxuXHQvL1x0XHRcdEVtYWlsTW9kZWwgPSByZXF1aXJlKCdNb2RlbC9FbWFpbCcpLmRlZmF1bHQsXG5cdC8vXHRcdFx0ZlBhcnNlRW1haWxMaW5lID0gZnVuY3Rpb24oc0xpbmUpIHtcblx0Ly9cdFx0XHRcdHJldHVybiBzTGluZSA/IF8uY29tcGFjdChfLm1hcChbd2luZG93LmRlY29kZVVSSUNvbXBvbmVudChzTGluZSldLCBmdW5jdGlvbihzSXRlbSkge1xuXHQvL1x0XHRcdFx0XHRcdHZhciBvRW1haWxNb2RlbCA9IG5ldyBFbWFpbE1vZGVsKCk7XG5cdC8vXHRcdFx0XHRcdFx0b0VtYWlsTW9kZWwucGFyc2Uoc0l0ZW0pO1xuXHQvL1x0XHRcdFx0XHRcdHJldHVybiAnJyAhPT0gb0VtYWlsTW9kZWwuZW1haWwgPyBvRW1haWxNb2RlbCA6IG51bGw7XG5cdC8vXHRcdFx0XHRcdH0pKSA6IG51bGw7XG5cdC8vXHRcdFx0fVxuXHQvL1x0XHQ7XG5cdC8vXG5cdC8vXHRcdGFUbyA9IGZQYXJzZUVtYWlsTGluZShzTWFpbFRvVXJsKTtcblx0Ly9cdFx0c1Jlc3VsdCA9IGFUbyAmJiBhVG9bMF0gPyBhVG9bMF0uZW1haWwgOiAnJztcblx0Ly9cblx0Ly9cdFx0cmV0dXJuIHNSZXN1bHQ7XG5cdC8vXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBvQXR0YWNobWVudFxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGF0dGFjaG1lbnRQcmV2aWV3KGF0dGFjaG1lbnQpIHtcblx0XHRpZiAoYXR0YWNobWVudCAmJiBhdHRhY2htZW50LmlzSW1hZ2UoKSAmJiAhYXR0YWNobWVudC5pc0xpbmtlZCAmJiB0aGlzLm1lc3NhZ2UoKSAmJiB0aGlzLm1lc3NhZ2UoKS5hdHRhY2htZW50cygpKSB7XG5cdFx0XHRsZXQgaW5kZXggPSAwLFxuXHRcdFx0XHRsaXN0SW5kZXggPSAwO1xuXG5cdFx0XHRjb25zdCBkaXYgPSAkKCc8ZGl2PicpLFxuXHRcdFx0XHRkeW5hbWljRWxzID0gXy5jb21wYWN0KFxuXHRcdFx0XHRcdF8ubWFwKHRoaXMubWVzc2FnZSgpLmF0dGFjaG1lbnRzKCksIChpdGVtKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAoaXRlbSAmJiAhaXRlbS5pc0xpbmtlZCAmJiBpdGVtLmlzSW1hZ2UoKSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoaXRlbSA9PT0gYXR0YWNobWVudCkge1xuXHRcdFx0XHRcdFx0XHRcdGluZGV4ID0gbGlzdEluZGV4O1xuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0bGlzdEluZGV4ICs9IDE7XG5cblx0XHRcdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdFx0XHRzcmM6IGl0ZW0ubGlua1ByZXZpZXcoKSxcblx0XHRcdFx0XHRcdFx0XHR0aHVtYjogaXRlbS5saW5rVGh1bWJuYWlsKCksXG5cdFx0XHRcdFx0XHRcdFx0c3ViSHRtbDogaXRlbS5maWxlTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRkb3dubG9hZFVybDogaXRlbS5saW5rUHJldmlldygpXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cblx0XHRcdGlmICgwIDwgZHluYW1pY0Vscy5sZW5ndGgpIHtcblx0XHRcdFx0ZGl2Lm9uKCdvbkJlZm9yZU9wZW4ubGcnLCAoKSA9PiB7XG5cdFx0XHRcdFx0dXNlS2V5Ym9hcmRTaG9ydGN1dHMoZmFsc2UpO1xuXHRcdFx0XHRcdHJlbW92ZUluRm9jdXModHJ1ZSk7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdGRpdi5vbignb25DbG9zZUFmdGVyLmxnJywgKCkgPT4ge1xuXHRcdFx0XHRcdHVzZUtleWJvYXJkU2hvcnRjdXRzKHRydWUpO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0XHRkaXYubGlnaHRHYWxsZXJ5KHtcblx0XHRcdFx0XHRkeW5hbWljOiB0cnVlLFxuXHRcdFx0XHRcdGxvYWRZb3V0dWJlVGh1bWJuYWlsOiBmYWxzZSxcblx0XHRcdFx0XHRsb2FkVmltZW9UaHVtYm5haWw6IGZhbHNlLFxuXHRcdFx0XHRcdHRodW1iV2lkdGg6IDgwLFxuXHRcdFx0XHRcdHRodW1iQ29udEhlaWdodDogOTUsXG5cdFx0XHRcdFx0c2hvd1RodW1iQnlEZWZhdWx0OiBmYWxzZSxcblx0XHRcdFx0XHRtb2RlOiAnbGctbG9sbGlwb3AnLCAvLyAnbGctc2xpZGUnLFxuXHRcdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0XHRkeW5hbWljRWw6IGR5bmFtaWNFbHNcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdG9uQnVpbGQoZG9tKSB7XG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXMsXG5cdFx0XHRmQ2hlY2tIZWFkZXJIZWlnaHQgPSBfLmJpbmQodGhpcy5jaGVja0hlYWRlckhlaWdodCwgdGhpcyk7XG5cblx0XHR0aGlzLm9Eb20gPSBkb207XG5cblx0XHR0aGlzLmZ1bGxTY3JlZW5Nb2RlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSAmJiB0aGlzLm1lc3NhZ2UoKSkge1xuXHRcdFx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5NZXNzYWdlVmlldyk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNob3dBdHRhY2htbmV0Q29udHJvbHMuc3Vic2NyaWJlKGZDaGVja0hlYWRlckhlaWdodCk7XG5cdFx0dGhpcy5mdWxsU2NyZWVuTW9kZS5zdWJzY3JpYmUoZkNoZWNrSGVhZGVySGVpZ2h0KTtcblx0XHR0aGlzLnNob3dGdWxsSW5mby5zdWJzY3JpYmUoZkNoZWNrSGVhZGVySGVpZ2h0KTtcblx0XHR0aGlzLm1lc3NhZ2Uuc3Vic2NyaWJlKGZDaGVja0hlYWRlckhlaWdodCk7XG5cblx0XHRFdmVudHMuc3ViKFxuXHRcdFx0J3dpbmRvdy5yZXNpemUnLFxuXHRcdFx0Xy50aHJvdHRsZSgoKSA9PiB7XG5cdFx0XHRcdF8uZGVsYXkoZkNoZWNrSGVhZGVySGVpZ2h0LCAxKTtcblx0XHRcdFx0Xy5kZWxheShmQ2hlY2tIZWFkZXJIZWlnaHQsIE1hZ2ljcy5UaW1lMjAwbXMpO1xuXHRcdFx0XHRfLmRlbGF5KGZDaGVja0hlYWRlckhlaWdodCwgTWFnaWNzLlRpbWU1MDBtcyk7XG5cdFx0XHR9LCBNYWdpY3MuVGltZTUwbXMpXG5cdFx0KTtcblxuXHRcdHRoaXMuc2hvd0Z1bGxJbmZvLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdHdpbmRvd1Jlc2l6ZSgpO1xuXHRcdFx0d2luZG93UmVzaXplKE1hZ2ljcy5UaW1lMjAwbXMpO1xuXHRcdFx0TG9jYWwuc2V0KENsaWVudFNpZGVLZXlOYW1lLk1lc3NhZ2VIZWFkZXJGdWxsSW5mbywgdmFsdWUgPyAnMScgOiAnMCcpO1xuXHRcdH0pO1xuXG5cdFx0U29jaWFsU3RvcmUuYXBwZW5kRHJvcGJveCgpO1xuXG5cdFx0dGhpcy5vSGVhZGVyRG9tID0gJCgnLm1lc3NhZ2VJdGVtSGVhZGVyJywgZG9tKTtcblx0XHR0aGlzLm9IZWFkZXJEb20gPSB0aGlzLm9IZWFkZXJEb21bMF0gPyB0aGlzLm9IZWFkZXJEb20gOiBudWxsO1xuXG5cdFx0aWYgKHRoaXMubW9iaWxlKSB7XG5cdFx0XHRkb20ub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRsZWZ0UGFuZWxEaXNhYmxlZCh0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGRvbVxuXHRcdFx0Lm9uKCdjbGljaycsICdhJywgZnVuY3Rpb24oZXZlbnQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdFx0Ly8gc2V0dXAgbWFpdG8gcHJvdG9jb2xcblx0XHRcdFx0cmV0dXJuICEoXG5cdFx0XHRcdFx0ISFldmVudCAmJlxuXHRcdFx0XHRcdE1hZ2ljcy5FdmVudFdoaWNoTW91c2VNaWRkbGUgIT09IGV2ZW50LndoaWNoICYmXG5cdFx0XHRcdFx0bWFpbFRvSGVscGVyKFxuXHRcdFx0XHRcdFx0JCh0aGlzKS5hdHRyKCdocmVmJyksXG5cdFx0XHRcdFx0XHRTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpID8gcmVxdWlyZSgnVmlldy9Qb3B1cC9Db21wb3NlJykgOiBudWxsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpO1xuXHRcdFx0fSlcblx0XHRcdC5vbignY2xpY2snLCAnLmF0dGFjaG1lbnRzUGxhY2UgLmF0dGFjaG1lbnRJY29uUGFyZW50JywgKGV2ZW50KSA9PiB7XG5cdFx0XHRcdGlmIChldmVudCAmJiBldmVudC5zdG9wUHJvcGFnYXRpb24pIHtcblx0XHRcdFx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5vbignY2xpY2snLCAnLmF0dGFjaG1lbnRzUGxhY2UgLnNob3dQcmVwbGF5JywgZnVuY3Rpb24oZXZlbnQpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdFx0aWYgKGV2ZW50ICYmIGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuXHRcdFx0XHRcdGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0Y29uc3QgYXR0YWNobWVudCA9IGtvLmRhdGFGb3IodGhpcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHRcdGlmIChhdHRhY2htZW50ICYmIEF1ZGlvLnN1cHBvcnRlZCkge1xuXHRcdFx0XHRcdHN3aXRjaCAodHJ1ZSkge1xuXHRcdFx0XHRcdFx0Y2FzZSBBdWRpby5zdXBwb3J0ZWRNcDMgJiYgYXR0YWNobWVudC5pc01wMygpOlxuXHRcdFx0XHRcdFx0XHRBdWRpby5wbGF5TXAzKGF0dGFjaG1lbnQubGlua0Rvd25sb2FkKCksIGF0dGFjaG1lbnQuZmlsZU5hbWUpO1xuXHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdGNhc2UgQXVkaW8uc3VwcG9ydGVkT2dnICYmIGF0dGFjaG1lbnQuaXNPZ2coKTpcblx0XHRcdFx0XHRcdFx0QXVkaW8ucGxheU9nZyhhdHRhY2htZW50LmxpbmtEb3dubG9hZCgpLCBhdHRhY2htZW50LmZpbGVOYW1lKTtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRjYXNlIEF1ZGlvLnN1cHBvcnRlZFdhdiAmJiBhdHRhY2htZW50LmlzV2F2KCk6XG5cdFx0XHRcdFx0XHRcdEF1ZGlvLnBsYXlXYXYoYXR0YWNobWVudC5saW5rRG93bmxvYWQoKSwgYXR0YWNobWVudC5maWxlTmFtZSk7XG5cdFx0XHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC5vbignY2xpY2snLCAnLmF0dGFjaG1lbnRzUGxhY2UgLmF0dGFjaG1lbnRJdGVtIC5hdHRhY2htZW50TmFtZVBhcmVudCcsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0XHRjb25zdCBhdHRhY2htZW50ID0ga28uZGF0YUZvcih0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0aWYgKGF0dGFjaG1lbnQgJiYgYXR0YWNobWVudC5kb3dubG9hZCkge1xuXHRcdFx0XHRcdGdldEFwcCgpLmRvd25sb2FkKGF0dGFjaG1lbnQubGlua0Rvd25sb2FkKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdjbGljaycsICcubWVzc2FnZUl0ZW1IZWFkZXIgLnN1YmplY3RQYXJlbnQgLmZsYWdQYXJlbnQnLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IHNlbGYubWVzc2FnZSgpO1xuXHRcdFx0XHRpZiAobWVzc2FnZSkge1xuXHRcdFx0XHRcdGdldEFwcCgpLm1lc3NhZ2VMaXN0QWN0aW9uKFxuXHRcdFx0XHRcdFx0bWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdyxcblx0XHRcdFx0XHRcdG1lc3NhZ2UuZmxhZ2dlZCgpID8gTWVzc2FnZVNldEFjdGlvbi5VbnNldEZsYWcgOiBNZXNzYWdlU2V0QWN0aW9uLlNldEZsYWcsXG5cdFx0XHRcdFx0XHRbbWVzc2FnZV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdjbGljaycsICcudGhyZWFkLWxpc3QgLmZsYWdQYXJlbnQnLCBmdW5jdGlvbigpIHtcblx0XHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdFx0Y29uc3QgbWVzc2FnZSA9IGtvLmRhdGFGb3IodGhpcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHRcdGlmIChtZXNzYWdlICYmIG1lc3NhZ2UuZm9sZGVyICYmIG1lc3NhZ2UudWlkKSB7XG5cdFx0XHRcdFx0Z2V0QXBwKCkubWVzc2FnZUxpc3RBY3Rpb24oXG5cdFx0XHRcdFx0XHRtZXNzYWdlLmZvbGRlcixcblx0XHRcdFx0XHRcdG1lc3NhZ2UuZmxhZ2dlZCgpID8gTWVzc2FnZVNldEFjdGlvbi5VbnNldEZsYWcgOiBNZXNzYWdlU2V0QWN0aW9uLlNldEZsYWcsXG5cdFx0XHRcdFx0XHRbbWVzc2FnZV1cblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0c2VsZi50aHJlYWRzRHJvcGRvd25UcmlnZ2VyKHRydWUpO1xuXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pO1xuXG5cdFx0QXBwU3RvcmUuZm9jdXNlZFN0YXRlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmIChGb2N1c2VkLk1lc3NhZ2VWaWV3ICE9PSB2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLnNjcm9sbE1lc3NhZ2VUb1RvcCgpO1xuXHRcdFx0XHR0aGlzLnNjcm9sbE1lc3NhZ2VUb0xlZnQoKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdGtleVNjb3BlUmVhbC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHR0aGlzLm1lc3NhZ2VEb21Gb2N1c2VkKEtleVN0YXRlLk1lc3NhZ2VWaWV3ID09PSB2YWx1ZSAmJiAhaW5Gb2N1cygpKTtcblx0XHR9KTtcblxuXHRcdHRoaXMub01lc3NhZ2VTY3JvbGxlckRvbSA9IGRvbS5maW5kKCcubWVzc2FnZUl0ZW0gLmNvbnRlbnQnKTtcblx0XHR0aGlzLm9NZXNzYWdlU2Nyb2xsZXJEb20gPVxuXHRcdFx0dGhpcy5vTWVzc2FnZVNjcm9sbGVyRG9tICYmIHRoaXMub01lc3NhZ2VTY3JvbGxlckRvbVswXSA/IHRoaXMub01lc3NhZ2VTY3JvbGxlckRvbSA6IG51bGw7XG5cblx0XHR0aGlzLmluaXRTaG9ydGN1dHMoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGVzY1Nob3J0Y3V0cygpIHtcblx0XHRpZiAodGhpcy52aWV3TW9kZWxWaXNpYmlsaXR5KCkgJiYgdGhpcy5tZXNzYWdlKCkpIHtcblx0XHRcdGlmICh0aGlzLmZ1bGxTY3JlZW5Nb2RlKCkpIHtcblx0XHRcdFx0dGhpcy5mdWxsU2NyZWVuTW9kZShmYWxzZSk7XG5cblx0XHRcdFx0aWYgKExheW91dC5Ob1ByZXZpZXcgIT09IHRoaXMubGF5b3V0KCkpIHtcblx0XHRcdFx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5NZXNzYWdlTGlzdCk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoTGF5b3V0Lk5vUHJldmlldyA9PT0gdGhpcy5sYXlvdXQoKSkge1xuXHRcdFx0XHR0aGlzLm1lc3NhZ2UobnVsbCk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRBcHBTdG9yZS5mb2N1c2VkU3RhdGUoRm9jdXNlZC5NZXNzYWdlTGlzdCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdGluaXRTaG9ydGN1dHMoKSB7XG5cdFx0Ly8gZXhpdCBmdWxsc2NyZWVuLCBiYWNrXG5cdFx0a2V5KCdlc2MsIGJhY2tzcGFjZScsIEtleVN0YXRlLk1lc3NhZ2VWaWV3LCBfLmJpbmQodGhpcy5lc2NTaG9ydGN1dHMsIHRoaXMpKTtcblxuXHRcdC8vIGZ1bGxzY3JlZW5cblx0XHRrZXkoJ2VudGVyJywgS2V5U3RhdGUuTWVzc2FnZVZpZXcsICgpID0+IHtcblx0XHRcdHRoaXMudG9nZ2xlRnVsbFNjcmVlbigpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0Ly8gcmVwbHlcblx0XHRrZXkoJ3InLCBbS2V5U3RhdGUuTWVzc2FnZUxpc3QsIEtleVN0YXRlLk1lc3NhZ2VWaWV3XSwgKCkgPT4ge1xuXHRcdFx0aWYgKE1lc3NhZ2VTdG9yZS5tZXNzYWdlKCkpIHtcblx0XHRcdFx0dGhpcy5yZXBseUNvbW1hbmQoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9KTtcblxuXHRcdC8vIHJlcGxhQWxsXG5cdFx0a2V5KCdhJywgW0tleVN0YXRlLk1lc3NhZ2VMaXN0LCBLZXlTdGF0ZS5NZXNzYWdlVmlld10sICgpID0+IHtcblx0XHRcdGlmIChNZXNzYWdlU3RvcmUubWVzc2FnZSgpKSB7XG5cdFx0XHRcdHRoaXMucmVwbHlBbGxDb21tYW5kKCk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSk7XG5cblx0XHQvLyBmb3J3YXJkXG5cdFx0a2V5KCdmJywgW0tleVN0YXRlLk1lc3NhZ2VMaXN0LCBLZXlTdGF0ZS5NZXNzYWdlVmlld10sICgpID0+IHtcblx0XHRcdGlmIChNZXNzYWdlU3RvcmUubWVzc2FnZSgpKSB7XG5cdFx0XHRcdHRoaXMuZm9yd2FyZENvbW1hbmQoKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9KTtcblxuXHRcdC8vIG1lc3NhZ2UgaW5mb3JtYXRpb25cblx0XHRrZXkoJ2N0cmwraSwgY29tbWFuZCtpJywgW0tleVN0YXRlLk1lc3NhZ2VMaXN0LCBLZXlTdGF0ZS5NZXNzYWdlVmlld10sICgpID0+IHtcblx0XHRcdGlmIChNZXNzYWdlU3RvcmUubWVzc2FnZSgpKSB7XG5cdFx0XHRcdHRoaXMuc2hvd0Z1bGxJbmZvKCF0aGlzLnNob3dGdWxsSW5mbygpKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdC8vIHRvZ2dsZSBtZXNzYWdlIGJsb2NrcXVvdGVzXG5cdFx0a2V5KCdiJywgW0tleVN0YXRlLk1lc3NhZ2VMaXN0LCBLZXlTdGF0ZS5NZXNzYWdlVmlld10sICgpID0+IHtcblx0XHRcdGlmIChNZXNzYWdlU3RvcmUubWVzc2FnZSgpICYmIE1lc3NhZ2VTdG9yZS5tZXNzYWdlKCkuYm9keSkge1xuXHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZSgpXG5cdFx0XHRcdFx0LmJvZHkuZmluZCgnLnJsQmxvY2txdW90ZVN3aXRjaGVyJylcblx0XHRcdFx0XHQuY2xpY2soKTtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9KTtcblxuXHRcdGtleSgnY3RybCt1cCwgY29tbWFuZCt1cCwgY3RybCtsZWZ0LCBjb21tYW5kK2xlZnQnLCBbS2V5U3RhdGUuTWVzc2FnZUxpc3QsIEtleVN0YXRlLk1lc3NhZ2VWaWV3XSwgKCkgPT4ge1xuXHRcdFx0dGhpcy5nb1VwQ29tbWFuZCgpO1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0a2V5KCdjdHJsK2Rvd24sIGNvbW1hbmQrZG93biwgY3RybCtyaWdodCwgY29tbWFuZCtyaWdodCcsIFtLZXlTdGF0ZS5NZXNzYWdlTGlzdCwgS2V5U3RhdGUuTWVzc2FnZVZpZXddLCAoKSA9PiB7XG5cdFx0XHR0aGlzLmdvRG93bkNvbW1hbmQoKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdC8vIHByaW50XG5cdFx0a2V5KCdjdHJsK3AsIGNvbW1hbmQrcCcsIFtLZXlTdGF0ZS5NZXNzYWdlVmlldywgS2V5U3RhdGUuTWVzc2FnZUxpc3RdLCAoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5tZXNzYWdlKCkpIHtcblx0XHRcdFx0dGhpcy5tZXNzYWdlKCkucHJpbnRNZXNzYWdlKCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblxuXHRcdC8vIGRlbGV0ZVxuXHRcdGtleSgnZGVsZXRlLCBzaGlmdCtkZWxldGUnLCBLZXlTdGF0ZS5NZXNzYWdlVmlldywgKGV2ZW50LCBoYW5kbGVyKSA9PiB7XG5cdFx0XHRpZiAoZXZlbnQpIHtcblx0XHRcdFx0aWYgKGhhbmRsZXIgJiYgJ3NoaWZ0K2RlbGV0ZScgPT09IGhhbmRsZXIuc2hvcnRjdXQpIHtcblx0XHRcdFx0XHR0aGlzLmRlbGV0ZVdpdGhvdXRNb3ZlQ29tbWFuZCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuZGVsZXRlQ29tbWFuZCgpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9KTtcblxuXHRcdC8vIGNoYW5nZSBmb2N1c2VkIHN0YXRlXG5cdFx0a2V5KCd0YWIsIHNoaWZ0K3RhYiwgbGVmdCcsIEtleVN0YXRlLk1lc3NhZ2VWaWV3LCAoZXZlbnQsIGhhbmRsZXIpID0+IHtcblx0XHRcdGlmICghdGhpcy5mdWxsU2NyZWVuTW9kZSgpICYmIHRoaXMubWVzc2FnZSgpICYmIExheW91dC5Ob1ByZXZpZXcgIT09IHRoaXMubGF5b3V0KCkpIHtcblx0XHRcdFx0aWYgKGV2ZW50ICYmIGhhbmRsZXIgJiYgJ2xlZnQnID09PSBoYW5kbGVyLnNob3J0Y3V0KSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMub01lc3NhZ2VTY3JvbGxlckRvbSAmJiAwIDwgdGhpcy5vTWVzc2FnZVNjcm9sbGVyRG9tLnNjcm9sbExlZnQoKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0QXBwU3RvcmUuZm9jdXNlZFN0YXRlKEZvY3VzZWQuTWVzc2FnZUxpc3QpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdEFwcFN0b3JlLmZvY3VzZWRTdGF0ZShGb2N1c2VkLk1lc3NhZ2VMaXN0KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChcblx0XHRcdFx0dGhpcy5tZXNzYWdlKCkgJiZcblx0XHRcdFx0TGF5b3V0Lk5vUHJldmlldyA9PT0gdGhpcy5sYXlvdXQoKSAmJlxuXHRcdFx0XHRldmVudCAmJlxuXHRcdFx0XHRoYW5kbGVyICYmXG5cdFx0XHRcdCdsZWZ0JyA9PT0gaGFuZGxlci5zaG9ydGN1dFxuXHRcdFx0KSB7XG5cdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc0RyYWZ0Rm9sZGVyKCkge1xuXHRcdHJldHVybiBNZXNzYWdlU3RvcmUubWVzc2FnZSgpICYmIEZvbGRlclN0b3JlLmRyYWZ0Rm9sZGVyKCkgPT09IE1lc3NhZ2VTdG9yZS5tZXNzYWdlKCkuZm9sZGVyRnVsbE5hbWVSYXc7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc1NlbnRGb2xkZXIoKSB7XG5cdFx0cmV0dXJuIE1lc3NhZ2VTdG9yZS5tZXNzYWdlKCkgJiYgRm9sZGVyU3RvcmUuc2VudEZvbGRlcigpID09PSBNZXNzYWdlU3RvcmUubWVzc2FnZSgpLmZvbGRlckZ1bGxOYW1lUmF3O1xuXHR9XG5cblx0LyoqXG5cdCAqIEByZXR1cm5zIHtib29sZWFufVxuXHQgKi9cblx0aXNTcGFtRm9sZGVyKCkge1xuXHRcdHJldHVybiBNZXNzYWdlU3RvcmUubWVzc2FnZSgpICYmIEZvbGRlclN0b3JlLnNwYW1Gb2xkZXIoKSA9PT0gTWVzc2FnZVN0b3JlLm1lc3NhZ2UoKS5mb2xkZXJGdWxsTmFtZVJhdztcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGlzU3BhbURpc2FibGVkKCkge1xuXHRcdHJldHVybiBNZXNzYWdlU3RvcmUubWVzc2FnZSgpICYmIEZvbGRlclN0b3JlLnNwYW1Gb2xkZXIoKSA9PT0gVU5VU0VEX09QVElPTl9WQUxVRTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcmV0dXJucyB7Ym9vbGVhbn1cblx0ICovXG5cdGlzQXJjaGl2ZUZvbGRlcigpIHtcblx0XHRyZXR1cm4gTWVzc2FnZVN0b3JlLm1lc3NhZ2UoKSAmJiBGb2xkZXJTdG9yZS5hcmNoaXZlRm9sZGVyKCkgPT09IE1lc3NhZ2VTdG9yZS5tZXNzYWdlKCkuZm9sZGVyRnVsbE5hbWVSYXc7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc0FyY2hpdmVEaXNhYmxlZCgpIHtcblx0XHRyZXR1cm4gTWVzc2FnZVN0b3JlLm1lc3NhZ2UoKSAmJiBGb2xkZXJTdG9yZS5hcmNoaXZlRm9sZGVyKCkgPT09IFVOVVNFRF9PUFRJT05fVkFMVUU7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge2Jvb2xlYW59XG5cdCAqL1xuXHRpc0RyYWZ0T3JTZW50Rm9sZGVyKCkge1xuXHRcdHJldHVybiB0aGlzLmlzRHJhZnRGb2xkZXIoKSB8fCB0aGlzLmlzU2VudEZvbGRlcigpO1xuXHR9XG5cblx0Y29tcG9zZUNsaWNrKCkge1xuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpKSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Db21wb3NlJykpO1xuXHRcdH1cblx0fVxuXG5cdGVkaXRNZXNzYWdlKCkge1xuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQ29tcG9zZXIpICYmIE1lc3NhZ2VTdG9yZS5tZXNzYWdlKCkpIHtcblx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0NvbXBvc2UnKSwgW0NvbXBvc2VUeXBlLkRyYWZ0LCBNZXNzYWdlU3RvcmUubWVzc2FnZSgpXSk7XG5cdFx0fVxuXHR9XG5cblx0c2Nyb2xsTWVzc2FnZVRvVG9wKCkge1xuXHRcdGlmICh0aGlzLm9NZXNzYWdlU2Nyb2xsZXJEb20pIHtcblx0XHRcdGlmIChNYWdpY3MuU2l6ZTUwcHggPCB0aGlzLm9NZXNzYWdlU2Nyb2xsZXJEb20uc2Nyb2xsVG9wKCkpIHtcblx0XHRcdFx0dGhpcy5vTWVzc2FnZVNjcm9sbGVyRG9tLnNjcm9sbFRvcChNYWdpY3MuU2l6ZTUwcHgpLmFuaW1hdGUoeyAnc2Nyb2xsVG9wJzogMCB9LCBNYWdpY3MuVGltZTIwMG1zKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMub01lc3NhZ2VTY3JvbGxlckRvbS5zY3JvbGxUb3AoMCk7XG5cdFx0XHR9XG5cblx0XHRcdHdpbmRvd1Jlc2l6ZSgpO1xuXHRcdH1cblx0fVxuXG5cdHNjcm9sbE1lc3NhZ2VUb0xlZnQoKSB7XG5cdFx0aWYgKHRoaXMub01lc3NhZ2VTY3JvbGxlckRvbSkge1xuXHRcdFx0dGhpcy5vTWVzc2FnZVNjcm9sbGVyRG9tLnNjcm9sbExlZnQoMCk7XG5cdFx0XHR3aW5kb3dSZXNpemUoKTtcblx0XHR9XG5cdH1cblxuXHRnZXRBdHRhY2htZW50c0hhc2hlcygpIHtcblx0XHRjb25zdCBhdHRzID0gdGhpcy5tZXNzYWdlKCkgPyB0aGlzLm1lc3NhZ2UoKS5hdHRhY2htZW50cygpIDogW107XG5cdFx0cmV0dXJuIF8uY29tcGFjdChfLm1hcChhdHRzLCAoaXRlbSkgPT4gKGl0ZW0gJiYgIWl0ZW0uaXNMaW5rZWQgJiYgaXRlbS5jaGVja2VkKCkgPyBpdGVtLmRvd25sb2FkIDogJycpKSk7XG5cdH1cblxuXHRkb3dubG9hZEFzWmlwKCkge1xuXHRcdGNvbnN0IGhhc2hlcyA9IHRoaXMuZ2V0QXR0YWNobWVudHNIYXNoZXMoKTtcblx0XHRpZiAoMCA8IGhhc2hlcy5sZW5ndGgpIHtcblx0XHRcdFByb21pc2VzLmF0dGFjaG1lbnRzQWN0aW9ucygnWmlwJywgaGFzaGVzLCB0aGlzLmRvd25sb2FkQXNaaXBMb2FkaW5nKVxuXHRcdFx0XHQudGhlbigocmVzdWx0KSA9PiB7XG5cdFx0XHRcdFx0aWYgKHJlc3VsdCAmJiByZXN1bHQuUmVzdWx0ICYmIHJlc3VsdC5SZXN1bHQuRmlsZXMgJiYgcmVzdWx0LlJlc3VsdC5GaWxlc1swXSAmJiByZXN1bHQuUmVzdWx0LkZpbGVzWzBdLkhhc2gpIHtcblx0XHRcdFx0XHRcdGdldEFwcCgpLmRvd25sb2FkKGF0dGFjaG1lbnREb3dubG9hZChyZXN1bHQuUmVzdWx0LkZpbGVzWzBdLkhhc2gpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5kb3dubG9hZEFzWmlwRXJyb3IodHJ1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZG93bmxvYWRBc1ppcEVycm9yKHRydWUpO1xuXHRcdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5oaWdobGlnaHRVbnNlbGVjdGVkQXR0YWNobWVudHModHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0c2F2ZVRvT3duQ2xvdWQoKSB7XG5cdFx0Y29uc3QgaGFzaGVzID0gdGhpcy5nZXRBdHRhY2htZW50c0hhc2hlcygpO1xuXHRcdGlmICgwIDwgaGFzaGVzLmxlbmd0aCkge1xuXHRcdFx0UHJvbWlzZXMuYXR0YWNobWVudHNBY3Rpb25zKCdPd25DbG91ZCcsIGhhc2hlcywgdGhpcy5zYXZlVG9Pd25DbG91ZExvYWRpbmcpXG5cdFx0XHRcdC50aGVuKChyZXN1bHQpID0+IHtcblx0XHRcdFx0XHRpZiAocmVzdWx0ICYmIHJlc3VsdC5SZXN1bHQpIHtcblx0XHRcdFx0XHRcdHRoaXMuc2F2ZVRvT3duQ2xvdWRTdWNjZXNzKHRydWUpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR0aGlzLnNhdmVUb093bkNsb3VkRXJyb3IodHJ1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuc2F2ZVRvT3duQ2xvdWRFcnJvcih0cnVlKTtcblx0XHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuaGlnaGxpZ2h0VW5zZWxlY3RlZEF0dGFjaG1lbnRzKHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdHNhdmVUb0Ryb3Bib3goKSB7XG5cdFx0Y29uc3QgZmlsZXMgPSBbXSxcblx0XHRcdGhhc2hlcyA9IHRoaXMuZ2V0QXR0YWNobWVudHNIYXNoZXMoKTtcblxuXHRcdGlmICgwIDwgaGFzaGVzLmxlbmd0aCkge1xuXHRcdFx0aWYgKHdpbmRvdy5Ecm9wYm94KSB7XG5cdFx0XHRcdFByb21pc2VzLmF0dGFjaG1lbnRzQWN0aW9ucygnRHJvcGJveCcsIGhhc2hlcywgdGhpcy5zYXZlVG9Ecm9wYm94TG9hZGluZylcblx0XHRcdFx0XHQudGhlbigocmVzdWx0KSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzdWx0ICYmIHJlc3VsdC5SZXN1bHQgJiYgcmVzdWx0LlJlc3VsdC5VcmwgJiYgcmVzdWx0LlJlc3VsdC5TaG9ydExpZmUgJiYgcmVzdWx0LlJlc3VsdC5GaWxlcykge1xuXHRcdFx0XHRcdFx0XHRpZiAod2luZG93LkRyb3Bib3ggJiYgaXNBcnJheShyZXN1bHQuUmVzdWx0LkZpbGVzKSkge1xuXHRcdFx0XHRcdFx0XHRcdF8uZWFjaChyZXN1bHQuUmVzdWx0LkZpbGVzLCAoaXRlbSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmlsZXMucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHVybDogcmVzdWx0LlJlc3VsdC5VcmwgKyBhdHRhY2htZW50RG93bmxvYWQoaXRlbS5IYXNoLCByZXN1bHQuUmVzdWx0LlNob3J0TGlmZSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZpbGVuYW1lOiBpdGVtLkZpbGVOYW1lXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0XHRcdHdpbmRvdy5Ecm9wYm94LnNhdmUoe1xuXHRcdFx0XHRcdFx0XHRcdFx0ZmlsZXM6IGZpbGVzLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvZ3Jlc3M6ICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlVG9Ecm9wYm94TG9hZGluZyh0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlVG9Ecm9wYm94RXJyb3IoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNhdmVUb0Ryb3Bib3hTdWNjZXNzKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRjYW5jZWw6ICgpID0+IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlVG9Ecm9wYm94U3VjY2VzcyhmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuc2F2ZVRvRHJvcGJveEVycm9yKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlVG9Ecm9wYm94TG9hZGluZyhmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0XHRcdFx0c3VjY2VzczogKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNhdmVUb0Ryb3Bib3hTdWNjZXNzKHRydWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNhdmVUb0Ryb3Bib3hMb2FkaW5nKGZhbHNlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRlcnJvcjogKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLnNhdmVUb0Ryb3Bib3hFcnJvcih0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlVG9Ecm9wYm94TG9hZGluZyhmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zYXZlVG9Ecm9wYm94RXJyb3IodHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLnNhdmVUb0Ryb3Bib3hFcnJvcih0cnVlKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5oaWdobGlnaHRVbnNlbGVjdGVkQXR0YWNobWVudHModHJ1ZSk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7TWVzc2FnZU1vZGVsfSBvTWVzc2FnZVxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdHNob3dJbWFnZXMobWVzc2FnZSkge1xuXHRcdGlmIChtZXNzYWdlICYmIG1lc3NhZ2Uuc2hvd0V4dGVybmFsSW1hZ2VzKSB7XG5cdFx0XHRtZXNzYWdlLnNob3dFeHRlcm5hbEltYWdlcyh0cnVlKTtcblx0XHR9XG5cblx0XHR0aGlzLmNoZWNrSGVhZGVySGVpZ2h0KCk7XG5cdH1cblxuXHQvKipcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdHByaW50YWJsZUNoZWNrZWRNZXNzYWdlQ291bnQoKSB7XG5cdFx0Y29uc3QgY250ID0gdGhpcy5tZXNzYWdlTGlzdENoZWNrZWRPclNlbGVjdGVkVWlkc1dpdGhTdWJNYWlscygpLmxlbmd0aDtcblx0XHRyZXR1cm4gMCA8IGNudCA/ICgxMDAgPiBjbnQgPyBjbnQgOiAnOTkrJykgOiAnJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1tYWdpYy1udW1iZXJzXG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtNZXNzYWdlTW9kZWx9IG9NZXNzYWdlXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0cmVhZFJlY2VpcHQob01lc3NhZ2UpIHtcblx0XHRpZiAob01lc3NhZ2UgJiYgJycgIT09IG9NZXNzYWdlLnJlYWRSZWNlaXB0KCkpIHtcblx0XHRcdFJlbW90ZS5zZW5kUmVhZFJlY2VpcHRNZXNzYWdlKFxuXHRcdFx0XHRub29wLFxuXHRcdFx0XHRvTWVzc2FnZS5mb2xkZXJGdWxsTmFtZVJhdyxcblx0XHRcdFx0b01lc3NhZ2UudWlkLFxuXHRcdFx0XHRvTWVzc2FnZS5yZWFkUmVjZWlwdCgpLFxuXHRcdFx0XHRpMThuKCdSRUFEX1JFQ0VJUFQvU1VCSkVDVCcsIHsgJ1NVQkpFQ1QnOiBvTWVzc2FnZS5zdWJqZWN0KCkgfSksXG5cdFx0XHRcdGkxOG4oJ1JFQURfUkVDRUlQVC9CT0RZJywgeyAnUkVBRC1SRUNFSVBUJzogQWNjb3VudFN0b3JlLmVtYWlsKCkgfSlcblx0XHRcdCk7XG5cblx0XHRcdG9NZXNzYWdlLmlzUmVhZFJlY2VpcHQodHJ1ZSk7XG5cblx0XHRcdHN0b3JlTWVzc2FnZUZsYWdzVG9DYWNoZShvTWVzc2FnZSk7XG5cblx0XHRcdGdldEFwcCgpLnJlbG9hZEZsYWdzQ3VycmVudE1lc3NhZ2VMaXN0QW5kTWVzc2FnZUZyb21DYWNoZSgpO1xuXHRcdH1cblxuXHRcdHRoaXMuY2hlY2tIZWFkZXJIZWlnaHQoKTtcblx0fVxufVxuXG5leHBvcnQgeyBNZXNzYWdlVmlld01haWxCb3hVc2VyVmlldywgTWVzc2FnZVZpZXdNYWlsQm94VXNlclZpZXcgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IHsgQ2FwYSwgS2V5U3RhdGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsga2V5U2NvcGUsIGxlZnRQYW5lbFR5cGUsIGxlZnRQYW5lbERpc2FibGVkIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuaW1wb3J0IHsgcnVuU2V0dGluZ3NWaWV3TW9kZWxIb29rcyB9IGZyb20gJ0NvbW1vbi9QbHVnaW5zJztcbmltcG9ydCB7IGluaXRPblN0YXJ0T3JMYW5nQ2hhbmdlLCBpMThuIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5pbXBvcnQgQXBwU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQXBwJztcbmltcG9ydCBBY2NvdW50U3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQWNjb3VudCc7XG5cbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuaW1wb3J0IHsgYWRkU2V0dGluZ3NWaWV3TW9kZWwgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5cbmltcG9ydCB7IEFic3RyYWN0U2V0dGluZ3NTY3JlZW4gfSBmcm9tICdTY3JlZW4vQWJzdHJhY3RTZXR0aW5ncyc7XG5cbmltcG9ydCB7IEdlbmVyYWxVc2VyU2V0dGluZ3MgfSBmcm9tICdTZXR0aW5ncy9Vc2VyL0dlbmVyYWwnO1xuaW1wb3J0IHsgQ29udGFjdHNVc2VyU2V0dGluZ3MgfSBmcm9tICdTZXR0aW5ncy9Vc2VyL0NvbnRhY3RzJztcbmltcG9ydCB7IEFjY291bnRzVXNlclNldHRpbmdzIH0gZnJvbSAnU2V0dGluZ3MvVXNlci9BY2NvdW50cyc7XG5pbXBvcnQgeyBGaWx0ZXJzVXNlclNldHRpbmdzIH0gZnJvbSAnU2V0dGluZ3MvVXNlci9GaWx0ZXJzJztcbmltcG9ydCB7IFNlY3VyaXR5VXNlclNldHRpbmdzIH0gZnJvbSAnU2V0dGluZ3MvVXNlci9TZWN1cml0eSc7XG5pbXBvcnQgeyBTb2NpYWxVc2VyU2V0dGluZ3MgfSBmcm9tICdTZXR0aW5ncy9Vc2VyL1NvY2lhbCc7XG5pbXBvcnQgeyBDaGFuZ2VQYXNzd29yZFVzZXJTZXR0aW5ncyB9IGZyb20gJ1NldHRpbmdzL1VzZXIvQ2hhbmdlUGFzc3dvcmQnO1xuaW1wb3J0IHsgVGVtcGxhdGVzVXNlclNldHRpbmdzIH0gZnJvbSAnU2V0dGluZ3MvVXNlci9UZW1wbGF0ZXMnO1xuaW1wb3J0IHsgRm9sZGVyc1VzZXJTZXR0aW5ncyB9IGZyb20gJ1NldHRpbmdzL1VzZXIvRm9sZGVycyc7XG5pbXBvcnQgeyBUaGVtZXNVc2VyU2V0dGluZ3MgfSBmcm9tICdTZXR0aW5ncy9Vc2VyL1RoZW1lcyc7XG5pbXBvcnQgeyBPcGVuUGdwVXNlclNldHRpbmdzIH0gZnJvbSAnU2V0dGluZ3MvVXNlci9PcGVuUGdwJztcblxuaW1wb3J0IHsgU3lzdGVtRHJvcERvd25TZXR0aW5nc1VzZXJWaWV3IH0gZnJvbSAnVmlldy9Vc2VyL1NldHRpbmdzL1N5c3RlbURyb3BEb3duJztcbmltcG9ydCB7IE1lbnVTZXR0aW5nc1VzZXJWaWV3IH0gZnJvbSAnVmlldy9Vc2VyL1NldHRpbmdzL01lbnUnO1xuaW1wb3J0IHsgUGFuZVNldHRpbmdzVXNlclZpZXcgfSBmcm9tICdWaWV3L1VzZXIvU2V0dGluZ3MvUGFuZSc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5jbGFzcyBTZXR0aW5nc1VzZXJTY3JlZW4gZXh0ZW5kcyBBYnN0cmFjdFNldHRpbmdzU2NyZWVuIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoW1N5c3RlbURyb3BEb3duU2V0dGluZ3NVc2VyVmlldywgTWVudVNldHRpbmdzVXNlclZpZXcsIFBhbmVTZXR0aW5nc1VzZXJWaWV3XSk7XG5cblx0XHRpbml0T25TdGFydE9yTGFuZ0NoYW5nZShcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy5zU2V0dGluZ3NUaXRsZSA9IGkxOG4oJ1RJVExFUy9TRVRUSU5HUycpO1xuXHRcdFx0fSxcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy5zZXRTZXR0aW5nc1RpdGxlKCk7XG5cdFx0XHR9XG5cdFx0KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9uPX0gZkNhbGxiYWNrXG5cdCAqL1xuXHRzZXR1cFNldHRpbmdzKGZDYWxsYmFjayA9IG51bGwpIHtcblx0XHRpZiAoIVNldHRpbmdzLmNhcGEoQ2FwYS5TZXR0aW5ncykpIHtcblx0XHRcdGlmIChmQ2FsbGJhY2spIHtcblx0XHRcdFx0ZkNhbGxiYWNrKCk7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRhZGRTZXR0aW5nc1ZpZXdNb2RlbChHZW5lcmFsVXNlclNldHRpbmdzLCAnU2V0dGluZ3NHZW5lcmFsJywgJ1NFVFRJTkdTX0xBQkVMUy9MQUJFTF9HRU5FUkFMX05BTUUnLCAnZ2VuZXJhbCcsIHRydWUpO1xuXG5cdFx0aWYgKEFwcFN0b3JlLmNvbnRhY3RzSXNBbGxvd2VkKCkpIHtcblx0XHRcdGFkZFNldHRpbmdzVmlld01vZGVsKENvbnRhY3RzVXNlclNldHRpbmdzLCAnU2V0dGluZ3NDb250YWN0cycsICdTRVRUSU5HU19MQUJFTFMvTEFCRUxfQ09OVEFDVFNfTkFNRScsICdjb250YWN0cycpO1xuXHRcdH1cblxuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQWRkaXRpb25hbEFjY291bnRzKSB8fCBTZXR0aW5ncy5jYXBhKENhcGEuSWRlbnRpdGllcykpIHtcblx0XHRcdGFkZFNldHRpbmdzVmlld01vZGVsKFxuXHRcdFx0XHRBY2NvdW50c1VzZXJTZXR0aW5ncyxcblx0XHRcdFx0J1NldHRpbmdzQWNjb3VudHMnLFxuXHRcdFx0XHRTZXR0aW5ncy5jYXBhKENhcGEuQWRkaXRpb25hbEFjY291bnRzKVxuXHRcdFx0XHRcdD8gJ1NFVFRJTkdTX0xBQkVMUy9MQUJFTF9BQ0NPVU5UU19OQU1FJ1xuXHRcdFx0XHRcdDogJ1NFVFRJTkdTX0xBQkVMUy9MQUJFTF9JREVOVElUSUVTX05BTUUnLFxuXHRcdFx0XHQnYWNjb3VudHMnXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuU2lldmUpKSB7XG5cdFx0XHRhZGRTZXR0aW5nc1ZpZXdNb2RlbChGaWx0ZXJzVXNlclNldHRpbmdzLCAnU2V0dGluZ3NGaWx0ZXJzJywgJ1NFVFRJTkdTX0xBQkVMUy9MQUJFTF9GSUxURVJTX05BTUUnLCAnZmlsdGVycycpO1xuXHRcdH1cblxuXHRcdGlmIChTZXR0aW5ncy5jYXBhKENhcGEuQXV0b0xvZ291dCkgfHwgU2V0dGluZ3MuY2FwYShDYXBhLlR3b0ZhY3RvcikpIHtcblx0XHRcdGFkZFNldHRpbmdzVmlld01vZGVsKFNlY3VyaXR5VXNlclNldHRpbmdzLCAnU2V0dGluZ3NTZWN1cml0eScsICdTRVRUSU5HU19MQUJFTFMvTEFCRUxfU0VDVVJJVFlfTkFNRScsICdzZWN1cml0eScpO1xuXHRcdH1cblxuXHRcdGlmIChcblx0XHRcdEFjY291bnRTdG9yZS5pc1Jvb3RBY2NvdW50KCkgJiZcblx0XHRcdCgoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93R29vZ2xlU29jaWFsJykgJiYgU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0FsbG93R29vZ2xlU29jaWFsQXV0aCcpKSB8fFxuXHRcdFx0XHRTZXR0aW5ncy5zZXR0aW5nc0dldCgnQWxsb3dGYWNlYm9va1NvY2lhbCcpIHx8XG5cdFx0XHRcdFNldHRpbmdzLnNldHRpbmdzR2V0KCdBbGxvd1R3aXR0ZXJTb2NpYWwnKSlcblx0XHQpIHtcblx0XHRcdGFkZFNldHRpbmdzVmlld01vZGVsKFNvY2lhbFVzZXJTZXR0aW5ncywgJ1NldHRpbmdzU29jaWFsJywgJ1NFVFRJTkdTX0xBQkVMUy9MQUJFTF9TT0NJQUxfTkFNRScsICdzb2NpYWwnKTtcblx0XHR9XG5cblx0XHRpZiAoU2V0dGluZ3Muc2V0dGluZ3NHZXQoJ0NoYW5nZVBhc3N3b3JkSXNBbGxvd2VkJykpIHtcblx0XHRcdGFkZFNldHRpbmdzVmlld01vZGVsKFxuXHRcdFx0XHRDaGFuZ2VQYXNzd29yZFVzZXJTZXR0aW5ncyxcblx0XHRcdFx0J1NldHRpbmdzQ2hhbmdlUGFzc3dvcmQnLFxuXHRcdFx0XHQnU0VUVElOR1NfTEFCRUxTL0xBQkVMX0NIQU5HRV9QQVNTV09SRF9OQU1FJyxcblx0XHRcdFx0J2NoYW5nZS1wYXNzd29yZCdcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKFNldHRpbmdzLmNhcGEoQ2FwYS5UZW1wbGF0ZXMpKSB7XG5cdFx0XHRhZGRTZXR0aW5nc1ZpZXdNb2RlbChcblx0XHRcdFx0VGVtcGxhdGVzVXNlclNldHRpbmdzLFxuXHRcdFx0XHQnU2V0dGluZ3NUZW1wbGF0ZXMnLFxuXHRcdFx0XHQnU0VUVElOR1NfTEFCRUxTL0xBQkVMX1RFTVBMQVRFU19OQU1FJyxcblx0XHRcdFx0J3RlbXBsYXRlcydcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0aWYgKFNldHRpbmdzLmNhcGEoQ2FwYS5Gb2xkZXJzKSkge1xuXHRcdFx0YWRkU2V0dGluZ3NWaWV3TW9kZWwoRm9sZGVyc1VzZXJTZXR0aW5ncywgJ1NldHRpbmdzRm9sZGVycycsICdTRVRUSU5HU19MQUJFTFMvTEFCRUxfRk9MREVSU19OQU1FJywgJ2ZvbGRlcnMnKTtcblx0XHR9XG5cblx0XHRpZiAoU2V0dGluZ3MuY2FwYShDYXBhLlRoZW1lcykpIHtcblx0XHRcdGFkZFNldHRpbmdzVmlld01vZGVsKFRoZW1lc1VzZXJTZXR0aW5ncywgJ1NldHRpbmdzVGhlbWVzJywgJ1NFVFRJTkdTX0xBQkVMUy9MQUJFTF9USEVNRVNfTkFNRScsICd0aGVtZXMnKTtcblx0XHR9XG5cblx0XHRpZiAoU2V0dGluZ3MuY2FwYShDYXBhLk9wZW5QR1ApKSB7XG5cdFx0XHRhZGRTZXR0aW5nc1ZpZXdNb2RlbChPcGVuUGdwVXNlclNldHRpbmdzLCAnU2V0dGluZ3NPcGVuUEdQJywgJ1NFVFRJTkdTX0xBQkVMUy9MQUJFTF9PUEVOX1BHUF9OQU1FJywgJ29wZW5wZ3AnKTtcblx0XHR9XG5cblx0XHRydW5TZXR0aW5nc1ZpZXdNb2RlbEhvb2tzKGZhbHNlKTtcblxuXHRcdGlmIChmQ2FsbGJhY2spIHtcblx0XHRcdGZDYWxsYmFjaygpO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0b25TaG93KCkge1xuXHRcdHRoaXMuc2V0U2V0dGluZ3NUaXRsZSgpO1xuXHRcdGtleVNjb3BlKEtleVN0YXRlLlNldHRpbmdzKTtcblx0XHRsZWZ0UGFuZWxUeXBlKCcnKTtcblxuXHRcdGlmIChTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJykpIHtcblx0XHRcdGxlZnRQYW5lbERpc2FibGVkKHRydWUpO1xuXHRcdH1cblx0fVxuXG5cdHNldFNldHRpbmdzVGl0bGUoKSB7XG5cdFx0Y29uc3Qgc0VtYWlsID0gQWNjb3VudFN0b3JlLmVtYWlsKCk7XG5cdFx0Z2V0QXBwKCkuc2V0V2luZG93VGl0bGUoKCcnID09PSBzRW1haWwgPyAnJyA6IHNFbWFpbCArICcgLSAnKSArIHRoaXMuc1NldHRpbmdzVGl0bGUpO1xuXHR9XG59XG5cbmV4cG9ydCB7IFNldHRpbmdzVXNlclNjcmVlbiwgU2V0dGluZ3NVc2VyU2NyZWVuIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgTUVTU0FHRVNfUEVSX1BBR0VfVkFMVUVTIH0gZnJvbSAnQ29tbW9uL0NvbnN0cyc7XG5pbXBvcnQgeyBiQW5pbWF0aW9uU3VwcG9ydGVkIH0gZnJvbSAnQ29tbW9uL0dsb2JhbHMnO1xuXG5pbXBvcnQgeyBTYXZlU2V0dGluZ3NTdGVwLCBNYWdpY3MsIEVkaXRvckRlZmF1bHRUeXBlLCBMYXlvdXQgfSBmcm9tICdDb21tb24vRW51bXMnO1xuXG5pbXBvcnQgeyBzZXR0aW5nc1NhdmVIZWxwZXJTaW1wbGVGdW5jdGlvbiwgY29udmVydExhbmdOYW1lLCBpc0FycmF5LCB0aW1lT3V0QWN0aW9uLCBib29sVG9BamF4IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IHsgaTE4biwgdHJpZ2dlciBhcyB0cmFuc2xhdG9yVHJpZ2dlciwgcmVsb2FkIGFzIHRyYW5zbGF0b3JSZWxvYWQgfSBmcm9tICdDb21tb24vVHJhbnNsYXRvcic7XG5cbmltcG9ydCB7IHNob3dTY3JlZW5Qb3B1cCB9IGZyb20gJ0tub2luL0tub2luJztcblxuaW1wb3J0IEFwcFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL0FwcCc7XG5pbXBvcnQgTGFuZ3VhZ2VTdG9yZSBmcm9tICdTdG9yZXMvTGFuZ3VhZ2UnO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvU2V0dGluZ3MnO1xuaW1wb3J0IElkZW50aXR5U3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvSWRlbnRpdHknO1xuaW1wb3J0IE5vdGlmaWNhdGlvblN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL05vdGlmaWNhdGlvbic7XG5pbXBvcnQgTWVzc2FnZVN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL01lc3NhZ2UnO1xuXG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5jbGFzcyBHZW5lcmFsVXNlclNldHRpbmdzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5sYW5ndWFnZSA9IExhbmd1YWdlU3RvcmUubGFuZ3VhZ2U7XG5cdFx0dGhpcy5sYW5ndWFnZXMgPSBMYW5ndWFnZVN0b3JlLmxhbmd1YWdlcztcblx0XHR0aGlzLm1lc3NhZ2VzUGVyUGFnZSA9IFNldHRpbmdzU3RvcmUubWVzc2FnZXNQZXJQYWdlO1xuXHRcdHRoaXMubWVzc2FnZXNQZXJQYWdlQXJyYXkgPSBNRVNTQUdFU19QRVJfUEFHRV9WQUxVRVM7XG5cblx0XHR0aGlzLmVkaXRvckRlZmF1bHRUeXBlID0gU2V0dGluZ3NTdG9yZS5lZGl0b3JEZWZhdWx0VHlwZTtcblx0XHR0aGlzLmxheW91dCA9IFNldHRpbmdzU3RvcmUubGF5b3V0O1xuXHRcdHRoaXMudXNlUHJldmlld1BhbmUgPSBTZXR0aW5nc1N0b3JlLnVzZVByZXZpZXdQYW5lO1xuXG5cdFx0dGhpcy5zb3VuZE5vdGlmaWNhdGlvbklzU3VwcG9ydGVkID0gTm90aWZpY2F0aW9uU3RvcmUuc291bmROb3RpZmljYXRpb25Jc1N1cHBvcnRlZDtcblx0XHR0aGlzLmVuYWJsZVNvdW5kTm90aWZpY2F0aW9uID0gTm90aWZpY2F0aW9uU3RvcmUuZW5hYmxlU291bmROb3RpZmljYXRpb247XG5cblx0XHR0aGlzLmVuYWJsZURlc2t0b3BOb3RpZmljYXRpb24gPSBOb3RpZmljYXRpb25TdG9yZS5lbmFibGVEZXNrdG9wTm90aWZpY2F0aW9uO1xuXHRcdHRoaXMuaXNEZXNrdG9wTm90aWZpY2F0aW9uU3VwcG9ydGVkID0gTm90aWZpY2F0aW9uU3RvcmUuaXNEZXNrdG9wTm90aWZpY2F0aW9uU3VwcG9ydGVkO1xuXHRcdHRoaXMuaXNEZXNrdG9wTm90aWZpY2F0aW9uRGVuaWVkID0gTm90aWZpY2F0aW9uU3RvcmUuaXNEZXNrdG9wTm90aWZpY2F0aW9uRGVuaWVkO1xuXG5cdFx0dGhpcy5zaG93SW1hZ2VzID0gU2V0dGluZ3NTdG9yZS5zaG93SW1hZ2VzO1xuXHRcdHRoaXMudXNlQ2hlY2tib3hlc0luTGlzdCA9IFNldHRpbmdzU3RvcmUudXNlQ2hlY2tib3hlc0luTGlzdDtcblx0XHR0aGlzLnRocmVhZHNBbGxvd2VkID0gQXBwU3RvcmUudGhyZWFkc0FsbG93ZWQ7XG5cdFx0dGhpcy51c2VUaHJlYWRzID0gU2V0dGluZ3NTdG9yZS51c2VUaHJlYWRzO1xuXHRcdHRoaXMucmVwbHlTYW1lRm9sZGVyID0gU2V0dGluZ3NTdG9yZS5yZXBseVNhbWVGb2xkZXI7XG5cdFx0dGhpcy5hbGxvd0xhbmd1YWdlc09uU2V0dGluZ3MgPSBBcHBTdG9yZS5hbGxvd0xhbmd1YWdlc09uU2V0dGluZ3M7XG5cblx0XHR0aGlzLmxhbmd1YWdlRnVsbE5hbWUgPSBrby5jb21wdXRlZCgoKSA9PiBjb252ZXJ0TGFuZ05hbWUodGhpcy5sYW5ndWFnZSgpKSk7XG5cdFx0dGhpcy5sYW5ndWFnZVRyaWdnZXIgPSBrby5vYnNlcnZhYmxlKFNhdmVTZXR0aW5nc1N0ZXAuSWRsZSkuZXh0ZW5kKHsgdGhyb3R0bGU6IE1hZ2ljcy5UaW1lMTAwbXMgfSk7XG5cblx0XHR0aGlzLm1wcFRyaWdnZXIgPSBrby5vYnNlcnZhYmxlKFNhdmVTZXR0aW5nc1N0ZXAuSWRsZSk7XG5cdFx0dGhpcy5lZGl0b3JEZWZhdWx0VHlwZVRyaWdnZXIgPSBrby5vYnNlcnZhYmxlKFNhdmVTZXR0aW5nc1N0ZXAuSWRsZSk7XG5cdFx0dGhpcy5sYXlvdXRUcmlnZ2VyID0ga28ub2JzZXJ2YWJsZShTYXZlU2V0dGluZ3NTdGVwLklkbGUpO1xuXG5cdFx0dGhpcy5pc0FuaW1hdGlvblN1cHBvcnRlZCA9IGJBbmltYXRpb25TdXBwb3J0ZWQ7XG5cblx0XHR0aGlzLmlkZW50aXRpZXMgPSBJZGVudGl0eVN0b3JlLmlkZW50aXRpZXM7XG5cblx0XHR0aGlzLmlkZW50aXR5TWFpbiA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGxpc3QgPSB0aGlzLmlkZW50aXRpZXMoKTtcblx0XHRcdHJldHVybiBpc0FycmF5KGxpc3QpID8gXy5maW5kKGxpc3QsIChpdGVtKSA9PiBpdGVtICYmICcnID09PSBpdGVtLmlkKCkpIDogbnVsbDtcblx0XHR9KTtcblxuXHRcdHRoaXMuaWRlbnRpdHlNYWluRGVzYyA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGlkZW50aXR5ID0gdGhpcy5pZGVudGl0eU1haW4oKTtcblx0XHRcdHJldHVybiBpZGVudGl0eSA/IGlkZW50aXR5LmZvcm1hdHRlZE5hbWUoKSA6ICctLS0nO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5lZGl0b3JEZWZhdWx0VHlwZXMgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHR0cmFuc2xhdG9yVHJpZ2dlcigpO1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0eyAnaWQnOiBFZGl0b3JEZWZhdWx0VHlwZS5IdG1sLCAnbmFtZSc6IGkxOG4oJ1NFVFRJTkdTX0dFTkVSQUwvTEFCRUxfRURJVE9SX0hUTUwnKSB9LFxuXHRcdFx0XHR7ICdpZCc6IEVkaXRvckRlZmF1bHRUeXBlLlBsYWluLCAnbmFtZSc6IGkxOG4oJ1NFVFRJTkdTX0dFTkVSQUwvTEFCRUxfRURJVE9SX1BMQUlOJykgfSxcblx0XHRcdFx0eyAnaWQnOiBFZGl0b3JEZWZhdWx0VHlwZS5IdG1sRm9yY2VkLCAnbmFtZSc6IGkxOG4oJ1NFVFRJTkdTX0dFTkVSQUwvTEFCRUxfRURJVE9SX0hUTUxfRk9SQ0VEJykgfSxcblx0XHRcdFx0eyAnaWQnOiBFZGl0b3JEZWZhdWx0VHlwZS5QbGFpbkZvcmNlZCwgJ25hbWUnOiBpMThuKCdTRVRUSU5HU19HRU5FUkFML0xBQkVMX0VESVRPUl9QTEFJTl9GT1JDRUQnKSB9XG5cdFx0XHRdO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5sYXlvdXRUeXBlcyA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdHRyYW5zbGF0b3JUcmlnZ2VyKCk7XG5cdFx0XHRyZXR1cm4gW1xuXHRcdFx0XHR7ICdpZCc6IExheW91dC5Ob1ByZXZpZXcsICduYW1lJzogaTE4bignU0VUVElOR1NfR0VORVJBTC9MQUJFTF9MQVlPVVRfTk9fU1BMSVQnKSB9LFxuXHRcdFx0XHR7ICdpZCc6IExheW91dC5TaWRlUHJldmlldywgJ25hbWUnOiBpMThuKCdTRVRUSU5HU19HRU5FUkFML0xBQkVMX0xBWU9VVF9WRVJUSUNBTF9TUExJVCcpIH0sXG5cdFx0XHRcdHsgJ2lkJzogTGF5b3V0LkJvdHRvbVByZXZpZXcsICduYW1lJzogaTE4bignU0VUVElOR1NfR0VORVJBTC9MQUJFTF9MQVlPVVRfSE9SSVpPTlRBTF9TUExJVCcpIH1cblx0XHRcdF07XG5cdFx0fSk7XG5cdH1cblxuXHRlZGl0TWFpbklkZW50aXR5KCkge1xuXHRcdGNvbnN0IGlkZW50aXR5ID0gdGhpcy5pZGVudGl0eU1haW4oKTtcblx0XHRpZiAoaWRlbnRpdHkpIHtcblx0XHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0lkZW50aXR5JyksIFtpZGVudGl0eV0pO1xuXHRcdH1cblx0fVxuXG5cdHRlc3RTb3VuZE5vdGlmaWNhdGlvbigpIHtcblx0XHROb3RpZmljYXRpb25TdG9yZS5wbGF5U291bmROb3RpZmljYXRpb24odHJ1ZSk7XG5cdH1cblxuXHRvbkJ1aWxkKCkge1xuXHRcdF8uZGVsYXkoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZjAgPSBzZXR0aW5nc1NhdmVIZWxwZXJTaW1wbGVGdW5jdGlvbih0aGlzLmVkaXRvckRlZmF1bHRUeXBlVHJpZ2dlciwgdGhpcyksXG5cdFx0XHRcdGYxID0gc2V0dGluZ3NTYXZlSGVscGVyU2ltcGxlRnVuY3Rpb24odGhpcy5tcHBUcmlnZ2VyLCB0aGlzKSxcblx0XHRcdFx0ZjIgPSBzZXR0aW5nc1NhdmVIZWxwZXJTaW1wbGVGdW5jdGlvbih0aGlzLmxheW91dFRyaWdnZXIsIHRoaXMpLFxuXHRcdFx0XHRmUmVsb2FkTGFuZ3VhZ2VIZWxwZXIgPSAoc2F2ZVNldHRpbmdzU3RlcCkgPT4gKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubGFuZ3VhZ2VUcmlnZ2VyKHNhdmVTZXR0aW5nc1N0ZXApO1xuXHRcdFx0XHRcdF8uZGVsYXkoKCkgPT4gdGhpcy5sYW5ndWFnZVRyaWdnZXIoU2F2ZVNldHRpbmdzU3RlcC5JZGxlKSwgTWFnaWNzLlRpbWUxcyk7XG5cdFx0XHRcdH07XG5cblx0XHRcdHRoaXMubGFuZ3VhZ2Uuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR0aGlzLmxhbmd1YWdlVHJpZ2dlcihTYXZlU2V0dGluZ3NTdGVwLkFuaW1hdGUpO1xuXHRcdFx0XHR0cmFuc2xhdG9yUmVsb2FkKGZhbHNlLCB2YWx1ZSlcblx0XHRcdFx0XHQudGhlbihmUmVsb2FkTGFuZ3VhZ2VIZWxwZXIoU2F2ZVNldHRpbmdzU3RlcC5UcnVlUmVzdWx0KSwgZlJlbG9hZExhbmd1YWdlSGVscGVyKFNhdmVTZXR0aW5nc1N0ZXAuRmFsc2VSZXN1bHQpKVxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdFJlbW90ZS5zYXZlU2V0dGluZ3MobnVsbCwge1xuXHRcdFx0XHRcdFx0XHQnTGFuZ3VhZ2UnOiB2YWx1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5lZGl0b3JEZWZhdWx0VHlwZS5zdWJzY3JpYmUoUmVtb3RlLnNhdmVTZXR0aW5nc0hlbHBlcignRWRpdG9yRGVmYXVsdFR5cGUnLCBudWxsLCBmMCkpO1xuXHRcdFx0dGhpcy5tZXNzYWdlc1BlclBhZ2Uuc3Vic2NyaWJlKFJlbW90ZS5zYXZlU2V0dGluZ3NIZWxwZXIoJ01QUCcsIG51bGwsIGYxKSk7XG5cdFx0XHR0aGlzLnNob3dJbWFnZXMuc3Vic2NyaWJlKFJlbW90ZS5zYXZlU2V0dGluZ3NIZWxwZXIoJ1Nob3dJbWFnZXMnLCBib29sVG9BamF4KSk7XG5cblx0XHRcdHRoaXMudXNlQ2hlY2tib3hlc0luTGlzdC5zdWJzY3JpYmUoUmVtb3RlLnNhdmVTZXR0aW5nc0hlbHBlcignVXNlQ2hlY2tib3hlc0luTGlzdCcsIGJvb2xUb0FqYXgpKTtcblxuXHRcdFx0dGhpcy5lbmFibGVEZXNrdG9wTm90aWZpY2F0aW9uLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdFx0dGltZU91dEFjdGlvbihcblx0XHRcdFx0XHQnU2F2ZURlc2t0b3BOb3RpZmljYXRpb25zJyxcblx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRSZW1vdGUuc2F2ZVNldHRpbmdzKG51bGwsIHtcblx0XHRcdFx0XHRcdFx0J0Rlc2t0b3BOb3RpZmljYXRpb25zJzogYm9vbFRvQWpheCh2YWx1ZSlcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0TWFnaWNzLlRpbWUzc1xuXHRcdFx0XHQpO1xuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMuZW5hYmxlU291bmROb3RpZmljYXRpb24uc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR0aW1lT3V0QWN0aW9uKFxuXHRcdFx0XHRcdCdTYXZlU291bmROb3RpZmljYXRpb24nLFxuXHRcdFx0XHRcdCgpID0+IHtcblx0XHRcdFx0XHRcdFJlbW90ZS5zYXZlU2V0dGluZ3MobnVsbCwge1xuXHRcdFx0XHRcdFx0XHQnU291bmROb3RpZmljYXRpb24nOiBib29sVG9BamF4KHZhbHVlKVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRNYWdpY3MuVGltZTNzXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5yZXBseVNhbWVGb2xkZXIuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHR0aW1lT3V0QWN0aW9uKFxuXHRcdFx0XHRcdCdTYXZlUmVwbHlTYW1lRm9sZGVyJyxcblx0XHRcdFx0XHQoKSA9PiB7XG5cdFx0XHRcdFx0XHRSZW1vdGUuc2F2ZVNldHRpbmdzKG51bGwsIHtcblx0XHRcdFx0XHRcdFx0J1JlcGx5U2FtZUZvbGRlcic6IGJvb2xUb0FqYXgodmFsdWUpXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdE1hZ2ljcy5UaW1lM3Ncblx0XHRcdFx0KTtcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLnVzZVRocmVhZHMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3QoW10pO1xuXHRcdFx0XHRSZW1vdGUuc2F2ZVNldHRpbmdzKG51bGwsIHtcblx0XHRcdFx0XHQnVXNlVGhyZWFkcyc6IGJvb2xUb0FqYXgodmFsdWUpXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMubGF5b3V0LnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2VMaXN0KFtdKTtcblx0XHRcdFx0UmVtb3RlLnNhdmVTZXR0aW5ncyhmMiwge1xuXHRcdFx0XHRcdCdMYXlvdXQnOiB2YWx1ZVxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sIE1hZ2ljcy5UaW1lNTBtcyk7XG5cdH1cblxuXHRvblNob3coKSB7XG5cdFx0dGhpcy5lbmFibGVEZXNrdG9wTm90aWZpY2F0aW9uLnZhbHVlSGFzTXV0YXRlZCgpO1xuXHR9XG5cblx0c2VsZWN0TGFuZ3VhZ2UoKSB7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvTGFuZ3VhZ2VzJyksIFt0aGlzLmxhbmd1YWdlLCB0aGlzLmxhbmd1YWdlcygpLCBMYW5ndWFnZVN0b3JlLnVzZXJMYW5ndWFnZSgpXSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgR2VuZXJhbFVzZXJTZXR0aW5ncywgR2VuZXJhbFVzZXJTZXR0aW5ncyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBNYWdpY3MgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgYm9vbFRvQWpheCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5cbmltcG9ydCBBcHBTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9BcHAnO1xuaW1wb3J0IENvbnRhY3RTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Db250YWN0JztcbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmNsYXNzIENvbnRhY3RzVXNlclNldHRpbmdzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5jb250YWN0c0F1dG9zYXZlID0gQXBwU3RvcmUuY29udGFjdHNBdXRvc2F2ZTtcblxuXHRcdHRoaXMuYWxsb3dDb250YWN0c1N5bmMgPSBDb250YWN0U3RvcmUuYWxsb3dDb250YWN0c1N5bmM7XG5cdFx0dGhpcy5lbmFibGVDb250YWN0c1N5bmMgPSBDb250YWN0U3RvcmUuZW5hYmxlQ29udGFjdHNTeW5jO1xuXHRcdHRoaXMuY29udGFjdHNTeW5jVXJsID0gQ29udGFjdFN0b3JlLmNvbnRhY3RzU3luY1VybDtcblx0XHR0aGlzLmNvbnRhY3RzU3luY1VzZXIgPSBDb250YWN0U3RvcmUuY29udGFjdHNTeW5jVXNlcjtcblx0XHR0aGlzLmNvbnRhY3RzU3luY1Bhc3MgPSBDb250YWN0U3RvcmUuY29udGFjdHNTeW5jUGFzcztcblxuXHRcdHRoaXMuc2F2ZVRyaWdnZXIgPSBrb1xuXHRcdFx0LmNvbXB1dGVkKCgpID0+XG5cdFx0XHRcdFtcblx0XHRcdFx0XHR0aGlzLmVuYWJsZUNvbnRhY3RzU3luYygpID8gJzEnIDogJzAnLFxuXHRcdFx0XHRcdHRoaXMuY29udGFjdHNTeW5jVXJsKCksXG5cdFx0XHRcdFx0dGhpcy5jb250YWN0c1N5bmNVc2VyKCksXG5cdFx0XHRcdFx0dGhpcy5jb250YWN0c1N5bmNQYXNzKClcblx0XHRcdFx0XS5qb2luKCd8Jylcblx0XHRcdClcblx0XHRcdC5leHRlbmQoeyB0aHJvdHRsZTogTWFnaWNzLlRpbWU1MDBtcyB9KTtcblx0fVxuXG5cdG9uQnVpbGQoKSB7XG5cdFx0dGhpcy5jb250YWN0c0F1dG9zYXZlLnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdFJlbW90ZS5zYXZlU2V0dGluZ3MobnVsbCwge1xuXHRcdFx0XHQnQ29udGFjdHNBdXRvc2F2ZSc6IGJvb2xUb0FqYXgodmFsdWUpXG5cdFx0XHR9KTtcblx0XHR9KTtcblxuXHRcdHRoaXMuc2F2ZVRyaWdnZXIuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdFJlbW90ZS5zYXZlQ29udGFjdHNTeW5jRGF0YShcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0dGhpcy5lbmFibGVDb250YWN0c1N5bmMoKSxcblx0XHRcdFx0dGhpcy5jb250YWN0c1N5bmNVcmwoKSxcblx0XHRcdFx0dGhpcy5jb250YWN0c1N5bmNVc2VyKCksXG5cdFx0XHRcdHRoaXMuY29udGFjdHNTeW5jUGFzcygpXG5cdFx0XHQpO1xuXHRcdH0pO1xuXHR9XG59XG5cbmV4cG9ydCB7IENvbnRhY3RzVXNlclNldHRpbmdzLCBDb250YWN0c1VzZXJTZXR0aW5ncyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgd2luZG93IGZyb20gJ3dpbmRvdyc7XG5pbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IENhcGEsIFN0b3JhZ2VSZXN1bHRUeXBlIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IHJvb3QgfSBmcm9tICdDb21tb24vTGlua3MnO1xuXG5pbXBvcnQgeyBjYXBhIH0gZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmltcG9ydCBBY2NvdW50U3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvQWNjb3VudCc7XG5pbXBvcnQgSWRlbnRpdHlTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9JZGVudGl0eSc7XG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgc2hvd1NjcmVlblBvcHVwLCByb3V0ZU9mZiwgc2V0SGFzaCB9IGZyb20gJ0tub2luL0tub2luJztcblxuY2xhc3MgQWNjb3VudHNVc2VyU2V0dGluZ3Mge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmFsbG93QWRkaXRpb25hbEFjY291bnQgPSBjYXBhKENhcGEuQWRkaXRpb25hbEFjY291bnRzKTtcblx0XHR0aGlzLmFsbG93SWRlbnRpdGllcyA9IGNhcGEoQ2FwYS5JZGVudGl0aWVzKTtcblxuXHRcdHRoaXMuYWNjb3VudHMgPSBBY2NvdW50U3RvcmUuYWNjb3VudHM7XG5cdFx0dGhpcy5pZGVudGl0aWVzID0gSWRlbnRpdHlTdG9yZS5pZGVudGl0aWVzO1xuXG5cdFx0dGhpcy5hY2NvdW50Rm9yRGVsZXRpb24gPSBrby5vYnNlcnZhYmxlKG51bGwpLmRlbGV0ZUFjY2Vzc0hlbHBlcigpO1xuXHRcdHRoaXMuaWRlbnRpdHlGb3JEZWxldGlvbiA9IGtvLm9ic2VydmFibGUobnVsbCkuZGVsZXRlQWNjZXNzSGVscGVyKCk7XG5cdH1cblxuXHRzY3JvbGxhYmxlT3B0aW9ucyh3cmFwcGVyKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGhhbmRsZTogJy5kcmFnLWhhbmRsZScsXG5cdFx0XHRjb250YWlubWVudDogd3JhcHBlciB8fCAncGFyZW50Jyxcblx0XHRcdGF4aXM6ICd5J1xuXHRcdH07XG5cdH1cblxuXHRhZGROZXdBY2NvdW50KCkge1xuXHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0FjY291bnQnKSk7XG5cdH1cblxuXHRlZGl0QWNjb3VudChhY2NvdW50KSB7XG5cdFx0aWYgKGFjY291bnQgJiYgYWNjb3VudC5jYW5CZUVkaXQoKSkge1xuXHRcdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQWNjb3VudCcpLCBbYWNjb3VudF0pO1xuXHRcdH1cblx0fVxuXG5cdGFkZE5ld0lkZW50aXR5KCkge1xuXHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0lkZW50aXR5JykpO1xuXHR9XG5cblx0ZWRpdElkZW50aXR5KGlkZW50aXR5KSB7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvSWRlbnRpdHknKSwgW2lkZW50aXR5XSk7XG5cdH1cblxuXHQvKipcblx0ICogQHBhcmFtIHtBY2NvdW50TW9kZWx9IGFjY291bnRUb1JlbW92ZVxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGRlbGV0ZUFjY291bnQoYWNjb3VudFRvUmVtb3ZlKSB7XG5cdFx0aWYgKGFjY291bnRUb1JlbW92ZSAmJiBhY2NvdW50VG9SZW1vdmUuZGVsZXRlQWNjZXNzKCkpIHtcblx0XHRcdHRoaXMuYWNjb3VudEZvckRlbGV0aW9uKG51bGwpO1xuXHRcdFx0aWYgKGFjY291bnRUb1JlbW92ZSkge1xuXHRcdFx0XHR0aGlzLmFjY291bnRzLnJlbW92ZSgoYWNjb3VudCkgPT4gYWNjb3VudFRvUmVtb3ZlID09PSBhY2NvdW50KTtcblxuXHRcdFx0XHRSZW1vdGUuYWNjb3VudERlbGV0ZSgocmVzdWx0LCBkYXRhKSA9PiB7XG5cdFx0XHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0ICYmIGRhdGEuUmVsb2FkKSB7XG5cdFx0XHRcdFx0XHRyb3V0ZU9mZigpO1xuXHRcdFx0XHRcdFx0c2V0SGFzaChyb290KCksIHRydWUpO1xuXHRcdFx0XHRcdFx0cm91dGVPZmYoKTtcblxuXHRcdFx0XHRcdFx0Xy5kZWZlcigoKSA9PiB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRnZXRBcHAoKS5hY2NvdW50c0FuZElkZW50aXRpZXMoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0sIGFjY291bnRUb1JlbW92ZS5lbWFpbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7SWRlbnRpdHlNb2RlbH0gaWRlbnRpdHlUb1JlbW92ZVxuXHQgKiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGRlbGV0ZUlkZW50aXR5KGlkZW50aXR5VG9SZW1vdmUpIHtcblx0XHRpZiAoaWRlbnRpdHlUb1JlbW92ZSAmJiBpZGVudGl0eVRvUmVtb3ZlLmRlbGV0ZUFjY2VzcygpKSB7XG5cdFx0XHR0aGlzLmlkZW50aXR5Rm9yRGVsZXRpb24obnVsbCk7XG5cblx0XHRcdGlmIChpZGVudGl0eVRvUmVtb3ZlKSB7XG5cdFx0XHRcdElkZW50aXR5U3RvcmUuaWRlbnRpdGllcy5yZW1vdmUoKG9JZGVudGl0eSkgPT4gaWRlbnRpdHlUb1JlbW92ZSA9PT0gb0lkZW50aXR5KTtcblxuXHRcdFx0XHRSZW1vdGUuaWRlbnRpdHlEZWxldGUoKCkgPT4ge1xuXHRcdFx0XHRcdGdldEFwcCgpLmFjY291bnRzQW5kSWRlbnRpdGllcygpO1xuXHRcdFx0XHR9LCBpZGVudGl0eVRvUmVtb3ZlLmlkKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRhY2NvdW50c0FuZElkZW50aXRpZXNBZnRlck1vdmUoKSB7XG5cdFx0UmVtb3RlLmFjY291bnRzQW5kSWRlbnRpdGllc1NvcnRPcmRlcihudWxsLCBBY2NvdW50U3RvcmUuYWNjb3VudHNFbWFpbHMucGVlaygpLCBJZGVudGl0eVN0b3JlLmlkZW50aXRpZXNJRFMucGVlaygpKTtcblx0fVxuXG5cdG9uQnVpbGQob0RvbSkge1xuXHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdFx0b0RvbVxuXHRcdFx0Lm9uKCdjbGljaycsICcuYWNjb3VudHMtbGlzdCAuYWNjb3VudC1pdGVtIC5lLWFjdGlvbicsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0XHRjb25zdCBhY2NvdW50ID0ga28uZGF0YUZvcih0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdFx0aWYgKGFjY291bnQpIHtcblx0XHRcdFx0XHRzZWxmLmVkaXRBY2NvdW50KGFjY291bnQpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdjbGljaycsICcuaWRlbnRpdGllcy1saXN0IC5pZGVudGl0eS1pdGVtIC5lLWFjdGlvbicsIGZ1bmN0aW9uKCkge1xuXHRcdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0XHRjb25zdCBpZGVudGl0eSA9IGtvLmRhdGFGb3IodGhpcyk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8taW52YWxpZC10aGlzXG5cdFx0XHRcdGlmIChpZGVudGl0eSkge1xuXHRcdFx0XHRcdHNlbGYuZWRpdElkZW50aXR5KGlkZW50aXR5KTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgQWNjb3VudHNVc2VyU2V0dGluZ3MsIEFjY291bnRzVXNlclNldHRpbmdzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgd2luZG93UmVzaXplQ2FsbGJhY2ssIGlzQXJyYXksIHRyaW0sIGRlbGVnYXRlUnVuT25EZXN0cm95IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IFN0b3JhZ2VSZXN1bHRUeXBlLCBOb3RpZmljYXRpb24gfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgZ2V0Tm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuXG5pbXBvcnQgRmlsdGVyU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvRmlsdGVyJztcbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmltcG9ydCB7IEZpbHRlck1vZGVsIH0gZnJvbSAnTW9kZWwvRmlsdGVyJztcblxuaW1wb3J0IHsgc2hvd1NjcmVlblBvcHVwLCBjb21tYW5kIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuXG5jbGFzcyBGaWx0ZXJzVXNlclNldHRpbmdzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5tb2R1bGVzID0gRmlsdGVyU3RvcmUubW9kdWxlcztcblx0XHR0aGlzLmZpbHRlcnMgPSBGaWx0ZXJTdG9yZS5maWx0ZXJzO1xuXG5cdFx0dGhpcy5pbml0ZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnNlcnZlckVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5zZXJ2ZXJFcnJvckRlc2MgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLmhhdmVDaGFuZ2VzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnNhdmVFcnJvclRleHQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMuZmlsdGVycy5zdWJzY3JpYmUod2luZG93UmVzaXplQ2FsbGJhY2spO1xuXG5cdFx0dGhpcy5zZXJ2ZXJFcnJvci5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRpZiAoIXZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuc2VydmVyRXJyb3JEZXNjKCcnKTtcblx0XHRcdH1cblx0XHR9LCB0aGlzKTtcblxuXHRcdHRoaXMuZmlsdGVyUmF3ID0gRmlsdGVyU3RvcmUucmF3O1xuXHRcdHRoaXMuZmlsdGVyUmF3LmNhcGEgPSBGaWx0ZXJTdG9yZS5jYXBhO1xuXHRcdHRoaXMuZmlsdGVyUmF3LmFjdGl2ZSA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuZmlsdGVyUmF3LmFsbG93ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5maWx0ZXJSYXcuZXJyb3IgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZmlsdGVyRm9yRGVsZXRpb24gPSBrby5vYnNlcnZhYmxlKG51bGwpLmRlbGV0ZUFjY2Vzc0hlbHBlcigpO1xuXG5cdFx0dGhpcy5maWx0ZXJzLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLmhhdmVDaGFuZ2VzKHRydWUpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5maWx0ZXJSYXcuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMuaGF2ZUNoYW5nZXModHJ1ZSk7XG5cdFx0XHR0aGlzLmZpbHRlclJhdy5lcnJvcihmYWxzZSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmhhdmVDaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLnNhdmVFcnJvclRleHQoJycpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5maWx0ZXJSYXcuYWN0aXZlLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLmhhdmVDaGFuZ2VzKHRydWUpO1xuXHRcdFx0dGhpcy5maWx0ZXJSYXcuZXJyb3IoZmFsc2UpO1xuXHRcdH0pO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+IHNlbGYuaGF2ZUNoYW5nZXMoKSlcblx0c2F2ZUNoYW5nZXNDb21tYW5kKCkge1xuXHRcdGlmICghdGhpcy5maWx0ZXJzLnNhdmluZygpKSB7XG5cdFx0XHRpZiAodGhpcy5maWx0ZXJSYXcuYWN0aXZlKCkgJiYgJycgPT09IHRyaW0odGhpcy5maWx0ZXJSYXcoKSkpIHtcblx0XHRcdFx0dGhpcy5maWx0ZXJSYXcuZXJyb3IodHJ1ZSk7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0dGhpcy5maWx0ZXJzLnNhdmluZyh0cnVlKTtcblx0XHRcdHRoaXMuc2F2ZUVycm9yVGV4dCgnJyk7XG5cblx0XHRcdFJlbW90ZS5maWx0ZXJzU2F2ZShcblx0XHRcdFx0KHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZmlsdGVycy5zYXZpbmcoZmFsc2UpO1xuXG5cdFx0XHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR0aGlzLmhhdmVDaGFuZ2VzKGZhbHNlKTtcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlTGlzdCgpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAoZGF0YSAmJiBkYXRhLkVycm9yQ29kZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5zYXZlRXJyb3JUZXh0KGRhdGEuRXJyb3JNZXNzYWdlQWRkaXRpb25hbCB8fCBnZXROb3RpZmljYXRpb24oZGF0YS5FcnJvckNvZGUpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5zYXZlRXJyb3JUZXh0KGdldE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24uQ2FudFNhdmVGaWx0ZXJzKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHR0aGlzLmZpbHRlcnMoKSxcblx0XHRcdFx0dGhpcy5maWx0ZXJSYXcoKSxcblx0XHRcdFx0dGhpcy5maWx0ZXJSYXcuYWN0aXZlKClcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHRzY3JvbGxhYmxlT3B0aW9ucyh3cmFwcGVyKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGhhbmRsZTogJy5kcmFnLWhhbmRsZScsXG5cdFx0XHRjb250YWlubWVudDogd3JhcHBlciB8fCAncGFyZW50Jyxcblx0XHRcdGF4aXM6ICd5J1xuXHRcdH07XG5cdH1cblxuXHR1cGRhdGVMaXN0KCkge1xuXHRcdGlmICghdGhpcy5maWx0ZXJzLmxvYWRpbmcoKSkge1xuXHRcdFx0dGhpcy5maWx0ZXJzLmxvYWRpbmcodHJ1ZSk7XG5cblx0XHRcdFJlbW90ZS5maWx0ZXJzR2V0KChyZXN1bHQsIGRhdGEpID0+IHtcblx0XHRcdFx0dGhpcy5maWx0ZXJzLmxvYWRpbmcoZmFsc2UpO1xuXHRcdFx0XHR0aGlzLnNlcnZlckVycm9yKGZhbHNlKTtcblxuXHRcdFx0XHRpZiAoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gcmVzdWx0ICYmIGRhdGEgJiYgZGF0YS5SZXN1bHQgJiYgaXNBcnJheShkYXRhLlJlc3VsdC5GaWx0ZXJzKSkge1xuXHRcdFx0XHRcdHRoaXMuaW5pdGVkKHRydWUpO1xuXHRcdFx0XHRcdHRoaXMuc2VydmVyRXJyb3IoZmFsc2UpO1xuXG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJzKFxuXHRcdFx0XHRcdFx0Xy5jb21wYWN0KFxuXHRcdFx0XHRcdFx0XHRfLm1hcChkYXRhLlJlc3VsdC5GaWx0ZXJzLCAoYUl0ZW0pID0+IHtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBmaWx0ZXIgPSBuZXcgRmlsdGVyTW9kZWwoKTtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gZmlsdGVyICYmIGZpbHRlci5wYXJzZShhSXRlbSkgPyBmaWx0ZXIgOiBudWxsO1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHR0aGlzLm1vZHVsZXMoZGF0YS5SZXN1bHQuTW9kdWxlcyA/IGRhdGEuUmVzdWx0Lk1vZHVsZXMgOiB7fSk7XG5cblx0XHRcdFx0XHR0aGlzLmZpbHRlclJhdyhkYXRhLlJlc3VsdC5SYXcgfHwgJycpO1xuXHRcdFx0XHRcdHRoaXMuZmlsdGVyUmF3LmNhcGEoaXNBcnJheShkYXRhLlJlc3VsdC5DYXBhKSA/IGRhdGEuUmVzdWx0LkNhcGEuam9pbignICcpIDogJycpO1xuXHRcdFx0XHRcdHRoaXMuZmlsdGVyUmF3LmFjdGl2ZSghIWRhdGEuUmVzdWx0LlJhd0lzQWN0aXZlKTtcblx0XHRcdFx0XHR0aGlzLmZpbHRlclJhdy5hbGxvdyghIWRhdGEuUmVzdWx0LlJhd0lzQWxsb3cpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuZmlsdGVycyhbXSk7XG5cdFx0XHRcdFx0dGhpcy5tb2R1bGVzKHt9KTtcblx0XHRcdFx0XHR0aGlzLmZpbHRlclJhdygnJyk7XG5cdFx0XHRcdFx0dGhpcy5maWx0ZXJSYXcuY2FwYSh7fSk7XG5cblx0XHRcdFx0XHR0aGlzLnNlcnZlckVycm9yKHRydWUpO1xuXHRcdFx0XHRcdHRoaXMuc2VydmVyRXJyb3JEZXNjKFxuXHRcdFx0XHRcdFx0ZGF0YSAmJiBkYXRhLkVycm9yQ29kZSA/IGdldE5vdGlmaWNhdGlvbihkYXRhLkVycm9yQ29kZSkgOiBnZXROb3RpZmljYXRpb24oTm90aWZpY2F0aW9uLkNhbnRHZXRGaWx0ZXJzKVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLmhhdmVDaGFuZ2VzKGZhbHNlKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGRlbGV0ZUZpbHRlcihmaWx0ZXIpIHtcblx0XHR0aGlzLmZpbHRlcnMucmVtb3ZlKGZpbHRlcik7XG5cdFx0ZGVsZWdhdGVSdW5PbkRlc3Ryb3koZmlsdGVyKTtcblx0fVxuXG5cdGFkZEZpbHRlcigpIHtcblx0XHRjb25zdCBmaWx0ZXIgPSBuZXcgRmlsdGVyTW9kZWwoKTtcblxuXHRcdGZpbHRlci5nZW5lcmF0ZUlEKCk7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvRmlsdGVyJyksIFtcblx0XHRcdGZpbHRlcixcblx0XHRcdCgpID0+IHtcblx0XHRcdFx0dGhpcy5maWx0ZXJzLnB1c2goZmlsdGVyKTtcblx0XHRcdFx0dGhpcy5maWx0ZXJSYXcuYWN0aXZlKGZhbHNlKTtcblx0XHRcdH0sXG5cdFx0XHRmYWxzZVxuXHRcdF0pO1xuXHR9XG5cblx0ZWRpdEZpbHRlcihmaWx0ZXIpIHtcblx0XHRjb25zdCBjbG9uZWRGaWx0ZXIgPSBmaWx0ZXIuY2xvbmVTZWxmKCk7XG5cblx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9GaWx0ZXInKSwgW1xuXHRcdFx0Y2xvbmVkRmlsdGVyLFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zdCBmaWx0ZXJzID0gdGhpcy5maWx0ZXJzKCksXG5cdFx0XHRcdFx0aW5kZXggPSBmaWx0ZXJzLmluZGV4T2YoZmlsdGVyKTtcblxuXHRcdFx0XHRpZiAoLTEgPCBpbmRleCAmJiBmaWx0ZXJzW2luZGV4XSkge1xuXHRcdFx0XHRcdGRlbGVnYXRlUnVuT25EZXN0cm95KGZpbHRlcnNbaW5kZXhdKTtcblx0XHRcdFx0XHRmaWx0ZXJzW2luZGV4XSA9IGNsb25lZEZpbHRlcjtcblxuXHRcdFx0XHRcdHRoaXMuZmlsdGVycyhmaWx0ZXJzKTtcblx0XHRcdFx0XHR0aGlzLmhhdmVDaGFuZ2VzKHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0dHJ1ZVxuXHRcdF0pO1xuXHR9XG5cblx0b25CdWlsZChvRG9tKSB7XG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0XHRvRG9tLm9uKCdjbGljaycsICcuZmlsdGVyLWl0ZW0gLmUtYWN0aW9uJywgZnVuY3Rpb24oKSB7XG5cdFx0XHQvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByZWZlci1hcnJvdy1jYWxsYmFja1xuXHRcdFx0Y29uc3QgZmlsdGVyID0ga28uZGF0YUZvcih0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdGlmIChmaWx0ZXIpIHtcblx0XHRcdFx0c2VsZi5lZGl0RmlsdGVyKGZpbHRlcik7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdH1cblxuXHRvblNob3coKSB7XG5cdFx0dGhpcy51cGRhdGVMaXN0KCk7XG5cdH1cbn1cblxuZXhwb3J0IHsgRmlsdGVyc1VzZXJTZXR0aW5ncywgRmlsdGVyc1VzZXJTZXR0aW5ncyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IHBJbnQsIHNldHRpbmdzU2F2ZUhlbHBlclNpbXBsZUZ1bmN0aW9uIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IENhcGEsIFNhdmVTZXR0aW5nc1N0ZXAgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgaTE4biwgdHJpZ2dlciBhcyB0cmFuc2xhdG9yVHJpZ2dlciB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IHsgY2FwYSB9IGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5pbXBvcnQgeyBzaG93U2NyZWVuUG9wdXAgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5cbmltcG9ydCBTZXR0aW5zU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvU2V0dGluZ3MnO1xuXG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5jbGFzcyBTZWN1cml0eVVzZXJTZXR0aW5ncyB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuY2FwYUF1dG9Mb2dvdXQgPSBjYXBhKENhcGEuQXV0b0xvZ291dCk7XG5cdFx0dGhpcy5jYXBhVHdvRmFjdG9yID0gY2FwYShDYXBhLlR3b0ZhY3Rvcik7XG5cblx0XHR0aGlzLmF1dG9Mb2dvdXQgPSBTZXR0aW5zU3RvcmUuYXV0b0xvZ291dDtcblx0XHR0aGlzLmF1dG9Mb2dvdXQudHJpZ2dlciA9IGtvLm9ic2VydmFibGUoU2F2ZVNldHRpbmdzU3RlcC5JZGxlKTtcblxuXHRcdHRoaXMuYXV0b0xvZ291dE9wdGlvbnMgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHR0cmFuc2xhdG9yVHJpZ2dlcigpO1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0eyAnaWQnOiAwLCAnbmFtZSc6IGkxOG4oJ1NFVFRJTkdTX1NFQ1VSSVRZL0FVVE9MT0dJTl9ORVZFUl9PUFRJT05fTkFNRScpIH0sXG5cdFx0XHRcdHsgJ2lkJzogNSwgJ25hbWUnOiBpMThuKCdTRVRUSU5HU19TRUNVUklUWS9BVVRPTE9HSU5fTUlOVVRFU19PUFRJT05fTkFNRScsIHsgJ01JTlVURVMnOiA1IH0pIH0sXG5cdFx0XHRcdHsgJ2lkJzogMTAsICduYW1lJzogaTE4bignU0VUVElOR1NfU0VDVVJJVFkvQVVUT0xPR0lOX01JTlVURVNfT1BUSU9OX05BTUUnLCB7ICdNSU5VVEVTJzogMTAgfSkgfSxcblx0XHRcdFx0eyAnaWQnOiAzMCwgJ25hbWUnOiBpMThuKCdTRVRUSU5HU19TRUNVUklUWS9BVVRPTE9HSU5fTUlOVVRFU19PUFRJT05fTkFNRScsIHsgJ01JTlVURVMnOiAzMCB9KSB9LFxuXHRcdFx0XHR7ICdpZCc6IDYwLCAnbmFtZSc6IGkxOG4oJ1NFVFRJTkdTX1NFQ1VSSVRZL0FVVE9MT0dJTl9NSU5VVEVTX09QVElPTl9OQU1FJywgeyAnTUlOVVRFUyc6IDYwIH0pIH0sXG5cdFx0XHRcdHsgJ2lkJzogNjAgKiAyLCAnbmFtZSc6IGkxOG4oJ1NFVFRJTkdTX1NFQ1VSSVRZL0FVVE9MT0dJTl9IT1VSU19PUFRJT05fTkFNRScsIHsgJ0hPVVJTJzogMiB9KSB9LFxuXHRcdFx0XHR7ICdpZCc6IDYwICogNSwgJ25hbWUnOiBpMThuKCdTRVRUSU5HU19TRUNVUklUWS9BVVRPTE9HSU5fSE9VUlNfT1BUSU9OX05BTUUnLCB7ICdIT1VSUyc6IDUgfSkgfSxcblx0XHRcdFx0eyAnaWQnOiA2MCAqIDEwLCAnbmFtZSc6IGkxOG4oJ1NFVFRJTkdTX1NFQ1VSSVRZL0FVVE9MT0dJTl9IT1VSU19PUFRJT05fTkFNRScsIHsgJ0hPVVJTJzogMTAgfSkgfVxuXHRcdFx0XTtcblx0XHR9KTtcblx0fVxuXG5cdGNvbmZpZ3VyZVR3b0ZhY3RvcigpIHtcblx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9Ud29GYWN0b3JDb25maWd1cmF0aW9uJykpO1xuXHR9XG5cblx0b25CdWlsZCgpIHtcblx0XHRpZiAodGhpcy5jYXBhQXV0b0xvZ291dCkge1xuXHRcdFx0Xy5kZWxheSgoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGYwID0gc2V0dGluZ3NTYXZlSGVscGVyU2ltcGxlRnVuY3Rpb24odGhpcy5hdXRvTG9nb3V0LnRyaWdnZXIsIHRoaXMpO1xuXG5cdFx0XHRcdHRoaXMuYXV0b0xvZ291dC5zdWJzY3JpYmUoUmVtb3RlLnNhdmVTZXR0aW5nc0hlbHBlcignQXV0b0xvZ291dCcsIHBJbnQsIGYwKSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHsgU2VjdXJpdHlVc2VyU2V0dGluZ3MsIFNlY3VyaXR5VXNlclNldHRpbmdzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBTb2NpYWxTdG9yZSBmcm9tICdTdG9yZXMvU29jaWFsJztcblxuaW1wb3J0IHsgZ2V0QXBwIH0gZnJvbSAnSGVscGVyL0FwcHMvVXNlcic7XG5cbmltcG9ydCB7IGNvbW1hbmQgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5cbmNsYXNzIFNvY2lhbFVzZXJTZXR0aW5ncyB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHRoaXMuZ29vZ2xlRW5hYmxlID0gU29jaWFsU3RvcmUuZ29vZ2xlLmVuYWJsZWQ7XG5cdFx0dGhpcy5nb29nbGVFbmFibGVBdXRoID0gU29jaWFsU3RvcmUuZ29vZ2xlLmNhcGEuYXV0aDtcblx0XHR0aGlzLmdvb2dsZUVuYWJsZUF1dGhHbWFpbCA9IFNvY2lhbFN0b3JlLmdvb2dsZS5jYXBhLmF1dGhHbWFpbDtcblx0XHR0aGlzLmdvb2dsZUVuYWJsZURyaXZlID0gU29jaWFsU3RvcmUuZ29vZ2xlLmNhcGEuZHJpdmU7XG5cdFx0dGhpcy5nb29nbGVFbmFibGVQcmV2aWV3ID0gU29jaWFsU3RvcmUuZ29vZ2xlLmNhcGEucHJldmlldztcblxuXHRcdHRoaXMuZ29vZ2xlQWN0aW9ucyA9IFNvY2lhbFN0b3JlLmdvb2dsZS5sb2FkaW5nO1xuXHRcdHRoaXMuZ29vZ2xlTG9nZ2luZWQgPSBTb2NpYWxTdG9yZS5nb29nbGUubG9nZ2luZWQ7XG5cdFx0dGhpcy5nb29nbGVVc2VyTmFtZSA9IFNvY2lhbFN0b3JlLmdvb2dsZS51c2VyTmFtZTtcblxuXHRcdHRoaXMuZmFjZWJvb2tFbmFibGUgPSBTb2NpYWxTdG9yZS5mYWNlYm9vay5lbmFibGVkO1xuXG5cdFx0dGhpcy5mYWNlYm9va0FjdGlvbnMgPSBTb2NpYWxTdG9yZS5mYWNlYm9vay5sb2FkaW5nO1xuXHRcdHRoaXMuZmFjZWJvb2tMb2dnaW5lZCA9IFNvY2lhbFN0b3JlLmZhY2Vib29rLmxvZ2dpbmVkO1xuXHRcdHRoaXMuZmFjZWJvb2tVc2VyTmFtZSA9IFNvY2lhbFN0b3JlLmZhY2Vib29rLnVzZXJOYW1lO1xuXG5cdFx0dGhpcy50d2l0dGVyRW5hYmxlID0gU29jaWFsU3RvcmUudHdpdHRlci5lbmFibGVkO1xuXG5cdFx0dGhpcy50d2l0dGVyQWN0aW9ucyA9IFNvY2lhbFN0b3JlLnR3aXR0ZXIubG9hZGluZztcblx0XHR0aGlzLnR3aXR0ZXJMb2dnaW5lZCA9IFNvY2lhbFN0b3JlLnR3aXR0ZXIubG9nZ2luZWQ7XG5cdFx0dGhpcy50d2l0dGVyVXNlck5hbWUgPSBTb2NpYWxTdG9yZS50d2l0dGVyLnVzZXJOYW1lO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLmdvb2dsZUxvZ2dpbmVkKCkgJiYgIXNlbGYuZ29vZ2xlQWN0aW9ucygpKVxuXHRjb25uZWN0R29vZ2xlQ29tbWFuZCgpIHtcblx0XHRpZiAoIXRoaXMuZ29vZ2xlTG9nZ2luZWQoKSkge1xuXHRcdFx0Z2V0QXBwKCkuZ29vZ2xlQ29ubmVjdCgpO1xuXHRcdH1cblx0fVxuXG5cdEBjb21tYW5kKClcblx0ZGlzY29ubmVjdEdvb2dsZUNvbW1hbmQoKSB7XG5cdFx0Z2V0QXBwKCkuZ29vZ2xlRGlzY29ubmVjdCgpO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICFzZWxmLmZhY2Vib29rTG9nZ2luZWQoKSAmJiAhc2VsZi5mYWNlYm9va0FjdGlvbnMoKSlcblx0Y29ubmVjdEZhY2Vib29rQ29tbWFuZCgpIHtcblx0XHRpZiAoIXRoaXMuZmFjZWJvb2tMb2dnaW5lZCgpKSB7XG5cdFx0XHRnZXRBcHAoKS5mYWNlYm9va0Nvbm5lY3QoKTtcblx0XHR9XG5cdH1cblxuXHRAY29tbWFuZCgpXG5cdGRpc2Nvbm5lY3RGYWNlYm9va0NvbW1hbmQoKSB7XG5cdFx0Z2V0QXBwKCkuZmFjZWJvb2tEaXNjb25uZWN0KCk7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gIXNlbGYudHdpdHRlckxvZ2dpbmVkKCkgJiYgIXNlbGYudHdpdHRlckFjdGlvbnMoKSlcblx0Y29ubmVjdFR3aXR0ZXJDb21tYW5kKCkge1xuXHRcdGlmICghdGhpcy50d2l0dGVyTG9nZ2luZWQoKSkge1xuXHRcdFx0Z2V0QXBwKCkudHdpdHRlckNvbm5lY3QoKTtcblx0XHR9XG5cdH1cblxuXHRAY29tbWFuZCgpXG5cdGRpc2Nvbm5lY3RUd2l0dGVyQ29tbWFuZCgpIHtcblx0XHRnZXRBcHAoKS50d2l0dGVyRGlzY29ubmVjdCgpO1xuXHR9XG59XG5cbmV4cG9ydCB7IFNvY2lhbFVzZXJTZXR0aW5ncywgU29jaWFsVXNlclNldHRpbmdzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgU3RvcmFnZVJlc3VsdFR5cGUsIE5vdGlmaWNhdGlvbiB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyBnZXROb3RpZmljYXRpb25Gcm9tUmVzcG9uc2UsIGkxOG4gfSBmcm9tICdDb21tb24vVHJhbnNsYXRvcic7XG5cbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuaW1wb3J0IHsgY29tbWFuZCB9IGZyb20gJ0tub2luL0tub2luJztcblxuY2xhc3MgQ2hhbmdlUGFzc3dvcmRVc2VyU2V0dGluZ3Mge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmNoYW5nZVByb2Nlc3MgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMuZXJyb3JEZXNjcmlwdGlvbiA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMucGFzc3dvcmRNaXNtYXRjaCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMucGFzc3dvcmRVcGRhdGVFcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMucGFzc3dvcmRVcGRhdGVTdWNjZXNzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLmN1cnJlbnRQYXNzd29yZCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuY3VycmVudFBhc3N3b3JkLmVycm9yID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5uZXdQYXNzd29yZCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMubmV3UGFzc3dvcmQyID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmN1cnJlbnRQYXNzd29yZC5zdWJzY3JpYmUoKCkgPT4ge1xuXHRcdFx0dGhpcy5wYXNzd29yZFVwZGF0ZUVycm9yKGZhbHNlKTtcblx0XHRcdHRoaXMucGFzc3dvcmRVcGRhdGVTdWNjZXNzKGZhbHNlKTtcblx0XHRcdHRoaXMuY3VycmVudFBhc3N3b3JkLmVycm9yKGZhbHNlKTtcblx0XHR9KTtcblxuXHRcdHRoaXMubmV3UGFzc3dvcmQuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMucGFzc3dvcmRVcGRhdGVFcnJvcihmYWxzZSk7XG5cdFx0XHR0aGlzLnBhc3N3b3JkVXBkYXRlU3VjY2VzcyhmYWxzZSk7XG5cdFx0XHR0aGlzLnBhc3N3b3JkTWlzbWF0Y2goZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5uZXdQYXNzd29yZDIuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMucGFzc3dvcmRVcGRhdGVFcnJvcihmYWxzZSk7XG5cdFx0XHR0aGlzLnBhc3N3b3JkVXBkYXRlU3VjY2VzcyhmYWxzZSk7XG5cdFx0XHR0aGlzLnBhc3N3b3JkTWlzbWF0Y2goZmFsc2UpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5vbkNoYW5nZVBhc3N3b3JkUmVzcG9uc2UgPSBfLmJpbmQodGhpcy5vbkNoYW5nZVBhc3N3b3JkUmVzcG9uc2UsIHRoaXMpO1xuXHR9XG5cblx0QGNvbW1hbmQoXG5cdFx0KHNlbGYpID0+XG5cdFx0XHQhc2VsZi5jaGFuZ2VQcm9jZXNzKCkgJiYgJycgIT09IHNlbGYuY3VycmVudFBhc3N3b3JkKCkgJiYgJycgIT09IHNlbGYubmV3UGFzc3dvcmQoKSAmJiAnJyAhPT0gc2VsZi5uZXdQYXNzd29yZDIoKVxuXHQpXG5cdHNhdmVOZXdQYXNzd29yZENvbW1hbmQoKSB7XG5cdFx0aWYgKHRoaXMubmV3UGFzc3dvcmQoKSAhPT0gdGhpcy5uZXdQYXNzd29yZDIoKSkge1xuXHRcdFx0dGhpcy5wYXNzd29yZE1pc21hdGNoKHRydWUpO1xuXHRcdFx0dGhpcy5lcnJvckRlc2NyaXB0aW9uKGkxOG4oJ1NFVFRJTkdTX0NIQU5HRV9QQVNTV09SRC9FUlJPUl9QQVNTV09SRF9NSVNNQVRDSCcpKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5jaGFuZ2VQcm9jZXNzKHRydWUpO1xuXG5cdFx0XHR0aGlzLnBhc3N3b3JkVXBkYXRlRXJyb3IoZmFsc2UpO1xuXHRcdFx0dGhpcy5wYXNzd29yZFVwZGF0ZVN1Y2Nlc3MoZmFsc2UpO1xuXHRcdFx0dGhpcy5jdXJyZW50UGFzc3dvcmQuZXJyb3IoZmFsc2UpO1xuXHRcdFx0dGhpcy5wYXNzd29yZE1pc21hdGNoKGZhbHNlKTtcblx0XHRcdHRoaXMuZXJyb3JEZXNjcmlwdGlvbignJyk7XG5cblx0XHRcdFJlbW90ZS5jaGFuZ2VQYXNzd29yZCh0aGlzLm9uQ2hhbmdlUGFzc3dvcmRSZXNwb25zZSwgdGhpcy5jdXJyZW50UGFzc3dvcmQoKSwgdGhpcy5uZXdQYXNzd29yZCgpKTtcblx0XHR9XG5cdH1cblxuXHRvbkhpZGUoKSB7XG5cdFx0dGhpcy5jaGFuZ2VQcm9jZXNzKGZhbHNlKTtcblx0XHR0aGlzLmN1cnJlbnRQYXNzd29yZCgnJyk7XG5cdFx0dGhpcy5uZXdQYXNzd29yZCgnJyk7XG5cdFx0dGhpcy5uZXdQYXNzd29yZDIoJycpO1xuXHRcdHRoaXMuZXJyb3JEZXNjcmlwdGlvbignJyk7XG5cdFx0dGhpcy5wYXNzd29yZE1pc21hdGNoKGZhbHNlKTtcblx0XHR0aGlzLmN1cnJlbnRQYXNzd29yZC5lcnJvcihmYWxzZSk7XG5cdH1cblxuXHRvbkNoYW5nZVBhc3N3b3JkUmVzcG9uc2UocmVzdWx0LCBkYXRhKSB7XG5cdFx0dGhpcy5jaGFuZ2VQcm9jZXNzKGZhbHNlKTtcblx0XHR0aGlzLnBhc3N3b3JkTWlzbWF0Y2goZmFsc2UpO1xuXHRcdHRoaXMuZXJyb3JEZXNjcmlwdGlvbignJyk7XG5cdFx0dGhpcy5jdXJyZW50UGFzc3dvcmQuZXJyb3IoZmFsc2UpO1xuXG5cdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KSB7XG5cdFx0XHR0aGlzLmN1cnJlbnRQYXNzd29yZCgnJyk7XG5cdFx0XHR0aGlzLm5ld1Bhc3N3b3JkKCcnKTtcblx0XHRcdHRoaXMubmV3UGFzc3dvcmQyKCcnKTtcblxuXHRcdFx0dGhpcy5wYXNzd29yZFVwZGF0ZVN1Y2Nlc3ModHJ1ZSk7XG5cdFx0XHR0aGlzLmN1cnJlbnRQYXNzd29yZC5lcnJvcihmYWxzZSk7XG5cblx0XHRcdGdldEFwcCgpLnNldENsaWVudFNpZGVUb2tlbihkYXRhLlJlc3VsdCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmIChkYXRhICYmIE5vdGlmaWNhdGlvbi5DdXJyZW50UGFzc3dvcmRJbmNvcnJlY3QgPT09IGRhdGEuRXJyb3JDb2RlKSB7XG5cdFx0XHRcdHRoaXMuY3VycmVudFBhc3N3b3JkLmVycm9yKHRydWUpO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnBhc3N3b3JkVXBkYXRlRXJyb3IodHJ1ZSk7XG5cdFx0XHR0aGlzLmVycm9yRGVzY3JpcHRpb24oZ2V0Tm90aWZpY2F0aW9uRnJvbVJlc3BvbnNlKGRhdGEsIE5vdGlmaWNhdGlvbi5Db3VsZE5vdFNhdmVOZXdQYXNzd29yZCkpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgeyBDaGFuZ2VQYXNzd29yZFVzZXJTZXR0aW5ncywgQ2hhbmdlUGFzc3dvcmRVc2VyU2V0dGluZ3MgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IFRlbXBsYXRlU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvVGVtcGxhdGUnO1xuaW1wb3J0IFJlbW90ZSBmcm9tICdSZW1vdGUvVXNlci9BamF4JztcblxuaW1wb3J0IHsgZ2V0QXBwIH0gZnJvbSAnSGVscGVyL0FwcHMvVXNlcic7XG5cbmltcG9ydCB7IHNob3dTY3JlZW5Qb3B1cCB9IGZyb20gJ0tub2luL0tub2luJztcblxuY2xhc3MgVGVtcGxhdGVzVXNlclNldHRpbmdzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy50ZW1wbGF0ZXMgPSBUZW1wbGF0ZVN0b3JlLnRlbXBsYXRlcztcblxuXHRcdHRoaXMucHJvY2Vzc1RleHQgPSBrby5jb21wdXRlZCgoKSA9PlxuXHRcdFx0VGVtcGxhdGVTdG9yZS50ZW1wbGF0ZXMubG9hZGluZygpID8gaTE4bignU0VUVElOR1NfVEVNUExFVFMvTE9BRElOR19QUk9DRVNTJykgOiAnJ1xuXHRcdCk7XG5cdFx0dGhpcy52aXNpYmlsaXR5ID0ga28uY29tcHV0ZWQoKCkgPT4gKCcnID09PSB0aGlzLnByb2Nlc3NUZXh0KCkgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJykpO1xuXG5cdFx0dGhpcy50ZW1wbGF0ZUZvckRlbGV0aW9uID0ga28ub2JzZXJ2YWJsZShudWxsKS5kZWxldGVBY2Nlc3NIZWxwZXIoKTtcblx0fVxuXG5cdHNjcm9sbGFibGVPcHRpb25zKHNXcmFwcGVyKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGhhbmRsZTogJy5kcmFnLWhhbmRsZScsXG5cdFx0XHRjb250YWlubWVudDogc1dyYXBwZXIgfHwgJ3BhcmVudCcsXG5cdFx0XHRheGlzOiAneSdcblx0XHR9O1xuXHR9XG5cblx0YWRkTmV3VGVtcGxhdGUoKSB7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvVGVtcGxhdGUnKSk7XG5cdH1cblxuXHRlZGl0VGVtcGxhdGUob1RlbXBsYXRlSXRlbSkge1xuXHRcdGlmIChvVGVtcGxhdGVJdGVtKSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9UZW1wbGF0ZScpLCBbb1RlbXBsYXRlSXRlbV0pO1xuXHRcdH1cblx0fVxuXG5cdGRlbGV0ZVRlbXBsYXRlKHRlbXBsYXRlVG9SZW1vdmUpIHtcblx0XHRpZiAodGVtcGxhdGVUb1JlbW92ZSAmJiB0ZW1wbGF0ZVRvUmVtb3ZlLmRlbGV0ZUFjY2VzcygpKSB7XG5cdFx0XHR0aGlzLnRlbXBsYXRlRm9yRGVsZXRpb24obnVsbCk7XG5cblx0XHRcdGlmICh0ZW1wbGF0ZVRvUmVtb3ZlKSB7XG5cdFx0XHRcdHRoaXMudGVtcGxhdGVzLnJlbW92ZSgodGVtcGxhdGUpID0+IHRlbXBsYXRlVG9SZW1vdmUgPT09IHRlbXBsYXRlKTtcblxuXHRcdFx0XHRSZW1vdGUudGVtcGxhdGVEZWxldGUoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMucmVsb2FkVGVtcGxhdGVzKCk7XG5cdFx0XHRcdH0sIHRlbXBsYXRlVG9SZW1vdmUuaWQpO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHJlbG9hZFRlbXBsYXRlcygpIHtcblx0XHRnZXRBcHAoKS50ZW1wbGF0ZXMoKTtcblx0fVxuXG5cdG9uQnVpbGQob0RvbSkge1xuXHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdFx0b0RvbS5vbignY2xpY2snLCAnLnRlbXBsYXRlcy1saXN0IC50ZW1wbGF0ZS1pdGVtIC5lLWFjdGlvbicsIGZ1bmN0aW9uKCkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbGluZSBwcmVmZXItYXJyb3ctY2FsbGJhY2tcblx0XHRcdGNvbnN0IHRlbXBsYXRlID0ga28uZGF0YUZvcih0aGlzKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblx0XHRcdGlmICh0ZW1wbGF0ZSkge1xuXHRcdFx0XHRzZWxmLmVkaXRUZW1wbGF0ZSh0ZW1wbGF0ZSk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnJlbG9hZFRlbXBsYXRlcygpO1xuXHR9XG59XG5cbmV4cG9ydCB7IFRlbXBsYXRlc1VzZXJTZXR0aW5ncywgVGVtcGxhdGVzVXNlclNldHRpbmdzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IENsaWVudFNpZGVLZXlOYW1lLCBOb3RpZmljYXRpb24sIE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyB0cmltLCBub29wIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcbmltcG9ydCB7IGdldE5vdGlmaWNhdGlvbiwgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IHsgcmVtb3ZlRm9sZGVyRnJvbUNhY2hlTGlzdCB9IGZyb20gJ0NvbW1vbi9DYWNoZSc7XG5cbmltcG9ydCB7IGFwcFNldHRpbmdzR2V0IH0gZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5pbXBvcnQgKiBhcyBMb2NhbCBmcm9tICdTdG9yYWdlL0NsaWVudCc7XG5cbmltcG9ydCBGb2xkZXJTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9Gb2xkZXInO1xuXG5pbXBvcnQgUHJvbWlzZXMgZnJvbSAnUHJvbWlzZXMvVXNlci9BamF4JztcbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyBzaG93U2NyZWVuUG9wdXAgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5cbmNsYXNzIEZvbGRlcnNVc2VyU2V0dGluZ3Mge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLmRpc3BsYXlTcGVjU2V0dGluZyA9IEZvbGRlclN0b3JlLmRpc3BsYXlTcGVjU2V0dGluZztcblx0XHR0aGlzLmZvbGRlckxpc3QgPSBGb2xkZXJTdG9yZS5mb2xkZXJMaXN0O1xuXG5cdFx0dGhpcy5mb2xkZXJMaXN0SGVscCA9IGtvLm9ic2VydmFibGUoJycpLmV4dGVuZCh7IHRocm90dGxlOiBNYWdpY3MuVGltZTEwMG1zIH0pO1xuXG5cdFx0dGhpcy5sb2FkaW5nID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgbG9hZGluZyA9IEZvbGRlclN0b3JlLmZvbGRlcnNMb2FkaW5nKCksXG5cdFx0XHRcdGNyZWF0aW5nID0gRm9sZGVyU3RvcmUuZm9sZGVyc0NyZWF0aW5nKCksXG5cdFx0XHRcdGRlbGV0aW5nID0gRm9sZGVyU3RvcmUuZm9sZGVyc0RlbGV0aW5nKCksXG5cdFx0XHRcdHJlbmFtaW5nID0gRm9sZGVyU3RvcmUuZm9sZGVyc1JlbmFtaW5nKCk7XG5cblx0XHRcdHJldHVybiBsb2FkaW5nIHx8IGNyZWF0aW5nIHx8IGRlbGV0aW5nIHx8IHJlbmFtaW5nO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5mb2xkZXJGb3JEZWxldGlvbiA9IGtvLm9ic2VydmFibGUobnVsbCkuZGVsZXRlQWNjZXNzSGVscGVyKCk7XG5cblx0XHR0aGlzLmZvbGRlckZvckVkaXQgPSBrby5vYnNlcnZhYmxlKG51bGwpLmV4dGVuZCh7IHRvZ2dsZVN1YnNjcmliZVByb3BlcnR5OiBbdGhpcywgJ2VkaXRlZCddIH0pO1xuXG5cdFx0dGhpcy51c2VJbWFwU3Vic2NyaWJlID0gISFhcHBTZXR0aW5nc0dldCgndXNlSW1hcFN1YnNjcmliZScpO1xuXHR9XG5cblx0Zm9sZGVyRWRpdE9uRW50ZXIoZm9sZGVyKSB7XG5cdFx0Y29uc3QgbmFtZVRvRWRpdCA9IGZvbGRlciA/IHRyaW0oZm9sZGVyLm5hbWVGb3JFZGl0KCkpIDogJyc7XG5cblx0XHRpZiAoJycgIT09IG5hbWVUb0VkaXQgJiYgZm9sZGVyLm5hbWUoKSAhPT0gbmFtZVRvRWRpdCkge1xuXHRcdFx0TG9jYWwuc2V0KENsaWVudFNpZGVLZXlOYW1lLkZvbGRlcnNMYXNoSGFzaCwgJycpO1xuXG5cdFx0XHRnZXRBcHAoKS5mb2xkZXJzUHJvbWlzZXNBY3Rpb25IZWxwZXIoXG5cdFx0XHRcdFByb21pc2VzLmZvbGRlclJlbmFtZShmb2xkZXIuZnVsbE5hbWVSYXcsIG5hbWVUb0VkaXQsIEZvbGRlclN0b3JlLmZvbGRlcnNSZW5hbWluZyksXG5cdFx0XHRcdE5vdGlmaWNhdGlvbi5DYW50UmVuYW1lRm9sZGVyXG5cdFx0XHQpO1xuXG5cdFx0XHRyZW1vdmVGb2xkZXJGcm9tQ2FjaGVMaXN0KGZvbGRlci5mdWxsTmFtZVJhdyk7XG5cblx0XHRcdGZvbGRlci5uYW1lKG5hbWVUb0VkaXQpO1xuXHRcdH1cblxuXHRcdGZvbGRlci5lZGl0ZWQoZmFsc2UpO1xuXHR9XG5cblx0Zm9sZGVyRWRpdE9uRXNjKGZvbGRlcikge1xuXHRcdGlmIChmb2xkZXIpIHtcblx0XHRcdGZvbGRlci5lZGl0ZWQoZmFsc2UpO1xuXHRcdH1cblx0fVxuXG5cdG9uU2hvdygpIHtcblx0XHRGb2xkZXJTdG9yZS5mb2xkZXJMaXN0LmVycm9yKCcnKTtcblx0fVxuXG5cdG9uQnVpbGQob0RvbSkge1xuXHRcdG9Eb21cblx0XHRcdC5vbignbW91c2VvdmVyJywgJy5kZWxldGUtZm9sZGVyLXBhcmVudCcsICgpID0+IHtcblx0XHRcdFx0dGhpcy5mb2xkZXJMaXN0SGVscChpMThuKCdTRVRUSU5HU19GT0xERVJTL0hFTFBfREVMRVRFX0ZPTERFUicpKTtcblx0XHRcdH0pXG5cdFx0XHQub24oJ21vdXNlb3ZlcicsICcuc3Vic2NyaWJlLWZvbGRlci1wYXJlbnQnLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9sZGVyTGlzdEhlbHAoaTE4bignU0VUVElOR1NfRk9MREVSUy9IRUxQX1NIT1dfSElERV9GT0xERVInKSk7XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdtb3VzZW92ZXInLCAnLmNoZWNrLWZvbGRlci1wYXJlbnQnLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9sZGVyTGlzdEhlbHAoaTE4bignU0VUVElOR1NfRk9MREVSUy9IRUxQX0NIRUNLX0ZPUl9ORVdfTUVTU0FHRVMnKSk7XG5cdFx0XHR9KVxuXHRcdFx0Lm9uKCdtb3VzZW91dCcsICcuc3Vic2NyaWJlLWZvbGRlci1wYXJlbnQsIC5jaGVjay1mb2xkZXItcGFyZW50LCAuZGVsZXRlLWZvbGRlci1wYXJlbnQnLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZm9sZGVyTGlzdEhlbHAoJycpO1xuXHRcdFx0fSk7XG5cdH1cblxuXHRjcmVhdGVGb2xkZXIoKSB7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvRm9sZGVyQ3JlYXRlJykpO1xuXHR9XG5cblx0c3lzdGVtRm9sZGVyKCkge1xuXHRcdHNob3dTY3JlZW5Qb3B1cChyZXF1aXJlKCdWaWV3L1BvcHVwL0ZvbGRlclN5c3RlbScpKTtcblx0fVxuXG5cdGRlbGV0ZUZvbGRlcihmb2xkZXJUb1JlbW92ZSkge1xuXHRcdGlmIChcblx0XHRcdGZvbGRlclRvUmVtb3ZlICYmXG5cdFx0XHRmb2xkZXJUb1JlbW92ZS5jYW5CZURlbGV0ZWQoKSAmJlxuXHRcdFx0Zm9sZGVyVG9SZW1vdmUuZGVsZXRlQWNjZXNzKCkgJiZcblx0XHRcdDAgPT09IGZvbGRlclRvUmVtb3ZlLnByaXZhdGVNZXNzYWdlQ291bnRBbGwoKVxuXHRcdCkge1xuXHRcdFx0dGhpcy5mb2xkZXJGb3JEZWxldGlvbihudWxsKTtcblxuXHRcdFx0aWYgKGZvbGRlclRvUmVtb3ZlKSB7XG5cdFx0XHRcdGNvbnN0IGZSZW1vdmVGb2xkZXIgPSBmdW5jdGlvbihmb2xkZXIpIHtcblx0XHRcdFx0XHRpZiAoZm9sZGVyVG9SZW1vdmUgPT09IGZvbGRlcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGZvbGRlci5zdWJGb2xkZXJzLnJlbW92ZShmUmVtb3ZlRm9sZGVyKTtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH07XG5cblx0XHRcdFx0TG9jYWwuc2V0KENsaWVudFNpZGVLZXlOYW1lLkZvbGRlcnNMYXNoSGFzaCwgJycpO1xuXG5cdFx0XHRcdEZvbGRlclN0b3JlLmZvbGRlckxpc3QucmVtb3ZlKGZSZW1vdmVGb2xkZXIpO1xuXG5cdFx0XHRcdGdldEFwcCgpLmZvbGRlcnNQcm9taXNlc0FjdGlvbkhlbHBlcihcblx0XHRcdFx0XHRQcm9taXNlcy5mb2xkZXJEZWxldGUoZm9sZGVyVG9SZW1vdmUuZnVsbE5hbWVSYXcsIEZvbGRlclN0b3JlLmZvbGRlcnNEZWxldGluZyksXG5cdFx0XHRcdFx0Tm90aWZpY2F0aW9uLkNhbnREZWxldGVGb2xkZXJcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRyZW1vdmVGb2xkZXJGcm9tQ2FjaGVMaXN0KGZvbGRlclRvUmVtb3ZlLmZ1bGxOYW1lUmF3KTtcblx0XHRcdH1cblx0XHR9IGVsc2UgaWYgKDAgPCBmb2xkZXJUb1JlbW92ZS5wcml2YXRlTWVzc2FnZUNvdW50QWxsKCkpIHtcblx0XHRcdEZvbGRlclN0b3JlLmZvbGRlckxpc3QuZXJyb3IoZ2V0Tm90aWZpY2F0aW9uKE5vdGlmaWNhdGlvbi5DYW50RGVsZXRlTm9uRW1wdHlGb2xkZXIpKTtcblx0XHR9XG5cdH1cblxuXHRzdWJzY3JpYmVGb2xkZXIoZm9sZGVyKSB7XG5cdFx0TG9jYWwuc2V0KENsaWVudFNpZGVLZXlOYW1lLkZvbGRlcnNMYXNoSGFzaCwgJycpO1xuXHRcdFJlbW90ZS5mb2xkZXJTZXRTdWJzY3JpYmUobm9vcCwgZm9sZGVyLmZ1bGxOYW1lUmF3LCB0cnVlKTtcblx0XHRmb2xkZXIuc3ViU2NyaWJlZCh0cnVlKTtcblx0fVxuXG5cdHVuU3Vic2NyaWJlRm9sZGVyKGZvbGRlcikge1xuXHRcdExvY2FsLnNldChDbGllbnRTaWRlS2V5TmFtZS5Gb2xkZXJzTGFzaEhhc2gsICcnKTtcblx0XHRSZW1vdGUuZm9sZGVyU2V0U3Vic2NyaWJlKG5vb3AsIGZvbGRlci5mdWxsTmFtZVJhdywgZmFsc2UpO1xuXHRcdGZvbGRlci5zdWJTY3JpYmVkKGZhbHNlKTtcblx0fVxuXG5cdGNoZWNrYWJsZVRydWVGb2xkZXIoZm9sZGVyKSB7XG5cdFx0UmVtb3RlLmZvbGRlclNldENoZWNrYWJsZShub29wLCBmb2xkZXIuZnVsbE5hbWVSYXcsIHRydWUpO1xuXHRcdGZvbGRlci5jaGVja2FibGUodHJ1ZSk7XG5cdH1cblxuXHRjaGVja2FibGVGYWxzZUZvbGRlcihmb2xkZXIpIHtcblx0XHRSZW1vdGUuZm9sZGVyU2V0Q2hlY2thYmxlKG5vb3AsIGZvbGRlci5mdWxsTmFtZVJhdywgZmFsc2UpO1xuXHRcdGZvbGRlci5jaGVja2FibGUoZmFsc2UpO1xuXHR9XG59XG5cbmV4cG9ydCB7IEZvbGRlcnNVc2VyU2V0dGluZ3MsIEZvbGRlcnNVc2VyU2V0dGluZ3MgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQgJCBmcm9tICckJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCBKdWEgZnJvbSAnSnVhJztcblxuaW1wb3J0IHsgU2F2ZVNldHRpbmdzU3RlcCwgVXBsb2FkRXJyb3JDb2RlLCBDYXBhLCBNYWdpY3MgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgY2hhbmdlVGhlbWUsIGNvbnZlcnRUaGVtZU5hbWUgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgdXNlckJhY2tncm91bmQsIHRoZW1lUHJldmlld0xpbmssIHVwbG9hZEJhY2tncm91bmQgfSBmcm9tICdDb21tb24vTGlua3MnO1xuaW1wb3J0IHsgaTE4biB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcblxuaW1wb3J0IHsgY2FwYSB9IGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5pbXBvcnQgVGhlbWVTdG9yZSBmcm9tICdTdG9yZXMvVGhlbWUnO1xuXG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5jbGFzcyBUaGVtZXNVc2VyU2V0dGluZ3Mge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHR0aGlzLnRoZW1lID0gVGhlbWVTdG9yZS50aGVtZTtcblx0XHR0aGlzLnRoZW1lcyA9IFRoZW1lU3RvcmUudGhlbWVzO1xuXHRcdHRoaXMudGhlbWVzT2JqZWN0cyA9IGtvLm9ic2VydmFibGVBcnJheShbXSk7XG5cblx0XHR0aGlzLmJhY2tncm91bmQgPSB7fTtcblx0XHR0aGlzLmJhY2tncm91bmQubmFtZSA9IFRoZW1lU3RvcmUudGhlbWVCYWNrZ3JvdW5kTmFtZTtcblx0XHR0aGlzLmJhY2tncm91bmQuaGFzaCA9IFRoZW1lU3RvcmUudGhlbWVCYWNrZ3JvdW5kSGFzaDtcblx0XHR0aGlzLmJhY2tncm91bmQudXBsb2FkZXJCdXR0b24gPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXHRcdHRoaXMuYmFja2dyb3VuZC5sb2FkaW5nID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5iYWNrZ3JvdW5kLmVycm9yID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmNhcGFVc2VyQmFja2dyb3VuZCA9IGtvLm9ic2VydmFibGUoY2FwYShDYXBhLlVzZXJCYWNrZ3JvdW5kKSk7XG5cblx0XHR0aGlzLnRoZW1lVHJpZ2dlciA9IGtvLm9ic2VydmFibGUoU2F2ZVNldHRpbmdzU3RlcC5JZGxlKS5leHRlbmQoeyB0aHJvdHRsZTogTWFnaWNzLlRpbWUxMDBtcyB9KTtcblxuXHRcdHRoaXMuaVRpbWVyID0gMDtcblx0XHR0aGlzLm9UaGVtZUFqYXhSZXF1ZXN0ID0gbnVsbDtcblxuXHRcdHRoaXMudGhlbWUuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuXHRcdFx0Xy5lYWNoKHRoaXMudGhlbWVzT2JqZWN0cygpLCAodGhlbWUpID0+IHtcblx0XHRcdFx0dGhlbWUuc2VsZWN0ZWQodmFsdWUgPT09IHRoZW1lLm5hbWUpO1xuXHRcdFx0fSk7XG5cblx0XHRcdGNoYW5nZVRoZW1lKHZhbHVlLCB0aGlzLnRoZW1lVHJpZ2dlcik7XG5cblx0XHRcdFJlbW90ZS5zYXZlU2V0dGluZ3MobnVsbCwge1xuXHRcdFx0XHQnVGhlbWUnOiB2YWx1ZVxuXHRcdFx0fSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmJhY2tncm91bmQuaGFzaC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XG5cdFx0XHRjb25zdCAkYmcgPSAkKCcjcmwtYmcnKTtcblx0XHRcdGlmICghdmFsdWUpIHtcblx0XHRcdFx0aWYgKCRiZy5kYXRhKCdiYWNrc3RyZXRjaCcpKSB7XG5cdFx0XHRcdFx0JGJnLmJhY2tzdHJldGNoKCdkZXN0cm95JykuYXR0cignc3R5bGUnLCAnJyk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdCRiZ1xuXHRcdFx0XHRcdC5hdHRyKCdzdHlsZScsICdiYWNrZ3JvdW5kLWltYWdlOiBub25lICFpbXBvcnRhbnQ7Jylcblx0XHRcdFx0XHQuYmFja3N0cmV0Y2godXNlckJhY2tncm91bmQodmFsdWUpLCB7XG5cdFx0XHRcdFx0XHRmYWRlOiBNYWdpY3MuVGltZTFzLFxuXHRcdFx0XHRcdFx0Y2VudGVyZWRYOiB0cnVlLFxuXHRcdFx0XHRcdFx0Y2VudGVyZWRZOiB0cnVlXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQucmVtb3ZlQXR0cignc3R5bGUnKTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdG9uQnVpbGQoKSB7XG5cdFx0Y29uc3QgY3VycmVudFRoZW1lID0gdGhpcy50aGVtZSgpO1xuXG5cdFx0dGhpcy50aGVtZXNPYmplY3RzKFxuXHRcdFx0Xy5tYXAodGhpcy50aGVtZXMoKSwgKHRoZW1lKSA9PiAoe1xuXHRcdFx0XHRuYW1lOiB0aGVtZSxcblx0XHRcdFx0bmFtZURpc3BsYXk6IGNvbnZlcnRUaGVtZU5hbWUodGhlbWUpLFxuXHRcdFx0XHRzZWxlY3RlZDoga28ub2JzZXJ2YWJsZSh0aGVtZSA9PT0gY3VycmVudFRoZW1lKSxcblx0XHRcdFx0dGhlbWVQcmV2aWV3U3JjOiB0aGVtZVByZXZpZXdMaW5rKHRoZW1lKVxuXHRcdFx0fSkpXG5cdFx0KTtcblxuXHRcdHRoaXMuaW5pdFVwbG9hZGVyKCk7XG5cdH1cblxuXHRvblNob3coKSB7XG5cdFx0dGhpcy5iYWNrZ3JvdW5kLmVycm9yKCcnKTtcblx0fVxuXG5cdGNsZWFyQmFja2dyb3VuZCgpIHtcblx0XHRpZiAodGhpcy5jYXBhVXNlckJhY2tncm91bmQoKSkge1xuXHRcdFx0UmVtb3RlLmNsZWFyVXNlckJhY2tncm91bmQoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmJhY2tncm91bmQubmFtZSgnJyk7XG5cdFx0XHRcdHRoaXMuYmFja2dyb3VuZC5oYXNoKCcnKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGluaXRVcGxvYWRlcigpIHtcblx0XHRpZiAodGhpcy5iYWNrZ3JvdW5kLnVwbG9hZGVyQnV0dG9uKCkgJiYgdGhpcy5jYXBhVXNlckJhY2tncm91bmQoKSkge1xuXHRcdFx0Y29uc3Qgb0p1YSA9IG5ldyBKdWEoe1xuXHRcdFx0XHQnYWN0aW9uJzogdXBsb2FkQmFja2dyb3VuZCgpLFxuXHRcdFx0XHQnbmFtZSc6ICd1cGxvYWRlcicsXG5cdFx0XHRcdCdxdWV1ZVNpemUnOiAxLFxuXHRcdFx0XHQnbXVsdGlwbGVTaXplTGltaXQnOiAxLFxuXHRcdFx0XHQnZGlzYWJsZURyYWdBbmREcm9wJzogdHJ1ZSxcblx0XHRcdFx0J2Rpc2FibGVNdWx0aXBsZSc6IHRydWUsXG5cdFx0XHRcdCdjbGlja0VsZW1lbnQnOiB0aGlzLmJhY2tncm91bmQudXBsb2FkZXJCdXR0b24oKVxuXHRcdFx0fSk7XG5cblx0XHRcdG9KdWFcblx0XHRcdFx0Lm9uKCdvblN0YXJ0JywgKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuYmFja2dyb3VuZC5sb2FkaW5nKHRydWUpO1xuXHRcdFx0XHRcdHRoaXMuYmFja2dyb3VuZC5lcnJvcignJyk7XG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5vbignb25Db21wbGV0ZScsIChpZCwgcmVzdWx0LCBkYXRhKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kLmxvYWRpbmcoZmFsc2UpO1xuXG5cdFx0XHRcdFx0aWYgKHJlc3VsdCAmJiBpZCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0ICYmIGRhdGEuUmVzdWx0Lk5hbWUgJiYgZGF0YS5SZXN1bHQuSGFzaCkge1xuXHRcdFx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kLm5hbWUoZGF0YS5SZXN1bHQuTmFtZSk7XG5cdFx0XHRcdFx0XHR0aGlzLmJhY2tncm91bmQuaGFzaChkYXRhLlJlc3VsdC5IYXNoKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kLm5hbWUoJycpO1xuXHRcdFx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kLmhhc2goJycpO1xuXG5cdFx0XHRcdFx0XHRsZXQgZXJyb3JNc2cgPSAnJztcblx0XHRcdFx0XHRcdGlmIChkYXRhLkVycm9yQ29kZSkge1xuXHRcdFx0XHRcdFx0XHRzd2l0Y2ggKGRhdGEuRXJyb3JDb2RlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y2FzZSBVcGxvYWRFcnJvckNvZGUuRmlsZUlzVG9vQmlnOlxuXHRcdFx0XHRcdFx0XHRcdFx0ZXJyb3JNc2cgPSBpMThuKCdTRVRUSU5HU19USEVNRVMvRVJST1JfRklMRV9JU19UT09fQklHJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0XHRcdFx0XHRjYXNlIFVwbG9hZEVycm9yQ29kZS5GaWxlVHlwZTpcblx0XHRcdFx0XHRcdFx0XHRcdGVycm9yTXNnID0gaTE4bignU0VUVElOR1NfVEhFTUVTL0VSUk9SX0ZJTEVfVFlQRV9FUlJPUicpO1xuXHRcdFx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdGlmICghZXJyb3JNc2cgJiYgZGF0YS5FcnJvck1lc3NhZ2UpIHtcblx0XHRcdFx0XHRcdFx0ZXJyb3JNc2cgPSBkYXRhLkVycm9yTWVzc2FnZTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5iYWNrZ3JvdW5kLmVycm9yKGVycm9yTXNnIHx8IGkxOG4oJ1NFVFRJTkdTX1RIRU1FUy9FUlJPUl9VTktOT1dOJykpO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHsgVGhlbWVzVXNlclNldHRpbmdzLCBUaGVtZXNVc2VyU2V0dGluZ3MgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IF8gZnJvbSAnXyc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBkZWxlZ2F0ZVJ1bk9uRGVzdHJveSwgYm9vbFRvQWpheCB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBNYWdpY3MgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgYklzSHR0cHMgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5cbmltcG9ydCBQZ3BTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9QZ3AnO1xuaW1wb3J0IFNldHRpbmdzU3RvcmUgZnJvbSAnU3RvcmVzL1VzZXIvU2V0dGluZ3MnO1xuXG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgc2hvd1NjcmVlblBvcHVwIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuXG5jbGFzcyBPcGVuUGdwVXNlclNldHRpbmdzIHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0dGhpcy5vcGVucGdwa2V5cyA9IFBncFN0b3JlLm9wZW5wZ3BrZXlzO1xuXHRcdHRoaXMub3BlbnBncGtleXNQdWJsaWMgPSBQZ3BTdG9yZS5vcGVucGdwa2V5c1B1YmxpYztcblx0XHR0aGlzLm9wZW5wZ3BrZXlzUHJpdmF0ZSA9IFBncFN0b3JlLm9wZW5wZ3BrZXlzUHJpdmF0ZTtcblxuXHRcdHRoaXMub3BlblBncEtleUZvckRlbGV0aW9uID0ga28ub2JzZXJ2YWJsZShudWxsKS5kZWxldGVBY2Nlc3NIZWxwZXIoKTtcblxuXHRcdHRoaXMuYWxsb3dEcmFmdEF1dG9zYXZlID0gU2V0dGluZ3NTdG9yZS5hbGxvd0RyYWZ0QXV0b3NhdmU7XG5cblx0XHR0aGlzLmlzSHR0cHMgPSBiSXNIdHRwcztcblx0fVxuXG5cdGFkZE9wZW5QZ3BLZXkoKSB7XG5cdFx0c2hvd1NjcmVlblBvcHVwKHJlcXVpcmUoJ1ZpZXcvUG9wdXAvQWRkT3BlblBncEtleScpKTtcblx0fVxuXG5cdGdlbmVyYXRlT3BlblBncEtleSgpIHtcblx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9OZXdPcGVuUGdwS2V5JykpO1xuXHR9XG5cblx0dmlld09wZW5QZ3BLZXkob3BlblBncEtleSkge1xuXHRcdGlmIChvcGVuUGdwS2V5KSB7XG5cdFx0XHRzaG93U2NyZWVuUG9wdXAocmVxdWlyZSgnVmlldy9Qb3B1cC9WaWV3T3BlblBncEtleScpLCBbb3BlblBncEtleV0pO1xuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBAcGFyYW0ge09wZW5QZ3BLZXlNb2RlbH0gb3BlblBncEtleVRvUmVtb3ZlXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0ZGVsZXRlT3BlblBncEtleShvcGVuUGdwS2V5VG9SZW1vdmUpIHtcblx0XHRpZiAob3BlblBncEtleVRvUmVtb3ZlICYmIG9wZW5QZ3BLZXlUb1JlbW92ZS5kZWxldGVBY2Nlc3MoKSkge1xuXHRcdFx0dGhpcy5vcGVuUGdwS2V5Rm9yRGVsZXRpb24obnVsbCk7XG5cblx0XHRcdGlmIChvcGVuUGdwS2V5VG9SZW1vdmUgJiYgUGdwU3RvcmUub3BlbnBncEtleXJpbmcpIHtcblx0XHRcdFx0Y29uc3QgZmluZGVkSXRlbSA9IF8uZmluZChQZ3BTdG9yZS5vcGVucGdwa2V5cygpLCAoa2V5KSA9PiBvcGVuUGdwS2V5VG9SZW1vdmUgPT09IGtleSk7XG5cdFx0XHRcdGlmIChmaW5kZWRJdGVtKSB7XG5cdFx0XHRcdFx0UGdwU3RvcmUub3BlbnBncGtleXMucmVtb3ZlKGZpbmRlZEl0ZW0pO1xuXHRcdFx0XHRcdGRlbGVnYXRlUnVuT25EZXN0cm95KGZpbmRlZEl0ZW0pO1xuXG5cdFx0XHRcdFx0UGdwU3RvcmUub3BlbnBncEtleXJpbmdbZmluZGVkSXRlbS5pc1ByaXZhdGUgPyAncHJpdmF0ZUtleXMnIDogJ3B1YmxpY0tleXMnXS5yZW1vdmVGb3JJZChmaW5kZWRJdGVtLmd1aWQpO1xuXG5cdFx0XHRcdFx0UGdwU3RvcmUub3BlbnBncEtleXJpbmcuc3RvcmUoKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGdldEFwcCgpLnJlbG9hZE9wZW5QZ3BLZXlzKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0b25CdWlsZCgpIHtcblx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdHRoaXMuYWxsb3dEcmFmdEF1dG9zYXZlLnN1YnNjcmliZShSZW1vdGUuc2F2ZVNldHRpbmdzSGVscGVyKCdBbGxvd0RyYWZ0QXV0b3NhdmUnLCBib29sVG9BamF4KSk7XG5cdFx0fSwgTWFnaWNzLlRpbWU1MG1zKTtcblx0fVxufVxuXG5leHBvcnQgeyBPcGVuUGdwVXNlclNldHRpbmdzLCBPcGVuUGdwVXNlclNldHRpbmdzIGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCB7IHZpZXcsIFZpZXdUeXBlIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RTeXN0ZW1Ecm9wRG93blVzZXJWaWV3IH0gZnJvbSAnVmlldy9Vc2VyL0Fic3RyYWN0U3lzdGVtRHJvcERvd24nO1xuXG5Admlldyh7XG5cdG5hbWU6ICdWaWV3L1VzZXIvU2V0dGluZ3MvU3lzdGVtRHJvcERvd24nLFxuXHR0eXBlOiBWaWV3VHlwZS5SaWdodCxcblx0dGVtcGxhdGVJRDogJ1N5c3RlbURyb3BEb3duJ1xufSlcbmNsYXNzIFN5c3RlbURyb3BEb3duU2V0dGluZ3NVc2VyVmlldyBleHRlbmRzIEFic3RyYWN0U3lzdGVtRHJvcERvd25Vc2VyVmlldyB7fVxuXG5leHBvcnQgeyBTeXN0ZW1Ecm9wRG93blNldHRpbmdzVXNlclZpZXcsIFN5c3RlbURyb3BEb3duU2V0dGluZ3NVc2VyVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgJCBmcm9tICckJztcbmltcG9ydCBrZXkgZnJvbSAna2V5JztcblxuaW1wb3J0IHsgS2V5U3RhdGUgfSBmcm9tICdDb21tb24vRW51bXMnO1xuaW1wb3J0IHsgbGVmdFBhbmVsRGlzYWJsZWQgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5pbXBvcnQgeyBzZXR0aW5ncywgaW5ib3ggfSBmcm9tICdDb21tb24vTGlua3MnO1xuaW1wb3J0IHsgZ2V0Rm9sZGVySW5ib3hOYW1lIH0gZnJvbSAnQ29tbW9uL0NhY2hlJztcblxuaW1wb3J0ICogYXMgU2V0dGluZ3MgZnJvbSAnU3RvcmFnZS9TZXR0aW5ncyc7XG5cbmltcG9ydCB7IHZpZXcsIFZpZXdUeXBlLCBzZXRIYXNoLCBzZXR0aW5nc01lbnVLZXlzSGFuZGxlciB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHZpZXcoe1xuXHRuYW1lOiAnVmlldy9Vc2VyL1NldHRpbmdzL01lbnUnLFxuXHR0eXBlOiBWaWV3VHlwZS5MZWZ0LFxuXHR0ZW1wbGF0ZUlEOiAnU2V0dGluZ3NNZW51J1xufSlcbmNsYXNzIE1lbnVTZXR0aW5nc1VzZXJWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdC8qKlxuXHQgKiBAcGFyYW0ge09iamVjdH0gc2NyZWVuXG5cdCAqL1xuXHRjb25zdHJ1Y3RvcihzY3JlZW4pIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5sZWZ0UGFuZWxEaXNhYmxlZCA9IGxlZnRQYW5lbERpc2FibGVkO1xuXG5cdFx0dGhpcy5tb2JpbGUgPSBTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJyk7XG5cblx0XHR0aGlzLm1lbnUgPSBzY3JlZW4ubWVudTtcblx0fVxuXG5cdG9uQnVpbGQoZG9tKSB7XG5cdFx0aWYgKHRoaXMubW9iaWxlKSB7XG5cdFx0XHRkb20ub24oJ2NsaWNrJywgJy5iLXNldHRpbmdzLW1lbnUgLmUtaXRlbS5zZWxlY3RhYmxlJywgKCkgPT4ge1xuXHRcdFx0XHRsZWZ0UGFuZWxEaXNhYmxlZCh0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdGtleSgndXAsIGRvd24nLCBLZXlTdGF0ZS5TZXR0aW5ncywgc2V0dGluZ3NNZW51S2V5c0hhbmRsZXIoJCgnLmItc2V0dGluZ3MtbWVudSAuZS1pdGVtJywgZG9tKSkpO1xuXHR9XG5cblx0bGluayhyb3V0ZSkge1xuXHRcdHJldHVybiBzZXR0aW5ncyhyb3V0ZSk7XG5cdH1cblxuXHRiYWNrVG9NYWlsQm94Q2xpY2soKSB7XG5cdFx0c2V0SGFzaChpbmJveChnZXRGb2xkZXJJbmJveE5hbWUoKSkpO1xuXHR9XG59XG5cbmV4cG9ydCB7IE1lbnVTZXR0aW5nc1VzZXJWaWV3LCBNZW51U2V0dGluZ3NVc2VyVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgeyBpbmJveCB9IGZyb20gJ0NvbW1vbi9MaW5rcyc7XG5pbXBvcnQgeyBnZXRGb2xkZXJJbmJveE5hbWUgfSBmcm9tICdDb21tb24vQ2FjaGUnO1xuaW1wb3J0IHsgbGVmdFBhbmVsRGlzYWJsZWQgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5cbmltcG9ydCAqIGFzIFNldHRpbmdzIGZyb20gJ1N0b3JhZ2UvU2V0dGluZ3MnO1xuXG5pbXBvcnQgTWVzc2FnZVN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL01lc3NhZ2UnO1xuXG5pbXBvcnQgeyB2aWV3LCBWaWV3VHlwZSwgc2V0SGFzaCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHZpZXcoe1xuXHRuYW1lOiAnVmlldy9Vc2VyL1NldHRpbmdzL1BhbmUnLFxuXHR0eXBlOiBWaWV3VHlwZS5SaWdodCxcblx0dGVtcGxhdGVJRDogJ1NldHRpbmdzUGFuZSdcbn0pXG5jbGFzcyBQYW5lU2V0dGluZ3NVc2VyVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5tb2JpbGUgPSBTZXR0aW5ncy5hcHBTZXR0aW5nc0dldCgnbW9iaWxlJyk7XG5cblx0XHR0aGlzLmxlZnRQYW5lbERpc2FibGVkID0gbGVmdFBhbmVsRGlzYWJsZWQ7XG5cdH1cblxuXHRvblNob3coKSB7XG5cdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2UobnVsbCk7XG5cdH1cblxuXHRoaWRlTGVmdChpdGVtLCBldmVudCkge1xuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cblx0XHRsZWZ0UGFuZWxEaXNhYmxlZCh0cnVlKTtcblx0fVxuXG5cdHNob3dMZWZ0KGl0ZW0sIGV2ZW50KSB7XG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuXHRcdGxlZnRQYW5lbERpc2FibGVkKGZhbHNlKTtcblx0fVxuXG5cdG9uQnVpbGQoZG9tKSB7XG5cdFx0aWYgKHRoaXMubW9iaWxlKSB7XG5cdFx0XHRkb20ub24oJ2NsaWNrJywgKCkgPT4ge1xuXHRcdFx0XHRsZWZ0UGFuZWxEaXNhYmxlZCh0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdGJhY2tUb01haWxCb3hDbGljaygpIHtcblx0XHRzZXRIYXNoKGluYm94KGdldEZvbGRlckluYm94TmFtZSgpKSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgUGFuZVNldHRpbmdzVXNlclZpZXcsIFBhbmVTZXR0aW5nc1VzZXJWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBib290c3RyYXAgZnJvbSAnYm9vdHN0cmFwJztcbmltcG9ydCBBcHAgZnJvbSAnQXBwL1VzZXInO1xuXG5ib290c3RyYXAoQXBwKTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcbmltcG9ydCBrZXkgZnJvbSAna2V5JztcbmltcG9ydCAkIGZyb20gJyQnO1xuXG5pbXBvcnQgeyBwU3RyaW5nLCBsb2cgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuaW1wb3J0IHsgS2V5U3RhdGUsIE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5cbmltcG9ydCB7IHBvcHVwLCBjb21tYW5kIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5AcG9wdXAoe1xuXHRuYW1lOiAnVmlldy9Qb3B1cC9NZXNzYWdlT3BlblBncCcsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNNZXNzYWdlT3BlblBncCdcbn0pXG5jbGFzcyBNZXNzYWdlT3BlblBncFBvcHVwVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5ub3RpZmljYXRpb24gPSBrby5vYnNlcnZhYmxlKCcnKTtcblxuXHRcdHRoaXMuc2VsZWN0ZWRLZXkgPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXHRcdHRoaXMucHJpdmF0ZUtleXMgPSBrby5vYnNlcnZhYmxlQXJyYXkoW10pO1xuXG5cdFx0dGhpcy5wYXNzd29yZCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMucGFzc3dvcmQuZm9jdXMgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmJ1dHRvbkZvY3VzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnJlc3VsdENhbGxiYWNrID0gbnVsbDtcblxuXHRcdHRoaXMuc3VibWl0UmVxdWVzdCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5zRGVmYXVsdEtleVNjb3BlID0gS2V5U3RhdGUuUG9wdXBNZXNzYWdlT3BlblBHUDtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiAhc2VsZi5zdWJtaXRSZXF1ZXN0KCkpXG5cdGRvQ29tbWFuZCgpIHtcblx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QodHJ1ZSk7XG5cblx0XHRfLmRlbGF5KCgpID0+IHtcblx0XHRcdGxldCBwcml2YXRlS2V5ID0gbnVsbDtcblxuXHRcdFx0dHJ5IHtcblx0XHRcdFx0aWYgKHRoaXMucmVzdWx0Q2FsbGJhY2sgJiYgdGhpcy5zZWxlY3RlZEtleSgpKSB7XG5cdFx0XHRcdFx0Y29uc3QgcHJpdmF0ZUtleXMgPSB0aGlzLnNlbGVjdGVkS2V5KCkuZ2V0TmF0aXZlS2V5cygpO1xuXHRcdFx0XHRcdHByaXZhdGVLZXkgPSBwcml2YXRlS2V5cyAmJiBwcml2YXRlS2V5c1swXSA/IHByaXZhdGVLZXlzWzBdIDogbnVsbDtcblxuXHRcdFx0XHRcdGlmIChwcml2YXRlS2V5KSB7XG5cdFx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIXByaXZhdGVLZXkuZGVjcnlwdChwU3RyaW5nKHRoaXMucGFzc3dvcmQoKSkpKSB7XG5cdFx0XHRcdFx0XHRcdFx0bG9nKCdFcnJvcjogUHJpdmF0ZSBrZXkgY2Fubm90IGJlIGRlY3J5cHRlZCcpO1xuXHRcdFx0XHRcdFx0XHRcdHByaXZhdGVLZXkgPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdFx0XHRcdGxvZyhlKTtcblx0XHRcdFx0XHRcdFx0cHJpdmF0ZUtleSA9IG51bGw7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGxvZygnRXJyb3I6IFByaXZhdGUga2V5IGNhbm5vdCBiZSBmb3VuZCcpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRsb2coZSk7XG5cdFx0XHRcdHByaXZhdGVLZXkgPSBudWxsO1xuXHRcdFx0fVxuXG5cdFx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuXG5cdFx0XHR0aGlzLmNhbmNlbENvbW1hbmQoKTtcblx0XHRcdHRoaXMucmVzdWx0Q2FsbGJhY2socHJpdmF0ZUtleSk7XG5cdFx0fSwgTWFnaWNzLlRpbWUxMDBtcyk7XG5cdH1cblxuXHRjbGVhclBvcHVwKCkge1xuXHRcdHRoaXMubm90aWZpY2F0aW9uKCcnKTtcblxuXHRcdHRoaXMucGFzc3dvcmQoJycpO1xuXHRcdHRoaXMucGFzc3dvcmQuZm9jdXMoZmFsc2UpO1xuXHRcdHRoaXMuYnV0dG9uRm9jdXMoZmFsc2UpO1xuXG5cdFx0dGhpcy5zZWxlY3RlZEtleShmYWxzZSk7XG5cdFx0dGhpcy5zdWJtaXRSZXF1ZXN0KGZhbHNlKTtcblxuXHRcdHRoaXMucmVzdWx0Q2FsbGJhY2sgPSBudWxsO1xuXHRcdHRoaXMucHJpdmF0ZUtleXMoW10pO1xuXHR9XG5cblx0b25CdWlsZChvRG9tKSB7XG5cdFx0a2V5KCd0YWIsc2hpZnQrdGFiJywgS2V5U3RhdGUuUG9wdXBNZXNzYWdlT3BlblBHUCwgKCkgPT4ge1xuXHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRcdGNhc2UgdGhpcy5wYXNzd29yZC5mb2N1cygpOlxuXHRcdFx0XHRcdHRoaXMuYnV0dG9uRm9jdXModHJ1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdGNhc2UgdGhpcy5idXR0b25Gb2N1cygpOlxuXHRcdFx0XHRcdHRoaXMucGFzc3dvcmQuZm9jdXModHJ1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXG5cdFx0Y29uc3Qgc2VsZiA9IHRoaXM7XG5cblx0XHRvRG9tLm9uKCdjbGljaycsICcua2V5LWxpc3RfX2l0ZW0nLCBmdW5jdGlvbigpIHtcblx0XHRcdC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLWFycm93LWNhbGxiYWNrXG5cblx0XHRcdG9Eb21cblx0XHRcdFx0LmZpbmQoJy5rZXktbGlzdF9faXRlbSAua2V5LWxpc3RfX2l0ZW1fX3JhZGlvJylcblx0XHRcdFx0LmFkZENsYXNzKCdpY29uLXJhZGlvLXVuY2hlY2tlZCcpXG5cdFx0XHRcdC5yZW1vdmVDbGFzcygnaWNvbi1yYWRpby1jaGVja2VkJyk7XG5cblx0XHRcdCQodGhpcylcblx0XHRcdFx0LmZpbmQoJy5rZXktbGlzdF9faXRlbV9fcmFkaW8nKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWludmFsaWQtdGhpc1xuXHRcdFx0XHQucmVtb3ZlQ2xhc3MoJ2ljb24tcmFkaW8tdW5jaGVja2VkJylcblx0XHRcdFx0LmFkZENsYXNzKCdpY29uLXJhZGlvLWNoZWNrZWQnKTtcblxuXHRcdFx0c2VsZi5zZWxlY3RlZEtleShrby5kYXRhRm9yKHRoaXMpKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbnZhbGlkLXRoaXNcblxuXHRcdFx0c2VsZi5wYXNzd29yZC5mb2N1cyh0cnVlKTtcblx0XHR9KTtcblx0fVxuXG5cdG9uSGlkZVdpdGhEZWxheSgpIHtcblx0XHR0aGlzLmNsZWFyUG9wdXAoKTtcblx0fVxuXG5cdG9uU2hvd1dpdGhEZWxheSgpIHtcblx0XHR0aGlzLnBhc3N3b3JkLmZvY3VzKHRydWUpO1xuXHRcdC8vXHRcdHRoaXMuYnV0dG9uRm9jdXModHJ1ZSk7XG5cdH1cblxuXHRvblNob3coZkNhbGxiYWNrLCBwcml2YXRlS2V5cykge1xuXHRcdHRoaXMuY2xlYXJQb3B1cCgpO1xuXG5cdFx0dGhpcy5yZXN1bHRDYWxsYmFjayA9IGZDYWxsYmFjaztcblx0XHR0aGlzLnByaXZhdGVLZXlzKHByaXZhdGVLZXlzKTtcblxuXHRcdGlmICh0aGlzLnZpZXdNb2RlbERvbSkge1xuXHRcdFx0dGhpcy52aWV3TW9kZWxEb21cblx0XHRcdFx0LmZpbmQoJy5rZXktbGlzdF9faXRlbScpXG5cdFx0XHRcdC5maXJzdCgpXG5cdFx0XHRcdC5jbGljaygpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgeyBNZXNzYWdlT3BlblBncFBvcHVwVmlldywgTWVzc2FnZU9wZW5QZ3BQb3B1cFZpZXcgYXMgZGVmYXVsdCB9O1xuIiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLWNvbGxlY3Rpb25zLml0ZXJhdG9yJyk7XG52YXIga2V5cyA9IHJlcXVpcmUoJy4uL2FycmF5L3ZpcnR1YWwva2V5cycpO1xudmFyIGNsYXNzb2YgPSByZXF1aXJlKCcuLi8uLi9pbnRlcm5hbHMvY2xhc3NvZicpO1xudmFyIEFycmF5UHJvdG90eXBlID0gQXJyYXkucHJvdG90eXBlO1xuXG52YXIgRE9NSXRlcmFibGVzID0ge1xuICBET01Ub2tlbkxpc3Q6IHRydWUsXG4gIE5vZGVMaXN0OiB0cnVlXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICB2YXIgb3duID0gaXQua2V5cztcbiAgcmV0dXJuIGl0ID09PSBBcnJheVByb3RvdHlwZSB8fCAoaXQgaW5zdGFuY2VvZiBBcnJheSAmJiBvd24gPT09IEFycmF5UHJvdG90eXBlLmtleXMpXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXByb3RvdHlwZS1idWlsdGluc1xuICAgIHx8IERPTUl0ZXJhYmxlcy5oYXNPd25Qcm9wZXJ0eShjbGFzc29mKGl0KSkgPyBrZXlzIDogb3duO1xufTtcbiIsInZhciBwYXJlbnQgPSByZXF1aXJlKCcuLi8uLi8uLi9lcy9hcnJheS92aXJ0dWFsL2tleXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwYXJlbnQ7XG4iLCJyZXF1aXJlKCcuLi8uLi8uLi9tb2R1bGVzL2VzLmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgZW50cnlWaXJ0dWFsID0gcmVxdWlyZSgnLi4vLi4vLi4vaW50ZXJuYWxzL2VudHJ5LXZpcnR1YWwnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbnRyeVZpcnR1YWwoJ0FycmF5Jykua2V5cztcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0ICQgZnJvbSAnJCc7XG5pbXBvcnQga28gZnJvbSAna28nO1xuaW1wb3J0IGtleSBmcm9tICdrZXknO1xuXG5pbXBvcnQgeyBpbkFycmF5LCBwU3RyaW5nLCBsb2csIGlzVW5kLCB0cmltLCBkZWZhdXRPcHRpb25zQWZ0ZXJSZW5kZXIgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5pbXBvcnQgeyBNYWdpY3MsIEtleVN0YXRlIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IGkxOG4gfSBmcm9tICdDb21tb24vVHJhbnNsYXRvcic7XG5cbmltcG9ydCBQZ3BTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9QZ3AnO1xuXG5pbXBvcnQgeyBFbWFpbE1vZGVsIH0gZnJvbSAnTW9kZWwvRW1haWwnO1xuXG5pbXBvcnQgeyBwb3B1cCwgY29tbWFuZCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuY29uc3QgS0VZX05BTUVfU1VCU1RSID0gLTg7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL0NvbXBvc2VPcGVuUGdwJyxcblx0dGVtcGxhdGVJRDogJ1BvcHVwc0NvbXBvc2VPcGVuUGdwJ1xufSlcbmNsYXNzIENvbXBvc2VPcGVuUGdwUG9wdXBWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLnB1YmxpY0tleXNPcHRpb25zQ2FwdGlvbiA9IGkxOG4oJ1BHUF9OT1RJRklDQVRJT05TL0FERF9BX1BVQkxJQ0tfS0VZJyk7XG5cdFx0dGhpcy5wcml2YXRlS2V5c09wdGlvbnNDYXB0aW9uID0gaTE4bignUEdQX05PVElGSUNBVElPTlMvU0VMRUNUX0FfUFJJVkFURV9LRVknKTtcblxuXHRcdHRoaXMubm90aWZpY2F0aW9uID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLnNpZ24gPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmVuY3J5cHQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblxuXHRcdHRoaXMucGFzc3dvcmQgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLnBhc3N3b3JkLmZvY3VzID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cdFx0dGhpcy5idXR0b25Gb2N1cyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy50ZXh0ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5zZWxlY3RlZFByaXZhdGVLZXkgPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXHRcdHRoaXMuc2VsZWN0ZWRQdWJsaWNLZXkgPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXG5cdFx0dGhpcy5zaWduS2V5ID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblx0XHR0aGlzLmVuY3J5cHRLZXlzID0ga28ub2JzZXJ2YWJsZUFycmF5KFtdKTtcblxuXHRcdHRoaXMuZW5jcnlwdEtleXNWaWV3ID0ga28uY29tcHV0ZWQoKCkgPT4gXy5jb21wYWN0KF8ubWFwKHRoaXMuZW5jcnlwdEtleXMoKSwgKG9LZXkpID0+IChvS2V5ID8gb0tleS5rZXkgOiBudWxsKSkpKTtcblxuXHRcdHRoaXMucHJpdmF0ZUtleXNPcHRpb25zID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb3B0cyA9IF8ubWFwKFBncFN0b3JlLm9wZW5wZ3BrZXlzUHJpdmF0ZSgpLCAob0tleSwgaUluZGV4KSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLnNpZ25LZXkoKSAmJiB0aGlzLnNpZ25LZXkoKS5rZXkuaWQgPT09IG9LZXkuaWQpIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gXy5tYXAob0tleS51c2VycywgKHVzZXIpID0+ICh7XG5cdFx0XHRcdFx0J2lkJzogb0tleS5ndWlkLFxuXHRcdFx0XHRcdCduYW1lJzogJygnICsgb0tleS5pZC5zdWJzdHIoS0VZX05BTUVfU1VCU1RSKS50b1VwcGVyQ2FzZSgpICsgJykgJyArIHVzZXIsXG5cdFx0XHRcdFx0J2tleSc6IG9LZXksXG5cdFx0XHRcdFx0J2NsYXNzJzogaUluZGV4ICUgMiA/ICdvZGQnIDogJ2V2ZW4nXG5cdFx0XHRcdH0pKTtcblx0XHRcdH0pO1xuXG5cdFx0XHRyZXR1cm4gXy5jb21wYWN0KF8uZmxhdHRlbihvcHRzLCB0cnVlKSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLnB1YmxpY0tleXNPcHRpb25zID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3Qgb3B0cyA9IF8ubWFwKFBncFN0b3JlLm9wZW5wZ3BrZXlzUHVibGljKCksIChvS2V5LCBpbmRleCkgPT4ge1xuXHRcdFx0XHRpZiAoLTEgPCBpbkFycmF5KG9LZXksIHRoaXMuZW5jcnlwdEtleXNWaWV3KCkpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIF8ubWFwKG9LZXkudXNlcnMsICh1c2VyKSA9PiAoe1xuXHRcdFx0XHRcdCdpZCc6IG9LZXkuZ3VpZCxcblx0XHRcdFx0XHQnbmFtZSc6ICcoJyArIG9LZXkuaWQuc3Vic3RyKEtFWV9OQU1FX1NVQlNUUikudG9VcHBlckNhc2UoKSArICcpICcgKyB1c2VyLFxuXHRcdFx0XHRcdCdrZXknOiBvS2V5LFxuXHRcdFx0XHRcdCdjbGFzcyc6IGluZGV4ICUgMiA/ICdvZGQnIDogJ2V2ZW4nXG5cdFx0XHRcdH0pKTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIF8uY29tcGFjdChfLmZsYXR0ZW4ob3B0cywgdHJ1ZSkpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5zdWJtaXRSZXF1ZXN0ID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnJlc3VsdENhbGxiYWNrID0gbnVsbDtcblxuXHRcdHRoaXMuc2VsZWN0ZWRQcml2YXRlS2V5LnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLnNlbGVjdENvbW1hbmQoKTtcblx0XHRcdFx0dGhpcy51cGRhdGVDb21tYW5kKCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cblx0XHR0aGlzLnNlbGVjdGVkUHVibGljS2V5LnN1YnNjcmliZSgodmFsdWUpID0+IHtcblx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHR0aGlzLmFkZENvbW1hbmQoKTtcblx0XHRcdH1cblx0XHR9KTtcblxuXHRcdHRoaXMuc0RlZmF1bHRLZXlTY29wZSA9IEtleVN0YXRlLlBvcHVwQ29tcG9zZU9wZW5QR1A7XG5cblx0XHR0aGlzLmRlZmF1dE9wdGlvbnNBZnRlclJlbmRlciA9IGRlZmF1dE9wdGlvbnNBZnRlclJlbmRlcjtcblxuXHRcdHRoaXMuYWRkT3B0aW9uQ2xhc3MgPSAoZG9tT3B0aW9uLCBpdGVtKSA9PiB7XG5cdFx0XHR0aGlzLmRlZmF1dE9wdGlvbnNBZnRlclJlbmRlcihkb21PcHRpb24sIGl0ZW0pO1xuXG5cdFx0XHRpZiAoaXRlbSAmJiAhaXNVbmQoaXRlbS5jbGFzcykgJiYgZG9tT3B0aW9uKSB7XG5cdFx0XHRcdCQoZG9tT3B0aW9uKS5hZGRDbGFzcyhpdGVtLmNsYXNzKTtcblx0XHRcdH1cblx0XHR9O1xuXG5cdFx0dGhpcy5kZWxldGVQdWJsaWNrS2V5ID0gXy5iaW5kKHRoaXMuZGVsZXRlUHVibGlja0tleSwgdGhpcyk7XG5cdH1cblxuXHRAY29tbWFuZCgoc2VsZikgPT4gIXNlbGYuc3VibWl0UmVxdWVzdCgpICYmIChzZWxmLnNpZ24oKSB8fCBzZWxmLmVuY3J5cHQoKSkpXG5cdGRvQ29tbWFuZCgpIHtcblx0XHRsZXQgcmVzdWx0ID0gdHJ1ZSxcblx0XHRcdHByaXZhdGVLZXkgPSBudWxsLFxuXHRcdFx0YVB1YmxpY0tleXMgPSBbXTtcblxuXHRcdHRoaXMuc3VibWl0UmVxdWVzdCh0cnVlKTtcblxuXHRcdGlmIChyZXN1bHQgJiYgdGhpcy5zaWduKCkpIHtcblx0XHRcdGlmICghdGhpcy5zaWduS2V5KCkpIHtcblx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb24oaTE4bignUEdQX05PVElGSUNBVElPTlMvTk9fUFJJVkFURV9LRVlfRk9VTkQnKSk7XG5cdFx0XHRcdHJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0fSBlbHNlIGlmICghdGhpcy5zaWduS2V5KCkua2V5KSB7XG5cdFx0XHRcdHRoaXMubm90aWZpY2F0aW9uKFxuXHRcdFx0XHRcdGkxOG4oJ1BHUF9OT1RJRklDQVRJT05TL05PX1BSSVZBVEVfS0VZX0ZPVU5EX0ZPUicsIHtcblx0XHRcdFx0XHRcdCdFTUFJTCc6IHRoaXMuc2lnbktleSgpLmVtYWlsXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0KTtcblxuXHRcdFx0XHRyZXN1bHQgPSBmYWxzZTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHJlc3VsdCkge1xuXHRcdFx0XHRjb25zdCBwcml2YXRlS2V5cyA9IHRoaXMuc2lnbktleSgpLmtleS5nZXROYXRpdmVLZXlzKCk7XG5cdFx0XHRcdHByaXZhdGVLZXkgPSBwcml2YXRlS2V5c1swXSB8fCBudWxsO1xuXG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0aWYgKHByaXZhdGVLZXkpIHtcblx0XHRcdFx0XHRcdHByaXZhdGVLZXkuZGVjcnlwdChwU3RyaW5nKHRoaXMucGFzc3dvcmQoKSkpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdHByaXZhdGVLZXkgPSBudWxsO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCFwcml2YXRlS2V5KSB7XG5cdFx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb24oaTE4bignUEdQX05PVElGSUNBVElPTlMvTk9fUFJJVkFURV9LRVlfRk9VTkQnKSk7XG5cdFx0XHRcdFx0cmVzdWx0ID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAocmVzdWx0ICYmIHRoaXMuZW5jcnlwdCgpKSB7XG5cdFx0XHRpZiAoMCA9PT0gdGhpcy5lbmNyeXB0S2V5cygpLmxlbmd0aCkge1xuXHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbihpMThuKCdQR1BfTk9USUZJQ0FUSU9OUy9OT19QVUJMSUNfS0VZU19GT1VORCcpKTtcblx0XHRcdFx0cmVzdWx0ID0gZmFsc2U7XG5cdFx0XHR9IGVsc2UgaWYgKHRoaXMuZW5jcnlwdEtleXMoKSkge1xuXHRcdFx0XHRhUHVibGljS2V5cyA9IFtdO1xuXG5cdFx0XHRcdF8uZWFjaCh0aGlzLmVuY3J5cHRLZXlzKCksIChvS2V5KSA9PiB7XG5cdFx0XHRcdFx0aWYgKG9LZXkgJiYgb0tleS5rZXkpIHtcblx0XHRcdFx0XHRcdGFQdWJsaWNLZXlzID0gYVB1YmxpY0tleXMuY29uY2F0KF8uY29tcGFjdChfLmZsYXR0ZW4ob0tleS5rZXkuZ2V0TmF0aXZlS2V5cygpKSkpO1xuXHRcdFx0XHRcdH0gZWxzZSBpZiAob0tleSAmJiBvS2V5LmVtYWlsKSB7XG5cdFx0XHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbihcblx0XHRcdFx0XHRcdFx0aTE4bignUEdQX05PVElGSUNBVElPTlMvTk9fUFVCTElDX0tFWVNfRk9VTkRfRk9SJywge1xuXHRcdFx0XHRcdFx0XHRcdCdFTUFJTCc6IG9LZXkuZW1haWxcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRcdHJlc3VsdCA9IGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0aWYgKHJlc3VsdCAmJiAoMCA9PT0gYVB1YmxpY0tleXMubGVuZ3RoIHx8IHRoaXMuZW5jcnlwdEtleXMoKS5sZW5ndGggIT09IGFQdWJsaWNLZXlzLmxlbmd0aCkpIHtcblx0XHRcdFx0XHRyZXN1bHQgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChyZXN1bHQgJiYgdGhpcy5yZXN1bHRDYWxsYmFjaykge1xuXHRcdFx0Xy5kZWxheSgoKSA9PiB7XG5cdFx0XHRcdGxldCBwZ3BQcm9taXNlID0gbnVsbDtcblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGlmIChwcml2YXRlS2V5ICYmIDAgPT09IGFQdWJsaWNLZXlzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0cGdwUHJvbWlzZSA9IFBncFN0b3JlLm9wZW5wZ3Auc2lnbih7XG5cdFx0XHRcdFx0XHRcdGRhdGE6IHRoaXMudGV4dCgpLFxuXHRcdFx0XHRcdFx0XHRwcml2YXRlS2V5czogW3ByaXZhdGVLZXldXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHByaXZhdGVLZXkgJiYgMCA8IGFQdWJsaWNLZXlzLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0cGdwUHJvbWlzZSA9IFBncFN0b3JlLm9wZW5wZ3AuZW5jcnlwdCh7XG5cdFx0XHRcdFx0XHRcdGRhdGE6IHRoaXMudGV4dCgpLFxuXHRcdFx0XHRcdFx0XHRwdWJsaWNLZXlzOiBhUHVibGljS2V5cyxcblx0XHRcdFx0XHRcdFx0cHJpdmF0ZUtleXM6IFtwcml2YXRlS2V5XVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIGlmICghcHJpdmF0ZUtleSAmJiAwIDwgYVB1YmxpY0tleXMubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRwZ3BQcm9taXNlID0gUGdwU3RvcmUub3BlbnBncC5lbmNyeXB0KHtcblx0XHRcdFx0XHRcdFx0ZGF0YTogdGhpcy50ZXh0KCksXG5cdFx0XHRcdFx0XHRcdHB1YmxpY0tleXM6IGFQdWJsaWNLZXlzXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGUpIHtcblx0XHRcdFx0XHRsb2coZSk7XG5cblx0XHRcdFx0XHR0aGlzLm5vdGlmaWNhdGlvbihcblx0XHRcdFx0XHRcdGkxOG4oJ1BHUF9OT1RJRklDQVRJT05TL1BHUF9FUlJPUicsIHtcblx0XHRcdFx0XHRcdFx0J0VSUk9SJzogJycgKyBlXG5cdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAocGdwUHJvbWlzZSkge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRwZ3BQcm9taXNlXG5cdFx0XHRcdFx0XHRcdC50aGVuKChtRGF0YSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMucmVzdWx0Q2FsbGJhY2sobURhdGEuZGF0YSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jYW5jZWxDb21tYW5kKCk7XG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdC5jYXRjaCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMubm90aWZpY2F0aW9uKFxuXHRcdFx0XHRcdFx0XHRcdFx0aTE4bignUEdQX05PVElGSUNBVElPTlMvUEdQX0VSUk9SJywge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQnRVJST1InOiAnJyArIGVcblx0XHRcdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5ub3RpZmljYXRpb24oXG5cdFx0XHRcdFx0XHRcdGkxOG4oJ1BHUF9OT1RJRklDQVRJT05TL1BHUF9FUlJPUicsIHtcblx0XHRcdFx0XHRcdFx0XHQnRVJST1InOiAnJyArIGVcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dGhpcy5zdWJtaXRSZXF1ZXN0KGZhbHNlKTtcblx0XHRcdH0sIE1hZ2ljcy5UaW1lMjBtcyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc3VibWl0UmVxdWVzdChmYWxzZSk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdEBjb21tYW5kKClcblx0c2VsZWN0Q29tbWFuZCgpIHtcblx0XHRjb25zdCBrZXlJZCA9IHRoaXMuc2VsZWN0ZWRQcml2YXRlS2V5KCksXG5cdFx0XHRvcHRpb24gPSBrZXlJZCA/IF8uZmluZCh0aGlzLnByaXZhdGVLZXlzT3B0aW9ucygpLCAoaXRlbSkgPT4gaXRlbSAmJiBrZXlJZCA9PT0gaXRlbS5pZCkgOiBudWxsO1xuXG5cdFx0aWYgKG9wdGlvbikge1xuXHRcdFx0dGhpcy5zaWduS2V5KHtcblx0XHRcdFx0J2VtcHR5JzogIW9wdGlvbi5rZXksXG5cdFx0XHRcdCdzZWxlY3RlZCc6IGtvLm9ic2VydmFibGUoISFvcHRpb24ua2V5KSxcblx0XHRcdFx0J3VzZXJzJzogb3B0aW9uLmtleS51c2Vycyxcblx0XHRcdFx0J2hhc2gnOiBvcHRpb24ua2V5LmlkLnN1YnN0cihLRVlfTkFNRV9TVUJTVFIpLnRvVXBwZXJDYXNlKCksXG5cdFx0XHRcdCdrZXknOiBvcHRpb24ua2V5XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxuXHRAY29tbWFuZCgpXG5cdGFkZENvbW1hbmQoKSB7XG5cdFx0Y29uc3Qga2V5SWQgPSB0aGlzLnNlbGVjdGVkUHVibGljS2V5KCksXG5cdFx0XHRrZXlzID0gdGhpcy5lbmNyeXB0S2V5cygpLFxuXHRcdFx0b3B0aW9uID0ga2V5SWQgPyBfLmZpbmQodGhpcy5wdWJsaWNLZXlzT3B0aW9ucygpLCAoaXRlbSkgPT4gaXRlbSAmJiBrZXlJZCA9PT0gaXRlbS5pZCkgOiBudWxsO1xuXG5cdFx0aWYgKG9wdGlvbikge1xuXHRcdFx0a2V5cy5wdXNoKHtcblx0XHRcdFx0J2VtcHR5JzogIW9wdGlvbi5rZXksXG5cdFx0XHRcdCdzZWxlY3RlZCc6IGtvLm9ic2VydmFibGUoISFvcHRpb24ua2V5KSxcblx0XHRcdFx0J3JlbW92YWJsZSc6IGtvLm9ic2VydmFibGUoIXRoaXMuc2lnbigpIHx8ICF0aGlzLnNpZ25LZXkoKSB8fCB0aGlzLnNpZ25LZXkoKS5rZXkuaWQgIT09IG9wdGlvbi5rZXkuaWQpLFxuXHRcdFx0XHQndXNlcnMnOiBvcHRpb24ua2V5LnVzZXJzLFxuXHRcdFx0XHQnaGFzaCc6IG9wdGlvbi5rZXkuaWQuc3Vic3RyKEtFWV9OQU1FX1NVQlNUUikudG9VcHBlckNhc2UoKSxcblx0XHRcdFx0J2tleSc6IG9wdGlvbi5rZXlcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmVuY3J5cHRLZXlzKGtleXMpO1xuXHRcdH1cblx0fVxuXG5cdEBjb21tYW5kKClcblx0dXBkYXRlQ29tbWFuZCgpIHtcblx0XHRfLmVhY2godGhpcy5lbmNyeXB0S2V5cygpLCAob0tleSkgPT4ge1xuXHRcdFx0b0tleS5yZW1vdmFibGUoIXRoaXMuc2lnbigpIHx8ICF0aGlzLnNpZ25LZXkoKSB8fCB0aGlzLnNpZ25LZXkoKS5rZXkuaWQgIT09IG9LZXkua2V5LmlkKTtcblx0XHR9KTtcblx0fVxuXG5cdGRlbGV0ZVB1YmxpY2tLZXkocHVibGljS2V5KSB7XG5cdFx0dGhpcy5lbmNyeXB0S2V5cy5yZW1vdmUocHVibGljS2V5KTtcblx0fVxuXG5cdGNsZWFyUG9wdXAoKSB7XG5cdFx0dGhpcy5ub3RpZmljYXRpb24oJycpO1xuXG5cdFx0dGhpcy5zaWduKGZhbHNlKTtcblx0XHR0aGlzLmVuY3J5cHQoZmFsc2UpO1xuXG5cdFx0dGhpcy5wYXNzd29yZCgnJyk7XG5cdFx0dGhpcy5wYXNzd29yZC5mb2N1cyhmYWxzZSk7XG5cdFx0dGhpcy5idXR0b25Gb2N1cyhmYWxzZSk7XG5cblx0XHR0aGlzLnNpZ25LZXkobnVsbCk7XG5cdFx0dGhpcy5lbmNyeXB0S2V5cyhbXSk7XG5cdFx0dGhpcy50ZXh0KCcnKTtcblxuXHRcdHRoaXMucmVzdWx0Q2FsbGJhY2sgPSBudWxsO1xuXHR9XG5cblx0b25CdWlsZCgpIHtcblx0XHRrZXkoJ3RhYixzaGlmdCt0YWInLCBLZXlTdGF0ZS5Qb3B1cENvbXBvc2VPcGVuUEdQLCAoKSA9PiB7XG5cdFx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRcdFx0Y2FzZSB0aGlzLnBhc3N3b3JkLmZvY3VzKCk6XG5cdFx0XHRcdFx0dGhpcy5idXR0b25Gb2N1cyh0cnVlKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSB0aGlzLmJ1dHRvbkZvY3VzKCk6XG5cdFx0XHRcdFx0dGhpcy5wYXNzd29yZC5mb2N1cyh0cnVlKTtcblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Ly8gbm8gZGVmYXVsdFxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0pO1xuXHR9XG5cblx0b25IaWRlV2l0aERlbGF5KCkge1xuXHRcdHRoaXMuY2xlYXJQb3B1cCgpO1xuXHR9XG5cblx0b25TaG93V2l0aERlbGF5KCkge1xuXHRcdGlmICh0aGlzLnNpZ24oKSkge1xuXHRcdFx0dGhpcy5wYXNzd29yZC5mb2N1cyh0cnVlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5idXR0b25Gb2N1cyh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHRvblNob3coZkNhbGxiYWNrLCBzVGV4dCwgaWRlbnRpdHksIHNUbywgc0NjLCBzQmNjKSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cblx0XHRsZXQgcmVjID0gW10sXG5cdFx0XHRlbWFpbExpbmUgPSAnJztcblxuXHRcdGNvbnN0IGVtYWlsID0gbmV3IEVtYWlsTW9kZWwoKTtcblxuXHRcdHRoaXMucmVzdWx0Q2FsbGJhY2sgPSBmQ2FsbGJhY2s7XG5cblx0XHRpZiAoJycgIT09IHNUbykge1xuXHRcdFx0cmVjLnB1c2goc1RvKTtcblx0XHR9XG5cblx0XHRpZiAoJycgIT09IHNDYykge1xuXHRcdFx0cmVjLnB1c2goc0NjKTtcblx0XHR9XG5cblx0XHRpZiAoJycgIT09IHNCY2MpIHtcblx0XHRcdHJlYy5wdXNoKHNCY2MpO1xuXHRcdH1cblxuXHRcdHJlYyA9IHJlYy5qb2luKCcsICcpLnNwbGl0KCcsJyk7XG5cdFx0cmVjID0gXy5jb21wYWN0KFxuXHRcdFx0Xy5tYXAocmVjLCAodmFsdWUpID0+IHtcblx0XHRcdFx0ZW1haWwuY2xlYXIoKTtcblx0XHRcdFx0ZW1haWwucGFyc2UodHJpbSh2YWx1ZSkpO1xuXHRcdFx0XHRyZXR1cm4gJycgPT09IGVtYWlsLmVtYWlsID8gZmFsc2UgOiBlbWFpbC5lbWFpbDtcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdGlmIChpZGVudGl0eSAmJiBpZGVudGl0eS5lbWFpbCgpKSB7XG5cdFx0XHRlbWFpbExpbmUgPSBpZGVudGl0eS5lbWFpbCgpO1xuXHRcdFx0cmVjLnVuc2hpZnQoZW1haWxMaW5lKTtcblxuXHRcdFx0Y29uc3Qga2V5cyA9IFBncFN0b3JlLmZpbmRBbGxQcml2YXRlS2V5c0J5RW1haWxOb3ROYXRpdmUoZW1haWxMaW5lKTtcblx0XHRcdGlmIChrZXlzICYmIGtleXNbMF0pIHtcblx0XHRcdFx0dGhpcy5zaWduS2V5KHtcblx0XHRcdFx0XHQndXNlcnMnOiBrZXlzWzBdLnVzZXJzIHx8IFtlbWFpbExpbmVdLFxuXHRcdFx0XHRcdCdoYXNoJzoga2V5c1swXS5pZC5zdWJzdHIoS0VZX05BTUVfU1VCU1RSKS50b1VwcGVyQ2FzZSgpLFxuXHRcdFx0XHRcdCdrZXknOiBrZXlzWzBdXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICh0aGlzLnNpZ25LZXkoKSkge1xuXHRcdFx0dGhpcy5zaWduKHRydWUpO1xuXHRcdH1cblxuXHRcdGlmIChyZWMgJiYgMCA8IHJlYy5sZW5ndGgpIHtcblx0XHRcdHRoaXMuZW5jcnlwdEtleXMoXG5cdFx0XHRcdF8udW5pcShcblx0XHRcdFx0XHRfLmNvbXBhY3QoXG5cdFx0XHRcdFx0XHRfLmZsYXR0ZW4oXG5cdFx0XHRcdFx0XHRcdF8ubWFwKHJlYywgKHJlY0VtYWlsKSA9PiB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3Qga2V5cyA9IFBncFN0b3JlLmZpbmRBbGxQdWJsaWNLZXlzQnlFbWFpbE5vdE5hdGl2ZShyZWNFbWFpbCk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIGtleXNcblx0XHRcdFx0XHRcdFx0XHRcdD8gXy5tYXAoa2V5cywgKHB1YmxpY0tleSkgPT4gKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnZW1wdHknOiAhcHVibGljS2V5LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdzZWxlY3RlZCc6IGtvLm9ic2VydmFibGUoISFwdWJsaWNLZXkpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdyZW1vdmFibGUnOiBrby5vYnNlcnZhYmxlKFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IXRoaXMuc2lnbigpIHx8ICF0aGlzLnNpZ25LZXkoKSB8fCB0aGlzLnNpZ25LZXkoKS5rZXkuaWQgIT09IHB1YmxpY0tleS5pZFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J3VzZXJzJzogcHVibGljS2V5ID8gcHVibGljS2V5LnVzZXJzIHx8IFtyZWNFbWFpbF0gOiBbcmVjRW1haWxdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdoYXNoJzogcHVibGljS2V5ID8gcHVibGljS2V5LmlkLnN1YnN0cihLRVlfTkFNRV9TVUJTVFIpLnRvVXBwZXJDYXNlKCkgOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQna2V5JzogcHVibGljS2V5XG5cdFx0XHRcdFx0XHRcdFx0XHQgIH0pKVxuXHRcdFx0XHRcdFx0XHRcdFx0OiBbXTtcblx0XHRcdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0XHRcdHRydWVcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdChlbmNyeXB0S2V5KSA9PiBlbmNyeXB0S2V5Lmhhc2hcblx0XHRcdFx0KVxuXHRcdFx0KTtcblxuXHRcdFx0aWYgKDAgPCB0aGlzLmVuY3J5cHRLZXlzKCkubGVuZ3RoKSB7XG5cdFx0XHRcdHRoaXMuZW5jcnlwdCh0cnVlKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR0aGlzLnRleHQoc1RleHQpO1xuXHR9XG59XG5cbmV4cG9ydCB7IENvbXBvc2VPcGVuUGdwUG9wdXBWaWV3LCBDb21wb3NlT3BlblBncFBvcHVwVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQga28gZnJvbSAna28nO1xuXG5pbXBvcnQgeyBTdG9yYWdlUmVzdWx0VHlwZSwgTm90aWZpY2F0aW9uIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IGkxOG4sIGdldE5vdGlmaWNhdGlvbiB9IGZyb20gJ0NvbW1vbi9UcmFuc2xhdG9yJztcbmltcG9ydCB7IHNldEZvbGRlckhhc2ggfSBmcm9tICdDb21tb24vQ2FjaGUnO1xuXG5pbXBvcnQgTWVzc2FnZVN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL01lc3NhZ2UnO1xuXG5pbXBvcnQgUmVtb3RlIGZyb20gJ1JlbW90ZS9Vc2VyL0FqYXgnO1xuXG5pbXBvcnQgeyBnZXRBcHAgfSBmcm9tICdIZWxwZXIvQXBwcy9Vc2VyJztcblxuaW1wb3J0IHsgcG9wdXAsIGNvbW1hbmQgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL0ZvbGRlckNsZWFyJyxcblx0dGVtcGxhdGVJRDogJ1BvcHVwc0ZvbGRlckNsZWFyJ1xufSlcbmNsYXNzIEZvbGRlckNsZWFyUG9wdXBWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLnNlbGVjdGVkRm9sZGVyID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblx0XHR0aGlzLmNsZWFyaW5nUHJvY2VzcyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuY2xlYXJpbmdFcnJvciA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5mb2xkZXJGdWxsTmFtZUZvckNsZWFyID0ga28uY29tcHV0ZWQoKCkgPT4ge1xuXHRcdFx0Y29uc3QgZm9sZGVyID0gdGhpcy5zZWxlY3RlZEZvbGRlcigpO1xuXHRcdFx0cmV0dXJuIGZvbGRlciA/IGZvbGRlci5wcmludGFibGVGdWxsTmFtZSgpIDogJyc7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmZvbGRlck5hbWVGb3JDbGVhciA9IGtvLmNvbXB1dGVkKCgpID0+IHtcblx0XHRcdGNvbnN0IGZvbGRlciA9IHRoaXMuc2VsZWN0ZWRGb2xkZXIoKTtcblx0XHRcdHJldHVybiBmb2xkZXIgPyBmb2xkZXIubG9jYWxOYW1lKCkgOiAnJztcblx0XHR9KTtcblxuXHRcdHRoaXMuZGFuZ2VyRGVzY0h0bWwgPSBrby5jb21wdXRlZCgoKSA9PlxuXHRcdFx0aTE4bignUE9QVVBTX0NMRUFSX0ZPTERFUi9EQU5HRVJfREVTQ19IVE1MXzEnLCB7ICdGT0xERVInOiB0aGlzLmZvbGRlck5hbWVGb3JDbGVhcigpIH0pXG5cdFx0KTtcblx0fVxuXG5cdEBjb21tYW5kKChzZWxmKSA9PiB7XG5cdFx0Y29uc3QgZm9sZGVyID0gc2VsZi5zZWxlY3RlZEZvbGRlcigpLFxuXHRcdFx0aXNDbGVhcmluZyA9IHNlbGYuY2xlYXJpbmdQcm9jZXNzKCk7XG5cblx0XHRyZXR1cm4gIWlzQ2xlYXJpbmcgJiYgbnVsbCAhPT0gZm9sZGVyO1xuXHR9KVxuXHRjbGVhckNvbW1hbmQoKSB7XG5cdFx0Y29uc3QgZm9sZGVyVG9DbGVhciA9IHRoaXMuc2VsZWN0ZWRGb2xkZXIoKTtcblx0XHRpZiAoZm9sZGVyVG9DbGVhcikge1xuXHRcdFx0TWVzc2FnZVN0b3JlLm1lc3NhZ2UobnVsbCk7XG5cdFx0XHRNZXNzYWdlU3RvcmUubWVzc2FnZUxpc3QoW10pO1xuXG5cdFx0XHR0aGlzLmNsZWFyaW5nUHJvY2Vzcyh0cnVlKTtcblxuXHRcdFx0Zm9sZGVyVG9DbGVhci5tZXNzYWdlQ291bnRBbGwoMCk7XG5cdFx0XHRmb2xkZXJUb0NsZWFyLm1lc3NhZ2VDb3VudFVucmVhZCgwKTtcblxuXHRcdFx0c2V0Rm9sZGVySGFzaChmb2xkZXJUb0NsZWFyLmZ1bGxOYW1lUmF3LCAnJyk7XG5cblx0XHRcdFJlbW90ZS5mb2xkZXJDbGVhcigocmVzdWx0LCBkYXRhKSA9PiB7XG5cdFx0XHRcdHRoaXMuY2xlYXJpbmdQcm9jZXNzKGZhbHNlKTtcblx0XHRcdFx0aWYgKFN0b3JhZ2VSZXN1bHRUeXBlLlN1Y2Nlc3MgPT09IHJlc3VsdCAmJiBkYXRhICYmIGRhdGEuUmVzdWx0KSB7XG5cdFx0XHRcdFx0Z2V0QXBwKCkucmVsb2FkTWVzc2FnZUxpc3QodHJ1ZSk7XG5cdFx0XHRcdFx0dGhpcy5jYW5jZWxDb21tYW5kKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0aWYgKGRhdGEgJiYgZGF0YS5FcnJvckNvZGUpIHtcblx0XHRcdFx0XHRcdHRoaXMuY2xlYXJpbmdFcnJvcihnZXROb3RpZmljYXRpb24oZGF0YS5FcnJvckNvZGUpKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dGhpcy5jbGVhcmluZ0Vycm9yKGdldE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb24uTWFpbFNlcnZlckVycm9yKSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCBmb2xkZXJUb0NsZWFyLmZ1bGxOYW1lUmF3KTtcblx0XHR9XG5cdH1cblxuXHRjbGVhclBvcHVwKCkge1xuXHRcdHRoaXMuY2xlYXJpbmdQcm9jZXNzKGZhbHNlKTtcblx0XHR0aGlzLnNlbGVjdGVkRm9sZGVyKG51bGwpO1xuXHR9XG5cblx0b25TaG93KGZvbGRlcikge1xuXHRcdHRoaXMuY2xlYXJQb3B1cCgpO1xuXHRcdGlmIChmb2xkZXIpIHtcblx0XHRcdHRoaXMuc2VsZWN0ZWRGb2xkZXIoZm9sZGVyKTtcblx0XHR9XG5cdH1cbn1cblxuZXhwb3J0IHsgRm9sZGVyQ2xlYXJQb3B1cFZpZXcsIEZvbGRlckNsZWFyUG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBfIGZyb20gJ18nO1xuaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IHsgdHJpbSB9IGZyb20gJ0NvbW1vbi9VdGlscyc7XG5pbXBvcnQgeyBpMThuLCB0cmlnZ2VyIGFzIHRyYW5zbGF0b3JUcmlnZ2VyIH0gZnJvbSAnQ29tbW9uL1RyYW5zbGF0b3InO1xuaW1wb3J0IHsgc2VhcmNoU3VidHJhY3RGb3JtYXREYXRlSGVscGVyIH0gZnJvbSAnQ29tbW9uL01vbWVudG9yJztcblxuaW1wb3J0IE1lc3NhZ2VTdG9yZSBmcm9tICdTdG9yZXMvVXNlci9NZXNzYWdlJztcblxuaW1wb3J0IHsgcG9wdXAsIGNvbW1hbmQgfSBmcm9tICdLbm9pbi9Lbm9pbic7XG5pbXBvcnQgeyBBYnN0cmFjdFZpZXdOZXh0IH0gZnJvbSAnS25vaW4vQWJzdHJhY3RWaWV3TmV4dCc7XG5cbkBwb3B1cCh7XG5cdG5hbWU6ICdWaWV3L1BvcHVwL0FkdmFuY2VkU2VhcmNoJyxcblx0dGVtcGxhdGVJRDogJ1BvcHVwc0FkdmFuY2VkU2VhcmNoJ1xufSlcbmNsYXNzIEFkdmFuY2VkU2VhcmNoUG9wdXBWaWV3IGV4dGVuZHMgQWJzdHJhY3RWaWV3TmV4dCB7XG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdHN1cGVyKCk7XG5cblx0XHR0aGlzLmZyb21Gb2N1cyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5mcm9tID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy50byA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuc3ViamVjdCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMudGV4dCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUgPSBrby5vYnNlcnZhYmxlKC0xKTtcblxuXHRcdHRoaXMuaGFzQXR0YWNobWVudCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMuc3RhcnJlZCA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMudW5zZWVuID0ga28ub2JzZXJ2YWJsZShmYWxzZSk7XG5cblx0XHR0aGlzLnNlbGVjdGVkRGF0ZXMgPSBrby5jb21wdXRlZCgoKSA9PiB7XG5cdFx0XHR0cmFuc2xhdG9yVHJpZ2dlcigpO1xuXHRcdFx0cmV0dXJuIFtcblx0XHRcdFx0eyBpZDogLTEsIG5hbWU6IGkxOG4oJ1NFQVJDSC9MQUJFTF9BRFZfREFURV9BTEwnKSB9LFxuXHRcdFx0XHR7IGlkOiAzLCBuYW1lOiBpMThuKCdTRUFSQ0gvTEFCRUxfQURWX0RBVEVfM19EQVlTJykgfSxcblx0XHRcdFx0eyBpZDogNywgbmFtZTogaTE4bignU0VBUkNIL0xBQkVMX0FEVl9EQVRFXzdfREFZUycpIH0sXG5cdFx0XHRcdHsgaWQ6IDMwLCBuYW1lOiBpMThuKCdTRUFSQ0gvTEFCRUxfQURWX0RBVEVfTU9OVEgnKSB9LFxuXHRcdFx0XHR7IGlkOiA5MCwgbmFtZTogaTE4bignU0VBUkNIL0xBQkVMX0FEVl9EQVRFXzNfTU9OVEhTJykgfSxcblx0XHRcdFx0eyBpZDogMTgwLCBuYW1lOiBpMThuKCdTRUFSQ0gvTEFCRUxfQURWX0RBVEVfNl9NT05USFMnKSB9LFxuXHRcdFx0XHR7IGlkOiAzNjUsIG5hbWU6IGkxOG4oJ1NFQVJDSC9MQUJFTF9BRFZfREFURV9ZRUFSJykgfVxuXHRcdFx0XTtcblx0XHR9KTtcblx0fVxuXG5cdEBjb21tYW5kKClcblx0c2VhcmNoQ29tbWFuZCgpIHtcblx0XHRjb25zdCBzZWFyY2ggPSB0aGlzLmJ1aWxkU2VhcmNoU3RyaW5nKCk7XG5cdFx0aWYgKCcnICE9PSBzZWFyY2gpIHtcblx0XHRcdE1lc3NhZ2VTdG9yZS5tYWluTWVzc2FnZUxpc3RTZWFyY2goc2VhcmNoKTtcblx0XHR9XG5cblx0XHR0aGlzLmNhbmNlbENvbW1hbmQoKTtcblx0fVxuXG5cdHBhcnNlU2VhcmNoU3RyaW5nVmFsdWUoc2VhcmNoKSB7XG5cdFx0Y29uc3QgcGFydHMgPSAoc2VhcmNoIHx8ICcnKS5zcGxpdCgvW1xcc10rL2cpO1xuXHRcdF8uZWFjaChwYXJ0cywgKHBhcnQpID0+IHtcblx0XHRcdHN3aXRjaCAocGFydCkge1xuXHRcdFx0XHRjYXNlICdoYXM6YXR0YWNobWVudCc6XG5cdFx0XHRcdFx0dGhpcy5oYXNBdHRhY2htZW50KHRydWUpO1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHRjYXNlICdpczp1bnNlZW4sZmxhZ2dlZCc6XG5cdFx0XHRcdFx0dGhpcy5zdGFycmVkKHRydWUpO1xuXHRcdFx0XHQvKiBmYWxscyB0aHJvdWdoICovXG5cdFx0XHRcdGNhc2UgJ2lzOnVuc2Vlbic6XG5cdFx0XHRcdFx0dGhpcy51bnNlZW4odHJ1ZSk7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdC8vIG5vIGRlZmF1bHRcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXG5cdGJ1aWxkU2VhcmNoU3RyaW5nVmFsdWUodmFsdWUpIHtcblx0XHRpZiAoLTEgPCB2YWx1ZS5pbmRleE9mKCcgJykpIHtcblx0XHRcdHZhbHVlID0gJ1wiJyArIHZhbHVlICsgJ1wiJztcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9XG5cblx0YnVpbGRTZWFyY2hTdHJpbmcoKSB7XG5cdFx0Y29uc3QgcmVzdWx0ID0gW10sXG5cdFx0XHRmcm9tXyA9IHRyaW0odGhpcy5mcm9tKCkpLFxuXHRcdFx0dG8gPSB0cmltKHRoaXMudG8oKSksXG5cdFx0XHRzdWJqZWN0ID0gdHJpbSh0aGlzLnN1YmplY3QoKSksXG5cdFx0XHR0ZXh0ID0gdHJpbSh0aGlzLnRleHQoKSksXG5cdFx0XHRpc1BhcnQgPSBbXSxcblx0XHRcdGhhc1BhcnQgPSBbXTtcblxuXHRcdGlmIChmcm9tXyAmJiAnJyAhPT0gZnJvbV8pIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdmcm9tOicgKyB0aGlzLmJ1aWxkU2VhcmNoU3RyaW5nVmFsdWUoZnJvbV8pKTtcblx0XHR9XG5cblx0XHRpZiAodG8gJiYgJycgIT09IHRvKSB7XG5cdFx0XHRyZXN1bHQucHVzaCgndG86JyArIHRoaXMuYnVpbGRTZWFyY2hTdHJpbmdWYWx1ZSh0bykpO1xuXHRcdH1cblxuXHRcdGlmIChzdWJqZWN0ICYmICcnICE9PSBzdWJqZWN0KSB7XG5cdFx0XHRyZXN1bHQucHVzaCgnc3ViamVjdDonICsgdGhpcy5idWlsZFNlYXJjaFN0cmluZ1ZhbHVlKHN1YmplY3QpKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5oYXNBdHRhY2htZW50KCkpIHtcblx0XHRcdGhhc1BhcnQucHVzaCgnYXR0YWNobWVudCcpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLnVuc2VlbigpKSB7XG5cdFx0XHRpc1BhcnQucHVzaCgndW5zZWVuJyk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuc3RhcnJlZCgpKSB7XG5cdFx0XHRpc1BhcnQucHVzaCgnZmxhZ2dlZCcpO1xuXHRcdH1cblxuXHRcdGlmICgwIDwgaGFzUGFydC5sZW5ndGgpIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdoYXM6JyArIGhhc1BhcnQuam9pbignLCcpKTtcblx0XHR9XG5cblx0XHRpZiAoMCA8IGlzUGFydC5sZW5ndGgpIHtcblx0XHRcdHJlc3VsdC5wdXNoKCdpczonICsgaXNQYXJ0LmpvaW4oJywnKSk7XG5cdFx0fVxuXG5cdFx0aWYgKC0xIDwgdGhpcy5zZWxlY3RlZERhdGVWYWx1ZSgpKSB7XG5cdFx0XHRyZXN1bHQucHVzaCgnZGF0ZTonICsgc2VhcmNoU3VidHJhY3RGb3JtYXREYXRlSGVscGVyKHRoaXMuc2VsZWN0ZWREYXRlVmFsdWUoKSkgKyAnLycpO1xuXHRcdH1cblxuXHRcdGlmICh0ZXh0ICYmICcnICE9PSB0ZXh0KSB7XG5cdFx0XHRyZXN1bHQucHVzaCgndGV4dDonICsgdGhpcy5idWlsZFNlYXJjaFN0cmluZ1ZhbHVlKHRleHQpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJpbShyZXN1bHQuam9pbignICcpKTtcblx0fVxuXG5cdGNsZWFyUG9wdXAoKSB7XG5cdFx0dGhpcy5mcm9tKCcnKTtcblx0XHR0aGlzLnRvKCcnKTtcblx0XHR0aGlzLnN1YmplY3QoJycpO1xuXHRcdHRoaXMudGV4dCgnJyk7XG5cblx0XHR0aGlzLnNlbGVjdGVkRGF0ZVZhbHVlKC0xKTtcblx0XHR0aGlzLmhhc0F0dGFjaG1lbnQoZmFsc2UpO1xuXHRcdHRoaXMuc3RhcnJlZChmYWxzZSk7XG5cdFx0dGhpcy51bnNlZW4oZmFsc2UpO1xuXG5cdFx0dGhpcy5mcm9tRm9jdXModHJ1ZSk7XG5cdH1cblxuXHRvblNob3coc2VhcmNoKSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cdFx0dGhpcy5wYXJzZVNlYXJjaFN0cmluZ1ZhbHVlKHNlYXJjaCk7XG5cdH1cblxuXHRvblNob3dXaXRoRGVsYXkoKSB7XG5cdFx0dGhpcy5mcm9tRm9jdXModHJ1ZSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgQWR2YW5jZWRTZWFyY2hQb3B1cFZpZXcsIEFkdmFuY2VkU2VhcmNoUG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IFN0b3JhZ2VSZXN1bHRUeXBlIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IGJNb2JpbGVEZXZpY2UgfSBmcm9tICdDb21tb24vR2xvYmFscyc7XG5cbmltcG9ydCBSZW1vdGUgZnJvbSAnUmVtb3RlL1VzZXIvQWpheCc7XG5cbmltcG9ydCB7IHBvcHVwLCBjb21tYW5kIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5AcG9wdXAoe1xuXHRuYW1lOiAnVmlldy9Qb3B1cC9Ud29GYWN0b3JUZXN0Jyxcblx0dGVtcGxhdGVJRDogJ1BvcHVwc1R3b0ZhY3RvclRlc3QnXG59KVxuY2xhc3MgVHdvRmFjdG9yVGVzdFBvcHVwVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy5jb2RlID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5jb2RlLmZvY3VzZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmNvZGUuc3RhdHVzID0ga28ub2JzZXJ2YWJsZShudWxsKTtcblxuXHRcdHRoaXMua29UZXN0ZWRUcmlnZ2VyID0gbnVsbDtcblxuXHRcdHRoaXMudGVzdGluZyA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHR9XG5cblx0QGNvbW1hbmQoKHNlbGYpID0+ICcnICE9PSBzZWxmLmNvZGUoKSAmJiAhc2VsZi50ZXN0aW5nKCkpXG5cdHRlc3RDb2RlQ29tbWFuZCgpIHtcblx0XHR0aGlzLnRlc3RpbmcodHJ1ZSk7XG5cdFx0UmVtb3RlLnRlc3RUd29GYWN0b3IoKHJlc3VsdCwgZGF0YSkgPT4ge1xuXHRcdFx0dGhpcy50ZXN0aW5nKGZhbHNlKTtcblx0XHRcdHRoaXMuY29kZS5zdGF0dXMoU3RvcmFnZVJlc3VsdFR5cGUuU3VjY2VzcyA9PT0gcmVzdWx0ICYmIGRhdGEgJiYgISFkYXRhLlJlc3VsdCk7XG5cblx0XHRcdGlmICh0aGlzLmtvVGVzdGVkVHJpZ2dlciAmJiB0aGlzLmNvZGUuc3RhdHVzKCkpIHtcblx0XHRcdFx0dGhpcy5rb1Rlc3RlZFRyaWdnZXIodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0fSwgdGhpcy5jb2RlKCkpO1xuXHR9XG5cblx0Y2xlYXJQb3B1cCgpIHtcblx0XHR0aGlzLmNvZGUoJycpO1xuXHRcdHRoaXMuY29kZS5mb2N1c2VkKGZhbHNlKTtcblx0XHR0aGlzLmNvZGUuc3RhdHVzKG51bGwpO1xuXHRcdHRoaXMudGVzdGluZyhmYWxzZSk7XG5cblx0XHR0aGlzLmtvVGVzdGVkVHJpZ2dlciA9IG51bGw7XG5cdH1cblxuXHRvblNob3coa29UZXN0ZWRUcmlnZ2VyKSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cblx0XHR0aGlzLmtvVGVzdGVkVHJpZ2dlciA9IGtvVGVzdGVkVHJpZ2dlcjtcblx0fVxuXG5cdG9uU2hvd1dpdGhEZWxheSgpIHtcblx0XHRpZiAoIWJNb2JpbGVEZXZpY2UpIHtcblx0XHRcdHRoaXMuY29kZS5mb2N1c2VkKHRydWUpO1xuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgeyBUd29GYWN0b3JUZXN0UG9wdXBWaWV3LCBUd29GYWN0b3JUZXN0UG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQgeyB0cmltLCBkZWxlZ2F0ZVJ1biwgbG9nIH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IFBncFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1BncCc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyBwb3B1cCwgY29tbWFuZCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHBvcHVwKHtcblx0bmFtZTogJ1ZpZXcvUG9wdXAvQWRkT3BlblBncEtleScsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNBZGRPcGVuUGdwS2V5J1xufSlcbmNsYXNzIEFkZE9wZW5QZ3BLZXlQb3B1cFZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMua2V5ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5rZXkuZm9jdXMgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLmtleS5lcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXHRcdHRoaXMua2V5LmVycm9yTWVzc2FnZSA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5rZXkuc3Vic2NyaWJlKCgpID0+IHtcblx0XHRcdHRoaXMua2V5LmVycm9yKGZhbHNlKTtcblx0XHRcdHRoaXMua2V5LmVycm9yTWVzc2FnZSgnJyk7XG5cdFx0fSk7XG5cdH1cblxuXHRAY29tbWFuZCgpXG5cdGFkZE9wZW5QZ3BLZXlDb21tYW5kKCkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG5cdFx0Y29uc3QgcmVnID0gL1stXXszLDZ9QkVHSU5bXFxzXVBHUFtcXHNdKFBSSVZBVEV8UFVCTElDKVtcXHNdS0VZW1xcc11CTE9DS1stXXszLDZ9W1xcc1xcU10rP1stXXszLDZ9RU5EW1xcc11QR1BbXFxzXShQUklWQVRFfFBVQkxJQylbXFxzXUtFWVtcXHNdQkxPQ0tbLV17Myw2fS9naSxcblx0XHRcdG9wZW5wZ3BLZXlyaW5nID0gUGdwU3RvcmUub3BlbnBncEtleXJpbmc7XG5cblx0XHRsZXQga2V5VHJpbW1lZCA9IHRyaW0odGhpcy5rZXkoKSk7XG5cblx0XHRpZiAoL1tcXG5dLy50ZXN0KGtleVRyaW1tZWQpKSB7XG5cdFx0XHRrZXlUcmltbWVkID0ga2V5VHJpbW1lZC5yZXBsYWNlKC9bXFxyXSsvZywgJycpLnJlcGxhY2UoL1tcXG5dezIsfS9nLCAnXFxuXFxuJyk7XG5cdFx0fVxuXG5cdFx0dGhpcy5rZXkuZXJyb3IoJycgPT09IGtleVRyaW1tZWQpO1xuXHRcdHRoaXMua2V5LmVycm9yTWVzc2FnZSgnJyk7XG5cblx0XHRpZiAoIW9wZW5wZ3BLZXlyaW5nIHx8IHRoaXMua2V5LmVycm9yKCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRsZXQgbWF0Y2ggPSBudWxsLFxuXHRcdFx0Y291bnQgPSAzMCxcblx0XHRcdGRvbmUgPSBmYWxzZTtcblxuXHRcdGRvIHtcblx0XHRcdG1hdGNoID0gcmVnLmV4ZWMoa2V5VHJpbW1lZCk7XG5cdFx0XHRpZiAobWF0Y2ggJiYgMCA8IGNvdW50KSB7XG5cdFx0XHRcdGlmIChtYXRjaFswXSAmJiBtYXRjaFsxXSAmJiBtYXRjaFsyXSAmJiBtYXRjaFsxXSA9PT0gbWF0Y2hbMl0pIHtcblx0XHRcdFx0XHRsZXQgZXJyID0gbnVsbDtcblx0XHRcdFx0XHRpZiAoJ1BSSVZBVEUnID09PSBtYXRjaFsxXSkge1xuXHRcdFx0XHRcdFx0ZXJyID0gb3BlbnBncEtleXJpbmcucHJpdmF0ZUtleXMuaW1wb3J0S2V5KG1hdGNoWzBdKTtcblx0XHRcdFx0XHR9IGVsc2UgaWYgKCdQVUJMSUMnID09PSBtYXRjaFsxXSkge1xuXHRcdFx0XHRcdFx0ZXJyID0gb3BlbnBncEtleXJpbmcucHVibGljS2V5cy5pbXBvcnRLZXkobWF0Y2hbMF0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdGlmIChlcnIpIHtcblx0XHRcdFx0XHRcdHRoaXMua2V5LmVycm9yKHRydWUpO1xuXHRcdFx0XHRcdFx0dGhpcy5rZXkuZXJyb3JNZXNzYWdlKGVyciAmJiBlcnJbMF0gPyAnJyArIGVyclswXSA6ICcnKTtcblx0XHRcdFx0XHRcdGxvZyhlcnIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGNvdW50IC09IDE7XG5cdFx0XHRcdGRvbmUgPSBmYWxzZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGRvbmUgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0gd2hpbGUgKCFkb25lKTtcblxuXHRcdG9wZW5wZ3BLZXlyaW5nLnN0b3JlKCk7XG5cblx0XHRnZXRBcHAoKS5yZWxvYWRPcGVuUGdwS2V5cygpO1xuXG5cdFx0aWYgKHRoaXMua2V5LmVycm9yKCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRkZWxlZ2F0ZVJ1bih0aGlzLCAnY2FuY2VsQ29tbWFuZCcpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0Y2xlYXJQb3B1cCgpIHtcblx0XHR0aGlzLmtleSgnJyk7XG5cdFx0dGhpcy5rZXkuZXJyb3IoZmFsc2UpO1xuXHRcdHRoaXMua2V5LmVycm9yTWVzc2FnZSgnJyk7XG5cdH1cblxuXHRvblNob3coKSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cdH1cblxuXHRvblNob3dXaXRoRGVsYXkoKSB7XG5cdFx0dGhpcy5rZXkuZm9jdXModHJ1ZSk7XG5cdH1cbn1cblxuZXhwb3J0IHsgQWRkT3BlblBncEtleVBvcHVwVmlldywgQWRkT3BlblBncEtleVBvcHVwVmlldyBhcyBkZWZhdWx0IH07XG4iLCJpbXBvcnQgXyBmcm9tICdfJztcbmltcG9ydCBrbyBmcm9tICdrbyc7XG5cbmltcG9ydCB7IE1hZ2ljcyB9IGZyb20gJ0NvbW1vbi9FbnVtcyc7XG5pbXBvcnQgeyB0cmltLCBsb2csIGRlbGVnYXRlUnVuLCBwSW50IH0gZnJvbSAnQ29tbW9uL1V0aWxzJztcblxuaW1wb3J0IFBncFN0b3JlIGZyb20gJ1N0b3Jlcy9Vc2VyL1BncCc7XG5cbmltcG9ydCB7IGdldEFwcCB9IGZyb20gJ0hlbHBlci9BcHBzL1VzZXInO1xuXG5pbXBvcnQgeyBwb3B1cCwgY29tbWFuZCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHBvcHVwKHtcblx0bmFtZTogJ1ZpZXcvUG9wdXAvTmV3T3BlblBncEtleScsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNOZXdPcGVuUGdwS2V5J1xufSlcbmNsYXNzIE5ld09wZW5QZ3BLZXlQb3B1cFZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMuZW1haWwgPSBrby5vYnNlcnZhYmxlKCcnKTtcblx0XHR0aGlzLmVtYWlsLmZvY3VzID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5lbWFpbC5lcnJvciA9IGtvLm9ic2VydmFibGUoZmFsc2UpO1xuXG5cdFx0dGhpcy5uYW1lID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5wYXNzd29yZCA9IGtvLm9ic2VydmFibGUoJycpO1xuXHRcdHRoaXMua2V5Qml0TGVuZ3RoID0ga28ub2JzZXJ2YWJsZShNYWdpY3MuQml0TGVuZ3RoMjA0OCk7XG5cblx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0XHR0aGlzLnN1Ym1pdEVycm9yID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cblx0XHR0aGlzLmVtYWlsLnN1YnNjcmliZSgoKSA9PiB7XG5cdFx0XHR0aGlzLmVtYWlsLmVycm9yKGZhbHNlKTtcblx0XHR9KTtcblx0fVxuXG5cdEBjb21tYW5kKClcblx0Z2VuZXJhdGVPcGVuUGdwS2V5Q29tbWFuZCgpIHtcblx0XHRjb25zdCB1c2VySWQgPSB7fSxcblx0XHRcdG9wZW5wZ3BLZXlyaW5nID0gUGdwU3RvcmUub3BlbnBncEtleXJpbmc7XG5cblx0XHR0aGlzLmVtYWlsLmVycm9yKCcnID09PSB0cmltKHRoaXMuZW1haWwoKSkpO1xuXHRcdGlmICghb3BlbnBncEtleXJpbmcgfHwgdGhpcy5lbWFpbC5lcnJvcigpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0dXNlcklkLmVtYWlsID0gdGhpcy5lbWFpbCgpO1xuXHRcdGlmICgnJyAhPT0gdGhpcy5uYW1lKCkpIHtcblx0XHRcdHVzZXJJZC5uYW1lID0gdGhpcy5uYW1lKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy5zdWJtaXRSZXF1ZXN0KHRydWUpO1xuXHRcdHRoaXMuc3VibWl0RXJyb3IoJycpO1xuXG5cdFx0Xy5kZWxheSgoKSA9PiB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRQZ3BTdG9yZS5vcGVucGdwXG5cdFx0XHRcdFx0LmdlbmVyYXRlS2V5KHtcblx0XHRcdFx0XHRcdHVzZXJJZHM6IFt1c2VySWRdLFxuXHRcdFx0XHRcdFx0bnVtQml0czogcEludCh0aGlzLmtleUJpdExlbmd0aCgpKSxcblx0XHRcdFx0XHRcdHBhc3NwaHJhc2U6IHRyaW0odGhpcy5wYXNzd29yZCgpKVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LnRoZW4oKGtleVBhaXIpID0+IHtcblx0XHRcdFx0XHRcdHRoaXMuc3VibWl0UmVxdWVzdChmYWxzZSk7XG5cblx0XHRcdFx0XHRcdGlmIChrZXlQYWlyICYmIGtleVBhaXIucHJpdmF0ZUtleUFybW9yZWQpIHtcblx0XHRcdFx0XHRcdFx0b3BlbnBncEtleXJpbmcucHJpdmF0ZUtleXMuaW1wb3J0S2V5KGtleVBhaXIucHJpdmF0ZUtleUFybW9yZWQpO1xuXHRcdFx0XHRcdFx0XHRvcGVucGdwS2V5cmluZy5wdWJsaWNLZXlzLmltcG9ydEtleShrZXlQYWlyLnB1YmxpY0tleUFybW9yZWQpO1xuXG5cdFx0XHRcdFx0XHRcdG9wZW5wZ3BLZXlyaW5nLnN0b3JlKCk7XG5cblx0XHRcdFx0XHRcdFx0Z2V0QXBwKCkucmVsb2FkT3BlblBncEtleXMoKTtcblx0XHRcdFx0XHRcdFx0ZGVsZWdhdGVSdW4odGhpcywgJ2NhbmNlbENvbW1hbmQnKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgoZSkgPT4ge1xuXHRcdFx0XHRcdFx0dGhpcy5zdWJtaXRSZXF1ZXN0KGZhbHNlKTtcblx0XHRcdFx0XHRcdHRoaXMuc2hvd0Vycm9yKGUpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHR0aGlzLnN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuXHRcdFx0XHR0aGlzLnNob3dFcnJvcihlKTtcblx0XHRcdH1cblx0XHR9LCBNYWdpY3MuVGltZTEwMG1zKTtcblxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0c2hvd0Vycm9yKGUpIHtcblx0XHRsb2coZSk7XG5cdFx0aWYgKGUgJiYgZS5tZXNzYWdlKSB7XG5cdFx0XHR0aGlzLnN1Ym1pdEVycm9yKGUubWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0Y2xlYXJQb3B1cCgpIHtcblx0XHR0aGlzLm5hbWUoJycpO1xuXHRcdHRoaXMucGFzc3dvcmQoJycpO1xuXG5cdFx0dGhpcy5lbWFpbCgnJyk7XG5cdFx0dGhpcy5lbWFpbC5lcnJvcihmYWxzZSk7XG5cdFx0dGhpcy5rZXlCaXRMZW5ndGgoTWFnaWNzLkJpdExlbmd0aDIwNDgpO1xuXG5cdFx0dGhpcy5zdWJtaXRFcnJvcignJyk7XG5cdH1cblxuXHRvblNob3coKSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cdH1cblxuXHRvblNob3dXaXRoRGVsYXkoKSB7XG5cdFx0dGhpcy5lbWFpbC5mb2N1cyh0cnVlKTtcblx0fVxufVxuXG5leHBvcnQgeyBOZXdPcGVuUGdwS2V5UG9wdXBWaWV3LCBOZXdPcGVuUGdwS2V5UG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiIsImltcG9ydCBrbyBmcm9tICdrbyc7XG5pbXBvcnQga2V5IGZyb20gJ2tleSc7XG5cbmltcG9ydCB7IEtleVN0YXRlIH0gZnJvbSAnQ29tbW9uL0VudW1zJztcbmltcG9ydCB7IHNlbGVjdEVsZW1lbnQgfSBmcm9tICdDb21tb24vVXRpbHMnO1xuXG5pbXBvcnQgeyBwb3B1cCB9IGZyb20gJ0tub2luL0tub2luJztcbmltcG9ydCB7IEFic3RyYWN0Vmlld05leHQgfSBmcm9tICdLbm9pbi9BYnN0cmFjdFZpZXdOZXh0JztcblxuQHBvcHVwKHtcblx0bmFtZTogJ1ZpZXcvUG9wdXAvVmlld09wZW5QZ3BLZXknLFxuXHR0ZW1wbGF0ZUlEOiAnUG9wdXBzVmlld09wZW5QZ3BLZXknXG59KVxuY2xhc3MgVmlld09wZW5QZ3BLZXlQb3B1cFZpZXcgZXh0ZW5kcyBBYnN0cmFjdFZpZXdOZXh0IHtcblx0Y29uc3RydWN0b3IoKSB7XG5cdFx0c3VwZXIoKTtcblxuXHRcdHRoaXMua2V5ID0ga28ub2JzZXJ2YWJsZSgnJyk7XG5cdFx0dGhpcy5rZXlEb20gPSBrby5vYnNlcnZhYmxlKG51bGwpO1xuXG5cdFx0dGhpcy5zRGVmYXVsdEtleVNjb3BlID0gS2V5U3RhdGUuUG9wdXBWaWV3T3BlblBHUDtcblx0fVxuXG5cdGNsZWFyUG9wdXAoKSB7XG5cdFx0dGhpcy5rZXkoJycpO1xuXHR9XG5cblx0c2VsZWN0S2V5KCkge1xuXHRcdGNvbnN0IGVsID0gdGhpcy5rZXlEb20oKTtcblx0XHRpZiAoZWwpIHtcblx0XHRcdHNlbGVjdEVsZW1lbnQoZWwpO1xuXHRcdH1cblx0fVxuXG5cdG9uU2hvdyhvcGVuUGdwS2V5KSB7XG5cdFx0dGhpcy5jbGVhclBvcHVwKCk7XG5cblx0XHRpZiAob3BlblBncEtleSkge1xuXHRcdFx0dGhpcy5rZXkob3BlblBncEtleS5hcm1vcik7XG5cdFx0fVxuXHR9XG5cblx0b25CdWlsZCgpIHtcblx0XHRrZXkoJ2N0cmwrYSwgY29tbWFuZCthJywgS2V5U3RhdGUuUG9wdXBWaWV3T3BlblBHUCwgKCkgPT4ge1xuXHRcdFx0dGhpcy5zZWxlY3RLZXkoKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9KTtcblx0fVxufVxuXG5leHBvcnQgeyBWaWV3T3BlblBncEtleVBvcHVwVmlldywgVmlld09wZW5QZ3BLZXlQb3B1cFZpZXcgYXMgZGVmYXVsdCB9O1xuIiwiaW1wb3J0IGtvIGZyb20gJ2tvJztcblxuaW1wb3J0IFByb21pc2VzIGZyb20gJ1Byb21pc2VzL1VzZXIvQWpheCc7XG5cbmltcG9ydCB7IHBvcHVwIH0gZnJvbSAnS25vaW4vS25vaW4nO1xuaW1wb3J0IHsgQWJzdHJhY3RWaWV3TmV4dCB9IGZyb20gJ0tub2luL0Fic3RyYWN0Vmlld05leHQnO1xuXG5AcG9wdXAoe1xuXHRuYW1lOiAnVmlldy9Qb3B1cC9XZWxjb21lUGFnZScsXG5cdHRlbXBsYXRlSUQ6ICdQb3B1cHNXZWxjb21lUGFnZSdcbn0pXG5jbGFzcyBXZWxjb21lUGFnZVBvcHVwVmlldyBleHRlbmRzIEFic3RyYWN0Vmlld05leHQge1xuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRzdXBlcigpO1xuXG5cdFx0dGhpcy53ZWxjb21lUGFnZVVSTCA9IGtvLm9ic2VydmFibGUoJycpO1xuXG5cdFx0dGhpcy5jbG9zZUZvY3VzZWQgPSBrby5vYnNlcnZhYmxlKGZhbHNlKTtcblx0fVxuXG5cdGNsZWFyUG9wdXAoKSB7XG5cdFx0dGhpcy53ZWxjb21lUGFnZVVSTCgnJyk7XG5cdFx0dGhpcy5jbG9zZUZvY3VzZWQoZmFsc2UpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzVXJsXG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0b25TaG93KHNVcmwpIHtcblx0XHR0aGlzLmNsZWFyUG9wdXAoKTtcblxuXHRcdHRoaXMud2VsY29tZVBhZ2VVUkwoc1VybCk7XG5cdH1cblxuXHRvblNob3dXaXRoRGVsYXkoKSB7XG5cdFx0dGhpcy5jbG9zZUZvY3VzZWQodHJ1ZSk7XG5cdH1cblxuXHRvbkhpZGUoKSB7XG5cdFx0UHJvbWlzZXMud2VsY29tZUNsb3NlKCk7XG5cdH1cbn1cblxuZXhwb3J0IHsgV2VsY29tZVBhZ2VQb3B1cFZpZXcsIFdlbGNvbWVQYWdlUG9wdXBWaWV3IGFzIGRlZmF1bHQgfTtcbiJdLCJzb3VyY2VSb290IjoiIn0=