@clickview/library-editor 1.1.29-rc.1 → 1.1.29-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12,7 +12,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
12
12
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
13
13
 
14
14
  "use strict";
15
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditVideoHelpers\", function() { return EditVideoHelpers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoValidation\", function() { return VideoValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceValidation\", function() { return ResourceValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProductionYearValidation\", function() { return ProductionYearValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SuggestEditValidation\", function() { return SuggestEditValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SuggestEditRatingValidation\", function() { return SuggestEditRatingValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FieldValidation\", function() { return FieldValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FieldAssocValidation\", function() { return FieldAssocValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetDefaultFields\", function() { return GetDefaultFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceLinkValidation\", function() { return ResourceLinkValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SeasonValidation\", function() { return SeasonValidation; });\n/* harmony import */ var libs_common_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../libs/common/src/backbone/index.ts\");\n/* harmony import */ var underscore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"underscore\");\n/* harmony import */ var underscore__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(underscore__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var libs_common_backbone_errors_DevError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../libs/common/src/backbone/errors/DevError.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"moment\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../libs/common/src/backbone/services/LanguageService.tsx\");\n\n\n\n\n\nvar lang = 'libraryEditor.utils';\n/**\r\n * Remove certain properties from being detected as part of the change set.\r\n * This is important when we are managing assocs manually, they shouldn't be passed\r\n * with the call to update the video.\r\n */\n\nvar omitProperties = ['tags', 'thumbnail', 'chapters', 'resources', 'subtitles', 'disabled', 'links', 'restrictions', 'categories'];\n\nfunction _getChanges(initialState, updatedState) {\n if (!initialState) return;\n\n var updatedKeys = underscore__WEBPACK_IMPORTED_MODULE_1__[\"reduce\"](initialState, function (result, val, key) {\n var updatedVal = updatedState[key];\n if (!val && !updatedVal) return result; // Ignore assoc changes that share the same ID\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"](val) && underscore__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"](updatedVal) && !underscore__WEBPACK_IMPORTED_MODULE_1__[\"isUndefined\"](val.id) && val.id === updatedVal.id) return result;\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"](val)) {\n return getArrayChanges(val, updatedVal).length ? result.concat(key) : result;\n }\n\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"isEqual\"](val, updatedVal) ? result : result.concat(key);\n }, []);\n\n if (!updatedKeys.length) return;\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"object\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"map\"](updatedKeys, function (key) {\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"](updatedState[key])) return [key, getArrayChanges(initialState[key], updatedState[key])];\n return [key, updatedState[key]];\n }));\n}\n\nfunction getArrayChanges(originalArray, newArray) {\n var modified = [];\n\n underscore__WEBPACK_IMPORTED_MODULE_1__[\"each\"](newArray, function (updatedItem) {\n var original = underscore__WEBPACK_IMPORTED_MODULE_1__[\"findWhere\"](originalArray, {\n id: updatedItem.id\n }); // Item has been removed. We do not want this to be detected here.\n\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isUndefined\"](original) && Object.keys(updatedItem).length === 0) return;\n var changes = underscore__WEBPACK_IMPORTED_MODULE_1__[\"isUndefined\"](original) ? updatedItem : _getChanges(original, updatedItem);\n if (!changes) return;\n /**\r\n * We treat objects with a negative id as new objects.\r\n *\r\n * This was added so that we could have default items on the\r\n * video model that get persisted if the user changes them - Sha\r\n */\n\n if (updatedItem.id < 0 && !updatedItem.value) return;\n\n if (!original || updatedItem.id < 0) {\n modified.push(updatedItem);\n return;\n }\n\n changes.id = updatedItem.id;\n modified.push(changes);\n });\n\n return modified;\n}\n\nvar EditVideoHelpers = {\n getChanges: function getChanges(video, viewModel) {\n var initialState = underscore__WEBPACK_IMPORTED_MODULE_1__[\"omit\"](video.toJSON(), omitProperties);\n\n var updatedState = underscore__WEBPACK_IMPORTED_MODULE_1__[\"omit\"](viewModel.toJSON(), omitProperties);\n\n var changes = _getChanges(initialState, updatedState);\n\n if (!changes) return;\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"object\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"map\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"keys\"](changes), function (key) {\n return [key, EditVideoHelpers.formatChanges(key, changes[key])];\n }));\n },\n\n /**\r\n * Format video data model to be updated within Master\r\n */\n formatChanges: function formatChanges(key, updatedVal) {\n if (!updatedVal) return null; // Dissoc object\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"](updatedVal) && underscore__WEBPACK_IMPORTED_MODULE_1__[\"isEmpty\"](updatedVal)) return null;\n\n switch (key) {\n case 'name':\n case 'description':\n case 'productionYear':\n case 'dateBroadcast':\n case 'fields':\n case 'episodeNumber':\n return updatedVal;\n\n case 'channel':\n case 'series':\n case 'rating':\n case 'season':\n return {\n id: updatedVal.id\n };\n\n case 'distributors':\n case 'producers':\n case 'directors':\n case 'productionCompanies':\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"map\"](updatedVal, function (val) {\n return val.id;\n });\n // We should never be updating dateModified\n\n case 'dateModified': // hasBroadcast is just used within the UI and shouldn't be persisted to master\n\n case 'hasBroadcast':\n return;\n\n default:\n libs_common_core__WEBPACK_IMPORTED_MODULE_0__[\"Core\"].ErrorHelper.throw(new libs_common_backbone_errors_DevError__WEBPACK_IMPORTED_MODULE_2__[\"DevError\"](\"There are no formatting settings for \".concat(key)));\n }\n },\n\n /**\r\n * Update our model state - the order here is important.\r\n * 1. Update the viewModel to be aligned against the new server model. The server model\r\n * only contains base attributes (without any assocs), so we first need to merge this against\r\n * the viewModel in case we have updated assocs.\r\n *\r\n * 2. Update the base model to be a copy of the current viewModel, this ensures that changes\r\n * to any assocs are also carried across.\r\n *\r\n * 3. Clear any assocs that have actually changed\r\n */\n updateModelState: function updateModelState(model, viewModel, updatedVideo) {\n // Collection arrays for updatedVideo only contain NEW models. Here, we override the value to include ALL models\n var collections = ['distributors', 'producers', 'directors', 'productionCompanies'];\n\n underscore__WEBPACK_IMPORTED_MODULE_1__[\"each\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"keys\"](updatedVideo), function (key) {\n if (!collections.includes(key)) return;\n updatedVideo[key] = viewModel.get(key).toJSON();\n }); // Clone the update as it appears to be mutated when setting the viewModel - which is a bug.\n\n\n viewModel.set(underscore__WEBPACK_IMPORTED_MODULE_1__[\"clone\"](updatedVideo), {\n silent: true\n });\n model.set(viewModel.toJSON(), {\n silent: true\n });\n /**\r\n * We need to check if we've removed an assoc and manually reset\r\n * it on the video model. We do this against the updatedClone as its\r\n * props haven't been mutated.\r\n */\n\n for (var attr in updatedVideo) {\n var value = updatedVideo[attr]; // Only clear the model if the value is falsey and has an assoc\n\n if (value) continue;\n if (!model.associations[attr]) continue;\n var assoc = model.get(attr);\n if (assoc instanceof libs_common_core__WEBPACK_IMPORTED_MODULE_0__[\"Core\"].Model || assoc instanceof libs_common_core__WEBPACK_IMPORTED_MODULE_0__[\"Core\"].NestedModel) assoc.clear();\n }\n },\n getRemovedObjectIds: function getRemovedObjectIds(model, newModel) {\n var objectTypes = ['distributors', 'productionCompanies', 'producers', 'directors'];\n var dissocs = {};\n\n underscore__WEBPACK_IMPORTED_MODULE_1__[\"each\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"keys\"](model.toJSON()), function (key) {\n if (!underscore__WEBPACK_IMPORTED_MODULE_1__[\"contains\"](objectTypes, key)) return;\n var originalIds = model.get(key).map(function (originalModel) {\n return originalModel.id;\n });\n var newIds = newModel.get(key).map(function (newCollectionModel) {\n return newCollectionModel.id;\n });\n\n var ids = underscore__WEBPACK_IMPORTED_MODULE_1__[\"filter\"](originalIds, function (id) {\n return id && !underscore__WEBPACK_IMPORTED_MODULE_1__[\"contains\"](newIds, id);\n });\n\n if (ids.length) dissocs[key] = ids;\n });\n\n return dissocs;\n }\n};\nvar VideoValidation = {\n name: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'videoTitleRequired');\n }\n }, {\n maxLength: 255,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'videoTitleExceeds');\n }\n }],\n description: [{\n required: false\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'videoDescriptionExceeds');\n }\n }],\n episodeNumber: function episodeNumber(value, key, model) {\n if (value && value < 1) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberLessThanOne');\n if (value && value > 2147483647) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberExceeds');\n if (value % 1 !== 0) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberNotWhole');\n if (model.season && model.season.get('number') >= 0 && value === null) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberNoSeason');\n return '';\n },\n season: function season(value, key, model) {\n if ((!model.season || !model.season.get('number')) && (!value || !value.number) && model.episodeNumber) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonNoEpisodeNumber');\n return '';\n }\n};\nvar currentYear = moment__WEBPACK_IMPORTED_MODULE_3__().year();\nvar ProductionYearValidation = {\n productionYear: function productionYear(value) {\n if (!value && value !== 0) return '';\n value = +value;\n if (isNaN(value)) return 'Production year must be a number.';\n if (value < 1900 || value > currentYear) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'validProductionYears', {\n currentYear: currentYear\n });\n }\n};\nvar ResourceValidation = {\n name: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'resourceNameRequired');\n }\n }]\n};\nvar SuggestEditValidation = {\n suggestion: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditRequired');\n }\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditExceeds');\n }\n }],\n reason: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditReasonRequired');\n }\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditReasonExceeds');\n }\n }]\n};\nvar SeasonValidation = {\n number: function number(value) {\n if (!value) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonRequired');\n if (+value < 1) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonLessThanOne');\n if (+value > 255) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonExceeds');\n if (+value % 1 !== 0) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonNotWhole');\n return '';\n }\n};\nvar SuggestEditRatingValidation = {\n empty: function empty() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditRatingRequired');\n },\n original: function original() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditRatingInvalid');\n }\n};\nvar ResourceLinkValidation = {\n url: [{\n required: true,\n pattern: 'url',\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkUrlRequired');\n }\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkUrlExceeds');\n }\n }],\n name: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkNameRequired');\n }\n }, {\n maxLength: 255,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkNameExceeds');\n }\n }]\n};\nvar FieldValidation = {\n name: [{\n maxLength: 128,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'fieldNameExceeds');\n }\n }],\n value: [{\n maxLength: 16000,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'fieldValueExceeds');\n }\n }]\n};\nvar FieldAssocValidation = {\n fields: function fields(_fields) {\n if (!_fields || !_fields.length) return '';\n return _fields.all(function (f) {\n return f.isValid() !== false;\n }) ? '' : libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'fieldsInvalid');\n }\n};\n\nfunction GetDefaultFields() {\n return [{\n /**\r\n * We use a negative id so GetChanges above can discern\r\n * a new field vs a changed field\r\n */\n id: -1,\n name: 'Admin Notes',\n value: '',\n placeholder: 'Notes that only admins will see'\n }];\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy9saWJyYXJ5LWVkaXRvci91dGlscy9FZGl0VmlkZW9IZWxwZXJzLnRzLmpzIiwic291cmNlcyI6WyJmaWxlOi8vQzovQ2xpY2tWaWV3IFByb2plY3RzL0BjbGlja3ZpZXcvcGFja2FnZXMvcHJvamVjdHMvbGlicmFyeS1lZGl0b3Ivc3JjL2FwcHMvbGlicmFyeS1lZGl0b3IvdXRpbHMvRWRpdFZpZGVvSGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlIH0gZnJvbSAnbGlicy9jb21tb24vY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPYmplY3RIYXNoIH0gZnJvbSAnYmFja2JvbmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVmlkZW8gfSBmcm9tICdzaGFyZWQvbW9kZWxzL1ZpZGVvJztcclxuaW1wb3J0IHsgRGV2RXJyb3IgfSBmcm9tICdsaWJzL2NvbW1vbi9iYWNrYm9uZS9lcnJvcnMvRGV2RXJyb3InO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnbGlicy9jb21tb24vYmFja2JvbmUvc2VydmljZXMvTGFuZ3VhZ2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgRmllbGRzQ29sbGVjdGlvbiB9IGZyb20gJ3NoYXJlZC9jb2xsZWN0aW9ucy9GaWVsZHNDb2xsZWN0aW9uJztcclxuXHJcbmNvbnN0IGxhbmcgPSAnbGlicmFyeUVkaXRvci51dGlscyc7XHJcblxyXG4vKipcclxuICogUmVtb3ZlIGNlcnRhaW4gcHJvcGVydGllcyBmcm9tIGJlaW5nIGRldGVjdGVkIGFzIHBhcnQgb2YgdGhlIGNoYW5nZSBzZXQuXHJcbiAqIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gd2UgYXJlIG1hbmFnaW5nIGFzc29jcyBtYW51YWxseSwgdGhleSBzaG91bGRuJ3QgYmUgcGFzc2VkXHJcbiAqIHdpdGggdGhlIGNhbGwgdG8gdXBkYXRlIHRoZSB2aWRlby5cclxuICovXHJcbmNvbnN0IG9taXRQcm9wZXJ0aWVzID0gWyAndGFncycsICd0aHVtYm5haWwnLCAnY2hhcHRlcnMnLCAncmVzb3VyY2VzJywgJ3N1YnRpdGxlcycsICdkaXNhYmxlZCcsICdsaW5rcycsICdyZXN0cmljdGlvbnMnLCAnY2F0ZWdvcmllcycgXTtcclxuXHJcbmZ1bmN0aW9uIGdldENoYW5nZXMoaW5pdGlhbFN0YXRlOiBhbnksIHVwZGF0ZWRTdGF0ZTogYW55KTogYW55IHtcclxuICBpZiAoIWluaXRpYWxTdGF0ZSlcclxuICAgIHJldHVybjtcclxuXHJcbiAgY29uc3QgdXBkYXRlZEtleXMgPSBfLnJlZHVjZShpbml0aWFsU3RhdGUsIChyZXN1bHQsIHZhbDogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgdXBkYXRlZFZhbCA9IHVwZGF0ZWRTdGF0ZVtrZXldO1xyXG5cclxuICAgIGlmICghdmFsICYmICF1cGRhdGVkVmFsKVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG5cclxuICAgIC8vIElnbm9yZSBhc3NvYyBjaGFuZ2VzIHRoYXQgc2hhcmUgdGhlIHNhbWUgSURcclxuICAgIGlmIChfLmlzT2JqZWN0KHZhbCkgJiYgXy5pc09iamVjdCh1cGRhdGVkVmFsKSAmJiAhXy5pc1VuZGVmaW5lZCh2YWwuaWQpICYmIHZhbC5pZCA9PT0gdXBkYXRlZFZhbC5pZClcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbiAgICBpZiAoXy5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgcmV0dXJuIGdldEFycmF5Q2hhbmdlcyh2YWwsIHVwZGF0ZWRWYWwpLmxlbmd0aCA/IHJlc3VsdC5jb25jYXQoa2V5KSA6IHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXy5pc0VxdWFsKHZhbCwgdXBkYXRlZFZhbCkgPyByZXN1bHQgOiByZXN1bHQuY29uY2F0KGtleSk7XHJcbiAgfSwgW10pO1xyXG5cclxuICBpZiAoIXVwZGF0ZWRLZXlzLmxlbmd0aClcclxuICAgIHJldHVybjtcclxuXHJcbiAgcmV0dXJuIF8ub2JqZWN0KF8ubWFwKHVwZGF0ZWRLZXlzLCAoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChfLmlzQXJyYXkodXBkYXRlZFN0YXRlW2tleV0pKVxyXG4gICAgICByZXR1cm4gWyBrZXksIGdldEFycmF5Q2hhbmdlcyhpbml0aWFsU3RhdGVba2V5XSwgdXBkYXRlZFN0YXRlW2tleV0pIF07XHJcblxyXG4gICAgcmV0dXJuIFsga2V5LCB1cGRhdGVkU3RhdGVba2V5XSBdO1xyXG4gIH0pKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QXJyYXlDaGFuZ2VzKG9yaWdpbmFsQXJyYXk6IGFueVtdLCBuZXdBcnJheTogYW55W10pOiBhbnlbXSB7XHJcbiAgY29uc3QgbW9kaWZpZWQ6IGFueVtdID0gW107XHJcbiAgXy5lYWNoKG5ld0FycmF5LCAodXBkYXRlZEl0ZW06IGFueSkgPT4ge1xyXG4gICAgY29uc3Qgb3JpZ2luYWwgPSBfLmZpbmRXaGVyZShvcmlnaW5hbEFycmF5LCB7IGlkOiB1cGRhdGVkSXRlbS5pZCB9KTtcclxuXHJcbiAgICAvLyBJdGVtIGhhcyBiZWVuIHJlbW92ZWQuIFdlIGRvIG5vdCB3YW50IHRoaXMgdG8gYmUgZGV0ZWN0ZWQgaGVyZS5cclxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9yaWdpbmFsKSAmJiBPYmplY3Qua2V5cyh1cGRhdGVkSXRlbSkubGVuZ3RoID09PSAwKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2hhbmdlcyA9IF8uaXNVbmRlZmluZWQob3JpZ2luYWwpID8gdXBkYXRlZEl0ZW0gOiBnZXRDaGFuZ2VzKG9yaWdpbmFsLCB1cGRhdGVkSXRlbSk7XHJcbiAgICBpZiAoIWNoYW5nZXMpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdlIHRyZWF0IG9iamVjdHMgd2l0aCBhIG5lZ2F0aXZlIGlkIGFzIG5ldyBvYmplY3RzLlxyXG4gICAgICogXHJcbiAgICAgKiBUaGlzIHdhcyBhZGRlZCBzbyB0aGF0IHdlIGNvdWxkIGhhdmUgZGVmYXVsdCBpdGVtcyBvbiB0aGVcclxuICAgICAqIHZpZGVvIG1vZGVsIHRoYXQgZ2V0IHBlcnNpc3RlZCBpZiB0aGUgdXNlciBjaGFuZ2VzIHRoZW0gLSBTaGFcclxuICAgICAqL1xyXG4gICAgaWYgKHVwZGF0ZWRJdGVtLmlkIDwgMCAmJiAhdXBkYXRlZEl0ZW0udmFsdWUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoIW9yaWdpbmFsIHx8IHVwZGF0ZWRJdGVtLmlkIDwgMCkge1xyXG4gICAgICBtb2RpZmllZC5wdXNoKHVwZGF0ZWRJdGVtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZXMuaWQgPSB1cGRhdGVkSXRlbS5pZDtcclxuICAgIG1vZGlmaWVkLnB1c2goY2hhbmdlcyk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG1vZGlmaWVkO1xyXG59XHJcblxyXG5jb25zdCBFZGl0VmlkZW9IZWxwZXJzID0ge1xyXG4gIGdldENoYW5nZXModmlkZW86IFZpZGVvLCB2aWV3TW9kZWw6IFZpZGVvKTogT2JqZWN0SGFzaCB7XHJcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBfLm9taXQodmlkZW8udG9KU09OKCksIG9taXRQcm9wZXJ0aWVzKTtcclxuICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IF8ub21pdCh2aWV3TW9kZWwudG9KU09OKCksIG9taXRQcm9wZXJ0aWVzKTtcclxuXHJcbiAgICBjb25zdCBjaGFuZ2VzID0gZ2V0Q2hhbmdlcyhpbml0aWFsU3RhdGUsIHVwZGF0ZWRTdGF0ZSk7XHJcblxyXG4gICAgaWYgKCFjaGFuZ2VzKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgcmV0dXJuIF8ub2JqZWN0KF8ubWFwKF8ua2V5cyhjaGFuZ2VzKSwga2V5ID0+IHtcclxuICAgICAgcmV0dXJuIFsga2V5LCBFZGl0VmlkZW9IZWxwZXJzLmZvcm1hdENoYW5nZXMoa2V5LCBjaGFuZ2VzW2tleV0pIF07XHJcbiAgICB9KSk7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0IHZpZGVvIGRhdGEgbW9kZWwgdG8gYmUgdXBkYXRlZCB3aXRoaW4gTWFzdGVyXHJcbiAgICovXHJcbiAgZm9ybWF0Q2hhbmdlcyhrZXk6IHN0cmluZywgdXBkYXRlZFZhbDogYW55KTogYW55IHtcclxuICAgIGlmICghdXBkYXRlZFZhbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gRGlzc29jIG9iamVjdFxyXG4gICAgaWYgKF8uaXNPYmplY3QodXBkYXRlZFZhbCkgJiYgXy5pc0VtcHR5KHVwZGF0ZWRWYWwpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgY2FzZSAnbmFtZSc6XHJcbiAgICBjYXNlICdkZXNjcmlwdGlvbic6XHJcbiAgICBjYXNlICdwcm9kdWN0aW9uWWVhcic6XHJcbiAgICBjYXNlICdkYXRlQnJvYWRjYXN0JzpcclxuICAgIGNhc2UgJ2ZpZWxkcyc6XHJcbiAgICBjYXNlICdlcGlzb2RlTnVtYmVyJzpcclxuICAgICAgcmV0dXJuIHVwZGF0ZWRWYWw7XHJcblxyXG4gICAgY2FzZSAnY2hhbm5lbCc6XHJcbiAgICBjYXNlICdzZXJpZXMnOlxyXG4gICAgY2FzZSAncmF0aW5nJzpcclxuICAgIGNhc2UgJ3NlYXNvbic6XHJcbiAgICAgIHJldHVybiB7IGlkOiB1cGRhdGVkVmFsLmlkIH07XHJcblxyXG4gICAgY2FzZSAnZGlzdHJpYnV0b3JzJzpcclxuICAgIGNhc2UgJ3Byb2R1Y2Vycyc6XHJcbiAgICBjYXNlICdkaXJlY3RvcnMnOlxyXG4gICAgY2FzZSAncHJvZHVjdGlvbkNvbXBhbmllcyc6XHJcbiAgICAgIHJldHVybiBfLm1hcCh1cGRhdGVkVmFsLCAodmFsOiBPYmplY3RIYXNoKSA9PiB2YWwuaWQpO1xyXG5cclxuICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSB1cGRhdGluZyBkYXRlTW9kaWZpZWRcclxuICAgIGNhc2UgJ2RhdGVNb2RpZmllZCc6XHJcbiAgICAvLyBoYXNCcm9hZGNhc3QgaXMganVzdCB1c2VkIHdpdGhpbiB0aGUgVUkgYW5kIHNob3VsZG4ndCBiZSBwZXJzaXN0ZWQgdG8gbWFzdGVyXHJcbiAgICBjYXNlICdoYXNCcm9hZGNhc3QnOlxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgQ29yZS5FcnJvckhlbHBlci50aHJvdyhuZXcgRGV2RXJyb3IoYFRoZXJlIGFyZSBubyBmb3JtYXR0aW5nIHNldHRpbmdzIGZvciAke2tleX1gKSk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIG91ciBtb2RlbCBzdGF0ZSAtIHRoZSBvcmRlciBoZXJlIGlzIGltcG9ydGFudC5cclxuICAgKiAxLiBVcGRhdGUgdGhlIHZpZXdNb2RlbCB0byBiZSBhbGlnbmVkIGFnYWluc3QgdGhlIG5ldyBzZXJ2ZXIgbW9kZWwuIFRoZSBzZXJ2ZXIgbW9kZWxcclxuICAgKiBvbmx5IGNvbnRhaW5zIGJhc2UgYXR0cmlidXRlcyAod2l0aG91dCBhbnkgYXNzb2NzKSwgc28gd2UgZmlyc3QgbmVlZCB0byBtZXJnZSB0aGlzIGFnYWluc3RcclxuICAgKiB0aGUgdmlld01vZGVsIGluIGNhc2Ugd2UgaGF2ZSB1cGRhdGVkIGFzc29jcy5cclxuICAgKiBcclxuICAgKiAyLiBVcGRhdGUgdGhlIGJhc2UgbW9kZWwgdG8gYmUgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHZpZXdNb2RlbCwgdGhpcyBlbnN1cmVzIHRoYXQgY2hhbmdlc1xyXG4gICAqIHRvIGFueSBhc3NvY3MgYXJlIGFsc28gY2FycmllZCBhY3Jvc3MuXHJcbiAgICogXHJcbiAgICogMy4gQ2xlYXIgYW55IGFzc29jcyB0aGF0IGhhdmUgYWN0dWFsbHkgY2hhbmdlZFxyXG4gICAqL1xyXG4gIHVwZGF0ZU1vZGVsU3RhdGUobW9kZWw6IFZpZGVvLCB2aWV3TW9kZWw6IFZpZGVvLCB1cGRhdGVkVmlkZW86IE9iamVjdEhhc2gpOiB2b2lkIHtcclxuICAgIC8vIENvbGxlY3Rpb24gYXJyYXlzIGZvciB1cGRhdGVkVmlkZW8gb25seSBjb250YWluIE5FVyBtb2RlbHMuIEhlcmUsIHdlIG92ZXJyaWRlIHRoZSB2YWx1ZSB0byBpbmNsdWRlIEFMTCBtb2RlbHNcclxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gWyAnZGlzdHJpYnV0b3JzJywgJ3Byb2R1Y2VycycsICdkaXJlY3RvcnMnLCAncHJvZHVjdGlvbkNvbXBhbmllcycgXTtcclxuICAgIF8uZWFjaChfLmtleXModXBkYXRlZFZpZGVvKSwga2V5ID0+IHtcclxuICAgICAgaWYgKCFjb2xsZWN0aW9ucy5pbmNsdWRlcyhrZXkpKSByZXR1cm47XHJcbiAgICAgIHVwZGF0ZWRWaWRlb1trZXldID0gdmlld01vZGVsLmdldChrZXkpLnRvSlNPTigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ2xvbmUgdGhlIHVwZGF0ZSBhcyBpdCBhcHBlYXJzIHRvIGJlIG11dGF0ZWQgd2hlbiBzZXR0aW5nIHRoZSB2aWV3TW9kZWwgLSB3aGljaCBpcyBhIGJ1Zy5cclxuICAgIHZpZXdNb2RlbC5zZXQoXy5jbG9uZSh1cGRhdGVkVmlkZW8pLCB7IHNpbGVudDogdHJ1ZSB9KTtcclxuICAgIG1vZGVsLnNldCh2aWV3TW9kZWwudG9KU09OKCksIHsgc2lsZW50OiB0cnVlIH0pO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2UgbmVlZCB0byBjaGVjayBpZiB3ZSd2ZSByZW1vdmVkIGFuIGFzc29jIGFuZCBtYW51YWxseSByZXNldCBcclxuICAgICAqIGl0IG9uIHRoZSB2aWRlbyBtb2RlbC4gV2UgZG8gdGhpcyBhZ2FpbnN0IHRoZSB1cGRhdGVkQ2xvbmUgYXMgaXRzXHJcbiAgICAgKiBwcm9wcyBoYXZlbid0IGJlZW4gbXV0YXRlZC5cclxuICAgICAqL1xyXG4gICAgZm9yIChjb25zdCBhdHRyIGluIHVwZGF0ZWRWaWRlbykge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHVwZGF0ZWRWaWRlb1thdHRyXTtcclxuXHJcbiAgICAgIC8vIE9ubHkgY2xlYXIgdGhlIG1vZGVsIGlmIHRoZSB2YWx1ZSBpcyBmYWxzZXkgYW5kIGhhcyBhbiBhc3NvY1xyXG4gICAgICBpZiAodmFsdWUpIGNvbnRpbnVlO1xyXG4gICAgICBpZiAoIW1vZGVsLmFzc29jaWF0aW9uc1thdHRyXSkgY29udGludWU7XHJcblxyXG4gICAgICBjb25zdCBhc3NvYyA9IG1vZGVsLmdldChhdHRyKTtcclxuICAgICAgaWYgKChhc3NvYyBpbnN0YW5jZW9mIENvcmUuTW9kZWwpIHx8IChhc3NvYyBpbnN0YW5jZW9mIENvcmUuTmVzdGVkTW9kZWwpKVxyXG4gICAgICAgIGFzc29jLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgZ2V0UmVtb3ZlZE9iamVjdElkcyhtb2RlbDogQ29yZS5Nb2RlbCwgbmV3TW9kZWw6IENvcmUuTW9kZWwpOiBPYmplY3RIYXNoIHtcclxuICAgIGNvbnN0IG9iamVjdFR5cGVzID0gWyAnZGlzdHJpYnV0b3JzJywgJ3Byb2R1Y3Rpb25Db21wYW5pZXMnLCAncHJvZHVjZXJzJywgJ2RpcmVjdG9ycycgXTtcclxuICAgIGNvbnN0IGRpc3NvY3M6IE9iamVjdEhhc2ggPSB7fTtcclxuXHJcbiAgICBfLmVhY2goXy5rZXlzKG1vZGVsLnRvSlNPTigpKSwga2V5ID0+IHtcclxuICAgICAgaWYgKCFfLmNvbnRhaW5zKG9iamVjdFR5cGVzLCBrZXkpKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBvcmlnaW5hbElkczogc3RyaW5nW10gPSBtb2RlbC5nZXQoa2V5KS5tYXAoKG9yaWdpbmFsTW9kZWw6IENvcmUuTW9kZWwpID0+IG9yaWdpbmFsTW9kZWwuaWQpO1xyXG4gICAgICBjb25zdCBuZXdJZHM6IHN0cmluZ1tdID0gbmV3TW9kZWwuZ2V0KGtleSkubWFwKChuZXdDb2xsZWN0aW9uTW9kZWw6IENvcmUuTW9kZWwpID0+IG5ld0NvbGxlY3Rpb25Nb2RlbC5pZCk7XHJcblxyXG4gICAgICBjb25zdCBpZHMgPSBfLmZpbHRlcihvcmlnaW5hbElkcywgaWQgPT4gaWQgJiYgIV8uY29udGFpbnMobmV3SWRzLCBpZCkpO1xyXG5cclxuICAgICAgaWYgKGlkcy5sZW5ndGgpXHJcbiAgICAgICAgZGlzc29jc1trZXldID0gaWRzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGRpc3NvY3M7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgVmlkZW9WYWxpZGF0aW9uOiBPYmplY3RIYXNoID0ge1xyXG4gIG5hbWU6IFtcclxuICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmlkZW9UaXRsZVJlcXVpcmVkJykgfSxcclxuICAgIHsgbWF4TGVuZ3RoOiAyNTUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmlkZW9UaXRsZUV4Y2VlZHMnKSB9LFxyXG4gIF0sXHJcbiAgZGVzY3JpcHRpb246IFtcclxuICAgIHsgcmVxdWlyZWQ6IGZhbHNlIH0sXHJcbiAgICB7IG1heExlbmd0aDogNjU1MzUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmlkZW9EZXNjcmlwdGlvbkV4Y2VlZHMnKSB9LFxyXG4gIF0sXHJcbiAgZXBpc29kZU51bWJlcih2YWx1ZTogbnVtYmVyLCBrZXk6IHN0cmluZywgbW9kZWw6IE9iamVjdEhhc2gpOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlIDwgMSlcclxuICAgICAgcmV0dXJuIExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ2VwaXNvZGVOdW1iZXJMZXNzVGhhbk9uZScpO1xyXG5cclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA+IDIxNDc0ODM2NDcpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdlcGlzb2RlTnVtYmVyRXhjZWVkcycpO1xyXG5cclxuICAgIGlmICh2YWx1ZSAlIDEgIT09IDApXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdlcGlzb2RlTnVtYmVyTm90V2hvbGUnKTtcclxuXHJcbiAgICBpZiAobW9kZWwuc2Vhc29uICYmIG1vZGVsLnNlYXNvbi5nZXQoJ251bWJlcicpID49IDAgJiYgdmFsdWUgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdlcGlzb2RlTnVtYmVyTm9TZWFzb24nKTtcclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfSxcclxuICBzZWFzb24odmFsdWU6IE9iamVjdEhhc2gsIGtleTogc3RyaW5nLCBtb2RlbDogT2JqZWN0SGFzaCk6IHN0cmluZyB7XHJcbiAgICBpZiAoKCFtb2RlbC5zZWFzb24gfHwgIW1vZGVsLnNlYXNvbi5nZXQoJ251bWJlcicpKSAmJiAoIXZhbHVlIHx8ICF2YWx1ZS5udW1iZXIpICYmIG1vZGVsLmVwaXNvZGVOdW1iZXIpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdzZWFzb25Ob0VwaXNvZGVOdW1iZXInKTtcclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgY3VycmVudFllYXIgPSBtb21lbnQoKS55ZWFyKCk7XHJcbmNvbnN0IFByb2R1Y3Rpb25ZZWFyVmFsaWRhdGlvbiA9IHtcclxuICBwcm9kdWN0aW9uWWVhcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApXHJcbiAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICB2YWx1ZSA9ICt2YWx1ZTtcclxuXHJcbiAgICBpZiAoaXNOYU4odmFsdWUpKVxyXG4gICAgICByZXR1cm4gJ1Byb2R1Y3Rpb24geWVhciBtdXN0IGJlIGEgbnVtYmVyLic7XHJcblxyXG4gICAgaWYgKHZhbHVlIDwgMTkwMCB8fCB2YWx1ZSA+IGN1cnJlbnRZZWFyKVxyXG4gICAgICByZXR1cm4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmFsaWRQcm9kdWN0aW9uWWVhcnMnLCB7IGN1cnJlbnRZZWFyIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IFJlc291cmNlVmFsaWRhdGlvbjogT2JqZWN0SGFzaCA9IHtcclxuICBuYW1lOiBbXHJcbiAgICB7IHJlcXVpcmVkOiB0cnVlLCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3Jlc291cmNlTmFtZVJlcXVpcmVkJykgfSxcclxuICBdLFxyXG59O1xyXG5cclxuY29uc3QgU3VnZ2VzdEVkaXRWYWxpZGF0aW9uID0ge1xyXG4gIHN1Z2dlc3Rpb246IFtcclxuICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc3VnZ2VzdEVkaXRSZXF1aXJlZCcpIH0sXHJcbiAgICB7IG1heExlbmd0aDogNjU1MzUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc3VnZ2VzdEVkaXRFeGNlZWRzJykgfVxyXG4gIF0sXHJcbiAgcmVhc29uOiBbXHJcbiAgICB7IHJlcXVpcmVkOiB0cnVlLCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3N1Z2dlc3RFZGl0UmVhc29uUmVxdWlyZWQnKSB9LFxyXG4gICAgeyBtYXhMZW5ndGg6IDY1NTM1LCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3N1Z2dlc3RFZGl0UmVhc29uRXhjZWVkcycpIH1cclxuICBdXHJcbn07XHJcblxyXG5jb25zdCBTZWFzb25WYWxpZGF0aW9uID0ge1xyXG4gIG51bWJlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdzZWFzb25SZXF1aXJlZCcpO1xyXG5cclxuICAgIGlmICgrdmFsdWUgPCAxKVxyXG4gICAgICByZXR1cm4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc2Vhc29uTGVzc1RoYW5PbmUnKTtcclxuXHJcbiAgICBpZiAoK3ZhbHVlID4gMjU1KVxyXG4gICAgICByZXR1cm4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc2Vhc29uRXhjZWVkcycpO1xyXG5cclxuICAgIGlmICgrdmFsdWUgJSAxICE9PSAwKVxyXG4gICAgICByZXR1cm4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc2Vhc29uTm90V2hvbGUnKTtcclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfSxcclxufTtcclxuXHJcbmNvbnN0IFN1Z2dlc3RFZGl0UmF0aW5nVmFsaWRhdGlvbiA9IHtcclxuICBlbXB0eTogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc3VnZ2VzdEVkaXRSYXRpbmdSZXF1aXJlZCcpLFxyXG4gIG9yaWdpbmFsOiAoKSA9PiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdzdWdnZXN0RWRpdFJhdGluZ0ludmFsaWQnKVxyXG59O1xyXG5cclxuY29uc3QgUmVzb3VyY2VMaW5rVmFsaWRhdGlvbiA9IHtcclxuICB1cmw6IFtcclxuICAgIHsgcmVxdWlyZWQ6IHRydWUsIHBhdHRlcm46ICd1cmwnLCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ2xpbmtVcmxSZXF1aXJlZCcpIH0sXHJcbiAgICB7IG1heExlbmd0aDogNjU1MzUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnbGlua1VybEV4Y2VlZHMnKSB9LFxyXG4gIF0sXHJcbiAgbmFtZTogW1xyXG4gICAgeyByZXF1aXJlZDogdHJ1ZSwgbXNnOiAoKSA9PiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdsaW5rTmFtZVJlcXVpcmVkJykgfSxcclxuICAgIHsgbWF4TGVuZ3RoOiAyNTUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnbGlua05hbWVFeGNlZWRzJykgfVxyXG4gIF1cclxufTtcclxuXHJcbmNvbnN0IEZpZWxkVmFsaWRhdGlvbiA9IHtcclxuICBuYW1lOiBbe1xyXG4gICAgbWF4TGVuZ3RoOiAxMjgsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnZmllbGROYW1lRXhjZWVkcycpXHJcbiAgfV0sXHJcbiAgdmFsdWU6IFt7XHJcbiAgICBtYXhMZW5ndGg6IDE2MDAwLCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ2ZpZWxkVmFsdWVFeGNlZWRzJylcclxuICB9XVxyXG59O1xyXG5cclxuY29uc3QgRmllbGRBc3NvY1ZhbGlkYXRpb24gPSB7XHJcbiAgZmllbGRzOiAoZmllbGRzOiBGaWVsZHNDb2xsZWN0aW9uKTogc3RyaW5nID0+IHtcclxuICAgIGlmICghZmllbGRzIHx8ICFmaWVsZHMubGVuZ3RoKVxyXG4gICAgICByZXR1cm4gJyc7XHJcblxyXG4gICAgcmV0dXJuIGZpZWxkcy5hbGwoZiA9PiBmLmlzVmFsaWQoKSAhPT0gZmFsc2UpID8gJycgOiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdmaWVsZHNJbnZhbGlkJyk7XHJcbiAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gR2V0RGVmYXVsdEZpZWxkcygpOiBPYmplY3RIYXNoW10ge1xyXG4gIHJldHVybiBbe1xyXG4gICAgLyoqXHJcbiAgICAgKiBXZSB1c2UgYSBuZWdhdGl2ZSBpZCBzbyBHZXRDaGFuZ2VzIGFib3ZlIGNhbiBkaXNjZXJuICBcclxuICAgICAqIGEgbmV3IGZpZWxkIHZzIGEgY2hhbmdlZCBmaWVsZFxyXG4gICAgICovXHJcbiAgICBpZDogLTEsXHJcbiAgICBuYW1lOiAnQWRtaW4gTm90ZXMnLFxyXG4gICAgdmFsdWU6ICcnLFxyXG4gICAgcGxhY2Vob2xkZXI6ICdOb3RlcyB0aGF0IG9ubHkgYWRtaW5zIHdpbGwgc2VlJ1xyXG4gIH1dO1xyXG59XHJcblxyXG5leHBvcnQge1xyXG4gIEVkaXRWaWRlb0hlbHBlcnMsXHJcbiAgVmlkZW9WYWxpZGF0aW9uLFxyXG4gIFJlc291cmNlVmFsaWRhdGlvbixcclxuICBQcm9kdWN0aW9uWWVhclZhbGlkYXRpb24sXHJcbiAgU3VnZ2VzdEVkaXRWYWxpZGF0aW9uLFxyXG4gIFN1Z2dlc3RFZGl0UmF0aW5nVmFsaWRhdGlvbixcclxuICBGaWVsZFZhbGlkYXRpb24sXHJcbiAgRmllbGRBc3NvY1ZhbGlkYXRpb24sXHJcbiAgR2V0RGVmYXVsdEZpZWxkcyxcclxuICBSZXNvdXJjZUxpbmtWYWxpZGF0aW9uLFxyXG4gIFNlYXNvblZhbGlkYXRpb25cclxufTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7Ozs7QUFJQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFHQTs7Ozs7QUFLQTtBQUNBO0FBQUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUE1QkE7QUE4QkE7QUFDQTtBQUNBOzs7Ozs7Ozs7O0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBOzs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBcEhBO0FBdUhBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBR0E7QUFHQTtBQUdBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBN0JBO0FBZ0NBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFFQTtBQUdBO0FBQ0E7QUFBQTtBQUNBO0FBWkE7QUFlQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUZBO0FBTUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVBBO0FBV0E7QUFDQTtBQUNBO0FBR0E7QUFHQTtBQUdBO0FBR0E7QUFDQTtBQWZBO0FBa0JBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRkE7QUFLQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFQQTtBQVdBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBR0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQURBO0FBSkE7QUFTQTtBQUNBO0FBQ0E7QUFHQTtBQUFBO0FBQUE7QUFDQTtBQU5BO0FBQ0E7QUFRQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFSQTtBQVVBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/apps/library-editor/utils/EditVideoHelpers.ts\n");
15
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditVideoHelpers\", function() { return EditVideoHelpers; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoValidation\", function() { return VideoValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceValidation\", function() { return ResourceValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ProductionYearValidation\", function() { return ProductionYearValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SuggestEditValidation\", function() { return SuggestEditValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SuggestEditRatingValidation\", function() { return SuggestEditRatingValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FieldValidation\", function() { return FieldValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FieldAssocValidation\", function() { return FieldAssocValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"GetDefaultFields\", function() { return GetDefaultFields; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ResourceLinkValidation\", function() { return ResourceLinkValidation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SeasonValidation\", function() { return SeasonValidation; });\n/* harmony import */ var libs_common_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"../../libs/common/src/backbone/index.ts\");\n/* harmony import */ var underscore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"underscore\");\n/* harmony import */ var underscore__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(underscore__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var libs_common_backbone_errors_DevError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"../../libs/common/src/backbone/errors/DevError.ts\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"moment\");\n/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"../../libs/common/src/backbone/services/LanguageService.tsx\");\n\n\n\n\n\nvar lang = 'libraryEditor.utils';\n/**\r\n * Remove certain properties from being detected as part of the change set.\r\n * This is important when we are managing assocs manually, they shouldn't be passed\r\n * with the call to update the video.\r\n */\n\nvar omitProperties = ['tags', 'thumbnail', 'chapters', 'resources', 'subtitles', 'disabled', 'links', 'restrictions', 'categories'];\n\nfunction _getChanges(initialState, updatedState) {\n if (!initialState) return;\n\n var updatedKeys = underscore__WEBPACK_IMPORTED_MODULE_1__[\"reduce\"](initialState, function (result, val, key) {\n var updatedVal = updatedState[key];\n if (!val && !updatedVal) return result; // Ignore assoc changes that share the same ID\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"](val) && underscore__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"](updatedVal) && !underscore__WEBPACK_IMPORTED_MODULE_1__[\"isUndefined\"](val.id) && val.id === updatedVal.id) return result;\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"](val)) {\n return getArrayChanges(val, updatedVal).length ? result.concat(key) : result;\n }\n\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"isEqual\"](val, updatedVal) ? result : result.concat(key);\n }, []);\n\n if (!updatedKeys.length) return;\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"object\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"map\"](updatedKeys, function (key) {\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isArray\"](updatedState[key])) return [key, getArrayChanges(initialState[key], updatedState[key])];\n return [key, updatedState[key]];\n }));\n}\n\nfunction getArrayChanges(originalArray, newArray) {\n var modified = [];\n\n underscore__WEBPACK_IMPORTED_MODULE_1__[\"each\"](newArray, function (updatedItem) {\n var original = underscore__WEBPACK_IMPORTED_MODULE_1__[\"findWhere\"](originalArray, {\n id: updatedItem.id\n }); // Item has been removed. We do not want this to be detected here.\n\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isUndefined\"](original) && Object.keys(updatedItem).length === 0) return;\n var changes = underscore__WEBPACK_IMPORTED_MODULE_1__[\"isUndefined\"](original) ? updatedItem : _getChanges(original, updatedItem);\n if (!changes) return;\n /**\r\n * We treat objects with a negative id as new objects.\r\n *\r\n * This was added so that we could have default items on the\r\n * video model that get persisted if the user changes them - Sha\r\n */\n\n if (updatedItem.id < 0 && !updatedItem.value) return;\n\n if (!original || updatedItem.id < 0) {\n modified.push(updatedItem);\n return;\n }\n\n changes.id = updatedItem.id;\n modified.push(changes);\n });\n\n return modified;\n}\n\nvar EditVideoHelpers = {\n getChanges: function getChanges(video, viewModel) {\n var initialState = underscore__WEBPACK_IMPORTED_MODULE_1__[\"omit\"](video.toJSON(), omitProperties);\n\n var updatedState = underscore__WEBPACK_IMPORTED_MODULE_1__[\"omit\"](viewModel.toJSON(), omitProperties);\n\n var changes = _getChanges(initialState, updatedState);\n\n if (!changes) return;\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"object\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"map\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"keys\"](changes), function (key) {\n return [key, EditVideoHelpers.formatChanges(key, changes[key])];\n }));\n },\n\n /**\r\n * Format video data model to be updated within Master\r\n */\n formatChanges: function formatChanges(key, updatedVal) {\n if (!updatedVal) return null; // Dissoc object\n\n if (underscore__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"](updatedVal) && underscore__WEBPACK_IMPORTED_MODULE_1__[\"isEmpty\"](updatedVal)) return null;\n\n switch (key) {\n case 'name':\n case 'description':\n case 'productionYear':\n case 'dateBroadcast':\n case 'fields':\n case 'episodeNumber':\n return updatedVal;\n\n case 'channel':\n case 'series':\n case 'rating':\n case 'season':\n return {\n id: updatedVal.id\n };\n\n case 'distributors':\n case 'producers':\n case 'directors':\n case 'productionCompanies':\n return underscore__WEBPACK_IMPORTED_MODULE_1__[\"map\"](updatedVal, function (val) {\n return val.id;\n });\n // We should never be updating dateModified\n\n case 'dateModified': // hasBroadcast is just used within the UI and shouldn't be persisted to master\n\n case 'hasBroadcast':\n return;\n\n default:\n libs_common_core__WEBPACK_IMPORTED_MODULE_0__[\"Core\"].ErrorHelper.throw(new libs_common_backbone_errors_DevError__WEBPACK_IMPORTED_MODULE_2__[\"DevError\"](\"There are no formatting settings for \".concat(key)));\n }\n },\n\n /**\r\n * Update our model state - the order here is important.\r\n * 1. Update the viewModel to be aligned against the new server model. The server model\r\n * only contains base attributes (without any assocs), so we first need to merge this against\r\n * the viewModel in case we have updated assocs.\r\n *\r\n * 2. Update the base model to be a copy of the current viewModel, this ensures that changes\r\n * to any assocs are also carried across.\r\n *\r\n * 3. Clear any assocs that have actually changed\r\n */\n updateModelState: function updateModelState(model, viewModel, updatedVideo) {\n // Collection arrays for updatedVideo only contain NEW models. Here, we override the value to include ALL models\n var collections = ['distributors', 'producers', 'directors', 'productionCompanies'];\n\n underscore__WEBPACK_IMPORTED_MODULE_1__[\"each\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"keys\"](updatedVideo), function (key) {\n if (!collections.includes(key)) return;\n updatedVideo[key] = viewModel.get(key).toJSON();\n }); // Clone the update as it appears to be mutated when setting the viewModel - which is a bug.\n\n\n viewModel.set(underscore__WEBPACK_IMPORTED_MODULE_1__[\"clone\"](updatedVideo), {\n silent: true\n });\n model.set(viewModel.toJSON(), {\n silent: true\n });\n /**\r\n * We need to check if we've removed an assoc and manually reset\r\n * it on the video model. We do this against the updatedClone as its\r\n * props haven't been mutated.\r\n */\n\n for (var attr in updatedVideo) {\n var value = updatedVideo[attr]; // Only clear the model if the value is falsey and has an assoc\n\n if (value) continue;\n if (!model.associations[attr]) continue;\n var assoc = model.get(attr);\n if (assoc instanceof libs_common_core__WEBPACK_IMPORTED_MODULE_0__[\"Core\"].Model || assoc instanceof libs_common_core__WEBPACK_IMPORTED_MODULE_0__[\"Core\"].NestedModel) assoc.clear();\n }\n },\n getRemovedObjectIds: function getRemovedObjectIds(model, newModel) {\n var objectTypes = ['distributors', 'productionCompanies', 'producers', 'directors'];\n var dissocs = {};\n\n underscore__WEBPACK_IMPORTED_MODULE_1__[\"each\"](underscore__WEBPACK_IMPORTED_MODULE_1__[\"keys\"](model.toJSON()), function (key) {\n if (!underscore__WEBPACK_IMPORTED_MODULE_1__[\"contains\"](objectTypes, key)) return;\n var originalIds = model.get(key).map(function (originalModel) {\n return originalModel.id;\n });\n var newIds = newModel.get(key).map(function (newCollectionModel) {\n return newCollectionModel.id;\n });\n\n var ids = underscore__WEBPACK_IMPORTED_MODULE_1__[\"filter\"](originalIds, function (id) {\n return id && !underscore__WEBPACK_IMPORTED_MODULE_1__[\"contains\"](newIds, id);\n });\n\n if (ids.length) dissocs[key] = ids;\n });\n\n return dissocs;\n }\n};\nvar VideoValidation = {\n name: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'videoTitleRequired');\n }\n }, {\n maxLength: 255,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'videoTitleExceeds');\n }\n }],\n description: [{\n required: false\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'videoDescriptionExceeds');\n }\n }],\n episodeNumber: function episodeNumber(value, key, model) {\n if (value && value < 1) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberLessThanOne');\n if (value && value > 2147483647) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberExceeds');\n if (value % 1 !== 0) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberNotWhole');\n if (model.season && model.season.get('number') >= 0 && value === null) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'episodeNumberNoSeason');\n return '';\n },\n season: function season(value, key, model) {\n if ((!model.season || !model.season.get('number')) && (!value || !value.number) && model.episodeNumber) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonNoEpisodeNumber');\n return '';\n }\n};\nvar currentYear = moment__WEBPACK_IMPORTED_MODULE_3__().year();\nvar ProductionYearValidation = {\n productionYear: function productionYear(value) {\n if (!value && value !== 0) return '';\n value = +value;\n if (isNaN(value)) return 'Production year must be a number.';\n if (value < 1900 || value > currentYear) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'validProductionYears', {\n currentYear: currentYear\n });\n }\n};\nvar ResourceValidation = {\n name: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'resourceNameRequired');\n }\n }]\n};\nvar SuggestEditValidation = {\n suggestion: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditRequired');\n }\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditExceeds');\n }\n }],\n reason: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditReasonRequired');\n }\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditReasonExceeds');\n }\n }]\n};\nvar SeasonValidation = {\n number: function number(value) {\n if (!value) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonRequired');\n if (+value < 1) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonLessThanOne');\n if (+value > 3000) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonExceeds');\n if (+value % 1 !== 0) return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'seasonNotWhole');\n return '';\n }\n};\nvar SuggestEditRatingValidation = {\n empty: function empty() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditRatingRequired');\n },\n original: function original() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'suggestEditRatingInvalid');\n }\n};\nvar ResourceLinkValidation = {\n url: [{\n required: true,\n pattern: 'url',\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkUrlRequired');\n }\n }, {\n maxLength: 65535,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkUrlExceeds');\n }\n }],\n name: [{\n required: true,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkNameRequired');\n }\n }, {\n maxLength: 255,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'linkNameExceeds');\n }\n }]\n};\nvar FieldValidation = {\n name: [{\n maxLength: 128,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'fieldNameExceeds');\n }\n }],\n value: [{\n maxLength: 16000,\n msg: function msg() {\n return libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'fieldValueExceeds');\n }\n }]\n};\nvar FieldAssocValidation = {\n fields: function fields(_fields) {\n if (!_fields || !_fields.length) return '';\n return _fields.all(function (f) {\n return f.isValid() !== false;\n }) ? '' : libs_common_backbone_services_LanguageService__WEBPACK_IMPORTED_MODULE_4__[\"LanguageService\"].getPhrase(lang, 'fieldsInvalid');\n }\n};\n\nfunction GetDefaultFields() {\n return [{\n /**\r\n * We use a negative id so GetChanges above can discern\r\n * a new field vs a changed field\r\n */\n id: -1,\n name: 'Admin Notes',\n value: '',\n placeholder: 'Notes that only admins will see'\n }];\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy9saWJyYXJ5LWVkaXRvci91dGlscy9FZGl0VmlkZW9IZWxwZXJzLnRzLmpzIiwic291cmNlcyI6WyJmaWxlOi8vQzovQ2xpY2tWaWV3IFByb2plY3RzL0BjbGlja3ZpZXcvcGFja2FnZXMvcHJvamVjdHMvbGlicmFyeS1lZGl0b3Ivc3JjL2FwcHMvbGlicmFyeS1lZGl0b3IvdXRpbHMvRWRpdFZpZGVvSGVscGVycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlIH0gZnJvbSAnbGlicy9jb21tb24vY29yZSc7XHJcblxyXG5pbXBvcnQgeyBPYmplY3RIYXNoIH0gZnJvbSAnYmFja2JvbmUnO1xyXG5pbXBvcnQgKiBhcyBfIGZyb20gJ3VuZGVyc2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgVmlkZW8gfSBmcm9tICdzaGFyZWQvbW9kZWxzL1ZpZGVvJztcclxuaW1wb3J0IHsgRGV2RXJyb3IgfSBmcm9tICdsaWJzL2NvbW1vbi9iYWNrYm9uZS9lcnJvcnMvRGV2RXJyb3InO1xyXG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgTGFuZ3VhZ2VTZXJ2aWNlIH0gZnJvbSAnbGlicy9jb21tb24vYmFja2JvbmUvc2VydmljZXMvTGFuZ3VhZ2VTZXJ2aWNlJztcclxuaW1wb3J0IHsgRmllbGRzQ29sbGVjdGlvbiB9IGZyb20gJ3NoYXJlZC9jb2xsZWN0aW9ucy9GaWVsZHNDb2xsZWN0aW9uJztcclxuXHJcbmNvbnN0IGxhbmcgPSAnbGlicmFyeUVkaXRvci51dGlscyc7XHJcblxyXG4vKipcclxuICogUmVtb3ZlIGNlcnRhaW4gcHJvcGVydGllcyBmcm9tIGJlaW5nIGRldGVjdGVkIGFzIHBhcnQgb2YgdGhlIGNoYW5nZSBzZXQuXHJcbiAqIFRoaXMgaXMgaW1wb3J0YW50IHdoZW4gd2UgYXJlIG1hbmFnaW5nIGFzc29jcyBtYW51YWxseSwgdGhleSBzaG91bGRuJ3QgYmUgcGFzc2VkXHJcbiAqIHdpdGggdGhlIGNhbGwgdG8gdXBkYXRlIHRoZSB2aWRlby5cclxuICovXHJcbmNvbnN0IG9taXRQcm9wZXJ0aWVzID0gWyAndGFncycsICd0aHVtYm5haWwnLCAnY2hhcHRlcnMnLCAncmVzb3VyY2VzJywgJ3N1YnRpdGxlcycsICdkaXNhYmxlZCcsICdsaW5rcycsICdyZXN0cmljdGlvbnMnLCAnY2F0ZWdvcmllcycgXTtcclxuXHJcbmZ1bmN0aW9uIGdldENoYW5nZXMoaW5pdGlhbFN0YXRlOiBhbnksIHVwZGF0ZWRTdGF0ZTogYW55KTogYW55IHtcclxuICBpZiAoIWluaXRpYWxTdGF0ZSlcclxuICAgIHJldHVybjtcclxuXHJcbiAgY29uc3QgdXBkYXRlZEtleXMgPSBfLnJlZHVjZShpbml0aWFsU3RhdGUsIChyZXN1bHQsIHZhbDogYW55LCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgdXBkYXRlZFZhbCA9IHVwZGF0ZWRTdGF0ZVtrZXldO1xyXG5cclxuICAgIGlmICghdmFsICYmICF1cGRhdGVkVmFsKVxyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG5cclxuICAgIC8vIElnbm9yZSBhc3NvYyBjaGFuZ2VzIHRoYXQgc2hhcmUgdGhlIHNhbWUgSURcclxuICAgIGlmIChfLmlzT2JqZWN0KHZhbCkgJiYgXy5pc09iamVjdCh1cGRhdGVkVmFsKSAmJiAhXy5pc1VuZGVmaW5lZCh2YWwuaWQpICYmIHZhbC5pZCA9PT0gdXBkYXRlZFZhbC5pZClcclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuXHJcbiAgICBpZiAoXy5pc0FycmF5KHZhbCkpIHtcclxuICAgICAgcmV0dXJuIGdldEFycmF5Q2hhbmdlcyh2YWwsIHVwZGF0ZWRWYWwpLmxlbmd0aCA/IHJlc3VsdC5jb25jYXQoa2V5KSA6IHJlc3VsdDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gXy5pc0VxdWFsKHZhbCwgdXBkYXRlZFZhbCkgPyByZXN1bHQgOiByZXN1bHQuY29uY2F0KGtleSk7XHJcbiAgfSwgW10pO1xyXG5cclxuICBpZiAoIXVwZGF0ZWRLZXlzLmxlbmd0aClcclxuICAgIHJldHVybjtcclxuXHJcbiAgcmV0dXJuIF8ub2JqZWN0KF8ubWFwKHVwZGF0ZWRLZXlzLCAoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgIGlmIChfLmlzQXJyYXkodXBkYXRlZFN0YXRlW2tleV0pKVxyXG4gICAgICByZXR1cm4gWyBrZXksIGdldEFycmF5Q2hhbmdlcyhpbml0aWFsU3RhdGVba2V5XSwgdXBkYXRlZFN0YXRlW2tleV0pIF07XHJcblxyXG4gICAgcmV0dXJuIFsga2V5LCB1cGRhdGVkU3RhdGVba2V5XSBdO1xyXG4gIH0pKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QXJyYXlDaGFuZ2VzKG9yaWdpbmFsQXJyYXk6IGFueVtdLCBuZXdBcnJheTogYW55W10pOiBhbnlbXSB7XHJcbiAgY29uc3QgbW9kaWZpZWQ6IGFueVtdID0gW107XHJcbiAgXy5lYWNoKG5ld0FycmF5LCAodXBkYXRlZEl0ZW06IGFueSkgPT4ge1xyXG4gICAgY29uc3Qgb3JpZ2luYWwgPSBfLmZpbmRXaGVyZShvcmlnaW5hbEFycmF5LCB7IGlkOiB1cGRhdGVkSXRlbS5pZCB9KTtcclxuXHJcbiAgICAvLyBJdGVtIGhhcyBiZWVuIHJlbW92ZWQuIFdlIGRvIG5vdCB3YW50IHRoaXMgdG8gYmUgZGV0ZWN0ZWQgaGVyZS5cclxuICAgIGlmIChfLmlzVW5kZWZpbmVkKG9yaWdpbmFsKSAmJiBPYmplY3Qua2V5cyh1cGRhdGVkSXRlbSkubGVuZ3RoID09PSAwKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgY29uc3QgY2hhbmdlcyA9IF8uaXNVbmRlZmluZWQob3JpZ2luYWwpID8gdXBkYXRlZEl0ZW0gOiBnZXRDaGFuZ2VzKG9yaWdpbmFsLCB1cGRhdGVkSXRlbSk7XHJcbiAgICBpZiAoIWNoYW5nZXMpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdlIHRyZWF0IG9iamVjdHMgd2l0aCBhIG5lZ2F0aXZlIGlkIGFzIG5ldyBvYmplY3RzLlxyXG4gICAgICogXHJcbiAgICAgKiBUaGlzIHdhcyBhZGRlZCBzbyB0aGF0IHdlIGNvdWxkIGhhdmUgZGVmYXVsdCBpdGVtcyBvbiB0aGVcclxuICAgICAqIHZpZGVvIG1vZGVsIHRoYXQgZ2V0IHBlcnNpc3RlZCBpZiB0aGUgdXNlciBjaGFuZ2VzIHRoZW0gLSBTaGFcclxuICAgICAqL1xyXG4gICAgaWYgKHVwZGF0ZWRJdGVtLmlkIDwgMCAmJiAhdXBkYXRlZEl0ZW0udmFsdWUpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBpZiAoIW9yaWdpbmFsIHx8IHVwZGF0ZWRJdGVtLmlkIDwgMCkge1xyXG4gICAgICBtb2RpZmllZC5wdXNoKHVwZGF0ZWRJdGVtKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nZXMuaWQgPSB1cGRhdGVkSXRlbS5pZDtcclxuICAgIG1vZGlmaWVkLnB1c2goY2hhbmdlcyk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIG1vZGlmaWVkO1xyXG59XHJcblxyXG5jb25zdCBFZGl0VmlkZW9IZWxwZXJzID0ge1xyXG4gIGdldENoYW5nZXModmlkZW86IFZpZGVvLCB2aWV3TW9kZWw6IFZpZGVvKTogT2JqZWN0SGFzaCB7XHJcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBfLm9taXQodmlkZW8udG9KU09OKCksIG9taXRQcm9wZXJ0aWVzKTtcclxuICAgIGNvbnN0IHVwZGF0ZWRTdGF0ZSA9IF8ub21pdCh2aWV3TW9kZWwudG9KU09OKCksIG9taXRQcm9wZXJ0aWVzKTtcclxuXHJcbiAgICBjb25zdCBjaGFuZ2VzID0gZ2V0Q2hhbmdlcyhpbml0aWFsU3RhdGUsIHVwZGF0ZWRTdGF0ZSk7XHJcblxyXG4gICAgaWYgKCFjaGFuZ2VzKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgcmV0dXJuIF8ub2JqZWN0KF8ubWFwKF8ua2V5cyhjaGFuZ2VzKSwga2V5ID0+IHtcclxuICAgICAgcmV0dXJuIFsga2V5LCBFZGl0VmlkZW9IZWxwZXJzLmZvcm1hdENoYW5nZXMoa2V5LCBjaGFuZ2VzW2tleV0pIF07XHJcbiAgICB9KSk7XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogRm9ybWF0IHZpZGVvIGRhdGEgbW9kZWwgdG8gYmUgdXBkYXRlZCB3aXRoaW4gTWFzdGVyXHJcbiAgICovXHJcbiAgZm9ybWF0Q2hhbmdlcyhrZXk6IHN0cmluZywgdXBkYXRlZFZhbDogYW55KTogYW55IHtcclxuICAgIGlmICghdXBkYXRlZFZhbClcclxuICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgLy8gRGlzc29jIG9iamVjdFxyXG4gICAgaWYgKF8uaXNPYmplY3QodXBkYXRlZFZhbCkgJiYgXy5pc0VtcHR5KHVwZGF0ZWRWYWwpKVxyXG4gICAgICByZXR1cm4gbnVsbDtcclxuXHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgY2FzZSAnbmFtZSc6XHJcbiAgICBjYXNlICdkZXNjcmlwdGlvbic6XHJcbiAgICBjYXNlICdwcm9kdWN0aW9uWWVhcic6XHJcbiAgICBjYXNlICdkYXRlQnJvYWRjYXN0JzpcclxuICAgIGNhc2UgJ2ZpZWxkcyc6XHJcbiAgICBjYXNlICdlcGlzb2RlTnVtYmVyJzpcclxuICAgICAgcmV0dXJuIHVwZGF0ZWRWYWw7XHJcblxyXG4gICAgY2FzZSAnY2hhbm5lbCc6XHJcbiAgICBjYXNlICdzZXJpZXMnOlxyXG4gICAgY2FzZSAncmF0aW5nJzpcclxuICAgIGNhc2UgJ3NlYXNvbic6XHJcbiAgICAgIHJldHVybiB7IGlkOiB1cGRhdGVkVmFsLmlkIH07XHJcblxyXG4gICAgY2FzZSAnZGlzdHJpYnV0b3JzJzpcclxuICAgIGNhc2UgJ3Byb2R1Y2Vycyc6XHJcbiAgICBjYXNlICdkaXJlY3RvcnMnOlxyXG4gICAgY2FzZSAncHJvZHVjdGlvbkNvbXBhbmllcyc6XHJcbiAgICAgIHJldHVybiBfLm1hcCh1cGRhdGVkVmFsLCAodmFsOiBPYmplY3RIYXNoKSA9PiB2YWwuaWQpO1xyXG5cclxuICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSB1cGRhdGluZyBkYXRlTW9kaWZpZWRcclxuICAgIGNhc2UgJ2RhdGVNb2RpZmllZCc6XHJcbiAgICAvLyBoYXNCcm9hZGNhc3QgaXMganVzdCB1c2VkIHdpdGhpbiB0aGUgVUkgYW5kIHNob3VsZG4ndCBiZSBwZXJzaXN0ZWQgdG8gbWFzdGVyXHJcbiAgICBjYXNlICdoYXNCcm9hZGNhc3QnOlxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgZGVmYXVsdDpcclxuICAgICAgQ29yZS5FcnJvckhlbHBlci50aHJvdyhuZXcgRGV2RXJyb3IoYFRoZXJlIGFyZSBubyBmb3JtYXR0aW5nIHNldHRpbmdzIGZvciAke2tleX1gKSk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIG91ciBtb2RlbCBzdGF0ZSAtIHRoZSBvcmRlciBoZXJlIGlzIGltcG9ydGFudC5cclxuICAgKiAxLiBVcGRhdGUgdGhlIHZpZXdNb2RlbCB0byBiZSBhbGlnbmVkIGFnYWluc3QgdGhlIG5ldyBzZXJ2ZXIgbW9kZWwuIFRoZSBzZXJ2ZXIgbW9kZWxcclxuICAgKiBvbmx5IGNvbnRhaW5zIGJhc2UgYXR0cmlidXRlcyAod2l0aG91dCBhbnkgYXNzb2NzKSwgc28gd2UgZmlyc3QgbmVlZCB0byBtZXJnZSB0aGlzIGFnYWluc3RcclxuICAgKiB0aGUgdmlld01vZGVsIGluIGNhc2Ugd2UgaGF2ZSB1cGRhdGVkIGFzc29jcy5cclxuICAgKiBcclxuICAgKiAyLiBVcGRhdGUgdGhlIGJhc2UgbW9kZWwgdG8gYmUgYSBjb3B5IG9mIHRoZSBjdXJyZW50IHZpZXdNb2RlbCwgdGhpcyBlbnN1cmVzIHRoYXQgY2hhbmdlc1xyXG4gICAqIHRvIGFueSBhc3NvY3MgYXJlIGFsc28gY2FycmllZCBhY3Jvc3MuXHJcbiAgICogXHJcbiAgICogMy4gQ2xlYXIgYW55IGFzc29jcyB0aGF0IGhhdmUgYWN0dWFsbHkgY2hhbmdlZFxyXG4gICAqL1xyXG4gIHVwZGF0ZU1vZGVsU3RhdGUobW9kZWw6IFZpZGVvLCB2aWV3TW9kZWw6IFZpZGVvLCB1cGRhdGVkVmlkZW86IE9iamVjdEhhc2gpOiB2b2lkIHtcclxuICAgIC8vIENvbGxlY3Rpb24gYXJyYXlzIGZvciB1cGRhdGVkVmlkZW8gb25seSBjb250YWluIE5FVyBtb2RlbHMuIEhlcmUsIHdlIG92ZXJyaWRlIHRoZSB2YWx1ZSB0byBpbmNsdWRlIEFMTCBtb2RlbHNcclxuICAgIGNvbnN0IGNvbGxlY3Rpb25zID0gWyAnZGlzdHJpYnV0b3JzJywgJ3Byb2R1Y2VycycsICdkaXJlY3RvcnMnLCAncHJvZHVjdGlvbkNvbXBhbmllcycgXTtcclxuICAgIF8uZWFjaChfLmtleXModXBkYXRlZFZpZGVvKSwga2V5ID0+IHtcclxuICAgICAgaWYgKCFjb2xsZWN0aW9ucy5pbmNsdWRlcyhrZXkpKSByZXR1cm47XHJcbiAgICAgIHVwZGF0ZWRWaWRlb1trZXldID0gdmlld01vZGVsLmdldChrZXkpLnRvSlNPTigpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gQ2xvbmUgdGhlIHVwZGF0ZSBhcyBpdCBhcHBlYXJzIHRvIGJlIG11dGF0ZWQgd2hlbiBzZXR0aW5nIHRoZSB2aWV3TW9kZWwgLSB3aGljaCBpcyBhIGJ1Zy5cclxuICAgIHZpZXdNb2RlbC5zZXQoXy5jbG9uZSh1cGRhdGVkVmlkZW8pLCB7IHNpbGVudDogdHJ1ZSB9KTtcclxuICAgIG1vZGVsLnNldCh2aWV3TW9kZWwudG9KU09OKCksIHsgc2lsZW50OiB0cnVlIH0pO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2UgbmVlZCB0byBjaGVjayBpZiB3ZSd2ZSByZW1vdmVkIGFuIGFzc29jIGFuZCBtYW51YWxseSByZXNldCBcclxuICAgICAqIGl0IG9uIHRoZSB2aWRlbyBtb2RlbC4gV2UgZG8gdGhpcyBhZ2FpbnN0IHRoZSB1cGRhdGVkQ2xvbmUgYXMgaXRzXHJcbiAgICAgKiBwcm9wcyBoYXZlbid0IGJlZW4gbXV0YXRlZC5cclxuICAgICAqL1xyXG4gICAgZm9yIChjb25zdCBhdHRyIGluIHVwZGF0ZWRWaWRlbykge1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IHVwZGF0ZWRWaWRlb1thdHRyXTtcclxuXHJcbiAgICAgIC8vIE9ubHkgY2xlYXIgdGhlIG1vZGVsIGlmIHRoZSB2YWx1ZSBpcyBmYWxzZXkgYW5kIGhhcyBhbiBhc3NvY1xyXG4gICAgICBpZiAodmFsdWUpIGNvbnRpbnVlO1xyXG4gICAgICBpZiAoIW1vZGVsLmFzc29jaWF0aW9uc1thdHRyXSkgY29udGludWU7XHJcblxyXG4gICAgICBjb25zdCBhc3NvYyA9IG1vZGVsLmdldChhdHRyKTtcclxuICAgICAgaWYgKChhc3NvYyBpbnN0YW5jZW9mIENvcmUuTW9kZWwpIHx8IChhc3NvYyBpbnN0YW5jZW9mIENvcmUuTmVzdGVkTW9kZWwpKVxyXG4gICAgICAgIGFzc29jLmNsZWFyKCk7XHJcbiAgICB9XHJcbiAgfSxcclxuXHJcbiAgZ2V0UmVtb3ZlZE9iamVjdElkcyhtb2RlbDogQ29yZS5Nb2RlbCwgbmV3TW9kZWw6IENvcmUuTW9kZWwpOiBPYmplY3RIYXNoIHtcclxuICAgIGNvbnN0IG9iamVjdFR5cGVzID0gWyAnZGlzdHJpYnV0b3JzJywgJ3Byb2R1Y3Rpb25Db21wYW5pZXMnLCAncHJvZHVjZXJzJywgJ2RpcmVjdG9ycycgXTtcclxuICAgIGNvbnN0IGRpc3NvY3M6IE9iamVjdEhhc2ggPSB7fTtcclxuXHJcbiAgICBfLmVhY2goXy5rZXlzKG1vZGVsLnRvSlNPTigpKSwga2V5ID0+IHtcclxuICAgICAgaWYgKCFfLmNvbnRhaW5zKG9iamVjdFR5cGVzLCBrZXkpKSByZXR1cm47XHJcblxyXG4gICAgICBjb25zdCBvcmlnaW5hbElkczogc3RyaW5nW10gPSBtb2RlbC5nZXQoa2V5KS5tYXAoKG9yaWdpbmFsTW9kZWw6IENvcmUuTW9kZWwpID0+IG9yaWdpbmFsTW9kZWwuaWQpO1xyXG4gICAgICBjb25zdCBuZXdJZHM6IHN0cmluZ1tdID0gbmV3TW9kZWwuZ2V0KGtleSkubWFwKChuZXdDb2xsZWN0aW9uTW9kZWw6IENvcmUuTW9kZWwpID0+IG5ld0NvbGxlY3Rpb25Nb2RlbC5pZCk7XHJcblxyXG4gICAgICBjb25zdCBpZHMgPSBfLmZpbHRlcihvcmlnaW5hbElkcywgaWQgPT4gaWQgJiYgIV8uY29udGFpbnMobmV3SWRzLCBpZCkpO1xyXG5cclxuICAgICAgaWYgKGlkcy5sZW5ndGgpXHJcbiAgICAgICAgZGlzc29jc1trZXldID0gaWRzO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGRpc3NvY3M7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgVmlkZW9WYWxpZGF0aW9uOiBPYmplY3RIYXNoID0ge1xyXG4gIG5hbWU6IFtcclxuICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmlkZW9UaXRsZVJlcXVpcmVkJykgfSxcclxuICAgIHsgbWF4TGVuZ3RoOiAyNTUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmlkZW9UaXRsZUV4Y2VlZHMnKSB9LFxyXG4gIF0sXHJcbiAgZGVzY3JpcHRpb246IFtcclxuICAgIHsgcmVxdWlyZWQ6IGZhbHNlIH0sXHJcbiAgICB7IG1heExlbmd0aDogNjU1MzUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmlkZW9EZXNjcmlwdGlvbkV4Y2VlZHMnKSB9LFxyXG4gIF0sXHJcbiAgZXBpc29kZU51bWJlcih2YWx1ZTogbnVtYmVyLCBrZXk6IHN0cmluZywgbW9kZWw6IE9iamVjdEhhc2gpOiBzdHJpbmcge1xyXG4gICAgaWYgKHZhbHVlICYmIHZhbHVlIDwgMSlcclxuICAgICAgcmV0dXJuIExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ2VwaXNvZGVOdW1iZXJMZXNzVGhhbk9uZScpO1xyXG5cclxuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA+IDIxNDc0ODM2NDcpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdlcGlzb2RlTnVtYmVyRXhjZWVkcycpO1xyXG5cclxuICAgIGlmICh2YWx1ZSAlIDEgIT09IDApXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdlcGlzb2RlTnVtYmVyTm90V2hvbGUnKTtcclxuXHJcbiAgICBpZiAobW9kZWwuc2Vhc29uICYmIG1vZGVsLnNlYXNvbi5nZXQoJ251bWJlcicpID49IDAgJiYgdmFsdWUgPT09IG51bGwpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdlcGlzb2RlTnVtYmVyTm9TZWFzb24nKTtcclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfSxcclxuICBzZWFzb24odmFsdWU6IE9iamVjdEhhc2gsIGtleTogc3RyaW5nLCBtb2RlbDogT2JqZWN0SGFzaCk6IHN0cmluZyB7XHJcbiAgICBpZiAoKCFtb2RlbC5zZWFzb24gfHwgIW1vZGVsLnNlYXNvbi5nZXQoJ251bWJlcicpKSAmJiAoIXZhbHVlIHx8ICF2YWx1ZS5udW1iZXIpICYmIG1vZGVsLmVwaXNvZGVOdW1iZXIpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdzZWFzb25Ob0VwaXNvZGVOdW1iZXInKTtcclxuXHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG59O1xyXG5cclxuY29uc3QgY3VycmVudFllYXIgPSBtb21lbnQoKS55ZWFyKCk7XHJcbmNvbnN0IFByb2R1Y3Rpb25ZZWFyVmFsaWRhdGlvbiA9IHtcclxuICBwcm9kdWN0aW9uWWVhcih2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUgJiYgdmFsdWUgIT09IDApXHJcbiAgICAgIHJldHVybiAnJztcclxuXHJcbiAgICB2YWx1ZSA9ICt2YWx1ZTtcclxuXHJcbiAgICBpZiAoaXNOYU4odmFsdWUpKVxyXG4gICAgICByZXR1cm4gJ1Byb2R1Y3Rpb24geWVhciBtdXN0IGJlIGEgbnVtYmVyLic7XHJcblxyXG4gICAgaWYgKHZhbHVlIDwgMTkwMCB8fCB2YWx1ZSA+IGN1cnJlbnRZZWFyKVxyXG4gICAgICByZXR1cm4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAndmFsaWRQcm9kdWN0aW9uWWVhcnMnLCB7IGN1cnJlbnRZZWFyIH0pO1xyXG4gIH1cclxufTtcclxuXHJcbmNvbnN0IFJlc291cmNlVmFsaWRhdGlvbjogT2JqZWN0SGFzaCA9IHtcclxuICBuYW1lOiBbXHJcbiAgICB7IHJlcXVpcmVkOiB0cnVlLCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3Jlc291cmNlTmFtZVJlcXVpcmVkJykgfSxcclxuICBdLFxyXG59O1xyXG5cclxuY29uc3QgU3VnZ2VzdEVkaXRWYWxpZGF0aW9uID0ge1xyXG4gIHN1Z2dlc3Rpb246IFtcclxuICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc3VnZ2VzdEVkaXRSZXF1aXJlZCcpIH0sXHJcbiAgICB7IG1heExlbmd0aDogNjU1MzUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc3VnZ2VzdEVkaXRFeGNlZWRzJykgfVxyXG4gIF0sXHJcbiAgcmVhc29uOiBbXHJcbiAgICB7IHJlcXVpcmVkOiB0cnVlLCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3N1Z2dlc3RFZGl0UmVhc29uUmVxdWlyZWQnKSB9LFxyXG4gICAgeyBtYXhMZW5ndGg6IDY1NTM1LCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3N1Z2dlc3RFZGl0UmVhc29uRXhjZWVkcycpIH1cclxuICBdXHJcbn07XHJcblxyXG5jb25zdCBTZWFzb25WYWxpZGF0aW9uID0ge1xyXG4gIG51bWJlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpXHJcbiAgICAgIHJldHVybiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdzZWFzb25SZXF1aXJlZCcpO1xyXG5cclxuICAgIGlmICgrdmFsdWUgPCAxKVxyXG4gICAgICByZXR1cm4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc2Vhc29uTGVzc1RoYW5PbmUnKTtcclxuXHJcbiAgICBpZiAoK3ZhbHVlID4gMzAwMClcclxuICAgICAgcmV0dXJuIExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3NlYXNvbkV4Y2VlZHMnKTtcclxuXHJcbiAgICBpZiAoK3ZhbHVlICUgMSAhPT0gMClcclxuICAgICAgcmV0dXJuIExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3NlYXNvbk5vdFdob2xlJyk7XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH0sXHJcbn07XHJcblxyXG5jb25zdCBTdWdnZXN0RWRpdFJhdGluZ1ZhbGlkYXRpb24gPSB7XHJcbiAgZW1wdHk6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ3N1Z2dlc3RFZGl0UmF0aW5nUmVxdWlyZWQnKSxcclxuICBvcmlnaW5hbDogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnc3VnZ2VzdEVkaXRSYXRpbmdJbnZhbGlkJylcclxufTtcclxuXHJcbmNvbnN0IFJlc291cmNlTGlua1ZhbGlkYXRpb24gPSB7XHJcbiAgdXJsOiBbXHJcbiAgICB7IHJlcXVpcmVkOiB0cnVlLCBwYXR0ZXJuOiAndXJsJywgbXNnOiAoKSA9PiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdsaW5rVXJsUmVxdWlyZWQnKSB9LFxyXG4gICAgeyBtYXhMZW5ndGg6IDY1NTM1LCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ2xpbmtVcmxFeGNlZWRzJykgfSxcclxuICBdLFxyXG4gIG5hbWU6IFtcclxuICAgIHsgcmVxdWlyZWQ6IHRydWUsIG1zZzogKCkgPT4gTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnbGlua05hbWVSZXF1aXJlZCcpIH0sXHJcbiAgICB7IG1heExlbmd0aDogMjU1LCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ2xpbmtOYW1lRXhjZWVkcycpIH1cclxuICBdXHJcbn07XHJcblxyXG5jb25zdCBGaWVsZFZhbGlkYXRpb24gPSB7XHJcbiAgbmFtZTogW3tcclxuICAgIG1heExlbmd0aDogMTI4LCBtc2c6ICgpID0+IExhbmd1YWdlU2VydmljZS5nZXRQaHJhc2UobGFuZywgJ2ZpZWxkTmFtZUV4Y2VlZHMnKVxyXG4gIH1dLFxyXG4gIHZhbHVlOiBbe1xyXG4gICAgbWF4TGVuZ3RoOiAxNjAwMCwgbXNnOiAoKSA9PiBMYW5ndWFnZVNlcnZpY2UuZ2V0UGhyYXNlKGxhbmcsICdmaWVsZFZhbHVlRXhjZWVkcycpXHJcbiAgfV1cclxufTtcclxuXHJcbmNvbnN0IEZpZWxkQXNzb2NWYWxpZGF0aW9uID0ge1xyXG4gIGZpZWxkczogKGZpZWxkczogRmllbGRzQ29sbGVjdGlvbik6IHN0cmluZyA9PiB7XHJcbiAgICBpZiAoIWZpZWxkcyB8fCAhZmllbGRzLmxlbmd0aClcclxuICAgICAgcmV0dXJuICcnO1xyXG5cclxuICAgIHJldHVybiBmaWVsZHMuYWxsKGYgPT4gZi5pc1ZhbGlkKCkgIT09IGZhbHNlKSA/ICcnIDogTGFuZ3VhZ2VTZXJ2aWNlLmdldFBocmFzZShsYW5nLCAnZmllbGRzSW52YWxpZCcpO1xyXG4gIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIEdldERlZmF1bHRGaWVsZHMoKTogT2JqZWN0SGFzaFtdIHtcclxuICByZXR1cm4gW3tcclxuICAgIC8qKlxyXG4gICAgICogV2UgdXNlIGEgbmVnYXRpdmUgaWQgc28gR2V0Q2hhbmdlcyBhYm92ZSBjYW4gZGlzY2VybiAgXHJcbiAgICAgKiBhIG5ldyBmaWVsZCB2cyBhIGNoYW5nZWQgZmllbGRcclxuICAgICAqL1xyXG4gICAgaWQ6IC0xLFxyXG4gICAgbmFtZTogJ0FkbWluIE5vdGVzJyxcclxuICAgIHZhbHVlOiAnJyxcclxuICAgIHBsYWNlaG9sZGVyOiAnTm90ZXMgdGhhdCBvbmx5IGFkbWlucyB3aWxsIHNlZSdcclxuICB9XTtcclxufVxyXG5cclxuZXhwb3J0IHtcclxuICBFZGl0VmlkZW9IZWxwZXJzLFxyXG4gIFZpZGVvVmFsaWRhdGlvbixcclxuICBSZXNvdXJjZVZhbGlkYXRpb24sXHJcbiAgUHJvZHVjdGlvblllYXJWYWxpZGF0aW9uLFxyXG4gIFN1Z2dlc3RFZGl0VmFsaWRhdGlvbixcclxuICBTdWdnZXN0RWRpdFJhdGluZ1ZhbGlkYXRpb24sXHJcbiAgRmllbGRWYWxpZGF0aW9uLFxyXG4gIEZpZWxkQXNzb2NWYWxpZGF0aW9uLFxyXG4gIEdldERlZmF1bHRGaWVsZHMsXHJcbiAgUmVzb3VyY2VMaW5rVmFsaWRhdGlvbixcclxuICBTZWFzb25WYWxpZGF0aW9uXHJcbn07Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFHQTtBQUNBO0FBQ0E7QUFHQTtBQUVBOzs7O0FBSUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBR0E7Ozs7O0FBS0E7QUFDQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBNUJBO0FBOEJBO0FBQ0E7QUFDQTs7Ozs7Ozs7OztBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFFQTs7OztBQUlBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQXBIQTtBQXVIQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQTdCQTtBQWdDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFDQTtBQVpBO0FBZUE7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFGQTtBQU1BO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFQQTtBQVdBO0FBQ0E7QUFDQTtBQUdBO0FBR0E7QUFHQTtBQUdBO0FBQ0E7QUFmQTtBQWtCQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUZBO0FBS0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBUEE7QUFXQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUdBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFEQTtBQUpBO0FBU0E7QUFDQTtBQUNBO0FBR0E7QUFBQTtBQUFBO0FBQ0E7QUFOQTtBQUNBO0FBUUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBUkE7QUFVQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/apps/library-editor/utils/EditVideoHelpers.ts\n");
16
16
 
17
17
  /***/ }),
18
18
 
@@ -11,7 +11,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
11
11
  /***/ "./src/apps/library-editor/components/tag-list/TagItem.hbs":
12
12
  /***/ (function(module, exports, __webpack_require__) {
13
13
 
14
- eval("var Handlebars = __webpack_require__(\"handlebars\");\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"<span class=\\\"close cursor-pointer\\\" aria-hidden=\\\"true\\\">&times;</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {});\n\n return container.escapeExpression(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.removable : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy9saWJyYXJ5LWVkaXRvci9jb21wb25lbnRzL3RhZy1saXN0L1RhZ0l0ZW0uaGJzLmpzIiwic291cmNlcyI6WyJmaWxlOi8vQzovQ2xpY2tWaWV3IFByb2plY3RzL0BjbGlja3ZpZXcvcGFja2FnZXMvcHJvamVjdHMvbGlicmFyeS1lZGl0b3Ivc3JjL2FwcHMvbGlicmFyeS1lZGl0b3IvY29tcG9uZW50cy90YWctbGlzdC9UYWdJdGVtLmhicyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgSGFuZGxlYmFycyA9IHJlcXVpcmUoJ2hhbmRsZWJhcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gKEhhbmRsZWJhcnNbJ2RlZmF1bHQnXSB8fCBIYW5kbGViYXJzKS50ZW1wbGF0ZSh7XCIxXCI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHtcbiAgICByZXR1cm4gXCI8c3BhbiBjbGFzcz1cXFwiY2xvc2UgY3Vyc29yLXBvaW50ZXJcXFwiIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIj4mdGltZXM7PC9zcGFuPlxcclxcblwiO1xufSxcImNvbXBpbGVyXCI6WzgsXCI+PSA0LjMuMFwiXSxcIm1haW5cIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkge1xuICAgIHZhciBzdGFjazEsIGhlbHBlciwgYWxpYXMxPWNvbnRhaW5lci5wcm9wZXJ0eUlzRW51bWVyYWJsZSwgYWxpYXMyPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDogKGNvbnRhaW5lci5udWxsQ29udGV4dCB8fCB7fSk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uKCgoaGVscGVyID0gKGhlbHBlciA9IGhlbHBlcnMubmFtZSB8fCAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkpICE9IG51bGwgPyBoZWxwZXIgOiBjb250YWluZXIuaG9va3MuaGVscGVyTWlzc2luZyksKHR5cGVvZiBoZWxwZXIgPT09IFwiZnVuY3Rpb25cIiA/IGhlbHBlci5jYWxsKGFsaWFzMix7XCJuYW1lXCI6XCJuYW1lXCIsXCJoYXNoXCI6e30sXCJkYXRhXCI6ZGF0YX0pIDogaGVscGVyKSkpXG4gICAgKyBcIlxcclxcblwiXG4gICAgKyAoKHN0YWNrMSA9IGhlbHBlcnNbXCJpZlwiXS5jYWxsKGFsaWFzMiwoKHN0YWNrMSA9IChkZXB0aDAgIT0gbnVsbCA/IGRlcHRoMC5vcHRpb25zIDogZGVwdGgwKSkgIT0gbnVsbCA/IHN0YWNrMS5yZW1vdmFibGUgOiBzdGFjazEpLHtcIm5hbWVcIjpcImlmXCIsXCJoYXNoXCI6e30sXCJmblwiOmNvbnRhaW5lci5wcm9ncmFtKDEsIGRhdGEsIDApLFwiaW52ZXJzZVwiOmNvbnRhaW5lci5ub29wLFwiZGF0YVwiOmRhdGF9KSkgIT0gbnVsbCA/IHN0YWNrMSA6IFwiXCIpO1xufSxcInVzZURhdGFcIjp0cnVlfSk7Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/apps/library-editor/components/tag-list/TagItem.hbs\n");
14
+ eval("var Handlebars = __webpack_require__(\"handlebars\");\nmodule.exports = (Handlebars['default'] || Handlebars).template({\"1\":function(container,depth0,helpers,partials,data) {\n return \"<span class=\\\"close cursor-pointer\\\" aria-hidden=\\\"true\\\">&times;</span>\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=container.propertyIsEnumerable, alias2=depth0 != null ? depth0 : (container.nullContext || {}), alias3=container.hooks.helperMissing, alias4=\"function\", alias5=container.escapeExpression;\n\n return \"<span class=\\\"clamp-1\\\" title=\\\"\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"\\\">\"\n + alias5(((helper = (helper = helpers.name || (depth0 != null ? depth0.name : depth0)) != null ? helper : alias3),(typeof helper === alias4 ? helper.call(alias2,{\"name\":\"name\",\"hash\":{},\"data\":data}) : helper)))\n + \"</span>\\r\\n\"\n + ((stack1 = helpers[\"if\"].call(alias2,((stack1 = (depth0 != null ? depth0.options : depth0)) != null ? stack1.removable : stack1),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data})) != null ? stack1 : \"\");\n},\"useData\":true});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvYXBwcy9saWJyYXJ5LWVkaXRvci9jb21wb25lbnRzL3RhZy1saXN0L1RhZ0l0ZW0uaGJzLmpzIiwic291cmNlcyI6WyJmaWxlOi8vQzovQ2xpY2tWaWV3IFByb2plY3RzL0BjbGlja3ZpZXcvcGFja2FnZXMvcHJvamVjdHMvbGlicmFyeS1lZGl0b3Ivc3JjL2FwcHMvbGlicmFyeS1lZGl0b3IvY29tcG9uZW50cy90YWctbGlzdC9UYWdJdGVtLmhicyJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgSGFuZGxlYmFycyA9IHJlcXVpcmUoJ2hhbmRsZWJhcnMnKTtcbm1vZHVsZS5leHBvcnRzID0gKEhhbmRsZWJhcnNbJ2RlZmF1bHQnXSB8fCBIYW5kbGViYXJzKS50ZW1wbGF0ZSh7XCIxXCI6ZnVuY3Rpb24oY29udGFpbmVyLGRlcHRoMCxoZWxwZXJzLHBhcnRpYWxzLGRhdGEpIHtcbiAgICByZXR1cm4gXCI8c3BhbiBjbGFzcz1cXFwiY2xvc2UgY3Vyc29yLXBvaW50ZXJcXFwiIGFyaWEtaGlkZGVuPVxcXCJ0cnVlXFxcIj4mdGltZXM7PC9zcGFuPlxcclxcblwiO1xufSxcImNvbXBpbGVyXCI6WzgsXCI+PSA0LjMuMFwiXSxcIm1haW5cIjpmdW5jdGlvbihjb250YWluZXIsZGVwdGgwLGhlbHBlcnMscGFydGlhbHMsZGF0YSkge1xuICAgIHZhciBzdGFjazEsIGhlbHBlciwgYWxpYXMxPWNvbnRhaW5lci5wcm9wZXJ0eUlzRW51bWVyYWJsZSwgYWxpYXMyPWRlcHRoMCAhPSBudWxsID8gZGVwdGgwIDogKGNvbnRhaW5lci5udWxsQ29udGV4dCB8fCB7fSksIGFsaWFzMz1jb250YWluZXIuaG9va3MuaGVscGVyTWlzc2luZywgYWxpYXM0PVwiZnVuY3Rpb25cIiwgYWxpYXM1PWNvbnRhaW5lci5lc2NhcGVFeHByZXNzaW9uO1xuXG4gIHJldHVybiBcIjxzcGFuIGNsYXNzPVxcXCJjbGFtcC0xXFxcIiB0aXRsZT1cXFwiXCJcbiAgICArIGFsaWFzNSgoKGhlbHBlciA9IChoZWxwZXIgPSBoZWxwZXJzLm5hbWUgfHwgKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm5hbWUgOiBkZXB0aDApKSAhPSBudWxsID8gaGVscGVyIDogYWxpYXMzKSwodHlwZW9mIGhlbHBlciA9PT0gYWxpYXM0ID8gaGVscGVyLmNhbGwoYWxpYXMyLHtcIm5hbWVcIjpcIm5hbWVcIixcImhhc2hcIjp7fSxcImRhdGFcIjpkYXRhfSkgOiBoZWxwZXIpKSlcbiAgICArIFwiXFxcIj5cIlxuICAgICsgYWxpYXM1KCgoaGVscGVyID0gKGhlbHBlciA9IGhlbHBlcnMubmFtZSB8fCAoZGVwdGgwICE9IG51bGwgPyBkZXB0aDAubmFtZSA6IGRlcHRoMCkpICE9IG51bGwgPyBoZWxwZXIgOiBhbGlhczMpLCh0eXBlb2YgaGVscGVyID09PSBhbGlhczQgPyBoZWxwZXIuY2FsbChhbGlhczIse1wibmFtZVwiOlwibmFtZVwiLFwiaGFzaFwiOnt9LFwiZGF0YVwiOmRhdGF9KSA6IGhlbHBlcikpKVxuICAgICsgXCI8L3NwYW4+XFxyXFxuXCJcbiAgICArICgoc3RhY2sxID0gaGVscGVyc1tcImlmXCJdLmNhbGwoYWxpYXMyLCgoc3RhY2sxID0gKGRlcHRoMCAhPSBudWxsID8gZGVwdGgwLm9wdGlvbnMgOiBkZXB0aDApKSAhPSBudWxsID8gc3RhY2sxLnJlbW92YWJsZSA6IHN0YWNrMSkse1wibmFtZVwiOlwiaWZcIixcImhhc2hcIjp7fSxcImZuXCI6Y29udGFpbmVyLnByb2dyYW0oMSwgZGF0YSwgMCksXCJpbnZlcnNlXCI6Y29udGFpbmVyLm5vb3AsXCJkYXRhXCI6ZGF0YX0pKSAhPSBudWxsID8gc3RhY2sxIDogXCJcIik7XG59LFwidXNlRGF0YVwiOnRydWV9KTsiXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/apps/library-editor/components/tag-list/TagItem.hbs\n");
15
15
 
16
16
  /***/ }),
17
17