@magic-xpa/utils
Version:
magic utils package
213 lines (212 loc) • 20.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import { StorageAttribute } from "./enums";
var StorageAttributeCheck = /** @class */ (function () {
function StorageAttributeCheck() {
}
/// <summary>
/// is the both types belong to the same inner data types
/// </summary>
/// <param name = "type1">data type</param>
/// <param name = "type2">data type</param>
/**
* @param {?} type1
* @param {?} type2
* @return {?}
*/
StorageAttributeCheck.isTheSameType = /**
* @param {?} type1
* @param {?} type2
* @return {?}
*/
function (type1, type2) {
return type1 === type2 || (StorageAttributeCheck.isTypeNumeric(type1) && StorageAttributeCheck.isTypeNumeric(type2)) || (StorageAttributeCheck.isTypeLogical(type1) && StorageAttributeCheck.isTypeLogical(type2)) || (StorageAttributeCheck.IsTypeAlphaOrUnicode(type1) && StorageAttributeCheck.IsTypeAlphaOrUnicode(type2)) || (StorageAttributeCheck.isTypeBlob(type1) && StorageAttributeCheck.isTypeBlob(type2)) || (StorageAttributeCheck.isTypeDotNet(type1) && StorageAttributeCheck.isTypeDotNet(type2));
};
/**
* @param {?} type
* @return {?}
*/
StorageAttributeCheck.isTypeBlob = /**
* @param {?} type
* @return {?}
*/
function (type) {
return type === StorageAttribute.BLOB || type === StorageAttribute.BLOB_VECTOR;
};
/**
* @param {?} type
* @return {?}
*/
StorageAttributeCheck.isTypeAlpha = /**
* @param {?} type
* @return {?}
*/
function (type) {
return type === StorageAttribute.ALPHA || type === StorageAttribute.MEMO;
};
/// <summary>
/// is the both types belong to the NUMERIC inner type
/// </summary>
/**
* @param {?} type
* @return {?}
*/
StorageAttributeCheck.isTypeNumeric = /**
* @param {?} type
* @return {?}
*/
function (type) {
return type === StorageAttribute.DATE || type === StorageAttribute.TIME || type === StorageAttribute.NUMERIC;
};
/// <summary>
/// is the both types belong to the LOGICAL inner type
/// </summary>
/**
* @param {?} type
* @return {?}
*/
StorageAttributeCheck.isTypeLogical = /**
* @param {?} type
* @return {?}
*/
function (type) {
return type === StorageAttribute.BOOLEAN;
};
/// <summary>
/// is the type is DOTNET
/// </summary>
/**
* @param {?} type
* @return {?}
*/
StorageAttributeCheck.isTypeDotNet = /**
* @param {?} type
* @return {?}
*/
function (type) {
return type === StorageAttribute.DOTNET;
};
/// <summary>
/// is the type ALPHA or UNICODE
/// </summary>
/// <param name = "type">data type</param>
/**
* @param {?} type
* @return {?}
*/
StorageAttributeCheck.IsTypeAlphaOrUnicode = /**
* @param {?} type
* @return {?}
*/
function (type) {
return type === StorageAttribute.ALPHA || type === StorageAttribute.UNICODE;
};
/// <summary>
/// is the inner type ALPHA or UNICODE
/// </summary>
/// <param name = "type1">data type</param>
/// <param name = "type2">data type</param>
/**
* @param {?} type1
* @param {?} type2
* @return {?}
*/
StorageAttributeCheck.StorageFldAlphaOrUnicode = /**
* @param {?} type1
* @param {?} type2
* @return {?}
*/
function (type1, type2) {
return StorageAttributeCheck.IsTypeAlphaOrUnicode(type1) && StorageAttributeCheck.IsTypeAlphaOrUnicode(type2);
};
/**
* @param {?} type1
* @param {?} type2
* @return {?}
*/
StorageAttributeCheck.StorageFldAlphaUnicodeOrBlob = /**
* @param {?} type1
* @param {?} type2
* @return {?}
*/
function (type1, type2) {
/** @type {?} */
var type1AlphaOrUnicode = StorageAttributeCheck.IsTypeAlphaOrUnicode(type1);
/** @type {?} */
var type2AlphaOrUnicode = StorageAttributeCheck.IsTypeAlphaOrUnicode(type2);
if (type1AlphaOrUnicode && type2AlphaOrUnicode) {
return true;
}
else {
/** @type {?} */
var type1Blob = type1 === StorageAttribute.BLOB;
/** @type {?} */
var type2Blob = type2 === StorageAttribute.BLOB;
return ((type1AlphaOrUnicode && type2Blob) || (type2AlphaOrUnicode && type1Blob));
}
};
/// <summary>
/// Check if types are compatible or not.
/// </summary>
/// <param name="sourceAttribute"></param>
/// <param name="destinationAttribute"></param>
/// <returns></returns>
/**
* @param {?} sourceAttribute
* @param {?} destinationAttribute
* @return {?}
*/
StorageAttributeCheck.IsTypeCompatibile = /**
* @param {?} sourceAttribute
* @param {?} destinationAttribute
* @return {?}
*/
function (sourceAttribute, destinationAttribute) {
/** @type {?} */
var isTypeCompatible = false;
switch (sourceAttribute) {
case StorageAttribute.ALPHA:
case StorageAttribute.UNICODE:
if (destinationAttribute === StorageAttribute.ALPHA || destinationAttribute === StorageAttribute.UNICODE ||
destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME ||
destinationAttribute === StorageAttribute.NUMERIC) {
isTypeCompatible = true;
}
break;
case StorageAttribute.NUMERIC:
if (destinationAttribute === StorageAttribute.NUMERIC || destinationAttribute === StorageAttribute.ALPHA ||
destinationAttribute === StorageAttribute.UNICODE || destinationAttribute === StorageAttribute.BOOLEAN ||
destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME) {
isTypeCompatible = true;
}
break;
case StorageAttribute.BOOLEAN:
{
if (destinationAttribute === StorageAttribute.BOOLEAN || destinationAttribute === StorageAttribute.ALPHA ||
destinationAttribute === StorageAttribute.UNICODE || destinationAttribute === StorageAttribute.NUMERIC) {
isTypeCompatible = true;
}
}
break;
case StorageAttribute.DATE:
case StorageAttribute.TIME:
if (destinationAttribute === StorageAttribute.ALPHA || destinationAttribute === StorageAttribute.UNICODE ||
destinationAttribute === StorageAttribute.NUMERIC || destinationAttribute === StorageAttribute.BOOLEAN ||
destinationAttribute === StorageAttribute.DATE || destinationAttribute === StorageAttribute.TIME) {
isTypeCompatible = true;
}
break;
case StorageAttribute.BLOB:
if (destinationAttribute === StorageAttribute.BLOB) {
isTypeCompatible = true;
}
break;
}
return isTypeCompatible;
};
return StorageAttributeCheck;
}());
export { StorageAttributeCheck };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RvcmFnZUF0dHJpYnV0ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYWdpYy14cGEvdXRpbHMvIiwic291cmNlcyI6WyJzcmMvU3RvcmFnZUF0dHJpYnV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sU0FBUyxDQUFDO0FBS3pDLElBQUE7SUEwSEU7S0FDQztJQTFIRCxhQUFhO0lBQ2IseURBQXlEO0lBQ3pELGNBQWM7SUFDZCwyQ0FBMkM7SUFDM0MsMkNBQTJDOzs7Ozs7SUFDcEMsbUNBQWE7Ozs7O0lBQXBCLFVBQXFCLEtBQXVCLEVBQUUsS0FBdUI7UUFDbkUsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLElBQUkscUJBQXFCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxxQkFBcUIsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ3BmOzs7OztJQUVNLGdDQUFVOzs7O0lBQWpCLFVBQWtCLElBQXNCO1FBQ3RDLE1BQU0sQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7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QixDQUFDLE9BQU8sSUFBSSxvQkFBb0IsS0FBSyxnQkFBZ0IsQ0FBQyxPQUFPO29CQUN0RyxvQkFBb0IsS0FBSyxnQkFBZ0IsQ0FBQyxJQUFJLElBQUksb0JBQW9CLEtBQUssZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDbkcsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO2lCQUN6QjtnQkFDRCxLQUFLLENBQUM7WUFDUixLQUFLLGdCQUFnQixDQUFDLElBQUk7Z0JBQ3hCLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQixLQUFLLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ25ELGdCQUFnQixHQUFHLElBQUksQ0FBQztpQkFDekI7Z0JBQ0QsS0FBSyxDQUFDO1NBQ1Q7UUFDRCxNQUFNLENBQUMsZ0JBQWdCLENBQUM7S0FDekI7Z0NBN0hIO0lBaUlDLENBQUE7QUE1SEQsaUNBNEhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTdG9yYWdlQXR0cmlidXRlfSBmcm9tIFwiLi9lbnVtc1wiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gdHlwZSBjaGVja2luZyBmb3IgZW51bSAnU3RvcmFnZUF0dHJpYnV0ZSdcclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIFN0b3JhZ2VBdHRyaWJ1dGVDaGVjayB7XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpcyB0aGUgYm90aCB0eXBlcyBiZWxvbmcgdG8gdGhlIHNhbWUgaW5uZXIgZGF0YSB0eXBlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlMVwiPmRhdGEgdHlwZTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlMlwiPmRhdGEgdHlwZTwvcGFyYW0+XHJcbiAgc3RhdGljIGlzVGhlU2FtZVR5cGUodHlwZTE6IFN0b3JhZ2VBdHRyaWJ1dGUsIHR5cGUyOiBTdG9yYWdlQXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZTEgPT09IHR5cGUyIHx8IChTdG9yYWdlQXR0cmlidXRlQ2hlY2suaXNUeXBlTnVtZXJpYyh0eXBlMSkgJiYgU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLmlzVHlwZU51bWVyaWModHlwZTIpKSB8fCAoU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLmlzVHlwZUxvZ2ljYWwodHlwZTEpICYmIFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5pc1R5cGVMb2dpY2FsKHR5cGUyKSkgfHwgKFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5Jc1R5cGVBbHBoYU9yVW5pY29kZSh0eXBlMSkgJiYgU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLklzVHlwZUFscGhhT3JVbmljb2RlKHR5cGUyKSkgfHwgKFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5pc1R5cGVCbG9iKHR5cGUxKSAmJiBTdG9yYWdlQXR0cmlidXRlQ2hlY2suaXNUeXBlQmxvYih0eXBlMikpIHx8IChTdG9yYWdlQXR0cmlidXRlQ2hlY2suaXNUeXBlRG90TmV0KHR5cGUxKSAmJiBTdG9yYWdlQXR0cmlidXRlQ2hlY2suaXNUeXBlRG90TmV0KHR5cGUyKSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNUeXBlQmxvYih0eXBlOiBTdG9yYWdlQXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CIHx8IHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1I7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNUeXBlQWxwaGEodHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHwgdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5NRU1PO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpcyB0aGUgYm90aCB0eXBlcyBiZWxvbmcgdG8gdGhlIE5VTUVSSUMgaW5uZXIgdHlwZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGlzVHlwZU51bWVyaWModHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuREFURSB8fCB0eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLlRJTUUgfHwgdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5OVU1FUklDO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpcyB0aGUgYm90aCB0eXBlcyBiZWxvbmcgdG8gdGhlIExPR0lDQUwgaW5uZXIgdHlwZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGlzVHlwZUxvZ2ljYWwodHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaXMgdGhlIHR5cGUgaXMgRE9UTkVUXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgaXNUeXBlRG90TmV0KHR5cGU6IFN0b3JhZ2VBdHRyaWJ1dGUpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0eXBlID09PSBTdG9yYWdlQXR0cmlidXRlLkRPVE5FVDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaXMgdGhlIHR5cGUgQUxQSEEgb3IgVU5JQ09ERVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0eXBlXCI+ZGF0YSB0eXBlPC9wYXJhbT5cclxuICBzdGF0aWMgSXNUeXBlQWxwaGFPclVuaWNvZGUodHlwZTogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHwgdHlwZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpcyB0aGUgaW5uZXIgdHlwZSBBTFBIQSBvciBVTklDT0RFXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInR5cGUxXCI+ZGF0YSB0eXBlPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInR5cGUyXCI+ZGF0YSB0eXBlPC9wYXJhbT5cclxuICBzdGF0aWMgU3RvcmFnZUZsZEFscGhhT3JVbmljb2RlKHR5cGUxOiBTdG9yYWdlQXR0cmlidXRlLCB0eXBlMjogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFN0b3JhZ2VBdHRyaWJ1dGVDaGVjay5Jc1R5cGVBbHBoYU9yVW5pY29kZSh0eXBlMSkgJiYgU3RvcmFnZUF0dHJpYnV0ZUNoZWNrLklzVHlwZUFscGhhT3JVbmljb2RlKHR5cGUyKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBTdG9yYWdlRmxkQWxwaGFVbmljb2RlT3JCbG9iKHR5cGUxOiBTdG9yYWdlQXR0cmlidXRlLCB0eXBlMjogU3RvcmFnZUF0dHJpYnV0ZSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHR5cGUxQWxwaGFPclVuaWNvZGU6IGJvb2xlYW4gPSBTdG9yYWdlQXR0cmlidXRlQ2hlY2suSXNUeXBlQWxwaGFPclVuaWNvZGUodHlwZTEpO1xyXG4gICAgbGV0IHR5cGUyQWxwaGFPclVuaWNvZGU6IGJvb2xlYW4gPSBTdG9yYWdlQXR0cmlidXRlQ2hlY2suSXNUeXBlQWxwaGFPclVuaWNvZGUodHlwZTIpO1xyXG5cclxuICAgIGlmICh0eXBlMUFscGhhT3JVbmljb2RlICYmIHR5cGUyQWxwaGFPclVuaWNvZGUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgbGV0IHR5cGUxQmxvYjogYm9vbGVhbiA9IHR5cGUxID09PSBTdG9yYWdlQXR0cmlidXRlLkJMT0I7XHJcbiAgICAgIGxldCB0eXBlMkJsb2I6IGJvb2xlYW4gPSB0eXBlMiA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CO1xyXG4gICAgICByZXR1cm4gKCh0eXBlMUFscGhhT3JVbmljb2RlICYmIHR5cGUyQmxvYikgfHwgKHR5cGUyQWxwaGFPclVuaWNvZGUgJiYgdHlwZTFCbG9iKSk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDaGVjayBpZiB0eXBlcyBhcmUgY29tcGF0aWJsZSBvciBub3QuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzb3VyY2VBdHRyaWJ1dGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRlc3RpbmF0aW9uQXR0cmlidXRlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBJc1R5cGVDb21wYXRpYmlsZShzb3VyY2VBdHRyaWJ1dGU6IFN0b3JhZ2VBdHRyaWJ1dGUsIGRlc3RpbmF0aW9uQXR0cmlidXRlOiBTdG9yYWdlQXR0cmlidXRlKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNUeXBlQ29tcGF0aWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHN3aXRjaCAoc291cmNlQXR0cmlidXRlKSB7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREU6XHJcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUgfHxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkRBVEUgfHwgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuVElNRSB8fFxyXG4gICAgICAgICAgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQykge1xyXG4gICAgICAgICAgaXNUeXBlQ29tcGF0aWJsZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUM6XHJcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMgfHwgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEgfHxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUgfHwgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiB8fFxyXG4gICAgICAgICAgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuREFURSB8fCBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5USU1FKSB7XHJcbiAgICAgICAgICBpc1R5cGVDb21wYXRpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTjoge1xyXG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CT09MRUFOIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8XHJcbiAgICAgICAgICBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5VTklDT0RFIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMpIHtcclxuICAgICAgICAgIGlzVHlwZUNvbXBhdGlibGUgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFN0b3JhZ2VBdHRyaWJ1dGUuREFURTpcclxuICAgICAgY2FzZSBTdG9yYWdlQXR0cmlidXRlLlRJTUU6XHJcbiAgICAgICAgaWYgKGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLkFMUEhBIHx8IGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLlVOSUNPREUgfHxcclxuICAgICAgICAgIGRlc3RpbmF0aW9uQXR0cmlidXRlID09PSBTdG9yYWdlQXR0cmlidXRlLk5VTUVSSUMgfHwgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQk9PTEVBTiB8fFxyXG4gICAgICAgICAgZGVzdGluYXRpb25BdHRyaWJ1dGUgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuREFURSB8fCBkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5USU1FKSB7XHJcbiAgICAgICAgICBpc1R5cGVDb21wYXRpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgU3RvcmFnZUF0dHJpYnV0ZS5CTE9COlxyXG4gICAgICAgIGlmIChkZXN0aW5hdGlvbkF0dHJpYnV0ZSA9PT0gU3RvcmFnZUF0dHJpYnV0ZS5CTE9CKSB7XHJcbiAgICAgICAgICBpc1R5cGVDb21wYXRpYmxlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNUeXBlQ29tcGF0aWJsZTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxufVxyXG4iXX0=