UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

248 lines (247 loc) 26.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ var DataUtils = /** @class */ (function () { function DataUtils() { } /** * @param {?} key * @param {?} dataObj * @return {?} */ DataUtils.getDataArrayValue = /** * @param {?} key * @param {?} dataObj * @return {?} */ function (key, dataObj) { var /** @type {?} */ result = null; if (key.indexOf("[") >= 0 && key.indexOf("]") >= 0) { var /** @type {?} */ baseArrayKey = key.substring(key.indexOf("["), 0); if (Array.isArray(dataObj[baseArrayKey])) { try { var /** @type {?} */ baseArray = dataObj[baseArrayKey]; var /** @type {?} */ nextKey = key.substring(key.indexOf("[")); var /** @type {?} */ objIndexString = nextKey.substring(nextKey.lastIndexOf("[") + 1, nextKey.lastIndexOf("]")); var /** @type {?} */ objIndex = parseInt(objIndexString); if (objIndex < baseArray.length) { result = baseArray[objIndex]; } } catch (/** @type {?} */ err) { } } } return result; }; /** * @param {?} key * @param {?} dataObj * @param {?} value * @return {?} */ DataUtils.setDataArrayValue = /** * @param {?} key * @param {?} dataObj * @param {?} value * @return {?} */ function (key, dataObj, value) { if (key.indexOf("[") >= 0 && key.indexOf("]") >= 0) { var /** @type {?} */ baseArrayKey = key.substring(key.indexOf("["), 0); if (Array.isArray(dataObj[baseArrayKey])) { try { var /** @type {?} */ baseArray = dataObj[baseArrayKey]; var /** @type {?} */ nextKey = key.substring(key.indexOf("[")); var /** @type {?} */ objIndexString = nextKey.substring(nextKey.lastIndexOf("[") + 1, nextKey.lastIndexOf("]")); var /** @type {?} */ objIndex = parseInt(objIndexString); if (objIndex < baseArray.length) { baseArray[objIndex] = value; } } catch (/** @type {?} */ err) { } } } }; /** * @param {?} fromDataObj * @param {?} toDataObj * @param {?=} overwriteOldValues * @param {?=} resetOldValues * @return {?} */ DataUtils.copyDataValues = /** * @param {?} fromDataObj * @param {?} toDataObj * @param {?=} overwriteOldValues * @param {?=} resetOldValues * @return {?} */ function (fromDataObj, toDataObj, overwriteOldValues, resetOldValues) { if (overwriteOldValues === void 0) { overwriteOldValues = true; } if (resetOldValues === void 0) { resetOldValues = false; } if (toDataObj === null || typeof toDataObj !== 'object') { return; } if (resetOldValues) { for (var /** @type {?} */ propKey in toDataObj) { if (Object.prototype.hasOwnProperty.call(toDataObj, propKey)) { // Delete old values delete toDataObj[propKey]; } } } if (fromDataObj === null || typeof fromDataObj !== 'object') { // No values to be copied return; } for (var /** @type {?} */ propKey in fromDataObj) { if (!overwriteOldValues && typeof toDataObj[propKey] !== 'undefined') { // In this case we don't care that "toDataObj" has own "propKey" or not. // So, if it contains "propKey" regardless the property ownership, // we'll NOT overwrite this field value. continue; } // We'll copy all properties in "fromDataObj" regardless its property ownership. toDataObj[propKey] = fromDataObj[propKey]; } }; /** * @param {?} key * @param {?} dataObj * @return {?} */ DataUtils.getDataValue = /** * @param {?} key * @param {?} dataObj * @return {?} */ function (key, dataObj) { if (key === null || typeof key === 'undefined' || dataObj === null || typeof dataObj === 'undefined') { return null; } var /** @type {?} */ result = null; if (key.indexOf(".") > 0) { var /** @type {?} */ splitKeys = key.split("."); if (splitKeys.length > 0) { var /** @type {?} */ firstKey = splitKeys[0]; var /** @type {?} */ firstValue = dataObj[firstKey]; if (firstKey.indexOf("[") >= 0 && firstKey.indexOf("]") >= 0) { firstValue = this.getDataArrayValue(firstKey, dataObj); } if (firstValue != null && typeof firstValue !== 'undefined') { if (typeof firstValue === 'object') { if (splitKeys.length > 1) { var /** @type {?} */ secondKey = key.substring(key.indexOf(".") + 1, key.length); return this.getDataValue(secondKey, firstValue); // recursive beware looping } } } } } else { if (key.indexOf("[") >= 0 && key.indexOf("]") >= 0) { result = this.getDataArrayValue(key, dataObj); } else { result = dataObj[key]; } } if (result != null && typeof result !== 'undefined') { return result; } return null; }; /** * @param {?} key * @param {?} dataObj * @param {?} value * @return {?} */ DataUtils.setDataValue = /** * @param {?} key * @param {?} dataObj * @param {?} value * @return {?} */ function (key, dataObj, value) { if (key === null || typeof key === 'undefined' || value === null || typeof value === 'undefined' || dataObj === null || typeof dataObj === 'undefined') { return dataObj; } if (key.indexOf(".") > 0) { var /** @type {?} */ splitKeys = key.split("."); if (splitKeys.length > 0) { var /** @type {?} */ firstKey = splitKeys[0]; var /** @type {?} */ firstValue = dataObj[firstKey]; if (firstKey.indexOf("[") >= 0 && firstKey.indexOf("]") >= 0) { firstValue = this.getDataArrayValue(firstKey, dataObj); } if (firstValue != null && typeof firstValue !== 'undefined') { if (typeof firstValue === 'object') { if (splitKeys.length > 1) { var /** @type {?} */ secondKey = key.substring(key.indexOf(".") + 1, key.length); this.setDataValue(secondKey, firstValue, value); // recursive beware looping } } } } } else { if (key.indexOf("[") >= 0 && key.indexOf("]") >= 0) { this.setDataArrayValue(key, dataObj, value); } else { dataObj[key] = value; } } return dataObj; }; /** * @param {?} key * @param {?} dataObj * @return {?} */ DataUtils.containsDataKey = /** * @param {?} key * @param {?} dataObj * @return {?} */ function (key, dataObj) { if (key === null || typeof key === 'undefined' || dataObj === null || typeof dataObj === 'undefined') { return false; } var /** @type {?} */ result = null; if (key.indexOf(".") > 0) { var /** @type {?} */ splitKeys = key.split("."); if (splitKeys.length > 0) { var /** @type {?} */ firstKey = splitKeys[0]; var /** @type {?} */ firstValue = dataObj[firstKey]; if (firstValue != null && typeof firstValue !== 'undefined') { if (typeof firstValue === 'object') { if (splitKeys.length > 1) { var /** @type {?} */ secondKey = key.substring(key.indexOf(".") + 1, key.length); return this.containsDataKey(secondKey, firstValue); // recursive beware looping } } } else { if (typeof firstValue !== 'undefined') { return true; } } } } else { if (typeof dataObj[key] !== 'undefined') { return true; } } return false; }; return DataUtils; }()); export { DataUtils }; ; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGF0YVV0aWxzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvc2hhcmUvdXRpbHMvRGF0YVV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFBOzs7Ozs7OztJQUVpQiwyQkFBaUI7Ozs7O2NBQUMsR0FBVyxFQUFFLE9BQVk7UUFDeEQscUJBQUksTUFBTSxHQUFRLElBQUksQ0FBQztRQUV2QixFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQscUJBQUksWUFBWSxHQUFXLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM5RCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekMsSUFBSSxDQUFDO29CQUNILHFCQUFJLFNBQVMsR0FBVSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQzdDLHFCQUFJLE9BQU8sR0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFFdEQscUJBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMvRixxQkFBSSxRQUFRLEdBQVcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUNoRCxFQUFFLENBQUMsQ0FBQyxRQUFRLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENB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Q0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQ3pCLHFCQUFJLFNBQVMsR0FBVyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzs0QkFFeEUsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO3lCQUNwRDtxQkFDRjtpQkFDRjtnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixFQUFFLENBQUMsQ0FBQyxPQUFPLFVBQVUsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO3dCQUN0QyxNQUFNLENBQUMsSUFBSSxDQUFDO3FCQUNiO2lCQUNGO2FBQ0Y7U0FDRjtRQUFDLElBQUksQ0FBQyxDQUFDO1lBQ04sRUFBRSxDQUFDLENBQUMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztnQkFDeEMsTUFBTSxDQUFDLElBQUksQ0FBQzthQUNiO1NBQ0Y7UUFFRCxNQUFNLENBQUMsS0FBSyxDQUFDOztvQkF6TGpCO0lBMkxDLENBQUE7QUEzTEQscUJBMkxDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBEYXRhVXRpbHMge1xuXG4gIHByaXZhdGUgc3RhdGljIGdldERhdGFBcnJheVZhbHVlKGtleTogc3RyaW5nLCBkYXRhT2JqOiBhbnkpOiBhbnkge1xuICAgIGxldCByZXN1bHQ6IGFueSA9IG51bGw7XG5cbiAgICBpZiAoa2V5LmluZGV4T2YoXCJbXCIpID49IDAgJiYga2V5LmluZGV4T2YoXCJdXCIpID49IDApIHtcbiAgICAgIGxldCBiYXNlQXJyYXlLZXk6IHN0cmluZyA9IGtleS5zdWJzdHJpbmcoa2V5LmluZGV4T2YoXCJbXCIpLCAwKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFPYmpbYmFzZUFycmF5S2V5XSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgYmFzZUFycmF5OiBhbnlbXSA9IGRhdGFPYmpbYmFzZUFycmF5S2V5XTtcbiAgICAgICAgICBsZXQgbmV4dEtleTogc3RyaW5nID0ga2V5LnN1YnN0cmluZyhrZXkuaW5kZXhPZihcIltcIikpO1xuXG4gICAgICAgICAgbGV0IG9iakluZGV4U3RyaW5nID0gbmV4dEtleS5zdWJzdHJpbmcobmV4dEtleS5sYXN0SW5kZXhPZihcIltcIikgKyAxLCBuZXh0S2V5Lmxhc3RJbmRleE9mKFwiXVwiKSk7XG4gICAgICAgICAgbGV0IG9iakluZGV4OiBudW1iZXIgPSBwYXJzZUludChvYmpJbmRleFN0cmluZyk7XG4gICAgICAgICAgaWYgKG9iakluZGV4IDwgYmFzZUFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmVzdWx0ID0gYmFzZUFycmF5W29iakluZGV4XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNldERhdGFBcnJheVZhbHVlKGtleTogc3RyaW5nLCBkYXRhT2JqOiBhbnksIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoa2V5LmluZGV4T2YoXCJbXCIpID49IDAgJiYga2V5LmluZGV4T2YoXCJdXCIpID49IDApIHtcbiAgICAgIGxldCBiYXNlQXJyYXlLZXk6IHN0cmluZyA9IGtleS5zdWJzdHJpbmcoa2V5LmluZGV4T2YoXCJbXCIpLCAwKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFPYmpbYmFzZUFycmF5S2V5XSkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBsZXQgYmFzZUFycmF5OiBhbnlbXSA9IGRhdGFPYmpbYmFzZUFycmF5S2V5XTtcbiAgICAgICAgICBsZXQgbmV4dEtleTogc3RyaW5nID0ga2V5LnN1YnN0cmluZyhrZXkuaW5kZXhPZihcIltcIikpO1xuXG4gICAgICAgICAgbGV0IG9iakluZGV4U3RyaW5nID0gbmV4dEtleS5zdWJzdHJpbmcobmV4dEtleS5sYXN0SW5kZXhPZihcIltcIikgKyAxLCBuZXh0S2V5Lmxhc3RJbmRleE9mKFwiXVwiKSk7XG4gICAgICAgICAgbGV0IG9iakluZGV4OiBudW1iZXIgPSBwYXJzZUludChvYmpJbmRleFN0cmluZyk7XG4gICAgICAgICAgaWYgKG9iakluZGV4IDwgYmFzZUFycmF5Lmxlbmd0aCkge1xuICAgICAgICAgICAgYmFzZUFycmF5W29iakluZGV4XSA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvcHlEYXRhVmFsdWVzKGZyb21EYXRhT2JqOiBhbnksIHRvRGF0YU9iajogYW55LCBvdmVyd3JpdGVPbGRWYWx1ZXM6IGJvb2xlYW4gPSB0cnVlLCByZXNldE9sZFZhbHVlczogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XG4gICAgaWYgKHRvRGF0YU9iaiA9PT0gbnVsbCB8fCB0eXBlb2YgdG9EYXRhT2JqICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChyZXNldE9sZFZhbHVlcykge1xuICAgICAgZm9yIChsZXQgcHJvcEtleSBpbiB0b0RhdGFPYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0b0RhdGFPYmosIHByb3BLZXkpKSB7XG4gICAgICAgICAgLy8gRGVsZXRlIG9sZCB2YWx1ZXNcbiAgICAgICAgICBkZWxldGUgdG9EYXRhT2JqW3Byb3BLZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZyb21EYXRhT2JqID09PSBudWxsIHx8IHR5cGVvZiBmcm9tRGF0YU9iaiAhPT0gJ29iamVjdCcpIHtcbiAgICAgIC8vIE5vIHZhbHVlcyB0byBiZSBjb3BpZWRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBwcm9wS2V5IGluIGZyb21EYXRhT2JqKSB7XG4gICAgICBpZiAoIW92ZXJ3cml0ZU9sZFZhbHVlcyAmJiB0eXBlb2YgdG9EYXRhT2JqW3Byb3BLZXldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBkb24ndCBjYXJlIHRoYXQgXCJ0b0RhdGFPYmpcIiBoYXMgb3duIFwicHJvcEtleVwiIG9yIG5vdC5cbiAgICAgICAgICAvLyBTbywgaWYgaXQgY29udGFpbnMgXCJwcm9wS2V5XCIgcmVnYXJkbGVzcyB0aGUgcHJvcGVydHkgb3duZXJzaGlwLFxuICAgICAgICAgIC8vIHdlJ2xsIE5PVCBvdmVyd3JpdGUgdGhpcyBmaWVsZCB2YWx1ZS5cbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgLy8gV2UnbGwgY29weSBhbGwgcHJvcGVydGllcyBpbiBcImZyb21EYXRhT2JqXCIgcmVnYXJkbGVzcyBpdHMgcHJvcGVydHkgb3duZXJzaGlwLlxuICAgICAgdG9EYXRhT2JqW3Byb3BLZXldID0gZnJvbURhdGFPYmpbcHJvcEtleV07XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXREYXRhVmFsdWUoa2V5OiBzdHJpbmcsIGRhdGFPYmo6IGFueSk6IGFueSB7XG4gICAgaWYgKGtleSA9PT0gbnVsbCB8fCB0eXBlb2Yga2V5ID09PSAndW5kZWZpbmVkJyB8fCBkYXRhT2JqID09PSBudWxsIHx8IHR5cGVvZiBkYXRhT2JqID09PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgbGV0IHJlc3VsdCA9IG51bGw7XG5cbiAgICBpZiAoa2V5LmluZGV4T2YoXCIuXCIpID4gMCkge1xuICAgICAgbGV0IHNwbGl0S2V5czogc3RyaW5nW10gPSBrZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgaWYgKHNwbGl0S2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmaXJzdEtleTogc3RyaW5nID0gc3BsaXRLZXlzWzBdO1xuICAgICAgICBsZXQgZmlyc3RWYWx1ZTogYW55ID0gZGF0YU9ialtmaXJzdEtleV07XG4gICAgICAgIGlmIChmaXJzdEtleS5pbmRleE9mKFwiW1wiKSA+PSAwICYmIGZpcnN0S2V5LmluZGV4T2YoXCJdXCIpID49IDApIHtcbiAgICAgICAgICBmaXJzdFZhbHVlID0gdGhpcy5nZXREYXRhQXJyYXlWYWx1ZShmaXJzdEtleSwgZGF0YU9iaik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlyc3RWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBmaXJzdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGlmICh0eXBlb2YgZmlyc3RWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChzcGxpdEtleXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBsZXQgc2Vjb25kS2V5OiBzdHJpbmcgPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKFwiLlwiKSArIDEsIGtleS5sZW5ndGgpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldERhdGFWYWx1ZShzZWNvbmRLZXksIGZpcnN0VmFsdWUpOyAvLyByZWN1cnNpdmUgYmV3YXJlIGxvb3BpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKGtleS5pbmRleE9mKFwiW1wiKSA+PSAwICYmIGtleS5pbmRleE9mKFwiXVwiKSA+PSAwKSB7XG4gICAgICAgIHJlc3VsdCA9IHRoaXMuZ2V0RGF0YUFycmF5VmFsdWUoa2V5LCBkYXRhT2JqKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IGRhdGFPYmpba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocmVzdWx0ICE9IG51bGwgJiYgdHlwZW9mIHJlc3VsdCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIHNldERhdGFWYWx1ZShrZXk6IHN0cmluZywgZGF0YU9iajogYW55LCB2YWx1ZTogYW55KTogYW55IHtcbiAgICBpZiAoa2V5ID09PSBudWxsIHx8IHR5cGVvZiBrZXkgPT09ICd1bmRlZmluZWQnIHx8IHZhbHVlID09PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgZGF0YU9iaiA9PT0gbnVsbCB8fCB0eXBlb2YgZGF0YU9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBkYXRhT2JqO1xuICAgIH1cblxuICAgIGlmIChrZXkuaW5kZXhPZihcIi5cIikgPiAwKSB7XG4gICAgICBsZXQgc3BsaXRLZXlzOiBzdHJpbmdbXSA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICBpZiAoc3BsaXRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZpcnN0S2V5OiBzdHJpbmcgPSBzcGxpdEtleXNbMF07XG4gICAgICAgIGxldCBmaXJzdFZhbHVlOiBhbnkgPSBkYXRhT2JqW2ZpcnN0S2V5XTtcbiAgICAgICAgaWYgKGZpcnN0S2V5LmluZGV4T2YoXCJbXCIpID49IDAgJiYgZmlyc3RLZXkuaW5kZXhPZihcIl1cIikgPj0gMCkge1xuICAgICAgICAgIGZpcnN0VmFsdWUgPSB0aGlzLmdldERhdGFBcnJheVZhbHVlKGZpcnN0S2V5LCBkYXRhT2JqKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaXJzdFZhbHVlICE9IG51bGwgJiYgdHlwZW9mIGZpcnN0VmFsdWUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBmaXJzdFZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgaWYgKHNwbGl0S2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgIGxldCBzZWNvbmRLZXk6IHN0cmluZyA9IGtleS5zdWJzdHJpbmcoa2V5LmluZGV4T2YoXCIuXCIpICsgMSwga2V5Lmxlbmd0aCk7XG5cbiAgICAgICAgICAgICAgdGhpcy5zZXREYXRhVmFsdWUoc2Vjb25kS2V5LCBmaXJzdFZhbHVlLCB2YWx1ZSk7IC8vIHJlY3Vyc2l2ZSBiZXdhcmUgbG9vcGluZ1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoa2V5LmluZGV4T2YoXCJbXCIpID49IDAgJiYga2V5LmluZGV4T2YoXCJdXCIpID49IDApIHtcbiAgICAgICAgdGhpcy5zZXREYXRhQXJyYXlWYWx1ZShrZXksIGRhdGFPYmosIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRhdGFPYmpba2V5XSA9IHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRhT2JqO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjb250YWluc0RhdGFLZXkoa2V5OiBzdHJpbmcsIGRhdGFPYmo6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmIChrZXkgPT09IG51bGwgfHwgdHlwZW9mIGtleSA9PT0gJ3VuZGVmaW5lZCcgfHwgZGF0YU9iaiA9PT0gbnVsbCB8fCB0eXBlb2YgZGF0YU9iaiA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBsZXQgcmVzdWx0ID0gbnVsbDtcblxuICAgIGlmIChrZXkuaW5kZXhPZihcIi5cIikgPiAwKSB7XG4gICAgICBsZXQgc3BsaXRLZXlzOiBzdHJpbmdbXSA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICBpZiAoc3BsaXRLZXlzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZpcnN0S2V5OiBzdHJpbmcgPSBzcGxpdEtleXNbMF07XG4gICAgICAgIGxldCBmaXJzdFZhbHVlOiBhbnkgPSBkYXRhT2JqW2ZpcnN0S2V5XTtcblxuICAgICAgICBpZiAoZmlyc3RWYWx1ZSAhPSBudWxsICYmIHR5cGVvZiBmaXJzdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIGlmICh0eXBlb2YgZmlyc3RWYWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChzcGxpdEtleXMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICBsZXQgc2Vjb25kS2V5OiBzdHJpbmcgPSBrZXkuc3Vic3RyaW5nKGtleS5pbmRleE9mKFwiLlwiKSArIDEsIGtleS5sZW5ndGgpO1xuXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbnRhaW5zRGF0YUtleShzZWNvbmRLZXksIGZpcnN0VmFsdWUpOyAvLyByZWN1cnNpdmUgYmV3YXJlIGxvb3BpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBmaXJzdFZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgZGF0YU9ialtrZXldICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG4iXX0=