nmce-func 1.3.1 → 1.3.2

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.
@@ -46,4 +46,4 @@ export class AddressFunc {
46
46
  return googleBaseUrl + ss;
47
47
  }
48
48
  }
49
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0Z1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2FkZHJlc3NGdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0lBQ3ZCOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBdUIsRUFBRSxHQUF1QixFQUFFLElBQXdCLEVBQUUsS0FBeUIsRUFBRSxRQUE0QjtRQUMvSixPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUF1QixFQUFFLEdBQXVCLEVBQUUsSUFBd0IsRUFBRSxLQUF5QixFQUFFLFFBQTRCO1FBQ2pLLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBdUIsRUFBRSxHQUF1QixFQUFFLElBQXdCLEVBQUUsS0FBeUIsRUFBRSxRQUE0QixFQUFFLEdBQXVCO1FBQ2pMLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkosT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQXVCLEVBQUUsR0FBdUIsRUFBRSxJQUF3QixFQUFFLEtBQXlCLEVBQUUsT0FBMkI7UUFDL0osTUFBTSxhQUFhLEdBQUcseUNBQXlDLENBQUM7UUFDaEUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFxQixFQUFVLEVBQUU7WUFDN0MsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDUCxPQUFPLEVBQUUsQ0FBQzthQUNWO1lBRUQsT0FBTyxHQUFHLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDNUQsQ0FBQyxDQUFDO1FBRUYsTUFBTSxFQUFFLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN2RSxPQUFPLGFBQWEsR0FBRyxFQUFFLENBQUM7SUFDM0IsQ0FBQztDQUVEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEFkZHJlc3NGdW5jIHtcblx0LyoqXG5cdCAqIENvbXBvc2UgdG8gb25lIGxpbmUgc2VwYXJhdGVkIGJ5IGNvbW1hXG5cdCAqIEBwYXJhbSBzdDFcblx0ICogQHBhcmFtIHN0MlxuXHQgKiBAcGFyYW0gY2l0eVxuXHQgKiBAcGFyYW0gc3RhdGVcblx0ICogQHBhcmFtIHBvc3Rjb2RlXG5cdCAqL1xuXHRzdGF0aWMgY29tcG9zZU9uZUxpbmVBZGRyZXNzKHN0MTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdDI6IHN0cmluZyB8IHVuZGVmaW5lZCwgY2l0eTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBwb3N0Y29kZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQWRkcmVzc0Z1bmMuY29tcG9zZUFkZHJlc3Moc3QxLCBzdDIsIGNpdHksIHN0YXRlLCBwb3N0Y29kZSwgJywgJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29tcG9zZSB0byBtdWx0aXBsZSBzZXBhcmF0ZWQgYnkgXFxuXG5cdCAqIEBwYXJhbSBzdDFcblx0ICogQHBhcmFtIHN0MlxuXHQgKiBAcGFyYW0gY2l0eVxuXHQgKiBAcGFyYW0gc3RhdGVcblx0ICogQHBhcmFtIHBvc3Rjb2RlXG5cdCAqL1xuXHRzdGF0aWMgY29tcG9zZU11bHRpTGluZUFkZHJlc3Moc3QxOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0Mjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaXR5OiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBvc3Rjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuXHRcdHJldHVybiBBZGRyZXNzRnVuYy5jb21wb3NlQWRkcmVzcyhzdDEsIHN0MiwgY2l0eSwgc3RhdGUsIHBvc3Rjb2RlLCAnXFxuJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29tcG9zZSB3aXRoIHNlcGFyYXRvclxuXHQgKiBAcGFyYW0gc3QxXG5cdCAqIEBwYXJhbSBzdDJcblx0ICogQHBhcmFtIGNpdHlcblx0ICogQHBhcmFtIHN0YXRlXG5cdCAqIEBwYXJhbSBwb3N0Y29kZVxuXHQgKiBAcGFyYW0gc2VwXG5cdCAqL1xuXHRzdGF0aWMgY29tcG9zZUFkZHJlc3Moc3QxOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0Mjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaXR5OiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHBvc3Rjb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQsIHNlcDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRjb25zdCByID0gKHN0MSA/IChzdDEgKyBzZXApIDogJycpICsgKHN0MiA/IChzdDIgKyBzZXApIDogJycpICsgKGNpdHkgPyAoY2l0eSArIHNlcCkgOiAnJykgKyAoc3RhdGUgPyAoc3RhdGUgKyAnICcpIDogJycpICsgKHBvc3Rjb2RlID8gcG9zdGNvZGUgOiAnJyk7XG5cdFx0cmV0dXJuIHI7XG5cdH1cblxuXHRzdGF0aWMgY29tcG9zZUdvb2dsZU1hcHNBdVVybChzdDE6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3QyOiBzdHJpbmcgfCB1bmRlZmluZWQsIGNpdHk6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgY291bnRyeTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRjb25zdCBnb29nbGVCYXNlVXJsID0gJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20uYXUvbWFwcz9obD1lbiZxPSc7XG5cdFx0Y29uc3QgZmZmID0gKHM6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyA9PiB7XG5cdFx0XHRpZiAoIXMpIHtcblx0XHRcdFx0cmV0dXJuICcnO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gJysnICsgZW5jb2RlVVJJQ29tcG9uZW50KHMucmVwbGFjZSgnICcsICcrJykpICsgJywnO1xuXHRcdH07XG5cblx0XHRjb25zdCBzcyA9IGZmZihzdDEpICsgZmZmKHN0MikgKyBmZmYoY2l0eSkgKyBmZmYoc3RhdGUpICsgZmZmKGNvdW50cnkpO1xuXHRcdHJldHVybiBnb29nbGVCYXNlVXJsICsgc3M7XG5cdH1cblxufVxuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkcmVzc0Z1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2FkZHJlc3NGdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxXQUFXO0lBQ3ZCOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMscUJBQXFCLENBQUMsR0FBdUIsRUFBRSxHQUF1QixFQUFFLElBQXdCLEVBQUUsS0FBeUIsRUFBRSxRQUE0QjtRQUMvSixPQUFPLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxHQUF1QixFQUFFLEdBQXVCLEVBQUUsSUFBd0IsRUFBRSxLQUF5QixFQUFFLFFBQTRCO1FBQ2pLLE9BQU8sV0FBVyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBdUIsRUFBRSxHQUF1QixFQUFFLElBQXdCLEVBQUUsS0FBeUIsRUFBRSxRQUE0QixFQUFFLEdBQXVCO1FBQ2pMLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkosT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEdBQXVCLEVBQUUsR0FBdUIsRUFBRSxJQUF3QixFQUFFLEtBQXlCLEVBQUUsT0FBMkI7UUFDL0osTUFBTSxhQUFhLEdBQUcseUNBQXlDLENBQUM7UUFDaEUsTUFBTSxHQUFHLEdBQUcsQ0FBQyxDQUFxQixFQUFVLEVBQUU7WUFDN0MsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDO1lBQ1gsQ0FBQztZQUVELE9BQU8sR0FBRyxHQUFHLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQzVELENBQUMsQ0FBQztRQUVGLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkUsT0FBTyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FFRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBBZGRyZXNzRnVuYyB7XG5cdC8qKlxuXHQgKiBDb21wb3NlIHRvIG9uZSBsaW5lIHNlcGFyYXRlZCBieSBjb21tYVxuXHQgKiBAcGFyYW0gc3QxXG5cdCAqIEBwYXJhbSBzdDJcblx0ICogQHBhcmFtIGNpdHlcblx0ICogQHBhcmFtIHN0YXRlXG5cdCAqIEBwYXJhbSBwb3N0Y29kZVxuXHQgKi9cblx0c3RhdGljIGNvbXBvc2VPbmVMaW5lQWRkcmVzcyhzdDE6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3QyOiBzdHJpbmcgfCB1bmRlZmluZWQsIGNpdHk6IHN0cmluZyB8IHVuZGVmaW5lZCwgc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgcG9zdGNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdFx0cmV0dXJuIEFkZHJlc3NGdW5jLmNvbXBvc2VBZGRyZXNzKHN0MSwgc3QyLCBjaXR5LCBzdGF0ZSwgcG9zdGNvZGUsICcsICcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbXBvc2UgdG8gbXVsdGlwbGUgc2VwYXJhdGVkIGJ5IFxcblxuXHQgKiBAcGFyYW0gc3QxXG5cdCAqIEBwYXJhbSBzdDJcblx0ICogQHBhcmFtIGNpdHlcblx0ICogQHBhcmFtIHN0YXRlXG5cdCAqIEBwYXJhbSBwb3N0Y29kZVxuXHQgKi9cblx0c3RhdGljIGNvbXBvc2VNdWx0aUxpbmVBZGRyZXNzKHN0MTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdDI6IHN0cmluZyB8IHVuZGVmaW5lZCwgY2l0eTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBwb3N0Y29kZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gQWRkcmVzc0Z1bmMuY29tcG9zZUFkZHJlc3Moc3QxLCBzdDIsIGNpdHksIHN0YXRlLCBwb3N0Y29kZSwgJ1xcbicpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbXBvc2Ugd2l0aCBzZXBhcmF0b3Jcblx0ICogQHBhcmFtIHN0MVxuXHQgKiBAcGFyYW0gc3QyXG5cdCAqIEBwYXJhbSBjaXR5XG5cdCAqIEBwYXJhbSBzdGF0ZVxuXHQgKiBAcGFyYW0gcG9zdGNvZGVcblx0ICogQHBhcmFtIHNlcFxuXHQgKi9cblx0c3RhdGljIGNvbXBvc2VBZGRyZXNzKHN0MTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdDI6IHN0cmluZyB8IHVuZGVmaW5lZCwgY2l0eTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzdGF0ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBwb3N0Y29kZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBzZXA6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgciA9IChzdDEgPyAoc3QxICsgc2VwKSA6ICcnKSArIChzdDIgPyAoc3QyICsgc2VwKSA6ICcnKSArIChjaXR5ID8gKGNpdHkgKyBzZXApIDogJycpICsgKHN0YXRlID8gKHN0YXRlICsgJyAnKSA6ICcnKSArIChwb3N0Y29kZSA/IHBvc3Rjb2RlIDogJycpO1xuXHRcdHJldHVybiByO1xuXHR9XG5cblx0c3RhdGljIGNvbXBvc2VHb29nbGVNYXBzQXVVcmwoc3QxOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0Mjogc3RyaW5nIHwgdW5kZWZpbmVkLCBjaXR5OiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YXRlOiBzdHJpbmcgfCB1bmRlZmluZWQsIGNvdW50cnk6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgZ29vZ2xlQmFzZVVybCA9ICdodHRwczovL3d3dy5nb29nbGUuY29tLmF1L21hcHM/aGw9ZW4mcT0nO1xuXHRcdGNvbnN0IGZmZiA9IChzOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgPT4ge1xuXHRcdFx0aWYgKCFzKSB7XG5cdFx0XHRcdHJldHVybiAnJztcblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuICcrJyArIGVuY29kZVVSSUNvbXBvbmVudChzLnJlcGxhY2UoJyAnLCAnKycpKSArICcsJztcblx0XHR9O1xuXG5cdFx0Y29uc3Qgc3MgPSBmZmYoc3QxKSArIGZmZihzdDIpICsgZmZmKGNpdHkpICsgZmZmKHN0YXRlKSArIGZmZihjb3VudHJ5KTtcblx0XHRyZXR1cm4gZ29vZ2xlQmFzZVVybCArIHNzO1xuXHR9XG5cbn1cbiJdfQ==
@@ -36,13 +36,13 @@ export class AuthenticationService {
36
36
  return response;
37
37
  }));
38
38
  }
39
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: AuthenticationService, deps: [{ token: 'auth.tokenUrl' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
40
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: AuthenticationService });
39
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthenticationService, deps: [{ token: 'auth.tokenUrl' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
40
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthenticationService });
41
41
  }
42
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: AuthenticationService, decorators: [{
42
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthenticationService, decorators: [{
43
43
  type: Injectable
44
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
44
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
45
45
  type: Inject,
46
46
  args: ['auth.tokenUrl']
47
- }] }, { type: i1.HttpClient }]; } });
47
+ }] }, { type: i1.HttpClient }] });
48
48
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvYXV0aGVudGljYXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUVyQzs7O0dBR0c7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBR1k7SUFBeUI7SUFGdEUsUUFBUSxDQUFVO0lBRWxCLFlBQTZDLE9BQWUsRUFBVSxJQUFnQjtRQUF6QyxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQVUsU0FBSSxHQUFKLElBQUksQ0FBWTtJQUN0RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEVBQUUsT0FBYTtRQUN0RCxNQUFNLElBQUksR0FBRyxXQUFXLEdBQUcsUUFBUSxHQUFHLFlBQVksR0FBRyxRQUFRLEdBQUcsc0JBQXNCLENBQUM7UUFDdkYsTUFBTSxpQkFBaUIsR0FBRyxFQUFFLGNBQWMsRUFBRSxrREFBa0QsRUFBRSxDQUFDO1FBQ2pHLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLGlCQUFpQixFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDO1FBQ3pGLE1BQU0sT0FBTyxHQUFHLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBT2xCLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQzthQUM3QixJQUFJLENBQUMsR0FBRyxDQUNSLFFBQVEsQ0FBQyxFQUFFO1lBQ1YsNEdBQTRHO1lBQzVHLHVFQUF1RTtZQUN2RSw0REFBNEQ7WUFDNUQsb0RBQW9EO1lBQ3BELCtHQUErRztZQUMvRyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFDbEMsd0NBQXdDO1lBQ3hDLE9BQU8sUUFBUSxDQUFDO1FBQ2pCLENBQUMsQ0FFRCxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQXJDVyxxQkFBcUIsa0JBR2IsZUFBZTsyR0FIdkIscUJBQXFCOzsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVOzswQkFJRyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuLyoqXHJcbiAqIExvZ2luIGFuZCBzYXZpbmcgdG9rZW5zIGluIHNlc3Npb25TdG9yYWdlLlxyXG4gKiBBcHAgbmVlZHMgdG8gcHJvdmlkZSBjb25zdGFudCAnYXV0aC50b2tlblVybCcuXHJcbiAqL1xyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBBdXRoZW50aWNhdGlvblNlcnZpY2Uge1xyXG5cdHVzZXJuYW1lPzogc3RyaW5nO1xyXG5cclxuXHRjb25zdHJ1Y3RvcihASW5qZWN0KCdhdXRoLnRva2VuVXJsJykgcHJpdmF0ZSBhdXRoVXJpOiBzdHJpbmcsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9naW4gYW5kIHNhdmUgdG9rZW5zIHRvIHNlc3Npb25TdG9yYWdlIHRoZW4gcmV0dXJuIGFuIG9ic2VydmFibGUuXHJcblx0ICogQHBhcmFtIHVzZXJuYW1lXHJcblx0ICogQHBhcmFtIHBhc3N3b3JkXHJcblx0ICovXHJcblx0bG9naW4odXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgaGVhZGVycz86IGFueSkge1xyXG5cdFx0Y29uc3QgYm9keSA9ICd1c2VybmFtZT0nICsgdXNlcm5hbWUgKyAnJnBhc3N3b3JkPScgKyBwYXNzd29yZCArICcmZ3JhbnRfdHlwZT1wYXNzd29yZCc7XHJcblx0XHRjb25zdCBjb250ZW50VHlwZUhlYWRlciA9IHsgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgnIH07XHJcblx0XHRjb25zdCBtZXJnZWRIZWFkZXJzID0gaGVhZGVycyA/IHsgLi4uY29udGVudFR5cGVIZWFkZXIsIC4uLmhlYWRlcnMgfSA6IGNvbnRlbnRUeXBlSGVhZGVyO1xyXG5cdFx0Y29uc3Qgb3B0aW9ucyA9IHsgaGVhZGVyczogbWVyZ2VkSGVhZGVycyB9O1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cC5wb3N0PHtcclxuXHRcdFx0YWNjZXNzX3Rva2VuOiBzdHJpbmc7XHJcblx0XHRcdGV4cGlyZXM6IHN0cmluZztcclxuXHRcdFx0ZXhwaXJlc19pbjogbnVtYmVyO1xyXG5cdFx0XHRpc3N1ZWQ6IHN0cmluZztcclxuXHRcdFx0dG9rZW5fdHlwZTogc3RyaW5nO1xyXG5cdFx0XHR1c2VybmFtZTogc3RyaW5nO1xyXG5cdFx0fT4odGhpcy5hdXRoVXJpLCBib2R5LCBvcHRpb25zKVxyXG5cdFx0XHQucGlwZShtYXAoXHJcblx0XHRcdFx0cmVzcG9uc2UgPT4ge1xyXG5cdFx0XHRcdFx0Ly9zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdhY2Nlc3NfdG9rZW4nLCByZXNwb25zZS5hY2Nlc3NfdG9rZW4pOyBUaGUgY2xpZW50IGNvZGUgaXMgcmVzcG9uc2UgdG8gZG9pbmcgdGhlc2UuXHJcblx0XHRcdFx0XHQvL3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2V4cGlyZXNfaW4nLCByZXNwb25zZS5leHBpcmVzX2luLnRvU3RyaW5nKCkpO1xyXG5cdFx0XHRcdFx0Ly9zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCd0b2tlbl90eXBlJywgcmVzcG9uc2UudG9rZW5fdHlwZSk7XHJcblx0XHRcdFx0XHQvL3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2lzc3VlZCcsIHJlc3BvbnNlLmlzc3VlZCk7XHJcblx0XHRcdFx0XHQvL3Nlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ2V4cGlyZXMnLCByZXNwb25zZS5leHBpcmVzKTsgLy8gb2Z0ZW4gdXAgdG8gMiB3ZWVrcyBieSBkZWZhdWx0IGluIEFzcC5uZXQgaWRlbnRpdHkgMi5cclxuXHRcdFx0XHRcdHRoaXMudXNlcm5hbWUgPSByZXNwb25zZS51c2VybmFtZTtcclxuXHRcdFx0XHRcdC8vQVBQX1NUQVRVU0VTLnVzZXJOYW1lID0gdGhpcy51c2VyTmFtZTtcclxuXHRcdFx0XHRcdHJldHVybiByZXNwb25zZTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHQpKTtcclxuXHR9XHJcblxyXG59XHJcbiJdfQ==
@@ -69,4 +69,4 @@ export class CurrencyFunc {
69
69
  return r;
70
70
  }
71
71
  }
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3lGdW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbm1jZS1mdW5jL3NyYy9fZnVuYy9jdXJyZW5jeUZ1bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNoQixNQUFNLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUM7SUFFakMsTUFBTSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFFbEM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBOEIsRUFBRSxhQUFzQjtRQUN4RSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1QsT0FBTyxDQUFDLENBQUM7U0FDVDtRQUVELE1BQU0sQ0FBQyxHQUFHLGFBQWEsSUFBSSxDQUFDLENBQUM7UUFDN0IsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsd0JBQXdCO1FBQ25FLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsaUNBQWlDO1FBQ2pELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENB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QUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtZQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQUU7UUFDeEMsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFpQztRQUMzQyxNQUFNLENBQUMsR0FBVyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW5jeSBjYWxjdWxhdGlvbnMuIFVuZGVmaW5lZCBpbnB1dCBvZiBudW1iZXIgaXMgY29uc2lkZXJlZCB6ZXJvLCBqdXN0IGxpa2UgbnVsbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEN1cnJlbmN5RnVuYyB7XG5cdHByaXZhdGUgc3RhdGljIERFQ0lNQUxfU0VQQVJBVE9SID0gJy4nO1xuXHRwcml2YXRlIHN0YXRpYyBUSE9VU0FORFNfU0VQQVJBVE9SID0gJywnO1xuXG5cdHByaXZhdGUgc3RhdGljIFBBRERJTkcgPSAnMDAwMDAwJztcblxuXHQvKipcblx0ICpcblx0ICogQHBhcmFtIG51bVxuXHQgKiBAcGFyYW0gZGVjaW1hbFBsYWNlcyBkZWZhdWx0IDBcblx0ICovXG5cdHN0YXRpYyBiYW5rZXJSb3VuZChudW06IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIGRlY2ltYWxQbGFjZXM/OiBudW1iZXIpOiBudW1iZXIgey8vaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMTA4OTg2L2dhdXNzaWFuLWJhbmtlcnMtcm91bmRpbmctaW4tamF2YXNjcmlwdFxuXHRcdGlmICghbnVtKSB7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRjb25zdCBkID0gZGVjaW1hbFBsYWNlcyB8fCAwO1xuXHRcdGNvbnN0IG0gPSBNYXRoLnBvdygxMCwgZCk7XG5cdFx0Y29uc3QgbiA9ICsoZCA/IG51bSAqIG0gOiBudW0pLnRvRml4ZWQoOCk7IC8vIEF2b2lkIHJvdW5kaW5nIGVycm9yc1xuXHRcdGNvbnN0IGkgPSBNYXRoLmZsb29yKG4pLCBmID0gbiAtIGk7XG5cdFx0Y29uc3QgZSA9IDFlLTg7IC8vIEFsbG93IGZvciByb3VuZGluZyBlcnJvcnMgaW4gZlxuXHRcdGNvbnN0IHIgPSAoZiA+IDAuNSAtIGUgJiYgZiA8IDAuNSArIGUpID9cblx0XHRcdCgoaSAlIDIgPT09IDApID8gaSA6IGkgKyAxKSA6IE1hdGgucm91bmQobik7XG5cdFx0cmV0dXJuIGQgPyByIC8gbSA6IHI7XG5cdH1cblxuXHRzdGF0aWMgYmFua2VyUm91bmRUbzVjZW50cyhudW06IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuXHRcdGlmICghbnVtKSB7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRjb25zdCByID0gdGhpcy5iYW5rZXJSb3VuZChNYXRoLmNlaWwobnVtICogMjAgLSAwLjUpIC8gMjAsIDIpO1xuXHRcdHJldHVybiByO1xuXHR9XG5cblx0c3RhdGljIGNlaWxUbzVjZW50cyhudW06IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuXHRcdGlmICghbnVtKSB7XG5cdFx0XHRyZXR1cm4gMDtcblx0XHR9XG5cblx0XHRjb25zdCByID0gdGhpcy5iYW5rZXJSb3VuZChNYXRoLmNlaWwobnVtICogMjApIC8gMjAsIDQpO1xuXHRcdGNvbnN0IHJvdW5kdXAgPSBNYXRoLmNlaWwociAqIDEwMDAwKSAvIDEwMDAwO1xuXHRcdHJldHVybiByb3VuZHVwO1xuXHR9XG5cblx0c3RhdGljIHRyYW5zZm9ybUN1cnJlbmN5KHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCB1bmRlZmluZWQsIGZyYWN0aW9uU2l6ZTogbnVtYmVyID0gMik6IHN0cmluZyB7XG5cdFx0bGV0IFtpbnRlZ2VyLCBmcmFjdGlvbiA9ICcnXSA9ICh2YWx1ZSB8fCAnJykudG9TdHJpbmcoKVxuXHRcdFx0LnNwbGl0KHRoaXMuREVDSU1BTF9TRVBBUkFUT1IpO1xuXG5cdFx0ZnJhY3Rpb24gPSBmcmFjdGlvblNpemUgPiAwXG5cdFx0XHQ/IHRoaXMuREVDSU1BTF9TRVBBUkFUT1IgKyAoZnJhY3Rpb24gKyB0aGlzLlBBRERJTkcpLnN1YnN0cmluZygwLCBmcmFjdGlvblNpemUpXG5cdFx0XHQ6ICcnO1xuXG5cdFx0aW50ZWdlciA9IGludGVnZXIucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgdGhpcy5USE9VU0FORFNfU0VQQVJBVE9SKTtcblxuXHRcdHJldHVybiBpbnRlZ2VyICsgZnJhY3Rpb247XG5cdH1cblxuXHRzdGF0aWMgcGFyc2VDdXJyZW5jeSh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkLCBmcmFjdGlvblNpemU6IG51bWJlciA9IDIpOiBzdHJpbmcge1xuXHRcdGxldCBbaW50ZWdlciwgZnJhY3Rpb24gPSAnJ10gPSAodmFsdWUgfHwgJycpLnNwbGl0KHRoaXMuREVDSU1BTF9TRVBBUkFUT1IpO1xuXG5cdFx0aW50ZWdlciA9IGludGVnZXIucmVwbGFjZShuZXcgUmVnRXhwKHRoaXMuVEhPVVNBTkRTX1NFUEFSQVRPUiwgJ2cnKSwgJycpO1xuXG5cdFx0ZnJhY3Rpb24gPSBwYXJzZUludChmcmFjdGlvbiwgMTApID4gMCAmJiBmcmFjdGlvblNpemUgPiAwXG5cdFx0XHQ/IHRoaXMuREVDSU1BTF9TRVBBUkFUT1IgKyAoZnJhY3Rpb24gKyB0aGlzLlBBRERJTkcpLnN1YnN0cmluZygwLCBmcmFjdGlvblNpemUpXG5cdFx0XHQ6ICcnO1xuXG5cdFx0cmV0dXJuIGludGVnZXIgKyBmcmFjdGlvbjtcblx0fVxuXG5cblx0Ly9odHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI5OTg3ODQvaG93LXRvLW91dHB1dC1pbnRlZ2Vycy13aXRoLWxlYWRpbmctemVyb3MtaW4tamF2YXNjcmlwdFxuXHRzdGF0aWMgcGFkKG51bTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCwgc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcblxuXHRcdG51bSA9IG51bGw7XG5cdFx0bGV0IHMgPSBudW0gKyAnJztcblx0XHR3aGlsZSAocy5sZW5ndGggPCBzaXplKSB7IHMgPSAnMCcgKyBzOyB9XG5cdFx0cmV0dXJuIHM7XG5cdH1cblxuXHRzdGF0aWMgc3VtKG5zOiAobnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZClbXSk6IG51bWJlciB7XG5cdFx0Y29uc3QgciA9IDxudW1iZXI+bnMucmVkdWNlKChhLCBiKSA9PiAoYSA/PyAwKSArIChiID8/IDApLCAwKTtcblx0XHRyZXR1cm4gcjtcblx0fVxuXG59XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3lGdW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbm1jZS1mdW5jL3NyYy9fZnVuYy9jdXJyZW5jeUZ1bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUNoQixNQUFNLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxHQUFHLENBQUM7SUFFakMsTUFBTSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFFbEM7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBOEIsRUFBRSxhQUFzQjtRQUN4RSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDVixPQUFPLENBQUMsQ0FBQztRQUNWLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxhQUFhLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtRQUNuRSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLGlDQUFpQztRQUNqRCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0MsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLEdBQThCO1FBQ3hELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNWLE9BQU8sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxPQUFPLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQThCO1FBQ2pELElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNWLE9BQU8sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUM3QyxPQUFPLE9BQU8sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLGlCQUFpQixDQUFDLEtBQWtDLEVBQUUsZUFBdUIsQ0FBQztRQUNwRixJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUU7YUFDckQsS0FBSyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBRWhDLFFBQVEsR0FBRyxZQUFZLEdBQUcsQ0FBQztZQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQztZQUMvRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRU4sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFN0UsT0FBTyxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQXlCLEVBQUUsZUFBdUIsQ0FBQztRQUN2RSxJQUFJLENBQUMsT0FBTyxFQUFFLFFBQVEsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFFM0UsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXpFLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQztZQUN4RCxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQztZQUMvRSxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRU4sT0FBTyxPQUFPLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFHRCxvR0FBb0c7SUFDcEcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUE4QixFQUFFLElBQVk7UUFFdEQsR0FBRyxHQUFHLElBQUksQ0FBQztRQUNYLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBaUM7UUFDM0MsTUFBTSxDQUFDLEdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzlELE9BQU8sQ0FBQyxDQUFDO0lBQ1YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ3VycmVuY3kgY2FsY3VsYXRpb25zLiBVbmRlZmluZWQgaW5wdXQgb2YgbnVtYmVyIGlzIGNvbnNpZGVyZWQgemVybywganVzdCBsaWtlIG51bGwuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUZ1bmMge1xuXHRwcml2YXRlIHN0YXRpYyBERUNJTUFMX1NFUEFSQVRPUiA9ICcuJztcblx0cHJpdmF0ZSBzdGF0aWMgVEhPVVNBTkRTX1NFUEFSQVRPUiA9ICcsJztcblxuXHRwcml2YXRlIHN0YXRpYyBQQURESU5HID0gJzAwMDAwMCc7XG5cblx0LyoqXG5cdCAqXG5cdCAqIEBwYXJhbSBudW1cblx0ICogQHBhcmFtIGRlY2ltYWxQbGFjZXMgZGVmYXVsdCAwXG5cdCAqL1xuXHRzdGF0aWMgYmFua2VyUm91bmQobnVtOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBkZWNpbWFsUGxhY2VzPzogbnVtYmVyKTogbnVtYmVyIHsvL2h0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzEwODk4Ni9nYXVzc2lhbi1iYW5rZXJzLXJvdW5kaW5nLWluLWphdmFzY3JpcHRcblx0XHRpZiAoIW51bSkge1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZCA9IGRlY2ltYWxQbGFjZXMgfHwgMDtcblx0XHRjb25zdCBtID0gTWF0aC5wb3coMTAsIGQpO1xuXHRcdGNvbnN0IG4gPSArKGQgPyBudW0gKiBtIDogbnVtKS50b0ZpeGVkKDgpOyAvLyBBdm9pZCByb3VuZGluZyBlcnJvcnNcblx0XHRjb25zdCBpID0gTWF0aC5mbG9vcihuKSwgZiA9IG4gLSBpO1xuXHRcdGNvbnN0IGUgPSAxZS04OyAvLyBBbGxvdyBmb3Igcm91bmRpbmcgZXJyb3JzIGluIGZcblx0XHRjb25zdCByID0gKGYgPiAwLjUgLSBlICYmIGYgPCAwLjUgKyBlKSA/XG5cdFx0XHQoKGkgJSAyID09PSAwKSA/IGkgOiBpICsgMSkgOiBNYXRoLnJvdW5kKG4pO1xuXHRcdHJldHVybiBkID8gciAvIG0gOiByO1xuXHR9XG5cblx0c3RhdGljIGJhbmtlclJvdW5kVG81Y2VudHMobnVtOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcblx0XHRpZiAoIW51bSkge1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgciA9IHRoaXMuYmFua2VyUm91bmQoTWF0aC5jZWlsKG51bSAqIDIwIC0gMC41KSAvIDIwLCAyKTtcblx0XHRyZXR1cm4gcjtcblx0fVxuXG5cdHN0YXRpYyBjZWlsVG81Y2VudHMobnVtOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcblx0XHRpZiAoIW51bSkge1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgciA9IHRoaXMuYmFua2VyUm91bmQoTWF0aC5jZWlsKG51bSAqIDIwKSAvIDIwLCA0KTtcblx0XHRjb25zdCByb3VuZHVwID0gTWF0aC5jZWlsKHIgKiAxMDAwMCkgLyAxMDAwMDtcblx0XHRyZXR1cm4gcm91bmR1cDtcblx0fVxuXG5cdHN0YXRpYyB0cmFuc2Zvcm1DdXJyZW5jeSh2YWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkLCBmcmFjdGlvblNpemU6IG51bWJlciA9IDIpOiBzdHJpbmcge1xuXHRcdGxldCBbaW50ZWdlciwgZnJhY3Rpb24gPSAnJ10gPSAodmFsdWUgfHwgJycpLnRvU3RyaW5nKClcblx0XHRcdC5zcGxpdCh0aGlzLkRFQ0lNQUxfU0VQQVJBVE9SKTtcblxuXHRcdGZyYWN0aW9uID0gZnJhY3Rpb25TaXplID4gMFxuXHRcdFx0PyB0aGlzLkRFQ0lNQUxfU0VQQVJBVE9SICsgKGZyYWN0aW9uICsgdGhpcy5QQURESU5HKS5zdWJzdHJpbmcoMCwgZnJhY3Rpb25TaXplKVxuXHRcdFx0OiAnJztcblxuXHRcdGludGVnZXIgPSBpbnRlZ2VyLnJlcGxhY2UoL1xcQig/PShcXGR7M30pKyg/IVxcZCkpL2csIHRoaXMuVEhPVVNBTkRTX1NFUEFSQVRPUik7XG5cblx0XHRyZXR1cm4gaW50ZWdlciArIGZyYWN0aW9uO1xuXHR9XG5cblx0c3RhdGljIHBhcnNlQ3VycmVuY3kodmFsdWU6IHN0cmluZyB8IHVuZGVmaW5lZCwgZnJhY3Rpb25TaXplOiBudW1iZXIgPSAyKTogc3RyaW5nIHtcblx0XHRsZXQgW2ludGVnZXIsIGZyYWN0aW9uID0gJyddID0gKHZhbHVlIHx8ICcnKS5zcGxpdCh0aGlzLkRFQ0lNQUxfU0VQQVJBVE9SKTtcblxuXHRcdGludGVnZXIgPSBpbnRlZ2VyLnJlcGxhY2UobmV3IFJlZ0V4cCh0aGlzLlRIT1VTQU5EU19TRVBBUkFUT1IsICdnJyksICcnKTtcblxuXHRcdGZyYWN0aW9uID0gcGFyc2VJbnQoZnJhY3Rpb24sIDEwKSA+IDAgJiYgZnJhY3Rpb25TaXplID4gMFxuXHRcdFx0PyB0aGlzLkRFQ0lNQUxfU0VQQVJBVE9SICsgKGZyYWN0aW9uICsgdGhpcy5QQURESU5HKS5zdWJzdHJpbmcoMCwgZnJhY3Rpb25TaXplKVxuXHRcdFx0OiAnJztcblxuXHRcdHJldHVybiBpbnRlZ2VyICsgZnJhY3Rpb247XG5cdH1cblxuXG5cdC8vaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yOTk4Nzg0L2hvdy10by1vdXRwdXQtaW50ZWdlcnMtd2l0aC1sZWFkaW5nLXplcm9zLWluLWphdmFzY3JpcHRcblx0c3RhdGljIHBhZChudW06IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIHNpemU6IG51bWJlcik6IHN0cmluZyB7XG5cblx0XHRudW0gPSBudWxsO1xuXHRcdGxldCBzID0gbnVtICsgJyc7XG5cdFx0d2hpbGUgKHMubGVuZ3RoIDwgc2l6ZSkgeyBzID0gJzAnICsgczsgfVxuXHRcdHJldHVybiBzO1xuXHR9XG5cblx0c3RhdGljIHN1bShuczogKG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpW10pOiBudW1iZXIge1xuXHRcdGNvbnN0IHIgPSA8bnVtYmVyPm5zLnJlZHVjZSgoYSwgYikgPT4gKGEgPz8gMCkgKyAoYiA/PyAwKSwgMCk7XG5cdFx0cmV0dXJuIHI7XG5cdH1cblxufVxuIl19
@@ -313,4 +313,4 @@ export class DateFunc {
313
313
  return dd1 - dd2;
314
314
  }
315
315
  }
316
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZUZ1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2RhdGVGdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sUUFBUTtJQUVwQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEtBQThCO1FBQ2pFLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWCxPQUFPLENBQUMsQ0FBQyxDQUFDLDZDQUE2QztTQUN2RDtRQUVELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRS9DLE9BQU8sU0FBUyxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBOEI7UUFDM0QsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEtBQThCO1FBQ3ZELE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxjQUFj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O1xuXG5leHBvcnQgY2xhc3MgRGF0ZUZ1bmMge1xuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm0gVVRDIERhdGVUaW1lIHRvIGxvY2FsIGRhdGUgd2l0aG91dCBILCBNIGFuZCBTLiBGb3IgZXhhbXBsZSwgdGhlIG1vbnRoIGRheSBvZiAyMDE4LTAxLTIzVDIyOjAwOjAwWiBpcyAyNCBpbiBBdXN0cmFsaWEuXG5cdCAqIEBwYXJhbSBkdFV0Y1xuXHQgKiBAcGFyYW0gb2Zmc2V0TWludXRlcyBpZiBub3QgZGVmaW5lZCwgaXQgd2lsbCBiZSBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCkuIC8vaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvRGF0ZS9nZXRUaW1lem9uZU9mZnNldFxuXHQgKi9cblx0c3RhdGljIGRhdGVUaW1lVXRjVG9Mb2NhbERhdGVOdW1iZXIoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcblx0XHRpZiAoIWR0VXRjKSB7XG5cdFx0XHRyZXR1cm4gMDsgLy8wIGlzIGJldHRlciBmb3IgY2FsY3VsYXRpb24gYnkgdGhlIGNsaWVudHMuXG5cdFx0fVxuXG5cdFx0Y29uc3QgbG9jYWxEdCA9IERhdGVGdW5jLmRhdGVUaW1lVXRjVG9Mb2NhbERhdGVUaW1lKGR0VXRjKTtcblx0XHRjb25zdCBsb2NhbEROdW0gPSBsb2NhbER0LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuXG5cdFx0cmV0dXJuIGxvY2FsRE51bTtcblx0fVxuXG5cdC8qKlxuXHQgKiBEYXRlIG9ubHkuIEhvd2V2ZXIsIHRoZSBkYXRlIG1heSBzdGlsbCBiZSBpbiBVVEMuXG5cdCAqIEBwYXJhbSBkdFV0Y1xuXHQgKi9cblx0c3RhdGljIGRhdGVUaW1lVXRjVG9Mb2NhbERhdGUoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB7XG5cdFx0Y29uc3QgbG9jYWxEdCA9IERhdGVGdW5jLmRhdGVUaW1lVXRjVG9Mb2NhbERhdGVUaW1lKGR0VXRjKTtcblx0XHRjb25zdCBsb2NhbEQgPSBsb2NhbER0LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuXHRcdHJldHVybiBuZXcgRGF0ZShsb2NhbEQpO1xuXHR9XG5cblx0c3RhdGljIGxvY2FsSVNPRGF0ZVN0cmluZyhkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuXHRcdGNvbnN0IGR0ID0gbW9tZW50KGR0VXRjKS5sb2NhbCgpO1xuXHRcdHJldHVybiBkdC5mb3JtYXQoJ1lZWVktTU0tREQnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBsb2NhdGUgZGF0ZSBPTkxZIChubyB0aW1lKSB0byBVVEMgZGF0ZS5cblx0ICogQHBhcmFtIGR0IGlmIGR0IGNvbnRhaW4gdGltZSBpbmZvLCBpdCB3aWxsIGJlY29tZSBkdC5zZXRIb3VycygwLCAwLCAwLCAwKVxuXHQgKi9cblx0c3RhdGljIGxvY2FsRGF0ZVRvVXRjKGQ6IERhdGUgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkIHwgc3RyaW5nKTogRGF0ZSB7XG5cdFx0Y29uc3QgZHQgPSBtb21lbnQoZCkudG9EYXRlKCk7XG5cdFx0Y29uc3QgbiA9IGR0LnNldEhvdXJzKDAsIDAsIDAsIDApO1xuXHRcdGNvbnN0IG9mZnNldCA9IGR0LmdldFRpbWV6b25lT2Zmc2V0KCkgKiA2MDAwMDtcblx0XHRyZXR1cm4gbmV3IERhdGUobiArIG9mZnNldCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0VGltZXpvbmVPZmZzZXQoKTogbnVtYmVyIHtcblx0XHRjb25zdCBkdCA9IHRoaXMudG9kYXk7XG5cdFx0cmV0dXJuIGR0LmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cdH1cblxuXHQvKipcblx0ICogVHJhbnNmb3JtIFVUQyBEYXRlVGltZSB0byBsb2NhbCBkYXRlVGltZS5cblx0ICogQHBhcmFtIGR0VXRjXG5cdCAqIEBwYXJhbSBvZmZzZXRNaW51dGVzIGlmIG5vdCBkZWZpbmVkLCBpdCB3aWxsIGJlIG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKS4gLy9odHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlL2dldFRpbWV6b25lT2Zmc2V0XG5cdCAqL1xuXHRzdGF0aWMgZGF0ZVRpbWVVdGNUb0xvY2FsRGF0ZVRpbWUoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB7XG5cdFx0Y29uc3Qgc3RpbGxVdGMgPSBtb21lbnQudXRjKGR0VXRjKS50b0RhdGUoKTtcblx0XHRyZXR1cm4gbW9tZW50KHN0aWxsVXRjKS5sb2NhbCgpLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGRhdGVUaW1lVXRjVG9Mb2NhTW9tZW50KGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IG1vbWVudC5Nb21lbnQge1xuXHRcdGNvbnN0IHN0aWxsVXRjID0gbW9tZW50LnV0YyhkdFV0Yyk7XG5cdFx0cmV0dXJuIHN0aWxsVXRjLmxvY2FsKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RW5kT2ZXZWVrKGR0OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IG51bWJlcikge1xuXHRcdHJldHVybiBtb21lbnQoZHQpLmVuZE9mKCdpc29XZWVrJykudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U3RhcnRPZldlZWsoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIG1vbWVudChkdCkuc3RhcnRPZignaXNvV2VlaycpLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGdldEVuZE9mTW9udGgoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyKSB7XG5cdFx0Ly8gIHJldHVybiBuZXcgRGF0ZShkdC5nZXRGdWxsWWVhcigpLCBkdC5nZXRNb250aCgpICsgMSwgMCwgMjMsIDU5LCA1OSwgOTk5KTtcblx0XHRyZXR1cm4gbW9tZW50KGR0KS5lbmRPZignbW9udGgnKS50b0RhdGUoKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTdGFydE9mTW9udGgoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIG1vbWVudChkdCkuc3RhcnRPZignbW9udGgnKS50b0RhdGUoKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYXlzQmV0d2VlbkRhdGVzKGR0MTogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIGR0MjogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXREYXlzQmV0d2VlbihkdDEsIGR0Mik7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RW5kT2ZEYXRlKGR0OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUge1xuXHRcdHJldHVybiBkdCA/IG5ldyBEYXRlKGR0LnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSkpIDpcblx0XHRcdG5ldyBEYXRlKHRoaXMubm93LnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSkpO1xuXHR9XG5cblx0c3RhdGljIGdldFN0YXJ0T2ZEYXRlKGR0OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUge1xuXHRcdHJldHVybiBtb21lbnQoZHQpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGdldEVuZE9mVG9kYXkoKTogRGF0ZSB7XG5cdFx0Ly9cdHJldHVybiBuZXcgRGF0ZSgobmV3IERhdGUoRGF0ZS5ub3coKSkpLnNldEhvdXJzKDIzLCA1OSwgNTksIDk5OSkpO1xuXHRcdHJldHVybiBtb21lbnQoRGF0ZS5ub3coKSkuZW5kT2YoJ2RheScpLnRvRGF0ZSgpO1xuXG5cdH1cblxuXHRzdGF0aWMgZ2V0U3RhcnRPZlRvZGF5KCk6IERhdGUge1xuXHRcdC8vXHRyZXR1cm4gbmV3IERhdGUoKG5ldyBEYXRlKERhdGUubm93KCkpKS5zZXRIb3VycygwLCAwLCAwLCAwKSk7XG5cdFx0cmV0dXJuIG1vbWVudChEYXRlLm5vdygpKS5zdGFydE9mKCdkYXknKS50b0RhdGUoKTtcblx0fVxuXG5cdC8vaW5zcGlyZWQgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvNTYzNDA2L2FkZC1kYXlzLXRvLWphdmFzY3JpcHQtZGF0ZVxuXHRzdGF0aWMgYWRkRGF5cyhkdDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIGRheXM6IG51bWJlciA9IDApIHtcblx0XHRjb25zdCBkYXQgPSBtb21lbnQoZHQpO1xuXHRcdGRhdC5hZGQoZGF5cywgJ2RheXMnKTtcblx0XHRyZXR1cm4gZGF0LnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIHN1YnRyYWN0RGF5cyhkdDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIGRheXM6IG51bWJlciA9IDApIHtcblx0XHRjb25zdCBkYXQgPSBtb21lbnQoZHQpO1xuXHRcdGRhdC5zdWJ0cmFjdChkYXlzLCAnZGF5cycpO1xuXHRcdHJldHVybiBkYXQudG9EYXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogU3RhcnQgb2YgdG9kYXlcblx0ICovXG5cdHN0YXRpYyBnZXQgdG9kYXkoKTogRGF0ZSB7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0U3RhcnRPZlRvZGF5KCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0IG5vdygpOiBEYXRlIHtcblx0XHRyZXR1cm4gbmV3IERhdGUoRGF0ZS5ub3coKSk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TmV4dDVNaW51dGVNYXJrKCk6IERhdGUge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoKS5zZXQoJ3NlY29uZCcsIDApLnNldCgnbWlsbGlzZWNvbmQnLCAwKTtcblx0XHRjb25zdCBtaW51dGUgPSBtLm1pbnV0ZSgpO1xuXHRcdGNvbnN0IG1vZCA9IG1pbnV0ZSAlIDU7XG5cdFx0aWYgKG1vZCkge1xuXHRcdFx0Y29uc3QgZGVsdGEgPSA1IC0gbW9kO1xuXHRcdFx0cmV0dXJuIG0uYWRkKGRlbHRhLCAnbScpLnRvRGF0ZSgpO1xuXHRcdH1cblxuXHRcdHJldHVybiBtLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGdldFlNRChkOiBEYXRlKSB7XG5cdFx0cmV0dXJuIG1vbWVudChkKS5mb3JtYXQoJ1lZWVlNTUREJyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RE1ZV2l0aFNsYXNoKGQ6IERhdGUpIHtcblx0XHRyZXR1cm4gbW9tZW50KGQpLmZvcm1hdCgnREQvTU0vWVlZWScpO1xuXHR9XG5cblx0c3RhdGljIGdldERNWUhtV2l0aFNsYXNoKGQ6IERhdGUpIHtcblx0XHRyZXR1cm4gbW9tZW50KGQpLmZvcm1hdCgnREQvTU0vWVlZWSBISDptbScpO1xuXHR9XG5cblx0c3RhdGljIGdldE1jcFRpbWUoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIG1vbWVudChkdCkuZm9ybWF0KCdISDptbTpzcy5TU1NaJyk7XG5cdH1cblxuXHQvKipcblx0ICogSW4gMjQgaG91ciBmb3JtYXRcblx0ICogQHBhcmFtIGR0VXRjXG5cdCAqL1xuXHRzdGF0aWMgZ2V0TG9jYWxETVlIbVdpdGhTbGFzaChkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBkID0gRGF0ZUZ1bmMuZGF0ZVRpbWVVdGNUb0xvY2FsRGF0ZVRpbWUoZHRVdGMpO1xuXHRcdHJldHVybiBtb21lbnQoZCkuZm9ybWF0KCdERC9NTS9ZWVlZIEhIOm1tJyk7XG5cdH1cblxuXHQvKipcblx0ICogT2Zmc2V0IG1pbnV0ZXMgY29tcGFyaW5nIHdpdGggdG9kYXlcblx0ICovXG5cdHN0YXRpYyBnZXRPZmZzZXRNaW51dGVzKGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IG51bWJlcik6IG51bWJlciB7XG5cdFx0Y29uc3QgZG0xID0gbW9tZW50KGR0VXRjKTtcblx0XHRjb25zdCBkbTIgPSBtb21lbnQobmV3IERhdGUoKS5zZXRIb3VycygwLCAwLCAwLCAwKSk7XG5cdFx0cmV0dXJuIGRtMS5kaWZmKGRtMiwgJ21pbnV0ZXMnKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREYXlzQmV0d2VlbihkMT86IERhdGUgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkLCBkMj86IERhdGUgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcblx0XHRjb25zdCBkbTEgPSBtb21lbnQoZDEpO1xuXHRcdGNvbnN0IGRtMiA9IG1vbWVudChkMik7XG5cdFx0cmV0dXJuIGRtMi5kaWZmKGRtMSwgJ2RheXMnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXQgaG91ciBvZiB0aGUgZGF0ZS4gSWYgRGF0ZSBpcyBub3QgZGVmaW5lZCwgdGhlIGhvdXIgd2lsbCBiZSBjdXJyZW50IGhvdXIuXG5cdCAqIEBwYXJhbSBkdFV0Y1xuXHQgKi9cblx0c3RhdGljIGdldEhvdXIoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyKTogbnVtYmVyIHtcblx0XHRjb25zdCBtID0gbW9tZW50KGR0VXRjKTtcblx0XHRyZXR1cm4gbS5ob3VycygpO1xuXHR9XG5cblx0c3RhdGljIGdldE1pbnV0ZShkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQgfCBudW1iZXIpOiBudW1iZXIge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoZHRVdGMpO1xuXHRcdHJldHVybiBtLm1pbnV0ZXMoKTtcblx0fVxuXG5cdHN0YXRpYyBjb21wb3NlRGF0ZVRpbWUoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkLCBoOiBudW1iZXIgPSAwLCBtaW51dGU6IG51bWJlciA9IDApOiBEYXRlIHtcblx0XHRjb25zdCBtdCA9IG1vbWVudChkdCk7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKG10LnRvRGF0ZSgpLnNldEhvdXJzKGgsIG1pbnV0ZSwgMCwgMCkpO1xuXHR9XG5cblx0c3RhdGljIG9sZGVyVGhhbjI0SG91cnMoZDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0XHRjb25zdCBtID0gbW9tZW50KGQpO1xuXHRcdHJldHVybiBtb21lbnQoKS5kaWZmKG0sICdob3VycycpID49IDI0O1xuXHR9XG5cblx0c3RhdGljIG9sZGVyVGhhbjI0SG91cnNVdGMoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIERhdGVGdW5jLmdldEhvdXJBZ2VVdGMoZHRVdGMpID49IDI0O1xuXHR9XG5cblx0c3RhdGljIG9sZGVyVGhhbkhvdXJzKGQ6IERhdGUsIGhvdXJzOiBudW1iZXIpIHtcblx0XHRjb25zdCBtID0gbW9tZW50KGQpO1xuXHRcdHJldHVybiBtb21lbnQoKS5kaWZmKG0sICdob3VycycpID49IGhvdXJzO1xuXHR9XG5cblx0c3RhdGljIG9sZGVyVGhhbkhvdXJzVXRjKGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCwgaG91cnM6IG51bWJlcik6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBEYXRlRnVuYy5nZXRIb3VyQWdlVXRjKGR0VXRjKSA+PSBob3Vycztcblx0fVxuXG5cdHN0YXRpYyBvbGRlclRoYW5NaW51dGVzKGQ6IERhdGUsIG1pbnV0ZXM6IG51bWJlcikge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoZCk7XG5cdFx0cmV0dXJuIG1vbWVudCgpLmRpZmYobSwgJ21pbnV0ZXMnKSA+PSBtaW51dGVzO1xuXHR9XG5cblx0LyoqXG5cdCAqIEl0IGNvdWxkIGJlIDExUE0geWVzdGVyZGF5LCBhbmQgMSBBTSB0b2RheS4gQWN0dWFsbHkgYmFzZWQgb24gbG9jYWwgdG9kYXkuXG5cdCAqL1xuXHRzdGF0aWMgb2xkZXJUaGFuMURheShkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRGF0ZUZ1bmMuZ2V0RGF5QWdlVXRjKGR0VXRjKSA+IDA7XG5cdH1cblxuXHRzdGF0aWMgZ2V0SG91ckFnZShkOiBEYXRlKSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudChkKTtcblx0XHRyZXR1cm4gbW9tZW50KCkuZGlmZihtLCAnaG91cnMnKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRIb3VyQWdlVXRjKGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQudXRjKGR0VXRjKTtcblx0XHRyZXR1cm4gbW9tZW50LnV0YygpLmRpZmYobSwgJ2hvdXJzJyk7XG5cdH1cblxuXHQvKipcblx0ICogQ29tcGFyZSB1dGMgZGF0ZSB3aXRoIHV0YyBub3cuXG5cdCAqIEBwYXJhbSBkdFV0Y1xuXHQgKi9cblx0c3RhdGljIGdldERheUFnZVV0YyhkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBtID0gbW9tZW50LnV0YyhkdFV0Yyk7XG5cdFx0cmV0dXJuIG1vbWVudC51dGMoKS5kaWZmKG0sICdkYXlzJyk7XG5cdH1cblxuXHQvKipcblx0ICogSG93IG1hbnkgeWVhcnMgZnJvbSBub3cuXG5cdCAqIEBwYXJhbSBkIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHN0YXRpYyBnZXRBZ2UoZDogRGF0ZSkge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoZCk7XG5cdFx0cmV0dXJuIG1vbWVudCgpLmRpZmYobSwgJ3llYXJzJyk7XG5cdH1cblxuXHQvKipcblx0ICogWWVhciBvZiBkYXRlLlxuXHQgKiBAcGFyYW0gZCBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRzdGF0aWMgZ2V0WWVhcihkOiBEYXRlKSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudChkKTtcblx0XHRyZXR1cm4gbS55ZWFyKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0VXRjTm93KCk6IERhdGUge1xuXHRcdHJldHVybiBtb21lbnQudXRjKCkudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgYWRkTWludXRlcyhkOiBEYXRlLCBtOiBudW1iZXIpOiBEYXRlIHtcblx0XHRyZXR1cm4gbW9tZW50KGQpLmFkZChtLCAnbScpLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGFkZE1vbnRoKGQ6IERhdGUsIG06IG51bWJlcik6IERhdGUge1xuXHRcdHJldHVybiBtb21lbnQoZCkuYWRkKG0sICdNJykudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RHVyYXRpb24oZDE6IERhdGUsIGQyOiBEYXRlKSB7XG5cdFx0Y29uc3QgbWQxID0gbW9tZW50KGQxKTtcblx0XHRjb25zdCBtZDIgPSBtb21lbnQoZDIpO1xuXHRcdHJldHVybiBtb21lbnQuZHVyYXRpb24obWQyLmRpZmYobWQxKSk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydCBtaW51dGVzIGZyb20gbWlkbmlnaHQgdG8gSEg6bW0gdGV4dFxuXHQgKiBAcGFyYW0gbWluc1xuXHQgKi9cblx0c3RhdGljIGdldEhNRnJvbU1pbnMobWluczogbnVtYmVyKTogc3RyaW5nIHtcblx0XHQvLyBkbyBub3QgaW5jbHVkZSB0aGUgZmlyc3QgdmFsaWRhdGlvbiBjaGVjayBpZiB5b3Ugd2FudCwgZm9yIGV4YW1wbGUsXG5cdFx0Ly8gZ2V0VGltZUZyb21NaW5zKDE1MzApIHRvIGVxdWFsIGdldFRpbWVGcm9tTWlucyg5MCkgKGkuZS4gbWlucyByb2xsb3Zlcilcblx0XHRpZiAobWlucyA+PSAyNCAqIDYwIHx8IG1pbnMgPCAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgUmFuZ2VFcnJvcignVmFsaWQgaW5wdXQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwIGFuZCBsZXNzIHRoYW4gMTQ0MC4nKTtcblx0XHR9XG5cdFx0Y29uc3QgaCA9IG1pbnMgLyA2MCB8IDAsXG5cdFx0XHRtID0gbWlucyAlIDYwIHwgMDtcblx0XHRyZXR1cm4gbW9tZW50LnV0YygpLmhvdXJzKGgpLm1pbnV0ZXMobSkuZm9ybWF0KCdISDptbScpO1xuXHR9XG5cblx0c3RhdGljIGdldE1pbnV0ZXNTaW5jZU1pZG5pZ2h0KGQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudChkKTtcblx0XHRjb25zdCBtaWRuaWdodCA9IG1vbWVudChkKS5zdGFydE9mKCdkYXknKTsgLy9NdXRhdGVzIHRoZSBvcmlnaW5hbCBtb21lbnQgYnkgc2V0dGluZyBpdCB0byB0aGUgc3RhcnQgb2YgYSB1bml0IG9mIHRpbWUuIFNvIEkgaGF2ZSBiZXR0ZXIgbm90IHRvIHVzZSBtIHdoaWNoIHdpbCBiZSBjaGFuZ2VkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvblxuXHRcdHJldHVybiBtLmRpZmYobWlkbmlnaHQsICdtaW51dGVzJyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TWludXRlc0JldHdlZW4oc3RhcnQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkLCBlbmQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudChzdGFydCk7XG5cdFx0Y29uc3QgbTIgPSBtb21lbnQoZW5kKTtcblx0XHRyZXR1cm4gbTIuZGlmZihtLCAnbWludXRlcycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFBhcnNlIGpzb24gc3RyaW5nIHdpdGggZGF0ZSBzZXJpYWxpemVkIGludG8gc3RyaW5nLCBhbmQgZ2V0IHByb3BlciBkYXRlIG9iamVjdCBiYWNrXG5cdCAqIEBwYXJhbSBzXG5cdCAqL1xuXHRzdGF0aWMgZGF0ZVNhZmVKc29uUGFyc2Uoczogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIEpTT04ucGFyc2UocywgdGhpcy5kYXRlUmV2aXZlcik7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBkYXRlUmV2aXZlcihrZXk6IHN0cmluZywgdmFsdWU6IGFueSkge1xuXHRcdGlmIChEYXRlRnVuYy5pc1NlcmlhbGl6ZWREYXRlKHZhbHVlKSkge1xuXHRcdFx0cmV0dXJuIChuZXcgRGF0ZSh2YWx1ZSkpO1xuXHRcdH1cblxuXHRcdC8vIElmIGl0J3Mgbm90IGEgZGF0ZS1zdHJpbmcsIHdlIHdhbnQgdG8gcmV0dXJuIHRoZSB2YWx1ZSBhcy1pcy4gSWYgd2UgZmFpbCB0byByZXR1cm5cblx0XHQvLyBhIHZhbHVlLCBpdCB3aWxsIGJlIG9taXR0ZWQgZnJvbSB0aGUgcmVzdWx0YW50IGRhdGEgc3RydWN0dXJlLlxuXHRcdHJldHVybiAodmFsdWUpO1xuXG5cdH1cblxuXG5cdC8vIEkgZGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIHN0cmluZyB0aGF0IG1hdGNoZXMgdGhlIHNlcmlhbGl6ZWQtZGF0ZSBwYXR0ZXJuLlxuXHRwcml2YXRlIHN0YXRpYyBpc1NlcmlhbGl6ZWREYXRlKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcblx0XHQvLyBEYXRlcyBhcmUgc2VyaWFsaXplZCBpbiBUWiBmb3JtYXQsIGV4YW1wbGU6ICcxOTgxLTEyLTIwVDA0OjAwOjE0LjAwMFonLlxuXHRcdGNvbnN0IGRhdGVQYXR0ZXJuID0gL15cXGR7NH0tXFxkezJ9LVxcZHsyfVRcXGR7Mn06XFxkezJ9OlxcZHsyfVxcLlxcZHszfVokLztcblx0XHRyZXR1cm4gKERhdGVGdW5jLmlzU3RyaW5nKHZhbHVlKSAmJiBkYXRlUGF0dGVybi50ZXN0KHZhbHVlKSk7XG5cdH1cblxuXG5cdC8vIEkgZGV0ZXJtaW5lIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyBhIFN0cmluZy5cblx0cHJpdmF0ZSBzdGF0aWMgaXNTdHJpbmcodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiAoe30udG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IFN0cmluZ10nKTtcblx0fVxuXG5cdHN0YXRpYyBkYXRlU2FmZVBhcnNlKHM6IHN0cmluZyB8IERhdGUpIHtcblx0XHRjb25zdCBtID0gbW9tZW50KHMpO1xuXHRcdHJldHVybiBtLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGNvbXBvc2VEYXRlV2l0aE1pbnV0ZXMoZDogRGF0ZSwgbWludXRlOiBudW1iZXIpOiBEYXRlIHtcblx0XHRjb25zdCBtID0gbW9tZW50KGQpO1xuXHRcdGNvbnN0IG1pZG5pZ2h0ID0gbW9tZW50KGQpLnN0YXJ0T2YoJ2RheScpOyAvLyBNdXRhdGVzIHRoZSBvcmlnaW5hbCBtb21lbnQgYnkgc2V0dGluZyBpdCB0byB0aGUgc3RhcnQgb2YgYSB1bml0IG9mIHRpbWUuIFNvIEkgaGF2ZSBiZXR0ZXIgbm90IHRvIHVzZSBtIHdoaWNoIHdpbCBiZSBjaGFuZ2VkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvblxuXHRcdG1pZG5pZ2h0LmFkZChtaW51dGUsICdtaW51dGVzJyk7XG5cdFx0cmV0dXJuIG1pZG5pZ2h0LnRvRGF0ZSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFNhZmUgY29tcGFyZSBzaW5jZSBkYXRlIGRhdGEgbWF5IGJlIGNvbnNpZGVyZWQgYXMgc3RyaW5nIHJhdGhlciB0aGFuIGRhdGUuXG5cdCAqIEBwYXJhbSBkMVxuXHQgKiBAcGFyYW0gZDJcblx0ICovXG5cdHN0YXRpYyBjb21wYXJlKGQxOiBEYXRlIHwgdW5kZWZpbmVkLCBkMjogRGF0ZSB8IHVuZGVmaW5lZCk6IG51bWJlciB7XG5cdFx0aWYgKCFkMSAmJiAhZDIpIHtcblx0XHRcdHJldHVybiAwO1xuXHRcdH1cblxuXHRcdGlmICghZDEpIHtcblx0XHRcdHJldHVybiAtTmFOXG5cdFx0fVxuXG5cdFx0aWYgKCFkMikge1xuXHRcdFx0cmV0dXJuIE5hTjtcblx0XHR9XG5cblx0XHRjb25zdCBkZDEgPSAobmV3IERhdGUoZDEpKS52YWx1ZU9mKCk7XG5cdFx0Y29uc3QgZGQyID0gKG5ldyBEYXRlKGQyKSkudmFsdWVPZigpO1xuXHRcdHJldHVybiBkZDEgLSBkZDI7XG5cdH1cbn1cblxuIl19
316
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZUZ1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2RhdGVGdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixNQUFNLE9BQU8sUUFBUTtJQUVwQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLDRCQUE0QixDQUFDLEtBQThCO1FBQ2pFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxDQUFDLENBQUMsNkNBQTZDO1FBQ3hELENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUUvQyxPQUFPLFNBQVMsQ0FBQztJQUNsQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQThCO1FBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxLQUE4QjtRQUN2RCxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDakMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFN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QUcsQ0FBQztJQUNsQixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmV4cG9ydCBjbGFzcyBEYXRlRnVuYyB7XG5cblx0LyoqXG5cdCAqIFRyYW5zZm9ybSBVVEMgRGF0ZVRpbWUgdG8gbG9jYWwgZGF0ZSB3aXRob3V0IEgsIE0gYW5kIFMuIEZvciBleGFtcGxlLCB0aGUgbW9udGggZGF5IG9mIDIwMTgtMDEtMjNUMjI6MDA6MDBaIGlzIDI0IGluIEF1c3RyYWxpYS5cblx0ICogQHBhcmFtIGR0VXRjXG5cdCAqIEBwYXJhbSBvZmZzZXRNaW51dGVzIGlmIG5vdCBkZWZpbmVkLCBpdCB3aWxsIGJlIG5ldyBEYXRlKCkuZ2V0VGltZXpvbmVPZmZzZXQoKS4gLy9odHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9EYXRlL2dldFRpbWV6b25lT2Zmc2V0XG5cdCAqL1xuXHRzdGF0aWMgZGF0ZVRpbWVVdGNUb0xvY2FsRGF0ZU51bWJlcihkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuXHRcdGlmICghZHRVdGMpIHtcblx0XHRcdHJldHVybiAwOyAvLzAgaXMgYmV0dGVyIGZvciBjYWxjdWxhdGlvbiBieSB0aGUgY2xpZW50cy5cblx0XHR9XG5cblx0XHRjb25zdCBsb2NhbER0ID0gRGF0ZUZ1bmMuZGF0ZVRpbWVVdGNUb0xvY2FsRGF0ZVRpbWUoZHRVdGMpO1xuXHRcdGNvbnN0IGxvY2FsRE51bSA9IGxvY2FsRHQuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cblx0XHRyZXR1cm4gbG9jYWxETnVtO1xuXHR9XG5cblx0LyoqXG5cdCAqIERhdGUgb25seS4gSG93ZXZlciwgdGhlIGRhdGUgbWF5IHN0aWxsIGJlIGluIFVUQy5cblx0ICogQHBhcmFtIGR0VXRjXG5cdCAqL1xuXHRzdGF0aWMgZGF0ZVRpbWVVdGNUb0xvY2FsRGF0ZShkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHtcblx0XHRjb25zdCBsb2NhbER0ID0gRGF0ZUZ1bmMuZGF0ZVRpbWVVdGNUb0xvY2FsRGF0ZVRpbWUoZHRVdGMpO1xuXHRcdGNvbnN0IGxvY2FsRCA9IGxvY2FsRHQuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cdFx0cmV0dXJuIG5ldyBEYXRlKGxvY2FsRCk7XG5cdH1cblxuXHRzdGF0aWMgbG9jYWxJU09EYXRlU3RyaW5nKGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG5cdFx0Y29uc3QgZHQgPSBtb21lbnQoZHRVdGMpLmxvY2FsKCk7XG5cdFx0cmV0dXJuIGR0LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuXHR9XG5cblx0LyoqXG5cdCAqIGxvY2F0ZSBkYXRlIE9OTFkgKG5vIHRpbWUpIHRvIFVUQyBkYXRlLlxuXHQgKiBAcGFyYW0gZHQgaWYgZHQgY29udGFpbiB0aW1lIGluZm8sIGl0IHdpbGwgYmVjb21lIGR0LnNldEhvdXJzKDAsIDAsIDAsIDApXG5cdCAqL1xuXHRzdGF0aWMgbG9jYWxEYXRlVG9VdGMoZDogRGF0ZSB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQgfCBzdHJpbmcpOiBEYXRlIHtcblx0XHRjb25zdCBkdCA9IG1vbWVudChkKS50b0RhdGUoKTtcblx0XHRjb25zdCBuID0gZHQuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cdFx0Y29uc3Qgb2Zmc2V0ID0gZHQuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwO1xuXHRcdHJldHVybiBuZXcgRGF0ZShuICsgb2Zmc2V0KTtcblx0fVxuXG5cdHN0YXRpYyBnZXRUaW1lem9uZU9mZnNldCgpOiBudW1iZXIge1xuXHRcdGNvbnN0IGR0ID0gdGhpcy50b2RheTtcblx0XHRyZXR1cm4gZHQuZ2V0VGltZXpvbmVPZmZzZXQoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBUcmFuc2Zvcm0gVVRDIERhdGVUaW1lIHRvIGxvY2FsIGRhdGVUaW1lLlxuXHQgKiBAcGFyYW0gZHRVdGNcblx0ICogQHBhcmFtIG9mZnNldE1pbnV0ZXMgaWYgbm90IGRlZmluZWQsIGl0IHdpbGwgYmUgbmV3IERhdGUoKS5nZXRUaW1lem9uZU9mZnNldCgpLiAvL2h0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL0RhdGUvZ2V0VGltZXpvbmVPZmZzZXRcblx0ICovXG5cdHN0YXRpYyBkYXRlVGltZVV0Y1RvTG9jYWxEYXRlVGltZShkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBEYXRlIHtcblx0XHRjb25zdCBzdGlsbFV0YyA9IG1vbWVudC51dGMoZHRVdGMpLnRvRGF0ZSgpO1xuXHRcdHJldHVybiBtb21lbnQoc3RpbGxVdGMpLmxvY2FsKCkudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgZGF0ZVRpbWVVdGNUb0xvY2FNb21lbnQoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogbW9tZW50Lk1vbWVudCB7XG5cdFx0Y29uc3Qgc3RpbGxVdGMgPSBtb21lbnQudXRjKGR0VXRjKTtcblx0XHRyZXR1cm4gc3RpbGxVdGMubG9jYWwoKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRFbmRPZldlZWsoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyKSB7XG5cdFx0cmV0dXJuIG1vbWVudChkdCkuZW5kT2YoJ2lzb1dlZWsnKS50b0RhdGUoKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRTdGFydE9mV2VlayhkdDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gbW9tZW50KGR0KS5zdGFydE9mKCdpc29XZWVrJykudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RW5kT2ZNb250aChkdDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQgfCBudW1iZXIpIHtcblx0XHQvLyAgcmV0dXJuIG5ldyBEYXRlKGR0LmdldEZ1bGxZZWFyKCksIGR0LmdldE1vbnRoKCkgKyAxLCAwLCAyMywgNTksIDU5LCA5OTkpO1xuXHRcdHJldHVybiBtb21lbnQoZHQpLmVuZE9mKCdtb250aCcpLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGdldFN0YXJ0T2ZNb250aChkdDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQgfCBudW1iZXIpIHtcblx0XHRyZXR1cm4gbW9tZW50KGR0KS5zdGFydE9mKCdtb250aCcpLnRvRGF0ZSgpO1xuXHR9XG5cblx0c3RhdGljIGdldERheXNCZXR3ZWVuRGF0ZXMoZHQxOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCwgZHQyOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiB0aGlzLmdldERheXNCZXR3ZWVuKGR0MSwgZHQyKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRFbmRPZkRhdGUoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB7XG5cdFx0cmV0dXJuIGR0ID8gbmV3IERhdGUoZHQuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KSkgOlxuXHRcdFx0bmV3IERhdGUodGhpcy5ub3cuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KSk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0U3RhcnRPZkRhdGUoZHQ6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB7XG5cdFx0cmV0dXJuIG1vbWVudChkdCkuc3RhcnRPZignZGF5JykudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RW5kT2ZUb2RheSgpOiBEYXRlIHtcblx0XHQvL1x0cmV0dXJuIG5ldyBEYXRlKChuZXcgRGF0ZShEYXRlLm5vdygpKSkuc2V0SG91cnMoMjMsIDU5LCA1OSwgOTk5KSk7XG5cdFx0cmV0dXJuIG1vbWVudChEYXRlLm5vdygpKS5lbmRPZignZGF5JykudG9EYXRlKCk7XG5cblx0fVxuXG5cdHN0YXRpYyBnZXRTdGFydE9mVG9kYXkoKTogRGF0ZSB7XG5cdFx0Ly9cdHJldHVybiBuZXcgRGF0ZSgobmV3IERhdGUoRGF0ZS5ub3coKSkpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcblx0XHRyZXR1cm4gbW9tZW50KERhdGUubm93KCkpLnN0YXJ0T2YoJ2RheScpLnRvRGF0ZSgpO1xuXHR9XG5cblx0Ly9pbnNwaXJlZCBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy81NjM0MDYvYWRkLWRheXMtdG8tamF2YXNjcmlwdC1kYXRlXG5cdHN0YXRpYyBhZGREYXlzKGR0OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCwgZGF5czogbnVtYmVyID0gMCkge1xuXHRcdGNvbnN0IGRhdCA9IG1vbWVudChkdCk7XG5cdFx0ZGF0LmFkZChkYXlzLCAnZGF5cycpO1xuXHRcdHJldHVybiBkYXQudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgc3VidHJhY3REYXlzKGR0OiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCwgZGF5czogbnVtYmVyID0gMCkge1xuXHRcdGNvbnN0IGRhdCA9IG1vbWVudChkdCk7XG5cdFx0ZGF0LnN1YnRyYWN0KGRheXMsICdkYXlzJyk7XG5cdFx0cmV0dXJuIGRhdC50b0RhdGUoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBTdGFydCBvZiB0b2RheVxuXHQgKi9cblx0c3RhdGljIGdldCB0b2RheSgpOiBEYXRlIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRTdGFydE9mVG9kYXkoKTtcblx0fVxuXG5cdHN0YXRpYyBnZXQgbm93KCk6IERhdGUge1xuXHRcdHJldHVybiBuZXcgRGF0ZShEYXRlLm5vdygpKTtcblx0fVxuXG5cdHN0YXRpYyBnZXROZXh0NU1pbnV0ZU1hcmsoKTogRGF0ZSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudCgpLnNldCgnc2Vjb25kJywgMCkuc2V0KCdtaWxsaXNlY29uZCcsIDApO1xuXHRcdGNvbnN0IG1pbnV0ZSA9IG0ubWludXRlKCk7XG5cdFx0Y29uc3QgbW9kID0gbWludXRlICUgNTtcblx0XHRpZiAobW9kKSB7XG5cdFx0XHRjb25zdCBkZWx0YSA9IDUgLSBtb2Q7XG5cdFx0XHRyZXR1cm4gbS5hZGQoZGVsdGEsICdtJykudG9EYXRlKCk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG0udG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0WU1EKGQ6IERhdGUpIHtcblx0XHRyZXR1cm4gbW9tZW50KGQpLmZvcm1hdCgnWVlZWU1NREQnKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRETVlXaXRoU2xhc2goZDogRGF0ZSkge1xuXHRcdHJldHVybiBtb21lbnQoZCkuZm9ybWF0KCdERC9NTS9ZWVlZJyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0RE1ZSG1XaXRoU2xhc2goZDogRGF0ZSkge1xuXHRcdHJldHVybiBtb21lbnQoZCkuZm9ybWF0KCdERC9NTS9ZWVlZIEhIOm1tJyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TWNwVGltZShkdDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gbW9tZW50KGR0KS5mb3JtYXQoJ0hIOm1tOnNzLlNTU1onKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBJbiAyNCBob3VyIGZvcm1hdFxuXHQgKiBAcGFyYW0gZHRVdGNcblx0ICovXG5cdHN0YXRpYyBnZXRMb2NhbERNWUhtV2l0aFNsYXNoKGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IGQgPSBEYXRlRnVuYy5kYXRlVGltZVV0Y1RvTG9jYWxEYXRlVGltZShkdFV0Yyk7XG5cdFx0cmV0dXJuIG1vbWVudChkKS5mb3JtYXQoJ0REL01NL1lZWVkgSEg6bW0nKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBPZmZzZXQgbWludXRlcyBjb21wYXJpbmcgd2l0aCB0b2RheVxuXHQgKi9cblx0c3RhdGljIGdldE9mZnNldE1pbnV0ZXMoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkIHwgbnVtYmVyKTogbnVtYmVyIHtcblx0XHRjb25zdCBkbTEgPSBtb21lbnQoZHRVdGMpO1xuXHRcdGNvbnN0IGRtMiA9IG1vbWVudChuZXcgRGF0ZSgpLnNldEhvdXJzKDAsIDAsIDAsIDApKTtcblx0XHRyZXR1cm4gZG0xLmRpZmYoZG0yLCAnbWludXRlcycpO1xuXHR9XG5cblx0c3RhdGljIGdldERheXNCZXR3ZWVuKGQxPzogRGF0ZSB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQsIGQyPzogRGF0ZSB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpOiBudW1iZXIge1xuXHRcdGNvbnN0IGRtMSA9IG1vbWVudChkMSk7XG5cdFx0Y29uc3QgZG0yID0gbW9tZW50KGQyKTtcblx0XHRyZXR1cm4gZG0yLmRpZmYoZG0xLCAnZGF5cycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdldCBob3VyIG9mIHRoZSBkYXRlLiBJZiBEYXRlIGlzIG5vdCBkZWZpbmVkLCB0aGUgaG91ciB3aWxsIGJlIGN1cnJlbnQgaG91ci5cblx0ICogQHBhcmFtIGR0VXRjXG5cdCAqL1xuXHRzdGF0aWMgZ2V0SG91cihkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQgfCBudW1iZXIpOiBudW1iZXIge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoZHRVdGMpO1xuXHRcdHJldHVybiBtLmhvdXJzKCk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TWludXRlKGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IG51bWJlcik6IG51bWJlciB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudChkdFV0Yyk7XG5cdFx0cmV0dXJuIG0ubWludXRlcygpO1xuXHR9XG5cblx0c3RhdGljIGNvbXBvc2VEYXRlVGltZShkdDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIGg6IG51bWJlciA9IDAsIG1pbnV0ZTogbnVtYmVyID0gMCk6IERhdGUge1xuXHRcdGNvbnN0IG10ID0gbW9tZW50KGR0KTtcblx0XHRyZXR1cm4gbmV3IERhdGUobXQudG9EYXRlKCkuc2V0SG91cnMoaCwgbWludXRlLCAwLCAwKSk7XG5cdH1cblxuXHRzdGF0aWMgb2xkZXJUaGFuMjRIb3VycyhkOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoZCk7XG5cdFx0cmV0dXJuIG1vbWVudCgpLmRpZmYobSwgJ2hvdXJzJykgPj0gMjQ7XG5cdH1cblxuXHRzdGF0aWMgb2xkZXJUaGFuMjRIb3Vyc1V0YyhkdFV0YzogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcblx0XHRyZXR1cm4gRGF0ZUZ1bmMuZ2V0SG91ckFnZVV0YyhkdFV0YykgPj0gMjQ7XG5cdH1cblxuXHRzdGF0aWMgb2xkZXJUaGFuSG91cnMoZDogRGF0ZSwgaG91cnM6IG51bWJlcikge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoZCk7XG5cdFx0cmV0dXJuIG1vbWVudCgpLmRpZmYobSwgJ2hvdXJzJykgPj0gaG91cnM7XG5cdH1cblxuXHRzdGF0aWMgb2xkZXJUaGFuSG91cnNVdGMoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkLCBob3VyczogbnVtYmVyKTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuIERhdGVGdW5jLmdldEhvdXJBZ2VVdGMoZHRVdGMpID49IGhvdXJzO1xuXHR9XG5cblx0c3RhdGljIG9sZGVyVGhhbk1pbnV0ZXMoZDogRGF0ZSwgbWludXRlczogbnVtYmVyKSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudChkKTtcblx0XHRyZXR1cm4gbW9tZW50KCkuZGlmZihtLCAnbWludXRlcycpID49IG1pbnV0ZXM7XG5cdH1cblxuXHQvKipcblx0ICogSXQgY291bGQgYmUgMTFQTSB5ZXN0ZXJkYXksIGFuZCAxIEFNIHRvZGF5LiBBY3R1YWxseSBiYXNlZCBvbiBsb2NhbCB0b2RheS5cblx0ICovXG5cdHN0YXRpYyBvbGRlclRoYW4xRGF5KGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuXHRcdHJldHVybiBEYXRlRnVuYy5nZXREYXlBZ2VVdGMoZHRVdGMpID4gMDtcblx0fVxuXG5cdHN0YXRpYyBnZXRIb3VyQWdlKGQ6IERhdGUpIHtcblx0XHRjb25zdCBtID0gbW9tZW50KGQpO1xuXHRcdHJldHVybiBtb21lbnQoKS5kaWZmKG0sICdob3VycycpO1xuXHR9XG5cblx0c3RhdGljIGdldEhvdXJBZ2VVdGMoZHRVdGM6IERhdGUgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudC51dGMoZHRVdGMpO1xuXHRcdHJldHVybiBtb21lbnQudXRjKCkuZGlmZihtLCAnaG91cnMnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb21wYXJlIHV0YyBkYXRlIHdpdGggdXRjIG5vdy5cblx0ICogQHBhcmFtIGR0VXRjXG5cdCAqL1xuXHRzdGF0aWMgZ2V0RGF5QWdlVXRjKGR0VXRjOiBEYXRlIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQudXRjKGR0VXRjKTtcblx0XHRyZXR1cm4gbW9tZW50LnV0YygpLmRpZmYobSwgJ2RheXMnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBIb3cgbWFueSB5ZWFycyBmcm9tIG5vdy5cblx0ICogQHBhcmFtIGQgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0c3RhdGljIGdldEFnZShkOiBEYXRlKSB7XG5cdFx0Y29uc3QgbSA9IG1vbWVudChkKTtcblx0XHRyZXR1cm4gbW9tZW50KCkuZGlmZihtLCAneWVhcnMnKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBZZWFyIG9mIGRhdGUuXG5cdCAqIEBwYXJhbSBkIFxuXHQgKiBAcmV0dXJucyBcblx0ICovXG5cdHN0YXRpYyBnZXRZZWFyKGQ6IERhdGUpIHtcblx0XHRjb25zdCBtID0gbW9tZW50KGQpO1xuXHRcdHJldHVybiBtLnllYXIoKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRVdGNOb3coKTogRGF0ZSB7XG5cdFx0cmV0dXJuIG1vbWVudC51dGMoKS50b0RhdGUoKTtcblx0fVxuXG5cdHN0YXRpYyBhZGRNaW51dGVzKGQ6IERhdGUsIG06IG51bWJlcik6IERhdGUge1xuXHRcdHJldHVybiBtb21lbnQoZCkuYWRkKG0sICdtJykudG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgYWRkTW9udGgoZDogRGF0ZSwgbTogbnVtYmVyKTogRGF0ZSB7XG5cdFx0cmV0dXJuIG1vbWVudChkKS5hZGQobSwgJ00nKS50b0RhdGUoKTtcblx0fVxuXG5cdHN0YXRpYyBnZXREdXJhdGlvbihkMTogRGF0ZSwgZDI6IERhdGUpIHtcblx0XHRjb25zdCBtZDEgPSBtb21lbnQoZDEpO1xuXHRcdGNvbnN0IG1kMiA9IG1vbWVudChkMik7XG5cdFx0cmV0dXJuIG1vbWVudC5kdXJhdGlvbihtZDIuZGlmZihtZDEpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0IG1pbnV0ZXMgZnJvbSBtaWRuaWdodCB0byBISDptbSB0ZXh0XG5cdCAqIEBwYXJhbSBtaW5zXG5cdCAqL1xuXHRzdGF0aWMgZ2V0SE1Gcm9tTWlucyhtaW5zOiBudW1iZXIpOiBzdHJpbmcge1xuXHRcdC8vIGRvIG5vdCBpbmNsdWRlIHRoZSBmaXJzdCB2YWxpZGF0aW9uIGNoZWNrIGlmIHlvdSB3YW50LCBmb3IgZXhhbXBsZSxcblx0XHQvLyBnZXRUaW1lRnJvbU1pbnMoMTUzMCkgdG8gZXF1YWwgZ2V0VGltZUZyb21NaW5zKDkwKSAoaS5lLiBtaW5zIHJvbGxvdmVyKVxuXHRcdGlmIChtaW5zID49IDI0ICogNjAgfHwgbWlucyA8IDApIHtcblx0XHRcdHRocm93IG5ldyBSYW5nZUVycm9yKCdWYWxpZCBpbnB1dCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDAgYW5kIGxlc3MgdGhhbiAxNDQwLicpO1xuXHRcdH1cblx0XHRjb25zdCBoID0gbWlucyAvIDYwIHwgMCxcblx0XHRcdG0gPSBtaW5zICUgNjAgfCAwO1xuXHRcdHJldHVybiBtb21lbnQudXRjKCkuaG91cnMoaCkubWludXRlcyhtKS5mb3JtYXQoJ0hIOm1tJyk7XG5cdH1cblxuXHRzdGF0aWMgZ2V0TWludXRlc1NpbmNlTWlkbmlnaHQoZDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBtID0gbW9tZW50KGQpO1xuXHRcdGNvbnN0IG1pZG5pZ2h0ID0gbW9tZW50KGQpLnN0YXJ0T2YoJ2RheScpOyAvL011dGF0ZXMgdGhlIG9yaWdpbmFsIG1vbWVudCBieSBzZXR0aW5nIGl0IHRvIHRoZSBzdGFydCBvZiBhIHVuaXQgb2YgdGltZS4gU28gSSBoYXZlIGJldHRlciBub3QgdG8gdXNlIG0gd2hpY2ggd2lsIGJlIGNoYW5nZWQgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uXG5cdFx0cmV0dXJuIG0uZGlmZihtaWRuaWdodCwgJ21pbnV0ZXMnKTtcblx0fVxuXG5cdHN0YXRpYyBnZXRNaW51dGVzQmV0d2VlbihzdGFydDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQsIGVuZDogRGF0ZSB8IG51bGwgfCB1bmRlZmluZWQpIHtcblx0XHRjb25zdCBtID0gbW9tZW50KHN0YXJ0KTtcblx0XHRjb25zdCBtMiA9IG1vbWVudChlbmQpO1xuXHRcdHJldHVybiBtMi5kaWZmKG0sICdtaW51dGVzJyk7XG5cdH1cblxuXHQvKipcblx0ICogUGFyc2UganNvbiBzdHJpbmcgd2l0aCBkYXRlIHNlcmlhbGl6ZWQgaW50byBzdHJpbmcsIGFuZCBnZXQgcHJvcGVyIGRhdGUgb2JqZWN0IGJhY2tcblx0ICogQHBhcmFtIHNcblx0ICovXG5cdHN0YXRpYyBkYXRlU2FmZUpzb25QYXJzZShzOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gSlNPTi5wYXJzZShzLCB0aGlzLmRhdGVSZXZpdmVyKTtcblx0fVxuXG5cdHByaXZhdGUgc3RhdGljIGRhdGVSZXZpdmVyKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KSB7XG5cdFx0aWYgKERhdGVGdW5jLmlzU2VyaWFsaXplZERhdGUodmFsdWUpKSB7XG5cdFx0XHRyZXR1cm4gKG5ldyBEYXRlKHZhbHVlKSk7XG5cdFx0fVxuXG5cdFx0Ly8gSWYgaXQncyBub3QgYSBkYXRlLXN0cmluZywgd2Ugd2FudCB0byByZXR1cm4gdGhlIHZhbHVlIGFzLWlzLiBJZiB3ZSBmYWlsIHRvIHJldHVyblxuXHRcdC8vIGEgdmFsdWUsIGl0IHdpbGwgYmUgb21pdHRlZCBmcm9tIHRoZSByZXN1bHRhbnQgZGF0YSBzdHJ1Y3R1cmUuXG5cdFx0cmV0dXJuICh2YWx1ZSk7XG5cblx0fVxuXG5cblx0Ly8gSSBkZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgc3RyaW5nIHRoYXQgbWF0Y2hlcyB0aGUgc2VyaWFsaXplZC1kYXRlIHBhdHRlcm4uXG5cdHByaXZhdGUgc3RhdGljIGlzU2VyaWFsaXplZERhdGUodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuXHRcdC8vIERhdGVzIGFyZSBzZXJpYWxpemVkIGluIFRaIGZvcm1hdCwgZXhhbXBsZTogJzE5ODEtMTItMjBUMDQ6MDA6MTQuMDAwWicuXG5cdFx0Y29uc3QgZGF0ZVBhdHRlcm4gPSAvXlxcZHs0fS1cXGR7Mn0tXFxkezJ9VFxcZHsyfTpcXGR7Mn06XFxkezJ9XFwuXFxkezN9WiQvO1xuXHRcdHJldHVybiAoRGF0ZUZ1bmMuaXNTdHJpbmcodmFsdWUpICYmIGRhdGVQYXR0ZXJuLnRlc3QodmFsdWUpKTtcblx0fVxuXG5cblx0Ly8gSSBkZXRlcm1pbmUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGEgU3RyaW5nLlxuXHRwcml2YXRlIHN0YXRpYyBpc1N0cmluZyh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG5cdFx0cmV0dXJuICh7fS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgU3RyaW5nXScpO1xuXHR9XG5cblx0c3RhdGljIGRhdGVTYWZlUGFyc2Uoczogc3RyaW5nIHwgRGF0ZSkge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQocyk7XG5cdFx0cmV0dXJuIG0udG9EYXRlKCk7XG5cdH1cblxuXHRzdGF0aWMgY29tcG9zZURhdGVXaXRoTWludXRlcyhkOiBEYXRlLCBtaW51dGU6IG51bWJlcik6IERhdGUge1xuXHRcdGNvbnN0IG0gPSBtb21lbnQoZCk7XG5cdFx0Y29uc3QgbWlkbmlnaHQgPSBtb21lbnQoZCkuc3RhcnRPZignZGF5Jyk7IC8vIE11dGF0ZXMgdGhlIG9yaWdpbmFsIG1vbWVudCBieSBzZXR0aW5nIGl0IHRvIHRoZSBzdGFydCBvZiBhIHVuaXQgb2YgdGltZS4gU28gSSBoYXZlIGJldHRlciBub3QgdG8gdXNlIG0gd2hpY2ggd2lsIGJlIGNoYW5nZWQgYnkgY2FsbGluZyB0aGlzIGZ1bmN0aW9uXG5cdFx0bWlkbmlnaHQuYWRkKG1pbnV0ZSwgJ21pbnV0ZXMnKTtcblx0XHRyZXR1cm4gbWlkbmlnaHQudG9EYXRlKCk7XG5cdH1cblxuXHQvKipcblx0ICogU2FmZSBjb21wYXJlIHNpbmNlIGRhdGUgZGF0YSBtYXkgYmUgY29uc2lkZXJlZCBhcyBzdHJpbmcgcmF0aGVyIHRoYW4gZGF0ZS5cblx0ICogQHBhcmFtIGQxXG5cdCAqIEBwYXJhbSBkMlxuXHQgKi9cblx0c3RhdGljIGNvbXBhcmUoZDE6IERhdGUgfCB1bmRlZmluZWQsIGQyOiBEYXRlIHwgdW5kZWZpbmVkKTogbnVtYmVyIHtcblx0XHRpZiAoIWQxICYmICFkMikge1xuXHRcdFx0cmV0dXJuIDA7XG5cdFx0fVxuXG5cdFx0aWYgKCFkMSkge1xuXHRcdFx0cmV0dXJuIC1OYU5cblx0XHR9XG5cblx0XHRpZiAoIWQyKSB7XG5cdFx0XHRyZXR1cm4gTmFOO1xuXHRcdH1cblxuXHRcdGNvbnN0IGRkMSA9IChuZXcgRGF0ZShkMSkpLnZhbHVlT2YoKTtcblx0XHRjb25zdCBkZDIgPSAobmV3IERhdGUoZDIpKS52YWx1ZU9mKCk7XG5cdFx0cmV0dXJuIGRkMSAtIGRkMjtcblx0fVxufVxuXG4iXX0=
@@ -42,4 +42,4 @@ export class HtmlPrintFunc {
42
42
  HtmlPrintFunc.print(imageTags);
43
43
  }
44
44
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbFByaW50RnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvaHRtbFByaW50RnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUN6Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFnQixFQUFFLE1BQWM7UUFDbkQsSUFBSSxNQUFNLEVBQUU7WUFDWCxNQUFNLFdBQVcsR0FBRzs7K0NBRXdCLE1BQU07dUNBQ2QsUUFBUSxnQkFBZ0IsQ0FBQztZQUU3RCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztZQUNqRSxLQUFLLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3ZCLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRW5DLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDeEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQWdCO1FBQzVCLElBQUksTUFBTSxFQUFFO1lBQ1gsTUFBTSxXQUFXLEdBQUc7O3VDQUVnQixRQUFRLGdCQUFnQixDQUFDO1lBRTdELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pFLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFbkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUN4QjtRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBVztRQUM1QixNQUFNLFNBQVMsR0FBRyxhQUFhLEdBQUcsMEJBQTBCLENBQUM7UUFDN0QsYUFBYSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNoQyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSHRtbFByaW50RnVuYyB7XG5cdC8qKlxuXHQgKiBQcmludCB3aXRoIENTUyBmb3IgaW50ZXJuYWwgcmVwb3J0c1xuXHQgKiBAcGFyYW0gaHRtbFRhZ3Ncblx0ICogQHBhcmFtIGNzc1VybFxuXHQgKi9cblx0c3RhdGljIHByaW50V2l0aENTUyhodG1sVGFnczogc3RyaW5nLCBjc3NVcmw6IHN0cmluZykge1xuXHRcdGlmICh3aW5kb3cpIHtcblx0XHRcdGNvbnN0IGh0bWxUb1ByaW50ID0gYDxodG1sPjxoZWFkPlxuPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLCBzaHJpbmstdG8tZml0PW5vXCIvPlxuPGxpbmsgcmVsPVwic3R5bGVzaGVldFwiIHR5cGU9XCJ0ZXh0L2Nzc1wiIGhyZWY9XCIke2Nzc1VybH1cIiBtZWRpYT1cInNjcmVlbixwcmludFwiLz5cbjwvaGVhZD48Ym9keSBvbmxvYWQ9XCJ3aW5kb3cucHJpbnQoKVwiPiR7aHRtbFRhZ3N9PC9ib2R5PjwvaHRtbD5gO1xuXG5cdFx0XHRjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJywgJ3dpZHRoPTEwMjQsaGVpZ2h0PTc2OCcpO1xuXHRcdFx0cG9wdXA/LmRvY3VtZW50Lm9wZW4oKTtcblx0XHRcdHBvcHVwPy5kb2N1bWVudC53cml0ZShodG1sVG9QcmludCk7XG5cblx0XHRcdHBvcHVwPy5kb2N1bWVudC5jbG9zZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcmludCBmb3IgZXh0ZXJuYWwgZG9jdW1lbnRzLlxuXHQgKiBAcGFyYW0gaHRtbFRhZ3Ncblx0ICovXG5cdHN0YXRpYyBwcmludChodG1sVGFnczogc3RyaW5nKSB7XG5cdFx0aWYgKHdpbmRvdykge1xuXHRcdFx0Y29uc3QgaHRtbFRvUHJpbnQgPSBgPGh0bWw+PGhlYWQ+XG48bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm9cIi8+XG48L2hlYWQ+PGJvZHkgb25sb2FkPVwid2luZG93LnByaW50KClcIj4ke2h0bWxUYWdzfTwvYm9keT48L2h0bWw+YDtcblxuXHRcdFx0Y29uc3QgcG9wdXAgPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycsICd3aWR0aD0xMDI0LGhlaWdodD03NjgnKTtcblx0XHRcdHBvcHVwPy5kb2N1bWVudC5vcGVuKCk7XG5cdFx0XHRwb3B1cD8uZG9jdW1lbnQud3JpdGUoaHRtbFRvUHJpbnQpO1xuXG5cdFx0XHRwb3B1cD8uZG9jdW1lbnQuY2xvc2UoKTtcblx0XHR9XG5cdFx0cmV0dXJuIHRydWU7XG5cdH1cblxuXHQvKipcblx0ICogUHJpbnQgaW1hZ2UgdXJsIHRocm91Z2ggaHRtbCBpbWcuXG5cdCAqIEBwYXJhbSB1cmwgXG5cdCAqL1xuXHRzdGF0aWMgcHJpbnRJbWFnZSh1cmw6IHN0cmluZykge1xuXHRcdGNvbnN0IGltYWdlVGFncyA9IGA8aW1nIHNyYz1cIiR7dXJsfVwiIGFsdD1cIkltYWdlIGZyb20gVVJMXCIvPmA7XG5cdFx0SHRtbFByaW50RnVuYy5wcmludChpbWFnZVRhZ3MpO1xuXHR9XG59XG4iXX0=
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHRtbFByaW50RnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvaHRtbFByaW50RnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sYUFBYTtJQUN6Qjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFnQixFQUFFLE1BQWM7UUFDbkQsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sV0FBVyxHQUFHOzsrQ0FFd0IsTUFBTTt1Q0FDZCxRQUFRLGdCQUFnQixDQUFDO1lBRTdELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pFLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFbkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFnQjtRQUM1QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxXQUFXLEdBQUc7O3VDQUVnQixRQUFRLGdCQUFnQixDQUFDO1lBRTdELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSx1QkFBdUIsQ0FBQyxDQUFDO1lBQ2pFLEtBQUssRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdkIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFbkMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFXO1FBQzVCLE1BQU0sU0FBUyxHQUFHLGFBQWEsR0FBRywwQkFBMEIsQ0FBQztRQUM3RCxhQUFhLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7Q0FDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBIdG1sUHJpbnRGdW5jIHtcblx0LyoqXG5cdCAqIFByaW50IHdpdGggQ1NTIGZvciBpbnRlcm5hbCByZXBvcnRzXG5cdCAqIEBwYXJhbSBodG1sVGFnc1xuXHQgKiBAcGFyYW0gY3NzVXJsXG5cdCAqL1xuXHRzdGF0aWMgcHJpbnRXaXRoQ1NTKGh0bWxUYWdzOiBzdHJpbmcsIGNzc1VybDogc3RyaW5nKSB7XG5cdFx0aWYgKHdpbmRvdykge1xuXHRcdFx0Y29uc3QgaHRtbFRvUHJpbnQgPSBgPGh0bWw+PGhlYWQ+XG48bWV0YSBuYW1lPVwidmlld3BvcnRcIiBjb250ZW50PVwid2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm9cIi8+XG48bGluayByZWw9XCJzdHlsZXNoZWV0XCIgdHlwZT1cInRleHQvY3NzXCIgaHJlZj1cIiR7Y3NzVXJsfVwiIG1lZGlhPVwic2NyZWVuLHByaW50XCIvPlxuPC9oZWFkPjxib2R5IG9ubG9hZD1cIndpbmRvdy5wcmludCgpXCI+JHtodG1sVGFnc308L2JvZHk+PC9odG1sPmA7XG5cblx0XHRcdGNvbnN0IHBvcHVwID0gd2luZG93Lm9wZW4oJycsICdfYmxhbmsnLCAnd2lkdGg9MTAyNCxoZWlnaHQ9NzY4Jyk7XG5cdFx0XHRwb3B1cD8uZG9jdW1lbnQub3BlbigpO1xuXHRcdFx0cG9wdXA/LmRvY3VtZW50LndyaXRlKGh0bWxUb1ByaW50KTtcblxuXHRcdFx0cG9wdXA/LmRvY3VtZW50LmNsb3NlKCk7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9XG5cblx0LyoqXG5cdCAqIFByaW50IGZvciBleHRlcm5hbCBkb2N1bWVudHMuXG5cdCAqIEBwYXJhbSBodG1sVGFnc1xuXHQgKi9cblx0c3RhdGljIHByaW50KGh0bWxUYWdzOiBzdHJpbmcpIHtcblx0XHRpZiAod2luZG93KSB7XG5cdFx0XHRjb25zdCBodG1sVG9QcmludCA9IGA8aHRtbD48aGVhZD5cbjxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgc2hyaW5rLXRvLWZpdD1ub1wiLz5cbjwvaGVhZD48Ym9keSBvbmxvYWQ9XCJ3aW5kb3cucHJpbnQoKVwiPiR7aHRtbFRhZ3N9PC9ib2R5PjwvaHRtbD5gO1xuXG5cdFx0XHRjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJywgJ3dpZHRoPTEwMjQsaGVpZ2h0PTc2OCcpO1xuXHRcdFx0cG9wdXA/LmRvY3VtZW50Lm9wZW4oKTtcblx0XHRcdHBvcHVwPy5kb2N1bWVudC53cml0ZShodG1sVG9QcmludCk7XG5cblx0XHRcdHBvcHVwPy5kb2N1bWVudC5jbG9zZSgpO1xuXHRcdH1cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fVxuXG5cdC8qKlxuXHQgKiBQcmludCBpbWFnZSB1cmwgdGhyb3VnaCBodG1sIGltZy5cblx0ICogQHBhcmFtIHVybCBcblx0ICovXG5cdHN0YXRpYyBwcmludEltYWdlKHVybDogc3RyaW5nKSB7XG5cdFx0Y29uc3QgaW1hZ2VUYWdzID0gYDxpbWcgc3JjPVwiJHt1cmx9XCIgYWx0PVwiSW1hZ2UgZnJvbSBVUkxcIi8+YDtcblx0XHRIdG1sUHJpbnRGdW5jLnByaW50KGltYWdlVGFncyk7XG5cdH1cbn1cbiJdfQ==
@@ -18,4 +18,4 @@ export class JavaScriptFunc {
18
18
  });
19
19
  }
20
20
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdEZ1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2phdmFzY3JpcHRGdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQzFCOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLElBQWE7UUFDekQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELElBQUksSUFBSSxFQUFDO2dCQUNSLGFBQWEsQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDO2FBQ3hCO1lBRUQsYUFBYSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7WUFDOUIsYUFBYSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUM7WUFDL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgSmF2YVNjcmlwdEZ1bmMge1xyXG5cdC8qKlxyXG5cdCAqIFNvbWUgYnVzaW5lc3MgZnVuY3Rpb25zIGRlcGVuZCBvbiBleHRlcm5hbCBKYXZhU2NyaXB0IGxpYnJhcmllcy4gTGF6eSBsb2FkaW5nIG9mIHJlc3BlY3RpdmUgYnVzaW5lc3MgbW9kdWxlcyBpcyBnb29kLCBcclxuXHQgKiBhbmQgdGhpcyBmdW5jdGlvbiBzdXBwb3J0cyBsYXp5IGxvYWRpbmcgb2YgSlMgbGlicmFyaWVzLlxyXG5cdCAqIEBwYXJhbSBzY3JpcHRVcmwgXHJcblx0ICogQHBhcmFtIHR5cGUgdGhpbmdzIGxpa2UgbW9kdWxlLlxyXG5cdCAqIEByZXR1cm5zIFByb21pc2UgZm9yIHN1YnNlcXVlbnQgSlMgZnVuY3Rpb24gY2FsbHMuXHJcblx0ICovXHJcblx0c3RhdGljIGxvYWRFeHRlcm5hbFNjcmlwdChzY3JpcHRVcmw6IHN0cmluZywgdHlwZT86IHN0cmluZykge1xyXG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0Y29uc3Qgc2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xyXG5cdFx0XHRpZiAodHlwZSl7XHJcblx0XHRcdFx0c2NyaXB0RWxlbWVudC50eXBlPXR5cGU7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHNjcmlwdEVsZW1lbnQuc3JjID0gc2NyaXB0VXJsO1xyXG5cdFx0XHRzY3JpcHRFbGVtZW50Lm9ubG9hZCA9IHJlc29sdmU7XHJcblx0XHRcdGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0RWxlbWVudCk7XHJcblx0XHR9KTtcclxuXHR9XHJcbn1cclxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiamF2YXNjcmlwdEZ1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2phdmFzY3JpcHRGdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxjQUFjO0lBQzFCOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFpQixFQUFFLElBQWE7UUFDekQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN0QyxNQUFNLGFBQWEsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3ZELElBQUksSUFBSSxFQUFDLENBQUM7Z0JBQ1QsYUFBYSxDQUFDLElBQUksR0FBQyxJQUFJLENBQUM7WUFDekIsQ0FBQztZQUVELGFBQWEsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDO1lBQzlCLGFBQWEsQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDO1lBQy9CLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIEphdmFTY3JpcHRGdW5jIHtcclxuXHQvKipcclxuXHQgKiBTb21lIGJ1c2luZXNzIGZ1bmN0aW9ucyBkZXBlbmQgb24gZXh0ZXJuYWwgSmF2YVNjcmlwdCBsaWJyYXJpZXMuIExhenkgbG9hZGluZyBvZiByZXNwZWN0aXZlIGJ1c2luZXNzIG1vZHVsZXMgaXMgZ29vZCwgXHJcblx0ICogYW5kIHRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgbGF6eSBsb2FkaW5nIG9mIEpTIGxpYnJhcmllcy5cclxuXHQgKiBAcGFyYW0gc2NyaXB0VXJsIFxyXG5cdCAqIEBwYXJhbSB0eXBlIHRoaW5ncyBsaWtlIG1vZHVsZS5cclxuXHQgKiBAcmV0dXJucyBQcm9taXNlIGZvciBzdWJzZXF1ZW50IEpTIGZ1bmN0aW9uIGNhbGxzLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBsb2FkRXh0ZXJuYWxTY3JpcHQoc2NyaXB0VXJsOiBzdHJpbmcsIHR5cGU/OiBzdHJpbmcpIHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdGNvbnN0IHNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcclxuXHRcdFx0aWYgKHR5cGUpe1xyXG5cdFx0XHRcdHNjcmlwdEVsZW1lbnQudHlwZT10eXBlO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRzY3JpcHRFbGVtZW50LnNyYyA9IHNjcmlwdFVybDtcclxuXHRcdFx0c2NyaXB0RWxlbWVudC5vbmxvYWQgPSByZXNvbHZlO1xyXG5cdFx0XHRkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdEVsZW1lbnQpO1xyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiJdfQ==
@@ -64,4 +64,4 @@ export class JsonFunc {
64
64
  }
65
65
  }
66
66
  }
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkZ1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2pzb25GdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUNwQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUksS0FBZSxFQUFFLFlBQW9CO1FBQ3RELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFTLEdBQVEsRUFBRSxHQUFRO1lBQzlDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNkLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7YUFDZDtZQUNELEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkIsT0FBTyxHQUFHLENBQUM7UUFDWixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLFdBQVcsQ0FBSSxLQUFlLEVBQUUsWUFBb0I7UUFDMUQsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVMsR0FBUSxFQUFFLEdBQVE7WUFDOUMsTUFBTSxHQUFHLEdBQUcsUUFBUSxDQUFDLDRCQUE0QixDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3JFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQzthQUNkO1lBQ0QsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixPQUFPLEdBQUcsQ0FBQztRQUNaLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLHVCQUF1QixDQUFDLEdBQVE7UUFDdEMsS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQzNCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2Q7aUJBQU0sSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtnQkFDL0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0Q7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQVE7UUFDL0IsS0FBSyxNQUFNLENBQUMsSUFBSSxHQUFHLEVBQUU7WUFDcEIsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFO2dCQUNwQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNkO1NBQ0Q7SUFDRixDQUFDO0NBRUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlRnVuYyB9IGZyb20gJy4vZGF0ZUZ1bmMnO1xuXG4vKipcbiAqIEJhc2ljIEpTT04gZnVuY3Rpb25zXG4gKi9cbmV4cG9ydCBjbGFzcyBKc29uRnVuYyB7XG5cdC8qKlxuXHQgKiBcblx0ICogQHBhcmFtIGFycmF5IEdyb3VwIGJ5IGEgcHJvcGVydHkgb2YgYXJyYXkgZWxlbWVudC5cblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZSBcblx0ICogQHJldHVybnMgXG5cdCAqL1xuXHRzdGF0aWMgZ3JvdXBCeTxUPihhcnJheTogQXJyYXk8VD4sIHByb3BlcnR5TmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGFycmF5LnJlZHVjZShmdW5jdGlvbihhY2M6IGFueSwgb2JqOiBhbnkpIHtcblx0XHRcdGNvbnN0IGtleSA9IG9ialtwcm9wZXJ0eU5hbWVdO1xuXHRcdFx0aWYgKCFhY2Nba2V5XSkge1xuXHRcdFx0XHRhY2Nba2V5XSA9IFtdO1xuXHRcdFx0fVxuXHRcdFx0YWNjW2tleV0ucHVzaChvYmopO1xuXHRcdFx0cmV0dXJuIGFjYztcblx0XHR9LCB7fSk7XG5cdH1cblxuXHQvKipcblx0ICogR3JvdXAgYnkgYSBkYXRlIHByb3BlcnR5LiBUaGUga2V5IGlzIGFsd2F5cyBvZiBzdHJpbmcgdHlwZSBhbmQgcmVwcmVzZW50aW5nIG1pbGxpc2Vjb25kcy4gXG5cdCAqIFRoZSBjbGllbnQgc2hvdWxkIGNvbnZlcnQgdGhlIHN0cmluZyB0byBudW1iZXIuXG5cdCAqIEFuZ3VsYXIgZGF0ZSBwaXBlIGNvdWxkIGFjdHVhbGx5IGNvbnN1bWUgc3VjaCBzdHJpbmcgd2l0aG91dCBleHBsaWNpdGx5IGNvbnZlcnRpbmcgdG8gbnVtYmVyLlxuXHQgKiBAcGFyYW0gYXJyYXlcblx0ICogQHBhcmFtIHByb3BlcnR5TmFtZVxuXHQgKi9cblx0c3RhdGljIGdyb3VwQnlEYXRlPFQ+KGFycmF5OiBBcnJheTxUPiwgcHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcblx0XHRyZXR1cm4gYXJyYXkucmVkdWNlKGZ1bmN0aW9uKGFjYzogYW55LCBvYmo6IGFueSkge1xuXHRcdFx0Y29uc3Qga2V5ID0gRGF0ZUZ1bmMuZGF0ZVRpbWVVdGNUb0xvY2FsRGF0ZU51bWJlcihvYmpbcHJvcGVydHlOYW1lXSk7XG5cdFx0XHRpZiAoIWFjY1trZXldKSB7XG5cdFx0XHRcdGFjY1trZXldID0gW107XG5cdFx0XHR9XG5cdFx0XHRhY2Nba2V5XS5wdXNoKG9iaik7XG5cdFx0XHRyZXR1cm4gYWNjO1xuXHRcdH0sIHt9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZW1vdmUgbnVsbCBvciBlbXB0eSBmaWVsZHMgaW5jbHVkaW5nIHRob3NlIGluIG5lc3RlZCBvYmplY3RzLlxuXHQgKiBUaGlzIGlzIHVzZWZ1bCBmb3IgcmVkdWNpbmcgcGF5bG9hZCBvZiBBSkFYIHNlcmlhbGl6YXRpb24uXG5cdCAqIEBwYXJhbSBvYmogXG5cdCAqL1xuXHRzdGF0aWMgcmVtb3ZlTnVsbE9yRW1wdHlGaWVsZHMob2JqOiBhbnkpIHtcblx0XHRmb3IgKGNvbnN0IGYgaW4gb2JqKSB7XG5cdFx0XHRsZXQgcCA9IG9ialtmXTtcblx0XHRcdGlmIChwID09PSBudWxsIHx8IHAgPT09ICcnKSB7XG5cdFx0XHRcdGRlbGV0ZSBvYmpbZl07XG5cdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwID09PSAnb2JqZWN0JyAmJiBwICE9PSBudWxsKSB7XG5cdFx0XHRcdHRoaXMucmVtb3ZlTnVsbE9yRW1wdHlGaWVsZHMocCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIFxuXHQgKiBAcGFyYW0gb2JqIFJlbW92ZSBudWxsIGZpZWxkcyBvZiBvYmplY3QgYXQgb25seSB0aGUgMXN0IGxldmVsLlxuXHQgKi9cblx0c3RhdGljIHJlbW92ZU51bGxGaWVsZHMob2JqOiBhbnkpIHtcblx0XHRmb3IgKGNvbnN0IGYgaW4gb2JqKSB7XG5cdFx0XHRpZiAob2JqW2ZdID09PSBudWxsKSB7XG5cdFx0XHRcdGRlbGV0ZSBvYmpbZl07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cbn1cbiJdfQ==
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNvbkZ1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL2pzb25GdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sUUFBUTtJQUNwQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQUksS0FBZSxFQUFFLFlBQW9CO1FBQ3RELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFTLEdBQVEsRUFBRSxHQUFRO1lBQzlDLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNmLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxXQUFXLENBQUksS0FBZSxFQUFFLFlBQW9CO1FBQzFELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFTLEdBQVEsRUFBRSxHQUFRO1lBQzlDLE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUNyRSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2YsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNmLENBQUM7WUFDRCxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLE9BQU8sR0FBRyxDQUFDO1FBQ1osQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsdUJBQXVCLENBQUMsR0FBUTtRQUN0QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7Z0JBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2YsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDO1FBQ0YsQ0FBQztJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBUTtRQUMvQixLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUNyQixPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLENBQUM7UUFDRixDQUFDO0lBQ0YsQ0FBQztDQUVEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0ZUZ1bmMgfSBmcm9tICcuL2RhdGVGdW5jJztcblxuLyoqXG4gKiBCYXNpYyBKU09OIGZ1bmN0aW9uc1xuICovXG5leHBvcnQgY2xhc3MgSnNvbkZ1bmMge1xuXHQvKipcblx0ICogXG5cdCAqIEBwYXJhbSBhcnJheSBHcm91cCBieSBhIHByb3BlcnR5IG9mIGFycmF5IGVsZW1lbnQuXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0c3RhdGljIGdyb3VwQnk8VD4oYXJyYXk6IEFycmF5PFQ+LCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xuXHRcdHJldHVybiBhcnJheS5yZWR1Y2UoZnVuY3Rpb24oYWNjOiBhbnksIG9iajogYW55KSB7XG5cdFx0XHRjb25zdCBrZXkgPSBvYmpbcHJvcGVydHlOYW1lXTtcblx0XHRcdGlmICghYWNjW2tleV0pIHtcblx0XHRcdFx0YWNjW2tleV0gPSBbXTtcblx0XHRcdH1cblx0XHRcdGFjY1trZXldLnB1c2gob2JqKTtcblx0XHRcdHJldHVybiBhY2M7XG5cdFx0fSwge30pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEdyb3VwIGJ5IGEgZGF0ZSBwcm9wZXJ0eS4gVGhlIGtleSBpcyBhbHdheXMgb2Ygc3RyaW5nIHR5cGUgYW5kIHJlcHJlc2VudGluZyBtaWxsaXNlY29uZHMuIFxuXHQgKiBUaGUgY2xpZW50IHNob3VsZCBjb252ZXJ0IHRoZSBzdHJpbmcgdG8gbnVtYmVyLlxuXHQgKiBBbmd1bGFyIGRhdGUgcGlwZSBjb3VsZCBhY3R1YWxseSBjb25zdW1lIHN1Y2ggc3RyaW5nIHdpdGhvdXQgZXhwbGljaXRseSBjb252ZXJ0aW5nIHRvIG51bWJlci5cblx0ICogQHBhcmFtIGFycmF5XG5cdCAqIEBwYXJhbSBwcm9wZXJ0eU5hbWVcblx0ICovXG5cdHN0YXRpYyBncm91cEJ5RGF0ZTxUPihhcnJheTogQXJyYXk8VD4sIHByb3BlcnR5TmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIGFycmF5LnJlZHVjZShmdW5jdGlvbihhY2M6IGFueSwgb2JqOiBhbnkpIHtcblx0XHRcdGNvbnN0IGtleSA9IERhdGVGdW5jLmRhdGVUaW1lVXRjVG9Mb2NhbERhdGVOdW1iZXIob2JqW3Byb3BlcnR5TmFtZV0pO1xuXHRcdFx0aWYgKCFhY2Nba2V5XSkge1xuXHRcdFx0XHRhY2Nba2V5XSA9IFtdO1xuXHRcdFx0fVxuXHRcdFx0YWNjW2tleV0ucHVzaChvYmopO1xuXHRcdFx0cmV0dXJuIGFjYztcblx0XHR9LCB7fSk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIG51bGwgb3IgZW1wdHkgZmllbGRzIGluY2x1ZGluZyB0aG9zZSBpbiBuZXN0ZWQgb2JqZWN0cy5cblx0ICogVGhpcyBpcyB1c2VmdWwgZm9yIHJlZHVjaW5nIHBheWxvYWQgb2YgQUpBWCBzZXJpYWxpemF0aW9uLlxuXHQgKiBAcGFyYW0gb2JqIFxuXHQgKi9cblx0c3RhdGljIHJlbW92ZU51bGxPckVtcHR5RmllbGRzKG9iajogYW55KSB7XG5cdFx0Zm9yIChjb25zdCBmIGluIG9iaikge1xuXHRcdFx0bGV0IHAgPSBvYmpbZl07XG5cdFx0XHRpZiAocCA9PT0gbnVsbCB8fCBwID09PSAnJykge1xuXHRcdFx0XHRkZWxldGUgb2JqW2ZdO1xuXHRcdFx0fSBlbHNlIGlmICh0eXBlb2YgcCA9PT0gJ29iamVjdCcgJiYgcCAhPT0gbnVsbCkge1xuXHRcdFx0XHR0aGlzLnJlbW92ZU51bGxPckVtcHR5RmllbGRzKHApO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdC8qKlxuXHQgKiBcblx0ICogQHBhcmFtIG9iaiBSZW1vdmUgbnVsbCBmaWVsZHMgb2Ygb2JqZWN0IGF0IG9ubHkgdGhlIDFzdCBsZXZlbC5cblx0ICovXG5cdHN0YXRpYyByZW1vdmVOdWxsRmllbGRzKG9iajogYW55KSB7XG5cdFx0Zm9yIChjb25zdCBmIGluIG9iaikge1xuXHRcdFx0aWYgKG9ialtmXSA9PT0gbnVsbCkge1xuXHRcdFx0XHRkZWxldGUgb2JqW2ZdO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG59XG4iXX0=
@@ -70,10 +70,10 @@ export class StringAusFunc {
70
70
  return null;
71
71
  }
72
72
  const states = ['N', 'V', 'Q', 'S', 'W', 'T'];
73
- const warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW',
74
- 'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL',
75
- 'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A',
76
- 'N', 'NX', 'NSW', 'NSM',
73
+ const warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW', //Australian Forces
74
+ 'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL', //British Administration Group
75
+ 'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A', //Other Overseas Forces
76
+ 'N', 'NX', 'NSW', 'NSM', //New Zealand Administration Group
77
77
  'BUR', 'CNK', 'CNS', 'FIJ', 'GHA', 'HKS', 'IND', 'KYA', 'MAU', 'MLS', 'MTX', 'MWI', 'NK', 'NGR', 'NRD', 'NSS', 'PK']; //British Commonwealth Countries - SP Eligibility
78
78
  if (!states.includes(dva.charAt(0))) {
79
79
  return { code: 1, message: 'State incorrect.' };
@@ -197,4 +197,4 @@ export class StringAusFunc {
197
197
  };
198
198
  }
199
199
  }
200
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nQXVzRnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvc3RyaW5nQXVzRnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBRXpCLDBIQUEwSDtJQUNsSCxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekQsTUFBTSxDQUFDLGFBQWEsR0FBYSxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7SUFFeEU7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUE0QjtRQUNuRCxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFO1lBQ3pCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFeEMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDYixPQUFPO29CQUNOLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNDQUFzQztpQkFDeEQsQ0FBQzthQUNGO1lBRUQsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUV6QyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDWixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDeEMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzFDO1lBRUQsMkRBQTJEO1lBQzNELE1BQU0sT0FBTyxHQUFHLEdBQUcsR0FBRyxFQUFFLEtBQUssUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN0RCxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNiLE9BQU87b0JBQ04sSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsd0JBQXdCO2lCQUMxQyxDQUFDO2FBQ0Y7U0FDRDthQUFNO1lBQ04sT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLENBQUM7U0FDcEQ7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsOEJBQThCLENBQUMsY0FBeUM7UUFDOUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNwQixPQUFPLElBQUksQ0FBQztTQUNaO1FBRUQsSUFBSSxDQUFDLG1EQUFtRCxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUM5RSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztTQUNwRTtRQUVELE1BQU0sc0JBQXNCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaE0sTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEYsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRXZDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hGLE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUVuQyxNQUFNLE1BQU0sR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVB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SyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN2RSxNQUFNLFNBQVMsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLFNBQVMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUVELE9BQU87WUFDTixJQUFJLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSx3QkFBd0I7U0FDakMsQ0FBQztJQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0cmluZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gQXVzdHJhbGlhXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHJpbmdBdXNGdW5jIHtcblxuXHQvL3RoYW5rcyB0byBodHRwczovL2dpdGh1Yi5jb20vc2lkb3JhcmVzL2F1c3RyYWxpYW4tYnVzaW5lc3MtbnVtYmVyL2Jsb2IvMDU5MTQ3NWY1OTc4ZmQxMjJiNDcyZWRjZGM3ZWZlNmQ5NmQ1NmYyNi9pbmRleC5qc1xuXHRwcml2YXRlIHN0YXRpYyBhY25XZWlnaHRzID0gWzgsIDcsIDYsIDUsIDQsIDMsIDIsIDFdO1xuXHRwcml2YXRlIHN0YXRpYyB3ZWlnaHRzID0gWzEwLCAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1LCAxNywgMTldO1xuXG5cdHByaXZhdGUgc3RhdGljIHN1Z2dlc3RMb29rdXA6IG51bWJlcltdID0gU3RyaW5nQXVzRnVuYy5nZW5lcmF0ZUxvb2t1cCgpO1xuXG5cdC8qKlxuXHQgKiBWYWxpZGF0ZSBtZWRpY2FyZSBudW1iZXJcblx0ICogQHBhcmFtIG5cblx0ICogQHJldHVybnMgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlXG5cdCAqL1xuXHRzdGF0aWMgdmFsaWRhdGVNZWRpY2FyZShuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogeyBjb2RlOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbCB7XG5cdFx0aWYgKCFuKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRpZiAobiAmJiBuLmxlbmd0aCA9PT0gMTApIHtcblx0XHRcdGNvbnN0IG1hdGNoZXMgPSBuLm1hdGNoKC9eKFxcZHs4fSkoXFxkKS8pO1xuXG5cdFx0XHRpZiAoIW1hdGNoZXMpIHtcblx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRjb2RlOiAyLCBtZXNzYWdlOiAnTWVkaWNhcmUgbnVtYmVyIHNob3VsZCBiZSBhbGwgZGlnaXQuJ1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBiYXNlID0gbWF0Y2hlc1sxXTtcblx0XHRcdGNvbnN0IGNoZWNrRGlnaXQgPSBtYXRjaGVzWzJdO1xuXHRcdFx0Y29uc3Qgd2VpZ2h0cyA9IFsxLCAzLCA3LCA5LCAxLCAzLCA3LCA5XTtcblxuXHRcdFx0bGV0IHN1bSA9IDA7XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHdlaWdodHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0c3VtICs9IHBhcnNlSW50KGJhc2VbaV0sIDEwKSAqIHdlaWdodHNbaV07XG5cdFx0XHR9XG5cblx0XHRcdC8vY29uc29sZS5kZWJ1Zyhgc3VtOiAke3N1bX0gIGNoZWNrRGlnaXRzOiAke2NoZWNrRGlnaXR9YCk7XG5cdFx0XHRjb25zdCBpc1ZhbGlkID0gc3VtICUgMTAgPT09IHBhcnNlSW50KGNoZWNrRGlnaXQsIDEwKTtcblx0XHRcdGlmICghaXNWYWxpZCkge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGNvZGU6IDMsIG1lc3NhZ2U6ICdDaGVja3N1bSBpcyBpbmNvcnJlY3QuJ1xuXHRcdFx0XHR9O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4geyBjb2RlOiAxLCBtZXNzYWdlOiAnTGVuZ3RoIHNob3VsZCBiZSAxMC4nIH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRzdGF0aWMgdmFsaWRhdGVNZWRpY2FyZVByb3ZpZGVyTnVtYmVyKHByb3ZpZGVyTnVtYmVyOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogeyBjb2RlOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbCB7XG5cdFx0aWYgKCFwcm92aWRlck51bWJlcikge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0aWYgKCEvXlswLTldezZ9WzAtOUFCQ0RFRkdISktMTU5QUVJUVVZXWFldW0FCRkhKS0xUV1hZXS8udGVzdChwcm92aWRlck51bWJlcikpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdOb3QgbWF0Y2hpbmcgcHJvdmlkZXIgbnVtYmVyIGZvcm1hdC4nIH07XG5cdFx0fVxuXG5cdFx0Y29uc3QgcHJhY3RpY2VMb2NhdGlvblZhbHVlcyA9IFsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOScsICdBJywgJ0InLCAnQycsICdEJywgJ0UnLCAnRicsICdHJywgJ0gnLCAnSicsICdLJywgJ0wnLCAnTScsICdOJywgJ1AnLCAnUScsICdSJywgJ1QnLCAnVScsICdWJywgJ1cnLCAnWCcsICdZJ107XG5cdFx0Y29uc3QgcmVtYWluZGVyVmFsdWVzID0gWydZJywgJ1gnLCAnVycsICdUJywgJ0wnLCAnSycsICdKJywgJ0gnLCAnRicsICdCJywgJ0EnXTtcblx0XHRjb25zdCBzdGVtV2VpZ2h0cyA9IFszLCA1LCA4LCA0LCAyLCAxXTtcblxuXHRcdGNvbnN0IHN0ZW1OdW1iZXJzID0gcHJvdmlkZXJOdW1iZXIuc3Vic3RyKDAsIDYpLnNwbGl0KCcnKS5tYXAoKGNoYXIpID0+IHBhcnNlSW50KGNoYXIpKTtcblx0XHRjb25zdCBwcmFjdGljZUxvYyA9IHByYWN0aWNlTG9jYXRpb25WYWx1ZXMuZmluZEluZGV4KChlKSA9PiBlID09PSBwcm92aWRlck51bWJlcls2XSk7XG5cdFx0Y29uc3QgY2hlY2tzdW0gPSBwcm92aWRlck51bWJlcls3XTtcblxuXHRcdGNvbnN0IHppcHBlZCA9IHN0ZW1XZWlnaHRzLm1hcCgoeCwgaSkgPT4gW3gsIHN0ZW1OdW1iZXJzW2ldXSk7XG5cdFx0Y29uc3Qgc3VtV2VpZ2h0cyA9IHppcHBlZC5tYXAoKHkpID0+IHlbMV0gKiB5WzBdKS5yZWR1Y2UoKHRvdGFsLCBudW0pID0+IHRvdGFsICsgbnVtKTtcblx0XHRjb25zdCByZW1haW5kZXIgPSAoc3VtV2VpZ2h0cyArIHByYWN0aWNlTG9jICogNikgJSAxMTtcblxuXHRcdGNvbnN0IHJlc3VsdCA9IHJlbWFpbmRlclZhbHVlc1tyZW1haW5kZXJdO1xuXG5cdFx0Y29uc3QgdmFsaWQgPSByZXN1bHQgPT09IGNoZWNrc3VtO1xuXHRcdGlmICghdmFsaWQpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDIsIG1lc3NhZ2U6ICdDaGVja3N1bSBpcyBpbmNvcnJlY3QuJyB9O1xuXHRcdH1cblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0c3RhdGljIHZhbGlkYXRlRFZBRmlsZU51bWJlcihkdmE6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB7IGNvZGU6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nIH0gfCBudWxsIHtcblx0XHRpZiAoIWR2YSkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3RhdGVzID0gWydOJywgJ1YnLCAnUScsICdTJywgJ1cnLCAnVCddO1xuXHRcdGNvbnN0IHdhckNvZGVzID0gWycgJywgJ1gnLCAnS00nLCAnU1InLCAnU1MnLCAnU00nLCAnU1dQJywgJ0FHWCcsICdCVycsICdHVycsICdDR1cnLCAvL0F1c3RyYWxpYW4gRm9yY2VzXG5cdFx0XHQnUCcsICdQWCcsICdQQUQnLCAnUEFNJywgJ1BDQScsICdQQ1InLCAnUENWJywgJ1BNUycsICdQU1cnLCAnUFdPJywgJ0hLWCcsICdNQUwnLCAvL0JyaXRpc2ggQWRtaW5pc3RyYXRpb24gR3JvdXBcblx0XHRcdCdDTicsICdDTlgnLCAnSVYnLCAnTkYnLCAnTkcnLCAnUkQnLCAnUkRYJywgJ1NBJywgJ1NBWCcsICdBJywgLy9PdGhlciBPdmVyc2VhcyBGb3JjZXNcblx0XHRcdCdOJywgJ05YJywgJ05TVycsICdOU00nLCAvL05ldyBaZWFsYW5kIEFkbWluaXN0cmF0aW9uIEdyb3VwXG5cdFx0XHQnQlVSJywgJ0NOSycsICdDTlMnLCAnRklKJywgJ0dIQScsICdIS1MnLCAnSU5EJywgJ0tZQScsICdNQVUnLCAnTUxTJywgJ01UWCcsICdNV0knLCAnTksnLCAnTkdSJywgJ05SRCcsICdOU1MnLCAnUEsnXS8vQnJpdGlzaCBDb21tb253ZWFsdGggQ291bnRyaWVzIC0gU1AgRWxpZ2liaWxpdHlcblxuXHRcdGlmICghc3RhdGVzLmluY2x1ZGVzKGR2YS5jaGFyQXQoMCkpKSB7XG5cdFx0XHRyZXR1cm4geyBjb2RlOiAxLCBtZXNzYWdlOiAnU3RhdGUgaW5jb3JyZWN0LicgfTtcblx0XHR9XG5cblx0XHRjb25zdCBucyA9IGR2YS5tYXRjaCgvXFxkKy8pO1xuXHRcdGlmICghbnMpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDIsIG1lc3NhZ2U6ICdObyBudW1iZXIuJyB9O1xuXHRcdH1cblxuXHRcdGNvbnN0IG4gPSBuc1swXTtcblx0XHRjb25zdCBpZHhPZk4gPSBkdmEuaW5kZXhPZihuKTtcblx0XHRjb25zdCB3YXJDb2RlID0gZHZhLnN1YnN0cmluZygxLCBpZHhPZk4pO1xuXHRcdGlmICghd2FyQ29kZXMuaW5jbHVkZXMod2FyQ29kZSkpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDMsIG1lc3NhZ2U6ICdXYXIgY29kZSBpbnZhbGlkLicgfVxuXHRcdH1cblxuXHRcdGNvbnN0IGxlbk9mTiA9IG4ubGVuZ3RoO1xuXHRcdGNvbnN0IGxlbk9mV2MgPSB3YXJDb2RlLmxlbmd0aDtcblx0XHRpZiAobGVuT2ZOICsgbGVuT2ZXYyA+IDcpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDQsIG1lc3NhZ2U6ICdGaWxlIG51bWJlciBsZW5ndGggc2hvdWxkIG5vdCBiZSBncmVhdGVyIDcuJyB9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRzdGF0aWMgdmFsaWRhdGVURk4objogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHsgY29kZTogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGwge1xuXHRcdGlmICghbikge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0Y29uc3QgdGZuID0gbi5yZXBsYWNlKC9cXHMrL2csICcnKS5yZXBsYWNlKC9bLV0vZywgJycpO1xuXG5cdFx0Y29uc3QgaXNOdW1iZXIgPSAvXlswLTldKyQvLnRlc3QodGZuKTtcblx0XHRpZiAoIWlzTnVtYmVyKSB7XG5cdFx0XHRyZXR1cm4geyBjb2RlOiAxLCBtZXNzYWdlOiAnSW52YWxpZCBURk4sIG9ubHkgbnVtYmVycyBhcmUgYWxsb3dlZC4nIH07XG5cdFx0fVxuXG5cdFx0Y29uc3QgbGVuZ3RoID0gdGZuLmxlbmd0aDtcblx0XHRpZiAobGVuZ3RoICE9PSA5KSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRjb2RlOiAyLCBtZXNzYWdlOiAnSW52YWxpZCBURk4sIG11c3QgaGF2ZSA5IGRpZ2l0cy4nXG5cdFx0XHR9O1xuXHRcdH1cblxuXHRcdGNvbnN0IGRpZ2l0cyA9IHRmbi5zcGxpdCgnJykubWFwKGQgPT4gcGFyc2VJbnQoZCkpO1xuXG5cdFx0Y29uc3Qgc3VtID0gKGRpZ2l0c1swXSAqIDEpXG5cdFx0XHQrIChkaWdpdHNbMV0gKiA0KVxuXHRcdFx0KyAoZGlnaXRzWzJdICogMylcblx0XHRcdCsgKGRpZ2l0c1szXSAqIDcpXG5cdFx0XHQrIChkaWdpdHNbNF0gKiA1KVxuXHRcdFx0KyAoZGlnaXRzWzVdICogOClcblx0XHRcdCsgKGRpZ2l0c1s2XSAqIDYpXG5cdFx0XHQrIChkaWdpdHNbN10gKiA5KVxuXHRcdFx0KyAoZGlnaXRzWzhdICogMTApO1xuXG5cdFx0Y29uc3QgcmVtYWluZGVyID0gc3VtICUgMTE7XG5cdFx0Y29uc3QgdmFsaWQgPSByZW1haW5kZXIgPT09IDA7XG5cdFx0aWYgKCF2YWxpZCkge1xuXHRcdFx0cmV0dXJuIHsgY29kZTogMywgbWVzc2FnZTogJ0NoZWNrc3VtIGlzIGluY29ycmVjdC4nIH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBhZGRXZWlnaHRlZChwOiBudW1iZXIsIHY6IG51bWJlciwgaTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHAgKyB2ICogU3RyaW5nQXVzRnVuYy53ZWlnaHRzW2ldO1xuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgYWRkQWNuV2VpZ2h0ZWQocDogbnVtYmVyLCB2OiBudW1iZXIsIGk6IG51bWJlcikge1xuXHRcdHJldHVybiBwICsgdiAqIFN0cmluZ0F1c0Z1bmMuYWNuV2VpZ2h0c1tpXTtcblx0fVxuXG5cdHByaXZhdGUgc3RhdGljIGdlbmVyYXRlTG9va3VwKCk6IG51bWJlcltdIHtcblx0XHRjb25zdCBuczogbnVtYmVyW10gPSBbXTtcblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpIHtcblx0XHRcdG5zW2kgKiAxOSAlIDg5XSA9IGk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG5zO1xuXHR9XG5cblx0c3RhdGljIHZhbGlkYXRlQUJOKGFibjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHsgY29kZTogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGwge1xuXHRcdGlmICghYWJuKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCBkaWdpdHMgPSBhYm4ucmVwbGFjZSgvW15cXGRdL2csICcnKS5zcGxpdCgnJykubWFwKE51bWJlcik7XG5cdFx0aWYgKGRpZ2l0cy5sZW5ndGggIT09IDExKSB7XG5cdFx0XHRyZXR1cm4geyBjb2RlOiAxLCBtZXNzYWdlOiAnRXhwZWN0IDExLWRpZ2l0LicgfTtcblx0XHR9XG5cblx0XHRkaWdpdHNbMF0gLT0gMTtcblxuXHRcdGNvbnN0IHN1bSA9IGRpZ2l0cy5yZWR1Y2UoU3RyaW5nQXVzRnVuYy5hZGRXZWlnaHRlZCwgMCk7XG5cblx0XHRpZiAoc3VtICUgODkgPT09IDApIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGRpZ2l0c1swXSArPSAxO1xuXG5cdFx0bGV0IHN1bTEgPSBzdW0gLSBkaWdpdHNbMTBdICogU3RyaW5nQXVzRnVuYy53ZWlnaHRzWzEwXTtcblx0XHRsZXQgZGlnaXQgPSBTdHJpbmdBdXNGdW5jLnN1Z2dlc3RMb29rdXBbODkgLSBzdW0xICUgODldO1xuXHRcdGlmIChkaWdpdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRjb2RlOiAyLFxuXHRcdFx0XHRtZXNzYWdlOiAnQ2hlY2tzdW0xIGlzIGluY29ycmVjdC4nXG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IHN1bTIgPSBzdW0xIC0gZGlnaXRzWzldICogU3RyaW5nQXVzRnVuYy53ZWlnaHRzWzldO1xuXHRcdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7XG5cdFx0XHRcdHN1bTEgPSBzdW0yICsgaSAqIFN0cmluZ0F1c0Z1bmMud2VpZ2h0c1s5XTtcblx0XHRcdFx0ZGlnaXQgPSBTdHJpbmdBdXNGdW5jLnN1Z2dlc3RMb29rdXBbODkgLSBzdW0xICUgODldO1xuXHRcdFx0XHRpZiAoZGlnaXQgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0XHRjb2RlOiAzLFxuXHRcdFx0XHRcdFx0bWVzc2FnZTogJ0NoZWNrc3VtMiBpcyBpbmNvcnJlY3QuJ1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBudWxsXG5cdH1cblxuXHRzdGF0aWMgdmFsaWRhdGVBQ04oYWNuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogeyBjb2RlOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbCB7XG5cdFx0aWYgKCFhY24pIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGNvbnN0IGRpZ2l0cyA9IGFjbi5yZXBsYWNlKC9bXlxcZF0vZywgJycpLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcblx0XHRjb25zb2xlLmxvZyhkaWdpdHMpO1xuXHRcdGlmIChkaWdpdHMubGVuZ3RoICE9PSA5KSB7XG5cdFx0XHRyZXR1cm4geyBjb2RlOiAxLCBtZXNzYWdlOiAnRXhwZWN0IDktZGlnaXQuJyB9O1xuXHRcdH1cblxuXG5cdFx0Y29uc3Qgc3VtID0gZGlnaXRzLnNsaWNlKDAsIDgpLnJlZHVjZShTdHJpbmdBdXNGdW5jLmFkZEFjbldlaWdodGVkLCAwKTtcblx0XHRjb25zdCBsYXN0RGlnaXQgPSAxMCAtIHN1bSAlIDEwO1xuXHRcdGlmIChsYXN0RGlnaXQgPT09IGRpZ2l0c1s4XSkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtcblx0XHRcdGNvZGU6IDIsXG5cdFx0XHRtZXNzYWdlOiAnQ2hlY2tzdW0gaXMgaW5jb3JyZWN0Lidcblx0XHR9O1xuXHR9XG59XG4iXX0=
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nQXVzRnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvc3RyaW5nQXVzRnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBRXpCLDBIQUEwSDtJQUNsSCxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFekQsTUFBTSxDQUFDLGFBQWEsR0FBYSxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7SUFFeEU7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUE0QjtRQUNuRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQzFCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFeEMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNkLE9BQU87b0JBQ04sSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsc0NBQXNDO2lCQUN4RCxDQUFDO1lBQ0gsQ0FBQztZQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFekMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDekMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLENBQUM7WUFFRCwyREFBMkQ7WUFDM0QsTUFBTSxPQUFPLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxRQUFRLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDZCxPQUFPO29CQUNOLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QjtpQkFDMUMsQ0FBQztZQUNILENBQUM7UUFDRixDQUFDO2FBQU0sQ0FBQztZQUNQLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3JELENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7SUFFRCxNQUFNLENBQUMsOEJBQThCLENBQUMsY0FBeUM7UUFDOUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUVELElBQUksQ0FBQyxtREFBbUQsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztRQUNyRSxDQUFDO1FBRUQsTUFBTSxzQkFBc0IsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoTSxNQUFNLGVBQWUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNoRixNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFdkMsTUFBTSxXQUFXLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDeEYsTUFBTSxXQUFXLEdBQUcsc0JBQXNCLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckYsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRW5DLE1B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QUFJLENBQUM7UUFDYixDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN6QixPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxDQUFDO1FBR0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxTQUFTLEdBQUcsRUFBRSxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDaEMsSUFBSSxTQUFTLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBRUQsT0FBTztZQUNOLElBQUksRUFBRSxDQUFDO1lBQ1AsT0FBTyxFQUFFLHdCQUF3QjtTQUNqQyxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RyaW5nIGZ1bmN0aW9ucyBzcGVjaWZpYyB0byBBdXN0cmFsaWFcbiAqL1xuZXhwb3J0IGNsYXNzIFN0cmluZ0F1c0Z1bmMge1xuXG5cdC8vdGhhbmtzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9zaWRvcmFyZXMvYXVzdHJhbGlhbi1idXNpbmVzcy1udW1iZXIvYmxvYi8wNTkxNDc1ZjU5NzhmZDEyMmI0NzJlZGNkYzdlZmU2ZDk2ZDU2ZjI2L2luZGV4LmpzXG5cdHByaXZhdGUgc3RhdGljIGFjbldlaWdodHMgPSBbOCwgNywgNiwgNSwgNCwgMywgMiwgMV07XG5cdHByaXZhdGUgc3RhdGljIHdlaWdodHMgPSBbMTAsIDEsIDMsIDUsIDcsIDksIDExLCAxMywgMTUsIDE3LCAxOV07XG5cblx0cHJpdmF0ZSBzdGF0aWMgc3VnZ2VzdExvb2t1cDogbnVtYmVyW10gPSBTdHJpbmdBdXNGdW5jLmdlbmVyYXRlTG9va3VwKCk7XG5cblx0LyoqXG5cdCAqIFZhbGlkYXRlIG1lZGljYXJlIG51bWJlclxuXHQgKiBAcGFyYW0gblxuXHQgKiBAcmV0dXJucyB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2Vcblx0ICovXG5cdHN0YXRpYyB2YWxpZGF0ZU1lZGljYXJlKG46IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB7IGNvZGU6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nIH0gfCBudWxsIHtcblx0XHRpZiAoIW4pIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGlmIChuICYmIG4ubGVuZ3RoID09PSAxMCkge1xuXHRcdFx0Y29uc3QgbWF0Y2hlcyA9IG4ubWF0Y2goL14oXFxkezh9KShcXGQpLyk7XG5cblx0XHRcdGlmICghbWF0Y2hlcykge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGNvZGU6IDIsIG1lc3NhZ2U6ICdNZWRpY2FyZSBudW1iZXIgc2hvdWxkIGJlIGFsbCBkaWdpdC4nXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdGNvbnN0IGJhc2UgPSBtYXRjaGVzWzFdO1xuXHRcdFx0Y29uc3QgY2hlY2tEaWdpdCA9IG1hdGNoZXNbMl07XG5cdFx0XHRjb25zdCB3ZWlnaHRzID0gWzEsIDMsIDcsIDksIDEsIDMsIDcsIDldO1xuXG5cdFx0XHRsZXQgc3VtID0gMDtcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgd2VpZ2h0cy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRzdW0gKz0gcGFyc2VJbnQoYmFzZVtpXSwgMTApICogd2VpZ2h0c1tpXTtcblx0XHRcdH1cblxuXHRcdFx0Ly9jb25zb2xlLmRlYnVnKGBzdW06ICR7c3VtfSAgY2hlY2tEaWdpdHM6ICR7Y2hlY2tEaWdpdH1gKTtcblx0XHRcdGNvbnN0IGlzVmFsaWQgPSBzdW0gJSAxMCA9PT0gcGFyc2VJbnQoY2hlY2tEaWdpdCwgMTApO1xuXHRcdFx0aWYgKCFpc1ZhbGlkKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Y29kZTogMywgbWVzc2FnZTogJ0NoZWNrc3VtIGlzIGluY29ycmVjdC4nXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdMZW5ndGggc2hvdWxkIGJlIDEwLicgfTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHN0YXRpYyB2YWxpZGF0ZU1lZGljYXJlUHJvdmlkZXJOdW1iZXIocHJvdmlkZXJOdW1iZXI6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB7IGNvZGU6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nIH0gfCBudWxsIHtcblx0XHRpZiAoIXByb3ZpZGVyTnVtYmVyKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRpZiAoIS9eWzAtOV17Nn1bMC05QUJDREVGR0hKS0xNTlBRUlRVVldYWV1bQUJGSEpLTFRXWFldLy50ZXN0KHByb3ZpZGVyTnVtYmVyKSkge1xuXHRcdFx0cmV0dXJuIHsgY29kZTogMSwgbWVzc2FnZTogJ05vdCBtYXRjaGluZyBwcm92aWRlciBudW1iZXIgZm9ybWF0LicgfTtcblx0XHR9XG5cblx0XHRjb25zdCBwcmFjdGljZUxvY2F0aW9uVmFsdWVzID0gWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnUCcsICdRJywgJ1InLCAnVCcsICdVJywgJ1YnLCAnVycsICdYJywgJ1knXTtcblx0XHRjb25zdCByZW1haW5kZXJWYWx1ZXMgPSBbJ1knLCAnWCcsICdXJywgJ1QnLCAnTCcsICdLJywgJ0onLCAnSCcsICdGJywgJ0InLCAnQSddO1xuXHRcdGNvbnN0IHN0ZW1XZWlnaHRzID0gWzMsIDUsIDgsIDQsIDIsIDFdO1xuXG5cdFx0Y29uc3Qgc3RlbU51bWJlcnMgPSBwcm92aWRlck51bWJlci5zdWJzdHIoMCwgNikuc3BsaXQoJycpLm1hcCgoY2hhcikgPT4gcGFyc2VJbnQoY2hhcikpO1xuXHRcdGNvbnN0IHByYWN0aWNlTG9jID0gcHJhY3RpY2VMb2NhdGlvblZhbHVlcy5maW5kSW5kZXgoKGUpID0+IGUgPT09IHByb3ZpZGVyTnVtYmVyWzZdKTtcblx0XHRjb25zdCBjaGVja3N1bSA9IHByb3ZpZGVyTnVtYmVyWzddO1xuXG5cdFx0Y29uc3QgemlwcGVkID0gc3RlbVdlaWdodHMubWFwKCh4LCBpKSA9PiBbeCwgc3RlbU51bWJlcnNbaV1dKTtcblx0XHRjb25zdCBzdW1XZWlnaHRzID0gemlwcGVkLm1hcCgoeSkgPT4geVsxXSAqIHlbMF0pLnJlZHVjZSgodG90YWwsIG51bSkgPT4gdG90YWwgKyBudW0pO1xuXHRcdGNvbnN0IHJlbWFpbmRlciA9IChzdW1XZWlnaHRzICsgcHJhY3RpY2VMb2MgKiA2KSAlIDExO1xuXG5cdFx0Y29uc3QgcmVzdWx0ID0gcmVtYWluZGVyVmFsdWVzW3JlbWFpbmRlcl07XG5cblx0XHRjb25zdCB2YWxpZCA9IHJlc3VsdCA9PT0gY2hlY2tzdW07XG5cdFx0aWYgKCF2YWxpZCkge1xuXHRcdFx0cmV0dXJuIHsgY29kZTogMiwgbWVzc2FnZTogJ0NoZWNrc3VtIGlzIGluY29ycmVjdC4nIH07XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRzdGF0aWMgdmFsaWRhdGVEVkFGaWxlTnVtYmVyKGR2YTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHsgY29kZTogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGwge1xuXHRcdGlmICghZHZhKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCBzdGF0ZXMgPSBbJ04nLCAnVicsICdRJywgJ1MnLCAnVycsICdUJ107XG5cdFx0Y29uc3Qgd2FyQ29kZXMgPSBbJyAnLCAnWCcsICdLTScsICdTUicsICdTUycsICdTTScsICdTV1AnLCAnQUdYJywgJ0JXJywgJ0dXJywgJ0NHVycsIC8vQXVzdHJhbGlhbiBGb3JjZXNcblx0XHRcdCdQJywgJ1BYJywgJ1BBRCcsICdQQU0nLCAnUENBJywgJ1BDUicsICdQQ1YnLCAnUE1TJywgJ1BTVycsICdQV08nLCAnSEtYJywgJ01BTCcsIC8vQnJpdGlzaCBBZG1pbmlzdHJhdGlvbiBHcm91cFxuXHRcdFx0J0NOJywgJ0NOWCcsICdJVicsICdORicsICdORycsICdSRCcsICdSRFgnLCAnU0EnLCAnU0FYJywgJ0EnLCAvL090aGVyIE92ZXJzZWFzIEZvcmNlc1xuXHRcdFx0J04nLCAnTlgnLCAnTlNXJywgJ05TTScsIC8vTmV3IFplYWxhbmQgQWRtaW5pc3RyYXRpb24gR3JvdXBcblx0XHRcdCdCVVInLCAnQ05LJywgJ0NOUycsICdGSUonLCAnR0hBJywgJ0hLUycsICdJTkQnLCAnS1lBJywgJ01BVScsICdNTFMnLCAnTVRYJywgJ01XSScsICdOSycsICdOR1InLCAnTlJEJywgJ05TUycsICdQSyddLy9Ccml0aXNoIENvbW1vbndlYWx0aCBDb3VudHJpZXMgLSBTUCBFbGlnaWJpbGl0eVxuXG5cdFx0aWYgKCFzdGF0ZXMuaW5jbHVkZXMoZHZhLmNoYXJBdCgwKSkpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdTdGF0ZSBpbmNvcnJlY3QuJyB9O1xuXHRcdH1cblxuXHRcdGNvbnN0IG5zID0gZHZhLm1hdGNoKC9cXGQrLyk7XG5cdFx0aWYgKCFucykge1xuXHRcdFx0cmV0dXJuIHsgY29kZTogMiwgbWVzc2FnZTogJ05vIG51bWJlci4nIH07XG5cdFx0fVxuXG5cdFx0Y29uc3QgbiA9IG5zWzBdO1xuXHRcdGNvbnN0IGlkeE9mTiA9IGR2YS5pbmRleE9mKG4pO1xuXHRcdGNvbnN0IHdhckNvZGUgPSBkdmEuc3Vic3RyaW5nKDEsIGlkeE9mTik7XG5cdFx0aWYgKCF3YXJDb2Rlcy5pbmNsdWRlcyh3YXJDb2RlKSkge1xuXHRcdFx0cmV0dXJuIHsgY29kZTogMywgbWVzc2FnZTogJ1dhciBjb2RlIGludmFsaWQuJyB9XG5cdFx0fVxuXG5cdFx0Y29uc3QgbGVuT2ZOID0gbi5sZW5ndGg7XG5cdFx0Y29uc3QgbGVuT2ZXYyA9IHdhckNvZGUubGVuZ3RoO1xuXHRcdGlmIChsZW5PZk4gKyBsZW5PZldjID4gNykge1xuXHRcdFx0cmV0dXJuIHsgY29kZTogNCwgbWVzc2FnZTogJ0ZpbGUgbnVtYmVyIGxlbmd0aCBzaG91bGQgbm90IGJlIGdyZWF0ZXIgNy4nIH1cblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHN0YXRpYyB2YWxpZGF0ZVRGTihuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogeyBjb2RlOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbCB7XG5cdFx0aWYgKCFuKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCB0Zm4gPSBuLnJlcGxhY2UoL1xccysvZywgJycpLnJlcGxhY2UoL1stXS9nLCAnJyk7XG5cblx0XHRjb25zdCBpc051bWJlciA9IC9eWzAtOV0rJC8udGVzdCh0Zm4pO1xuXHRcdGlmICghaXNOdW1iZXIpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdJbnZhbGlkIFRGTiwgb25seSBudW1iZXJzIGFyZSBhbGxvd2VkLicgfTtcblx0XHR9XG5cblx0XHRjb25zdCBsZW5ndGggPSB0Zm4ubGVuZ3RoO1xuXHRcdGlmIChsZW5ndGggIT09IDkpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNvZGU6IDIsIG1lc3NhZ2U6ICdJbnZhbGlkIFRGTiwgbXVzdCBoYXZlIDkgZGlnaXRzLidcblx0XHRcdH07XG5cdFx0fVxuXG5cdFx0Y29uc3QgZGlnaXRzID0gdGZuLnNwbGl0KCcnKS5tYXAoZCA9PiBwYXJzZUludChkKSk7XG5cblx0XHRjb25zdCBzdW0gPSAoZGlnaXRzWzBdICogMSlcblx0XHRcdCsgKGRpZ2l0c1sxXSAqIDQpXG5cdFx0XHQrIChkaWdpdHNbMl0gKiAzKVxuXHRcdFx0KyAoZGlnaXRzWzNdICogNylcblx0XHRcdCsgKGRpZ2l0c1s0XSAqIDUpXG5cdFx0XHQrIChkaWdpdHNbNV0gKiA4KVxuXHRcdFx0KyAoZGlnaXRzWzZdICogNilcblx0XHRcdCsgKGRpZ2l0c1s3XSAqIDkpXG5cdFx0XHQrIChkaWdpdHNbOF0gKiAxMCk7XG5cblx0XHRjb25zdCByZW1haW5kZXIgPSBzdW0gJSAxMTtcblx0XHRjb25zdCB2YWxpZCA9IHJlbWFpbmRlciA9PT0gMDtcblx0XHRpZiAoIXZhbGlkKSB7XG5cdFx0XHRyZXR1cm4geyBjb2RlOiAzLCBtZXNzYWdlOiAnQ2hlY2tzdW0gaXMgaW5jb3JyZWN0LicgfTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdHByaXZhdGUgc3RhdGljIGFkZFdlaWdodGVkKHA6IG51bWJlciwgdjogbnVtYmVyLCBpOiBudW1iZXIpIHtcblx0XHRyZXR1cm4gcCArIHYgKiBTdHJpbmdBdXNGdW5jLndlaWdodHNbaV07XG5cdH1cblxuXHRwcml2YXRlIHN0YXRpYyBhZGRBY25XZWlnaHRlZChwOiBudW1iZXIsIHY6IG51bWJlciwgaTogbnVtYmVyKSB7XG5cdFx0cmV0dXJuIHAgKyB2ICogU3RyaW5nQXVzRnVuYy5hY25XZWlnaHRzW2ldO1xuXHR9XG5cblx0cHJpdmF0ZSBzdGF0aWMgZ2VuZXJhdGVMb29rdXAoKTogbnVtYmVyW10ge1xuXHRcdGNvbnN0IG5zOiBudW1iZXJbXSA9IFtdO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7ICsraSkge1xuXHRcdFx0bnNbaSAqIDE5ICUgODldID0gaTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnM7XG5cdH1cblxuXHRzdGF0aWMgdmFsaWRhdGVBQk4oYWJuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogeyBjb2RlOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbCB7XG5cdFx0aWYgKCFhYm4pIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdGNvbnN0IGRpZ2l0cyA9IGFibi5yZXBsYWNlKC9bXlxcZF0vZywgJycpLnNwbGl0KCcnKS5tYXAoTnVtYmVyKTtcblx0XHRpZiAoZGlnaXRzLmxlbmd0aCAhPT0gMTEpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdFeHBlY3QgMTEtZGlnaXQuJyB9O1xuXHRcdH1cblxuXHRcdGRpZ2l0c1swXSAtPSAxO1xuXG5cdFx0Y29uc3Qgc3VtID0gZGlnaXRzLnJlZHVjZShTdHJpbmdBdXNGdW5jLmFkZFdlaWdodGVkLCAwKTtcblxuXHRcdGlmIChzdW0gJSA4OSA9PT0gMCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0ZGlnaXRzWzBdICs9IDE7XG5cblx0XHRsZXQgc3VtMSA9IHN1bSAtIGRpZ2l0c1sxMF0gKiBTdHJpbmdBdXNGdW5jLndlaWdodHNbMTBdO1xuXHRcdGxldCBkaWdpdCA9IFN0cmluZ0F1c0Z1bmMuc3VnZ2VzdExvb2t1cFs4OSAtIHN1bTEgJSA4OV07XG5cdFx0aWYgKGRpZ2l0ICE9PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGNvZGU6IDIsXG5cdFx0XHRcdG1lc3NhZ2U6ICdDaGVja3N1bTEgaXMgaW5jb3JyZWN0Lidcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0Y29uc3Qgc3VtMiA9IHN1bTEgLSBkaWdpdHNbOV0gKiBTdHJpbmdBdXNGdW5jLndlaWdodHNbOV07XG5cdFx0XHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyArK2kpIHtcblx0XHRcdFx0c3VtMSA9IHN1bTIgKyBpICogU3RyaW5nQXVzRnVuYy53ZWlnaHRzWzldO1xuXHRcdFx0XHRkaWdpdCA9IFN0cmluZ0F1c0Z1bmMuc3VnZ2VzdExvb2t1cFs4OSAtIHN1bTEgJSA4OV07XG5cdFx0XHRcdGlmIChkaWdpdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0XHRcdGNvZGU6IDMsXG5cdFx0XHRcdFx0XHRtZXNzYWdlOiAnQ2hlY2tzdW0yIGlzIGluY29ycmVjdC4nXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIG51bGxcblx0fVxuXG5cdHN0YXRpYyB2YWxpZGF0ZUFDTihhY246IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB7IGNvZGU6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nIH0gfCBudWxsIHtcblx0XHRpZiAoIWFjbikge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZGlnaXRzID0gYWNuLnJlcGxhY2UoL1teXFxkXS9nLCAnJykuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xuXHRcdGNvbnNvbGUubG9nKGRpZ2l0cyk7XG5cdFx0aWYgKGRpZ2l0cy5sZW5ndGggIT09IDkpIHtcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdFeHBlY3QgOS1kaWdpdC4nIH07XG5cdFx0fVxuXG5cblx0XHRjb25zdCBzdW0gPSBkaWdpdHMuc2xpY2UoMCwgOCkucmVkdWNlKFN0cmluZ0F1c0Z1bmMuYWRkQWNuV2VpZ2h0ZWQsIDApO1xuXHRcdGNvbnN0IGxhc3REaWdpdCA9IDEwIC0gc3VtICUgMTA7XG5cdFx0aWYgKGxhc3REaWdpdCA9PT0gZGlnaXRzWzhdKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRyZXR1cm4ge1xuXHRcdFx0Y29kZTogMixcblx0XHRcdG1lc3NhZ2U6ICdDaGVja3N1bSBpcyBpbmNvcnJlY3QuJ1xuXHRcdH07XG5cdH1cbn1cbiJdfQ==
@@ -90,4 +90,4 @@ export class StringFunc {
90
90
  return re.test(email.toLowerCase());
91
91
  }
92
92
  }
93
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nRnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvc3RyaW5nRnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUV0Qjs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQTRCO1FBQzFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDUCxPQUFPLEVBQUUsQ0FBQztTQUNWO1FBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQTRCLEVBQUUsTUFBYztRQUNuRSxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUVELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUE0QixFQUFFLE1BQWM7UUFDekUsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNQLE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFFRCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RixPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1EQUFtRDtJQUNqRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQXVCLEVBQUUsSUFBWTtRQUMvQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtZQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQUU7UUFDeEMsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUE0QjtRQUNuRCxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBNEI7UUFDbEQsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNQLE9BQU8sQ0FBQyxDQUFDO1NBQ1Q7UUFFRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFnQztRQUNwRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUNELE1BQU0sRUFBRSxHQUFHLHVKQUF1SixDQUFDO1FBQ25LLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU3RyaW5nRnVuYyB7XG5cblx0LyoqXG5cdCAqIFVwIHRvIDIgbGV0dGVycy4gRm9yIEpvaG4gU21pdGgsIHJldHVybnMgSlMsIGZvciBIdWFuZywgWmlqaWFuLCByZXR1cm5zIFpIXG5cdCAqIEBwYXJhbSBzXG5cdCAqL1xuXHRzdGF0aWMgZ2V0QWJicihzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0aWYgKCFzKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc0FycmF5ID0gcy5zcGxpdCgvW1xccyxdKy8pO1xuXHRcdGNvbnN0IGNvbW1hID0gcy5pbmRleE9mKCcsJykgPj0gMDtcblxuXHRcdGlmIChzQXJyYXkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRyZXR1cm4gc0FycmF5WzBdWzBdO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21tYSA/IHNBcnJheVsxXVswXSArIHNBcnJheVswXVswXSA6IHNBcnJheVswXVswXSArIHNBcnJheVsxXVswXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIHN1YnN0cmluZyB3aXRoIGxpbmUgYnJlYWtzIHJlcGxhY2VkIGJ5IHNwYWNlLlxuXHQgKiBAcGFyYW0gc1xuXHQgKiBAcGFyYW0gbGVuZ3RoXG5cdCAqIEByZXR1cm5zIHJlc3VsdCwgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBpbnB1dCBpcyBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWRcblx0ICovXG5cdHN0YXRpYyBnZXRPbmVMaW5lRGlnZXN0KHM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGxlbmd0aDogbnVtYmVyKSB7XG5cdFx0aWYgKCFzKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3MgPSBzLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuXHRcdGNvbnN0IHN0ID0gc3MucmVwbGFjZShuZXcgUmVnRXhwKCdcXG4nLCAnZycpLCAnICcpICsgKChzLmxlbmd0aCA+IGxlbmd0aCkgPyAnLi4uJyA6ICcnKTtcblx0XHRyZXR1cm4gc3QudHJpbSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBsaW5lIGJyZWFrcyBhbmQgZWNvbmRlIHdpdGggZW5jb2RlVVJJKCkgc28gdGhlIGRhdGEgY291bGQgYmUgc2F2ZWQgaW4gQXp1cmUgYXMgbWV0YS4gSWYgdGhlIHN0cmluZyBpcyB0cnVuY2F0ZWQsIHRoZSByZXR1cm4gd2lsbCBoYXZlIC4uLiBzdWZmaXguXG5cdCAqIEBwYXJhbSBzXG5cdCAqIEBwYXJhbSBsZW5ndGhcblx0ICogQHJldHVybnMgcmVzdWx0LCBvciBlbXB0eSBzdHJpbmcgaWYgdGhlIGlucHV0IGlzIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZFxuXHQgKi9cblx0c3RhdGljIGdldE9uZUxpbmVEaWdlc3RPZkh0bWwoczogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgbGVuZ3RoOiBudW1iZXIpIHtcblx0XHRpZiAoIXMpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRjb25zdCBzcyA9IHMuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG5cdFx0Y29uc3Qgc3QgPSBzcy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcbicsICdnJyksICcgJykgKyAoKHMubGVuZ3RoID4gbGVuZ3RoKSA/ICcuLi4nIDogJycpO1xuXHRcdHJldHVybiBlbmNvZGVVUkkoc3QudHJpbSgpKTsgLy9uZWVkIHRvIGVuY29kZSBpbiBvcmRlciB0byBzYXZlIGFzIG1ldGEgaW4gQXp1cmUuXG5cdH1cblxuXHQvKipcblx0ICogUGFkIG51bWJlciB3aXRoIHplcm9cblx0ICogQHBhcmFtIG51bSBcblx0ICogQHBhcmFtIHNpemUgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0c3RhdGljIHBhZChudW06IG51bWJlciB8IHVuZGVmaW5lZCwgc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRpZiAobnVtID09IG51bGwpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRsZXQgcyA9IG51bSArICcnO1xuXHRcdHdoaWxlIChzLmxlbmd0aCA8IHNpemUpIHsgcyA9ICcwJyArIHM7IH1cblx0XHRyZXR1cm4gcztcblx0fVxuXG5cdC8qKlxuXHQgKiBnZXQgcGxhaW4gdGV4dCBvZiBIVE1MIGNvbnRlbnRcblx0ICogQHBhcmFtIHNcblx0ICogQHJldHVybnMgcmVzdWx0LiBJZiBpbnB1dCBpcyBlbXB0eSwgbnVsbCwgb3IgdW5kZWZpbmVkLCByZXR1cm4gdGhlIHNhbWUuXG5cdCAqL1xuXHRzdGF0aWMgZ2V0SHRtbFBsYWluVGV4dChzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0aWYgKCFzKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG5cdFx0Y29uc3QgaHRtbCA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcocywgJ3RleHQvaHRtbCcpO1xuXHRcdHJldHVybiBodG1sLmJvZHkudGV4dENvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICpcblx0ICogQHBhcmFtIHNcblx0ICogQHJldHVybnMgcmVzdWx0LiBJZiBpbnB1dCBpcyBlbXB0eSwgbnVsbCwgb3IgdW5kZWZpbmVkLCByZXR1cm4gdGhlIHNhbWUuXG5cdCAqL1xuXHRzdGF0aWMgY2FwaXRhbGl6ZVdvcmRzKHM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHsgLy8gdGhhbmtzIHRvIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzMzI4MTEvY2FwaXRhbGl6ZS13b3Jkcy1pbi1zdHJpbmdcblx0XHRpZiAoIXMpIHtcblx0XHRcdHJldHVybiBzO1xuXHRcdH1cblxuXHRcdHJldHVybiBzLnJlcGxhY2UoLyg/Ol58XFxzKVxcUy9nLCAoYSkgPT4gYS50b1VwcGVyQ2FzZSgpKTtcblx0fVxuXG5cdHN0YXRpYyB2YWxpZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG5cdFx0aWYgKCFlbWFpbCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGNvbnN0IHJlID0gL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xuXHRcdHJldHVybiByZS50ZXN0KGVtYWlsLnRvTG93ZXJDYXNlKCkpO1xuXHR9XG59XG4iXX0=
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nRnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvc3RyaW5nRnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUV0Qjs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQTRCO1FBQzFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNSLE9BQU8sRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBNEIsRUFBRSxNQUFjO1FBQ25FLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNSLE9BQU8sRUFBRSxDQUFDO1FBQ1gsQ0FBQztRQUVELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUE0QixFQUFFLE1BQWM7UUFDekUsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1IsT0FBTyxFQUFFLENBQUM7UUFDWCxDQUFDO1FBRUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDbEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkYsT0FBTyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxtREFBbUQ7SUFDakYsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUF1QixFQUFFLElBQVk7UUFDL0MsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLENBQUM7UUFDWCxDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUE0QjtRQUNuRCxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDUixPQUFPLElBQUksQ0FBQztRQUNiLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3BELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDOUIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsZUFBZSxDQUFDLENBQTRCO1FBQ2xELElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNSLE9BQU8sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWdDO1FBQ3BELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNaLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLHVKQUF1SixDQUFDO1FBQ25LLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU3RyaW5nRnVuYyB7XG5cblx0LyoqXG5cdCAqIFVwIHRvIDIgbGV0dGVycy4gRm9yIEpvaG4gU21pdGgsIHJldHVybnMgSlMsIGZvciBIdWFuZywgWmlqaWFuLCByZXR1cm5zIFpIXG5cdCAqIEBwYXJhbSBzXG5cdCAqL1xuXHRzdGF0aWMgZ2V0QWJicihzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XG5cdFx0aWYgKCFzKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc0FycmF5ID0gcy5zcGxpdCgvW1xccyxdKy8pO1xuXHRcdGNvbnN0IGNvbW1hID0gcy5pbmRleE9mKCcsJykgPj0gMDtcblxuXHRcdGlmIChzQXJyYXkubGVuZ3RoID09PSAxKSB7XG5cdFx0XHRyZXR1cm4gc0FycmF5WzBdWzBdO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21tYSA/IHNBcnJheVsxXVswXSArIHNBcnJheVswXVswXSA6IHNBcnJheVswXVswXSArIHNBcnJheVsxXVswXTtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIHN1YnN0cmluZyB3aXRoIGxpbmUgYnJlYWtzIHJlcGxhY2VkIGJ5IHNwYWNlLlxuXHQgKiBAcGFyYW0gc1xuXHQgKiBAcGFyYW0gbGVuZ3RoXG5cdCAqIEByZXR1cm5zIHJlc3VsdCwgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBpbnB1dCBpcyBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWRcblx0ICovXG5cdHN0YXRpYyBnZXRPbmVMaW5lRGlnZXN0KHM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGxlbmd0aDogbnVtYmVyKSB7XG5cdFx0aWYgKCFzKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc3MgPSBzLnN1YnN0cmluZygwLCBsZW5ndGgpO1xuXHRcdGNvbnN0IHN0ID0gc3MucmVwbGFjZShuZXcgUmVnRXhwKCdcXG4nLCAnZycpLCAnICcpICsgKChzLmxlbmd0aCA+IGxlbmd0aCkgPyAnLi4uJyA6ICcnKTtcblx0XHRyZXR1cm4gc3QudHJpbSgpO1xuXHR9XG5cblx0LyoqXG5cdCAqIFJlbW92ZSBsaW5lIGJyZWFrcyBhbmQgZWNvbmRlIHdpdGggZW5jb2RlVVJJKCkgc28gdGhlIGRhdGEgY291bGQgYmUgc2F2ZWQgaW4gQXp1cmUgYXMgbWV0YS4gSWYgdGhlIHN0cmluZyBpcyB0cnVuY2F0ZWQsIHRoZSByZXR1cm4gd2lsbCBoYXZlIC4uLiBzdWZmaXguXG5cdCAqIEBwYXJhbSBzXG5cdCAqIEBwYXJhbSBsZW5ndGhcblx0ICogQHJldHVybnMgcmVzdWx0LCBvciBlbXB0eSBzdHJpbmcgaWYgdGhlIGlucHV0IGlzIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZFxuXHQgKi9cblx0c3RhdGljIGdldE9uZUxpbmVEaWdlc3RPZkh0bWwoczogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCwgbGVuZ3RoOiBudW1iZXIpIHtcblx0XHRpZiAoIXMpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRjb25zdCBzcyA9IHMuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XG5cdFx0Y29uc3Qgc3QgPSBzcy5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcbicsICdnJyksICcgJykgKyAoKHMubGVuZ3RoID4gbGVuZ3RoKSA/ICcuLi4nIDogJycpO1xuXHRcdHJldHVybiBlbmNvZGVVUkkoc3QudHJpbSgpKTsgLy9uZWVkIHRvIGVuY29kZSBpbiBvcmRlciB0byBzYXZlIGFzIG1ldGEgaW4gQXp1cmUuXG5cdH1cblxuXHQvKipcblx0ICogUGFkIG51bWJlciB3aXRoIHplcm9cblx0ICogQHBhcmFtIG51bSBcblx0ICogQHBhcmFtIHNpemUgXG5cdCAqIEByZXR1cm5zIFxuXHQgKi9cblx0c3RhdGljIHBhZChudW06IG51bWJlciB8IHVuZGVmaW5lZCwgc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcblx0XHRpZiAobnVtID09IG51bGwpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRsZXQgcyA9IG51bSArICcnO1xuXHRcdHdoaWxlIChzLmxlbmd0aCA8IHNpemUpIHsgcyA9ICcwJyArIHM7IH1cblx0XHRyZXR1cm4gcztcblx0fVxuXG5cdC8qKlxuXHQgKiBnZXQgcGxhaW4gdGV4dCBvZiBIVE1MIGNvbnRlbnRcblx0ICogQHBhcmFtIHNcblx0ICogQHJldHVybnMgcmVzdWx0LiBJZiBpbnB1dCBpcyBlbXB0eSwgbnVsbCwgb3IgdW5kZWZpbmVkLCByZXR1cm4gdGhlIHNhbWUuXG5cdCAqL1xuXHRzdGF0aWMgZ2V0SHRtbFBsYWluVGV4dChzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB7XG5cdFx0aWYgKCFzKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHRjb25zdCBwYXJzZXIgPSBuZXcgRE9NUGFyc2VyKCk7XG5cdFx0Y29uc3QgaHRtbCA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcocywgJ3RleHQvaHRtbCcpO1xuXHRcdHJldHVybiBodG1sLmJvZHkudGV4dENvbnRlbnQ7XG5cdH1cblxuXHQvKipcblx0ICpcblx0ICogQHBhcmFtIHNcblx0ICogQHJldHVybnMgcmVzdWx0LiBJZiBpbnB1dCBpcyBlbXB0eSwgbnVsbCwgb3IgdW5kZWZpbmVkLCByZXR1cm4gdGhlIHNhbWUuXG5cdCAqL1xuXHRzdGF0aWMgY2FwaXRhbGl6ZVdvcmRzKHM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkIHsgLy8gdGhhbmtzIHRvIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIzMzI4MTEvY2FwaXRhbGl6ZS13b3Jkcy1pbi1zdHJpbmdcblx0XHRpZiAoIXMpIHtcblx0XHRcdHJldHVybiBzO1xuXHRcdH1cblxuXHRcdHJldHVybiBzLnJlcGxhY2UoLyg/Ol58XFxzKVxcUy9nLCAoYSkgPT4gYS50b1VwcGVyQ2FzZSgpKTtcblx0fVxuXG5cdHN0YXRpYyB2YWxpZGF0ZUVtYWlsKGVtYWlsOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiB7XG5cdFx0aWYgKCFlbWFpbCkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGNvbnN0IHJlID0gL14oKFtePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKFxcLltePD4oKVtcXF1cXFxcLiw7Olxcc0BcIl0rKSopfChcIi4rXCIpKUAoKFxcW1swLTldezEsM31cXC5bMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXF0pfCgoW2EtekEtWlxcLTAtOV0rXFwuKStbYS16QS1aXXsyLH0pKSQvO1xuXHRcdHJldHVybiByZS50ZXN0KGVtYWlsLnRvTG93ZXJDYXNlKCkpO1xuXHR9XG59XG4iXX0=
@@ -88,15 +88,15 @@ class AuthenticationService {
88
88
  return response;
89
89
  }));
90
90
  }
91
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: AuthenticationService, deps: [{ token: 'auth.tokenUrl' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
92
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: AuthenticationService });
91
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthenticationService, deps: [{ token: 'auth.tokenUrl' }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
92
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthenticationService });
93
93
  }
94
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.3", ngImport: i0, type: AuthenticationService, decorators: [{
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: AuthenticationService, decorators: [{
95
95
  type: Injectable
96
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
96
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
97
97
  type: Inject,
98
98
  args: ['auth.tokenUrl']
99
- }] }, { type: i1.HttpClient }]; } });
99
+ }] }, { type: i1.HttpClient }] });
100
100
 
101
101
  /**
102
102
  * Currency calculations. Undefined input of number is considered zero, just like null.
@@ -689,10 +689,10 @@ class StringAusFunc {
689
689
  return null;
690
690
  }
691
691
  const states = ['N', 'V', 'Q', 'S', 'W', 'T'];
692
- const warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW',
693
- 'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL',
694
- 'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A',
695
- 'N', 'NX', 'NSW', 'NSM',
692
+ const warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW', //Australian Forces
693
+ 'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL', //British Administration Group
694
+ 'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A', //Other Overseas Forces
695
+ 'N', 'NX', 'NSW', 'NSM', //New Zealand Administration Group
696
696
  'BUR', 'CNK', 'CNS', 'FIJ', 'GHA', 'HKS', 'IND', 'KYA', 'MAU', 'MLS', 'MTX', 'MWI', 'NK', 'NGR', 'NRD', 'NSS', 'PK']; //British Commonwealth Countries - SP Eligibility
697
697
  if (!states.includes(dva.charAt(0))) {
698
698
  return { code: 1, message: 'State incorrect.' };
@@ -1 +1 @@
1
- {"version":3,"file":"nmce-func.mjs","sources":["../../../projects/nmce-func/src/_func/addressFunc.ts","../../../projects/nmce-func/src/_func/authentication.service.ts","../../../projects/nmce-func/src/_func/currencyFunc.ts","../../../projects/nmce-func/src/_func/dateFunc.ts","../../../projects/nmce-func/src/_func/htmlPrintFunc.ts","../../../projects/nmce-func/src/_func/javascriptFunc.ts","../../../projects/nmce-func/src/_func/jsonFunc.ts","../../../projects/nmce-func/src/_func/stringAusFunc.ts","../../../projects/nmce-func/src/_func/stringFunc.ts","../../../projects/nmce-func/src/_func/uuidFunc.ts","../../../projects/nmce-func/src/public-api.ts","../../../projects/nmce-func/src/nmce-func.ts"],"sourcesContent":["export class AddressFunc {\n\t/**\n\t * Compose to one line separated by comma\n\t * @param st1\n\t * @param st2\n\t * @param city\n\t * @param state\n\t * @param postcode\n\t */\n\tstatic composeOneLineAddress(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, postcode: string | undefined): string {\n\t\treturn AddressFunc.composeAddress(st1, st2, city, state, postcode, ', ');\n\t}\n\n\t/**\n\t * Compose to multiple separated by \\n\n\t * @param st1\n\t * @param st2\n\t * @param city\n\t * @param state\n\t * @param postcode\n\t */\n\tstatic composeMultiLineAddress(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, postcode: string | undefined): string {\n\t\treturn AddressFunc.composeAddress(st1, st2, city, state, postcode, '\\n');\n\t}\n\n\t/**\n\t * Compose with separator\n\t * @param st1\n\t * @param st2\n\t * @param city\n\t * @param state\n\t * @param postcode\n\t * @param sep\n\t */\n\tstatic composeAddress(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, postcode: string | undefined, sep: string | undefined): string {\n\t\tconst r = (st1 ? (st1 + sep) : '') + (st2 ? (st2 + sep) : '') + (city ? (city + sep) : '') + (state ? (state + ' ') : '') + (postcode ? postcode : '');\n\t\treturn r;\n\t}\n\n\tstatic composeGoogleMapsAuUrl(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, country: string | undefined): string {\n\t\tconst googleBaseUrl = 'https://www.google.com.au/maps?hl=en&q=';\n\t\tconst fff = (s: string | undefined): string => {\n\t\t\tif (!s) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn '+' + encodeURIComponent(s.replace(' ', '+')) + ',';\n\t\t};\n\n\t\tconst ss = fff(st1) + fff(st2) + fff(city) + fff(state) + fff(country);\n\t\treturn googleBaseUrl + ss;\n\t}\n\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\n/**\r\n * Login and saving tokens in sessionStorage.\r\n * App needs to provide constant 'auth.tokenUrl'.\r\n */\r\n@Injectable()\r\nexport class AuthenticationService {\r\n\tusername?: string;\r\n\r\n\tconstructor(@Inject('auth.tokenUrl') private authUri: string, private http: HttpClient) {\r\n\t}\r\n\r\n\t/**\r\n\t * Login and save tokens to sessionStorage then return an observable.\r\n\t * @param username\r\n\t * @param password\r\n\t */\r\n\tlogin(username: string, password: string, headers?: any) {\r\n\t\tconst body = 'username=' + username + '&password=' + password + '&grant_type=password';\r\n\t\tconst contentTypeHeader = { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' };\r\n\t\tconst mergedHeaders = headers ? { ...contentTypeHeader, ...headers } : contentTypeHeader;\r\n\t\tconst options = { headers: mergedHeaders };\r\n\t\treturn this.http.post<{\r\n\t\t\taccess_token: string;\r\n\t\t\texpires: string;\r\n\t\t\texpires_in: number;\r\n\t\t\tissued: string;\r\n\t\t\ttoken_type: string;\r\n\t\t\tusername: string;\r\n\t\t}>(this.authUri, body, options)\r\n\t\t\t.pipe(map(\r\n\t\t\t\tresponse => {\r\n\t\t\t\t\t//sessionStorage.setItem('access_token', response.access_token); The client code is response to doing these.\r\n\t\t\t\t\t//sessionStorage.setItem('expires_in', response.expires_in.toString());\r\n\t\t\t\t\t//sessionStorage.setItem('token_type', response.token_type);\r\n\t\t\t\t\t//sessionStorage.setItem('issued', response.issued);\r\n\t\t\t\t\t//sessionStorage.setItem('expires', response.expires); // often up to 2 weeks by default in Asp.net identity 2.\r\n\t\t\t\t\tthis.username = response.username;\r\n\t\t\t\t\t//APP_STATUSES.userName = this.userName;\r\n\t\t\t\t\treturn response;\r\n\t\t\t\t}\r\n\r\n\t\t\t));\r\n\t}\r\n\r\n}\r\n","/**\n * Currency calculations. Undefined input of number is considered zero, just like null.\n */\nexport class CurrencyFunc {\n\tprivate static DECIMAL_SEPARATOR = '.';\n\tprivate static THOUSANDS_SEPARATOR = ',';\n\n\tprivate static PADDING = '000000';\n\n\t/**\n\t *\n\t * @param num\n\t * @param decimalPlaces default 0\n\t */\n\tstatic bankerRound(num: number | null | undefined, decimalPlaces?: number): number {//http://stackoverflow.com/questions/3108986/gaussian-bankers-rounding-in-javascript\n\t\tif (!num) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst d = decimalPlaces || 0;\n\t\tconst m = Math.pow(10, d);\n\t\tconst n = +(d ? num * m : num).toFixed(8); // Avoid rounding errors\n\t\tconst i = Math.floor(n), f = n - i;\n\t\tconst e = 1e-8; // Allow for rounding errors in f\n\t\tconst r = (f > 0.5 - e && f < 0.5 + e) ?\n\t\t\t((i % 2 === 0) ? i : i + 1) : Math.round(n);\n\t\treturn d ? r / m : r;\n\t}\n\n\tstatic bankerRoundTo5cents(num: number | null | undefined): number {\n\t\tif (!num) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst r = this.bankerRound(Math.ceil(num * 20 - 0.5) / 20, 2);\n\t\treturn r;\n\t}\n\n\tstatic ceilTo5cents(num: number | null | undefined): number {\n\t\tif (!num) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst r = this.bankerRound(Math.ceil(num * 20) / 20, 4);\n\t\tconst roundup = Math.ceil(r * 10000) / 10000;\n\t\treturn roundup;\n\t}\n\n\tstatic transformCurrency(value: number | string | undefined, fractionSize: number = 2): string {\n\t\tlet [integer, fraction = ''] = (value || '').toString()\n\t\t\t.split(this.DECIMAL_SEPARATOR);\n\n\t\tfraction = fractionSize > 0\n\t\t\t? this.DECIMAL_SEPARATOR + (fraction + this.PADDING).substring(0, fractionSize)\n\t\t\t: '';\n\n\t\tinteger = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.THOUSANDS_SEPARATOR);\n\n\t\treturn integer + fraction;\n\t}\n\n\tstatic parseCurrency(value: string | undefined, fractionSize: number = 2): string {\n\t\tlet [integer, fraction = ''] = (value || '').split(this.DECIMAL_SEPARATOR);\n\n\t\tinteger = integer.replace(new RegExp(this.THOUSANDS_SEPARATOR, 'g'), '');\n\n\t\tfraction = parseInt(fraction, 10) > 0 && fractionSize > 0\n\t\t\t? this.DECIMAL_SEPARATOR + (fraction + this.PADDING).substring(0, fractionSize)\n\t\t\t: '';\n\n\t\treturn integer + fraction;\n\t}\n\n\n\t//http://stackoverflow.com/questions/2998784/how-to-output-integers-with-leading-zeros-in-javascript\n\tstatic pad(num: number | null | undefined, size: number): string {\n\n\t\tnum = null;\n\t\tlet s = num + '';\n\t\twhile (s.length < size) { s = '0' + s; }\n\t\treturn s;\n\t}\n\n\tstatic sum(ns: (number | null | undefined)[]): number {\n\t\tconst r = <number>ns.reduce((a, b) => (a ?? 0) + (b ?? 0), 0);\n\t\treturn r;\n\t}\n\n}\n","import moment from 'moment';\n\nexport class DateFunc {\n\n\t/**\n\t * Transform UTC DateTime to local date without H, M and S. For example, the month day of 2018-01-23T22:00:00Z is 24 in Australia.\n\t * @param dtUtc\n\t * @param offsetMinutes if not defined, it will be new Date().getTimezoneOffset(). //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\n\t */\n\tstatic dateTimeUtcToLocalDateNumber(dtUtc: Date | null | undefined): number {\n\t\tif (!dtUtc) {\n\t\t\treturn 0; //0 is better for calculation by the clients.\n\t\t}\n\n\t\tconst localDt = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);\n\t\tconst localDNum = localDt.setHours(0, 0, 0, 0);\n\n\t\treturn localDNum;\n\t}\n\n\t/**\n\t * Date only. However, the date may still be in UTC.\n\t * @param dtUtc\n\t */\n\tstatic dateTimeUtcToLocalDate(dtUtc: Date | null | undefined): Date {\n\t\tconst localDt = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);\n\t\tconst localD = localDt.setHours(0, 0, 0, 0);\n\t\treturn new Date(localD);\n\t}\n\n\tstatic localISODateString(dtUtc: Date | null | undefined): string {\n\t\tconst dt = moment(dtUtc).local();\n\t\treturn dt.format('YYYY-MM-DD');\n\t}\n\n\t/**\n\t * locate date ONLY (no time) to UTC date.\n\t * @param dt if dt contain time info, it will become dt.setHours(0, 0, 0, 0)\n\t */\n\tstatic localDateToUtc(d: Date | number | null | undefined | string): Date {\n\t\tconst dt = moment(d).toDate();\n\t\tconst n = dt.setHours(0, 0, 0, 0);\n\t\tconst offset = dt.getTimezoneOffset() * 60000;\n\t\treturn new Date(n + offset);\n\t}\n\n\tstatic getTimezoneOffset(): number {\n\t\tconst dt = this.today;\n\t\treturn dt.getTimezoneOffset();\n\t}\n\n\t/**\n\t * Transform UTC DateTime to local dateTime.\n\t * @param dtUtc\n\t * @param offsetMinutes if not defined, it will be new Date().getTimezoneOffset(). //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\n\t */\n\tstatic dateTimeUtcToLocalDateTime(dtUtc: Date | null | undefined): Date {\n\t\tconst stillUtc = moment.utc(dtUtc).toDate();\n\t\treturn moment(stillUtc).local().toDate();\n\t}\n\n\tstatic dateTimeUtcToLocaMoment(dtUtc: Date | null | undefined): moment.Moment {\n\t\tconst stillUtc = moment.utc(dtUtc);\n\t\treturn stillUtc.local();\n\t}\n\n\tstatic getEndOfWeek(dt: Date | null | undefined | number) {\n\t\treturn moment(dt).endOf('isoWeek').toDate();\n\t}\n\n\tstatic getStartOfWeek(dt: Date | null | undefined | number) {\n\t\treturn moment(dt).startOf('isoWeek').toDate();\n\t}\n\n\tstatic getEndOfMonth(dt: Date | null | undefined | number) {\n\t\t// return new Date(dt.getFullYear(), dt.getMonth() + 1, 0, 23, 59, 59, 999);\n\t\treturn moment(dt).endOf('month').toDate();\n\t}\n\n\tstatic getStartOfMonth(dt: Date | null | undefined | number) {\n\t\treturn moment(dt).startOf('month').toDate();\n\t}\n\n\tstatic getDaysBetweenDates(dt1: Date | null | undefined, dt2: Date | null | undefined) {\n\t\treturn this.getDaysBetween(dt1, dt2);\n\t}\n\n\tstatic getEndOfDate(dt: Date | null | undefined): Date {\n\t\treturn dt ? new Date(dt.setHours(23, 59, 59, 999)) :\n\t\t\tnew Date(this.now.setHours(23, 59, 59, 999));\n\t}\n\n\tstatic getStartOfDate(dt: Date | null | undefined): Date {\n\t\treturn moment(dt).startOf('day').toDate();\n\t}\n\n\tstatic getEndOfToday(): Date {\n\t\t//\treturn new Date((new Date(Date.now())).setHours(23, 59, 59, 999));\n\t\treturn moment(Date.now()).endOf('day').toDate();\n\n\t}\n\n\tstatic getStartOfToday(): Date {\n\t\t//\treturn new Date((new Date(Date.now())).setHours(0, 0, 0, 0));\n\t\treturn moment(Date.now()).startOf('day').toDate();\n\t}\n\n\t//inspired https://stackoverflow.com/questions/563406/add-days-to-javascript-date\n\tstatic addDays(dt: Date | null | undefined, days: number = 0) {\n\t\tconst dat = moment(dt);\n\t\tdat.add(days, 'days');\n\t\treturn dat.toDate();\n\t}\n\n\tstatic subtractDays(dt: Date | null | undefined, days: number = 0) {\n\t\tconst dat = moment(dt);\n\t\tdat.subtract(days, 'days');\n\t\treturn dat.toDate();\n\t}\n\n\t/**\n\t * Start of today\n\t */\n\tstatic get today(): Date {\n\t\treturn this.getStartOfToday();\n\t}\n\n\tstatic get now(): Date {\n\t\treturn new Date(Date.now());\n\t}\n\n\tstatic getNext5MinuteMark(): Date {\n\t\tconst m = moment().set('second', 0).set('millisecond', 0);\n\t\tconst minute = m.minute();\n\t\tconst mod = minute % 5;\n\t\tif (mod) {\n\t\t\tconst delta = 5 - mod;\n\t\t\treturn m.add(delta, 'm').toDate();\n\t\t}\n\n\t\treturn m.toDate();\n\t}\n\n\tstatic getYMD(d: Date) {\n\t\treturn moment(d).format('YYYYMMDD');\n\t}\n\n\tstatic getDMYWithSlash(d: Date) {\n\t\treturn moment(d).format('DD/MM/YYYY');\n\t}\n\n\tstatic getDMYHmWithSlash(d: Date) {\n\t\treturn moment(d).format('DD/MM/YYYY HH:mm');\n\t}\n\n\tstatic getMcpTime(dt: Date | null | undefined) {\n\t\treturn moment(dt).format('HH:mm:ss.SSSZ');\n\t}\n\n\t/**\n\t * In 24 hour format\n\t * @param dtUtc\n\t */\n\tstatic getLocalDMYHmWithSlash(dtUtc: Date | null | undefined) {\n\t\tconst d = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);\n\t\treturn moment(d).format('DD/MM/YYYY HH:mm');\n\t}\n\n\t/**\n\t * Offset minutes comparing with today\n\t */\n\tstatic getOffsetMinutes(dtUtc: Date | null | undefined | number): number {\n\t\tconst dm1 = moment(dtUtc);\n\t\tconst dm2 = moment(new Date().setHours(0, 0, 0, 0));\n\t\treturn dm1.diff(dm2, 'minutes');\n\t}\n\n\tstatic getDaysBetween(d1?: Date | number | null | undefined, d2?: Date | number | null | undefined): number {\n\t\tconst dm1 = moment(d1);\n\t\tconst dm2 = moment(d2);\n\t\treturn dm2.diff(dm1, 'days');\n\t}\n\n\t/**\n\t * Get hour of the date. If Date is not defined, the hour will be current hour.\n\t * @param dtUtc\n\t */\n\tstatic getHour(dtUtc: Date | null | undefined | number): number {\n\t\tconst m = moment(dtUtc);\n\t\treturn m.hours();\n\t}\n\n\tstatic getMinute(dtUtc: Date | null | undefined | number): number {\n\t\tconst m = moment(dtUtc);\n\t\treturn m.minutes();\n\t}\n\n\tstatic composeDateTime(dt: Date | null | undefined, h: number = 0, minute: number = 0): Date {\n\t\tconst mt = moment(dt);\n\t\treturn new Date(mt.toDate().setHours(h, minute, 0, 0));\n\t}\n\n\tstatic olderThan24Hours(d: Date | null | undefined): boolean {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'hours') >= 24;\n\t}\n\n\tstatic olderThan24HoursUtc(dtUtc: Date | null | undefined): boolean {\n\t\treturn DateFunc.getHourAgeUtc(dtUtc) >= 24;\n\t}\n\n\tstatic olderThanHours(d: Date, hours: number) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'hours') >= hours;\n\t}\n\n\tstatic olderThanHoursUtc(dtUtc: Date | null | undefined, hours: number): boolean {\n\t\treturn DateFunc.getHourAgeUtc(dtUtc) >= hours;\n\t}\n\n\tstatic olderThanMinutes(d: Date, minutes: number) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'minutes') >= minutes;\n\t}\n\n\t/**\n\t * It could be 11PM yesterday, and 1 AM today. Actually based on local today.\n\t */\n\tstatic olderThan1Day(dtUtc: Date | null | undefined): boolean {\n\t\treturn DateFunc.getDayAgeUtc(dtUtc) > 0;\n\t}\n\n\tstatic getHourAge(d: Date) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'hours');\n\t}\n\n\tstatic getHourAgeUtc(dtUtc: Date | null | undefined) {\n\t\tconst m = moment.utc(dtUtc);\n\t\treturn moment.utc().diff(m, 'hours');\n\t}\n\n\t/**\n\t * Compare utc date with utc now.\n\t * @param dtUtc\n\t */\n\tstatic getDayAgeUtc(dtUtc: Date | null | undefined) {\n\t\tconst m = moment.utc(dtUtc);\n\t\treturn moment.utc().diff(m, 'days');\n\t}\n\n\t/**\n\t * How many years from now.\n\t * @param d \n\t * @returns \n\t */\n\tstatic getAge(d: Date) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'years');\n\t}\n\n\t/**\n\t * Year of date.\n\t * @param d \n\t * @returns \n\t */\n\tstatic getYear(d: Date) {\n\t\tconst m = moment(d);\n\t\treturn m.year();\n\t}\n\n\tstatic getUtcNow(): Date {\n\t\treturn moment.utc().toDate();\n\t}\n\n\tstatic addMinutes(d: Date, m: number): Date {\n\t\treturn moment(d).add(m, 'm').toDate();\n\t}\n\n\tstatic addMonth(d: Date, m: number): Date {\n\t\treturn moment(d).add(m, 'M').toDate();\n\t}\n\n\tstatic getDuration(d1: Date, d2: Date) {\n\t\tconst md1 = moment(d1);\n\t\tconst md2 = moment(d2);\n\t\treturn moment.duration(md2.diff(md1));\n\t}\n\n\t/**\n\t * Convert minutes from midnight to HH:mm text\n\t * @param mins\n\t */\n\tstatic getHMFromMins(mins: number): string {\n\t\t// do not include the first validation check if you want, for example,\n\t\t// getTimeFromMins(1530) to equal getTimeFromMins(90) (i.e. mins rollover)\n\t\tif (mins >= 24 * 60 || mins < 0) {\n\t\t\tthrow new RangeError('Valid input should be greater than or equal to 0 and less than 1440.');\n\t\t}\n\t\tconst h = mins / 60 | 0,\n\t\t\tm = mins % 60 | 0;\n\t\treturn moment.utc().hours(h).minutes(m).format('HH:mm');\n\t}\n\n\tstatic getMinutesSinceMidnight(d: Date | null | undefined) {\n\t\tconst m = moment(d);\n\t\tconst midnight = moment(d).startOf('day'); //Mutates the original moment by setting it to the start of a unit of time. So I have better not to use m which wil be changed by calling this function\n\t\treturn m.diff(midnight, 'minutes');\n\t}\n\n\tstatic getMinutesBetween(start: Date | null | undefined, end: Date | null | undefined) {\n\t\tconst m = moment(start);\n\t\tconst m2 = moment(end);\n\t\treturn m2.diff(m, 'minutes');\n\t}\n\n\t/**\n\t * Parse json string with date serialized into string, and get proper date object back\n\t * @param s\n\t */\n\tstatic dateSafeJsonParse(s: string) {\n\t\treturn JSON.parse(s, this.dateReviver);\n\t}\n\n\tprivate static dateReviver(key: string, value: any) {\n\t\tif (DateFunc.isSerializedDate(value)) {\n\t\t\treturn (new Date(value));\n\t\t}\n\n\t\t// If it's not a date-string, we want to return the value as-is. If we fail to return\n\t\t// a value, it will be omitted from the resultant data structure.\n\t\treturn (value);\n\n\t}\n\n\n\t// I determine if the given value is a string that matches the serialized-date pattern.\n\tprivate static isSerializedDate(value: any): boolean {\n\t\t// Dates are serialized in TZ format, example: '1981-12-20T04:00:14.000Z'.\n\t\tconst datePattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n\t\treturn (DateFunc.isString(value) && datePattern.test(value));\n\t}\n\n\n\t// I determine if the given value is a String.\n\tprivate static isString(value: any): boolean {\n\t\treturn ({}.toString.call(value) === '[object String]');\n\t}\n\n\tstatic dateSafeParse(s: string | Date) {\n\t\tconst m = moment(s);\n\t\treturn m.toDate();\n\t}\n\n\tstatic composeDateWithMinutes(d: Date, minute: number): Date {\n\t\tconst m = moment(d);\n\t\tconst midnight = moment(d).startOf('day'); // Mutates the original moment by setting it to the start of a unit of time. So I have better not to use m which wil be changed by calling this function\n\t\tmidnight.add(minute, 'minutes');\n\t\treturn midnight.toDate();\n\t}\n\n\t/**\n\t * Safe compare since date data may be considered as string rather than date.\n\t * @param d1\n\t * @param d2\n\t */\n\tstatic compare(d1: Date | undefined, d2: Date | undefined): number {\n\t\tif (!d1 && !d2) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (!d1) {\n\t\t\treturn -NaN\n\t\t}\n\n\t\tif (!d2) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\tconst dd1 = (new Date(d1)).valueOf();\n\t\tconst dd2 = (new Date(d2)).valueOf();\n\t\treturn dd1 - dd2;\n\t}\n}\n\n","export class HtmlPrintFunc {\n\t/**\n\t * Print with CSS for internal reports\n\t * @param htmlTags\n\t * @param cssUrl\n\t */\n\tstatic printWithCSS(htmlTags: string, cssUrl: string) {\n\t\tif (window) {\n\t\t\tconst htmlToPrint = `<html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${cssUrl}\" media=\"screen,print\"/>\n</head><body onload=\"window.print()\">${htmlTags}</body></html>`;\n\n\t\t\tconst popup = window.open('', '_blank', 'width=1024,height=768');\n\t\t\tpopup?.document.open();\n\t\t\tpopup?.document.write(htmlToPrint);\n\n\t\t\tpopup?.document.close();\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Print for external documents.\n\t * @param htmlTags\n\t */\n\tstatic print(htmlTags: string) {\n\t\tif (window) {\n\t\t\tconst htmlToPrint = `<html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"/>\n</head><body onload=\"window.print()\">${htmlTags}</body></html>`;\n\n\t\t\tconst popup = window.open('', '_blank', 'width=1024,height=768');\n\t\t\tpopup?.document.open();\n\t\t\tpopup?.document.write(htmlToPrint);\n\n\t\t\tpopup?.document.close();\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Print image url through html img.\n\t * @param url \n\t */\n\tstatic printImage(url: string) {\n\t\tconst imageTags = `<img src=\"${url}\" alt=\"Image from URL\"/>`;\n\t\tHtmlPrintFunc.print(imageTags);\n\t}\n}\n","export class JavaScriptFunc {\r\n\t/**\r\n\t * Some business functions depend on external JavaScript libraries. Lazy loading of respective business modules is good, \r\n\t * and this function supports lazy loading of JS libraries.\r\n\t * @param scriptUrl \r\n\t * @param type things like module.\r\n\t * @returns Promise for subsequent JS function calls.\r\n\t */\r\n\tstatic loadExternalScript(scriptUrl: string, type?: string) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst scriptElement = document.createElement('script');\r\n\t\t\tif (type){\r\n\t\t\t\tscriptElement.type=type;\r\n\t\t\t}\r\n\r\n\t\t\tscriptElement.src = scriptUrl;\r\n\t\t\tscriptElement.onload = resolve;\r\n\t\t\tdocument.body.appendChild(scriptElement);\r\n\t\t});\r\n\t}\r\n}\r\n","import { DateFunc } from './dateFunc';\n\n/**\n * Basic JSON functions\n */\nexport class JsonFunc {\n\t/**\n\t * \n\t * @param array Group by a property of array element.\n\t * @param propertyName \n\t * @returns \n\t */\n\tstatic groupBy<T>(array: Array<T>, propertyName: string) {\n\t\treturn array.reduce(function(acc: any, obj: any) {\n\t\t\tconst key = obj[propertyName];\n\t\t\tif (!acc[key]) {\n\t\t\t\tacc[key] = [];\n\t\t\t}\n\t\t\tacc[key].push(obj);\n\t\t\treturn acc;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Group by a date property. The key is always of string type and representing milliseconds. \n\t * The client should convert the string to number.\n\t * Angular date pipe could actually consume such string without explicitly converting to number.\n\t * @param array\n\t * @param propertyName\n\t */\n\tstatic groupByDate<T>(array: Array<T>, propertyName: string) {\n\t\treturn array.reduce(function(acc: any, obj: any) {\n\t\t\tconst key = DateFunc.dateTimeUtcToLocalDateNumber(obj[propertyName]);\n\t\t\tif (!acc[key]) {\n\t\t\t\tacc[key] = [];\n\t\t\t}\n\t\t\tacc[key].push(obj);\n\t\t\treturn acc;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Remove null or empty fields including those in nested objects.\n\t * This is useful for reducing payload of AJAX serialization.\n\t * @param obj \n\t */\n\tstatic removeNullOrEmptyFields(obj: any) {\n\t\tfor (const f in obj) {\n\t\t\tlet p = obj[f];\n\t\t\tif (p === null || p === '') {\n\t\t\t\tdelete obj[f];\n\t\t\t} else if (typeof p === 'object' && p !== null) {\n\t\t\t\tthis.removeNullOrEmptyFields(p);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * \n\t * @param obj Remove null fields of object at only the 1st level.\n\t */\n\tstatic removeNullFields(obj: any) {\n\t\tfor (const f in obj) {\n\t\t\tif (obj[f] === null) {\n\t\t\t\tdelete obj[f];\n\t\t\t}\n\t\t}\n\t}\n\n}\n","/**\n * String functions specific to Australia\n */\nexport class StringAusFunc {\n\n\t//thanks to https://github.com/sidorares/australian-business-number/blob/0591475f5978fd122b472edcdc7efe6d96d56f26/index.js\n\tprivate static acnWeights = [8, 7, 6, 5, 4, 3, 2, 1];\n\tprivate static weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];\n\n\tprivate static suggestLookup: number[] = StringAusFunc.generateLookup();\n\n\t/**\n\t * Validate medicare number\n\t * @param n\n\t * @returns validation error message\n\t */\n\tstatic validateMedicare(n: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!n) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (n && n.length === 10) {\n\t\t\tconst matches = n.match(/^(\\d{8})(\\d)/);\n\n\t\t\tif (!matches) {\n\t\t\t\treturn {\n\t\t\t\t\tcode: 2, message: 'Medicare number should be all digit.'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst base = matches[1];\n\t\t\tconst checkDigit = matches[2];\n\t\t\tconst weights = [1, 3, 7, 9, 1, 3, 7, 9];\n\n\t\t\tlet sum = 0;\n\t\t\tfor (let i = 0; i < weights.length; i++) {\n\t\t\t\tsum += parseInt(base[i], 10) * weights[i];\n\t\t\t}\n\n\t\t\t//console.debug(`sum: ${sum} checkDigits: ${checkDigit}`);\n\t\t\tconst isValid = sum % 10 === parseInt(checkDigit, 10);\n\t\t\tif (!isValid) {\n\t\t\t\treturn {\n\t\t\t\t\tcode: 3, message: 'Checksum is incorrect.'\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\treturn { code: 1, message: 'Length should be 10.' };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic validateMedicareProviderNumber(providerNumber: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!providerNumber) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!/^[0-9]{6}[0-9ABCDEFGHJKLMNPQRTUVWXY][ABFHJKLTWXY]/.test(providerNumber)) {\n\t\t\treturn { code: 1, message: 'Not matching provider number format.' };\n\t\t}\n\n\t\tconst practiceLocationValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y'];\n\t\tconst remainderValues = ['Y', 'X', 'W', 'T', 'L', 'K', 'J', 'H', 'F', 'B', 'A'];\n\t\tconst stemWeights = [3, 5, 8, 4, 2, 1];\n\n\t\tconst stemNumbers = providerNumber.substr(0, 6).split('').map((char) => parseInt(char));\n\t\tconst practiceLoc = practiceLocationValues.findIndex((e) => e === providerNumber[6]);\n\t\tconst checksum = providerNumber[7];\n\n\t\tconst zipped = stemWeights.map((x, i) => [x, stemNumbers[i]]);\n\t\tconst sumWeights = zipped.map((y) => y[1] * y[0]).reduce((total, num) => total + num);\n\t\tconst remainder = (sumWeights + practiceLoc * 6) % 11;\n\n\t\tconst result = remainderValues[remainder];\n\n\t\tconst valid = result === checksum;\n\t\tif (!valid) {\n\t\t\treturn { code: 2, message: 'Checksum is incorrect.' };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic validateDVAFileNumber(dva: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!dva) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst states = ['N', 'V', 'Q', 'S', 'W', 'T'];\n\t\tconst warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW', //Australian Forces\n\t\t\t'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL', //British Administration Group\n\t\t\t'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A', //Other Overseas Forces\n\t\t\t'N', 'NX', 'NSW', 'NSM', //New Zealand Administration Group\n\t\t\t'BUR', 'CNK', 'CNS', 'FIJ', 'GHA', 'HKS', 'IND', 'KYA', 'MAU', 'MLS', 'MTX', 'MWI', 'NK', 'NGR', 'NRD', 'NSS', 'PK']//British Commonwealth Countries - SP Eligibility\n\n\t\tif (!states.includes(dva.charAt(0))) {\n\t\t\treturn { code: 1, message: 'State incorrect.' };\n\t\t}\n\n\t\tconst ns = dva.match(/\\d+/);\n\t\tif (!ns) {\n\t\t\treturn { code: 2, message: 'No number.' };\n\t\t}\n\n\t\tconst n = ns[0];\n\t\tconst idxOfN = dva.indexOf(n);\n\t\tconst warCode = dva.substring(1, idxOfN);\n\t\tif (!warCodes.includes(warCode)) {\n\t\t\treturn { code: 3, message: 'War code invalid.' }\n\t\t}\n\n\t\tconst lenOfN = n.length;\n\t\tconst lenOfWc = warCode.length;\n\t\tif (lenOfN + lenOfWc > 7) {\n\t\t\treturn { code: 4, message: 'File number length should not be greater 7.' }\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic validateTFN(n: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!n) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst tfn = n.replace(/\\s+/g, '').replace(/[-]/g, '');\n\n\t\tconst isNumber = /^[0-9]+$/.test(tfn);\n\t\tif (!isNumber) {\n\t\t\treturn { code: 1, message: 'Invalid TFN, only numbers are allowed.' };\n\t\t}\n\n\t\tconst length = tfn.length;\n\t\tif (length !== 9) {\n\t\t\treturn {\n\t\t\t\tcode: 2, message: 'Invalid TFN, must have 9 digits.'\n\t\t\t};\n\t\t}\n\n\t\tconst digits = tfn.split('').map(d => parseInt(d));\n\n\t\tconst sum = (digits[0] * 1)\n\t\t\t+ (digits[1] * 4)\n\t\t\t+ (digits[2] * 3)\n\t\t\t+ (digits[3] * 7)\n\t\t\t+ (digits[4] * 5)\n\t\t\t+ (digits[5] * 8)\n\t\t\t+ (digits[6] * 6)\n\t\t\t+ (digits[7] * 9)\n\t\t\t+ (digits[8] * 10);\n\n\t\tconst remainder = sum % 11;\n\t\tconst valid = remainder === 0;\n\t\tif (!valid) {\n\t\t\treturn { code: 3, message: 'Checksum is incorrect.' };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate static addWeighted(p: number, v: number, i: number) {\n\t\treturn p + v * StringAusFunc.weights[i];\n\t}\n\n\tprivate static addAcnWeighted(p: number, v: number, i: number) {\n\t\treturn p + v * StringAusFunc.acnWeights[i];\n\t}\n\n\tprivate static generateLookup(): number[] {\n\t\tconst ns: number[] = [];\n\t\tfor (let i = 0; i < 10; ++i) {\n\t\t\tns[i * 19 % 89] = i;\n\t\t}\n\n\t\treturn ns;\n\t}\n\n\tstatic validateABN(abn: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!abn) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst digits = abn.replace(/[^\\d]/g, '').split('').map(Number);\n\t\tif (digits.length !== 11) {\n\t\t\treturn { code: 1, message: 'Expect 11-digit.' };\n\t\t}\n\n\t\tdigits[0] -= 1;\n\n\t\tconst sum = digits.reduce(StringAusFunc.addWeighted, 0);\n\n\t\tif (sum % 89 === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tdigits[0] += 1;\n\n\t\tlet sum1 = sum - digits[10] * StringAusFunc.weights[10];\n\t\tlet digit = StringAusFunc.suggestLookup[89 - sum1 % 89];\n\t\tif (digit !== undefined) {\n\t\t\treturn {\n\t\t\t\tcode: 2,\n\t\t\t\tmessage: 'Checksum1 is incorrect.'\n\t\t\t}\n\t\t} else {\n\t\t\tconst sum2 = sum1 - digits[9] * StringAusFunc.weights[9];\n\t\t\tfor (let i = 0; i < 10; ++i) {\n\t\t\t\tsum1 = sum2 + i * StringAusFunc.weights[9];\n\t\t\t\tdigit = StringAusFunc.suggestLookup[89 - sum1 % 89];\n\t\t\t\tif (digit !== undefined) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcode: 3,\n\t\t\t\t\t\tmessage: 'Checksum2 is incorrect.'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t}\n\n\tstatic validateACN(acn: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!acn) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst digits = acn.replace(/[^\\d]/g, '').split('').map(Number);\n\t\tconsole.log(digits);\n\t\tif (digits.length !== 9) {\n\t\t\treturn { code: 1, message: 'Expect 9-digit.' };\n\t\t}\n\n\n\t\tconst sum = digits.slice(0, 8).reduce(StringAusFunc.addAcnWeighted, 0);\n\t\tconst lastDigit = 10 - sum % 10;\n\t\tif (lastDigit === digits[8]) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tcode: 2,\n\t\t\tmessage: 'Checksum is incorrect.'\n\t\t};\n\t}\n}\n","export class StringFunc {\n\n\t/**\n\t * Up to 2 letters. For John Smith, returns JS, for Huang, Zijian, returns ZH\n\t * @param s\n\t */\n\tstatic getAbbr(s: string | null | undefined) {\n\t\tif (!s) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst sArray = s.split(/[\\s,]+/);\n\t\tconst comma = s.indexOf(',') >= 0;\n\n\t\tif (sArray.length === 1) {\n\t\t\treturn sArray[0][0];\n\t\t}\n\n\t\treturn comma ? sArray[1][0] + sArray[0][0] : sArray[0][0] + sArray[1][0];\n\t}\n\n\t/**\n\t * A substring with line breaks replaced by space.\n\t * @param s\n\t * @param length\n\t * @returns result, or empty string if the input is empty, null or undefined\n\t */\n\tstatic getOneLineDigest(s: string | null | undefined, length: number) {\n\t\tif (!s) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst ss = s.substring(0, length);\n\t\tconst st = ss.replace(new RegExp('\\n', 'g'), ' ') + ((s.length > length) ? '...' : '');\n\t\treturn st.trim();\n\t}\n\n\t/**\n\t * Remove line breaks and econde with encodeURI() so the data could be saved in Azure as meta. If the string is truncated, the return will have ... suffix.\n\t * @param s\n\t * @param length\n\t * @returns result, or empty string if the input is empty, null or undefined\n\t */\n\tstatic getOneLineDigestOfHtml(s: string | null | undefined, length: number) {\n\t\tif (!s) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst ss = s.substring(0, length);\n\t\tconst st = ss.replace(new RegExp('\\n', 'g'), ' ') + ((s.length > length) ? '...' : '');\n\t\treturn encodeURI(st.trim()); //need to encode in order to save as meta in Azure.\n\t}\n\n\t/**\n\t * Pad number with zero\n\t * @param num \n\t * @param size \n\t * @returns \n\t */\n\tstatic pad(num: number | undefined, size: number): string {\n\t\tif (num == null) {\n\t\t\treturn '';\n\t\t}\n\n\t\tlet s = num + '';\n\t\twhile (s.length < size) { s = '0' + s; }\n\t\treturn s;\n\t}\n\n\t/**\n\t * get plain text of HTML content\n\t * @param s\n\t * @returns result. If input is empty, null, or undefined, return the same.\n\t */\n\tstatic getHtmlPlainText(s: string | null | undefined): string | null {\n\t\tif (!s) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst parser = new DOMParser();\n\t\tconst html = parser.parseFromString(s, 'text/html');\n\t\treturn html.body.textContent;\n\t}\n\n\t/**\n\t *\n\t * @param s\n\t * @returns result. If input is empty, null, or undefined, return the same.\n\t */\n\tstatic capitalizeWords(s: string | null | undefined): string | null | undefined { // thanks to https://stackoverflow.com/questions/2332811/capitalize-words-in-string\n\t\tif (!s) {\n\t\t\treturn s;\n\t\t}\n\n\t\treturn s.replace(/(?:^|\\s)\\S/g, (a) => a.toUpperCase());\n\t}\n\n\tstatic validateEmail(email: string | null | undefined): boolean {\n\t\tif (!email) {\n\t\t\treturn true;\n\t\t}\n\t\tconst re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\t\treturn re.test(email.toLowerCase());\n\t}\n}\n","import { v4 as uuid } from 'uuid'; //todo: somehow the system could not recognize v5.\n// import { v5 as uuid } from 'uuid/v5 causes ERROR in src / app / _func / helperFunc.ts(1, 10): error TS2305: Module '\"C:/VSProjects/ApsCloudTrunk/APS.WebPos.NGCli/NGSource/node_modules/@types/uuid/v5\"' has no exported member 'v5'\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/28439\n\nexport class UuidFunc {\n\t/**\n\t * 36 UUID string including 4 hyphens. MySql stores GUID as 36 bytes anyway rather than 16bytes.\n\t */\n\tstatic newUUID(): string {\n//\t\treturn uuid('medilink.com.au', 'apscloud');\n\t\treturn uuid();\n\t}\n\n\tstatic newUUIDStartWith0() {\n\t\tconst s = uuid();\n\t\treturn '0000' + s.slice(4);\n\t}\n}\n","/*\n * Public API Surface of nmce-func\n */\n\nexport * from './_func/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid"],"mappings":"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"}
1
+ {"version":3,"file":"nmce-func.mjs","sources":["../../../projects/nmce-func/src/_func/addressFunc.ts","../../../projects/nmce-func/src/_func/authentication.service.ts","../../../projects/nmce-func/src/_func/currencyFunc.ts","../../../projects/nmce-func/src/_func/dateFunc.ts","../../../projects/nmce-func/src/_func/htmlPrintFunc.ts","../../../projects/nmce-func/src/_func/javascriptFunc.ts","../../../projects/nmce-func/src/_func/jsonFunc.ts","../../../projects/nmce-func/src/_func/stringAusFunc.ts","../../../projects/nmce-func/src/_func/stringFunc.ts","../../../projects/nmce-func/src/_func/uuidFunc.ts","../../../projects/nmce-func/src/public-api.ts","../../../projects/nmce-func/src/nmce-func.ts"],"sourcesContent":["export class AddressFunc {\n\t/**\n\t * Compose to one line separated by comma\n\t * @param st1\n\t * @param st2\n\t * @param city\n\t * @param state\n\t * @param postcode\n\t */\n\tstatic composeOneLineAddress(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, postcode: string | undefined): string {\n\t\treturn AddressFunc.composeAddress(st1, st2, city, state, postcode, ', ');\n\t}\n\n\t/**\n\t * Compose to multiple separated by \\n\n\t * @param st1\n\t * @param st2\n\t * @param city\n\t * @param state\n\t * @param postcode\n\t */\n\tstatic composeMultiLineAddress(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, postcode: string | undefined): string {\n\t\treturn AddressFunc.composeAddress(st1, st2, city, state, postcode, '\\n');\n\t}\n\n\t/**\n\t * Compose with separator\n\t * @param st1\n\t * @param st2\n\t * @param city\n\t * @param state\n\t * @param postcode\n\t * @param sep\n\t */\n\tstatic composeAddress(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, postcode: string | undefined, sep: string | undefined): string {\n\t\tconst r = (st1 ? (st1 + sep) : '') + (st2 ? (st2 + sep) : '') + (city ? (city + sep) : '') + (state ? (state + ' ') : '') + (postcode ? postcode : '');\n\t\treturn r;\n\t}\n\n\tstatic composeGoogleMapsAuUrl(st1: string | undefined, st2: string | undefined, city: string | undefined, state: string | undefined, country: string | undefined): string {\n\t\tconst googleBaseUrl = 'https://www.google.com.au/maps?hl=en&q=';\n\t\tconst fff = (s: string | undefined): string => {\n\t\t\tif (!s) {\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn '+' + encodeURIComponent(s.replace(' ', '+')) + ',';\n\t\t};\n\n\t\tconst ss = fff(st1) + fff(st2) + fff(city) + fff(state) + fff(country);\n\t\treturn googleBaseUrl + ss;\n\t}\n\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { map } from 'rxjs/operators';\r\n\r\n/**\r\n * Login and saving tokens in sessionStorage.\r\n * App needs to provide constant 'auth.tokenUrl'.\r\n */\r\n@Injectable()\r\nexport class AuthenticationService {\r\n\tusername?: string;\r\n\r\n\tconstructor(@Inject('auth.tokenUrl') private authUri: string, private http: HttpClient) {\r\n\t}\r\n\r\n\t/**\r\n\t * Login and save tokens to sessionStorage then return an observable.\r\n\t * @param username\r\n\t * @param password\r\n\t */\r\n\tlogin(username: string, password: string, headers?: any) {\r\n\t\tconst body = 'username=' + username + '&password=' + password + '&grant_type=password';\r\n\t\tconst contentTypeHeader = { 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8' };\r\n\t\tconst mergedHeaders = headers ? { ...contentTypeHeader, ...headers } : contentTypeHeader;\r\n\t\tconst options = { headers: mergedHeaders };\r\n\t\treturn this.http.post<{\r\n\t\t\taccess_token: string;\r\n\t\t\texpires: string;\r\n\t\t\texpires_in: number;\r\n\t\t\tissued: string;\r\n\t\t\ttoken_type: string;\r\n\t\t\tusername: string;\r\n\t\t}>(this.authUri, body, options)\r\n\t\t\t.pipe(map(\r\n\t\t\t\tresponse => {\r\n\t\t\t\t\t//sessionStorage.setItem('access_token', response.access_token); The client code is response to doing these.\r\n\t\t\t\t\t//sessionStorage.setItem('expires_in', response.expires_in.toString());\r\n\t\t\t\t\t//sessionStorage.setItem('token_type', response.token_type);\r\n\t\t\t\t\t//sessionStorage.setItem('issued', response.issued);\r\n\t\t\t\t\t//sessionStorage.setItem('expires', response.expires); // often up to 2 weeks by default in Asp.net identity 2.\r\n\t\t\t\t\tthis.username = response.username;\r\n\t\t\t\t\t//APP_STATUSES.userName = this.userName;\r\n\t\t\t\t\treturn response;\r\n\t\t\t\t}\r\n\r\n\t\t\t));\r\n\t}\r\n\r\n}\r\n","/**\n * Currency calculations. Undefined input of number is considered zero, just like null.\n */\nexport class CurrencyFunc {\n\tprivate static DECIMAL_SEPARATOR = '.';\n\tprivate static THOUSANDS_SEPARATOR = ',';\n\n\tprivate static PADDING = '000000';\n\n\t/**\n\t *\n\t * @param num\n\t * @param decimalPlaces default 0\n\t */\n\tstatic bankerRound(num: number | null | undefined, decimalPlaces?: number): number {//http://stackoverflow.com/questions/3108986/gaussian-bankers-rounding-in-javascript\n\t\tif (!num) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst d = decimalPlaces || 0;\n\t\tconst m = Math.pow(10, d);\n\t\tconst n = +(d ? num * m : num).toFixed(8); // Avoid rounding errors\n\t\tconst i = Math.floor(n), f = n - i;\n\t\tconst e = 1e-8; // Allow for rounding errors in f\n\t\tconst r = (f > 0.5 - e && f < 0.5 + e) ?\n\t\t\t((i % 2 === 0) ? i : i + 1) : Math.round(n);\n\t\treturn d ? r / m : r;\n\t}\n\n\tstatic bankerRoundTo5cents(num: number | null | undefined): number {\n\t\tif (!num) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst r = this.bankerRound(Math.ceil(num * 20 - 0.5) / 20, 2);\n\t\treturn r;\n\t}\n\n\tstatic ceilTo5cents(num: number | null | undefined): number {\n\t\tif (!num) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst r = this.bankerRound(Math.ceil(num * 20) / 20, 4);\n\t\tconst roundup = Math.ceil(r * 10000) / 10000;\n\t\treturn roundup;\n\t}\n\n\tstatic transformCurrency(value: number | string | undefined, fractionSize: number = 2): string {\n\t\tlet [integer, fraction = ''] = (value || '').toString()\n\t\t\t.split(this.DECIMAL_SEPARATOR);\n\n\t\tfraction = fractionSize > 0\n\t\t\t? this.DECIMAL_SEPARATOR + (fraction + this.PADDING).substring(0, fractionSize)\n\t\t\t: '';\n\n\t\tinteger = integer.replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.THOUSANDS_SEPARATOR);\n\n\t\treturn integer + fraction;\n\t}\n\n\tstatic parseCurrency(value: string | undefined, fractionSize: number = 2): string {\n\t\tlet [integer, fraction = ''] = (value || '').split(this.DECIMAL_SEPARATOR);\n\n\t\tinteger = integer.replace(new RegExp(this.THOUSANDS_SEPARATOR, 'g'), '');\n\n\t\tfraction = parseInt(fraction, 10) > 0 && fractionSize > 0\n\t\t\t? this.DECIMAL_SEPARATOR + (fraction + this.PADDING).substring(0, fractionSize)\n\t\t\t: '';\n\n\t\treturn integer + fraction;\n\t}\n\n\n\t//http://stackoverflow.com/questions/2998784/how-to-output-integers-with-leading-zeros-in-javascript\n\tstatic pad(num: number | null | undefined, size: number): string {\n\n\t\tnum = null;\n\t\tlet s = num + '';\n\t\twhile (s.length < size) { s = '0' + s; }\n\t\treturn s;\n\t}\n\n\tstatic sum(ns: (number | null | undefined)[]): number {\n\t\tconst r = <number>ns.reduce((a, b) => (a ?? 0) + (b ?? 0), 0);\n\t\treturn r;\n\t}\n\n}\n","import moment from 'moment';\n\nexport class DateFunc {\n\n\t/**\n\t * Transform UTC DateTime to local date without H, M and S. For example, the month day of 2018-01-23T22:00:00Z is 24 in Australia.\n\t * @param dtUtc\n\t * @param offsetMinutes if not defined, it will be new Date().getTimezoneOffset(). //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\n\t */\n\tstatic dateTimeUtcToLocalDateNumber(dtUtc: Date | null | undefined): number {\n\t\tif (!dtUtc) {\n\t\t\treturn 0; //0 is better for calculation by the clients.\n\t\t}\n\n\t\tconst localDt = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);\n\t\tconst localDNum = localDt.setHours(0, 0, 0, 0);\n\n\t\treturn localDNum;\n\t}\n\n\t/**\n\t * Date only. However, the date may still be in UTC.\n\t * @param dtUtc\n\t */\n\tstatic dateTimeUtcToLocalDate(dtUtc: Date | null | undefined): Date {\n\t\tconst localDt = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);\n\t\tconst localD = localDt.setHours(0, 0, 0, 0);\n\t\treturn new Date(localD);\n\t}\n\n\tstatic localISODateString(dtUtc: Date | null | undefined): string {\n\t\tconst dt = moment(dtUtc).local();\n\t\treturn dt.format('YYYY-MM-DD');\n\t}\n\n\t/**\n\t * locate date ONLY (no time) to UTC date.\n\t * @param dt if dt contain time info, it will become dt.setHours(0, 0, 0, 0)\n\t */\n\tstatic localDateToUtc(d: Date | number | null | undefined | string): Date {\n\t\tconst dt = moment(d).toDate();\n\t\tconst n = dt.setHours(0, 0, 0, 0);\n\t\tconst offset = dt.getTimezoneOffset() * 60000;\n\t\treturn new Date(n + offset);\n\t}\n\n\tstatic getTimezoneOffset(): number {\n\t\tconst dt = this.today;\n\t\treturn dt.getTimezoneOffset();\n\t}\n\n\t/**\n\t * Transform UTC DateTime to local dateTime.\n\t * @param dtUtc\n\t * @param offsetMinutes if not defined, it will be new Date().getTimezoneOffset(). //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getTimezoneOffset\n\t */\n\tstatic dateTimeUtcToLocalDateTime(dtUtc: Date | null | undefined): Date {\n\t\tconst stillUtc = moment.utc(dtUtc).toDate();\n\t\treturn moment(stillUtc).local().toDate();\n\t}\n\n\tstatic dateTimeUtcToLocaMoment(dtUtc: Date | null | undefined): moment.Moment {\n\t\tconst stillUtc = moment.utc(dtUtc);\n\t\treturn stillUtc.local();\n\t}\n\n\tstatic getEndOfWeek(dt: Date | null | undefined | number) {\n\t\treturn moment(dt).endOf('isoWeek').toDate();\n\t}\n\n\tstatic getStartOfWeek(dt: Date | null | undefined | number) {\n\t\treturn moment(dt).startOf('isoWeek').toDate();\n\t}\n\n\tstatic getEndOfMonth(dt: Date | null | undefined | number) {\n\t\t// return new Date(dt.getFullYear(), dt.getMonth() + 1, 0, 23, 59, 59, 999);\n\t\treturn moment(dt).endOf('month').toDate();\n\t}\n\n\tstatic getStartOfMonth(dt: Date | null | undefined | number) {\n\t\treturn moment(dt).startOf('month').toDate();\n\t}\n\n\tstatic getDaysBetweenDates(dt1: Date | null | undefined, dt2: Date | null | undefined) {\n\t\treturn this.getDaysBetween(dt1, dt2);\n\t}\n\n\tstatic getEndOfDate(dt: Date | null | undefined): Date {\n\t\treturn dt ? new Date(dt.setHours(23, 59, 59, 999)) :\n\t\t\tnew Date(this.now.setHours(23, 59, 59, 999));\n\t}\n\n\tstatic getStartOfDate(dt: Date | null | undefined): Date {\n\t\treturn moment(dt).startOf('day').toDate();\n\t}\n\n\tstatic getEndOfToday(): Date {\n\t\t//\treturn new Date((new Date(Date.now())).setHours(23, 59, 59, 999));\n\t\treturn moment(Date.now()).endOf('day').toDate();\n\n\t}\n\n\tstatic getStartOfToday(): Date {\n\t\t//\treturn new Date((new Date(Date.now())).setHours(0, 0, 0, 0));\n\t\treturn moment(Date.now()).startOf('day').toDate();\n\t}\n\n\t//inspired https://stackoverflow.com/questions/563406/add-days-to-javascript-date\n\tstatic addDays(dt: Date | null | undefined, days: number = 0) {\n\t\tconst dat = moment(dt);\n\t\tdat.add(days, 'days');\n\t\treturn dat.toDate();\n\t}\n\n\tstatic subtractDays(dt: Date | null | undefined, days: number = 0) {\n\t\tconst dat = moment(dt);\n\t\tdat.subtract(days, 'days');\n\t\treturn dat.toDate();\n\t}\n\n\t/**\n\t * Start of today\n\t */\n\tstatic get today(): Date {\n\t\treturn this.getStartOfToday();\n\t}\n\n\tstatic get now(): Date {\n\t\treturn new Date(Date.now());\n\t}\n\n\tstatic getNext5MinuteMark(): Date {\n\t\tconst m = moment().set('second', 0).set('millisecond', 0);\n\t\tconst minute = m.minute();\n\t\tconst mod = minute % 5;\n\t\tif (mod) {\n\t\t\tconst delta = 5 - mod;\n\t\t\treturn m.add(delta, 'm').toDate();\n\t\t}\n\n\t\treturn m.toDate();\n\t}\n\n\tstatic getYMD(d: Date) {\n\t\treturn moment(d).format('YYYYMMDD');\n\t}\n\n\tstatic getDMYWithSlash(d: Date) {\n\t\treturn moment(d).format('DD/MM/YYYY');\n\t}\n\n\tstatic getDMYHmWithSlash(d: Date) {\n\t\treturn moment(d).format('DD/MM/YYYY HH:mm');\n\t}\n\n\tstatic getMcpTime(dt: Date | null | undefined) {\n\t\treturn moment(dt).format('HH:mm:ss.SSSZ');\n\t}\n\n\t/**\n\t * In 24 hour format\n\t * @param dtUtc\n\t */\n\tstatic getLocalDMYHmWithSlash(dtUtc: Date | null | undefined) {\n\t\tconst d = DateFunc.dateTimeUtcToLocalDateTime(dtUtc);\n\t\treturn moment(d).format('DD/MM/YYYY HH:mm');\n\t}\n\n\t/**\n\t * Offset minutes comparing with today\n\t */\n\tstatic getOffsetMinutes(dtUtc: Date | null | undefined | number): number {\n\t\tconst dm1 = moment(dtUtc);\n\t\tconst dm2 = moment(new Date().setHours(0, 0, 0, 0));\n\t\treturn dm1.diff(dm2, 'minutes');\n\t}\n\n\tstatic getDaysBetween(d1?: Date | number | null | undefined, d2?: Date | number | null | undefined): number {\n\t\tconst dm1 = moment(d1);\n\t\tconst dm2 = moment(d2);\n\t\treturn dm2.diff(dm1, 'days');\n\t}\n\n\t/**\n\t * Get hour of the date. If Date is not defined, the hour will be current hour.\n\t * @param dtUtc\n\t */\n\tstatic getHour(dtUtc: Date | null | undefined | number): number {\n\t\tconst m = moment(dtUtc);\n\t\treturn m.hours();\n\t}\n\n\tstatic getMinute(dtUtc: Date | null | undefined | number): number {\n\t\tconst m = moment(dtUtc);\n\t\treturn m.minutes();\n\t}\n\n\tstatic composeDateTime(dt: Date | null | undefined, h: number = 0, minute: number = 0): Date {\n\t\tconst mt = moment(dt);\n\t\treturn new Date(mt.toDate().setHours(h, minute, 0, 0));\n\t}\n\n\tstatic olderThan24Hours(d: Date | null | undefined): boolean {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'hours') >= 24;\n\t}\n\n\tstatic olderThan24HoursUtc(dtUtc: Date | null | undefined): boolean {\n\t\treturn DateFunc.getHourAgeUtc(dtUtc) >= 24;\n\t}\n\n\tstatic olderThanHours(d: Date, hours: number) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'hours') >= hours;\n\t}\n\n\tstatic olderThanHoursUtc(dtUtc: Date | null | undefined, hours: number): boolean {\n\t\treturn DateFunc.getHourAgeUtc(dtUtc) >= hours;\n\t}\n\n\tstatic olderThanMinutes(d: Date, minutes: number) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'minutes') >= minutes;\n\t}\n\n\t/**\n\t * It could be 11PM yesterday, and 1 AM today. Actually based on local today.\n\t */\n\tstatic olderThan1Day(dtUtc: Date | null | undefined): boolean {\n\t\treturn DateFunc.getDayAgeUtc(dtUtc) > 0;\n\t}\n\n\tstatic getHourAge(d: Date) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'hours');\n\t}\n\n\tstatic getHourAgeUtc(dtUtc: Date | null | undefined) {\n\t\tconst m = moment.utc(dtUtc);\n\t\treturn moment.utc().diff(m, 'hours');\n\t}\n\n\t/**\n\t * Compare utc date with utc now.\n\t * @param dtUtc\n\t */\n\tstatic getDayAgeUtc(dtUtc: Date | null | undefined) {\n\t\tconst m = moment.utc(dtUtc);\n\t\treturn moment.utc().diff(m, 'days');\n\t}\n\n\t/**\n\t * How many years from now.\n\t * @param d \n\t * @returns \n\t */\n\tstatic getAge(d: Date) {\n\t\tconst m = moment(d);\n\t\treturn moment().diff(m, 'years');\n\t}\n\n\t/**\n\t * Year of date.\n\t * @param d \n\t * @returns \n\t */\n\tstatic getYear(d: Date) {\n\t\tconst m = moment(d);\n\t\treturn m.year();\n\t}\n\n\tstatic getUtcNow(): Date {\n\t\treturn moment.utc().toDate();\n\t}\n\n\tstatic addMinutes(d: Date, m: number): Date {\n\t\treturn moment(d).add(m, 'm').toDate();\n\t}\n\n\tstatic addMonth(d: Date, m: number): Date {\n\t\treturn moment(d).add(m, 'M').toDate();\n\t}\n\n\tstatic getDuration(d1: Date, d2: Date) {\n\t\tconst md1 = moment(d1);\n\t\tconst md2 = moment(d2);\n\t\treturn moment.duration(md2.diff(md1));\n\t}\n\n\t/**\n\t * Convert minutes from midnight to HH:mm text\n\t * @param mins\n\t */\n\tstatic getHMFromMins(mins: number): string {\n\t\t// do not include the first validation check if you want, for example,\n\t\t// getTimeFromMins(1530) to equal getTimeFromMins(90) (i.e. mins rollover)\n\t\tif (mins >= 24 * 60 || mins < 0) {\n\t\t\tthrow new RangeError('Valid input should be greater than or equal to 0 and less than 1440.');\n\t\t}\n\t\tconst h = mins / 60 | 0,\n\t\t\tm = mins % 60 | 0;\n\t\treturn moment.utc().hours(h).minutes(m).format('HH:mm');\n\t}\n\n\tstatic getMinutesSinceMidnight(d: Date | null | undefined) {\n\t\tconst m = moment(d);\n\t\tconst midnight = moment(d).startOf('day'); //Mutates the original moment by setting it to the start of a unit of time. So I have better not to use m which wil be changed by calling this function\n\t\treturn m.diff(midnight, 'minutes');\n\t}\n\n\tstatic getMinutesBetween(start: Date | null | undefined, end: Date | null | undefined) {\n\t\tconst m = moment(start);\n\t\tconst m2 = moment(end);\n\t\treturn m2.diff(m, 'minutes');\n\t}\n\n\t/**\n\t * Parse json string with date serialized into string, and get proper date object back\n\t * @param s\n\t */\n\tstatic dateSafeJsonParse(s: string) {\n\t\treturn JSON.parse(s, this.dateReviver);\n\t}\n\n\tprivate static dateReviver(key: string, value: any) {\n\t\tif (DateFunc.isSerializedDate(value)) {\n\t\t\treturn (new Date(value));\n\t\t}\n\n\t\t// If it's not a date-string, we want to return the value as-is. If we fail to return\n\t\t// a value, it will be omitted from the resultant data structure.\n\t\treturn (value);\n\n\t}\n\n\n\t// I determine if the given value is a string that matches the serialized-date pattern.\n\tprivate static isSerializedDate(value: any): boolean {\n\t\t// Dates are serialized in TZ format, example: '1981-12-20T04:00:14.000Z'.\n\t\tconst datePattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$/;\n\t\treturn (DateFunc.isString(value) && datePattern.test(value));\n\t}\n\n\n\t// I determine if the given value is a String.\n\tprivate static isString(value: any): boolean {\n\t\treturn ({}.toString.call(value) === '[object String]');\n\t}\n\n\tstatic dateSafeParse(s: string | Date) {\n\t\tconst m = moment(s);\n\t\treturn m.toDate();\n\t}\n\n\tstatic composeDateWithMinutes(d: Date, minute: number): Date {\n\t\tconst m = moment(d);\n\t\tconst midnight = moment(d).startOf('day'); // Mutates the original moment by setting it to the start of a unit of time. So I have better not to use m which wil be changed by calling this function\n\t\tmidnight.add(minute, 'minutes');\n\t\treturn midnight.toDate();\n\t}\n\n\t/**\n\t * Safe compare since date data may be considered as string rather than date.\n\t * @param d1\n\t * @param d2\n\t */\n\tstatic compare(d1: Date | undefined, d2: Date | undefined): number {\n\t\tif (!d1 && !d2) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tif (!d1) {\n\t\t\treturn -NaN\n\t\t}\n\n\t\tif (!d2) {\n\t\t\treturn NaN;\n\t\t}\n\n\t\tconst dd1 = (new Date(d1)).valueOf();\n\t\tconst dd2 = (new Date(d2)).valueOf();\n\t\treturn dd1 - dd2;\n\t}\n}\n\n","export class HtmlPrintFunc {\n\t/**\n\t * Print with CSS for internal reports\n\t * @param htmlTags\n\t * @param cssUrl\n\t */\n\tstatic printWithCSS(htmlTags: string, cssUrl: string) {\n\t\tif (window) {\n\t\t\tconst htmlToPrint = `<html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"/>\n<link rel=\"stylesheet\" type=\"text/css\" href=\"${cssUrl}\" media=\"screen,print\"/>\n</head><body onload=\"window.print()\">${htmlTags}</body></html>`;\n\n\t\t\tconst popup = window.open('', '_blank', 'width=1024,height=768');\n\t\t\tpopup?.document.open();\n\t\t\tpopup?.document.write(htmlToPrint);\n\n\t\t\tpopup?.document.close();\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Print for external documents.\n\t * @param htmlTags\n\t */\n\tstatic print(htmlTags: string) {\n\t\tif (window) {\n\t\t\tconst htmlToPrint = `<html><head>\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"/>\n</head><body onload=\"window.print()\">${htmlTags}</body></html>`;\n\n\t\t\tconst popup = window.open('', '_blank', 'width=1024,height=768');\n\t\t\tpopup?.document.open();\n\t\t\tpopup?.document.write(htmlToPrint);\n\n\t\t\tpopup?.document.close();\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Print image url through html img.\n\t * @param url \n\t */\n\tstatic printImage(url: string) {\n\t\tconst imageTags = `<img src=\"${url}\" alt=\"Image from URL\"/>`;\n\t\tHtmlPrintFunc.print(imageTags);\n\t}\n}\n","export class JavaScriptFunc {\r\n\t/**\r\n\t * Some business functions depend on external JavaScript libraries. Lazy loading of respective business modules is good, \r\n\t * and this function supports lazy loading of JS libraries.\r\n\t * @param scriptUrl \r\n\t * @param type things like module.\r\n\t * @returns Promise for subsequent JS function calls.\r\n\t */\r\n\tstatic loadExternalScript(scriptUrl: string, type?: string) {\r\n\t\treturn new Promise((resolve, reject) => {\r\n\t\t\tconst scriptElement = document.createElement('script');\r\n\t\t\tif (type){\r\n\t\t\t\tscriptElement.type=type;\r\n\t\t\t}\r\n\r\n\t\t\tscriptElement.src = scriptUrl;\r\n\t\t\tscriptElement.onload = resolve;\r\n\t\t\tdocument.body.appendChild(scriptElement);\r\n\t\t});\r\n\t}\r\n}\r\n","import { DateFunc } from './dateFunc';\n\n/**\n * Basic JSON functions\n */\nexport class JsonFunc {\n\t/**\n\t * \n\t * @param array Group by a property of array element.\n\t * @param propertyName \n\t * @returns \n\t */\n\tstatic groupBy<T>(array: Array<T>, propertyName: string) {\n\t\treturn array.reduce(function(acc: any, obj: any) {\n\t\t\tconst key = obj[propertyName];\n\t\t\tif (!acc[key]) {\n\t\t\t\tacc[key] = [];\n\t\t\t}\n\t\t\tacc[key].push(obj);\n\t\t\treturn acc;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Group by a date property. The key is always of string type and representing milliseconds. \n\t * The client should convert the string to number.\n\t * Angular date pipe could actually consume such string without explicitly converting to number.\n\t * @param array\n\t * @param propertyName\n\t */\n\tstatic groupByDate<T>(array: Array<T>, propertyName: string) {\n\t\treturn array.reduce(function(acc: any, obj: any) {\n\t\t\tconst key = DateFunc.dateTimeUtcToLocalDateNumber(obj[propertyName]);\n\t\t\tif (!acc[key]) {\n\t\t\t\tacc[key] = [];\n\t\t\t}\n\t\t\tacc[key].push(obj);\n\t\t\treturn acc;\n\t\t}, {});\n\t}\n\n\t/**\n\t * Remove null or empty fields including those in nested objects.\n\t * This is useful for reducing payload of AJAX serialization.\n\t * @param obj \n\t */\n\tstatic removeNullOrEmptyFields(obj: any) {\n\t\tfor (const f in obj) {\n\t\t\tlet p = obj[f];\n\t\t\tif (p === null || p === '') {\n\t\t\t\tdelete obj[f];\n\t\t\t} else if (typeof p === 'object' && p !== null) {\n\t\t\t\tthis.removeNullOrEmptyFields(p);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * \n\t * @param obj Remove null fields of object at only the 1st level.\n\t */\n\tstatic removeNullFields(obj: any) {\n\t\tfor (const f in obj) {\n\t\t\tif (obj[f] === null) {\n\t\t\t\tdelete obj[f];\n\t\t\t}\n\t\t}\n\t}\n\n}\n","/**\n * String functions specific to Australia\n */\nexport class StringAusFunc {\n\n\t//thanks to https://github.com/sidorares/australian-business-number/blob/0591475f5978fd122b472edcdc7efe6d96d56f26/index.js\n\tprivate static acnWeights = [8, 7, 6, 5, 4, 3, 2, 1];\n\tprivate static weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];\n\n\tprivate static suggestLookup: number[] = StringAusFunc.generateLookup();\n\n\t/**\n\t * Validate medicare number\n\t * @param n\n\t * @returns validation error message\n\t */\n\tstatic validateMedicare(n: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!n) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (n && n.length === 10) {\n\t\t\tconst matches = n.match(/^(\\d{8})(\\d)/);\n\n\t\t\tif (!matches) {\n\t\t\t\treturn {\n\t\t\t\t\tcode: 2, message: 'Medicare number should be all digit.'\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst base = matches[1];\n\t\t\tconst checkDigit = matches[2];\n\t\t\tconst weights = [1, 3, 7, 9, 1, 3, 7, 9];\n\n\t\t\tlet sum = 0;\n\t\t\tfor (let i = 0; i < weights.length; i++) {\n\t\t\t\tsum += parseInt(base[i], 10) * weights[i];\n\t\t\t}\n\n\t\t\t//console.debug(`sum: ${sum} checkDigits: ${checkDigit}`);\n\t\t\tconst isValid = sum % 10 === parseInt(checkDigit, 10);\n\t\t\tif (!isValid) {\n\t\t\t\treturn {\n\t\t\t\t\tcode: 3, message: 'Checksum is incorrect.'\n\t\t\t\t};\n\t\t\t}\n\t\t} else {\n\t\t\treturn { code: 1, message: 'Length should be 10.' };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic validateMedicareProviderNumber(providerNumber: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!providerNumber) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif (!/^[0-9]{6}[0-9ABCDEFGHJKLMNPQRTUVWXY][ABFHJKLTWXY]/.test(providerNumber)) {\n\t\t\treturn { code: 1, message: 'Not matching provider number format.' };\n\t\t}\n\n\t\tconst practiceLocationValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y'];\n\t\tconst remainderValues = ['Y', 'X', 'W', 'T', 'L', 'K', 'J', 'H', 'F', 'B', 'A'];\n\t\tconst stemWeights = [3, 5, 8, 4, 2, 1];\n\n\t\tconst stemNumbers = providerNumber.substr(0, 6).split('').map((char) => parseInt(char));\n\t\tconst practiceLoc = practiceLocationValues.findIndex((e) => e === providerNumber[6]);\n\t\tconst checksum = providerNumber[7];\n\n\t\tconst zipped = stemWeights.map((x, i) => [x, stemNumbers[i]]);\n\t\tconst sumWeights = zipped.map((y) => y[1] * y[0]).reduce((total, num) => total + num);\n\t\tconst remainder = (sumWeights + practiceLoc * 6) % 11;\n\n\t\tconst result = remainderValues[remainder];\n\n\t\tconst valid = result === checksum;\n\t\tif (!valid) {\n\t\t\treturn { code: 2, message: 'Checksum is incorrect.' };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic validateDVAFileNumber(dva: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!dva) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst states = ['N', 'V', 'Q', 'S', 'W', 'T'];\n\t\tconst warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW', //Australian Forces\n\t\t\t'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL', //British Administration Group\n\t\t\t'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A', //Other Overseas Forces\n\t\t\t'N', 'NX', 'NSW', 'NSM', //New Zealand Administration Group\n\t\t\t'BUR', 'CNK', 'CNS', 'FIJ', 'GHA', 'HKS', 'IND', 'KYA', 'MAU', 'MLS', 'MTX', 'MWI', 'NK', 'NGR', 'NRD', 'NSS', 'PK']//British Commonwealth Countries - SP Eligibility\n\n\t\tif (!states.includes(dva.charAt(0))) {\n\t\t\treturn { code: 1, message: 'State incorrect.' };\n\t\t}\n\n\t\tconst ns = dva.match(/\\d+/);\n\t\tif (!ns) {\n\t\t\treturn { code: 2, message: 'No number.' };\n\t\t}\n\n\t\tconst n = ns[0];\n\t\tconst idxOfN = dva.indexOf(n);\n\t\tconst warCode = dva.substring(1, idxOfN);\n\t\tif (!warCodes.includes(warCode)) {\n\t\t\treturn { code: 3, message: 'War code invalid.' }\n\t\t}\n\n\t\tconst lenOfN = n.length;\n\t\tconst lenOfWc = warCode.length;\n\t\tif (lenOfN + lenOfWc > 7) {\n\t\t\treturn { code: 4, message: 'File number length should not be greater 7.' }\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic validateTFN(n: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!n) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst tfn = n.replace(/\\s+/g, '').replace(/[-]/g, '');\n\n\t\tconst isNumber = /^[0-9]+$/.test(tfn);\n\t\tif (!isNumber) {\n\t\t\treturn { code: 1, message: 'Invalid TFN, only numbers are allowed.' };\n\t\t}\n\n\t\tconst length = tfn.length;\n\t\tif (length !== 9) {\n\t\t\treturn {\n\t\t\t\tcode: 2, message: 'Invalid TFN, must have 9 digits.'\n\t\t\t};\n\t\t}\n\n\t\tconst digits = tfn.split('').map(d => parseInt(d));\n\n\t\tconst sum = (digits[0] * 1)\n\t\t\t+ (digits[1] * 4)\n\t\t\t+ (digits[2] * 3)\n\t\t\t+ (digits[3] * 7)\n\t\t\t+ (digits[4] * 5)\n\t\t\t+ (digits[5] * 8)\n\t\t\t+ (digits[6] * 6)\n\t\t\t+ (digits[7] * 9)\n\t\t\t+ (digits[8] * 10);\n\n\t\tconst remainder = sum % 11;\n\t\tconst valid = remainder === 0;\n\t\tif (!valid) {\n\t\t\treturn { code: 3, message: 'Checksum is incorrect.' };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate static addWeighted(p: number, v: number, i: number) {\n\t\treturn p + v * StringAusFunc.weights[i];\n\t}\n\n\tprivate static addAcnWeighted(p: number, v: number, i: number) {\n\t\treturn p + v * StringAusFunc.acnWeights[i];\n\t}\n\n\tprivate static generateLookup(): number[] {\n\t\tconst ns: number[] = [];\n\t\tfor (let i = 0; i < 10; ++i) {\n\t\t\tns[i * 19 % 89] = i;\n\t\t}\n\n\t\treturn ns;\n\t}\n\n\tstatic validateABN(abn: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!abn) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst digits = abn.replace(/[^\\d]/g, '').split('').map(Number);\n\t\tif (digits.length !== 11) {\n\t\t\treturn { code: 1, message: 'Expect 11-digit.' };\n\t\t}\n\n\t\tdigits[0] -= 1;\n\n\t\tconst sum = digits.reduce(StringAusFunc.addWeighted, 0);\n\n\t\tif (sum % 89 === 0) {\n\t\t\treturn null;\n\t\t}\n\n\t\tdigits[0] += 1;\n\n\t\tlet sum1 = sum - digits[10] * StringAusFunc.weights[10];\n\t\tlet digit = StringAusFunc.suggestLookup[89 - sum1 % 89];\n\t\tif (digit !== undefined) {\n\t\t\treturn {\n\t\t\t\tcode: 2,\n\t\t\t\tmessage: 'Checksum1 is incorrect.'\n\t\t\t}\n\t\t} else {\n\t\t\tconst sum2 = sum1 - digits[9] * StringAusFunc.weights[9];\n\t\t\tfor (let i = 0; i < 10; ++i) {\n\t\t\t\tsum1 = sum2 + i * StringAusFunc.weights[9];\n\t\t\t\tdigit = StringAusFunc.suggestLookup[89 - sum1 % 89];\n\t\t\t\tif (digit !== undefined) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcode: 3,\n\t\t\t\t\t\tmessage: 'Checksum2 is incorrect.'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn null\n\t}\n\n\tstatic validateACN(acn: string | null | undefined): { code: number, message: string } | null {\n\t\tif (!acn) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst digits = acn.replace(/[^\\d]/g, '').split('').map(Number);\n\t\tconsole.log(digits);\n\t\tif (digits.length !== 9) {\n\t\t\treturn { code: 1, message: 'Expect 9-digit.' };\n\t\t}\n\n\n\t\tconst sum = digits.slice(0, 8).reduce(StringAusFunc.addAcnWeighted, 0);\n\t\tconst lastDigit = 10 - sum % 10;\n\t\tif (lastDigit === digits[8]) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\tcode: 2,\n\t\t\tmessage: 'Checksum is incorrect.'\n\t\t};\n\t}\n}\n","export class StringFunc {\n\n\t/**\n\t * Up to 2 letters. For John Smith, returns JS, for Huang, Zijian, returns ZH\n\t * @param s\n\t */\n\tstatic getAbbr(s: string | null | undefined) {\n\t\tif (!s) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst sArray = s.split(/[\\s,]+/);\n\t\tconst comma = s.indexOf(',') >= 0;\n\n\t\tif (sArray.length === 1) {\n\t\t\treturn sArray[0][0];\n\t\t}\n\n\t\treturn comma ? sArray[1][0] + sArray[0][0] : sArray[0][0] + sArray[1][0];\n\t}\n\n\t/**\n\t * A substring with line breaks replaced by space.\n\t * @param s\n\t * @param length\n\t * @returns result, or empty string if the input is empty, null or undefined\n\t */\n\tstatic getOneLineDigest(s: string | null | undefined, length: number) {\n\t\tif (!s) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst ss = s.substring(0, length);\n\t\tconst st = ss.replace(new RegExp('\\n', 'g'), ' ') + ((s.length > length) ? '...' : '');\n\t\treturn st.trim();\n\t}\n\n\t/**\n\t * Remove line breaks and econde with encodeURI() so the data could be saved in Azure as meta. If the string is truncated, the return will have ... suffix.\n\t * @param s\n\t * @param length\n\t * @returns result, or empty string if the input is empty, null or undefined\n\t */\n\tstatic getOneLineDigestOfHtml(s: string | null | undefined, length: number) {\n\t\tif (!s) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst ss = s.substring(0, length);\n\t\tconst st = ss.replace(new RegExp('\\n', 'g'), ' ') + ((s.length > length) ? '...' : '');\n\t\treturn encodeURI(st.trim()); //need to encode in order to save as meta in Azure.\n\t}\n\n\t/**\n\t * Pad number with zero\n\t * @param num \n\t * @param size \n\t * @returns \n\t */\n\tstatic pad(num: number | undefined, size: number): string {\n\t\tif (num == null) {\n\t\t\treturn '';\n\t\t}\n\n\t\tlet s = num + '';\n\t\twhile (s.length < size) { s = '0' + s; }\n\t\treturn s;\n\t}\n\n\t/**\n\t * get plain text of HTML content\n\t * @param s\n\t * @returns result. If input is empty, null, or undefined, return the same.\n\t */\n\tstatic getHtmlPlainText(s: string | null | undefined): string | null {\n\t\tif (!s) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst parser = new DOMParser();\n\t\tconst html = parser.parseFromString(s, 'text/html');\n\t\treturn html.body.textContent;\n\t}\n\n\t/**\n\t *\n\t * @param s\n\t * @returns result. If input is empty, null, or undefined, return the same.\n\t */\n\tstatic capitalizeWords(s: string | null | undefined): string | null | undefined { // thanks to https://stackoverflow.com/questions/2332811/capitalize-words-in-string\n\t\tif (!s) {\n\t\t\treturn s;\n\t\t}\n\n\t\treturn s.replace(/(?:^|\\s)\\S/g, (a) => a.toUpperCase());\n\t}\n\n\tstatic validateEmail(email: string | null | undefined): boolean {\n\t\tif (!email) {\n\t\t\treturn true;\n\t\t}\n\t\tconst re = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n\t\treturn re.test(email.toLowerCase());\n\t}\n}\n","import { v4 as uuid } from 'uuid'; //todo: somehow the system could not recognize v5.\n// import { v5 as uuid } from 'uuid/v5 causes ERROR in src / app / _func / helperFunc.ts(1, 10): error TS2305: Module '\"C:/VSProjects/ApsCloudTrunk/APS.WebPos.NGCli/NGSource/node_modules/@types/uuid/v5\"' has no exported member 'v5'\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/28439\n\nexport class UuidFunc {\n\t/**\n\t * 36 UUID string including 4 hyphens. MySql stores GUID as 36 bytes anyway rather than 16bytes.\n\t */\n\tstatic newUUID(): string {\n//\t\treturn uuid('medilink.com.au', 'apscloud');\n\t\treturn uuid();\n\t}\n\n\tstatic newUUIDStartWith0() {\n\t\tconst s = uuid();\n\t\treturn '0000' + s.slice(4);\n\t}\n}\n","/*\n * Public API Surface of nmce-func\n */\n\nexport * from './_func/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["uuid"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nmce-func",
3
- "version": "1.3.1",
3
+ "version": "1.3.2",
4
4
  "author": {
5
5
  "name": "Z"
6
6
  },