@syncfusion/ej2-base 25.2.7 → 26.1.35-7502

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.
Files changed (201) hide show
  1. package/{README.md → ReadMe.md} +100 -100
  2. package/bin/syncfusion-license.js +104 -1
  3. package/dist/ej2-base.min.js +1 -10
  4. package/dist/ej2-base.umd.min.js +1 -10
  5. package/dist/ej2-base.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-base.es2015.js +268 -486
  7. package/dist/es6/ej2-base.es2015.js.map +1 -1
  8. package/dist/es6/ej2-base.es5.js +307 -522
  9. package/dist/es6/ej2-base.es5.js.map +1 -1
  10. package/dist/global/ej2-base.min.js +1 -10
  11. package/dist/global/ej2-base.min.js.map +1 -1
  12. package/dist/global/index.d.ts +0 -9
  13. package/dist/ts/undefined +67 -0
  14. package/e2e/crypto.js +16 -16
  15. package/e2e/index.d.ts +27 -27
  16. package/e2e/m.protractor.config.js +286 -286
  17. package/e2e/modified-protractor/protractor.config.js +316 -316
  18. package/e2e/protractor.config.js +389 -389
  19. package/helpers/e2e/index.js +3 -3
  20. package/license +10 -10
  21. package/package.json +225 -161
  22. package/src/ajax.d.ts +1 -1
  23. package/src/ajax.js +3 -7
  24. package/src/animation-model.d.ts +41 -41
  25. package/src/animation.d.ts +1 -1
  26. package/src/animation.js +20 -22
  27. package/src/base.d.ts +2 -1
  28. package/src/base.js +4 -13
  29. package/src/browser.d.ts +1 -1
  30. package/src/browser.js +3 -4
  31. package/src/child-property.d.ts +1 -0
  32. package/src/child-property.js +2 -2
  33. package/src/component-model.d.ts +16 -16
  34. package/src/component.d.ts +4 -0
  35. package/src/component.js +28 -36
  36. package/src/dom.js +4 -11
  37. package/src/draggable-model.d.ts +113 -113
  38. package/src/draggable.js +20 -41
  39. package/src/droppable-model.d.ts +23 -23
  40. package/src/droppable.js +19 -20
  41. package/src/event-handler.js +2 -6
  42. package/src/fetch.js +1 -2
  43. package/src/hijri-parser.js +3 -3
  44. package/src/internationalization.d.ts +4 -0
  45. package/src/internationalization.js +0 -5
  46. package/src/intl/date-formatter.js +19 -33
  47. package/src/intl/date-parser.js +33 -62
  48. package/src/intl/intl-base.d.ts +9 -1
  49. package/src/intl/intl-base.js +19 -18
  50. package/src/intl/number-formatter.js +14 -7
  51. package/src/intl/number-parser.js +2 -6
  52. package/src/intl/parser-base.js +6 -11
  53. package/src/keyboard-model.d.ts +16 -16
  54. package/src/keyboard.js +19 -20
  55. package/src/module-loader.js +1 -0
  56. package/src/notify-property-change.d.ts +0 -20
  57. package/src/notify-property-change.js +16 -55
  58. package/src/observer.js +3 -6
  59. package/src/sanitize-helper.js +0 -1
  60. package/src/template-engine.js +1 -7
  61. package/src/template.js +13 -18
  62. package/src/touch-model.d.ts +39 -39
  63. package/src/touch.js +22 -27
  64. package/src/util.d.ts +4 -4
  65. package/src/util.js +12 -37
  66. package/src/validate-lic.js +4 -3
  67. package/styles/_all.scss +2 -2
  68. package/styles/_bds-dark-definition.scss +16 -15
  69. package/styles/_bds-definition.scss +16 -15
  70. package/styles/_bootstrap-dark-definition.scss +42 -42
  71. package/styles/_bootstrap-definition.scss +42 -42
  72. package/styles/_bootstrap4-definition.scss +11 -11
  73. package/styles/_bootstrap5-dark-definition.scss +9 -9
  74. package/styles/_bootstrap5-definition.scss +8 -8
  75. package/styles/_bootstrap5.3-dark-definition.scss +8 -0
  76. package/styles/_bootstrap5.3-definition.scss +8 -0
  77. package/styles/_fabric-dark-definition.scss +42 -42
  78. package/styles/_fabric-definition.scss +42 -42
  79. package/styles/_fluent-dark-definition.scss +9 -9
  80. package/styles/_fluent-definition.scss +9 -9
  81. package/styles/_fluent2-dark-definition.scss +9 -0
  82. package/styles/_fluent2-definition.scss +9 -0
  83. package/styles/_fluent2-highcontrast-definition.scss +9 -0
  84. package/styles/_fusionnew-dark-definition.scss +8 -8
  85. package/styles/_fusionnew-definition.scss +8 -8
  86. package/styles/_highcontrast-definition.scss +42 -42
  87. package/styles/_highcontrast-light-definition.scss +42 -42
  88. package/styles/_material-dark-definition.scss +49 -48
  89. package/styles/_material-definition.scss +50 -49
  90. package/styles/_material3-dark-definition.scss +15 -14
  91. package/styles/_material3-definition.scss +16 -15
  92. package/styles/_tailwind-dark-definition.scss +16 -15
  93. package/styles/_tailwind-definition.scss +16 -15
  94. package/styles/_tailwind3-dark-definition.scss +15 -0
  95. package/styles/_tailwind3-definition.scss +15 -0
  96. package/styles/animation/_all.scss +535 -560
  97. package/styles/bds-lite.css +3408 -0
  98. package/styles/bds-lite.scss +3 -0
  99. package/styles/bds.css +3408 -0
  100. package/styles/bds.scss +3 -0
  101. package/styles/bootstrap-dark-lite.css +3749 -0
  102. package/styles/bootstrap-dark-lite.scss +3 -0
  103. package/styles/bootstrap-dark.css +1075 -169
  104. package/styles/bootstrap-lite.css +3749 -0
  105. package/styles/bootstrap-lite.scss +3 -0
  106. package/styles/bootstrap.css +1075 -169
  107. package/styles/bootstrap4-lite.css +3390 -0
  108. package/styles/bootstrap4-lite.scss +3 -0
  109. package/styles/bootstrap4.css +1063 -169
  110. package/styles/bootstrap5-dark-lite.css +2966 -0
  111. package/styles/bootstrap5-dark-lite.scss +3 -0
  112. package/styles/bootstrap5-dark.css +1068 -171
  113. package/styles/bootstrap5-lite.css +2966 -0
  114. package/styles/bootstrap5-lite.scss +3 -0
  115. package/styles/bootstrap5.3-lite.css +3559 -0
  116. package/styles/bootstrap5.3-lite.scss +3 -0
  117. package/styles/bootstrap5.3.css +3559 -0
  118. package/styles/bootstrap5.3.scss +3 -0
  119. package/styles/bootstrap5.css +1066 -169
  120. package/styles/common/_all.scss +2 -2
  121. package/styles/common/_core.scss +111 -117
  122. package/styles/common/_mixin.scss +11 -9
  123. package/styles/definition/_bds-dark.scss +1193 -1178
  124. package/styles/definition/_bds.scss +1488 -1458
  125. package/styles/definition/_bootstrap-dark.scss +213 -219
  126. package/styles/definition/_bootstrap.scss +208 -215
  127. package/styles/definition/_bootstrap4.scss +159 -167
  128. package/styles/definition/_bootstrap5-dark.scss +481 -494
  129. package/styles/definition/_bootstrap5.3-dark.scss +1232 -0
  130. package/styles/definition/_bootstrap5.3.scss +1579 -0
  131. package/styles/definition/_bootstrap5.scss +481 -495
  132. package/styles/definition/_fabric-dark.scss +194 -200
  133. package/styles/definition/_fabric.scss +192 -198
  134. package/styles/definition/_fluent-dark.scss +494 -557
  135. package/styles/definition/_fluent.scss +494 -558
  136. package/styles/definition/_fluent2-dark.scss +1523 -0
  137. package/styles/definition/_fluent2-highcontrast.scss +1523 -0
  138. package/styles/definition/_fluent2.scss +2295 -0
  139. package/styles/definition/_fusionnew-dark.scss +330 -362
  140. package/styles/definition/_fusionnew.scss +331 -363
  141. package/styles/definition/_highcontrast-light.scss +189 -193
  142. package/styles/definition/_highcontrast.scss +189 -195
  143. package/styles/definition/_material-dark.scss +193 -198
  144. package/styles/definition/_material.scss +186 -192
  145. package/styles/definition/_material3-dark.scss +660 -710
  146. package/styles/definition/_material3.scss +729 -792
  147. package/styles/definition/_tailwind-dark.scss +445 -488
  148. package/styles/definition/_tailwind.scss +443 -485
  149. package/styles/definition/_tailwind3-dark.scss +1622 -0
  150. package/styles/definition/_tailwind3.scss +2093 -0
  151. package/styles/fabric-dark-lite.css +3734 -0
  152. package/styles/fabric-dark-lite.scss +3 -0
  153. package/styles/fabric-dark.css +1075 -169
  154. package/styles/fabric-lite.css +3734 -0
  155. package/styles/fabric-lite.scss +3 -0
  156. package/styles/fabric.css +1075 -169
  157. package/styles/fluent-dark-lite.css +2966 -0
  158. package/styles/fluent-dark-lite.scss +3 -0
  159. package/styles/fluent-dark.css +1066 -169
  160. package/styles/fluent-lite.css +2966 -0
  161. package/styles/fluent-lite.scss +3 -0
  162. package/styles/fluent.css +1066 -169
  163. package/styles/fluent2-lite.css +4017 -0
  164. package/styles/fluent2-lite.scss +3 -0
  165. package/styles/fluent2.css +4017 -0
  166. package/styles/fluent2.scss +3 -0
  167. package/styles/highcontrast-light-lite.css +3725 -0
  168. package/styles/highcontrast-light-lite.scss +3 -0
  169. package/styles/highcontrast-light.css +1075 -169
  170. package/styles/highcontrast-lite.css +3725 -0
  171. package/styles/highcontrast-lite.scss +3 -0
  172. package/styles/highcontrast.css +1075 -169
  173. package/styles/material-dark-lite.css +3702 -0
  174. package/styles/material-dark-lite.scss +3 -0
  175. package/styles/material-dark.css +1075 -169
  176. package/styles/material-lite.css +3702 -0
  177. package/styles/material-lite.scss +3 -0
  178. package/styles/material.css +1075 -169
  179. package/styles/material3-dark-lite.css +3021 -0
  180. package/styles/material3-dark-lite.scss +3 -0
  181. package/styles/material3-dark.css +1066 -170
  182. package/styles/material3-lite.css +3077 -0
  183. package/styles/material3-lite.scss +3 -0
  184. package/styles/material3.css +1066 -170
  185. package/styles/offline-theme/material-dark.css +1075 -169
  186. package/styles/offline-theme/material.css +1075 -169
  187. package/styles/offline-theme/tailwind-dark.css +1067 -170
  188. package/styles/offline-theme/tailwind.css +1067 -170
  189. package/styles/tailwind-dark-lite.css +2967 -0
  190. package/styles/tailwind-dark-lite.scss +3 -0
  191. package/styles/tailwind-dark.css +1067 -170
  192. package/styles/tailwind-lite.css +2967 -0
  193. package/styles/tailwind-lite.scss +3 -0
  194. package/styles/tailwind.css +1067 -170
  195. package/styles/tailwind3-lite.css +3775 -0
  196. package/styles/tailwind3-lite.scss +3 -0
  197. package/styles/tailwind3.css +3775 -0
  198. package/styles/tailwind3.scss +3 -0
  199. package/.eslintrc.json +0 -260
  200. package/CHANGELOG.md +0 -649
  201. package/tslint.json +0 -111
@@ -1 +1 @@
1
- {"version":3,"file":"ej2-base.umd.min.js","sources":["../src/util.js","../src/dom.js","../src/base.js","../src/notify-property-change.js","../src/animation.js","../src/validate-lic.js","../src/template.js","../src/template-engine.js","../src/intl/parser-base.js","../src/hijri-parser.js","../src/intl/date-formatter.js","../src/intl/number-formatter.js","../src/intl/date-parser.js","../src/intl/number-parser.js","../src/observer.js","../src/internationalization.js","../src/intl/intl-base.js","../src/ajax.js","../src/fetch.js","../src/browser.js","../src/event-handler.js","../src/module-loader.js","../src/component.js","../src/child-property.js","../src/draggable.js","../src/droppable.js","../src/keyboard.js","../src/l10n.js","../src/touch.js","../src/sanitize-helper.js"],"sourcesContent":["var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write('<!DOCTYPE html> <html><head>' + reference + '</head><body>' + div.innerHTML +\n '<script> (function() { window.ready = true; })(); </script>' + '</body></html>');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex<Type>({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n * <div id='ripple'></div>\n * <script>\n * rippleEffect(document.getElementById('ripple'));\n * </script>\n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '25';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: '<span>This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.</span>',\n trailExpired: '<span>This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.</span>',\n versionMismatched: '<span>The included Syncfusion license key is invalid.</span>',\n platformMismatched: '<span>The included Syncfusion license key is invalid.</span>',\n invalidKey: '<span>The included Syncfusion license key is invalid.</span>'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjU=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"<img src='data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5OV80KSI+CjxwYXRoIGQ9Ik0xMiAyMUMxNi45NzA2IDIxIDIxIDE2Ljk3MDYgMjEgMTJDMjEgNy4wMjk0NCAxNi45NzA2IDMgMTIgM0M3LjAyOTQ0IDMgMyA3LjAyOTQ0IDMgMTJDMyAxNi45NzA2IDcuMDI5NDQgMjEgMTIgMjFaIiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBmaWxsPSIjNjE2MDYzIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS44MTI1IDlDMTIuNDMzOCA5IDEyLjkzNzUgOC40OTYzMiAxMi45Mzc1IDcuODc1QzEyLjkzNzUgNy4yNTM2OCAxMi40MzM4IDYuNzUgMTEuODEyNSA2Ljc1QzExLjE5MTIgNi43NSAxMC42ODc1IDcuMjUzNjggMTAuNjg3NSA3Ljg3NUMxMC42ODc1IDguNDk2MzIgMTEuMTkxMiA5IDExLjgxMjUgOVoiIGZpbGw9IiM3MzczNzMiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xOTlfNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K' style=\\\"top: 6px;\\n position: absolute;\\n left: 16px;\\n width: 24px;\\n height: 24px;\\\"/>\" + validateMsg + ' ' + '<a style=\"text-decoration: none;color: #0D6EFD;font-weight: 500;\" href=' + accountURL + '>Claim your free account</a>'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[\"\" + i] = decodeStr[\"\" + i].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n <div style=\\\"\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 99999;\\n \\\">\\n <div style=\\\"\\n background: #FFFFFF;\\n height: 455px;\\n width: 840px;\\n font-family: Helvetica Neue, Helvetica, Arial;\\n color: #000000;\\n box-shadow: 0px 4.8px 14.4px rgb(0 0 0 / 18%), 0px 25.6px 57.6px rgb(0 0 0 / 22%);\\n display: block;\\n margin: 8% auto;\\n border-radius: 20px;\\n \\\">\\n <div style=\\\"\\n position: absolute;\\nwidth: 838px;\\nheight: 62px;\\nbackground-color: #F9F9F9;\\nborder: 1px solid #EEEEEE;\\nborder-top-left-radius: 20px;\\nborder-top-right-radius: 20px;\\n\\\">\\n <img src=\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTQ2IDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNDAuNTk2NSAxNS4wMDc4SDMyLjQyNUMzMS41NTU3IDE1LjAwNzggMzAuOTAzNyAxNS4xODEyIDMwLjUxMjUgMTUuNDg0NkMzMC4xMjEzIDE1LjgzMTQgMjkuOTA0IDE2LjMwODIgMjkuOTA0IDE3LjA0NTFDMjkuOTA0IDE3LjYwODYgMzAuMDc3OCAxOC4wNDIxIDMwLjQyNTYgMTguMzAyMkMzMC43NzMzIDE4LjYwNTYgMzEuMjk0OSAxOC43MzU2IDMxLjk5MDMgMTguNzM1NkgzNi4zMzY5QzM4LjExODkgMTguNzM1NiAzOS40MjI5IDE5LjA4MjQgNDAuMTYxOCAxOS43MzI2QzQwLjk0NDIgMjAuNDI2MiA0MS4yOTE5IDIxLjU1MzIgNDEuMjkxOSAyMy4xMTM3QzQxLjI5MTkgMjQuNzE3NiA0MC44NTcyIDI1Ljg4OCAzOS45ODc5IDI2LjY2ODJDMzkuMTE4NiAyNy40MDUxIDM3LjcyNzcgMjcuNzk1MyAzNS44NTg3IDI3Ljc5NTNIMjcuMDc4N1YyNS4wMjFIMzUuMzM3MkMzNi4yOTM0IDI1LjAyMSAzNi45NDU0IDI0Ljg5MSAzNy4zMzY2IDI0LjYzMDlDMzcuNzI3NyAyNC4zNzA4IDM3LjkwMTYgMjMuODk0IDM3LjkwMTYgMjMuMjg3MUMzNy45MDE2IDIyLjYzNjkgMzcuNzI3NyAyMi4xNjAxIDM3LjM4IDIxLjlDMzcuMDMyMyAyMS42Mzk5IDM2LjQyMzggMjEuNDY2NSAzNS41NTQ1IDIxLjQ2NjVIMzEuNjQyNkMyOS44NjA1IDIxLjQ2NjUgMjguNTEzMSAyMS4xMTk4IDI3LjY4NzMgMjAuMzgyOEMyNi44NjE0IDE5LjY0NTkgMjYuNDI2OCAxOC41MTg5IDI2LjQyNjggMTcuMDAxN0MyNi40MjY4IDE1LjM1NDUgMjYuODYxNCAxNC4xNDA4IDI3LjczMDcgMTMuMzYwNkMyOC42IDEyLjU4MDMgMjkuOTkwOSAxMi4yMzM1IDMxLjkwMzQgMTIuMjMzNUg0MC41OTY1VjE1LjAwNzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik00OC4wNzI3IDI1LjI4MTFINTAuNTA2OFYxNi4zOTQ5SDUzLjU0OTNWMjcuNTM1MkM1My41NDkzIDI5LjA1MjQgNTMuMjAxNiAzMC4xNzk0IDUyLjUwNjIgMzAuOTE2M0M1MS44MTA3IDMxLjY1MzIgNTAuNzI0MSAzMiA0OS4yNDYzIDMySDQzLjMzNVYyOS42NTkySDQ4LjcyNDdDNDkuMjg5NyAyOS42NTkyIDQ5Ljc2NzkgMjkuNTI5MiA1MC4wNzIxIDI5LjIyNThDNTAuMzc2NCAyOC45NjU3IDUwLjU1MDIgMjguNTMyMiA1MC41NTAyIDI4LjAxMlYyNy44Mzg2SDQ3Ljg5ODlDNDYuMjAzNyAyNy44Mzg2IDQ0Ljk0MzIgMjcuNDkxOSA0NC4yNDc4IDI2Ljg0MTZDNDMuNTA4OSAyNi4xNDgxIDQzLjE2MTEgMjUuMDY0NCA0My4xNjExIDIzLjQ2MDVWMTYuMzk0OUg0Ni4xNjAyVjIzLjIwMDVDNDYuMTYwMiAyNC4wNjc0IDQ2LjI5MDYgMjQuNjMwOSA0Ni41NTE0IDI0Ljg5MUM0Ni43MjUzIDI1LjE1MTEgNDcuMjQ2OSAyNS4yODExIDQ4LjA3MjcgMjUuMjgxMVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTU1Ljg5NjUgMTYuMzk0OUg2MS41OTA0QzYzLjMyOTEgMTYuMzk0OSA2NC41NDYxIDE2LjY5ODMgNjUuMjg1IDE3LjM0ODVDNjYuMDIzOSAxNy45OTg4IDY2LjM3MTYgMTkuMDgyNCA2Ni4zNzE2IDIwLjU1NjNWMjcuNzk1M0g2My4zMjkxVjIwLjk0NjRDNjMuMzI5MSAyMC4wNzk0IDYzLjE5ODcgMTkuNTE1OSA2Mi45Mzc5IDE5LjI5OTJDNjIuNjc3MSAxOS4wMzkxIDYyLjE1NTUgMTguOTA5MSA2MS4zMjk3IDE4LjkwOTFINTguODk1NlYyNy44Mzg2SDU1Ljg1M1YxNi4zOTQ5SDU1Ljg5NjVaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03NC45MzQyIDI1LjM2NzhINzguMTUwNlYyNy43OTUySDc0LjAyMTRDNzIuOTc4MiAyNy43OTUyIDcyLjEwODkgMjcuNjY1MiA3MS40NTcgMjcuNDkxOEM3MC44MDUgMjcuMjc1IDcwLjE5NjUgMjYuOTI4MyA2OS43MTgzIDI2LjQ1MTRDNjkuMTk2OCAyNS45MzEzIDY4Ljc2MjEgMjUuMjgxMSA2OC40NTc4IDI0LjU0NDJDNjguMTUzNiAyMy44MDcyIDY4LjAyMzIgMjIuOTgzNiA2OC4wMjMyIDIyLjE2QzY4LjAyMzIgMjEuMjkzMSA2OC4xNTM2IDIwLjQ2OTUgNjguNDU3OCAxOS42ODkyQzY4Ljc2MjEgMTguOTA5IDY5LjE1MzMgMTguMzAyMSA2OS43MTgzIDE3Ljc4MTlDNzAuMjM5OSAxNy4zMDUxIDcwLjgwNSAxNi45NTgzIDcxLjUwMDQgMTYuNzQxNkM3Mi4xOTU5IDE2LjUyNDkgNzMuMDIxNyAxNi40MzgyIDc0LjA2NDkgMTYuNDM4Mkg3OC4xOTQxVjE4LjkwOUg3NC45MzQyQzczLjQ5OTggMTguOTA5IDcyLjU0MzYgMTkuMTY5MSA3MS45Nzg1IDE5LjY0NTlDNzEuNDU2OSAyMC4xMjI3IDcxLjE1MjcgMjAuOTg5NyA3MS4xNTI3IDIyLjIwMzRDNzEuMTUyNyAyMi44OTY5IDcxLjI4MzEgMjMuNDYwNSA3MS41MDA0IDIzLjkzNzNDNzEuNzE3NyAyNC40MTQxIDcyLjA2NTUgMjQuNzYwOSA3Mi41MDAxIDI1LjA2NDNDNzIuNzE3NCAyNS4xOTQ0IDcyLjk3ODIgMjUuMjgxMSA3My4yODI1IDI1LjM2NzhDNzMuNjMwMiAyNS4zMjQ0IDc0LjE1MTggMjUuMzY3OCA3NC45MzQyIDI1LjM2NzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik04MC44NDU2IDE4LjY0ODlINzguNjcyNFYxNi4zNTE1SDgwLjg0NTZWMTUuMTgxMUM4MC44NDU2IDE0LjAxMDggODEuMDYzIDEzLjIzMDUgODEuNDk3NiAxMi44NDA0QzgxLjkzMjMgMTIuNDUwMyA4Mi43NTgxIDEyLjIzMzUgODMuOTc1MSAxMi4yMzM1SDg2Ljg0MzhWMTQuNDAwOUg4NS40MDk1Qzg0Ljg4NzkgMTQuNDAwOSA4NC41NDAyIDE0LjQ4NzYgODQuMzIyOSAxNC42NjFDODQuMTA1NSAxNC44MzQ0IDgzLjk3NTEgMTUuMDk0NSA4My45NzUxIDE1LjQ0MTJWMTYuMzUxNUg4Ni44NDM4VjE4LjY0ODlIODMuOTc1MVYyNy43OTUzSDgwLjg0NTZWMTguNjQ4OVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTk4LjQwNTYgMjcuNzk1M0g5Mi43MTE2QzkxLjAxNjUgMjcuNzk1MyA4OS44NDI5IDI3LjQ0ODUgODkuMDYwNSAyNi43OTgzQzg4LjMyMTYgMjYuMTQ4MSA4Ny45MzA0IDI1LjA2NDQgODcuOTMwNCAyMy41OTA2VjE2LjM5NDlIOTAuOTI5NVYyMy40MTcyQzkwLjkyOTUgMjQuMTk3NCA5MS4wNTk5IDI0LjY3NDMgOTEuMzIwNyAyNC45MzQ0QzkxLjU4MTUgMjUuMTk0NCA5Mi4xMDMxIDI1LjMyNDUgOTIuOTI4OSAyNS4zMjQ1SDk1LjM2M1YxNi4zOTQ5SDk4LjQwNTZWMjcuNzk1M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTEwMC42MjIgMjUuNDExMkgxMDcuMDExQzEwNy41NzcgMjUuNDExMiAxMDguMDExIDI1LjMyNDUgMTA4LjI3MiAyNS4xNTExQzEwOC41MzMgMjQuOTc3NyAxMDguNjYzIDI0LjY3NDMgMTA4LjY2MyAyNC4zMjc1QzEwOC42NjMgMjMuOTM3NCAxMDguNTMzIDIzLjY3NzMgMTA4LjI3MiAyMy40NjA1QzEwOC4wMTEgMjMuMjg3MSAxMDcuNTc3IDIzLjIwMDUgMTA3LjA1NSAyMy4yMDA1SDEwNC40NDdDMTAyLjg4MiAyMy4yMDA1IDEwMS44MzkgMjIuOTgzNyAxMDEuMzE4IDIyLjUwNjlDMTAwLjc1MiAyMi4wMzAxIDEwMC40OTIgMjEuMjA2NSAxMDAuNDkyIDE5Ljk5MjdDMTAwLjQ5MiAxOC43NzkgMTAwLjgzOSAxNy44Njg3IDEwMS40OTEgMTcuMjYxOEMxMDIuMTQzIDE2LjY5ODMgMTAzLjE4NyAxNi4zOTQ5IDEwNC41MzQgMTYuMzk0OUgxMTEuMDU0VjE4Ljc3OUgxMDUuNzA4QzEwNC44MzggMTguNzc5IDEwNC4yNzMgMTguODY1NyAxMDQuMDEyIDE4Ljk5NTdDMTAzLjc1MiAxOS4xNjkxIDEwMy42MjEgMTkuNDI5MiAxMDMuNjIxIDE5LjgxOTRDMTAzLjYyMSAyMC4xNjYxIDEwMy43NTIgMjAuNDI2MiAxMDMuOTY5IDIwLjU5OTZDMTA0LjE4NiAyMC43NzMgMTA0LjU3NyAyMC44NTk3IDEwNS4wNTYgMjAuODU5N0gxMDcuNzk0QzEwOS4wNTQgMjAuODU5NyAxMTAuMDExIDIxLjE2MzEgMTEwLjY2MyAyMS43MjY2QzExMS4zMTUgMjIuMjkwMiAxMTEuNjYyIDIzLjE1NzEgMTExLjY2MiAyNC4yNDA4QzExMS42NjIgMjUuMjgxMSAxMTEuMzU4IDI2LjE0ODEgMTEwLjc5MyAyNi43OTgzQzExMC4yMjggMjcuNDQ4NSAxMDkuNDQ2IDI3Ljc5NTMgMTA4LjUzMyAyNy43OTUzSDEwMC43MDlWMjUuNDExMkgxMDAuNjIyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTE2LjU3NCAxNS4wOTQ0SDExMy40MDFWMTIuMjc2OUgxMTYuNTc0VjE1LjA5NDRaTTExNi41NzQgMjcuNzk1M0gxMTMuNDAxVjE2LjM5NDlIMTE2LjU3NFYyNy43OTUzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMwLjMwOSAyMi4xMTY3QzEzMC4zMDkgMjMuODkzOSAxMjkuNzQ0IDI1LjMyNDQgMTI4LjY1NyAyNi40MDgxQzEyNy41NzEgMjcuNDkxOCAxMjYuMDkzIDI4LjAxMiAxMjQuMjI0IDI4LjAxMkMxMjIuMzU1IDI4LjAxMiAxMjAuODc3IDI3LjQ5MTggMTE5Ljc5IDI2LjQwODFDMTE4LjcwNCAyNS4zMjQ0IDExOC4xMzkgMjMuODkzOSAxMTguMTM5IDIyLjExNjdDMTE4LjEzOSAyMC4zMzk0IDExOC43MDQgMTguOTA5IDExOS43OSAxNy44MjUzQzEyMC44NzcgMTYuNzQxNiAxMjIuMzk4IDE2LjIyMTQgMTI0LjIyNCAxNi4yMjE0QzEyNi4wNDkgMTYuMjIxNCAxMjcuNTI3IDE2Ljc0MTYgMTI4LjY1NyAxNy44MjUzQzEyOS43NDQgMTguODY1NiAxMzAuMzA5IDIwLjI5NjEgMTMwLjMwOSAyMi4xMTY3Wk0xMjEuMjY4IDIyLjExNjdDMTIxLjI2OCAyMy4yMDA0IDEyMS41MjkgMjQuMDY3MyAxMjIuMDUxIDI0LjY3NDJDMTIyLjU3MiAyNS4yODExIDEyMy4yNjggMjUuNTg0NSAxMjQuMTggMjUuNTg0NUMxMjUuMDkzIDI1LjU4NDUgMTI1Ljc4OSAyNS4yODExIDEyNi4zMSAyNC42NzQyQzEyNi44MzIgMjQuMDY3MyAxMjcuMDkzIDIzLjIwMDQgMTI3LjA5MyAyMi4xMTY3QzEyNy4wOTMgMjEuMDMzIDEyNi44MzIgMjAuMTY2MSAxMjYuMzEgMTkuNjAyNUMxMjUuNzg5IDE4Ljk5NTcgMTI1LjA5MyAxOC42OTIyIDEyNC4xMzcgMTguNjkyMkMxMjMuMjI0IDE4LjY5MjIgMTIyLjUyOSAxOC45OTU3IDEyMi4wMDcgMTkuNjAyNUMxMjEuNTI5IDIwLjE2NjEgMTIxLjI2OCAyMS4wMzMgMTIxLjI2OCAyMi4xMTY3WiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMxLjc4NyAxNi4zOTQ5SDEzNy40ODFDMTM5LjIxOSAxNi4zOTQ5IDE0MC40MzYgMTYuNjk4MyAxNDEuMTc1IDE3LjM0ODVDMTQxLjkxNCAxNy45OTg4IDE0Mi4yNjIgMTkuMDgyNCAxNDIuMjYyIDIwLjU1NjNWMjcuNzk1M0gxMzkuMjE5VjIwLjk0NjRDMTM5LjIxOSAyMC4wNzk0IDEzOS4wODkgMTkuNTE1OSAxMzguODI4IDE5LjI5OTJDMTM4LjU2NyAxOS4wMzkxIDEzOC4wNDYgMTguOTA5MSAxMzcuMjIgMTguOTA5MUgxMzQuNzg2VjI3LjgzODZIMTMxLjc0M1YxNi4zOTQ5SDEzMS43ODdaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDMuNzM3NDNIMFYxMC44NDY0SDcuMTI4MzFWMy43Mzc0M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTIzLjI1MTMgLTIuMTU3MjVlLTA1TDE4LjU1MTMgNS41MTY4NUwyNC4wODMxIDEwLjIwNDFMMjguNzgzMSA0LjY4NzI1TDIzLjI1MTMgLTIuMTU3MjVlLTA1WiIgZmlsbD0iI0ZGODYwMCIvPgo8cGF0aCBkPSJNMTUuNjA0MSAzLjczNzQzSDguNDc1ODNWMTAuODQ2NEgxNS42MDQxVjMuNzM3NDNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDEyLjE5MDJIMFYxOS4yOTkySDcuMTI4MzFWMTIuMTkwMloiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMTIuMTkwMkg4LjQ3NTgzVjE5LjI5OTJIMTUuNjA0MVYxMi4xOTAyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMDc5NyAxMi4xOTAySDE2Ljk1MTRWMTkuMjk5MkgyNC4wNzk3VjEyLjE5MDJaIiBmaWxsPSIjRkY4NjAwIi8+CjxwYXRoIGQ9Ik03LjEyODMxIDIwLjY4NjNIMFYyNy43OTUzSDcuMTI4MzFWMjAuNjg2M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMjAuNjg2M0g4LjQ3NTgzVjI3Ljc5NTNIMTUuNjA0MVYyMC42ODYzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMTIzMiAyMC42ODYzSDE2Ljk5NDlWMjcuNzk1M0gyNC4xMjMyVjIwLjY4NjNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik0xNDYgMTUuODMxM0MxNDYgMTYuODcxNyAxNDUuMTc0IDE3LjY5NTMgMTQ0LjEzMSAxNy42OTUzQzE0My4wODggMTcuNjk1MyAxNDIuMjYyIDE2Ljg3MTcgMTQyLjI2MiAxNS44MzEzQzE0Mi4yNjIgMTQuNzkxIDE0My4wODggMTQuMDEwNyAxNDQuMTMxIDE0LjAxMDdDMTQ1LjEzMSAxMy45Njc0IDE0NiAxNC43OTEgMTQ2IDE1LjgzMTNaTTE0Mi45NTcgMTQuNzkxQzE0Mi42OTcgMTUuMDUxMSAxNDIuNTY2IDE1LjQ0MTIgMTQyLjU2NiAxNS44MzEzQzE0Mi41NjYgMTYuNjk4MyAxNDMuMjYyIDE3LjM5MTggMTQ0LjEzMSAxNy4zOTE4QzE0NSAxNy4zOTE4IDE0NS42OTYgMTYuNjk4MyAxNDUuNjk2IDE1LjgzMTNDMTQ1LjY5NiAxNS4wMDc3IDE0NSAxNC4yNzA4IDE0NC4xNzQgMTQuMjcwOEMxNDMuNjUzIDE0LjI3MDggMTQzLjI2MiAxNC40NDQyIDE0Mi45NTcgMTQuNzkxWk0xNDQuODcgMTYuOTE1SDE0NC40NzlMMTQzLjkxNCAxNi4wOTE0VjE2LjkxNUgxNDMuNjA5VjE0Ljc0NzZIMTQzLjk1N0MxNDQuNDM1IDE0Ljc0NzYgMTQ0LjY1MyAxNC45NjQ0IDE0NC42NTMgMTUuMzU0NUMxNDQuNjUzIDE1LjY1NzkgMTQ0LjQ3OSAxNS44NzQ3IDE0NC4xNzQgMTUuOTYxNEwxNDQuODcgMTYuOTE1Wk0xNDQuMDQ0IDE1LjY1NzlDMTQ0LjI2MSAxNS42NTc5IDE0NC4zOTIgMTUuNTI3OSAxNDQuMzkyIDE1LjM1NDVDMTQ0LjM5MiAxNS4xMzc4IDE0NC4yNjEgMTUuMDUxMSAxNDQuMDAxIDE1LjA1MTFIMTQzLjkxNFYxNS42NTc5SDE0NC4wNDRaIiBmaWxsPSIjMzU0M0E4Ii8+Cjwvc3ZnPgo=\\\" style=\\\"\\n text-align: left;\\n width: 146px;\\n position: absolute;\\n top: 14px;\\n left: 31px;\\n\\\">\\n </div>\\n <div style=\\\"\\n position: relative;\\n top: 80px;\\n left: 32px;\\n font-size: 20px;\\n text-align: left;\\n font-weight: 700;\\n letter-spacing: 0.02em;\\n font-style: normal;\\n line-height: 125%;\\n \\\">Claim your FREE account and get a key in less than a minute</div>\\n <ul style=\\\"\\n font-size: 15px;\\n font-weight: 400;\\n color: #333333;\\n letter-spacing: 0.01em;\\n position: relative;\\n left: 32px;\\n top: 88px;\\n line-height: 180%;\\n \\\">\\n <li><span>Access to a 30-day free trial of any of our products.</span></li>\\n <li><span>Access to 24x5 support by developers via the <a href=\\\"https://support.syncfusion.com/create?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">support tickets</a>, <a href=\\\"https://www.syncfusion.com/forums?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">forum</a>, <a href=\\\"https://www.syncfusion.com/feedback?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">feature &amp; feedback page</a> and chat.</span></li>\\n <li><span>200+ <a href=\\\"https://www.syncfusion.com/succinctly-free-ebooks?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">ebooks </a>on the latest technologies, industry trends, and research topics.</span>\\n </li>\\n <li><span>Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion <a href=\\\"https://www.syncfusion.com/downloads/metrostudio?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">Metro Studio.</a></span></li>\\n <li><span>Free and unlimited access to Syncfusion technical <a href=\\\"https://www.syncfusion.com/blogs/?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">blogs</a> and <a href=\\\"https://www.syncfusion.com/resources/techportal/whitepapers?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">whitepapers.</a></span></li>\\n </ul>\\n <div style=\\\"\\n font-size: 18px;\\n font-weight: 700;\\n position: relative;\\n line-height: 125%;\\n letter-spacing: 0.02em;\\n top: 90px;\\n left: 32px;\\n \\\">Syncfusion is trusted by 29,000+ businesses worldwide</div>\\n <img src=\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIwIiBoZWlnaHQ9IjU2IiB2aWV3Qm94PSIwIDAgODIwIDU2IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MjcuNjE3IDIyLjU2NTlWMjQuNzIyNkM0MjYuNTU4IDI0LjM2MzggNDI1LjM5OCAyNC4xNTQ0IDQyNC40NzQgMjQuMTU0NEM0MjMuMzMzIDI0LjE1NDQgNDIyLjY5OCAyNC40OTEyIDQyMi42OTggMjUuMDk2M0M0MjIuNjk4IDI1LjQ4MjQgNDIyLjk3NiAyNS43MzgzIDQyMy43NzMgMjYuMDg1NEw0MjUuOTE3IDI3LjAxNzRDNDI3LjYzMyAyNy43NjM5IDQyOC40OTcgMjguODUzIDQyOC40OTcgMzAuMjY4MUM0MjguNDk3IDMyLjQ1MjIgNDI2LjU0NiAzMy44MyA0MjMuNDUyIDMzLjgzQzQyMi4zMjQgMzMuODMgNDIxLjAxOCAzMy42NzM2IDQxOS42MzYgMzMuMzcwOVYzMS4xNDE2QzQyMS4wMDYgMzEuNTAyOCA0MjIuMjYyIDMxLjY5NTcgNDIzLjIzOSAzMS42OTU3QzQyNC41MTggMzEuNjk1NyA0MjUuMjAzIDMxLjM1MDYgNDI1LjIwMyAzMC43MDc0QzQyNS4yMDMgMzAuMzIwOCA0MjQuOTM1IDMwLjAzNjcgNDI0LjMyMiAyOS43NzE3TDQyMS45NzUgMjguNzU5M0M0MjAuMjM2IDI4LjAwNzggNDE5LjQzMyAyNi45OTU0IDQxOS40MzMgMjUuNTUyMUM0MTkuNDMzIDIzLjQ4MzcgNDIxLjMxNCAyMi4xNjQ5IDQyNC4yNjUgMjIuMTY0OUM0MjUuMjk4IDIyLjE2NDkgNDI2LjU3IDIyLjMxNzEgNDI3LjYxNyAyMi41NjU5VjIyLjU2NTlaTTQzMC4xNjcgMjIuMzkwOUg0MzMuNjM1VjMzLjYwMzlINDMwLjE2N1YyMi4zOTA5Wk00NDQuOTExIDIyLjM5MDlWMjQuNDQ1MUg0MzkuNjc1VjI2Ljk3NDJINDQ0LjI0OVYyOC44MzIzSDQzOS42NzVWMzEuNDU0M0g0NDQuOTc4VjMzLjYwMzlINDM2LjMwNVYyMi4zOTA5SDQ0NC45MTFaTTQ2MS4yOTQgMjIuMzkwOVYzMy42MDM5SDQ1Ny45MzlWMjYuMjIzNkw0NTQuNjUyIDMzLjY5MTVINDUyLjUzMUw0NDkuMjY2IDI2LjIyMzZWMzMuNjAzOUg0NDYuOTQ5VjIyLjM5MDlINDUxLjE4NEw0NTQuMTc4IDI5LjIxMTRMNDU3LjE1NiAyMi4zOTA5SDQ2MS4yOTRWMjIuMzkwOVpNNDcyLjU3OSAyMi4zOTA5VjI0LjQ0NTFINDY3LjMzNVYyNi45NzQySDQ3MS45MDhWMjguODMyM0g0NjcuMzM1VjMxLjQ1NDNINDcyLjYzOFYzMy42MDM5SDQ2My45NTdWMjIuMzkwOUg0NzIuNTc5Wk00ODQuNzk0IDIyLjM5MDlWMzMuNjAzOUg0ODEuMDkzTDQ3Ni45MjYgMjYuNDEyM1YzMy42MDM5SDQ3NC42MDhWMjIuMzkwOUg0NzguNDA3TDQ4Mi40ODQgMjkuNDg3NlYyMi4zOTA5SDQ4NC43OTRaTTQ5NC44NTggMjIuNTY1OVYyNC43MjI2QzQ5My44MDcgMjQuMzY2MyA0OTIuNjQgMjQuMTU0NCA0OTEuNzMyIDI0LjE1NDRDNDkwLjU3MyAyNC4xNTQ0IDQ4OS45MzkgMjQuNDg1OCA0ODkuOTM5IDI1LjA5M0M0ODkuOTM5IDI1LjQ4ODYgNDkwLjE5OCAyNS43MjUgNDkxLjAyMyAyNi4wODU5TDQ5My4xNTcgMjcuMDE3OEM0OTQuODg1IDI3Ljc3MjIgNDk1LjczOSAyOC44NTE4IDQ5NS43MzkgMzAuMjgzNUM0OTUuNzM5IDMyLjQ1NTkgNDkzLjc4NiAzMy44MzA4IDQ5MC42OTkgMzMuODMwOEM0ODkuNTY5IDMzLjgzMDggNDg4LjI1OSAzMy42NzM2IDQ4Ni44NzggMzMuMzcxN1YzMS4xNDI0QzQ4OC4yNDcgMzEuNTAyOCA0ODkuNDk5IDMxLjY5NjUgNDkwLjQ3IDMxLjY5NjVDNDkxLjc0IDMxLjY5NjUgNDkyLjQ0NCAzMS4zNTE1IDQ5Mi40NDQgMzAuNzI4NUM0OTIuNDQ0IDMwLjMxNjMgNDkyLjE5NyAzMC4wNTA0IDQ5MS41NTUgMjkuNzcyNUw0ODkuMjE4IDI4Ljc2MDFDNDg3LjQ2NyAyOC4wMDI4IDQ4Ni42NzQgMjcuMDAyIDQ4Ni42NzQgMjUuNTUzM0M0ODYuNjc0IDIzLjQ4NjIgNDg4LjU1NiAyMi4xNjY1IDQ5MS41IDIyLjE2NjVDNDkyLjUzNiAyMi4xNjUzIDQ5My44MTMgMjIuMzE3MSA0OTQuODU4IDIyLjU2NTlWMjIuNTY1OVoiIGZpbGw9IiMwMEEwQjAiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzUyLjQxMyAyNi44MTlDMzUwLjk5MiAyNS4yNzU5IDM0OS42MzggMjMuODMxNSAzNDguMzQ5IDIyLjE1NzRMMzQ3LjkyIDIxLjU5OTVDMzQ5LjQwNiAyMS4zNjkzIDM1MC42OTUgMjAuMzg0OCAzNTAuNjk1IDE4Ljc0MzNDMzUwLjY5NSAxNy4yMzMxIDM0OS41MzkgMTYuMjQ4MiAzNDcuODIxIDE2LjI0ODJDMzQ2LjU5OCAxNi4yNDgyIDM0NS43MDYgMTYuMzEzNyAzNDUuMjQzIDE2LjMxMzdDMzQ0LjcxNSAxNi4zMTM3IDM0NC4yODUgMTYuMzEzNyAzNDMuNzkgMTYuMjgwOEMzNDMuODU2IDE4LjE1MjEgMzQzLjg4OSAxOC4yODM0IDM0My44ODkgMTkuNDMyMlYyMy42MzQzQzM0My44ODkgMjQuNDU1MyAzNDMuODU2IDI1LjI3NTkgMzQzLjc5IDI2LjgxODZDMzQ0LjE1MyAyNi43MjAyIDM0NC41MTcgMjYuNzIwMiAzNDQuNzgxIDI2LjcyMDJDMzQ1LjA0NSAyNi43MjAyIDM0NS40MDkgMjYuNzUzMSAzNDUuNzA2IDI2LjgxODZDMzQ1LjY0IDI1Ljc2NzkgMzQ1LjYwNyAyNC4wMjgzIDM0NS42MDcgMjMuNjM0M1YyMS4yMDUxQzM0Ny4xNiAyMy4yMDc3IDM0OS4yMDkgMjUuNjY5NSAzNTAuMDAxIDI2LjgxODZDMzUwLjM5OCAyNi43MjAyIDM1MC43MjggMjYuNzIwMiAzNTEuMTI0IDI2LjcyMDJDMzUxLjQ1NSAyNi43MjA2IDM1MS45MTggMjYuNzIwNiAzNTIuNDEzIDI2LjgxOVYyNi44MTlaTTM0OC44NzggMTkuMDA2QzM0OC44NzggMjAuMDIzNCAzNDguMzE3IDIxLjIwNTQgMzQ2Ljc5NyAyMS4yMDU0QzM0Ni40IDIxLjIwNTQgMzQ2LjAwMyAyMS4yMDU0IDM0NS42MDcgMjEuMTcyNVYxNy4wNjg4QzM0Ni4wMDMgMTYuOTcwNCAzNDYuNDk5IDE2LjkwNDYgMzQ2Ljc2MyAxNi45MDQ2QzM0OC4wODUgMTYuOTA0OSAzNDguODc4IDE3LjY2IDM0OC44NzggMTkuMDA2VjE5LjAwNlpNMzgyLjM4IDI2Ljg4NDVDMzgxLjgxOSAyNi4yOTM2IDM4MC45NiAyNS4zNDE3IDM4MC4xMzQgMjQuNDIyM0MzODAuODI4IDIzLjY2NzIgMzgxLjU1NSAyMi41NTEgMzgxLjk4NCAyMS41OTkxQzM4MS43MTkgMjEuNDY3OCAzODEuMzU2IDIxLjIwNTEgMzgxLjA5MiAyMC45NzUzQzM4MC45OTMgMjEuNzk1OSAzODAuNDMyIDIyLjg3OTIgMzc5LjYzOSAyMy44MzE1QzM3OC41MTUgMjIuNTE4NSAzNzguMjE4IDIyLjE1NzQgMzc3LjE5MyAyMC43Nzg1QzM3OC41ODEgMTkuODkyMSAzNzkuMjQyIDE4Ljg3NDMgMzc5LjI0MiAxOC4wNTM3QzM3OS4yNDIgMTcuMTAxNyAzNzguNTgxIDE2LjExNjkgMzc2Ljk2MiAxNi4xMTY5QzM3NS4yMTEgMTYuMTE2OSAzNzQuMzUyIDE3LjIwMDIgMzc0LjM1MiAxOC40ODAzQzM3NC4zNTIgMTkuMjM1NCAzNzQuNTUgMTkuODkxNyAzNzUuMzc2IDIwLjk3NTNDMzc0LjA1NCAyMS42OTc1IDM3Mi43NjYgMjIuNzQ3OSAzNzIuNzY2IDI0LjQyMjNDMzcyLjc2NiAyNi4wNjM5IDM3NC4wODcgMjYuOTE3NCAzNzUuNzA3IDI2LjkxNzRDMzc3LjE5MyAyNi45MTc0IDM3OC4xNTEgMjYuMzI2NiAzNzguOTEyIDI1LjYzNjlMMzc5LjkwMiAyNi44MTlDMzgwLjIgMjYuNzg2MSAzODAuNTMxIDI2LjcyMDYgMzgwLjg2MSAyNi43MjA2QzM4MS4zMjQgMjYuNzIwNiAzODEuODUyIDI2Ljc4NjEgMzgyLjM4IDI2Ljg4NDVWMjYuODg0NVpNMzgzLjM3MiA0MC4wMTU4QzM4MS45MTggMzguNDczIDM4MC41OTcgMzcuMDYxMiAzNzkuMzA4IDM1LjM4NzFMMzc4Ljg3OCAzNC44Mjg4QzM4MC4zMzIgMzQuNTk5MSAzODEuNjU0IDMzLjYxNSAzODEuNjU0IDMxLjk0MDFDMzgxLjY1NCAzMC40NjMyIDM4MC40OTggMjkuNDQ1NCAzNzguNzc5IDI5LjQ0NTRDMzc3LjU1NyAyOS40NDU0IDM3Ni42MzIgMjkuNTQzNSAzNzYuMTY5IDI5LjU0MzVDMzc1LjY3MyAyOS41NDM1IDM3NS4yNDQgMjkuNTQzNSAzNzQuNzQ4IDI5LjQ3NzZDMzc0LjgxNCAzMS4zODIyIDM3NC44NDggMzEuNDgwMiAzNzQuODQ4IDMyLjYyOTRWMzYuODMxMUMzNzQuODQ4IDM3LjY1MjQgMzc0LjgxNCAzOC41MDUyIDM3NC43NDggNDAuMDE1NEMzNzUuMTEyIDM5Ljk0OTYgMzc1LjQ3NSAzOS45NDk2IDM3NS43MDcgMzkuOTQ5NkMzNzYuMDA0IDM5Ljk0OTYgMzc2LjM2OCAzOS45NDk2IDM3Ni42MzIgNDAuMDE1NEMzNzYuNTY1IDM4Ljk5OCAzNzYuNTMzIDM3LjI1ODEgMzc2LjUzMyAzNi44MzExVjM0LjQzNDhDMzc4LjExOSAzNi40MDQyIDM4MC4xNjcgMzguODk5NiAzODAuOTYgNDAuMDE1NEMzODEuMzU2IDM5Ljk0OTYgMzgxLjY4NyAzOS45NDk2IDM4Mi4wODMgMzkuOTQ5NkMzODIuMzggMzkuOTUgMzgyLjg3NiAzOS45NSAzODMuMzcyIDQwLjAxNThaTTM2Mi4xNiAyNi44MTlDMzYwLjk3MSAyNS41NzE1IDM1OC44ODkgMjIuOTc4IDM1OC4wNjMgMjEuOTkzNUwzNTcuMjM3IDIwLjk3NTdDMzU4LjA5NiAxOS45NTgzIDM1OC42OSAxOS4zMzQxIDM1OS4zMTkgMTguNTc5QzM2MC4wNDUgMTcuNzkxIDM2MC43MDYgMTYuOTcwNCAzNjEuNDk5IDE2LjI0ODJDMzYxLjEzNiAxNi4zMTM3IDM2MC45MzcgMTYuMzEzNyAzNjAuNzM5IDE2LjMxMzdDMzYwLjU0MSAxNi4zMTM3IDM2MC4zNDMgMTYuMzEzNyAzNjAuMTQ0IDE2LjI0ODJDMzU5LjkxMyAxNi42MDkzIDM1OS41NSAxNy4wNjg4IDM1OS4xNTMgMTcuNTI4N0MzNTguNzU2IDE3Ljk1NTYgMzU4LjM2IDE4LjM4MjIgMzU4LjA2MyAxOC43NDMzQzM1Ny4yMzYgMTkuNjk1MiAzNTYuNzc0IDIwLjE1NDcgMzU1LjU4NSAyMS4yNzA5VjE5LjQ2NTVDMzU1LjU4NSAxOC40MTUxIDM1NS41ODUgMTcuNzI1NSAzNTUuNjUxIDE2LjI0ODJDMzU1LjMyMSAxNi4zMTM3IDM1NC45NTcgMTYuMzEzNyAzNTQuNzI2IDE2LjMxMzdDMzU0LjQ2MSAxNi4zMTM3IDM1NC4wMzIgMTYuMzEzNyAzNTMuNzY4IDE2LjI0ODJDMzUzLjgzMyAxNy44MjM5IDM1My44NjcgMTguMjgzNCAzNTMuODY3IDE5LjQzMjVWMjMuNjM0N0MzNTMuODY3IDI0LjY4NSAzNTMuODMzIDI1LjMwODggMzUzLjc2OCAyNi44MTlDMzU0LjE2NCAyNi43MjA2IDM1NC40OTUgMjYuNzIwNiAzNTQuNzI2IDI2LjcyMDZDMzU0Ljk1NyAyNi43MjA2IDM1NS4zNTMgMjYuNzUzNSAzNTUuNjUxIDI2LjgxOUMzNTUuNTg1IDI1LjE0NDkgMzU1LjU4NSAyNC4xNTk3IDM1NS41ODUgMjMuNjM0N1YyMS40MzUyQzM1Ni44MDcgMjIuODc5NiAzNTguNjkgMjUuMjQzMyAzNTkuNzQ4IDI2LjgxOUMzNjAuMTMgMjYuNzU2MyAzNjAuNTE3IDI2LjcyMzQgMzYwLjkwNSAyNi43MjA2QzM2MS4yMDIgMjYuNzIwNiAzNjEuNjY1IDI2LjcyMDYgMzYyLjE2IDI2LjgxOVYyNi44MTlaTTM3Mi42MDEgNDAuMDE1OEMzNzIuNTY4IDM5Ljg1MTkgMzcyLjUzNSAzOS43MjA2IDM3Mi41MzUgMzkuNTIzNEMzNzIuNTM1IDM5LjM5MjggMzcyLjU2OCAzOS4yMjgxIDM3Mi42MDEgMzkuMDk2NEMzNzEuMjggMzkuMTI5NyAzNjguOTAxIDM5LjE5NTIgMzY4LjM3MiAzOS4xOTUyVjM0LjY2NDlDMzY5LjY5NCAzNC42NjQ5IDM3MC45ODIgMzQuNjY0OSAzNzIuMjcgMzQuNzk2M0MzNzIuMjM4IDM0LjYzMjQgMzcyLjIwNCAzNC40Njc3IDM3Mi4yMDQgMzQuMzM2NEMzNzIuMjA0IDM0LjIwNTggMzcyLjIwNCAzNC4wNDE5IDM3Mi4yNyAzMy44NDQ3QzM3MS4zNDYgMzMuOTQyOCAzNjkuMTk4IDMzLjk3NiAzNjguMzcyIDMzLjk3NlYzMC4yNjZDMzY5LjgyNiAzMC4yNjYgMzcwLjY4NSAzMC4yNjYgMzcxLjE4IDMwLjI5OTNMMzcyLjUwMiAzMC4zNjUxQzM3Mi40MzYgMzAuMTY3OSAzNzIuNDM2IDMwLjA2OTIgMzcyLjQzNiAyOS45MDUzQzM3Mi40MzYgMjkuNzQxNCAzNzIuNDM2IDI5LjcwODEgMzcyLjUwMiAyOS40NDU4QzM3MS40MTEgMjkuNDc4MyAzNjkuOTI1IDI5LjU0MzggMzY5LjI2NCAyOS41NDM4QzM2OC44MDIgMjkuNTQzOCAzNjcuMzQ4IDI5LjUxMTMgMzY2LjU4NyAyOS40NDU4QzM2Ni42NTQgMzAuMjY2NCAzNjYuNjg2IDMxLjYxMjMgMzY2LjY4NiAzMi41NjQyVjM2Ljg2NTFDMzY2LjY4NiAzNy40ODg1IDM2Ni42MiAzOC43MzU3IDM2Ni41ODcgNDAuMDE2MkMzNjcuNTEzIDM5Ljk1MDMgMzY4LjgwMiAzOS45NTAzIDM2OS4yNjQgMzkuOTUwM0MzNzAuMDI0IDM5Ljk1IDM3MS42NDMgMzkuOTUgMzcyLjYwMSA0MC4wMTU4Wk0zNjQuNjA1IDM5LjEyOTRDMzY0LjQ0IDM4LjgwMDggMzY0LjM0MSAzOC4zMDg4IDM2NC4yNzUgMzguMDQ2MUMzNjIuOTIgMzkuMTYxOSAzNjEuOTk1IDM5LjM5MjQgMzYwLjkzOCAzOS4zOTI0QzM1OC41OTIgMzkuMzkyNCAzNTcuMzM3IDM3LjI5MTMgMzU3LjMzNyAzNC42NjQ5QzM1Ny4zMzcgMzEuNzQzNiAzNTguNzU3IDMwLjAzNjIgMzYxLjE2OSAzMC4wMzYyQzM2Mi40MjUgMzAuMDM2MiAzNjMuNjE0IDMwLjU5NDUgMzY0LjE3NiAzMS4xNTI4QzM2NC4yMDggMzAuODg5OCAzNjQuMzA4IDMwLjM2NDggMzY0LjQ3MyAzMC4wNjg4QzM2My4zMTYgMjkuNTExMyAzNjIuMjU5IDI5LjM0NjYgMzYxLjEwMiAyOS4zNDY2QzM1Ny4yMzcgMjkuMzQ2NiAzNTUuNDUzIDMxLjc0MzYgMzU1LjQ1MyAzNC44Mjg4QzM1NS40NTMgMzguMzA5MSAzNTcuNzk4IDQwLjE0NzEgMzYwLjczOSA0MC4xNDcxQzM2Mi40MjUgNDAuMTQ3MSAzNjMuODEyIDM5LjYyMjIgMzY0LjYwNSAzOS4xMjk0VjM5LjEyOTRaTTM0Mi4zMDMgMjYuODE5QzM0MC41MTkgMjMuNDA0OSAzMzguOCAxOS4xMzczIDMzNy41NzggMTYuMTE2OUgzMzcuMzhDMzM2LjU4NyAxOC4wMjA3IDMzNS4xMzMgMjEuMjcwOSAzMzQuNzM3IDIyLjE4OTlDMzM0LjI3NCAyMy4zMDYxIDMzMy4yNSAyNS41MDU2IDMzMi41ODkgMjYuODE4NkMzMzIuODAzIDI2Ljc1MzggMzMzLjAyNiAyNi43MjA2IDMzMy4yNSAyNi43MjAyQzMzMy40NDggMjYuNzIwMiAzMzMuNjEzIDI2Ljc1MzEgMzMzLjg0NSAyNi44MTg2QzMzNC4xNzUgMjUuOTMyMiAzMzQuNjM4IDI0LjgxNiAzMzUuMTMzIDIzLjYzNDNDMzM1Ljc5NCAyMy42MDE0IDMzNi4zODkgMjMuNTY4OCAzMzYuOTg0IDIzLjU2ODhDMzM3LjYxMiAyMy41Njg4IDMzOC4yNzIgMjMuNjAxNCAzMzguOTMzIDIzLjYzNDNMMzM5LjU5NCAyNS4yMUwzNDAuMjU1IDI2LjgxODZDMzQwLjcxNyAyNi43MjAyIDM0MS4wOCAyNi43MjAyIDM0MS4zMTIgMjYuNzIwMkMzNDEuNjA5IDI2LjcyMDYgMzQxLjg3MyAyNi43MjA2IDM0Mi4zMDMgMjYuODE5VjI2LjgxOVpNMzUzLjYzNiAyOS40NDU0QzM1My40MzggMjkuNTExMyAzNTMuMjczIDI5LjU0MzUgMzUzLjEwNyAyOS41NDM1QzM1Mi45MDkgMjkuNTQzNSAzNTIuNzQ0IDI5LjUxMDkgMzUyLjU0NiAyOS40NDU0QzM1Mi42NDQgMzAuNzU4NCAzNTIuNjc4IDMyLjA3MTQgMzUyLjY3OCAzMy4zNTE5VjM2LjczMzRDMzUyLjE0OSAzNi4yNzM2IDM1MC44NiAzNS4wOTE5IDM0OS4zNzQgMzMuNzEzQzM0Ny44NiAzMi4zMDc0IDM0Ni4zOTQgMzAuODUxMSAzNDQuOTc5IDI5LjM0NjZIMzQ0Ljc0OEMzNDQuNzgxIDMwLjgyNDMgMzQ0LjgxNCAzMi40IDM0NC44MTQgMzMuODExNFYzNS44Nzk5QzM0NC44MTQgMzcuNjUyOCAzNDQuODE0IDM4LjYwNDcgMzQ0LjcxNSA0MC4wMTYyQzM0NC45OCAzOS45NTAzIDM0NS4xMTIgMzkuOTUwMyAzNDUuMzEgMzkuOTUwM0MzNDUuNDQyIDM5Ljk1MDMgMzQ1LjU3NSAzOS45NTAzIDM0NS44MDYgNDAuMDE2MkMzNDUuNzQgMzguNjcwNiAzNDUuNzA3IDM2LjQ3MDggMzQ1LjcwNyAzNS44Nzk5VjMyLjU5NjhDMzQ4LjE4NSAzNC44NjI1IDM1MS4yMjQgMzcuODgyNiAzNTMuNDcxIDQwLjE0NzVIMzUzLjYwM0MzNTMuNjAzIDM4LjkzMjkgMzUzLjUzNyAzNy43MTc5IDM1My41MzcgMzYuNTA0VjM0LjYzMjdDMzUzLjUzNiAzMi40MzI1IDM1My41MzYgMzEuMzQ5MyAzNTMuNjM2IDI5LjQ0NTRaTTM0Mi41NjcgNDAuMDE1OEMzNDIuNTM0IDM5Ljg1MTkgMzQyLjUwMSAzOS43MjA2IDM0Mi41MDEgMzkuNTIzNEMzNDIuNTAxIDM5LjM5MjggMzQyLjUzNCAzOS4yMjgxIDM0Mi41NjcgMzkuMDk2NEMzNDEuMjQ2IDM5LjEyOTcgMzM4Ljg2NyAzOS4xOTUyIDMzOC4zNzEgMzkuMTk1MlYzNC42NjQ5QzMzOS42NiAzNC42NjQ5IDM0MC45NDggMzQuNjY0OSAzNDIuMjM3IDM0Ljc5NjNDMzQyLjIwNCAzNC42MzI0IDM0Mi4xNzEgMzQuNDY3NyAzNDIuMTcxIDM0LjMzNjRDMzQyLjE3MSAzNC4yMDU4IDM0Mi4xNzEgMzQuMDQxOSAzNDIuMjM3IDMzLjg0NDdDMzQxLjMxMiAzMy45NDI4IDMzOS4xOTcgMzMuOTc2IDMzOC4zNzEgMzMuOTc2VjMwLjI2NkMzMzkuNzkyIDMwLjI2NiAzNDAuNjUxIDMwLjI2NiAzNDEuMTc5IDMwLjI5OTNMMzQyLjQ2OCAzMC4zNjUxQzM0Mi40MzUgMzAuMTY3OSAzNDIuNDM1IDMwLjA2OTIgMzQyLjQzNSAyOS45MDUzQzM0Mi40MzUgMjkuNzQxNCAzNDIuNDM1IDI5LjY3NTUgMzQyLjQ2OCAyOS40NDU4QzM0MS4zNzggMjkuNDc4MyAzMzkuODkxIDI5LjU0MzggMzM5LjIzIDI5LjU0MzhDMzM4Ljc2NyAyOS41NDM4IDMzNy4zMTQgMjkuNTExMyAzMzYuNTU0IDI5LjQ0NThDMzM2LjYyIDMwLjI2NjQgMzM2LjY1MyAzMS42MTIzIDMzNi42NTMgMzIuNTY0MlYzNi44NjUxQzMzNi42NTMgMzcuNDg4NSAzMzYuNTg3IDM4LjczNTcgMzM2LjU1NCA0MC4wMTYyQzMzNy41MTIgMzkuOTUwMyAzMzguNzY3IDM5Ljk1MDMgMzM5LjIzIDM5Ljk1MDNDMzM5Ljk5IDM5Ljk1IDM0MS42NDIgMzkuOTUgMzQyLjU2NyA0MC4wMTU4VjQwLjAxNThaTTMzMS4yMDEgMjYuODE5QzMzMC42NzMgMjMuMjQwNiAzMzAuMjEgMTkuNDk4NCAzMjkuODQ3IDE2LjExNjlDMzI5Ljc0OCAxNi4xNDk4IDMyOS43MTQgMTYuMTQ5OCAzMjkuNjQ5IDE2LjExNjlDMzI4Ljk1NSAxNy4zMzE1IDMyOC4xNjIgMTguNjQ0NSAzMjcuNTY3IDE5LjU2MzlDMzI3LjAwNiAyMC40NTAzIDMyNi4zNDUgMjEuNTAwNyAzMjUuNTg1IDIyLjYxNjlDMzIzLjk5OSAyMC41ODE3IDMyMi4zNDcgMTguMDIxMSAzMjEuMjU2IDE2LjExNjlDMzIxLjE5IDE2LjE0OTggMzIxLjE1NyAxNi4xMTY5IDMyMS4wOTEgMTYuMTE2OUMzMjAuNzI4IDE5LjQ5OCAzMjAuMjMyIDIzLjI3MzIgMzE5LjczNiAyNi44MTlDMzIwLjAwMSAyNi43MjA2IDMyMC4xNjYgMjYuNzIwNiAzMjAuMjk4IDI2LjcyMDZDMzIwLjQ5NiAyNi43MjA2IDMyMC42MjggMjYuNzUzNSAzMjAuODU5IDI2LjgxOUMzMjAuOTkyIDI0LjQ1NTMgMzIxLjI1NiAyMi4xMjQ0IDMyMS41NTMgMTkuNjYyM0MzMjIuODQyIDIxLjUzMzYgMzIzLjk2NSAyMy4xNDIyIDMyNS4yMjEgMjQuODQ5M0MzMjYuMjc4IDIzLjIwNzcgMzI3LjM2OCAyMS40MzQ4IDMyOC41NTggMTkuNjI5NEMzMjguODg4IDIyLjE1NyAzMjkuMTg2IDI0LjQ1NTMgMzI5LjM1MSAyNi44MTlDMzI5Ljc4IDI2LjcyMDYgMzMwLjA3OCAyNi43MjA2IDMzMC4yNzYgMjYuNzIwNkMzMzAuNTQgMjYuNzIwNiAzMzAuODA1IDI2LjcyMDYgMzMxLjIwMSAyNi44MTlWMjYuODE5Wk0zMzQuOTY4IDMyLjIwMjhDMzM0Ljk2OCAzMC4yOTg5IDMzMy40NDggMjkuNDQ1NCAzMzEuNTk4IDI5LjQ0NTRDMzMwLjc3MiAyOS40NDU0IDMyOS44OCAyOS41NDM1IDMyOS4yNTIgMjkuNTQzNUMzMjkuMDIxIDI5LjU0MzUgMzI4LjUyNSAyOS41NDM1IDMyNy45OTcgMjkuNDc3NkMzMjguMDMgMzAuNTI4MyAzMjguMDk2IDMxLjQxNDggMzI4LjA5NiAzMi40MzIyVjM2LjkyOTVDMzI4LjA5NiAzNy45MTQ4IDMyOC4wMyAzOC45OTggMzI3Ljk5NyA0MC4wMTU0QzMyOC40MjYgMzkuOTQ5NiAzMjguNzI0IDM5Ljk0OTYgMzI4LjkyMiAzOS45NDk2QzMyOS4xNTMgMzkuOTQ5NiAzMjkuNDg0IDM5Ljk0OTYgMzI5Ljg4IDQwLjAxNTRDMzI5LjgxNSAzOS4wMzE5IDMyOS43ODIgMzguMDQ2NSAzMjkuNzgxIDM3LjA2MDlWMzUuNDJDMzMwLjE0NSAzNS40NTI2IDMzMC41MDggMzUuNDUyNiAzMzAuOTA1IDM1LjQ1MjZDMzMyLjgyIDM1LjQ1MjYgMzM0Ljk2OCAzNC43MzA0IDMzNC45NjggMzIuMjAyOFYzMi4yMDI4Wk0zMjYuMDE0IDM2Ljg5NzNDMzI2LjAxNCAzNS4yNTU4IDMyNC45MjQgMzQuNTMzNiAzMjMuMDQgMzMuNzQ1NkMzMjEuNjg2IDMzLjE4OCAzMjAuOTkyIDMyLjY5NTYgMzIwLjk5MiAzMS42NDQ1QzMyMC45OTIgMzAuNjYgMzIxLjc1MiAzMC4wMzYyIDMyMy4wMDggMzAuMDM2MkMzMjMuODM0IDMwLjAzNjIgMzI0LjU2MSAzMC4zMzE1IDMyNS4yMjIgMzAuODU2OEMzMjUuMjg3IDMwLjQ5NTcgMzI1LjQ1MyAzMC4xMzQ3IDMyNS42NTEgMjkuODM5NEMzMjQuODU4IDI5LjQ3ODMgMzIzLjk5OSAyOS4zNDcgMzIzLjA3NCAyOS4zNDdDMzIwLjM2NSAyOS4zNDcgMzE5LjUwNSAzMC44OTA1IDMxOS41MDUgMzIuMjAzNUMzMTkuNTA1IDMzLjgxMTggMzIwLjI5OSAzNC41NjcyIDMyMi4zNDcgMzUuMzU1M0MzMjMuNjM2IDM1Ljg0NyAzMjQuMjk2IDM2LjQ3MTEgMzI0LjI5NiAzNy41NTQ0QzMyNC4yOTYgMzguNzAzNSAzMjMuNDM3IDM5LjQyNTcgMzIyLjI0OCAzOS40MjU3QzMyMS41NTQgMzkuNDI1NyAzMjAuMzY1IDM5LjA2NDYgMzE5LjUzOSAzOC4zMDk5QzMxOS41MDUgMzguNzM2MSAzMTkuNTA1IDM5LjEzMDQgMzE5LjM3MyAzOS40OTE1QzMxOS45MDIgMzkuNzU0NiAzMjEuMTI1IDQwLjE0NzkgMzIyLjIxNSA0MC4xNDc5QzMyNC45OSA0MC4xNDcxIDMyNi4wMTQgMzguNDM5NyAzMjYuMDE0IDM2Ljg5NzNWMzYuODk3M1pNMzc4LjE1MiAxNy45ODgyQzM3OC4xNTIgMTguOTczIDM3Ny40NTggMTkuNjYyMyAzNzYuNzY0IDIwLjIyMDJDMzc2LjMwMSAxOS41NjM5IDM3NS43NCAxOC42NzcxIDM3NS43NCAxNy45ODgyQzM3NS43NCAxNy4yMzMxIDM3Ni4yNjggMTYuODA2MSAzNzYuOTk1IDE2LjgwNjFDMzc3Ljk4NyAxNi44MDY1IDM3OC4xNTIgMTcuNjkyNiAzNzguMTUyIDE3Ljk4ODJWMTcuOTg4MlpNMzc4LjQ4MiAyNS4wMTMyQzM3OC4xMTkgMjUuMzQxNyAzNzcuMjYgMjUuOTY1NSAzNzYuNTMzIDI1Ljk2NTVDMzc1LjU3NCAyNS45NjU1IDM3NC40MTggMjUuMjc1OSAzNzQuNDE4IDIzLjc5ODZDMzc0LjQxOCAyMi40ODU1IDM3NS4yNzcgMjEuODk0NyAzNzUuODA2IDIxLjU2NjVDMzc3LjAyOCAyMy4yNDA2IDM3Ny4wOTUgMjMuMzM5MSAzNzguNDgyIDI1LjAxMzJaTTM3OS44MDQgMzIuMjAyOEMzNzkuODA0IDMzLjI1MzUgMzc5LjI3NSAzNC40MDI2IDM3Ny43NTUgMzQuNDAyNkMzNzcuMzI2IDM0LjQwMjYgMzc2LjkyOSAzNC40MDI2IDM3Ni41MzMgMzQuMzY5M1YzMC4yNjU2QzM3Ni45MjkgMzAuMTY3NiAzNzcuNDI1IDMwLjEzNDMgMzc3LjcyMiAzMC4xMzQzQzM3OS4wMTEgMzAuMTM0MyAzNzkuODA0IDMwLjg4OTggMzc5LjgwNCAzMi4yMDI4Wk0zMzguNjAyIDIyLjgxNDFDMzM3LjkwOSAyMi44NDY2IDMzNy41NDUgMjIuODQ2NiAzMzcuMDgyIDIyLjg0NjZDMzM2LjUyMSAyMi44NDY2IDMzNi4xOSAyMi44NDY2IDMzNS40NjMgMjIuODE0MUwzMzcuMDgyIDE5LjAwNkwzMzguNjAyIDIyLjgxNDFaTTMzMy4xNTEgMzIuMzAwOEMzMzMuMTUxIDMzLjgxMTEgMzMyLjI1OCAzNC43OTU5IDMzMC44MDUgMzQuNzk1OUMzMzAuNTA3IDM0Ljc5NTkgMzMwLjE3NyAzNC43OTU5IDMyOS43OCAzNC43MzAxVjMwLjIzMjdDMzMwLjI0MyAzMC4xNjY5IDMzMC42MzkgMzAuMTMzOSAzMzEuMDM2IDMwLjEzMzlDMzMyLjQyNCAzMC4xMzQzIDMzMy4xNTEgMzEuMDIxMSAzMzMuMTUxIDMyLjMwMDhaTTM2OS41MjggMjMuNjY3NkMzNjkuNTI4IDIyLjAyNiAzNjguNDM4IDIxLjMwMzkgMzY2LjU1NSAyMC41MTYyQzM2NS4yIDE5Ljk1ODMgMzY0LjUwNiAxOS40OTg4IDM2NC41MDYgMTguNDE1MUMzNjQuNTA2IDE3LjQ2MzIgMzY1LjI2NiAxNi44MDY1IDM2Ni41MjEgMTYuODA2NUMzNjcuMzQ4IDE2LjgwNjUgMzY4LjA3NSAxNy4xMDE3IDM2OC43MzUgMTcuNjI3NUMzNjguODAyIDE3LjI2NjQgMzY4Ljk2NyAxNi45MDQ5IDM2OS4xMzEgMTYuNjQyMkMzNjguMzcyIDE2LjI4MTEgMzY3LjQ3OSAxNi4xMTcyIDM2Ni41ODcgMTYuMTE3MkMzNjMuOTQ0IDE2LjExNzIgMzYyLjk4NiAxNy42NiAzNjIuOTg2IDE5LjAwNkMzNjIuOTg2IDIwLjU4MTcgMzYzLjgxMiAyMS4zMzY4IDM2NS44NjEgMjIuMTI0NEMzNjcuMTQ5IDIyLjYxNjkgMzY3LjgxIDIzLjI0MDYgMzY3LjgxIDI0LjM1NjhDMzY3LjgxIDI1LjQ3MyAzNjYuOTUxIDI2LjE5NTIgMzY1Ljc2MiAyNi4xOTUyQzM2NS4wMzUgMjYuMTk1MiAzNjMuODc5IDI1LjgzNDEgMzYzLjA1MiAyNS4xMTE5QzM2My4wMiAyNS41Mzg5IDM2Mi45ODYgMjUuOSAzNjIuODg3IDI2LjI2MTFDMzYzLjM4MyAyNi41MjM4IDM2NC42MDYgMjYuOTE3NCAzNjUuNzI5IDI2LjkxNzRDMzY4LjUwNCAyNi45MTc0IDM2OS41MjggMjUuMjQzMyAzNjkuNTI4IDIzLjY2NzZWMjMuNjY3NloiIGZpbGw9IiMwMzY1NTUiLz4NCjxwYXRoIGQ9Ik02NDAuNDE2IDIwLjU1NzNDNjM4LjY3MSAxOS44MzU0IDYzNy42MzEgMTkuNTU1MSA2MzYuNTk4IDE5LjU1NTFDNjM1LjUxNCAxOS41NTUxIDYzNC44MTkgMTkuOTE3IDYzNC44MTkgMjAuNDc2NUM2MzQuODE5IDIyLjE2NDUgNjQwLjk2MiAyMS42ODkzIDY0MC45NjIgMjUuNTkzNkM2NDAuOTYyIDI3Ljc0NjQgNjM5LjAyNCAyOC45OTc0IDYzNi4zMzIgMjguOTk3NEM2MzQuMjIgMjguOTk3NCA2MzMuMTggMjguNDg4IDYzMS45ODMgMjcuOTExNlYyNS40OTYyQzYzMy43MSAyNi41NjM1IDYzNC43NjggMjYuOTQwMSA2MzYuMTAxIDI2Ljk0MDFDNjM3LjI1NiAyNi45NDAxIDYzNy44NzkgMjYuNTYzNSA2MzcuODc5IDI1LjkwNjNDNjM3Ljg3OSAyNC4wNjg1IDYzMS43MzcgMjQuNzQxNSA2MzEuNzM3IDIwLjcyMTNDNjMxLjczNyAxOC43ODI3IDYzMy41MzQgMTcuNDk5IDYzNi4zMzIgMTcuNDk5QzYzNy42ODIgMTcuNDk5IDYzOC45MDEgMTcuNzYzNSA2NDAuNDE2IDE4LjM3MDdWMjAuNTU3M1pNNjQ5LjAxNiAyOC40ODQxQzY0Ny45OTIgMjguODMwNiA2NDcuMTI2IDI4Ljk5NTQgNjQ2LjI2MiAyOC45OTU0QzY0My40MDIgMjguOTk1NCA2NDEuNTUyIDI3LjQ0MjIgNjQxLjU1MiAyNS4wNzkyQzY0MS41NTIgMjIuNzU5NCA2NDMuNDczIDIxLjEyMDIgNjQ2LjE1NiAyMS4xMjAyQzY0Ni45ODUgMjEuMTIwMiA2NDguMDQ0IDIxLjMxODIgNjQ4Ljg5MSAyMS42MTIzVjIzLjM4ODFDNjQ4LjIyMSAyMy4wNTYyIDY0Ny40NDQgMjIuODc0MSA2NDYuODA5IDIyLjg3NDFDNjQ1LjI3MyAyMi44NzQxIDY0NC4yODYgMjMuNzM0MyA2NDQuMjg2IDI1LjA2MTlDNjQ0LjI4NiAyNi40MDggNjQ1LjI1NiAyNy4yOTQgNjQ2LjcyIDI3LjI5NEM2NDcuMzM3IDI3LjI5NCA2NDcuODg2IDI3LjE2MjMgNjQ5LjAxNiAyNi43NjhMNjQ5LjAxNiAyOC40ODQxWk02NzEuMzIgMjQuMjA5QzY3MS40MjUgMjMuMTU0OCA2NzIuMDgxIDIyLjU0NTcgNjczLjA4NyAyMi41NDU3QzY3NC4wNzYgMjIuNTQ1NyA2NzQuNzQ2IDIzLjE3MjEgNjc0Ljg1MiAyNC4yMDlINjcxLjMyWk02NzIuOTEgMjEuMTIyOUM2NzAuNCAyMS4xMjI5IDY2OC42MTQgMjIuNzc1NSA2NjguNjE0IDI1LjEwMTJDNjY4LjYxNCAyNy40NDQxIDY3MC40NzEgMjguOTk1NCA2NzMuMzM1IDI4Ljk5NTRDNjczLjk3IDI4Ljk5NTQgNjc1LjUwNCAyOC45OTU0IDY3Ni45NjYgMjcuOTg3VjI2LjUwNDJDNjc1Ljc2OSAyNy4yOTkzIDY3NC45NzcgMjcuNTczMSA2NzMuOTU1IDI3LjU3MzFDNjcyLjM0MSAyNy41NzMxIDY3MS4zNTQgMjYuNzk0OSA2NzEuMjY1IDI1LjQ2NjZINjc3LjExQzY3Ny4yMzIgMjIuNjkzOSA2NzUuMjc5IDIxLjEyMjkgNjcyLjkxIDIxLjEyMjlWMjEuMTIyOVpNNjc4LjA5OSAyOC44NTcySDY4MC42NTRWMjEuMjYyN0g2NzguMDk5VjI4Ljg1NzJaTTY4Ny43NjcgMjYuNzgxNUM2ODcuMjM0IDI3LjIyODEgNjg2Ljc5MiAyNy40MDcyIDY4Ni4yNDYgMjcuNDA3MkM2ODUuMDQzIDI3LjQwNzIgNjg0LjI4MSAyNi40ODM4IDY4NC4yODEgMjUuMTAwNEM2ODQuMjgxIDIzLjU4NDEgNjg1LjA0MyAyMi43MTAxIDY4Ni4zMzEgMjIuNzEwMUM2ODYuNzkyIDIyLjcxMDEgNjg3LjM5NCAyMi45MDggNjg3Ljc2NyAyMy4xNTU5VjI2Ljc4MTVaTTY4Ny43NjcgMTcuNjM5MVYyMS41OTU4QzY4Ny4wNzYgMjEuMjg0NyA2ODYuMzg4IDIxLjEyMDIgNjg1LjY0NCAyMS4xMjAyQzY4My4zMTMgMjEuMTIwMiA2ODEuNyAyMi43MjY2IDY4MS43IDI1LjA1MDdDNjgxLjcgMjcuMzI0OCA2ODMuMzEzIDI4Ljk5NzQgNjg1LjUgMjguOTk3NEM2ODYuMzY3IDI4Ljk5NzQgNjg3LjAzNyAyOC43ODU2IDY4Ny43NjcgMjguMjQzNVYyOC44NTQ5SDY5MC4zMjJWMTcuNjM5MUg2ODcuNzY3Wk02OTQuMTA1IDI0LjIwOUM2OTQuMjExIDIzLjE1NDggNjk0Ljg2NCAyMi41NDU3IDY5NS44NjggMjIuNTQ1N0M2OTYuODU4IDIyLjU0NTcgNjk3LjUzNSAyMy4xNzIxIDY5Ny42NDEgMjQuMjA5SDY5NC4xMDVaTTY5NS42OTQgMjEuMTIyOUM2OTMuMTg0IDIxLjEyMjkgNjkxLjQgMjIuNzc1NSA2OTEuNCAyNS4xMDEyQzY5MS40IDI3LjQ0NDEgNjkzLjI1OSAyOC45OTU0IDY5Ni4xMTkgMjguOTk1NEM2OTYuNzUzIDI4Ljk5NTQgNjk4LjI5IDI4Ljk5NTQgNjk5Ljc1NSAyNy45ODdWMjYuNTA0MkM2OTguNTU3IDI3LjI5OTMgNjk3Ljc2MyAyNy41NzMxIDY5Ni43MzYgMjcuNTczMUM2OTUuMTMxIDI3LjU3MzEgNjk0LjE0IDI2Ljc5NDkgNjk0LjA1MSAyNS40NjY2SDY5OS44OTRDNzAwLjAxNSAyMi42OTM5IDY5OC4wNjEgMjEuMTIyOSA2OTUuNjk0IDIxLjEyMjkiIGZpbGw9IiMwMDlFNEQiLz4NCjxwYXRoIGQ9Ik03MDMuNzIxIDIzLjQzNjhINzAzLjc1OEM3MDQuNTE3IDIxLjg1NjIgNzA1LjM2NiAyMS4xMTUgNzA2LjM1MiAyMS4xMTVDNzA2Ljg2MiAyMS4xMTUgNzA3LjMwMyAyMS4yOTY0IDcwOC4wNDQgMjEuODA3Nkw3MDcuMzQxIDIzLjkxMzNDNzA2LjY3IDIzLjUxODYgNzA2LjIyOSAyMy4zNTM1IDcwNS44MjMgMjMuMzUzNUM3MDQuODg2IDIzLjM1MzUgNzA0LjI4NiAyNC4xNzc1IDcwMy43MjEgMjUuNTcwNFYyOC44NDY2SDcwMS4xNjJWMjEuMjU0MUg3MDMuNzIxVjIzLjQzNjhaTTY4MC43NzUgMTguMDY3NEM2ODEuMDE1IDE4LjY1NzUgNjgwLjU4MyAxOS40ODA1IDY3OS44MTQgMTkuOTA0QzY3OS4wNDEgMjAuMzI3MSA2NzguMjI0IDIwLjE5MjggNjc3Ljk4NiAxOS42MDI3QzY3Ny43NDMgMTkuMDExNyA2NzguMTczIDE4LjE4NzcgNjc4Ljk0NSAxNy43NjY2QzY3OS43MTYgMTcuMzQxMSA2ODAuNTMzIDE3LjQ3NTkgNjgwLjc3NSAxOC4wNjc0WiIgZmlsbD0iIzAwOUU0RCIvPg0KPHBhdGggZD0iTTY1OC4yMiAyNC4wMjMxQzY1OC4yMiAyMS45NjUxIDY1Ni43MTkgMjEuMTIyNiA2NTUuMjM5IDIxLjEyMjZDNjU0LjIzMiAyMS4xMjI2IDY1My40MDQgMjEuNTE4NCA2NTIuNjY0IDIyLjM5MjFINjUyLjYyOVYxNy42MzkySDY1MC4wNzFWMjguODM1M0g2NTIuNjI5VjI0LjAyMzFDNjUzLjIyOCAyMy4yMTYxIDY1My43MzggMjIuODcxMSA2NTQuMzM4IDIyLjg3MTFDNjU1LjEzNCAyMi44NzExIDY1NS42NjIgMjMuMzk4NiA2NTUuNjYyIDI0LjUzMjlWMjcuMjAwOEM2NTYuNTIgMjYuNzg5NiA2NTcuMzkzIDI2LjUzNzQgNjU4LjIyIDI2LjQ0MzhWMjQuMDIzMVpNNjY0LjYzNiAyMS4xMTk5QzY2My41OTQgMjEuMTE5OSA2NjIuNzk5IDIxLjQ4MTEgNjYxLjk4NCAyMi4zNDkzVjIxLjI2MjRINjU5LjQyOFYyNi40MjM0QzY2MC4zMTMgMjYuNTA1OCA2NjEuNDQzIDI2Ljg4NDcgNjYxLjk4NCAyNy41MTA0VjIzLjk2MzRDNjYyLjY1NyAyMy4wMjMyIDY2My4xMzQgMjIuNzA5NyA2NjMuNzcgMjIuNzA5N0M2NjQuNDk0IDIyLjcwOTcgNjY1LjA0NSAyMy4xNTU2IDY2NS4wNDUgMjQuMjI2NFYyOC44MzcySDY2Ny42MDJWMjQuMDI4OUM2NjcuNjAyIDIxLjc5MjYgNjY1LjkwOCAyMS4xMTk5IDY2NC42MzYgMjEuMTE5OVYyMS4xMTk5Wk02NjkuMDE1IDMxLjAxODFINjY2LjA0M1YzMi45ODY0SDY2OC45MDlWMzMuODMxMkg2NjYuMDQzVjM1Ljg2MTlINjY5LjEwM1YzNi43MDU1SDY2NS4wNDZWMzAuMTc1Mkg2NjkuMDE1TDY2OS4wMTUgMzEuMDE4MVpNNjcxLjQ0MiAzNi43MDkzSDY3Mi4zNTJWMzAuMTczM0g2NzEuNDQyVjM2LjcwOTNaTTY3Ni44NTkgMzMuMDQ4NEM2NzcuNTA0IDMzLjA0ODQgNjc3LjkwNCAzMy40NjMxIDY3Ny45MzUgMzQuMTE0Mkg2NzUuNjE2QzY3NS43NDIgMzMuNDM0MiA2NzYuMTYxIDMzLjA0ODQgNjc2Ljg1OSAzMy4wNDg0Wk02NzUuNiAzNC42ODFINjc4Ljg0MkM2NzguODQyIDMzLjA4NjkgNjc4LjA2MiAzMi4zMTggNjc2LjgzOCAzMi4zMThDNjc1LjU2OSAzMi4zMTggNjc0LjY4OCAzMy4xOTI0IDY3NC42ODggMzQuNDk2OUM2NzQuNjg4IDM1LjY4OSA2NzUuNDg0IDM2Ljc4OTggNjc2LjkxNyAzNi43ODk4QzY3Ny42OTggMzYuNzg5OCA2NzguMjAzIDM2LjYyODEgNjc4Ljc2MyAzNi4yODJWMzUuNDU2QzY3OC4yMjIgMzUuNzg1NiA2NzcuNjk4IDM1Ljk3NTggNjc3LjE0NyAzNS45NzU4QzY3Ni4yNjUgMzUuOTc1OCA2NzUuNzQyIDM1LjUzNSA2NzUuNiAzNC42ODA2VjM0LjY4MVpNNjg0Ljc4NiAzMy41MzA5QzY4NC4yNjMgMzMuMTk2NiA2ODMuOTE0IDMzLjA5ODUgNjgzLjUxNSAzMy4wOTg1QzY4Mi42ODIgMzMuMDk4NSA2ODIuMTA1IDMzLjY5NDUgNjgyLjEwNSAzNC41NjdDNjgyLjEwNSAzNS40NTYgNjgyLjcxOSAzNS45OTE2IDY4My42NjggMzUuOTkxNkM2ODQuMDU4IDM1Ljk5MTYgNjg0LjQzIDM1Ljg5NzMgNjg0Ljg4OCAzNS43MDU5VjM2LjU0MjZDNjg0LjU4MiAzNi42Nzc0IDY4My45OTcgMzYuNzg5OCA2ODMuNTE1IDM2Ljc4OThDNjgyLjEzNiAzNi43ODk4IDY4MS4xOCAzNS45MDYyIDY4MS4xOCAzNC42NDMyQzY4MS4xOCAzMy4yMTc4IDY4Mi4wNTQgMzIuMzE4IDY4My40NTMgMzIuMzE4QzY4My45ODcgMzIuMzE4IDY4NC4zNDYgMzIuNDMzOSA2ODQuNzg3IDMyLjYxNDVMNjg0Ljc4NiAzMy41MzA5Wk02ODguOTM0IDMyLjQwMDRINjkwLjM5NVYzMy4xNjUxSDY4OC45MzRWMzUuMzc1MkM2ODguOTM0IDM1Ljg4MTEgNjg5LjMyNyAzNi4wMjc0IDY4OS41OTMgMzYuMDI3NEM2ODkuOTIyIDM2LjAyNzQgNjkwLjI2MiAzNS45MiA2OTAuNjMgMzUuNzA3OVYzNi41MDM3QzY5MC4zMSAzNi42Njc4IDY4OS44MiAzNi43ODk4IDY4OS41MTkgMzYuNzg5OEM2ODguNTI4IDM2Ljc4OTggNjg4LjAyNyAzNi4yMTYxIDY4OC4wMjcgMzUuNDM5MVYzMy4xNjUxSDY4Ny4yMjRWMzMuMDcwM0w2ODguOTM0IDMxLjUxMDJWMzIuNDAwNFpNNjkzLjg3NiAzMi40MDA0VjMzLjM5NjlINjkzLjg5NUM2OTQuMzU5IDMyLjYzNDUgNjk0LjggMzIuMzE4IDY5NS4yMyAzMi4zMThDNjk1LjYwMSAzMi4zMTggNjk1Ljk0NyAzMi40ODAxIDY5Ni4zMjkgMzIuODE2Nkw2OTUuODQ3IDMzLjU2NDRDNjk1LjU3IDMzLjMwOTEgNjk1LjIxMSAzMy4xMzMxIDY5NC45OTUgMzMuMTMzMUM2OTQuMzY4IDMzLjEzMzEgNjkzLjg3NiAzMy43MjY4IDY5My44NzYgMzQuNDYyNlYzNi43MDkzSDY5Mi45NjdWMzIuNDAwNEg2OTMuODc2Wk03MDUuNjU3IDMzLjUzMDlDNzA1LjEzMSAzMy4xOTY2IDcwNC43ODIgMzMuMDk4NSA3MDQuMzgxIDMzLjA5ODVDNzAzLjU0OSAzMy4wOTg1IDcwMi45NzcgMzMuNjk0NSA3MDIuOTc3IDM0LjU2N0M3MDIuOTc3IDM1LjQ1NiA3MDMuNTkyIDM1Ljk5MTYgNzA0LjUzNSAzNS45OTE2QzcwNC45MjUgMzUuOTkxNiA3MDUuMjk1IDM1Ljg5NzMgNzA1Ljc2IDM1LjcwNTlWMzYuNTQyNkM3MDUuNDQ3IDM2LjY3NzQgNzA0Ljg2MiAzNi43ODk4IDcwNC4zOCAzNi43ODk4QzcwMy4wMDQgMzYuNzg5OCA3MDIuMDQ0IDM1LjkwNjIgNzAyLjA0NCAzNC42NDMyQzcwMi4wNDQgMzMuMjE3OCA3MDIuOTIyIDMyLjMxOCA3MDQuMzIgMzIuMzE4QzcwNC44NTUgMzIuMzE4IDcwNS4yMTIgMzIuNDMzOSA3MDUuNjU3IDMyLjYxNDVMNzA1LjY1NyAzMy41MzA5Wk02OTguNzQyIDM2LjcwOTNINjk5LjY1MlYzMi40MDA4SDY5OC43NDJWMzYuNzA5M1oiIGZpbGw9IiMwMDlFNEQiLz4NCjxwYXRoIGQ9Ik02OTkuNjg0IDMwLjg1MjVDNjk5Ljc3MyAzMS4wNjA0IDY5OS42MTggMzEuMzU0NCA2OTkuMzQ0IDMxLjUwNDFDNjk5LjA2OCAzMS42NTQzIDY5OC43NzYgMzEuNjA2MiA2OTguNjkzIDMxLjM5NzhDNjk4LjYxIDMxLjE4NzQgNjk4Ljc2MSAzMC44OTU4IDY5OS4wMzggMzAuNzQ1NkM2OTkuMzExIDMwLjU5MzUgNjk5LjYwMSAzMC42NDIxIDY5OS42ODQgMzAuODUyNVYzMC44NTI1Wk02NTguOTQgMzEuMjAwOUM2NTguNzc5IDMxLjIwMDkgNjU4LjcxMSAzMS4yMjU1IDY1OC42NDYgMzEuMjkzOEM2NTguNjIgMzEuMzIwMyA2NTguNjEgMzEuMzQ3MiA2NTguNiAzMS40MDExTDY1Ny43ODQgMzQuMjg3QzY1Ny41OTMgMzUuMjk5MiA2NTYuMjU5IDM2LjMwOTkgNjU0LjUyMSAzNi4zMDk5SDY1Mi4xMDRMNjUyLjUyMyAzNC44MjdINjU0LjA3NkM2NTQuMjM0IDM0LjgyNyA2NTQuMzU4IDM0Ljc3MjEgNjU0LjQ2MiAzNC42NjQzQzY1NC41IDM0LjYyMjUgNjU0LjU1IDM0LjU1NyA2NTQuNTU2IDM0LjQ4OTZMNjU1LjIwMSAzMS45NjgxQzY1NS4zOTEgMzAuOTU1NSA2NTYuNTM4IDI5LjgzNjkgNjU4LjI3NiAyOS44MzY5SDY2MC43NTFMNjYwLjQzNSAzMS4yMDA5SDY1OC45NFpNNjU5LjQ5NyAzMi45NTk2TDY1OS43NzMgMzIuMDI1OUg2NjIuMjg4QzY2Mi41OTggMzAuNjcyIDY2Mi4zNTQgMjkuNDE3NyA2NjEuNDczIDI4LjU5NjFDNjU5LjY4OSAyNi45MzMyIDY1NS45NTcgMjcuNDk4MyA2NTMuMTc3IDI5Ljk3NzlDNjUyLjc0MyAzMC4zNjMgNjUyLjM3NiAzMC43NzkzIDY1Mi4wNDIgMzEuMjA0OEg2NTMuNTU2TDY1My4yMDQgMzIuMTQwNEg2NTEuMzk1QzY1MS4yMjIgMzIuNDM1NCA2NTEuMDYgMzIuNzI4MSA2NTAuOTM2IDMzLjAyNUg2NTMuMDgxTDY1Mi43MzcgMzMuOTYwN0g2NTAuNjNDNjUwLjI2OSAzNS4zOTAxIDY1MC40OTkgMzYuNzIzMyA2NTEuNDA2IDM3LjU2OTlDNjUzLjE2NyAzOS4yMTE2IDY1Ni44ODggMzguNjM0NiA2NTkuNjY3IDM2LjE1NTRDNjYwLjE1MyAzNS43MjQyIDY2MC41NTUgMzUuMjU4NyA2NjAuOTE4IDM0Ljc4MDhINjU4Ljk3M0w2NTkuMjY5IDMzLjg0NzFINjYxLjU0M0M2NjEuNzEgMzMuNTUwMSA2NjEuODYzIDMzLjI1NjUgNjYxLjk4MyAzMi45NTk2SDY1OS40OTdaIiBmaWxsPSIjMDA5RTREIi8+DQo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNThfMTExKSI+DQo8cGF0aCBkPSJNNzc1LjA2OCA0MS4yMjc0Qzc2Ni4yODUgNDIuMDQ2MyA3NTcuMTMxIDQwLjc1NjQgNzU1Ljg0OCAzMy44MTlDNzU1LjIyMSAzMC4zOTkgNzU2Ljc2NSAyNi43NzI1IDc1OC44MSAyNC41MTg0VjIzLjMxNDhDNzU1LjEyNiAyNi41OCA3NTMuMTMgMzAuNzExNSA3NTQuMjggMzUuNTkyQzc1NS43NDggNDEuODUxOCA3NjMuNjAzIDQ1LjM5NjcgNzc1LjU5NSA0NC4yMTk1Qzc4MC4zNDIgNDMuNzU0NSA3ODYuNTUgNDIuMjEyIDc5MC44NjkgMzkuODE0NFYzNi40MTA5Qzc4Ni45NDkgMzguNzcxMyA3ODAuNDY4IDQwLjcyMTEgNzc1LjA2OCA0MS4yMjc0VjQxLjIyNzRaTTc5OC4yMDUgMjMuMjMzNUM3OTYuMTIyIDEyLjk1MzMgNzc2LjM3MyAxMi4zMDE2IDc2My42NDMgMjAuMTMzOFYyMC45OTg5Qzc3Ni4zNTkgMTQuMzkxNSA3OTQuMzk1IDE0LjQzMTcgNzk2LjAzNyAyMy45MDE2Qzc5Ni41ODkgMjcuMDM0MiA3OTQuODQzIDMwLjI5NzggNzkxLjcyMyAzMi4xNzdWMzQuNjM0MkM3OTUuNDc2IDMzLjI0MzIgNzk5LjMyNCAyOC43NDQyIDc5OC4yMDUgMjMuMjMzNVYyMy4yMzM1WiIgZmlsbD0iIzBFN0RDMiIvPg0KPHBhdGggZD0iTTc5MC4xNTkgMjEuNzM2OEg3ODcuODU2VjMyLjEwM0M3ODcuODU2IDMzLjMxNzkgNzg4LjQzNyAzNC4zNzQ0IDc5MC4xNTkgMzQuNTQzMlYyMS43MzY4Wk03NjIuNzM5IDI1LjUyMTdINzYwLjQzMkw3NjAuNDMxIDMyLjI5NDNDNzYwLjQzMSAzMy41MTM0IDc2MS4wMTMgMzQuNTY4OCA3NjIuNzM5IDM0LjczNDRWMjUuNTIxN1YyNS41MjE3Wk03NjAuNDMyIDIyLjA1MjFINzYyLjczMlYyNC4yNTg0SDc2MC40MzJWMjIuMDUyMVpNNzc2LjUzIDM0LjYyNzJDNzc0LjY2NiAzNC42MjcyIDc3My44NzcgMzMuMzE3NyA3NzMuODc3IDMyLjAyOFYyMy4wMzU1SDc3Ni4xNlYyNS41MjE3SDc3Ny44NzlWMjcuMzg1M0g3NzYuMTZWMzEuODg1NEM3NzYuMTYgMzIuNDExMyA3NzYuNDA3IDMyLjcwNDQgNzc2Ljk1IDMyLjcwNDRINzc3Ljg3OVYzNC42MjcyTDc3Ni41MyAzNC42MjcyVjM0LjYyNzJaTTc4MC43MzEgMzAuNzk2MUM3ODAuNzMxIDMxLjk3NjggNzgxLjQ2MSAzMi44NDQ2IDc4Mi43NTQgMzIuODQ0NkM3ODMuNzY2IDMyLjg0NDYgNzg0LjI2NiAzMi41NjA1IDc4NC44NSAzMS45NzY4TDc4Ni4yNjEgMzMuMzM0OUM3ODUuMzU3IDM0LjIzNzkgNzg0LjQwOSAzNC43ODcgNzgyLjczNyAzNC43ODdDNzgwLjU1MiAzNC43ODcgNzc4LjQ1OSAzMy41ODE5IDc3OC40NTkgMzAuMDY4NkM3NzguNDU5IDI3LjA2NTEgNzgwLjI4OCAyNS4zNjczIDc4Mi42ODYgMjUuMzY3M0M3ODUuMTI0IDI1LjM2NzMgNzg2LjUyNSAyNy4zNTQ5IDc4Ni41MjUgMjkuOTYzOVYzMC43OTYzSDc4MC43MzFWMzAuNzk2MVpNNzgyLjU4NiAyNy4yNzU2Qzc4MS44MDUgMjcuMjc1NiA3ODEuMjA0IDI3LjY4MjMgNzgwLjk1IDI4LjIzMDlDNzgwLjgwMiAyOC41NjA3IDc4MC43NDcgMjguODE3NyA3ODAuNzMxIDI5LjIyMjlINzg0LjI0OUM3ODQuMjA0IDI4LjIzMDkgNzgzLjc1OSAyNy4yNzU2IDc4Mi41ODYgMjcuMjc1NlpNNzY4LjkzOSAyNy4zODUzQzc2OS42MDggMjcuMzg1MyA3NjkuODg3IDI3LjcxOTggNzY5Ljg4NyAyOC4yNjI2VjM0LjY0MDZINzcyLjE3VjI4LjI0OTJDNzcyLjE3IDI2Ljk1NDIgNzcxLjQ4NyAyNS41MjQxIDc2OS40ODIgMjUuNTI0MUw3NjQuNzY2IDI1LjUyMTdWMzQuNjQwNkg3NjcuMDVWMjcuMzg1M0g3NjguOTM5VjI3LjM4NTNaTTc5Mi42MzcgMjMuNTg5MUM3OTIuMTI5IDIzLjU4OTEgNzkxLjcyNCAyMy4xNzU0IDc5MS43MjQgMjIuNjYyOUM3OTEuNzI0IDIyLjE1MjkgNzkyLjEyOSAyMS43MzY4IDc5Mi42MzcgMjEuNzM2OEM3OTMuMTQyIDIxLjczNjggNzkzLjU1NiAyMi4xNTI5IDc5My41NTYgMjIuNjYyOUM3OTMuNTU2IDIzLjE3NTQgNzkzLjE0MiAyMy41ODkxIDc5Mi42MzcgMjMuNTg5MVpNNzkyLjYzNyAyMS44OTEyQzc5Mi4yMTggMjEuODkxMiA3OTEuODgyIDIyLjI0MDcgNzkxLjg4MiAyMi42NjI5Qzc5MS44ODIgMjMuMDg3NiA3OTIuMjE4IDIzLjQzMDkgNzkyLjYzNyAyMy40MzA5Qzc5My4wNTUgMjMuNDMwOSA3OTMuNDAyIDIzLjA4NzYgNzkzLjQwMiAyMi42NjI5Qzc5My40MDIgMjIuMjQwNyA3OTMuMDU1IDIxLjg5MTIgNzkyLjYzNyAyMS44OTEyWk03OTMuMDQzIDIzLjIxOEg3OTIuODcyQzc5Mi44NjQgMjMuMjE3OSA3OTIuODU3IDIzLjIxNTcgNzkyLjg1MSAyMy4yMTE2Qzc5Mi44NDUgMjMuMjA3NSA3OTIuODQgMjMuMjAxNyA3OTIuODM3IDIzLjE5NDlMNzkyLjYwNSAyMi43OTdDNzkyLjU5OCAyMi43ODg1IDc5Mi41NzkgMjIuNzc4OCA3OTIuNTczIDIyLjc3ODhINzkyLjQ2N1YyMy4xNzU0Qzc5Mi40NjcgMjMuMTk1IDc5Mi40NTMgMjMuMjE4MSA3OTIuNDI4IDIzLjIxODFINzkyLjI3NEM3OTIuMjUxIDIzLjIxODEgNzkyLjIzNSAyMy4xOTUgNzkyLjIzNSAyMy4xNzU0VjIyLjE3NDlDNzkyLjIzNSAyMi4xMTY0IDc5Mi4yNTQgMjIuMDkyNCA3OTIuMzA1IDIyLjA4NUM3OTIuMzYxIDIyLjA3OSA3OTIuNTA1IDIyLjA3MTYgNzkyLjU4NiAyMi4wNzE2Qzc5Mi44NzIgMjIuMDcxNiA3OTMuMDM5IDIyLjE1NjYgNzkzLjAzOSAyMi40MjQ0VjIyLjQ0NEM3OTMuMDM5IDIyLjYwOTQgNzkyLjk1OSAyMi42OTk1IDc5Mi44MzMgMjIuNzM5N0w3OTMuMDc0IDIzLjE1NDdDNzkzLjA3OCAyMy4xNjQgNzkzLjA4IDIzLjE3MzkgNzkzLjA4IDIzLjE4NEM3OTMuMDggMjMuMTk5NyA3OTMuMDcyIDIzLjIxOCA3OTMuMDQzIDIzLjIxOFYyMy4yMThaTTc5Mi44MjEgMjIuNDI0NEM3OTIuODIxIDIyLjMxMjcgNzkyLjc1MiAyMi4yNzczIDc5Mi42MDUgMjIuMjc3M0g3OTIuNDU5VjIyLjU5NDdDNzkyLjQ4MiAyMi41OTQ3IDc5Mi41ODYgMjIuNTk5NiA3OTIuNjA1IDIyLjU5OTZDNzkyLjc1MiAyMi41OTk2IDc5Mi44MjEgMjIuNTUgNzkyLjgyMSAyMi40NDRWMjIuNDI0NFoiIGZpbGw9IiMwRTdEQzIiLz4NCjwvZz4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMV81OF8xMTEpIj4NCjxwYXRoIGQ9Ik01MzMuNzczIDIwLjk5MTFDNTI5LjI2MyAyMC45OTExIDUyNS41OTkgMjQuNjU0NyA1MjUuNTk5IDI5LjE2NDRDNTI1LjU5OSAzMy42NzQxIDUyOS4yNjMgMzcuMzM3NyA1MzMuNzczIDM3LjMzNzdDNTM4LjI4MiAzNy4zMzc3IDU0MS45NDYgMzMuNjc0MSA1NDEuOTQ2IDI5LjE2NDRDNTQxLjk0NiAyNC42NTQ3IDUzOC4yODIgMjAuOTkxMSA1MzMuNzczIDIwLjk5MTFaTTUzMy43NzMgMzYuNTE4NkM1MjkuNzEzIDM2LjUxODYgNTI2LjQxOSAzMy4yMTUgNTI2LjQxOSAyOS4xNjQ0QzUyNi40MTkgMjUuMTEzNyA1MjkuNzEzIDIxLjgxMDIgNTMzLjc3MyAyMS44MTAyQzUzNy44MzIgMjEuODEwMiA1NDEuMTI3IDI1LjExMzcgNTQxLjEyNyAyOS4xNjQ0QzU0MS4xMjcgMzMuMjE1IDUzNy44MzIgMzYuNTE4NiA1MzMuNzczIDM2LjUxODZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTUzNi42OSAyMy45MjUyQzUzNi42NjMgMjMuOTA3MiA1MzYuNjI3IDIzLjg5ODIgNTM2LjU5MSAyMy44OTgyQzUzNi40ODMgMjMuODk4MiA1MzYuNDAyIDIzLjk3OTIgNTM2LjQwMiAyNC4wODczVjI2LjY0MzdDNTM2LjQwMiAyNi43MzM3IDUzNi4zMyAyNi44MDU3IDUzNi4yNCAyNi44MDU3SDUzMS4yOUM1MzEuMiAyNi44MDU3IDUzMS4xMzcgMjYuNzMzNyA1MzEuMTI4IDI2LjY0MzdWMjQuMDg3M0M1MzEuMTI4IDI0LjA1MTMgNTMxLjExOSAyNC4wMjQyIDUzMS4xMDEgMjMuOTg4MkM1MzEuMDQ3IDIzLjg5ODIgNTMwLjkzIDIzLjg3MTIgNTMwLjgzOSAyMy45MjUyQzUyOS4wMTIgMjUuMDUwNCA1MjcuOTA1IDI3LjAwMzcgNTI3LjkwNSAyOS4xNjQxQzUyNy45MDUgMzEuMzI0NCA1MjkuMDEyIDMzLjI3NzcgNTMwLjg1NyAzNC40MDI5QzUzMC44ODUgMzQuNDIwOSA1MzAuOTIxIDM0LjQyOTkgNTMwLjk1NyAzNC40Mjk5QzUzMS4wNjUgMzQuNDI5OSA1MzEuMTQ2IDM0LjM0ODkgNTMxLjE0NiAzNC4yNDA5VjMxLjY4NDVDNTMxLjE0NiAzMS41OTQ0IDUzMS4yMTggMzEuNTMxNCA1MzEuMzA4IDMxLjUyMjRINTM2LjI1OEM1MzYuMzQ4IDMxLjUyMjQgNTM2LjQyIDMxLjU5NDQgNTM2LjQyIDMxLjY4NDVWMzQuMjQwOUM1MzYuNDIgMzQuMjc2OSA1MzYuNDI5IDM0LjMwMzkgNTM2LjQ0NyAzNC4zMzk5QzUzNi41MDEgMzQuNDI5OSA1MzYuNjE4IDM0LjQ1NjkgNTM2LjcwOCAzNC40MDI5QzUzOC41NTQgMzMuMjc3NyA1MzkuNjYxIDMxLjMyNDQgNTM5LjY2MSAyOS4xNjQxQzUzOS42NjEgMjcuMDAzNyA1MzguNTM2IDI1LjA1MDQgNTM2LjY5IDIzLjkyNTJWMjMuOTI1MlpNNTMwLjE5MSAzMi4zNjg2TDUzMC4yMTggMzIuNjc0Nkw1MzAuMDIgMzIuNDMxNkM1MjguNDk5IDMwLjUxNDMgNTI4LjQ5OSAyNy44MDQ4IDUzMC4wMiAyNS44ODc1TDUzMC4xOTEgMjUuNjcxNUw1MzAuMjE4IDI1LjY0NDVMNTMwLjE5MSAyNS45NTk2QzUzMC4xNjQgMjYuMjExNiA1MzAuMTU1IDI2LjQ3MjYgNTMwLjE1NSAyNi43MzM3VjMxLjU4NTRDNTMwLjE1NSAzMS44NDY1IDUzMC4xNzMgMzIuMTA3NSA1MzAuMTkxIDMyLjM2ODZaTTUzNi40MDIgMzAuMzg4M0M1MzYuNDAyIDMwLjQ3ODMgNTM2LjMzIDMwLjU1MDMgNTM2LjI0IDMwLjU1MDNINTMxLjI5QzUzMS4yIDMwLjU1MDMgNTMxLjEzNyAzMC40NzgzIDUzMS4xMjggMzAuMzg4M1YyNy45Mzk5QzUzMS4xMjggMjcuODQ5OSA1MzEuMiAyNy43Nzc4IDUzMS4yOSAyNy43Nzc4SDUzNi4yNEM1MzYuMzMgMjcuNzc3OCA1MzYuNDAyIDI3Ljg0OTkgNTM2LjQwMiAyNy45Mzk5VjMwLjM4ODNaTTUzNy41MTkgMzIuNDMxNkw1MzcuMzIxIDMyLjY3NDZMNTM3LjM0OCAzMi4zNjg2QzUzNy4zNzUgMzIuMTE2NSA1MzcuMzg0IDMxLjg1NTUgNTM3LjM4NCAzMS41OTQ0VjI2LjczMzdDNTM3LjM4NCAyNi40NzI2IDUzNy4zNzUgMjYuMjExNiA1MzcuMzQ4IDI1Ljk1OTZMNTM3LjMzOSAyNS44MjQ1TDUzNy4zMyAyNS42ODA1VjI1LjY0NDVMNTM3LjUxOSAyNS44ODc1QzUzOC4yNTcgMjYuODA1NyA1MzguNjYyIDI3Ljk3NTkgNTM4LjY2MiAyOS4xNTUxQzUzOC42NjIgMzAuMzM0MiA1MzguMjU3IDMxLjUxMzQgNTM3LjUxOSAzMi40MzE2VjMyLjQzMTZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTU1NC4yNzYgMjkuMDIwMkM1NTQuMjMxIDI5LjAwMjIgNTU0LjE3NyAyOC45ODQyIDU1NC4xNzcgMjguOTMwMkM1NTQuMTc3IDI4Ljg5NDIgNTU0LjE5NSAyOC44NjcyIDU1NC4yMzEgMjguODQ5MkM1NTQuMjk0IDI4LjgyMjIgNTU1Ljg1MSAyOC4yNjQxIDU1NS44NTEgMjYuNDI3OEM1NTUuODUxIDI0LjM4NDUgNTU0LjQ3NCAyMy4xNjkzIDU1Mi4xNTIgMjMuMTY5M0g1NDYuNTI2VjM1LjE3NzJINTUyLjY2NUM1NTQuNDU2IDM1LjE3NzIgNTU2LjM4MiAzMy45MDggNTU2LjM4MiAzMS44NjQ2QzU1Ni4zODIgMjkuOTExMyA1NTQuOTA2IDI5LjIyNzIgNTU0LjI3NiAyOS4wMjAyVjI5LjAyMDJaTTU0OS4zNjEgMjUuNjI2N0M1NDkuMzYxIDI1LjU4MTcgNTQ5LjM5NyAyNS41NDU2IDU0OS40NDIgMjUuNTQ1Nkg1NTEuNjc1QzU1Mi40MTMgMjUuNTQ1NiA1NTIuOTE3IDI2LjA0MDcgNTUyLjkxNyAyNi43Nzg4QzU1Mi45MTcgMjcuMzU0OSA1NTIuNDY3IDI3Ljk3NiA1NTEuNjIxIDI3Ljk3Nkg1NDkuNDQyQzU0OS4zOTcgMjcuOTc2IDU0OS4zNjEgMjcuOTQgNTQ5LjM2MSAyNy44OTVWMjUuNjI2N1pNNTUxLjY3NSAzMi44MDk4SDU0OS40NDJDNTQ5LjM5NyAzMi44MDk4IDU0OS4zNjEgMzIuNzczOCA1NDkuMzYxIDMyLjcyODhWMzAuMzM0NEM1NDkuMzYxIDMwLjI4OTQgNTQ5LjM5NyAzMC4yNTM0IDU0OS40NDIgMzAuMjUzNEg1NTEuNjIxQzU1Mi42OTIgMzAuMjUzNCA1NTMuMzA0IDMwLjcxMjUgNTUzLjMwNCAzMS41MjI2QzU1My4zMDQgMzIuMzU5NyA1NTIuNzM3IDMyLjgwOTggNTUxLjY3NSAzMi44MDk4VjMyLjgwOThaTTU3NS4zODQgMjcuOTQ5TDU3NC45NTIgMjcuODU5QzU3My45OCAyNy42NTIgNTczLjAzNSAyNy4zOTA5IDU3My4wMzUgMjYuNTUzOEM1NzMuMDM1IDI1LjcxNjcgNTczLjgxOCAyNS4zMzg2IDU3NC41OTIgMjUuMzM4NkM1NzUuNTAxIDI1LjMzODYgNTc2LjQwMSAyNS43NDM3IDU3Ny4wODYgMjYuNDQ1OEw1NzguODY4IDI0LjY4MTVDNTc4LjEwMyAyMy44MzU0IDU3Ni43NDQgMjIuODYzMiA1NzQuNTQ3IDIyLjg2MzJDNTcxLjkwMSAyMi44NjMyIDU3MC4xMTggMjQuMzY2NSA1NzAuMTE4IDI2LjYwNzhDNTcwLjExOCAyOC45NzUyIDU3MS45ODIgMjkuODY2MyA1NzMuNTQ4IDMwLjE5OTRMNTczLjk3MSAzMC4yODk0QzU3NS40OTIgMzAuNjEzNSA1NzYuMjEyIDMwLjg1NjUgNTc2LjIxMiAzMS43MjA2QzU3Ni4yMTIgMzIuNDk0NyA1NzUuNTE5IDMzLjAwNzggNTc0LjQ5MyAzMy4wMDc4QzU3My4yODcgMzMuMDA3OCA1NzIuMjE2IDMyLjQ3NjcgNTcxLjQwNiAzMS40Nzc2TDU2OS41NzggMzMuMjY4OUM1NzAuNTUxIDM0LjQyMTEgNTcxLjgzOCAzNS40NjUyIDU3NC41MjkgMzUuNDY1MkM1NzYuODI1IDM1LjQ2NTIgNTc5LjE1NiAzNC4xMzMgNTc5LjE1NiAzMS41NzY2QzU3OS4xNDcgMjguOTU3MiA1NzcuMzY1IDI4LjM2MzEgNTc1LjM4NCAyNy45NDlWMjcuOTQ5Wk01OTkuMTAzIDIzLjE2OTNWMjcuNTYyQzU5OS4xMDMgMjcuNjA3IDU5OS4wNjcgMjcuNjQzIDU5OS4wMjIgMjcuNjQzSDU5NS4zMzFDNTk1LjI4NiAyNy42NDMgNTk1LjI1IDI3LjYwNyA1OTUuMjUgMjcuNTYyVjIzLjE2OTNINTkyLjIyNlYzNS4xNzcySDU5NS4yNVYzMC40NjA0QzU5NS4yNSAzMC40MTU0IDU5NS4yODYgMzAuMzc5NCA1OTUuMzMxIDMwLjM3OTRINTk5LjAyMkM1OTkuMDY3IDMwLjM3OTQgNTk5LjEwMyAzMC40MTU0IDU5OS4xMDMgMzAuNDYwNFYzNS4xNzcySDYwMi4xNDZWMjMuMTY5M0g1OTkuMTAzWk01ODYuMTQxIDMyLjcxOThDNTg0Ljc4MiAzMi43MTk4IDU4My4zMTUgMzEuNTg1NiA1ODMuMzE1IDI5LjA5MjJDNTgzLjMxNSAyNi44MTQ4IDU4NC42OTIgMjUuNjI2NyA1ODYuMDUxIDI1LjYyNjdDNTg3LjA0MSAyNS42MjY3IDU4Ny43MzQgMjYuMDQwNyA1ODguMjgzIDI2Ljk1ODlMNTkwLjYwNiAyNS40MTk2QzU4OS40MTggMjMuNjczMyA1ODguMDA0IDIyLjg4MTIgNTg2LjAzMyAyMi44ODEyQzU4Mi4xNzEgMjIuODgxMiA1ODAuNDQzIDI2LjAwNDcgNTgwLjQ0MyAyOS4wOTIyQzU4MC40NDMgMzIuODQ1OCA1ODIuNzI5IDM1LjQ2NTIgNTg1Ljk5NyAzNS40NjUyQzU4OC40MjcgMzUuNDY1MiA1ODkuNTM1IDM0LjU3NDEgNTkwLjY5NiAzMi45MjY4TDU4OC4zNTUgMzEuMzUxNkM1ODcuODMzIDMyLjE5NzcgNTg3LjI2NiAzMi43MTk4IDU4Ni4xNDEgMzIuNzE5OFpNNTYzLjE3OCAyMi44NjMyQzU1OS44NzUgMjIuODYzMiA1NTcuNjYxIDI1LjM5MjYgNTU3LjY2MSAyOS4xNjQyQzU1Ny42NjEgMzIuOTM1OCA1NTkuODc1IDM1LjQ2NTIgNTYzLjE3OCAzNS40NjUyQzU2Ni40ODIgMzUuNDY1MiA1NjguNjk2IDMyLjkzNTggNTY4LjY5NiAyOS4xNjQyQzU2OC42OTYgMjUuMzkyNiA1NjYuNDgyIDIyLjg2MzIgNTYzLjE3OCAyMi44NjMyVjIyLjg2MzJaTTU2My4xNzggMzIuNzE5OEM1NjEuNTU4IDMyLjcxOTggNTYwLjUxNCAzMS4zMjQ2IDU2MC41MTQgMjkuMTY0MkM1NjAuNTE0IDI3LjAxMjkgNTYxLjU1OCAyNS42MjY3IDU2My4xNzggMjUuNjI2N0M1NjQuODA4IDI1LjYyNjcgNTY1Ljg2MSAyNy4wMTI5IDU2NS44NjEgMjkuMTY0MkM1NjUuODYxIDMxLjMyNDYgNTY0LjgwOCAzMi43MTk4IDU2My4xNzggMzIuNzE5OFoiIGZpbGw9IiNGODAwMDAiLz4NCjwvZz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTQ2LjM0NCAyMi4xODExQzE0Ny41OTUgMjIuMjg1NCAxNDguODQ1IDIxLjU1NTMgMTQ5LjYyNyAyMC42Mjk4QzE1MC4zOTUgMTkuNjc4MSAxNTAuOTAzIDE4LjQwMDUgMTUwLjc3MyAxNy4wOTY5QzE0OS42NjYgMTcuMTQ5MSAxNDguMjk4IDE3LjgyNjkgMTQ3LjUxNyAxOC43Nzg2QzE0Ni44IDE5LjU5OTkgMTQ2LjE4OCAyMC45Mjk2IDE0Ni4zNDQgMjIuMTgxMVpNMTQ3Ljg0MSAyMy4wNzk3QzE0OC42NTMgMjIuNzYwNiAxNDkuNjU4IDIyLjM2NTYgMTUwLjc2IDIyLjQyOTFDMTUxLjQ2MyAyMi40ODEyIDE1My40OTUgMjIuNjg5OCAxNTQuNzk4IDI0LjYxOTJDMTU0Ljc5MiAyNC42MjM3IDE1NC43NzggMjQuNjMyMyAxNTQuNzU5IDI0LjY0NUMxNTQuNDM2IDI0Ljg1NDggMTUyLjM5IDI2LjE4NzEgMTUyLjQxNCAyOC44MTY5QzE1Mi40MzkgMzEuOTQ5OSAxNTQuOTg4IDMzLjExODMgMTU1LjMyMiAzMy4yNzExQzE1NS4zNDQgMzMuMjgxMSAxNTUuMzU2IDMzLjI4NjcgMTU1LjM1OCAzMy4yODgzQzE1NS4zNTYgMzMuMjkyNiAxNTUuMzU0IDMzLjMwMSAxNTUuMzUgMzMuMzEzM0MxNTUuMjgzIDMzLjUyODggMTU0Ljg0NSAzNC45NDg5IDE1My44NDcgMzYuNDA0QzE1Mi45MjIgMzcuNzU5OCAxNTEuOTcxIDM5LjA4OTUgMTUwLjQ2IDM5LjExNTZDMTQ5Ljc0OSAzOS4xMjgzIDE0OS4yNyAzOC45MjExIDE0OC43NzIgMzguNzA1NEMxNDguMjQ3IDM4LjQ3ODUgMTQ3LjcwMSAzOC4yNDIyIDE0Ni44NCAzOC4yNDIyQzE0NS45NDcgMzguMjQyMiAxNDUuMzc2IDM4LjQ4NDggMTQ0LjgyNiAzOC43MTg0QzE0NC4zNDggMzguOTIxNCAxNDMuODg3IDM5LjExNzQgMTQzLjI0NSAzOS4xNDE3QzE0MS43ODYgMzkuMTkzOCAxNDAuNjc5IDM3LjcwNzcgMTM5Ljc1NCAzNi4zNTE5QzEzNy44NjYgMzMuNjE0MyAxMzYuNDIgMjguNjM0NCAxMzguMzc0IDI1LjI3MUMxMzkuMzI1IDIzLjU4OTMgMTQxLjA1NyAyMi41MzM0IDE0Mi45MTkgMjIuNTA3M0MxNDMuNzMyIDIyLjQ5MjUgMTQ0LjUwNyAyMi44MDA2IDE0NS4xODQgMjMuMDcwMUMxNDUuNzAyIDIzLjI3NTggMTQ2LjE2MiAyMy40NTg5IDE0Ni41NCAyMy40NTg5QzE0Ni44NzcgMjMuNDU4OSAxNDcuMzE5IDIzLjI4NTEgMTQ3Ljg0MSAyMy4wNzk3WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIGQ9Ik0zNi44NTg3IDM3LjUyNDFIMzEuOTg3NEwzNS4wMzQyIDE5LjY2NjhIMzkuOTA1MkwzNi44NTg3IDM3LjUyNDFaIiBmaWxsPSIjMDA1NzlGIi8+DQo8cGF0aCBkPSJNNTQuNTE1NyAyMC4xMDQxQzUzLjU1NDkgMTkuNzQyOCA1Mi4wMzA5IDE5LjM0MzggNTAuMTQ2NiAxOS4zNDM4QzQ1LjMzNjEgMTkuMzQzOCA0MS45NDg2IDIxLjc3NTMgNDEuOTI3OCAyNS4yNTE2QzQxLjg4NzggMjcuODE2NSA0NC4zNTMxIDI5LjI0MSA0Ni4xOTcgMzAuMDk2MkM0OC4wODE2IDMwLjk3MDEgNDguNzIyMyAzMS41NDA1IDQ4LjcyMjMgMzIuMzE5NEM0OC43MDMxIDMzLjUxNTcgNDcuMTk5NCAzNC4wNjcyIDQ1Ljc5NjkgMzQuMDY3MkM0My44NTIxIDM0LjA2NzIgNDIuODEgMzMuNzgyOSA0MS4yMjY0IDMzLjExNzNMNDAuNTg1IDMyLjgzMkwzOS45MDMzIDM2Ljg0MDZDNDEuMDQ1OCAzNy4zMzM5IDQzLjE1MDcgMzcuNzcxNyA0NS4zMzYxIDM3Ljc5MDlDNTAuNDQ3MyAzNy43OTA5IDUzLjc3NDkgMzUuMzk3MSA1My44MTQzIDMxLjY5MjVDNTMuODMzOCAyOS42NTk3IDUyLjUzMiAyOC4xMDIgNDkuNzI1NCAyNi44MjkyQzQ4LjAyMTcgMjYuMDEyMSA0Ni45NzgzIDI1LjQ2MTIgNDYuOTc4MyAyNC42MjUyQzQ2Ljk5ODMgMjMuODY1MiA0Ny44NjA4IDIzLjA4NjggNDkuNzg0IDIzLjA4NjhDNTEuMzY3NyAyMy4wNDg2IDUyLjUzMTIgMjMuNDA5NCA1My40MTI2IDIzLjc3MDVMNTMuODUzMiAyMy45NjAxTDU0LjUxNTcgMjAuMTA0MVoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik02MC45OTI0IDMxLjE5NzlDNjEuMzkzNiAzMC4xNzIgNjIuOTM3MiAyNi4yMDE2IDYyLjkzNzIgMjYuMjAxNkM2Mi45MTcgMjYuMjM5NyA2My4zMzc2IDI1LjE1NjggNjMuNTc4MSAyNC40OTE5TDYzLjkxODYgMjYuMDMwNkM2My45MTg2IDI2LjAzMDYgNjQuODQxIDMwLjMwNTEgNjUuMDQxNCAzMS4xOTc5QzY0LjI4IDMxLjE5NzkgNjEuOTU0NiAzMS4xOTc5IDYwLjk5MjQgMzEuMTk3OVpNNjcuMDA1NCAxOS42NjY4SDYzLjIzNzRDNjIuMDc1NSAxOS42NjY4IDYxLjE5MjcgMTkuOTg5NSA2MC42OTE0IDIxLjE0ODRMNTMuNDU1OCAzNy41MjM5SDU4LjU2NzFDNTguNTY3MSAzNy41MjM5IDU5LjQwODUgMzUuMzE5OSA1OS41ODk0IDM0Ljg0NTJDNjAuMTUwMSAzNC44NDUyIDY1LjEyMjMgMzQuODQ1MiA2NS44NDM3IDM0Ljg0NTJDNjUuOTgzNSAzNS40NzIxIDY2LjQyNDkgMzcuNTIzOSA2Ni40MjQ5IDM3LjUyMzlINzAuOTM1Mkw2Ny4wMDU0IDE5LjY2NjhWMTkuNjY2OFoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik0yNy45MTggMTkuNjY2OEwyMy4xNDc1IDMxLjg0MzhMMjIuNjI2MiAyOS4zNzQxQzIxLjc0NDIgMjYuNTI0NSAxOC45NzgxIDIzLjQyODQgMTUuODkxNCAyMS44ODlMMjAuMjYxIDM3LjUwNTJIMjUuNDEyMkwzMy4wNjkgMTkuNjY2OEgyNy45MThWMTkuNjY2OFoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik0xOC43MTg0IDE5LjY2NjhIMTAuODgxMUwxMC44MDA5IDIwLjAyNzZDMTYuOTE0NSAyMS41MDk1IDIwLjk2MzUgMjUuMDgxNSAyMi42MjcgMjkuMzc0OUwyMC45MjMyIDIxLjE2NzlDMjAuNjQyNyAyMC4wMjc0IDE5Ljc4MDcgMTkuNzA0NCAxOC43MTg0IDE5LjY2NjhaIiBmaWxsPSIjRkFBNjFBIi8+DQo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDJfNThfMTExKSI+DQo8cGF0aCBkPSJNMjIxLjE1OCAxNy40OTlWMTguOTM1NkgyMzEuMzA2VjE3LjQ5OUgyMjEuMTU4Wk0yMzIuNzQ0IDE3LjQ5OVYxOC45MzU2SDI0Ny4yMDZDMjQ3LjIwNiAxOC45MzU2IDI0NS43MjkgMTcuNDk5IDI0My43NzMgMTcuNDk5SDIzMi43NDRaTTI1MC4wNDMgMTcuNDk5VjE4LjkzNTZIMjU4Ljc5M0wyNTguMjczIDE3LjQ5OUgyNTAuMDQzWk0yNjUuMDY1IDE3LjQ5OUwyNjQuNTQ2IDE4LjkzNTZIMjczLjIxNlYxNy40OTlIMjY1LjA2NVpNMjIxLjE1OCAyMC4yOTI5VjIxLjcyOTZIMjMxLjMwNlYyMC4yOTI5SDIyMS4xNThaTTIzMi43NDQgMjAuMjk1VjIxLjcyOTdIMjQ4Ljg4NEMyNDguODg0IDIxLjcyOTcgMjQ4LjY5NiAyMC42MjM5IDI0OC4zNjcgMjAuMjk1SDIzMi43NDRaTTI1MC4wNDMgMjAuMjk1VjIxLjcyOTdIMjU5Ljc1MkwyNTkuMjcxIDIwLjI5NUgyNTAuMDQzWk0yNjQuMDI3IDIwLjI5NUwyNjMuNTQ2IDIxLjcyOTdIMjczLjIxNlYyMC4yOTVIMjY0LjAyN1YyMC4yOTVaTTIyNC4wNzQgMjMuMDg2OVYyNC41MjU3SDIyOC40NjlWMjMuMDg2OUgyMjQuMDc0VjIzLjA4NjlaTTIzNS42NjEgMjMuMDg2OVYyNC41MjU3SDI0MC4wNTZWMjMuMDg2OUgyMzUuNjYxVjIzLjA4NjlaTTI0NC4zMzEgMjMuMDg2OVYyNC41MjU3SDI0OC43MjZDMjQ4LjcyNiAyNC41MjU3IDI0OS4wMDUgMjMuNzY1OSAyNDkuMDA1IDIzLjA4NjlIMjQ0LjMzMVYyMy4wODY5Wk0yNTIuOTYgMjMuMDg2OVYyNC41MjU3SDI2MC43NTJMMjYwLjIzMiAyMy4wODY5SDI1Mi45NlYyMy4wODY5Wk0yNjMuMDY5IDIzLjA4NjlMMjYyLjU0OCAyNC41MjU3SDI3MC4zNzlWMjMuMDg2OUgyNjMuMDY5VjIzLjA4NjlaTTIyNC4wNzQgMjUuODgzVjI3LjMxOTdIMjI4LjQ2OVYyNS44ODNIMjI0LjA3NFYyNS44ODNaTTIzNS42NjEgMjUuODgzVjI3LjMxOTdIMjQ2Ljg4N0MyNDYuODg3IDI3LjMxOTcgMjQ3LjgyNiAyNi41ODI1IDI0OC4xMjUgMjUuODgzSDIzNS42NjFaTTI1Mi45NiAyNS44ODNWMjcuMzE5N0gyNTcuMzU1VjI2LjUyTDI1Ny42MzQgMjcuMzE5N0gyNjUuNjg0TDI2NS45ODQgMjYuNTJWMjcuMzE5N0gyNzAuMzc5VjI1Ljg4M0gyNjIuMTI5TDI2MS42OTEgMjcuMDk5OUwyNjEuMjUxIDI1Ljg4M0gyNTIuOTZaTTIyNC4wNzQgMjguNjc3VjMwLjExMzdIMjI4LjQ2OVYyOC42NzdIMjI0LjA3NFpNMjM1LjY2MSAyOC42NzdWMzAuMTEzN0gyNDguMTI1QzI0Ny44MjYgMjkuNDE2NSAyNDYuODg3IDI4LjY3NyAyNDYuODg3IDI4LjY3N0gyMzUuNjYxWk0yNTIuOTYgMjguNjc3VjMwLjExMzdIMjU3LjM1NVYyOC42NzdIMjUyLjk2Wk0yNTguMTUzIDI4LjY3N0wyNTguNjg1IDMwLjExMzdIMjY0LjcyMUwyNjUuMjI2IDI4LjY3N0gyNTguMTUzWk0yNjUuOTg0IDI4LjY3N1YzMC4xMTM3SDI3MC4zNzlWMjguNjc3SDI2NS45ODRaTTIyNC4wNzQgMzEuNDcxVjMyLjkwNzZIMjI4LjQ2OVYzMS40NzFIMjI0LjA3NFpNMjM1LjY2MSAzMS40NzFWMzIuOTA3NkgyNDAuMDU2VjMxLjQ3MUgyMzUuNjYxWk0yNDQuMzMxIDMxLjQ3MVYzMi45MDc2SDI0OS4wMDVDMjQ5LjAwNSAzMi4yMjk2IDI0OC43MjYgMzEuNDcxIDI0OC43MjYgMzEuNDcxSDI0NC4zMzFWMzEuNDcxWk0yNTIuOTYgMzEuNDcxVjMyLjkwNzZIMjU3LjM1NVYzMS40NzFIMjUyLjk2Wk0yNTkuMTUxIDMxLjQ3MUwyNTkuNjY2IDMyLjkwNzZIMjYzLjcxM0wyNjQuMjMyIDMxLjQ3MUgyNTkuMTUxWk0yNjUuOTg0IDMxLjQ3MVYzMi45MDc2SDI3MC4zNzlWMzEuNDcxSDI2NS45ODRaTTIyMS4yMzcgMzQuMjY1VjM1LjcwMzdIMjMxLjM4NlYzNC4yNjVIMjIxLjIzN1pNMjMyLjc0NCAzNC4yNjVWMzUuNzAzN0gyNDguMzY3QzI0OC42OTYgMzUuMzc0MyAyNDguODg0IDM0LjI2NSAyNDguODg0IDM0LjI2NUgyMzIuNzQ0VjM0LjI2NVpNMjUwLjEyMyAzNC4yNjVWMzUuNzAzN0gyNTcuMzU1VjM0LjI2NUgyNTAuMTIzWk0yNjAuMTUxIDM0LjI2NUwyNjAuNjggMzUuNzAzN0gyNjIuNzM5TDI2My4yMzYgMzQuMjY1SDI2MC4xNTFaTTI2NS45ODQgMzQuMjY1VjM1LjcwMzdIMjczLjI5NVYzNC4yNjVIMjY1Ljk4NFpNMjIxLjIzNyAzNy4wNjFWMzguNDk3N0gyMzEuMzg2VjM3LjA2MUgyMjEuMjM3Wk0yMzIuNzQ0IDM3LjA2MVYzOC40OTU2SDI0My43NzNDMjQ1LjcyOSAzOC40OTU2IDI0Ny4yMDYgMzcuMDYxIDI0Ny4yMDYgMzcuMDYxSDIzMi43NDRaTTI1MC4xMjMgMzcuMDYxVjM4LjQ5NzdIMjU3LjM1NVYzNy4wNjFIMjUwLjEyM1pNMjYxLjE1NSAzNy4wNjFMMjYxLjY2NCAzOC40OTM2TDI2MS43NTIgMzguNDk1NkwyNjIuMjY5IDM3LjA2MUgyNjEuMTU1VjM3LjA2MVpNMjY1Ljk4NCAzNy4wNjFWMzguNDk3N0gyNzMuMjk1VjM3LjA2MUgyNjUuOTg0WiIgZmlsbD0iIzFGNzBDMSIvPg0KPC9nPg0KPGRlZnM+DQo8Y2xpcFBhdGggaWQ9ImNsaXAwXzU4XzExMSI+DQo8cmVjdCB3aWR0aD0iNDQuNDQ3MyIgaGVpZ2h0PSIyOS42MzE1IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzUzLjk1NSAxNC44MTU1KSIvPg0KPC9jbGlwUGF0aD4NCjxjbGlwUGF0aCBpZD0iY2xpcDFfNThfMTExIj4NCjxyZWN0IHdpZHRoPSI3Ni41NDgxIiBoZWlnaHQ9IjE2LjM1MDciIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MjUuNTk5IDIwLjk4ODkpIi8+DQo8L2NsaXBQYXRoPg0KPGNsaXBQYXRoIGlkPSJjbGlwMl81OF8xMTEiPg0KPHJlY3Qgd2lkdGg9IjUyLjEzNzIiIGhlaWdodD0iMjAuOTk4NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIyMS4xNTggMTcuNDk5KSIvPg0KPC9jbGlwUGF0aD4NCjwvZGVmcz4NCjwvc3ZnPg0K\\\" style=\\\"\\n width: 742.5px;\\n position: relative;\\n top: 107px;\\n left: 32px;\\n \\\">\\n <a href=\" + accountURL + \" style=\\\"\\n float: left;\\n border-radius: 56px;\\n background: #0D6EFD;\\n padding-top: 8px;\\n width: 280px;\\n height: 38px;\\n text-align: center;\\n position: relative;\\n top: 127px;\\n left: 274px;\\n font-size: 16px;\\n color: white;\\n text-decoration: none;\\n letter-spacing: 0.02em;\\n \\\">Claim your FREE account</a>\\n <div style=\\\"\\n font-size: 14px;\\n position: relative;\\n top: 180px;\\n left: 19px;\\n letter-spacing: 0.02em;\\n font-weight: 500;\\n line-height: 125%;\\n\\\">have a Syncfusion account? <a href=\\\"https://www.syncfusion.com/account/login?ReturnUrl=/account/login\\\" style=\\\"text-decoration: none;\\ncolor: #0D6EFD;\\nfont-weight: 500;\\\">Sign In</a></div>\\n </div>\\n </div>\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n /* eslint-disable */\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n /* eslint-enable */\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+<tr|^<tr/;\nvar HAS_SVG = /^[\\n\\r.]+<svg|^<path|^<g/;\nexport var blazorTemplates = {};\n/**\n *\n * @returns {string} ?\n */\nexport function getRandomId() {\n return '-' + Math.random().toString(36).substr(2, 5);\n}\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} templateString - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {NodeList} ?\n * @private\n */\n// eslint-disable-next-line\nexport function compile(templateString, helper, ignorePrefix) {\n var compiler = engineObj.compile(templateString, helper, ignorePrefix);\n // eslint-disable-next-line\n return function (data, component, propName, templateId, isStringTemplate, index, element, root) {\n var result = compiler(data, component, propName, element, root);\n var blazorTemplateId = 'BlazorTemplateId';\n if (isBlazor() && !isStringTemplate) {\n var randomId = getRandomId();\n var blazorId = templateId + randomId;\n if (!blazorTemplates[\"\" + templateId]) {\n blazorTemplates[\"\" + templateId] = [];\n }\n if (!isNullOrUndefined(index)) {\n var keys = Object.keys(blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key !== blazorTemplateId && data[\"\" + key]) {\n blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)][\"\" + key] = data[\"\" + key];\n }\n if (key === blazorTemplateId) {\n blazorId = blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)][\"\" + key];\n }\n }\n }\n else {\n data[\"\" + blazorTemplateId] = blazorId;\n blazorTemplates[\"\" + templateId].push(data);\n }\n // eslint-disable-next-line\n return propName === 'rowTemplate' ? [createElement('tr', { id: blazorId, className: 'e-blazor-template' })] :\n // eslint-disable-next-line\n [createElement('div', { id: blazorId, className: 'e-blazor-template' })];\n }\n if (typeof result === 'string') {\n if (HAS_SVG.test(result)) {\n var ele = createElement('svg', { innerHTML: result });\n return ele.childNodes;\n }\n else {\n var ele = createElement((HAS_ROW.test(result) ? 'table' : 'div'), { innerHTML: result });\n return ele.childNodes;\n }\n }\n else {\n return result;\n }\n };\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {string} comp ?\n * @param {boolean} isEmpty ?\n * @param {Function} callBack ?\n * @returns {void} ?\n */\nexport function updateBlazorTemplate(templateId, templateName, comp, isEmpty, callBack) {\n if (isBlazor()) {\n var ejsIntrop = 'sfBlazor';\n window[\"\" + ejsIntrop].updateTemplate(templateName, blazorTemplates[\"\" + templateId], templateId, comp, callBack);\n if (isEmpty !== false) {\n blazorTemplates[\"\" + templateId] = [];\n }\n }\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {number} index ?\n * @returns {void} ?\n */\nexport function resetBlazorTemplate(templateId, templateName, index) {\n var templateDiv = document.getElementById(templateId);\n if (templateDiv) {\n // eslint-disable-next-line\n var innerTemplates = templateDiv.getElementsByClassName('blazor-inner-template');\n for (var i = 0; i < innerTemplates.length; i++) {\n var tempId = ' ';\n if (!isNullOrUndefined(index)) {\n tempId = innerTemplates[parseInt(index.toString(), 10)].getAttribute('data-templateId');\n }\n else {\n tempId = innerTemplates[parseInt(i.toString(), 10)].getAttribute('data-templateId');\n }\n var tempElement = document.getElementById(tempId);\n if (tempElement) {\n var length_1 = tempElement.childNodes.length;\n for (var j = 0; j < length_1; j++) {\n if (!isNullOrUndefined(index)) {\n innerTemplates[parseInt(index.toString(), 10)].appendChild(tempElement.childNodes[0]);\n i = innerTemplates.length;\n }\n else {\n innerTemplates[parseInt(i.toString(), 10)].appendChild(tempElement.childNodes[0]);\n }\n }\n }\n }\n }\n}\n/**\n * Set your custom template engine for template rendering.\n *\n * @param {ITemplateEngine} classObj - Class object for custom template.\n * @returns {void} ?\n * @private\n */\nexport function setTemplateEngine(classObj) {\n engineObj.compile = classObj.compile;\n}\n/**\n * Get current template engine for template rendering\n *\n * @returns {string} ?\n * @private\n */\nexport function getTemplateEngine() {\n return engineObj.compile;\n}\n/**\n * Set the current template function to support Content Security Policy.\n *\n * @param {Function} template - The template function that is going to render.\n * @param {any} helper - The data utilized by the template from the helper.\n * @returns {Function} ?\n * @private\n */\n// eslint-disable-next-line\nexport function initializeCSPTemplate(template, helper) {\n var boundFunc;\n template.prototype.CSPTemplate = true;\n if (!isNullOrUndefined(helper)) {\n boundFunc = template.bind(helper);\n boundFunc.prototype = Object.create(template.prototype);\n }\n else {\n boundFunc = template;\n }\n return boundFunc;\n}\n//Default Engine Class\nvar Engine = /** @class */ (function () {\n function Engine() {\n }\n // eslint-disable-next-line\n Engine.prototype.compile = function (templateString, helper, ignorePrefix) {\n if (helper === void 0) { helper = {}; }\n return render(templateString, helper);\n };\n return Engine;\n}());\nvar engineObj = { compile: new Engine().compile };\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n // eslint-disable-next-line\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\n// eslint-disable-next-line\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n // eslint-disable-next-line\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n // eslint-disable-next-line\n var curContext = eventsArr[\"\" + i].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise<Response>} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n * <div id=\"Eventdiv\"> </div>\n * <script>\n * let node: HTMLElement = document.querySelector(\"#Eventdiv\");\n * EventHandler.addEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * EventHandler.addEventListener(node, \"onmouseover\", function(){\n * // mouseover handler function code\n * });\n * EventHandler.removeEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * eventObj.clearEvents();\n * </script>\n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export']\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n * <div id='drag'>Draggable</div>\n * <script>\n * var ele = document.getElementById('drag');\n * var drag:Draggable = new Draggable(ele,{\n * clone:false,\n * drag: function(e) {\n * //drag handler code.\n * },\n * handle:'.class'\n * });\n * </script>\n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n /* eslint-disable */\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n /* eslint-enable */\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n // eslint-disable-next-line\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n // eslint-disable-next-line\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n // eslint-disable-next-line\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n // eslint-disable-next-line\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n // eslint-disable-next-line\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n /* eslint-disable */\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n /* eslint-enable */\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n // eslint-disable-next-line\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n * <div id='drop'>Droppable</div>\n * <script>\n * let ele:HTMLElement = document.getElementById('drop');\n * var drag:Droppable = new Droppable(ele,{\n * accept:'.drop',\n * drop: function(e) {\n * //drop handler code.\n * }\n * });\n * </script>\n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n * <div id='testEle'> </div>;\n * <script>\n * let node: HTMLElement = document.querySelector('#testEle');\n * let kbInstance = new KeyboardEvents({\n * element: node,\n * keyConfigs:{ selectAll : 'ctrl+a' },\n * keyAction: function (e:KeyboardEvent, action:string) {\n * // handler function code\n * }\n * });\n * </script>\n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nimport { isNullOrUndefined } from './util';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'oncanplay',\n 'oncanplaythrough',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeypress',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onstart',\n 'onpropertychange',\n 'oncopy',\n 'ontoggle',\n 'onpointerout',\n 'onpointermove',\n 'onpointerleave',\n 'onpointerenter',\n 'onpointerrawupdate',\n 'onpointerover',\n 'onbeforecopy',\n 'onbeforecut',\n 'onbeforeinput'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n if (isNullOrUndefined(value)) {\n return value;\n }\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n this.wrapElement = null;\n return tempEleValue.replace(/&amp;/g, '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[parseInt(j.toString(), 10)].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n"],"names":["createInstance","classFunction","params","arrayParam","unshift","undefined","Function","prototype","bind","apply","setImmediate","handler","unbind","num","Uint16Array","window","msCrypto","crypto","getRandomValues","secret","ret","i","parseInt","toString","combineArray","messageHandler","event","source","data","length","addEventListener","postMessage","removeEventListener","getValue","nameSpace","obj","value","splits","replace","split","isUndefined","setValue","key","keys","start","fromObj","isNullOrUndefined","deleteObject","isObject","constructor","merge","destination","temrObj","tempProp","_i","keys_1","Object","indexOf","Array","isArray","extend","copied","first","second","deep","result","arguments","_loop_1","arguments_1","obj1","forEach","clone","src","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","hasOwnProperty","debounce","eventFunction","delay","out","_this","this","args","clearTimeout","setTimeout","compareElementParent","child","parent","node","document","parentNode","throwError","message","Error","e","stack","isBlazorPlatform","uniqueID","createElement","tagName","properties","element","SVG_REG","test","createElementNS","innerHTML","className","id","styles","setAttribute","attrs","attributes","addClass","elements","classes","classList","getClassList","regExp","RegExp","_a","ele","_b","classList_1","curClass","contains","add","removeClass","flag","classList_2","classArr","index","splice","join","remove","push","isVisible","style","visibility","offsetWidth","executeScript","querySelectorAll","script","text","head","appendChild","detach","removeChild","iKey","select","selector","context","needsVDOM","querySelectId","querySelector","selectAll","charRegex","match","idList","list","j","splitId","setId","closest","el","nodeType","matches","setStyleAttribute","msMatchesSelector","webkitMatchesSelector","call","getComponent","elem","comp","instance","getElementById","ej2_instances","getModuleName","getObject","curKey","defaultValue","type","getObjectArray","isSetter","isFactory","len","curType","inst","setProperties","propertyGetter","complexArrayGetter","defCollection","ignore","controlParent","ignoreCollectionWatch","extendFunc","descriptor","dFunc","prop","newValue","keyString","propName","getParentKey","newValueParse","model_1","getArrayModel","serverDataBind","model","ejsAction","complexArrayDefinedCallback","configurable","defineProperty","isControlParent","arrayFunction","modelObject","Property","target","propertyDescriptor","set","oldVal","saveChanges","propertySetter","get","enumerable","addPropertyCollection","Complex","complexSetter","complexGetter","eventDescriptor","oldValue","finalContext","getParentContext","prefix","NotifyPropertyChanges","classConstructor","propertyType","propList","props","complexProps","colProps","events","propNames","complexPropNames","colPropNames","eventNames","propertyName","getBuilderProperties","component","builderObject","propCollections","isPropertyArray","rex","childType","tempValue","_c","curText","rippleHandler","rippleOptions","offset","getBoundingClientRect","offsetX","pageX","body","scrollLeft","offsetY","pageY","scrollTop","documentElement","Math","max","abs","left","right","top","bottom","radius","sqrt","diameter","x","y","isCenterRipple","rippleElement","duration","getComputedStyle","getPropertyValue","transform","EventHandler","rippleLeaveHandler","rippleUpHandler","removeRipple","eventArgs","rippleElements","opacity","getElementsByClassName","done","convertToChar","cArr","cArr_1","arr","String","fromCharCode","registerLicense","licenseValidator","LicenseValidator","compile","template","helper","ignorePrefix","fnCode","str","varCOunt","localKeys","isClass","singleSpace","exp","insideBraces","outputString","LINES","DBL_QUOTED_STR","cnt","matchStr","CALL_FUNCTION","rlStr","ELSEIF_STMT","WORD","trim","addNameSpace","QUOTES","IF_STMT","WORDIF","strs","HandleSpecialCharArrObj","FOR_STMT","rlStr_1","mtc","fnStr","fNameSpace","ftArray","WINDOWFUNC","WORDFUNC","ELSE_STMT","IF_OR_FOR","SINGLE_SLASH","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","ignoreList","NOT_NUMBER","tempStr","DOUBLE_SLASH","nameSpaceNew","quotes","ARR_OBJ","NameSpaceArrObj","getRandomId","random","substr","instances","uid","containerObject","defaultNumberingSystem","latn","_digits","_type","defaultNumberSymbols","decimal","group","percentSign","plusSign","minusSign","infinity","nan","exponential","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","res","propKeys_1","getSymbolRegex","regexStr","map","getSymbolMatch","matchKeys_1","constructRegex","val","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","DJF","ERN","ETB","NAD","ZAR","XAF","GHS","XDR","AED","BHD","DZD","EGP","ILS","IQD","JOD","KMF","KWD","LBP","LYD","MAD","MRU","OMR","QAR","SAR","SDG","SOS","SSP","SYP","TND","YER","CLP","INR","TZS","EUR","AZN","RUB","BYN","ZMW","BGN","NGN","XOF","BDT","CNY","BAM","UGX","USD","CZK","GBP","DKK","KES","CHF","MVR","BTN","XCD","AUD","BBD","BIF","BMD","BSD","BWP","BZD","CAD","NZD","FJD","FKP","GIP","GMD","GYD","HKD","IDR","JMD","KYD","LRD","MGA","MOP","MUR","MWK","MYR","PGK","PHP","PKR","RWF","SBD","SCR","SEK","SGD","SHP","SLL","ANG","SZL","TOP","TTD","VUV","WST","ARS","BOB","BRL","COP","CRC","CUP","DOP","GTQ","HNL","MXN","NIO","PAB","PEN","PYG","UYU","VES","IRR","GNF","CDF","HTG","XPF","HRK","HUF","AMD","ISK","JPY","GEL","CVE","KZT","KHR","KPW","KRW","KGS","AOA","LAK","MZN","MKD","MNT","BND","MMK","NOK","NPR","AWG","SRD","PLN","AFN","STN","MDL","RON","UAH","LKR","ALL","RSD","TJS","THB","TMT","TRY","UZS","VND","TWD","HijriParser","dateCorrection","getHijriDate","gDate","day","getDate","month","getMonth","year","getFullYear","tMonth","tYear","yPrefix","floor","julilanOffset","julianNumber","b","c","d","tempMonth","modifiedJulianDate","z","cyc","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","date","toGregorian","julianDate","a","gDay","gMonth","gYear","Date","abbreviateRegexGlobal","weekdayKey","timeSetter","m","h","H","s","f","datePartMatcher","M","E","L","Z","G","DateFormat","dateFormat","culture","option","cldr","dependable","base","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","isServerRendered","compareBlazorDateFormats","resPattern","format","getResultantPattern","skeleton","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","pattern","numMapper","parser","parserObject","patternMatch_1","char","weekday","monthIndex","days","designator","eText","era","timeZone","isNaN","intDateFormatter","options","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","substring","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","ishour","errorText","ms","ls","mf","lf","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","p","lastIndexOf","temp","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","range","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","decimalPart","slice","toExponential","customPivotFormat","groupNumbers","nlead","nend","min","toPrecision","level1","sep","decimalSymbol","level2","toFixed","lead","ceil","latnRegex","minute","hour","milliseconds","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","pos","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","toUpperCase","toLowerCase","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolRegex","symbolpattern","getParsedNumber","isNegative","end","Infinity","NaN","exponent","parseFloat","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","on","property","cntxt","notExist","isHandlerPresent","off","indexLocation","notify","argument","successHandler","errorHandler","name","blazorCallback","curObject_1","objs","isTrigger","obj_1","promise","then","isJson","JSON","parse","dateReviver","catch","destroy","offIntlEvents","eventsArr","curContext","detectFunction","randomId","isRendered","boundedEvents_1","onIntlChange","exports","cldrData","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","defaultCulture","blazorCultureFormats","en-US","D","F","g","r","R","t","T","u","U","Y","blazorCulture","iType","basicPatterns","dPattern","tPattern","mode","calendartype","blazorDefaultObject","defaultObject","dateString","numSystem","convertMapper","dateConverterMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","customRegex","changeCurrencySymbol","groupPattern","fraction","fmatch","fractionRegex","sym","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","parts","actual","symbol","part","loc","typeMapper","fractionDigitsPattern","minDigits","maxDigits","diff","minimumIntegerPattern","integer","groupingPattern","patternRegex","'"," a","yy","EEEE","defaultFirstDay","firstDayMapper","sun","mon","tue","wed","thu","fri","sat","currencyFormatRegex","curWithoutNumberRegex","$","%","-","0","1","dates","calendars","gregorian","months","stand-alone","abbreviated","2","3","4","5","6","7","8","9","10","11","12","narrow","wide","short","dayPeriods","am","pm","eras","eraNames","0-alt-variant","1-alt-variant","eraAbbr","eraNarrow","dateFormats","full","long","medium","timeFormats","dateTimeFormats","availableFormats","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","hm","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","islamic","yyyy","yyyyM","yyyyMd","yyyyMEd","yyyyMMM","yyyyMMMd","yyyyMMMEd","yyyyMMMM","yyyyQQQ","yyyyQQQQ","timeZoneNames","currencies","displayName","symbol-alt-narrow","minimumGroupingDigits","symbols-numberSystem-latn","superscriptingExponent","perMille","decimalFormats-numberSystem-latn","standard","percentFormats-numberSystem-latn","currencyFormats-numberSystem-latn","accounting","scientificFormats-numberSystem-latn","mapperDigits","currencypData","percentpData","percentnData","currencynData","decimalnData","decimalpData","C","P","N","A","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","processSymbol","firstDay","iCulture","aCurrency","rCurrency","iCurrency","getBlazorCurrencySymbol","pData_1","weeknum","newYear","daynum","getTime","nday","headerRegex","defaultType","Ajax","async","contentType","emitError","url","send","cancel","httpRequest","Promise","resolve","reject","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","open","setRequestHeader","beforeSend","onSuccess","failureHandler","reason","onFailure","responseText","dataType","error","readyState","status","statusText","getResponseHeader","responseHeaders","header","headers","exec","getAllResponseHeaders","Fetch","isNOU","contentTypes","application/json","multipart/form-data","application/octet-stream","application/x-www-form-urlencoded","fetchRequest","Request","method","Content-Type","triggerEvent","fetchResponse","fetch","response","ok","responseType","returnVal","callback","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","userAgent","version","language","navigator","getEvent","isPointer","isTouch","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","isIos","regX","platform","maxTouchPoints","uA","info","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","addOrGetEventData","__eventList","eventName","listener","bindTo","intDebounce","debounceListener","eventData","isIE","passive","some","clearEvents","copyData","parseValue","shift","trigger","eventProp","eventData_1","event_1","isColEName","Base","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","finalUpdate","childChangedProperties","modelObserver","addInstance","isDestroyed","muteOnChange","prevDetection","dataBind","callChildDataBind","clearChanges","getOwnPropertyNames","newChanges","oldChanges","onPropertyChanged","updateModel","moduleClass","filter","proxyToRaw","__extends","extendStatics","setPrototypeOf","__proto__","__","create","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","Animation","_super","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","stop","animation","removeAttribute","animationId","getAttribute","frameId","cancelAnimationFrame","animationMode","GlobalAnimationMode","Disable","begin","applyAnimation","timeStamp","step","timerId","prevTimeStamp","startAnimation","avg","timingFunction","progress","requestAnimationFrame","fail","newProp","oldProp","accountURL","lastPageID","ModuleLoader","loadedModules","inject","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","module","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","getNonInjectedModules","usedModules","arg","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","action","parent_1","parentKey","complexKeys","isFinal","valueLength","componentList","bypassKey","isValidated","isLicensed","errors","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","manager","licKey","setKey","getKey","npxManager","npxLicKey","validate","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","atob","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit_1","lKey","decodeStr","k","buffr","decryptedKey","charCodeAt","validateLicense","createLicenseOverlay","bannerTemplate","errorBackground","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","Component","isStringTemplate","needsID","isReactHybrid","enableRtl","rightToLeft","locale","moduleLoader","localObserver","appendTo","enablePersistence","setPersistData","detachUnloadEvent","refresh","preRender","injectModules","render","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","versionBasedStatePersistence","localStorage","getItem","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","getUniqueID","mergePersistData","ignoredComponents","schedule","diagram","PdfViewer","grid","richtexteditor","treegrid","gantt","chart","accumulationchart","modulesRequired","moduleName","componentName","charAt","console","warn","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","setState","currentContext","calls","setItem","getPersistData","renderReactTemplates","clearTemplate","templateName","definedName","isHistoryChanged","pageID","location","href","history","hash","addOnPersist","persistObj","objValue","getActualProperties","stringify","ignoreOnPersist","iterateJsonProperties","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","currentTarget","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","vertical","horizontal","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","preventDefault","changedTouches","intCoord","getCoordinates","initialPosition","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","position","getMousePosition","isDragScroll","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","width","height","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","helperHeight","iTop","iLeft","draEleTop","draEleLeft","isDialogEle","tempDraEleTop","dragValue","scrollIntoView","getPathElements","scrollParent","getScrollParent","getScrollPosition","reverse","hasScroll","nodeEl","clientHeight","scrollingElement","overflow","nodeEle","docScrollTop","helperClientHeight","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","isVerticalScroll","clientWidth","cursorAt","sender","reset","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","area","accept","isDrag","isDropArea","canDrop","droppedElement","display","coord","keyCode","backspace","tab","enter","control","alt","pause","capslock","space","escape","pageup","pagedown","home","leftarrow","uparrow","rightarrow","downarrow","insert","delete","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","semicolon","plus","comma","minus","dot","forwardslash","graveaccent","openbracket","backslash","closebracket","singlequote","KeyboardEvents","keyPressHandler","isAltKey","altKey","isCtrlKey","ctrlKey","isShiftKey","shiftKey","curkeyCode","which","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","config","configCache","keyData","Number","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","load","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","now","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","interval","HAS_ROW","HAS_SVG","blazorTemplates","engineObj","Engine","templateString","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","item","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","children","localName","attr","hasAttribute","rippleModel","rippleFlag","getRippleModel","isRippleEnabled","isRipple","childEle","compName","compInstance","toRaw","data_1","symbPattern","dateSeparator","complexFactorySetter","complexFactoryGetter","oldValueCollection","newValCollection","complexArraySetter","complexArrayFactorySetter","complexArrayFactoryGetter","builderFunction","compiler","templateId","root","blazorTemplateId","blazorId","childNodes","isEmpty","callBack","updateTemplate","templateDiv","innerTemplates","tempId","tempElement","classObj","boundFunc","CSPTemplate","enumObject","enumValue","array","keys_2","encodeURIComponent","printWindow","div","links","getElementsByTagName","blinks","l","reference","cloneNode","outerHTML","write","close","focus","setInterval","ready","print","clearInterval","Node","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","fromElements","toElement","isEval","docFrag","createDocumentFragment","insertBefore","firstElementChild","NodeList","siblings","childNodes_1","curNode","ELEMENT_NODE","attrVal","isObj","addClasses","removeClasses"],"mappings":"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,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,M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AAU,2BACHC,MA2KPC,IAAc7gD,SAAS,IAVC,WACxB,SAAS8gD,KAOT,OAJAA,EAAOzzD,UAAU2S,QAAU,SAAU+gD,EAAgB7gD,EAAQC,GAEzD,YADe,IAAXD,IAAqBA,MAClBqnC,EAAOwZ,EAAgB7gD,IAE3B4gD,OAE6B9gD,SsB9KpCghD,IACA,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,KACEC,UAAW,OAAQ5qD,SAAU,0BAC7B4qD,UAAW,aAAc5qD,SAAU,gCACnC4qD,UAAW,QAAS5qD,SAAU,2BAC9B4qD,UAAW,QAAS5qD,SAAU,2BAC9B4qD,UAAW,OAAQ5qD,SAAU,qCAE/B6qD,IAAY,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAASA,KA+ET,OA7EAA,EAAmBC,eAAiB,WAChC,OACIC,WACIC,KAAMP,GACNhtD,WAAYitD,MAIxBG,EAAmBI,SAAW,SAAUtyD,GACpC,GAAIU,EAAkBV,GAClB,OAAOA,EAEX,IAAIuyD,EAAOvvD,KAAKmvD,iBAEhB,OADanvD,KAAKwvD,eAAeD,EAAMvyD,IAG3CkyD,EAAmBM,eAAiB,SAAUD,EAAMvyD,GAChDgD,KAAK+uD,YAAcQ,EAAKH,UAAUttD,WAClC9B,KAAK8uD,WAAaS,EAAKH,UAAUC,KACjCrvD,KAAKyvD,YAAcjvD,SAASS,cAAc,OAC1Cj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"}
1
+ {"version":3,"file":"ej2-base.umd.min.js","sources":["../src/util.js","../src/intl/parser-base.js","../src/hijri-parser.js","../src/intl/date-formatter.js","../src/intl/number-formatter.js","../src/intl/date-parser.js","../src/intl/number-parser.js","../src/observer.js","../src/internationalization.js","../src/intl/intl-base.js","../src/ajax.js","../src/fetch.js","../src/browser.js","../src/event-handler.js","../src/dom.js","../src/base.js","../src/notify-property-change.js","../src/animation.js","../src/module-loader.js","../src/child-property.js","../src/validate-lic.js","../src/component.js","../src/draggable.js","../src/droppable.js","../src/keyboard.js","../src/l10n.js","../src/touch.js","../src/template.js","../src/template-engine.js","../src/sanitize-helper.js"],"sourcesContent":["var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function getValue(nameSpace, obj) {\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[\"\" + enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n var args = [copied, first, second, deep];\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!args[parseInt(i.toString(), 10)]) {\n return \"continue\";\n }\n var obj1 = args[parseInt(i.toString(), 10)];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && Object.prototype.hasOwnProperty.call(clone, 'isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {any} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {any} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw new Error(e.message + '\\n' + e.stack);\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write('<!DOCTYPE html> <html><head>' + reference + '</head><body>' + div.innerHTML +\n '<script> (function() { window.ready = true; })(); </script>' + '</body></html>');\n printWindow.document.close();\n printWindow.focus();\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\nexport function getInstance(element, component) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n if (!Object.prototype.hasOwnProperty.call(res, prop[\"\" + key])) {\n res[prop[\"\" + key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[\"\" + key]] = defaultNumberSymbols[\"\" + key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[\"\" + str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631 / 30;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[\"\" + base.month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G': {\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n }\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[\"\" + curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[\"\" + weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[\"\" + timeSetter[\"\" + char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[\"\" + timeSetter[\"\" + char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a': {\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[\"\" + desig];\n break;\n }\n case 'G': {\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[\"\" + dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n }\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z': {\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n }\n case ':':\n ret += options.numMapper.numberSymbols[\"\" + timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol, option.ignoreCurrency);\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n if (!isUndefined(fOptions.useGrouping) && fOptions.useGrouping) {\n fOptions.useGrouping = cOptions.pData.useGrouping;\n }\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[parseInt(i.toString(), 10)] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n // removes the dot and trailing zero\n var decimalSeparator = (dOptions).numberMapper.numberSymbols[mapper[3]] || '.';\n if (decimalPart === '') {\n fValue = temp[0];\n }\n else {\n fValue = temp[0] + decimalSeparator + decimalPart;\n }\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n var numMapper = isBlazor() ? dependable.parserObject.numbers\n : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n var charKey = datePartMatcher[\"\" + char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c': {\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n var weekObject = parser.reverseObject(weekData);\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n }\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n monthData = getValue('months.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n monthData = dependable.dateObject[\"\" + month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n parseOptions[\"\" + charKey] = parser.reverseObject(monthData);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W': {\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n }\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a': {\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[\"\" + charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n break;\n }\n case 'G': {\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[\"\" + charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + '?)';\n break;\n }\n case 'z': {\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[\"\" + charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[\"\" + charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n }\n case '\\'': {\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n }\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[\"\" + key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[\"\" + key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[\"\" + timeSetter[\"\" + key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[\"\" + prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\n retOptions[\"\" + prop] = parseOptions[\"\" + prop][\"\" + matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n var splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[parseInt(i.toString(), 10)].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n return Object.prototype.hasOwnProperty.call(this.boundedEvents, prop) === false || this.boundedEvents[\"\" + prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var IntlBase;\n(function (IntlBase) {\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0# ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp('(^[ncpae]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.currencyFormatRegex = new regExp('(^[ca]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n ret.type = IntlBase.patternMatcher[\"\" + pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @param {string} ignoreCurrency ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol, ignoreCurrency) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = ignoreCurrency ? '$' : getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[\"\" + data[parseInt(i.toString(), 10)]] = customNumberFormat(formatSplit[parseInt(i.toString(), 10)], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[\"\" + typeMapper[parseInt(i.toString(), 10)]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[\"\" + typeMapper[\"\" + actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[\"\" + pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n IntlBase.processSymbol = processSymbol;\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @returns {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n var header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise<Response>} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {string} ?\n */\n Browser.getEvent = function (event) {\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n * <div id=\"Eventdiv\"> </div>\n * <script>\n * let node: HTMLElement = document.querySelector(\"#Eventdiv\");\n * EventHandler.addEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * EventHandler.addEventListener(node, \"onmouseover\", function(){\n * // mouseover handler function code\n * });\n * EventHandler.removeEventListener(node, \"click\", function(){\n * // click handler function code\n * });\n * eventObj.clearEvents();\n * </script>\n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData = EventHandler.addOrGetEventData(element);\n var copyData = extend([], undefined, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n element.style[\"\" + key] = attrs[\"\" + key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n var regExp = RegExp;\n return new regExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n * @returns {void} ?\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line camelcase\n this.element.ej2_instances =\n this.element.ej2_instances ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @returns {void} ?\n * @private\n */\nexport function removeChildInstance(element) {\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!Object.prototype.hasOwnProperty.call(instance.properties, curKey) || !(instance.properties[\"\" + curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n var oldVal = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop': {\n Array.prototype[\"\" + dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex<Type>({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!Object.prototype.hasOwnProperty.call(builderFunction, 'create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (Object.prototype.hasOwnProperty.call(context, 'parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @returns {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n * <div id='ripple'></div>\n * <script>\n * rippleEffect(document.getElementById('ripple'));\n * </script>\n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n * @returns {void} ?\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '{syncfusionReleaseversion}';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: '<span>This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.</span>',\n trailExpired: '<span>This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.</span>',\n versionMismatched: '<span>The included Syncfusion license key is invalid.</span>',\n platformMismatched: '<span>The included Syncfusion license key is invalid.</span>',\n invalidKey: '<span>The included Syncfusion license key is invalid.</span>'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs={versionencodedData}&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"<img src='data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5OV80KSI+CjxwYXRoIGQ9Ik0xMiAyMUMxNi45NzA2IDIxIDIxIDE2Ljk3MDYgMjEgMTJDMjEgNy4wMjk0NCAxNi45NzA2IDMgMTIgM0M3LjAyOTQ0IDMgMyA3LjAyOTQ0IDMgMTJDMyAxNi45NzA2IDcuMDI5NDQgMjEgMTIgMjFaIiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBmaWxsPSIjNjE2MDYzIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS44MTI1IDlDMTIuNDMzOCA5IDEyLjkzNzUgOC40OTYzMiAxMi45Mzc1IDcuODc1QzEyLjkzNzUgNy4yNTM2OCAxMi40MzM4IDYuNzUgMTEuODEyNSA2Ljc1QzExLjE5MTIgNi43NSAxMC42ODc1IDcuMjUzNjggMTAuNjg3NSA3Ljg3NUMxMC42ODc1IDguNDk2MzIgMTEuMTkxMiA5IDExLjgxMjUgOVoiIGZpbGw9IiM3MzczNzMiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xOTlfNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K' style=\\\"top: 6px;\\n position: absolute;\\n left: 16px;\\n width: 24px;\\n height: 24px;\\\"/>\" + validateMsg + ' ' + '<a style=\"text-decoration: none;color: #0D6EFD;font-weight: 500;\" href=' + accountURL + '>Claim your free account</a>'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0)\n - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n <div style=\\\"\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background-color: rgba(0, 0, 0, 0.5);\\n z-index: 99999;\\n \\\">\\n <div style=\\\"\\n background: #FFFFFF;\\n height: 455px;\\n width: 840px;\\n font-family: Helvetica Neue, Helvetica, Arial;\\n color: #000000;\\n box-shadow: 0px 4.8px 14.4px rgb(0 0 0 / 18%), 0px 25.6px 57.6px rgb(0 0 0 / 22%);\\n display: block;\\n margin: 8% auto;\\n border-radius: 20px;\\n \\\">\\n <div style=\\\"\\n position: absolute;\\nwidth: 838px;\\nheight: 62px;\\nbackground-color: #F9F9F9;\\nborder: 1px solid #EEEEEE;\\nborder-top-left-radius: 20px;\\nborder-top-right-radius: 20px;\\n\\\">\\n <img src=\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQ2IiBoZWlnaHQ9IjMyIiB2aWV3Qm94PSIwIDAgMTQ2IDMyIiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBkPSJNNDAuNTk2NSAxNS4wMDc4SDMyLjQyNUMzMS41NTU3IDE1LjAwNzggMzAuOTAzNyAxNS4xODEyIDMwLjUxMjUgMTUuNDg0NkMzMC4xMjEzIDE1LjgzMTQgMjkuOTA0IDE2LjMwODIgMjkuOTA0IDE3LjA0NTFDMjkuOTA0IDE3LjYwODYgMzAuMDc3OCAxOC4wNDIxIDMwLjQyNTYgMTguMzAyMkMzMC43NzMzIDE4LjYwNTYgMzEuMjk0OSAxOC43MzU2IDMxLjk5MDMgMTguNzM1NkgzNi4zMzY5QzM4LjExODkgMTguNzM1NiAzOS40MjI5IDE5LjA4MjQgNDAuMTYxOCAxOS43MzI2QzQwLjk0NDIgMjAuNDI2MiA0MS4yOTE5IDIxLjU1MzIgNDEuMjkxOSAyMy4xMTM3QzQxLjI5MTkgMjQuNzE3NiA0MC44NTcyIDI1Ljg4OCAzOS45ODc5IDI2LjY2ODJDMzkuMTE4NiAyNy40MDUxIDM3LjcyNzcgMjcuNzk1MyAzNS44NTg3IDI3Ljc5NTNIMjcuMDc4N1YyNS4wMjFIMzUuMzM3MkMzNi4yOTM0IDI1LjAyMSAzNi45NDU0IDI0Ljg5MSAzNy4zMzY2IDI0LjYzMDlDMzcuNzI3NyAyNC4zNzA4IDM3LjkwMTYgMjMuODk0IDM3LjkwMTYgMjMuMjg3MUMzNy45MDE2IDIyLjYzNjkgMzcuNzI3NyAyMi4xNjAxIDM3LjM4IDIxLjlDMzcuMDMyMyAyMS42Mzk5IDM2LjQyMzggMjEuNDY2NSAzNS41NTQ1IDIxLjQ2NjVIMzEuNjQyNkMyOS44NjA1IDIxLjQ2NjUgMjguNTEzMSAyMS4xMTk4IDI3LjY4NzMgMjAuMzgyOEMyNi44NjE0IDE5LjY0NTkgMjYuNDI2OCAxOC41MTg5IDI2LjQyNjggMTcuMDAxN0MyNi40MjY4IDE1LjM1NDUgMjYuODYxNCAxNC4xNDA4IDI3LjczMDcgMTMuMzYwNkMyOC42IDEyLjU4MDMgMjkuOTkwOSAxMi4yMzM1IDMxLjkwMzQgMTIuMjMzNUg0MC41OTY1VjE1LjAwNzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik00OC4wNzI3IDI1LjI4MTFINTAuNTA2OFYxNi4zOTQ5SDUzLjU0OTNWMjcuNTM1MkM1My41NDkzIDI5LjA1MjQgNTMuMjAxNiAzMC4xNzk0IDUyLjUwNjIgMzAuOTE2M0M1MS44MTA3IDMxLjY1MzIgNTAuNzI0MSAzMiA0OS4yNDYzIDMySDQzLjMzNVYyOS42NTkySDQ4LjcyNDdDNDkuMjg5NyAyOS42NTkyIDQ5Ljc2NzkgMjkuNTI5MiA1MC4wNzIxIDI5LjIyNThDNTAuMzc2NCAyOC45NjU3IDUwLjU1MDIgMjguNTMyMiA1MC41NTAyIDI4LjAxMlYyNy44Mzg2SDQ3Ljg5ODlDNDYuMjAzNyAyNy44Mzg2IDQ0Ljk0MzIgMjcuNDkxOSA0NC4yNDc4IDI2Ljg0MTZDNDMuNTA4OSAyNi4xNDgxIDQzLjE2MTEgMjUuMDY0NCA0My4xNjExIDIzLjQ2MDVWMTYuMzk0OUg0Ni4xNjAyVjIzLjIwMDVDNDYuMTYwMiAyNC4wNjc0IDQ2LjI5MDYgMjQuNjMwOSA0Ni41NTE0IDI0Ljg5MUM0Ni43MjUzIDI1LjE1MTEgNDcuMjQ2OSAyNS4yODExIDQ4LjA3MjcgMjUuMjgxMVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTU1Ljg5NjUgMTYuMzk0OUg2MS41OTA0QzYzLjMyOTEgMTYuMzk0OSA2NC41NDYxIDE2LjY5ODMgNjUuMjg1IDE3LjM0ODVDNjYuMDIzOSAxNy45OTg4IDY2LjM3MTYgMTkuMDgyNCA2Ni4zNzE2IDIwLjU1NjNWMjcuNzk1M0g2My4zMjkxVjIwLjk0NjRDNjMuMzI5MSAyMC4wNzk0IDYzLjE5ODcgMTkuNTE1OSA2Mi45Mzc5IDE5LjI5OTJDNjIuNjc3MSAxOS4wMzkxIDYyLjE1NTUgMTguOTA5MSA2MS4zMjk3IDE4LjkwOTFINTguODk1NlYyNy44Mzg2SDU1Ljg1M1YxNi4zOTQ5SDU1Ljg5NjVaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03NC45MzQyIDI1LjM2NzhINzguMTUwNlYyNy43OTUySDc0LjAyMTRDNzIuOTc4MiAyNy43OTUyIDcyLjEwODkgMjcuNjY1MiA3MS40NTcgMjcuNDkxOEM3MC44MDUgMjcuMjc1IDcwLjE5NjUgMjYuOTI4MyA2OS43MTgzIDI2LjQ1MTRDNjkuMTk2OCAyNS45MzEzIDY4Ljc2MjEgMjUuMjgxMSA2OC40NTc4IDI0LjU0NDJDNjguMTUzNiAyMy44MDcyIDY4LjAyMzIgMjIuOTgzNiA2OC4wMjMyIDIyLjE2QzY4LjAyMzIgMjEuMjkzMSA2OC4xNTM2IDIwLjQ2OTUgNjguNDU3OCAxOS42ODkyQzY4Ljc2MjEgMTguOTA5IDY5LjE1MzMgMTguMzAyMSA2OS43MTgzIDE3Ljc4MTlDNzAuMjM5OSAxNy4zMDUxIDcwLjgwNSAxNi45NTgzIDcxLjUwMDQgMTYuNzQxNkM3Mi4xOTU5IDE2LjUyNDkgNzMuMDIxNyAxNi40MzgyIDc0LjA2NDkgMTYuNDM4Mkg3OC4xOTQxVjE4LjkwOUg3NC45MzQyQzczLjQ5OTggMTguOTA5IDcyLjU0MzYgMTkuMTY5MSA3MS45Nzg1IDE5LjY0NTlDNzEuNDU2OSAyMC4xMjI3IDcxLjE1MjcgMjAuOTg5NyA3MS4xNTI3IDIyLjIwMzRDNzEuMTUyNyAyMi44OTY5IDcxLjI4MzEgMjMuNDYwNSA3MS41MDA0IDIzLjkzNzNDNzEuNzE3NyAyNC40MTQxIDcyLjA2NTUgMjQuNzYwOSA3Mi41MDAxIDI1LjA2NDNDNzIuNzE3NCAyNS4xOTQ0IDcyLjk3ODIgMjUuMjgxMSA3My4yODI1IDI1LjM2NzhDNzMuNjMwMiAyNS4zMjQ0IDc0LjE1MTggMjUuMzY3OCA3NC45MzQyIDI1LjM2NzhaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik04MC44NDU2IDE4LjY0ODlINzguNjcyNFYxNi4zNTE1SDgwLjg0NTZWMTUuMTgxMUM4MC44NDU2IDE0LjAxMDggODEuMDYzIDEzLjIzMDUgODEuNDk3NiAxMi44NDA0QzgxLjkzMjMgMTIuNDUwMyA4Mi43NTgxIDEyLjIzMzUgODMuOTc1MSAxMi4yMzM1SDg2Ljg0MzhWMTQuNDAwOUg4NS40MDk1Qzg0Ljg4NzkgMTQuNDAwOSA4NC41NDAyIDE0LjQ4NzYgODQuMzIyOSAxNC42NjFDODQuMTA1NSAxNC44MzQ0IDgzLjk3NTEgMTUuMDk0NSA4My45NzUxIDE1LjQ0MTJWMTYuMzUxNUg4Ni44NDM4VjE4LjY0ODlIODMuOTc1MVYyNy43OTUzSDgwLjg0NTZWMTguNjQ4OVoiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTk4LjQwNTYgMjcuNzk1M0g5Mi43MTE2QzkxLjAxNjUgMjcuNzk1MyA4OS44NDI5IDI3LjQ0ODUgODkuMDYwNSAyNi43OTgzQzg4LjMyMTYgMjYuMTQ4MSA4Ny45MzA0IDI1LjA2NDQgODcuOTMwNCAyMy41OTA2VjE2LjM5NDlIOTAuOTI5NVYyMy40MTcyQzkwLjkyOTUgMjQuMTk3NCA5MS4wNTk5IDI0LjY3NDMgOTEuMzIwNyAyNC45MzQ0QzkxLjU4MTUgMjUuMTk0NCA5Mi4xMDMxIDI1LjMyNDUgOTIuOTI4OSAyNS4zMjQ1SDk1LjM2M1YxNi4zOTQ5SDk4LjQwNTZWMjcuNzk1M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTEwMC42MjIgMjUuNDExMkgxMDcuMDExQzEwNy41NzcgMjUuNDExMiAxMDguMDExIDI1LjMyNDUgMTA4LjI3MiAyNS4xNTExQzEwOC41MzMgMjQuOTc3NyAxMDguNjYzIDI0LjY3NDMgMTA4LjY2MyAyNC4zMjc1QzEwOC42NjMgMjMuOTM3NCAxMDguNTMzIDIzLjY3NzMgMTA4LjI3MiAyMy40NjA1QzEwOC4wMTEgMjMuMjg3MSAxMDcuNTc3IDIzLjIwMDUgMTA3LjA1NSAyMy4yMDA1SDEwNC40NDdDMTAyLjg4MiAyMy4yMDA1IDEwMS44MzkgMjIuOTgzNyAxMDEuMzE4IDIyLjUwNjlDMTAwLjc1MiAyMi4wMzAxIDEwMC40OTIgMjEuMjA2NSAxMDAuNDkyIDE5Ljk5MjdDMTAwLjQ5MiAxOC43NzkgMTAwLjgzOSAxNy44Njg3IDEwMS40OTEgMTcuMjYxOEMxMDIuMTQzIDE2LjY5ODMgMTAzLjE4NyAxNi4zOTQ5IDEwNC41MzQgMTYuMzk0OUgxMTEuMDU0VjE4Ljc3OUgxMDUuNzA4QzEwNC44MzggMTguNzc5IDEwNC4yNzMgMTguODY1NyAxMDQuMDEyIDE4Ljk5NTdDMTAzLjc1MiAxOS4xNjkxIDEwMy42MjEgMTkuNDI5MiAxMDMuNjIxIDE5LjgxOTRDMTAzLjYyMSAyMC4xNjYxIDEwMy43NTIgMjAuNDI2MiAxMDMuOTY5IDIwLjU5OTZDMTA0LjE4NiAyMC43NzMgMTA0LjU3NyAyMC44NTk3IDEwNS4wNTYgMjAuODU5N0gxMDcuNzk0QzEwOS4wNTQgMjAuODU5NyAxMTAuMDExIDIxLjE2MzEgMTEwLjY2MyAyMS43MjY2QzExMS4zMTUgMjIuMjkwMiAxMTEuNjYyIDIzLjE1NzEgMTExLjY2MiAyNC4yNDA4QzExMS42NjIgMjUuMjgxMSAxMTEuMzU4IDI2LjE0ODEgMTEwLjc5MyAyNi43OTgzQzExMC4yMjggMjcuNDQ4NSAxMDkuNDQ2IDI3Ljc5NTMgMTA4LjUzMyAyNy43OTUzSDEwMC43MDlWMjUuNDExMkgxMDAuNjIyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTE2LjU3NCAxNS4wOTQ0SDExMy40MDFWMTIuMjc2OUgxMTYuNTc0VjE1LjA5NDRaTTExNi41NzQgMjcuNzk1M0gxMTMuNDAxVjE2LjM5NDlIMTE2LjU3NFYyNy43OTUzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMwLjMwOSAyMi4xMTY3QzEzMC4zMDkgMjMuODkzOSAxMjkuNzQ0IDI1LjMyNDQgMTI4LjY1NyAyNi40MDgxQzEyNy41NzEgMjcuNDkxOCAxMjYuMDkzIDI4LjAxMiAxMjQuMjI0IDI4LjAxMkMxMjIuMzU1IDI4LjAxMiAxMjAuODc3IDI3LjQ5MTggMTE5Ljc5IDI2LjQwODFDMTE4LjcwNCAyNS4zMjQ0IDExOC4xMzkgMjMuODkzOSAxMTguMTM5IDIyLjExNjdDMTE4LjEzOSAyMC4zMzk0IDExOC43MDQgMTguOTA5IDExOS43OSAxNy44MjUzQzEyMC44NzcgMTYuNzQxNiAxMjIuMzk4IDE2LjIyMTQgMTI0LjIyNCAxNi4yMjE0QzEyNi4wNDkgMTYuMjIxNCAxMjcuNTI3IDE2Ljc0MTYgMTI4LjY1NyAxNy44MjUzQzEyOS43NDQgMTguODY1NiAxMzAuMzA5IDIwLjI5NjEgMTMwLjMwOSAyMi4xMTY3Wk0xMjEuMjY4IDIyLjExNjdDMTIxLjI2OCAyMy4yMDA0IDEyMS41MjkgMjQuMDY3MyAxMjIuMDUxIDI0LjY3NDJDMTIyLjU3MiAyNS4yODExIDEyMy4yNjggMjUuNTg0NSAxMjQuMTggMjUuNTg0NUMxMjUuMDkzIDI1LjU4NDUgMTI1Ljc4OSAyNS4yODExIDEyNi4zMSAyNC42NzQyQzEyNi44MzIgMjQuMDY3MyAxMjcuMDkzIDIzLjIwMDQgMTI3LjA5MyAyMi4xMTY3QzEyNy4wOTMgMjEuMDMzIDEyNi44MzIgMjAuMTY2MSAxMjYuMzEgMTkuNjAyNUMxMjUuNzg5IDE4Ljk5NTcgMTI1LjA5MyAxOC42OTIyIDEyNC4xMzcgMTguNjkyMkMxMjMuMjI0IDE4LjY5MjIgMTIyLjUyOSAxOC45OTU3IDEyMi4wMDcgMTkuNjAyNUMxMjEuNTI5IDIwLjE2NjEgMTIxLjI2OCAyMS4wMzMgMTIxLjI2OCAyMi4xMTY3WiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMTMxLjc4NyAxNi4zOTQ5SDEzNy40ODFDMTM5LjIxOSAxNi4zOTQ5IDE0MC40MzYgMTYuNjk4MyAxNDEuMTc1IDE3LjM0ODVDMTQxLjkxNCAxNy45OTg4IDE0Mi4yNjIgMTkuMDgyNCAxNDIuMjYyIDIwLjU1NjNWMjcuNzk1M0gxMzkuMjE5VjIwLjk0NjRDMTM5LjIxOSAyMC4wNzk0IDEzOS4wODkgMTkuNTE1OSAxMzguODI4IDE5LjI5OTJDMTM4LjU2NyAxOS4wMzkxIDEzOC4wNDYgMTguOTA5MSAxMzcuMjIgMTguOTA5MUgxMzQuNzg2VjI3LjgzODZIMTMxLjc0M1YxNi4zOTQ5SDEzMS43ODdaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDMuNzM3NDNIMFYxMC44NDY0SDcuMTI4MzFWMy43Mzc0M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTIzLjI1MTMgLTIuMTU3MjVlLTA1TDE4LjU1MTMgNS41MTY4NUwyNC4wODMxIDEwLjIwNDFMMjguNzgzMSA0LjY4NzI1TDIzLjI1MTMgLTIuMTU3MjVlLTA1WiIgZmlsbD0iI0ZGODYwMCIvPgo8cGF0aCBkPSJNMTUuNjA0MSAzLjczNzQzSDguNDc1ODNWMTAuODQ2NEgxNS42MDQxVjMuNzM3NDNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik03LjEyODMxIDEyLjE5MDJIMFYxOS4yOTkySDcuMTI4MzFWMTIuMTkwMloiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMTIuMTkwMkg4LjQ3NTgzVjE5LjI5OTJIMTUuNjA0MVYxMi4xOTAyWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMDc5NyAxMi4xOTAySDE2Ljk1MTRWMTkuMjk5MkgyNC4wNzk3VjEyLjE5MDJaIiBmaWxsPSIjRkY4NjAwIi8+CjxwYXRoIGQ9Ik03LjEyODMxIDIwLjY4NjNIMFYyNy43OTUzSDcuMTI4MzFWMjAuNjg2M1oiIGZpbGw9IiMzNTQzQTgiLz4KPHBhdGggZD0iTTE1LjYwNDEgMjAuNjg2M0g4LjQ3NTgzVjI3Ljc5NTNIMTUuNjA0MVYyMC42ODYzWiIgZmlsbD0iIzM1NDNBOCIvPgo8cGF0aCBkPSJNMjQuMTIzMiAyMC42ODYzSDE2Ljk5NDlWMjcuNzk1M0gyNC4xMjMyVjIwLjY4NjNaIiBmaWxsPSIjMzU0M0E4Ii8+CjxwYXRoIGQ9Ik0xNDYgMTUuODMxM0MxNDYgMTYuODcxNyAxNDUuMTc0IDE3LjY5NTMgMTQ0LjEzMSAxNy42OTUzQzE0My4wODggMTcuNjk1MyAxNDIuMjYyIDE2Ljg3MTcgMTQyLjI2MiAxNS44MzEzQzE0Mi4yNjIgMTQuNzkxIDE0My4wODggMTQuMDEwNyAxNDQuMTMxIDE0LjAxMDdDMTQ1LjEzMSAxMy45Njc0IDE0NiAxNC43OTEgMTQ2IDE1LjgzMTNaTTE0Mi45NTcgMTQuNzkxQzE0Mi42OTcgMTUuMDUxMSAxNDIuNTY2IDE1LjQ0MTIgMTQyLjU2NiAxNS44MzEzQzE0Mi41NjYgMTYuNjk4MyAxNDMuMjYyIDE3LjM5MTggMTQ0LjEzMSAxNy4zOTE4QzE0NSAxNy4zOTE4IDE0NS42OTYgMTYuNjk4MyAxNDUuNjk2IDE1LjgzMTNDMTQ1LjY5NiAxNS4wMDc3IDE0NSAxNC4yNzA4IDE0NC4xNzQgMTQuMjcwOEMxNDMuNjUzIDE0LjI3MDggMTQzLjI2MiAxNC40NDQyIDE0Mi45NTcgMTQuNzkxWk0xNDQuODcgMTYuOTE1SDE0NC40NzlMMTQzLjkxNCAxNi4wOTE0VjE2LjkxNUgxNDMuNjA5VjE0Ljc0NzZIMTQzLjk1N0MxNDQuNDM1IDE0Ljc0NzYgMTQ0LjY1MyAxNC45NjQ0IDE0NC42NTMgMTUuMzU0NUMxNDQuNjUzIDE1LjY1NzkgMTQ0LjQ3OSAxNS44NzQ3IDE0NC4xNzQgMTUuOTYxNEwxNDQuODcgMTYuOTE1Wk0xNDQuMDQ0IDE1LjY1NzlDMTQ0LjI2MSAxNS42NTc5IDE0NC4zOTIgMTUuNTI3OSAxNDQuMzkyIDE1LjM1NDVDMTQ0LjM5MiAxNS4xMzc4IDE0NC4yNjEgMTUuMDUxMSAxNDQuMDAxIDE1LjA1MTFIMTQzLjkxNFYxNS42NTc5SDE0NC4wNDRaIiBmaWxsPSIjMzU0M0E4Ii8+Cjwvc3ZnPgo=\\\" style=\\\"\\n text-align: left;\\n width: 146px;\\n position: absolute;\\n top: 14px;\\n left: 31px;\\n\\\">\\n </div>\\n <div style=\\\"\\n position: relative;\\n top: 80px;\\n left: 32px;\\n font-size: 20px;\\n text-align: left;\\n font-weight: 700;\\n letter-spacing: 0.02em;\\n font-style: normal;\\n line-height: 125%;\\n \\\">Claim your FREE account and get a key in less than a minute</div>\\n <ul style=\\\"\\n font-size: 15px;\\n font-weight: 400;\\n color: #333333;\\n letter-spacing: 0.01em;\\n position: relative;\\n left: 32px;\\n top: 88px;\\n line-height: 180%;\\n \\\">\\n <li><span>Access to a 30-day free trial of any of our products.</span></li>\\n <li><span>Access to 24x5 support by developers via the <a href=\\\"https://support.syncfusion.com/create?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">support tickets</a>, <a href=\\\"https://www.syncfusion.com/forums?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">forum</a>, <a href=\\\"https://www.syncfusion.com/feedback?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">feature &amp; feedback page</a> and chat.</span></li>\\n <li><span>200+ <a href=\\\"https://www.syncfusion.com/succinctly-free-ebooks?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">ebooks </a>on the latest technologies, industry trends, and research topics.</span>\\n </li>\\n <li><span>Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion <a href=\\\"https://www.syncfusion.com/downloads/metrostudio?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">Metro Studio.</a></span></li>\\n <li><span>Free and unlimited access to Syncfusion technical <a href=\\\"https://www.syncfusion.com/blogs/?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\n \\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">blogs</a> and <a href=\\\"https://www.syncfusion.com/resources/techportal/whitepapers?utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\\\" style=\\\"text-decoration: none;\\n color: #0D6EFD;\\n font-weight: 500;\\\">whitepapers.</a></span></li>\\n </ul>\\n <div style=\\\"\\n font-size: 18px;\\n font-weight: 700;\\n position: relative;\\n line-height: 125%;\\n letter-spacing: 0.02em;\\n top: 90px;\\n left: 32px;\\n \\\">Syncfusion is trusted by 29,000+ businesses worldwide</div>\\n <img src=\\\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iODIwIiBoZWlnaHQ9IjU2IiB2aWV3Qm94PSIwIDAgODIwIDU2IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPg0KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MjcuNjE3IDIyLjU2NTlWMjQuNzIyNkM0MjYuNTU4IDI0LjM2MzggNDI1LjM5OCAyNC4xNTQ0IDQyNC40NzQgMjQuMTU0NEM0MjMuMzMzIDI0LjE1NDQgNDIyLjY5OCAyNC40OTEyIDQyMi42OTggMjUuMDk2M0M0MjIuNjk4IDI1LjQ4MjQgNDIyLjk3NiAyNS43MzgzIDQyMy43NzMgMjYuMDg1NEw0MjUuOTE3IDI3LjAxNzRDNDI3LjYzMyAyNy43NjM5IDQyOC40OTcgMjguODUzIDQyOC40OTcgMzAuMjY4MUM0MjguNDk3IDMyLjQ1MjIgNDI2LjU0NiAzMy44MyA0MjMuNDUyIDMzLjgzQzQyMi4zMjQgMzMuODMgNDIxLjAxOCAzMy42NzM2IDQxOS42MzYgMzMuMzcwOVYzMS4xNDE2QzQyMS4wMDYgMzEuNTAyOCA0MjIuMjYyIDMxLjY5NTcgNDIzLjIzOSAzMS42OTU3QzQyNC41MTggMzEuNjk1NyA0MjUuMjAzIDMxLjM1MDYgNDI1LjIwMyAzMC43MDc0QzQyNS4yMDMgMzAuMzIwOCA0MjQuOTM1IDMwLjAzNjcgNDI0LjMyMiAyOS43NzE3TDQyMS45NzUgMjguNzU5M0M0MjAuMjM2IDI4LjAwNzggNDE5LjQzMyAyNi45OTU0IDQxOS40MzMgMjUuNTUyMUM0MTkuNDMzIDIzLjQ4MzcgNDIxLjMxNCAyMi4xNjQ5IDQyNC4yNjUgMjIuMTY0OUM0MjUuMjk4IDIyLjE2NDkgNDI2LjU3IDIyLjMxNzEgNDI3LjYxNyAyMi41NjU5VjIyLjU2NTlaTTQzMC4xNjcgMjIuMzkwOUg0MzMuNjM1VjMzLjYwMzlINDMwLjE2N1YyMi4zOTA5Wk00NDQuOTExIDIyLjM5MDlWMjQuNDQ1MUg0MzkuNjc1VjI2Ljk3NDJINDQ0LjI0OVYyOC44MzIzSDQzOS42NzVWMzEuNDU0M0g0NDQuOTc4VjMzLjYwMzlINDM2LjMwNVYyMi4zOTA5SDQ0NC45MTFaTTQ2MS4yOTQgMjIuMzkwOVYzMy42MDM5SDQ1Ny45MzlWMjYuMjIzNkw0NTQuNjUyIDMzLjY5MTVINDUyLjUzMUw0NDkuMjY2IDI2LjIyMzZWMzMuNjAzOUg0NDYuOTQ5VjIyLjM5MDlINDUxLjE4NEw0NTQuMTc4IDI5LjIxMTRMNDU3LjE1NiAyMi4zOTA5SDQ2MS4yOTRWMjIuMzkwOVpNNDcyLjU3OSAyMi4zOTA5VjI0LjQ0NTFINDY3LjMzNVYyNi45NzQySDQ3MS45MDhWMjguODMyM0g0NjcuMzM1VjMxLjQ1NDNINDcyLjYzOFYzMy42MDM5SDQ2My45NTdWMjIuMzkwOUg0NzIuNTc5Wk00ODQuNzk0IDIyLjM5MDlWMzMuNjAzOUg0ODEuMDkzTDQ3Ni45MjYgMjYuNDEyM1YzMy42MDM5SDQ3NC42MDhWMjIuMzkwOUg0NzguNDA3TDQ4Mi40ODQgMjkuNDg3NlYyMi4zOTA5SDQ4NC43OTRaTTQ5NC44NTggMjIuNTY1OVYyNC43MjI2QzQ5My44MDcgMjQuMzY2MyA0OTIuNjQgMjQuMTU0NCA0OTEuNzMyIDI0LjE1NDRDNDkwLjU3MyAyNC4xNTQ0IDQ4OS45MzkgMjQuNDg1OCA0ODkuOTM5IDI1LjA5M0M0ODkuOTM5IDI1LjQ4ODYgNDkwLjE5OCAyNS43MjUgNDkxLjAyMyAyNi4wODU5TDQ5My4xNTcgMjcuMDE3OEM0OTQuODg1IDI3Ljc3MjIgNDk1LjczOSAyOC44NTE4IDQ5NS43MzkgMzAuMjgzNUM0OTUuNzM5IDMyLjQ1NTkgNDkzLjc4NiAzMy44MzA4IDQ5MC42OTkgMzMuODMwOEM0ODkuNTY5IDMzLjgzMDggNDg4LjI1OSAzMy42NzM2IDQ4Ni44NzggMzMuMzcxN1YzMS4xNDI0QzQ4OC4yNDcgMzEuNTAyOCA0ODkuNDk5IDMxLjY5NjUgNDkwLjQ3IDMxLjY5NjVDNDkxLjc0IDMxLjY5NjUgNDkyLjQ0NCAzMS4zNTE1IDQ5Mi40NDQgMzAuNzI4NUM0OTIuNDQ0IDMwLjMxNjMgNDkyLjE5NyAzMC4wNTA0IDQ5MS41NTUgMjkuNzcyNUw0ODkuMjE4IDI4Ljc2MDFDNDg3LjQ2NyAyOC4wMDI4IDQ4Ni42NzQgMjcuMDAyIDQ4Ni42NzQgMjUuNTUzM0M0ODYuNjc0IDIzLjQ4NjIgNDg4LjU1NiAyMi4xNjY1IDQ5MS41IDIyLjE2NjVDNDkyLjUzNiAyMi4xNjUzIDQ5My44MTMgMjIuMzE3MSA0OTQuODU4IDIyLjU2NTlWMjIuNTY1OVoiIGZpbGw9IiMwMEEwQjAiLz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMzUyLjQxMyAyNi44MTlDMzUwLjk5MiAyNS4yNzU5IDM0OS42MzggMjMuODMxNSAzNDguMzQ5IDIyLjE1NzRMMzQ3LjkyIDIxLjU5OTVDMzQ5LjQwNiAyMS4zNjkzIDM1MC42OTUgMjAuMzg0OCAzNTAuNjk1IDE4Ljc0MzNDMzUwLjY5NSAxNy4yMzMxIDM0OS41MzkgMTYuMjQ4MiAzNDcuODIxIDE2LjI0ODJDMzQ2LjU5OCAxNi4yNDgyIDM0NS43MDYgMTYuMzEzNyAzNDUuMjQzIDE2LjMxMzdDMzQ0LjcxNSAxNi4zMTM3IDM0NC4yODUgMTYuMzEzNyAzNDMuNzkgMTYuMjgwOEMzNDMuODU2IDE4LjE1MjEgMzQzLjg4OSAxOC4yODM0IDM0My44ODkgMTkuNDMyMlYyMy42MzQzQzM0My44ODkgMjQuNDU1MyAzNDMuODU2IDI1LjI3NTkgMzQzLjc5IDI2LjgxODZDMzQ0LjE1MyAyNi43MjAyIDM0NC41MTcgMjYuNzIwMiAzNDQuNzgxIDI2LjcyMDJDMzQ1LjA0NSAyNi43MjAyIDM0NS40MDkgMjYuNzUzMSAzNDUuNzA2IDI2LjgxODZDMzQ1LjY0IDI1Ljc2NzkgMzQ1LjYwNyAyNC4wMjgzIDM0NS42MDcgMjMuNjM0M1YyMS4yMDUxQzM0Ny4xNiAyMy4yMDc3IDM0OS4yMDkgMjUuNjY5NSAzNTAuMDAxIDI2LjgxODZDMzUwLjM5OCAyNi43MjAyIDM1MC43MjggMjYuNzIwMiAzNTEuMTI0IDI2LjcyMDJDMzUxLjQ1NSAyNi43MjA2IDM1MS45MTggMjYuNzIwNiAzNTIuNDEzIDI2LjgxOVYyNi44MTlaTTM0OC44NzggMTkuMDA2QzM0OC44NzggMjAuMDIzNCAzNDguMzE3IDIxLjIwNTQgMzQ2Ljc5NyAyMS4yMDU0QzM0Ni40IDIxLjIwNTQgMzQ2LjAwMyAyMS4yMDU0IDM0NS42MDcgMjEuMTcyNVYxNy4wNjg4QzM0Ni4wMDMgMTYuOTcwNCAzNDYuNDk5IDE2LjkwNDYgMzQ2Ljc2MyAxNi45MDQ2QzM0OC4wODUgMTYuOTA0OSAzNDguODc4IDE3LjY2IDM0OC44NzggMTkuMDA2VjE5LjAwNlpNMzgyLjM4IDI2Ljg4NDVDMzgxLjgxOSAyNi4yOTM2IDM4MC45NiAyNS4zNDE3IDM4MC4xMzQgMjQuNDIyM0MzODAuODI4IDIzLjY2NzIgMzgxLjU1NSAyMi41NTEgMzgxLjk4NCAyMS41OTkxQzM4MS43MTkgMjEuNDY3OCAzODEuMzU2IDIxLjIwNTEgMzgxLjA5MiAyMC45NzUzQzM4MC45OTMgMjEuNzk1OSAzODAuNDMyIDIyLjg3OTIgMzc5LjYzOSAyMy44MzE1QzM3OC41MTUgMjIuNTE4NSAzNzguMjE4IDIyLjE1NzQgMzc3LjE5MyAyMC43Nzg1QzM3OC41ODEgMTkuODkyMSAzNzkuMjQyIDE4Ljg3NDMgMzc5LjI0MiAxOC4wNTM3QzM3OS4yNDIgMTcuMTAxNyAzNzguNTgxIDE2LjExNjkgMzc2Ljk2MiAxNi4xMTY5QzM3NS4yMTEgMTYuMTE2OSAzNzQuMzUyIDE3LjIwMDIgMzc0LjM1MiAxOC40ODAzQzM3NC4zNTIgMTkuMjM1NCAzNzQuNTUgMTkuODkxNyAzNzUuMzc2IDIwLjk3NTNDMzc0LjA1NCAyMS42OTc1IDM3Mi43NjYgMjIuNzQ3OSAzNzIuNzY2IDI0LjQyMjNDMzcyLjc2NiAyNi4wNjM5IDM3NC4wODcgMjYuOTE3NCAzNzUuNzA3IDI2LjkxNzRDMzc3LjE5MyAyNi45MTc0IDM3OC4xNTEgMjYuMzI2NiAzNzguOTEyIDI1LjYzNjlMMzc5LjkwMiAyNi44MTlDMzgwLjIgMjYuNzg2MSAzODAuNTMxIDI2LjcyMDYgMzgwLjg2MSAyNi43MjA2QzM4MS4zMjQgMjYuNzIwNiAzODEuODUyIDI2Ljc4NjEgMzgyLjM4IDI2Ljg4NDVWMjYuODg0NVpNMzgzLjM3MiA0MC4wMTU4QzM4MS45MTggMzguNDczIDM4MC41OTcgMzcuMDYxMiAzNzkuMzA4IDM1LjM4NzFMMzc4Ljg3OCAzNC44Mjg4QzM4MC4zMzIgMzQuNTk5MSAzODEuNjU0IDMzLjYxNSAzODEuNjU0IDMxLjk0MDFDMzgxLjY1NCAzMC40NjMyIDM4MC40OTggMjkuNDQ1NCAzNzguNzc5IDI5LjQ0NTRDMzc3LjU1NyAyOS40NDU0IDM3Ni42MzIgMjkuNTQzNSAzNzYuMTY5IDI5LjU0MzVDMzc1LjY3MyAyOS41NDM1IDM3NS4yNDQgMjkuNTQzNSAzNzQuNzQ4IDI5LjQ3NzZDMzc0LjgxNCAzMS4zODIyIDM3NC44NDggMzEuNDgwMiAzNzQuODQ4IDMyLjYyOTRWMzYuODMxMUMzNzQuODQ4IDM3LjY1MjQgMzc0LjgxNCAzOC41MDUyIDM3NC43NDggNDAuMDE1NEMzNzUuMTEyIDM5Ljk0OTYgMzc1LjQ3NSAzOS45NDk2IDM3NS43MDcgMzkuOTQ5NkMzNzYuMDA0IDM5Ljk0OTYgMzc2LjM2OCAzOS45NDk2IDM3Ni42MzIgNDAuMDE1NEMzNzYuNTY1IDM4Ljk5OCAzNzYuNTMzIDM3LjI1ODEgMzc2LjUzMyAzNi44MzExVjM0LjQzNDhDMzc4LjExOSAzNi40MDQyIDM4MC4xNjcgMzguODk5NiAzODAuOTYgNDAuMDE1NEMzODEuMzU2IDM5Ljk0OTYgMzgxLjY4NyAzOS45NDk2IDM4Mi4wODMgMzkuOTQ5NkMzODIuMzggMzkuOTUgMzgyLjg3NiAzOS45NSAzODMuMzcyIDQwLjAxNThaTTM2Mi4xNiAyNi44MTlDMzYwLjk3MSAyNS41NzE1IDM1OC44ODkgMjIuOTc4IDM1OC4wNjMgMjEuOTkzNUwzNTcuMjM3IDIwLjk3NTdDMzU4LjA5NiAxOS45NTgzIDM1OC42OSAxOS4zMzQxIDM1OS4zMTkgMTguNTc5QzM2MC4wNDUgMTcuNzkxIDM2MC43MDYgMTYuOTcwNCAzNjEuNDk5IDE2LjI0ODJDMzYxLjEzNiAxNi4zMTM3IDM2MC45MzcgMTYuMzEzNyAzNjAuNzM5IDE2LjMxMzdDMzYwLjU0MSAxNi4zMTM3IDM2MC4zNDMgMTYuMzEzNyAzNjAuMTQ0IDE2LjI0ODJDMzU5LjkxMyAxNi42MDkzIDM1OS41NSAxNy4wNjg4IDM1OS4xNTMgMTcuNTI4N0MzNTguNzU2IDE3Ljk1NTYgMzU4LjM2IDE4LjM4MjIgMzU4LjA2MyAxOC43NDMzQzM1Ny4yMzYgMTkuNjk1MiAzNTYuNzc0IDIwLjE1NDcgMzU1LjU4NSAyMS4yNzA5VjE5LjQ2NTVDMzU1LjU4NSAxOC40MTUxIDM1NS41ODUgMTcuNzI1NSAzNTUuNjUxIDE2LjI0ODJDMzU1LjMyMSAxNi4zMTM3IDM1NC45NTcgMTYuMzEzNyAzNTQuNzI2IDE2LjMxMzdDMzU0LjQ2MSAxNi4zMTM3IDM1NC4wMzIgMTYuMzEzNyAzNTMuNzY4IDE2LjI0ODJDMzUzLjgzMyAxNy44MjM5IDM1My44NjcgMTguMjgzNCAzNTMuODY3IDE5LjQzMjVWMjMuNjM0N0MzNTMuODY3IDI0LjY4NSAzNTMuODMzIDI1LjMwODggMzUzLjc2OCAyNi44MTlDMzU0LjE2NCAyNi43MjA2IDM1NC40OTUgMjYuNzIwNiAzNTQuNzI2IDI2LjcyMDZDMzU0Ljk1NyAyNi43MjA2IDM1NS4zNTMgMjYuNzUzNSAzNTUuNjUxIDI2LjgxOUMzNTUuNTg1IDI1LjE0NDkgMzU1LjU4NSAyNC4xNTk3IDM1NS41ODUgMjMuNjM0N1YyMS40MzUyQzM1Ni44MDcgMjIuODc5NiAzNTguNjkgMjUuMjQzMyAzNTkuNzQ4IDI2LjgxOUMzNjAuMTMgMjYuNzU2MyAzNjAuNTE3IDI2LjcyMzQgMzYwLjkwNSAyNi43MjA2QzM2MS4yMDIgMjYuNzIwNiAzNjEuNjY1IDI2LjcyMDYgMzYyLjE2IDI2LjgxOVYyNi44MTlaTTM3Mi42MDEgNDAuMDE1OEMzNzIuNTY4IDM5Ljg1MTkgMzcyLjUzNSAzOS43MjA2IDM3Mi41MzUgMzkuNTIzNEMzNzIuNTM1IDM5LjM5MjggMzcyLjU2OCAzOS4yMjgxIDM3Mi42MDEgMzkuMDk2NEMzNzEuMjggMzkuMTI5NyAzNjguOTAxIDM5LjE5NTIgMzY4LjM3MiAzOS4xOTUyVjM0LjY2NDlDMzY5LjY5NCAzNC42NjQ5IDM3MC45ODIgMzQuNjY0OSAzNzIuMjcgMzQuNzk2M0MzNzIuMjM4IDM0LjYzMjQgMzcyLjIwNCAzNC40Njc3IDM3Mi4yMDQgMzQuMzM2NEMzNzIuMjA0IDM0LjIwNTggMzcyLjIwNCAzNC4wNDE5IDM3Mi4yNyAzMy44NDQ3QzM3MS4zNDYgMzMuOTQyOCAzNjkuMTk4IDMzLjk3NiAzNjguMzcyIDMzLjk3NlYzMC4yNjZDMzY5LjgyNiAzMC4yNjYgMzcwLjY4NSAzMC4yNjYgMzcxLjE4IDMwLjI5OTNMMzcyLjUwMiAzMC4zNjUxQzM3Mi40MzYgMzAuMTY3OSAzNzIuNDM2IDMwLjA2OTIgMzcyLjQzNiAyOS45MDUzQzM3Mi40MzYgMjkuNzQxNCAzNzIuNDM2IDI5LjcwODEgMzcyLjUwMiAyOS40NDU4QzM3MS40MTEgMjkuNDc4MyAzNjkuOTI1IDI5LjU0MzggMzY5LjI2NCAyOS41NDM4QzM2OC44MDIgMjkuNTQzOCAzNjcuMzQ4IDI5LjUxMTMgMzY2LjU4NyAyOS40NDU4QzM2Ni42NTQgMzAuMjY2NCAzNjYuNjg2IDMxLjYxMjMgMzY2LjY4NiAzMi41NjQyVjM2Ljg2NTFDMzY2LjY4NiAzNy40ODg1IDM2Ni42MiAzOC43MzU3IDM2Ni41ODcgNDAuMDE2MkMzNjcuNTEzIDM5Ljk1MDMgMzY4LjgwMiAzOS45NTAzIDM2OS4yNjQgMzkuOTUwM0MzNzAuMDI0IDM5Ljk1IDM3MS42NDMgMzkuOTUgMzcyLjYwMSA0MC4wMTU4Wk0zNjQuNjA1IDM5LjEyOTRDMzY0LjQ0IDM4LjgwMDggMzY0LjM0MSAzOC4zMDg4IDM2NC4yNzUgMzguMDQ2MUMzNjIuOTIgMzkuMTYxOSAzNjEuOTk1IDM5LjM5MjQgMzYwLjkzOCAzOS4zOTI0QzM1OC41OTIgMzkuMzkyNCAzNTcuMzM3IDM3LjI5MTMgMzU3LjMzNyAzNC42NjQ5QzM1Ny4zMzcgMzEuNzQzNiAzNTguNzU3IDMwLjAzNjIgMzYxLjE2OSAzMC4wMzYyQzM2Mi40MjUgMzAuMDM2MiAzNjMuNjE0IDMwLjU5NDUgMzY0LjE3NiAzMS4xNTI4QzM2NC4yMDggMzAuODg5OCAzNjQuMzA4IDMwLjM2NDggMzY0LjQ3MyAzMC4wNjg4QzM2My4zMTYgMjkuNTExMyAzNjIuMjU5IDI5LjM0NjYgMzYxLjEwMiAyOS4zNDY2QzM1Ny4yMzcgMjkuMzQ2NiAzNTUuNDUzIDMxLjc0MzYgMzU1LjQ1MyAzNC44Mjg4QzM1NS40NTMgMzguMzA5MSAzNTcuNzk4IDQwLjE0NzEgMzYwLjczOSA0MC4xNDcxQzM2Mi40MjUgNDAuMTQ3MSAzNjMuODEyIDM5LjYyMjIgMzY0LjYwNSAzOS4xMjk0VjM5LjEyOTRaTTM0Mi4zMDMgMjYuODE5QzM0MC41MTkgMjMuNDA0OSAzMzguOCAxOS4xMzczIDMzNy41NzggMTYuMTE2OUgzMzcuMzhDMzM2LjU4NyAxOC4wMjA3IDMzNS4xMzMgMjEuMjcwOSAzMzQuNzM3IDIyLjE4OTlDMzM0LjI3NCAyMy4zMDYxIDMzMy4yNSAyNS41MDU2IDMzMi41ODkgMjYuODE4NkMzMzIuODAzIDI2Ljc1MzggMzMzLjAyNiAyNi43MjA2IDMzMy4yNSAyNi43MjAyQzMzMy40NDggMjYuNzIwMiAzMzMuNjEzIDI2Ljc1MzEgMzMzLjg0NSAyNi44MTg2QzMzNC4xNzUgMjUuOTMyMiAzMzQuNjM4IDI0LjgxNiAzMzUuMTMzIDIzLjYzNDNDMzM1Ljc5NCAyMy42MDE0IDMzNi4zODkgMjMuNTY4OCAzMzYuOTg0IDIzLjU2ODhDMzM3LjYxMiAyMy41Njg4IDMzOC4yNzIgMjMuNjAxNCAzMzguOTMzIDIzLjYzNDNMMzM5LjU5NCAyNS4yMUwzNDAuMjU1IDI2LjgxODZDMzQwLjcxNyAyNi43MjAyIDM0MS4wOCAyNi43MjAyIDM0MS4zMTIgMjYuNzIwMkMzNDEuNjA5IDI2LjcyMDYgMzQxLjg3MyAyNi43MjA2IDM0Mi4zMDMgMjYuODE5VjI2LjgxOVpNMzUzLjYzNiAyOS40NDU0QzM1My40MzggMjkuNTExMyAzNTMuMjczIDI5LjU0MzUgMzUzLjEwNyAyOS41NDM1QzM1Mi45MDkgMjkuNTQzNSAzNTIuNzQ0IDI5LjUxMDkgMzUyLjU0NiAyOS40NDU0QzM1Mi42NDQgMzAuNzU4NCAzNTIuNjc4IDMyLjA3MTQgMzUyLjY3OCAzMy4zNTE5VjM2LjczMzRDMzUyLjE0OSAzNi4yNzM2IDM1MC44NiAzNS4wOTE5IDM0OS4zNzQgMzMuNzEzQzM0Ny44NiAzMi4zMDc0IDM0Ni4zOTQgMzAuODUxMSAzNDQuOTc5IDI5LjM0NjZIMzQ0Ljc0OEMzNDQuNzgxIDMwLjgyNDMgMzQ0LjgxNCAzMi40IDM0NC44MTQgMzMuODExNFYzNS44Nzk5QzM0NC44MTQgMzcuNjUyOCAzNDQuODE0IDM4LjYwNDcgMzQ0LjcxNSA0MC4wMTYyQzM0NC45OCAzOS45NTAzIDM0NS4xMTIgMzkuOTUwMyAzNDUuMzEgMzkuOTUwM0MzNDUuNDQyIDM5Ljk1MDMgMzQ1LjU3NSAzOS45NTAzIDM0NS44MDYgNDAuMDE2MkMzNDUuNzQgMzguNjcwNiAzNDUuNzA3IDM2LjQ3MDggMzQ1LjcwNyAzNS44Nzk5VjMyLjU5NjhDMzQ4LjE4NSAzNC44NjI1IDM1MS4yMjQgMzcuODgyNiAzNTMuNDcxIDQwLjE0NzVIMzUzLjYwM0MzNTMuNjAzIDM4LjkzMjkgMzUzLjUzNyAzNy43MTc5IDM1My41MzcgMzYuNTA0VjM0LjYzMjdDMzUzLjUzNiAzMi40MzI1IDM1My41MzYgMzEuMzQ5MyAzNTMuNjM2IDI5LjQ0NTRaTTM0Mi41NjcgNDAuMDE1OEMzNDIuNTM0IDM5Ljg1MTkgMzQyLjUwMSAzOS43MjA2IDM0Mi41MDEgMzkuNTIzNEMzNDIuNTAxIDM5LjM5MjggMzQyLjUzNCAzOS4yMjgxIDM0Mi41NjcgMzkuMDk2NEMzNDEuMjQ2IDM5LjEyOTcgMzM4Ljg2NyAzOS4xOTUyIDMzOC4zNzEgMzkuMTk1MlYzNC42NjQ5QzMzOS42NiAzNC42NjQ5IDM0MC45NDggMzQuNjY0OSAzNDIuMjM3IDM0Ljc5NjNDMzQyLjIwNCAzNC42MzI0IDM0Mi4xNzEgMzQuNDY3NyAzNDIuMTcxIDM0LjMzNjRDMzQyLjE3MSAzNC4yMDU4IDM0Mi4xNzEgMzQuMDQxOSAzNDIuMjM3IDMzLjg0NDdDMzQxLjMxMiAzMy45NDI4IDMzOS4xOTcgMzMuOTc2IDMzOC4zNzEgMzMuOTc2VjMwLjI2NkMzMzkuNzkyIDMwLjI2NiAzNDAuNjUxIDMwLjI2NiAzNDEuMTc5IDMwLjI5OTNMMzQyLjQ2OCAzMC4zNjUxQzM0Mi40MzUgMzAuMTY3OSAzNDIuNDM1IDMwLjA2OTIgMzQyLjQzNSAyOS45MDUzQzM0Mi40MzUgMjkuNzQxNCAzNDIuNDM1IDI5LjY3NTUgMzQyLjQ2OCAyOS40NDU4QzM0MS4zNzggMjkuNDc4MyAzMzkuODkxIDI5LjU0MzggMzM5LjIzIDI5LjU0MzhDMzM4Ljc2NyAyOS41NDM4IDMzNy4zMTQgMjkuNTExMyAzMzYuNTU0IDI5LjQ0NThDMzM2LjYyIDMwLjI2NjQgMzM2LjY1MyAzMS42MTIzIDMzNi42NTMgMzIuNTY0MlYzNi44NjUxQzMzNi42NTMgMzcuNDg4NSAzMzYuNTg3IDM4LjczNTcgMzM2LjU1NCA0MC4wMTYyQzMzNy41MTIgMzkuOTUwMyAzMzguNzY3IDM5Ljk1MDMgMzM5LjIzIDM5Ljk1MDNDMzM5Ljk5IDM5Ljk1IDM0MS42NDIgMzkuOTUgMzQyLjU2NyA0MC4wMTU4VjQwLjAxNThaTTMzMS4yMDEgMjYuODE5QzMzMC42NzMgMjMuMjQwNiAzMzAuMjEgMTkuNDk4NCAzMjkuODQ3IDE2LjExNjlDMzI5Ljc0OCAxNi4xNDk4IDMyOS43MTQgMTYuMTQ5OCAzMjkuNjQ5IDE2LjExNjlDMzI4Ljk1NSAxNy4zMzE1IDMyOC4xNjIgMTguNjQ0NSAzMjcuNTY3IDE5LjU2MzlDMzI3LjAwNiAyMC40NTAzIDMyNi4zNDUgMjEuNTAwNyAzMjUuNTg1IDIyLjYxNjlDMzIzLjk5OSAyMC41ODE3IDMyMi4zNDcgMTguMDIxMSAzMjEuMjU2IDE2LjExNjlDMzIxLjE5IDE2LjE0OTggMzIxLjE1NyAxNi4xMTY5IDMyMS4wOTEgMTYuMTE2OUMzMjAuNzI4IDE5LjQ5OCAzMjAuMjMyIDIzLjI3MzIgMzE5LjczNiAyNi44MTlDMzIwLjAwMSAyNi43MjA2IDMyMC4xNjYgMjYuNzIwNiAzMjAuMjk4IDI2LjcyMDZDMzIwLjQ5NiAyNi43MjA2IDMyMC42MjggMjYuNzUzNSAzMjAuODU5IDI2LjgxOUMzMjAuOTkyIDI0LjQ1NTMgMzIxLjI1NiAyMi4xMjQ0IDMyMS41NTMgMTkuNjYyM0MzMjIuODQyIDIxLjUzMzYgMzIzLjk2NSAyMy4xNDIyIDMyNS4yMjEgMjQuODQ5M0MzMjYuMjc4IDIzLjIwNzcgMzI3LjM2OCAyMS40MzQ4IDMyOC41NTggMTkuNjI5NEMzMjguODg4IDIyLjE1NyAzMjkuMTg2IDI0LjQ1NTMgMzI5LjM1MSAyNi44MTlDMzI5Ljc4IDI2LjcyMDYgMzMwLjA3OCAyNi43MjA2IDMzMC4yNzYgMjYuNzIwNkMzMzAuNTQgMjYuNzIwNiAzMzAuODA1IDI2LjcyMDYgMzMxLjIwMSAyNi44MTlWMjYuODE5Wk0zMzQuOTY4IDMyLjIwMjhDMzM0Ljk2OCAzMC4yOTg5IDMzMy40NDggMjkuNDQ1NCAzMzEuNTk4IDI5LjQ0NTRDMzMwLjc3MiAyOS40NDU0IDMyOS44OCAyOS41NDM1IDMyOS4yNTIgMjkuNTQzNUMzMjkuMDIxIDI5LjU0MzUgMzI4LjUyNSAyOS41NDM1IDMyNy45OTcgMjkuNDc3NkMzMjguMDMgMzAuNTI4MyAzMjguMDk2IDMxLjQxNDggMzI4LjA5NiAzMi40MzIyVjM2LjkyOTVDMzI4LjA5NiAzNy45MTQ4IDMyOC4wMyAzOC45OTggMzI3Ljk5NyA0MC4wMTU0QzMyOC40MjYgMzkuOTQ5NiAzMjguNzI0IDM5Ljk0OTYgMzI4LjkyMiAzOS45NDk2QzMyOS4xNTMgMzkuOTQ5NiAzMjkuNDg0IDM5Ljk0OTYgMzI5Ljg4IDQwLjAxNTRDMzI5LjgxNSAzOS4wMzE5IDMyOS43ODIgMzguMDQ2NSAzMjkuNzgxIDM3LjA2MDlWMzUuNDJDMzMwLjE0NSAzNS40NTI2IDMzMC41MDggMzUuNDUyNiAzMzAuOTA1IDM1LjQ1MjZDMzMyLjgyIDM1LjQ1MjYgMzM0Ljk2OCAzNC43MzA0IDMzNC45NjggMzIuMjAyOFYzMi4yMDI4Wk0zMjYuMDE0IDM2Ljg5NzNDMzI2LjAxNCAzNS4yNTU4IDMyNC45MjQgMzQuNTMzNiAzMjMuMDQgMzMuNzQ1NkMzMjEuNjg2IDMzLjE4OCAzMjAuOTkyIDMyLjY5NTYgMzIwLjk5MiAzMS42NDQ1QzMyMC45OTIgMzAuNjYgMzIxLjc1MiAzMC4wMzYyIDMyMy4wMDggMzAuMDM2MkMzMjMuODM0IDMwLjAzNjIgMzI0LjU2MSAzMC4zMzE1IDMyNS4yMjIgMzAuODU2OEMzMjUuMjg3IDMwLjQ5NTcgMzI1LjQ1MyAzMC4xMzQ3IDMyNS42NTEgMjkuODM5NEMzMjQuODU4IDI5LjQ3ODMgMzIzLjk5OSAyOS4zNDcgMzIzLjA3NCAyOS4zNDdDMzIwLjM2NSAyOS4zNDcgMzE5LjUwNSAzMC44OTA1IDMxOS41MDUgMzIuMjAzNUMzMTkuNTA1IDMzLjgxMTggMzIwLjI5OSAzNC41NjcyIDMyMi4zNDcgMzUuMzU1M0MzMjMuNjM2IDM1Ljg0NyAzMjQuMjk2IDM2LjQ3MTEgMzI0LjI5NiAzNy41NTQ0QzMyNC4yOTYgMzguNzAzNSAzMjMuNDM3IDM5LjQyNTcgMzIyLjI0OCAzOS40MjU3QzMyMS41NTQgMzkuNDI1NyAzMjAuMzY1IDM5LjA2NDYgMzE5LjUzOSAzOC4zMDk5QzMxOS41MDUgMzguNzM2MSAzMTkuNTA1IDM5LjEzMDQgMzE5LjM3MyAzOS40OTE1QzMxOS45MDIgMzkuNzU0NiAzMjEuMTI1IDQwLjE0NzkgMzIyLjIxNSA0MC4xNDc5QzMyNC45OSA0MC4xNDcxIDMyNi4wMTQgMzguNDM5NyAzMjYuMDE0IDM2Ljg5NzNWMzYuODk3M1pNMzc4LjE1MiAxNy45ODgyQzM3OC4xNTIgMTguOTczIDM3Ny40NTggMTkuNjYyMyAzNzYuNzY0IDIwLjIyMDJDMzc2LjMwMSAxOS41NjM5IDM3NS43NCAxOC42NzcxIDM3NS43NCAxNy45ODgyQzM3NS43NCAxNy4yMzMxIDM3Ni4yNjggMTYuODA2MSAzNzYuOTk1IDE2LjgwNjFDMzc3Ljk4NyAxNi44MDY1IDM3OC4xNTIgMTcuNjkyNiAzNzguMTUyIDE3Ljk4ODJWMTcuOTg4MlpNMzc4LjQ4MiAyNS4wMTMyQzM3OC4xMTkgMjUuMzQxNyAzNzcuMjYgMjUuOTY1NSAzNzYuNTMzIDI1Ljk2NTVDMzc1LjU3NCAyNS45NjU1IDM3NC40MTggMjUuMjc1OSAzNzQuNDE4IDIzLjc5ODZDMzc0LjQxOCAyMi40ODU1IDM3NS4yNzcgMjEuODk0NyAzNzUuODA2IDIxLjU2NjVDMzc3LjAyOCAyMy4yNDA2IDM3Ny4wOTUgMjMuMzM5MSAzNzguNDgyIDI1LjAxMzJaTTM3OS44MDQgMzIuMjAyOEMzNzkuODA0IDMzLjI1MzUgMzc5LjI3NSAzNC40MDI2IDM3Ny43NTUgMzQuNDAyNkMzNzcuMzI2IDM0LjQwMjYgMzc2LjkyOSAzNC40MDI2IDM3Ni41MzMgMzQuMzY5M1YzMC4yNjU2QzM3Ni45MjkgMzAuMTY3NiAzNzcuNDI1IDMwLjEzNDMgMzc3LjcyMiAzMC4xMzQzQzM3OS4wMTEgMzAuMTM0MyAzNzkuODA0IDMwLjg4OTggMzc5LjgwNCAzMi4yMDI4Wk0zMzguNjAyIDIyLjgxNDFDMzM3LjkwOSAyMi44NDY2IDMzNy41NDUgMjIuODQ2NiAzMzcuMDgyIDIyLjg0NjZDMzM2LjUyMSAyMi44NDY2IDMzNi4xOSAyMi44NDY2IDMzNS40NjMgMjIuODE0MUwzMzcuMDgyIDE5LjAwNkwzMzguNjAyIDIyLjgxNDFaTTMzMy4xNTEgMzIuMzAwOEMzMzMuMTUxIDMzLjgxMTEgMzMyLjI1OCAzNC43OTU5IDMzMC44MDUgMzQuNzk1OUMzMzAuNTA3IDM0Ljc5NTkgMzMwLjE3NyAzNC43OTU5IDMyOS43OCAzNC43MzAxVjMwLjIzMjdDMzMwLjI0MyAzMC4xNjY5IDMzMC42MzkgMzAuMTMzOSAzMzEuMDM2IDMwLjEzMzlDMzMyLjQyNCAzMC4xMzQzIDMzMy4xNTEgMzEuMDIxMSAzMzMuMTUxIDMyLjMwMDhaTTM2OS41MjggMjMuNjY3NkMzNjkuNTI4IDIyLjAyNiAzNjguNDM4IDIxLjMwMzkgMzY2LjU1NSAyMC41MTYyQzM2NS4yIDE5Ljk1ODMgMzY0LjUwNiAxOS40OTg4IDM2NC41MDYgMTguNDE1MUMzNjQuNTA2IDE3LjQ2MzIgMzY1LjI2NiAxNi44MDY1IDM2Ni41MjEgMTYuODA2NUMzNjcuMzQ4IDE2LjgwNjUgMzY4LjA3NSAxNy4xMDE3IDM2OC43MzUgMTcuNjI3NUMzNjguODAyIDE3LjI2NjQgMzY4Ljk2NyAxNi45MDQ5IDM2OS4xMzEgMTYuNjQyMkMzNjguMzcyIDE2LjI4MTEgMzY3LjQ3OSAxNi4xMTcyIDM2Ni41ODcgMTYuMTE3MkMzNjMuOTQ0IDE2LjExNzIgMzYyLjk4NiAxNy42NiAzNjIuOTg2IDE5LjAwNkMzNjIuOTg2IDIwLjU4MTcgMzYzLjgxMiAyMS4zMzY4IDM2NS44NjEgMjIuMTI0NEMzNjcuMTQ5IDIyLjYxNjkgMzY3LjgxIDIzLjI0MDYgMzY3LjgxIDI0LjM1NjhDMzY3LjgxIDI1LjQ3MyAzNjYuOTUxIDI2LjE5NTIgMzY1Ljc2MiAyNi4xOTUyQzM2NS4wMzUgMjYuMTk1MiAzNjMuODc5IDI1LjgzNDEgMzYzLjA1MiAyNS4xMTE5QzM2My4wMiAyNS41Mzg5IDM2Mi45ODYgMjUuOSAzNjIuODg3IDI2LjI2MTFDMzYzLjM4MyAyNi41MjM4IDM2NC42MDYgMjYuOTE3NCAzNjUuNzI5IDI2LjkxNzRDMzY4LjUwNCAyNi45MTc0IDM2OS41MjggMjUuMjQzMyAzNjkuNTI4IDIzLjY2NzZWMjMuNjY3NloiIGZpbGw9IiMwMzY1NTUiLz4NCjxwYXRoIGQ9Ik02NDAuNDE2IDIwLjU1NzNDNjM4LjY3MSAxOS44MzU0IDYzNy42MzEgMTkuNTU1MSA2MzYuNTk4IDE5LjU1NTFDNjM1LjUxNCAxOS41NTUxIDYzNC44MTkgMTkuOTE3IDYzNC44MTkgMjAuNDc2NUM2MzQuODE5IDIyLjE2NDUgNjQwLjk2MiAyMS42ODkzIDY0MC45NjIgMjUuNTkzNkM2NDAuOTYyIDI3Ljc0NjQgNjM5LjAyNCAyOC45OTc0IDYzNi4zMzIgMjguOTk3NEM2MzQuMjIgMjguOTk3NCA2MzMuMTggMjguNDg4IDYzMS45ODMgMjcuOTExNlYyNS40OTYyQzYzMy43MSAyNi41NjM1IDYzNC43NjggMjYuOTQwMSA2MzYuMTAxIDI2Ljk0MDFDNjM3LjI1NiAyNi45NDAxIDYzNy44NzkgMjYuNTYzNSA2MzcuODc5IDI1LjkwNjNDNjM3Ljg3OSAyNC4wNjg1IDYzMS43MzcgMjQuNzQxNSA2MzEuNzM3IDIwLjcyMTNDNjMxLjczNyAxOC43ODI3IDYzMy41MzQgMTcuNDk5IDYzNi4zMzIgMTcuNDk5QzYzNy42ODIgMTcuNDk5IDYzOC45MDEgMTcuNzYzNSA2NDAuNDE2IDE4LjM3MDdWMjAuNTU3M1pNNjQ5LjAxNiAyOC40ODQxQzY0Ny45OTIgMjguODMwNiA2NDcuMTI2IDI4Ljk5NTQgNjQ2LjI2MiAyOC45OTU0QzY0My40MDIgMjguOTk1NCA2NDEuNTUyIDI3LjQ0MjIgNjQxLjU1MiAyNS4wNzkyQzY0MS41NTIgMjIuNzU5NCA2NDMuNDczIDIxLjEyMDIgNjQ2LjE1NiAyMS4xMjAyQzY0Ni45ODUgMjEuMTIwMiA2NDguMDQ0IDIxLjMxODIgNjQ4Ljg5MSAyMS42MTIzVjIzLjM4ODFDNjQ4LjIyMSAyMy4wNTYyIDY0Ny40NDQgMjIuODc0MSA2NDYuODA5IDIyLjg3NDFDNjQ1LjI3MyAyMi44NzQxIDY0NC4yODYgMjMuNzM0MyA2NDQuMjg2IDI1LjA2MTlDNjQ0LjI4NiAyNi40MDggNjQ1LjI1NiAyNy4yOTQgNjQ2LjcyIDI3LjI5NEM2NDcuMzM3IDI3LjI5NCA2NDcuODg2IDI3LjE2MjMgNjQ5LjAxNiAyNi43NjhMNjQ5LjAxNiAyOC40ODQxWk02NzEuMzIgMjQuMjA5QzY3MS40MjUgMjMuMTU0OCA2NzIuMDgxIDIyLjU0NTcgNjczLjA4NyAyMi41NDU3QzY3NC4wNzYgMjIuNTQ1NyA2NzQuNzQ2IDIzLjE3MjEgNjc0Ljg1MiAyNC4yMDlINjcxLjMyWk02NzIuOTEgMjEuMTIyOUM2NzAuNCAyMS4xMjI5IDY2OC42MTQgMjIuNzc1NSA2NjguNjE0IDI1LjEwMTJDNjY4LjYxNCAyNy40NDQxIDY3MC40NzEgMjguOTk1NCA2NzMuMzM1IDI4Ljk5NTRDNjczLjk3IDI4Ljk5NTQgNjc1LjUwNCAyOC45OTU0IDY3Ni45NjYgMjcuOTg3VjI2LjUwNDJDNjc1Ljc2OSAyNy4yOTkzIDY3NC45NzcgMjcuNTczMSA2NzMuOTU1IDI3LjU3MzFDNjcyLjM0MSAyNy41NzMxIDY3MS4zNTQgMjYuNzk0OSA2NzEuMjY1IDI1LjQ2NjZINjc3LjExQzY3Ny4yMzIgMjIuNjkzOSA2NzUuMjc5IDIxLjEyMjkgNjcyLjkxIDIxLjEyMjlWMjEuMTIyOVpNNjc4LjA5OSAyOC44NTcySDY4MC42NTRWMjEuMjYyN0g2NzguMDk5VjI4Ljg1NzJaTTY4Ny43NjcgMjYuNzgxNUM2ODcuMjM0IDI3LjIyODEgNjg2Ljc5MiAyNy40MDcyIDY4Ni4yNDYgMjcuNDA3MkM2ODUuMDQzIDI3LjQwNzIgNjg0LjI4MSAyNi40ODM4IDY4NC4yODEgMjUuMTAwNEM2ODQuMjgxIDIzLjU4NDEgNjg1LjA0MyAyMi43MTAxIDY4Ni4zMzEgMjIuNzEwMUM2ODYuNzkyIDIyLjcxMDEgNjg3LjM5NCAyMi45MDggNjg3Ljc2NyAyMy4xNTU5VjI2Ljc4MTVaTTY4Ny43NjcgMTcuNjM5MVYyMS41OTU4QzY4Ny4wNzYgMjEuMjg0NyA2ODYuMzg4IDIxLjEyMDIgNjg1LjY0NCAyMS4xMjAyQzY4My4zMTMgMjEuMTIwMiA2ODEuNyAyMi43MjY2IDY4MS43IDI1LjA1MDdDNjgxLjcgMjcuMzI0OCA2ODMuMzEzIDI4Ljk5NzQgNjg1LjUgMjguOTk3NEM2ODYuMzY3IDI4Ljk5NzQgNjg3LjAzNyAyOC43ODU2IDY4Ny43NjcgMjguMjQzNVYyOC44NTQ5SDY5MC4zMjJWMTcuNjM5MUg2ODcuNzY3Wk02OTQuMTA1IDI0LjIwOUM2OTQuMjExIDIzLjE1NDggNjk0Ljg2NCAyMi41NDU3IDY5NS44NjggMjIuNTQ1N0M2OTYuODU4IDIyLjU0NTcgNjk3LjUzNSAyMy4xNzIxIDY5Ny42NDEgMjQuMjA5SDY5NC4xMDVaTTY5NS42OTQgMjEuMTIyOUM2OTMuMTg0IDIxLjEyMjkgNjkxLjQgMjIuNzc1NSA2OTEuNCAyNS4xMDEyQzY5MS40IDI3LjQ0NDEgNjkzLjI1OSAyOC45OTU0IDY5Ni4xMTkgMjguOTk1NEM2OTYuNzUzIDI4Ljk5NTQgNjk4LjI5IDI4Ljk5NTQgNjk5Ljc1NSAyNy45ODdWMjYuNTA0MkM2OTguNTU3IDI3LjI5OTMgNjk3Ljc2MyAyNy41NzMxIDY5Ni43MzYgMjcuNTczMUM2OTUuMTMxIDI3LjU3MzEgNjk0LjE0IDI2Ljc5NDkgNjk0LjA1MSAyNS40NjY2SDY5OS44OTRDNzAwLjAxNSAyMi42OTM5IDY5OC4wNjEgMjEuMTIyOSA2OTUuNjk0IDIxLjEyMjkiIGZpbGw9IiMwMDlFNEQiLz4NCjxwYXRoIGQ9Ik03MDMuNzIxIDIzLjQzNjhINzAzLjc1OEM3MDQuNTE3IDIxLjg1NjIgNzA1LjM2NiAyMS4xMTUgNzA2LjM1MiAyMS4xMTVDNzA2Ljg2MiAyMS4xMTUgNzA3LjMwMyAyMS4yOTY0IDcwOC4wNDQgMjEuODA3Nkw3MDcuMzQxIDIzLjkxMzNDNzA2LjY3IDIzLjUxODYgNzA2LjIyOSAyMy4zNTM1IDcwNS44MjMgMjMuMzUzNUM3MDQuODg2IDIzLjM1MzUgNzA0LjI4NiAyNC4xNzc1IDcwMy43MjEgMjUuNTcwNFYyOC44NDY2SDcwMS4xNjJWMjEuMjU0MUg3MDMuNzIxVjIzLjQzNjhaTTY4MC43NzUgMTguMDY3NEM2ODEuMDE1IDE4LjY1NzUgNjgwLjU4MyAxOS40ODA1IDY3OS44MTQgMTkuOTA0QzY3OS4wNDEgMjAuMzI3MSA2NzguMjI0IDIwLjE5MjggNjc3Ljk4NiAxOS42MDI3QzY3Ny43NDMgMTkuMDExNyA2NzguMTczIDE4LjE4NzcgNjc4Ljk0NSAxNy43NjY2QzY3OS43MTYgMTcuMzQxMSA2ODAuNTMzIDE3LjQ3NTkgNjgwLjc3NSAxOC4wNjc0WiIgZmlsbD0iIzAwOUU0RCIvPg0KPHBhdGggZD0iTTY1OC4yMiAyNC4wMjMxQzY1OC4yMiAyMS45NjUxIDY1Ni43MTkgMjEuMTIyNiA2NTUuMjM5IDIxLjEyMjZDNjU0LjIzMiAyMS4xMjI2IDY1My40MDQgMjEuNTE4NCA2NTIuNjY0IDIyLjM5MjFINjUyLjYyOVYxNy42MzkySDY1MC4wNzFWMjguODM1M0g2NTIuNjI5VjI0LjAyMzFDNjUzLjIyOCAyMy4yMTYxIDY1My43MzggMjIuODcxMSA2NTQuMzM4IDIyLjg3MTFDNjU1LjEzNCAyMi44NzExIDY1NS42NjIgMjMuMzk4NiA2NTUuNjYyIDI0LjUzMjlWMjcuMjAwOEM2NTYuNTIgMjYuNzg5NiA2NTcuMzkzIDI2LjUzNzQgNjU4LjIyIDI2LjQ0MzhWMjQuMDIzMVpNNjY0LjYzNiAyMS4xMTk5QzY2My41OTQgMjEuMTE5OSA2NjIuNzk5IDIxLjQ4MTEgNjYxLjk4NCAyMi4zNDkzVjIxLjI2MjRINjU5LjQyOFYyNi40MjM0QzY2MC4zMTMgMjYuNTA1OCA2NjEuNDQzIDI2Ljg4NDcgNjYxLjk4NCAyNy41MTA0VjIzLjk2MzRDNjYyLjY1NyAyMy4wMjMyIDY2My4xMzQgMjIuNzA5NyA2NjMuNzcgMjIuNzA5N0M2NjQuNDk0IDIyLjcwOTcgNjY1LjA0NSAyMy4xNTU2IDY2NS4wNDUgMjQuMjI2NFYyOC44MzcySDY2Ny42MDJWMjQuMDI4OUM2NjcuNjAyIDIxLjc5MjYgNjY1LjkwOCAyMS4xMTk5IDY2NC42MzYgMjEuMTE5OVYyMS4xMTk5Wk02NjkuMDE1IDMxLjAxODFINjY2LjA0M1YzMi45ODY0SDY2OC45MDlWMzMuODMxMkg2NjYuMDQzVjM1Ljg2MTlINjY5LjEwM1YzNi43MDU1SDY2NS4wNDZWMzAuMTc1Mkg2NjkuMDE1TDY2OS4wMTUgMzEuMDE4MVpNNjcxLjQ0MiAzNi43MDkzSDY3Mi4zNTJWMzAuMTczM0g2NzEuNDQyVjM2LjcwOTNaTTY3Ni44NTkgMzMuMDQ4NEM2NzcuNTA0IDMzLjA0ODQgNjc3LjkwNCAzMy40NjMxIDY3Ny45MzUgMzQuMTE0Mkg2NzUuNjE2QzY3NS43NDIgMzMuNDM0MiA2NzYuMTYxIDMzLjA0ODQgNjc2Ljg1OSAzMy4wNDg0Wk02NzUuNiAzNC42ODFINjc4Ljg0MkM2NzguODQyIDMzLjA4NjkgNjc4LjA2MiAzMi4zMTggNjc2LjgzOCAzMi4zMThDNjc1LjU2OSAzMi4zMTggNjc0LjY4OCAzMy4xOTI0IDY3NC42ODggMzQuNDk2OUM2NzQuNjg4IDM1LjY4OSA2NzUuNDg0IDM2Ljc4OTggNjc2LjkxNyAzNi43ODk4QzY3Ny42OTggMzYuNzg5OCA2NzguMjAzIDM2LjYyODEgNjc4Ljc2MyAzNi4yODJWMzUuNDU2QzY3OC4yMjIgMzUuNzg1NiA2NzcuNjk4IDM1Ljk3NTggNjc3LjE0NyAzNS45NzU4QzY3Ni4yNjUgMzUuOTc1OCA2NzUuNzQyIDM1LjUzNSA2NzUuNiAzNC42ODA2VjM0LjY4MVpNNjg0Ljc4NiAzMy41MzA5QzY4NC4yNjMgMzMuMTk2NiA2ODMuOTE0IDMzLjA5ODUgNjgzLjUxNSAzMy4wOTg1QzY4Mi42ODIgMzMuMDk4NSA2ODIuMTA1IDMzLjY5NDUgNjgyLjEwNSAzNC41NjdDNjgyLjEwNSAzNS40NTYgNjgyLjcxOSAzNS45OTE2IDY4My42NjggMzUuOTkxNkM2ODQuMDU4IDM1Ljk5MTYgNjg0LjQzIDM1Ljg5NzMgNjg0Ljg4OCAzNS43MDU5VjM2LjU0MjZDNjg0LjU4MiAzNi42Nzc0IDY4My45OTcgMzYuNzg5OCA2ODMuNTE1IDM2Ljc4OThDNjgyLjEzNiAzNi43ODk4IDY4MS4xOCAzNS45MDYyIDY4MS4xOCAzNC42NDMyQzY4MS4xOCAzMy4yMTc4IDY4Mi4wNTQgMzIuMzE4IDY4My40NTMgMzIuMzE4QzY4My45ODcgMzIuMzE4IDY4NC4zNDYgMzIuNDMzOSA2ODQuNzg3IDMyLjYxNDVMNjg0Ljc4NiAzMy41MzA5Wk02ODguOTM0IDMyLjQwMDRINjkwLjM5NVYzMy4xNjUxSDY4OC45MzRWMzUuMzc1MkM2ODguOTM0IDM1Ljg4MTEgNjg5LjMyNyAzNi4wMjc0IDY4OS41OTMgMzYuMDI3NEM2ODkuOTIyIDM2LjAyNzQgNjkwLjI2MiAzNS45MiA2OTAuNjMgMzUuNzA3OVYzNi41MDM3QzY5MC4zMSAzNi42Njc4IDY4OS44MiAzNi43ODk4IDY4OS41MTkgMzYuNzg5OEM2ODguNTI4IDM2Ljc4OTggNjg4LjAyNyAzNi4yMTYxIDY4OC4wMjcgMzUuNDM5MVYzMy4xNjUxSDY4Ny4yMjRWMzMuMDcwM0w2ODguOTM0IDMxLjUxMDJWMzIuNDAwNFpNNjkzLjg3NiAzMi40MDA0VjMzLjM5NjlINjkzLjg5NUM2OTQuMzU5IDMyLjYzNDUgNjk0LjggMzIuMzE4IDY5NS4yMyAzMi4zMThDNjk1LjYwMSAzMi4zMTggNjk1Ljk0NyAzMi40ODAxIDY5Ni4zMjkgMzIuODE2Nkw2OTUuODQ3IDMzLjU2NDRDNjk1LjU3IDMzLjMwOTEgNjk1LjIxMSAzMy4xMzMxIDY5NC45OTUgMzMuMTMzMUM2OTQuMzY4IDMzLjEzMzEgNjkzLjg3NiAzMy43MjY4IDY5My44NzYgMzQuNDYyNlYzNi43MDkzSDY5Mi45NjdWMzIuNDAwNEg2OTMuODc2Wk03MDUuNjU3IDMzLjUzMDlDNzA1LjEzMSAzMy4xOTY2IDcwNC43ODIgMzMuMDk4NSA3MDQuMzgxIDMzLjA5ODVDNzAzLjU0OSAzMy4wOTg1IDcwMi45NzcgMzMuNjk0NSA3MDIuOTc3IDM0LjU2N0M3MDIuOTc3IDM1LjQ1NiA3MDMuNTkyIDM1Ljk5MTYgNzA0LjUzNSAzNS45OTE2QzcwNC45MjUgMzUuOTkxNiA3MDUuMjk1IDM1Ljg5NzMgNzA1Ljc2IDM1LjcwNTlWMzYuNTQyNkM3MDUuNDQ3IDM2LjY3NzQgNzA0Ljg2MiAzNi43ODk4IDcwNC4zOCAzNi43ODk4QzcwMy4wMDQgMzYuNzg5OCA3MDIuMDQ0IDM1LjkwNjIgNzAyLjA0NCAzNC42NDMyQzcwMi4wNDQgMzMuMjE3OCA3MDIuOTIyIDMyLjMxOCA3MDQuMzIgMzIuMzE4QzcwNC44NTUgMzIuMzE4IDcwNS4yMTIgMzIuNDMzOSA3MDUuNjU3IDMyLjYxNDVMNzA1LjY1NyAzMy41MzA5Wk02OTguNzQyIDM2LjcwOTNINjk5LjY1MlYzMi40MDA4SDY5OC43NDJWMzYuNzA5M1oiIGZpbGw9IiMwMDlFNEQiLz4NCjxwYXRoIGQ9Ik02OTkuNjg0IDMwLjg1MjVDNjk5Ljc3MyAzMS4wNjA0IDY5OS42MTggMzEuMzU0NCA2OTkuMzQ0IDMxLjUwNDFDNjk5LjA2OCAzMS42NTQzIDY5OC43NzYgMzEuNjA2MiA2OTguNjkzIDMxLjM5NzhDNjk4LjYxIDMxLjE4NzQgNjk4Ljc2MSAzMC44OTU4IDY5OS4wMzggMzAuNzQ1NkM2OTkuMzExIDMwLjU5MzUgNjk5LjYwMSAzMC42NDIxIDY5OS42ODQgMzAuODUyNVYzMC44NTI1Wk02NTguOTQgMzEuMjAwOUM2NTguNzc5IDMxLjIwMDkgNjU4LjcxMSAzMS4yMjU1IDY1OC42NDYgMzEuMjkzOEM2NTguNjIgMzEuMzIwMyA2NTguNjEgMzEuMzQ3MiA2NTguNiAzMS40MDExTDY1Ny43ODQgMzQuMjg3QzY1Ny41OTMgMzUuMjk5MiA2NTYuMjU5IDM2LjMwOTkgNjU0LjUyMSAzNi4zMDk5SDY1Mi4xMDRMNjUyLjUyMyAzNC44MjdINjU0LjA3NkM2NTQuMjM0IDM0LjgyNyA2NTQuMzU4IDM0Ljc3MjEgNjU0LjQ2MiAzNC42NjQzQzY1NC41IDM0LjYyMjUgNjU0LjU1IDM0LjU1NyA2NTQuNTU2IDM0LjQ4OTZMNjU1LjIwMSAzMS45NjgxQzY1NS4zOTEgMzAuOTU1NSA2NTYuNTM4IDI5LjgzNjkgNjU4LjI3NiAyOS44MzY5SDY2MC43NTFMNjYwLjQzNSAzMS4yMDA5SDY1OC45NFpNNjU5LjQ5NyAzMi45NTk2TDY1OS43NzMgMzIuMDI1OUg2NjIuMjg4QzY2Mi41OTggMzAuNjcyIDY2Mi4zNTQgMjkuNDE3NyA2NjEuNDczIDI4LjU5NjFDNjU5LjY4OSAyNi45MzMyIDY1NS45NTcgMjcuNDk4MyA2NTMuMTc3IDI5Ljk3NzlDNjUyLjc0MyAzMC4zNjMgNjUyLjM3NiAzMC43NzkzIDY1Mi4wNDIgMzEuMjA0OEg2NTMuNTU2TDY1My4yMDQgMzIuMTQwNEg2NTEuMzk1QzY1MS4yMjIgMzIuNDM1NCA2NTEuMDYgMzIuNzI4MSA2NTAuOTM2IDMzLjAyNUg2NTMuMDgxTDY1Mi43MzcgMzMuOTYwN0g2NTAuNjNDNjUwLjI2OSAzNS4zOTAxIDY1MC40OTkgMzYuNzIzMyA2NTEuNDA2IDM3LjU2OTlDNjUzLjE2NyAzOS4yMTE2IDY1Ni44ODggMzguNjM0NiA2NTkuNjY3IDM2LjE1NTRDNjYwLjE1MyAzNS43MjQyIDY2MC41NTUgMzUuMjU4NyA2NjAuOTE4IDM0Ljc4MDhINjU4Ljk3M0w2NTkuMjY5IDMzLjg0NzFINjYxLjU0M0M2NjEuNzEgMzMuNTUwMSA2NjEuODYzIDMzLjI1NjUgNjYxLjk4MyAzMi45NTk2SDY1OS40OTdaIiBmaWxsPSIjMDA5RTREIi8+DQo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDBfNThfMTExKSI+DQo8cGF0aCBkPSJNNzc1LjA2OCA0MS4yMjc0Qzc2Ni4yODUgNDIuMDQ2MyA3NTcuMTMxIDQwLjc1NjQgNzU1Ljg0OCAzMy44MTlDNzU1LjIyMSAzMC4zOTkgNzU2Ljc2NSAyNi43NzI1IDc1OC44MSAyNC41MTg0VjIzLjMxNDhDNzU1LjEyNiAyNi41OCA3NTMuMTMgMzAuNzExNSA3NTQuMjggMzUuNTkyQzc1NS43NDggNDEuODUxOCA3NjMuNjAzIDQ1LjM5NjcgNzc1LjU5NSA0NC4yMTk1Qzc4MC4zNDIgNDMuNzU0NSA3ODYuNTUgNDIuMjEyIDc5MC44NjkgMzkuODE0NFYzNi40MTA5Qzc4Ni45NDkgMzguNzcxMyA3ODAuNDY4IDQwLjcyMTEgNzc1LjA2OCA0MS4yMjc0VjQxLjIyNzRaTTc5OC4yMDUgMjMuMjMzNUM3OTYuMTIyIDEyLjk1MzMgNzc2LjM3MyAxMi4zMDE2IDc2My42NDMgMjAuMTMzOFYyMC45OTg5Qzc3Ni4zNTkgMTQuMzkxNSA3OTQuMzk1IDE0LjQzMTcgNzk2LjAzNyAyMy45MDE2Qzc5Ni41ODkgMjcuMDM0MiA3OTQuODQzIDMwLjI5NzggNzkxLjcyMyAzMi4xNzdWMzQuNjM0MkM3OTUuNDc2IDMzLjI0MzIgNzk5LjMyNCAyOC43NDQyIDc5OC4yMDUgMjMuMjMzNVYyMy4yMzM1WiIgZmlsbD0iIzBFN0RDMiIvPg0KPHBhdGggZD0iTTc5MC4xNTkgMjEuNzM2OEg3ODcuODU2VjMyLjEwM0M3ODcuODU2IDMzLjMxNzkgNzg4LjQzNyAzNC4zNzQ0IDc5MC4xNTkgMzQuNTQzMlYyMS43MzY4Wk03NjIuNzM5IDI1LjUyMTdINzYwLjQzMkw3NjAuNDMxIDMyLjI5NDNDNzYwLjQzMSAzMy41MTM0IDc2MS4wMTMgMzQuNTY4OCA3NjIuNzM5IDM0LjczNDRWMjUuNTIxN1YyNS41MjE3Wk03NjAuNDMyIDIyLjA1MjFINzYyLjczMlYyNC4yNTg0SDc2MC40MzJWMjIuMDUyMVpNNzc2LjUzIDM0LjYyNzJDNzc0LjY2NiAzNC42MjcyIDc3My44NzcgMzMuMzE3NyA3NzMuODc3IDMyLjAyOFYyMy4wMzU1SDc3Ni4xNlYyNS41MjE3SDc3Ny44NzlWMjcuMzg1M0g3NzYuMTZWMzEuODg1NEM3NzYuMTYgMzIuNDExMyA3NzYuNDA3IDMyLjcwNDQgNzc2Ljk1IDMyLjcwNDRINzc3Ljg3OVYzNC42MjcyTDc3Ni41MyAzNC42MjcyVjM0LjYyNzJaTTc4MC43MzEgMzAuNzk2MUM3ODAuNzMxIDMxLjk3NjggNzgxLjQ2MSAzMi44NDQ2IDc4Mi43NTQgMzIuODQ0NkM3ODMuNzY2IDMyLjg0NDYgNzg0LjI2NiAzMi41NjA1IDc4NC44NSAzMS45NzY4TDc4Ni4yNjEgMzMuMzM0OUM3ODUuMzU3IDM0LjIzNzkgNzg0LjQwOSAzNC43ODcgNzgyLjczNyAzNC43ODdDNzgwLjU1MiAzNC43ODcgNzc4LjQ1OSAzMy41ODE5IDc3OC40NTkgMzAuMDY4NkM3NzguNDU5IDI3LjA2NTEgNzgwLjI4OCAyNS4zNjczIDc4Mi42ODYgMjUuMzY3M0M3ODUuMTI0IDI1LjM2NzMgNzg2LjUyNSAyNy4zNTQ5IDc4Ni41MjUgMjkuOTYzOVYzMC43OTYzSDc4MC43MzFWMzAuNzk2MVpNNzgyLjU4NiAyNy4yNzU2Qzc4MS44MDUgMjcuMjc1NiA3ODEuMjA0IDI3LjY4MjMgNzgwLjk1IDI4LjIzMDlDNzgwLjgwMiAyOC41NjA3IDc4MC43NDcgMjguODE3NyA3ODAuNzMxIDI5LjIyMjlINzg0LjI0OUM3ODQuMjA0IDI4LjIzMDkgNzgzLjc1OSAyNy4yNzU2IDc4Mi41ODYgMjcuMjc1NlpNNzY4LjkzOSAyNy4zODUzQzc2OS42MDggMjcuMzg1MyA3NjkuODg3IDI3LjcxOTggNzY5Ljg4NyAyOC4yNjI2VjM0LjY0MDZINzcyLjE3VjI4LjI0OTJDNzcyLjE3IDI2Ljk1NDIgNzcxLjQ4NyAyNS41MjQxIDc2OS40ODIgMjUuNTI0MUw3NjQuNzY2IDI1LjUyMTdWMzQuNjQwNkg3NjcuMDVWMjcuMzg1M0g3NjguOTM5VjI3LjM4NTNaTTc5Mi42MzcgMjMuNTg5MUM3OTIuMTI5IDIzLjU4OTEgNzkxLjcyNCAyMy4xNzU0IDc5MS43MjQgMjIuNjYyOUM3OTEuNzI0IDIyLjE1MjkgNzkyLjEyOSAyMS43MzY4IDc5Mi42MzcgMjEuNzM2OEM3OTMuMTQyIDIxLjczNjggNzkzLjU1NiAyMi4xNTI5IDc5My41NTYgMjIuNjYyOUM3OTMuNTU2IDIzLjE3NTQgNzkzLjE0MiAyMy41ODkxIDc5Mi42MzcgMjMuNTg5MVpNNzkyLjYzNyAyMS44OTEyQzc5Mi4yMTggMjEuODkxMiA3OTEuODgyIDIyLjI0MDcgNzkxLjg4MiAyMi42NjI5Qzc5MS44ODIgMjMuMDg3NiA3OTIuMjE4IDIzLjQzMDkgNzkyLjYzNyAyMy40MzA5Qzc5My4wNTUgMjMuNDMwOSA3OTMuNDAyIDIzLjA4NzYgNzkzLjQwMiAyMi42NjI5Qzc5My40MDIgMjIuMjQwNyA3OTMuMDU1IDIxLjg5MTIgNzkyLjYzNyAyMS44OTEyWk03OTMuMDQzIDIzLjIxOEg3OTIuODcyQzc5Mi44NjQgMjMuMjE3OSA3OTIuODU3IDIzLjIxNTcgNzkyLjg1MSAyMy4yMTE2Qzc5Mi44NDUgMjMuMjA3NSA3OTIuODQgMjMuMjAxNyA3OTIuODM3IDIzLjE5NDlMNzkyLjYwNSAyMi43OTdDNzkyLjU5OCAyMi43ODg1IDc5Mi41NzkgMjIuNzc4OCA3OTIuNTczIDIyLjc3ODhINzkyLjQ2N1YyMy4xNzU0Qzc5Mi40NjcgMjMuMTk1IDc5Mi40NTMgMjMuMjE4MSA3OTIuNDI4IDIzLjIxODFINzkyLjI3NEM3OTIuMjUxIDIzLjIxODEgNzkyLjIzNSAyMy4xOTUgNzkyLjIzNSAyMy4xNzU0VjIyLjE3NDlDNzkyLjIzNSAyMi4xMTY0IDc5Mi4yNTQgMjIuMDkyNCA3OTIuMzA1IDIyLjA4NUM3OTIuMzYxIDIyLjA3OSA3OTIuNTA1IDIyLjA3MTYgNzkyLjU4NiAyMi4wNzE2Qzc5Mi44NzIgMjIuMDcxNiA3OTMuMDM5IDIyLjE1NjYgNzkzLjAzOSAyMi40MjQ0VjIyLjQ0NEM3OTMuMDM5IDIyLjYwOTQgNzkyLjk1OSAyMi42OTk1IDc5Mi44MzMgMjIuNzM5N0w3OTMuMDc0IDIzLjE1NDdDNzkzLjA3OCAyMy4xNjQgNzkzLjA4IDIzLjE3MzkgNzkzLjA4IDIzLjE4NEM3OTMuMDggMjMuMTk5NyA3OTMuMDcyIDIzLjIxOCA3OTMuMDQzIDIzLjIxOFYyMy4yMThaTTc5Mi44MjEgMjIuNDI0NEM3OTIuODIxIDIyLjMxMjcgNzkyLjc1MiAyMi4yNzczIDc5Mi42MDUgMjIuMjc3M0g3OTIuNDU5VjIyLjU5NDdDNzkyLjQ4MiAyMi41OTQ3IDc5Mi41ODYgMjIuNTk5NiA3OTIuNjA1IDIyLjU5OTZDNzkyLjc1MiAyMi41OTk2IDc5Mi44MjEgMjIuNTUgNzkyLjgyMSAyMi40NDRWMjIuNDI0NFoiIGZpbGw9IiMwRTdEQzIiLz4NCjwvZz4NCjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMV81OF8xMTEpIj4NCjxwYXRoIGQ9Ik01MzMuNzczIDIwLjk5MTFDNTI5LjI2MyAyMC45OTExIDUyNS41OTkgMjQuNjU0NyA1MjUuNTk5IDI5LjE2NDRDNTI1LjU5OSAzMy42NzQxIDUyOS4yNjMgMzcuMzM3NyA1MzMuNzczIDM3LjMzNzdDNTM4LjI4MiAzNy4zMzc3IDU0MS45NDYgMzMuNjc0MSA1NDEuOTQ2IDI5LjE2NDRDNTQxLjk0NiAyNC42NTQ3IDUzOC4yODIgMjAuOTkxMSA1MzMuNzczIDIwLjk5MTFaTTUzMy43NzMgMzYuNTE4NkM1MjkuNzEzIDM2LjUxODYgNTI2LjQxOSAzMy4yMTUgNTI2LjQxOSAyOS4xNjQ0QzUyNi40MTkgMjUuMTEzNyA1MjkuNzEzIDIxLjgxMDIgNTMzLjc3MyAyMS44MTAyQzUzNy44MzIgMjEuODEwMiA1NDEuMTI3IDI1LjExMzcgNTQxLjEyNyAyOS4xNjQ0QzU0MS4xMjcgMzMuMjE1IDUzNy44MzIgMzYuNTE4NiA1MzMuNzczIDM2LjUxODZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTUzNi42OSAyMy45MjUyQzUzNi42NjMgMjMuOTA3MiA1MzYuNjI3IDIzLjg5ODIgNTM2LjU5MSAyMy44OTgyQzUzNi40ODMgMjMuODk4MiA1MzYuNDAyIDIzLjk3OTIgNTM2LjQwMiAyNC4wODczVjI2LjY0MzdDNTM2LjQwMiAyNi43MzM3IDUzNi4zMyAyNi44MDU3IDUzNi4yNCAyNi44MDU3SDUzMS4yOUM1MzEuMiAyNi44MDU3IDUzMS4xMzcgMjYuNzMzNyA1MzEuMTI4IDI2LjY0MzdWMjQuMDg3M0M1MzEuMTI4IDI0LjA1MTMgNTMxLjExOSAyNC4wMjQyIDUzMS4xMDEgMjMuOTg4MkM1MzEuMDQ3IDIzLjg5ODIgNTMwLjkzIDIzLjg3MTIgNTMwLjgzOSAyMy45MjUyQzUyOS4wMTIgMjUuMDUwNCA1MjcuOTA1IDI3LjAwMzcgNTI3LjkwNSAyOS4xNjQxQzUyNy45MDUgMzEuMzI0NCA1MjkuMDEyIDMzLjI3NzcgNTMwLjg1NyAzNC40MDI5QzUzMC44ODUgMzQuNDIwOSA1MzAuOTIxIDM0LjQyOTkgNTMwLjk1NyAzNC40Mjk5QzUzMS4wNjUgMzQuNDI5OSA1MzEuMTQ2IDM0LjM0ODkgNTMxLjE0NiAzNC4yNDA5VjMxLjY4NDVDNTMxLjE0NiAzMS41OTQ0IDUzMS4yMTggMzEuNTMxNCA1MzEuMzA4IDMxLjUyMjRINTM2LjI1OEM1MzYuMzQ4IDMxLjUyMjQgNTM2LjQyIDMxLjU5NDQgNTM2LjQyIDMxLjY4NDVWMzQuMjQwOUM1MzYuNDIgMzQuMjc2OSA1MzYuNDI5IDM0LjMwMzkgNTM2LjQ0NyAzNC4zMzk5QzUzNi41MDEgMzQuNDI5OSA1MzYuNjE4IDM0LjQ1NjkgNTM2LjcwOCAzNC40MDI5QzUzOC41NTQgMzMuMjc3NyA1MzkuNjYxIDMxLjMyNDQgNTM5LjY2MSAyOS4xNjQxQzUzOS42NjEgMjcuMDAzNyA1MzguNTM2IDI1LjA1MDQgNTM2LjY5IDIzLjkyNTJWMjMuOTI1MlpNNTMwLjE5MSAzMi4zNjg2TDUzMC4yMTggMzIuNjc0Nkw1MzAuMDIgMzIuNDMxNkM1MjguNDk5IDMwLjUxNDMgNTI4LjQ5OSAyNy44MDQ4IDUzMC4wMiAyNS44ODc1TDUzMC4xOTEgMjUuNjcxNUw1MzAuMjE4IDI1LjY0NDVMNTMwLjE5MSAyNS45NTk2QzUzMC4xNjQgMjYuMjExNiA1MzAuMTU1IDI2LjQ3MjYgNTMwLjE1NSAyNi43MzM3VjMxLjU4NTRDNTMwLjE1NSAzMS44NDY1IDUzMC4xNzMgMzIuMTA3NSA1MzAuMTkxIDMyLjM2ODZaTTUzNi40MDIgMzAuMzg4M0M1MzYuNDAyIDMwLjQ3ODMgNTM2LjMzIDMwLjU1MDMgNTM2LjI0IDMwLjU1MDNINTMxLjI5QzUzMS4yIDMwLjU1MDMgNTMxLjEzNyAzMC40NzgzIDUzMS4xMjggMzAuMzg4M1YyNy45Mzk5QzUzMS4xMjggMjcuODQ5OSA1MzEuMiAyNy43Nzc4IDUzMS4yOSAyNy43Nzc4SDUzNi4yNEM1MzYuMzMgMjcuNzc3OCA1MzYuNDAyIDI3Ljg0OTkgNTM2LjQwMiAyNy45Mzk5VjMwLjM4ODNaTTUzNy41MTkgMzIuNDMxNkw1MzcuMzIxIDMyLjY3NDZMNTM3LjM0OCAzMi4zNjg2QzUzNy4zNzUgMzIuMTE2NSA1MzcuMzg0IDMxLjg1NTUgNTM3LjM4NCAzMS41OTQ0VjI2LjczMzdDNTM3LjM4NCAyNi40NzI2IDUzNy4zNzUgMjYuMjExNiA1MzcuMzQ4IDI1Ljk1OTZMNTM3LjMzOSAyNS44MjQ1TDUzNy4zMyAyNS42ODA1VjI1LjY0NDVMNTM3LjUxOSAyNS44ODc1QzUzOC4yNTcgMjYuODA1NyA1MzguNjYyIDI3Ljk3NTkgNTM4LjY2MiAyOS4xNTUxQzUzOC42NjIgMzAuMzM0MiA1MzguMjU3IDMxLjUxMzQgNTM3LjUxOSAzMi40MzE2VjMyLjQzMTZaIiBmaWxsPSJibGFjayIvPg0KPHBhdGggZD0iTTU1NC4yNzYgMjkuMDIwMkM1NTQuMjMxIDI5LjAwMjIgNTU0LjE3NyAyOC45ODQyIDU1NC4xNzcgMjguOTMwMkM1NTQuMTc3IDI4Ljg5NDIgNTU0LjE5NSAyOC44NjcyIDU1NC4yMzEgMjguODQ5MkM1NTQuMjk0IDI4LjgyMjIgNTU1Ljg1MSAyOC4yNjQxIDU1NS44NTEgMjYuNDI3OEM1NTUuODUxIDI0LjM4NDUgNTU0LjQ3NCAyMy4xNjkzIDU1Mi4xNTIgMjMuMTY5M0g1NDYuNTI2VjM1LjE3NzJINTUyLjY2NUM1NTQuNDU2IDM1LjE3NzIgNTU2LjM4MiAzMy45MDggNTU2LjM4MiAzMS44NjQ2QzU1Ni4zODIgMjkuOTExMyA1NTQuOTA2IDI5LjIyNzIgNTU0LjI3NiAyOS4wMjAyVjI5LjAyMDJaTTU0OS4zNjEgMjUuNjI2N0M1NDkuMzYxIDI1LjU4MTcgNTQ5LjM5NyAyNS41NDU2IDU0OS40NDIgMjUuNTQ1Nkg1NTEuNjc1QzU1Mi40MTMgMjUuNTQ1NiA1NTIuOTE3IDI2LjA0MDcgNTUyLjkxNyAyNi43Nzg4QzU1Mi45MTcgMjcuMzU0OSA1NTIuNDY3IDI3Ljk3NiA1NTEuNjIxIDI3Ljk3Nkg1NDkuNDQyQzU0OS4zOTcgMjcuOTc2IDU0OS4zNjEgMjcuOTQgNTQ5LjM2MSAyNy44OTVWMjUuNjI2N1pNNTUxLjY3NSAzMi44MDk4SDU0OS40NDJDNTQ5LjM5NyAzMi44MDk4IDU0OS4zNjEgMzIuNzczOCA1NDkuMzYxIDMyLjcyODhWMzAuMzM0NEM1NDkuMzYxIDMwLjI4OTQgNTQ5LjM5NyAzMC4yNTM0IDU0OS40NDIgMzAuMjUzNEg1NTEuNjIxQzU1Mi42OTIgMzAuMjUzNCA1NTMuMzA0IDMwLjcxMjUgNTUzLjMwNCAzMS41MjI2QzU1My4zMDQgMzIuMzU5NyA1NTIuNzM3IDMyLjgwOTggNTUxLjY3NSAzMi44MDk4VjMyLjgwOThaTTU3NS4zODQgMjcuOTQ5TDU3NC45NTIgMjcuODU5QzU3My45OCAyNy42NTIgNTczLjAzNSAyNy4zOTA5IDU3My4wMzUgMjYuNTUzOEM1NzMuMDM1IDI1LjcxNjcgNTczLjgxOCAyNS4zMzg2IDU3NC41OTIgMjUuMzM4NkM1NzUuNTAxIDI1LjMzODYgNTc2LjQwMSAyNS43NDM3IDU3Ny4wODYgMjYuNDQ1OEw1NzguODY4IDI0LjY4MTVDNTc4LjEwMyAyMy44MzU0IDU3Ni43NDQgMjIuODYzMiA1NzQuNTQ3IDIyLjg2MzJDNTcxLjkwMSAyMi44NjMyIDU3MC4xMTggMjQuMzY2NSA1NzAuMTE4IDI2LjYwNzhDNTcwLjExOCAyOC45NzUyIDU3MS45ODIgMjkuODY2MyA1NzMuNTQ4IDMwLjE5OTRMNTczLjk3MSAzMC4yODk0QzU3NS40OTIgMzAuNjEzNSA1NzYuMjEyIDMwLjg1NjUgNTc2LjIxMiAzMS43MjA2QzU3Ni4yMTIgMzIuNDk0NyA1NzUuNTE5IDMzLjAwNzggNTc0LjQ5MyAzMy4wMDc4QzU3My4yODcgMzMuMDA3OCA1NzIuMjE2IDMyLjQ3NjcgNTcxLjQwNiAzMS40Nzc2TDU2OS41NzggMzMuMjY4OUM1NzAuNTUxIDM0LjQyMTEgNTcxLjgzOCAzNS40NjUyIDU3NC41MjkgMzUuNDY1MkM1NzYuODI1IDM1LjQ2NTIgNTc5LjE1NiAzNC4xMzMgNTc5LjE1NiAzMS41NzY2QzU3OS4xNDcgMjguOTU3MiA1NzcuMzY1IDI4LjM2MzEgNTc1LjM4NCAyNy45NDlWMjcuOTQ5Wk01OTkuMTAzIDIzLjE2OTNWMjcuNTYyQzU5OS4xMDMgMjcuNjA3IDU5OS4wNjcgMjcuNjQzIDU5OS4wMjIgMjcuNjQzSDU5NS4zMzFDNTk1LjI4NiAyNy42NDMgNTk1LjI1IDI3LjYwNyA1OTUuMjUgMjcuNTYyVjIzLjE2OTNINTkyLjIyNlYzNS4xNzcySDU5NS4yNVYzMC40NjA0QzU5NS4yNSAzMC40MTU0IDU5NS4yODYgMzAuMzc5NCA1OTUuMzMxIDMwLjM3OTRINTk5LjAyMkM1OTkuMDY3IDMwLjM3OTQgNTk5LjEwMyAzMC40MTU0IDU5OS4xMDMgMzAuNDYwNFYzNS4xNzcySDYwMi4xNDZWMjMuMTY5M0g1OTkuMTAzWk01ODYuMTQxIDMyLjcxOThDNTg0Ljc4MiAzMi43MTk4IDU4My4zMTUgMzEuNTg1NiA1ODMuMzE1IDI5LjA5MjJDNTgzLjMxNSAyNi44MTQ4IDU4NC42OTIgMjUuNjI2NyA1ODYuMDUxIDI1LjYyNjdDNTg3LjA0MSAyNS42MjY3IDU4Ny43MzQgMjYuMDQwNyA1ODguMjgzIDI2Ljk1ODlMNTkwLjYwNiAyNS40MTk2QzU4OS40MTggMjMuNjczMyA1ODguMDA0IDIyLjg4MTIgNTg2LjAzMyAyMi44ODEyQzU4Mi4xNzEgMjIuODgxMiA1ODAuNDQzIDI2LjAwNDcgNTgwLjQ0MyAyOS4wOTIyQzU4MC40NDMgMzIuODQ1OCA1ODIuNzI5IDM1LjQ2NTIgNTg1Ljk5NyAzNS40NjUyQzU4OC40MjcgMzUuNDY1MiA1ODkuNTM1IDM0LjU3NDEgNTkwLjY5NiAzMi45MjY4TDU4OC4zNTUgMzEuMzUxNkM1ODcuODMzIDMyLjE5NzcgNTg3LjI2NiAzMi43MTk4IDU4Ni4xNDEgMzIuNzE5OFpNNTYzLjE3OCAyMi44NjMyQzU1OS44NzUgMjIuODYzMiA1NTcuNjYxIDI1LjM5MjYgNTU3LjY2MSAyOS4xNjQyQzU1Ny42NjEgMzIuOTM1OCA1NTkuODc1IDM1LjQ2NTIgNTYzLjE3OCAzNS40NjUyQzU2Ni40ODIgMzUuNDY1MiA1NjguNjk2IDMyLjkzNTggNTY4LjY5NiAyOS4xNjQyQzU2OC42OTYgMjUuMzkyNiA1NjYuNDgyIDIyLjg2MzIgNTYzLjE3OCAyMi44NjMyVjIyLjg2MzJaTTU2My4xNzggMzIuNzE5OEM1NjEuNTU4IDMyLjcxOTggNTYwLjUxNCAzMS4zMjQ2IDU2MC41MTQgMjkuMTY0MkM1NjAuNTE0IDI3LjAxMjkgNTYxLjU1OCAyNS42MjY3IDU2My4xNzggMjUuNjI2N0M1NjQuODA4IDI1LjYyNjcgNTY1Ljg2MSAyNy4wMTI5IDU2NS44NjEgMjkuMTY0MkM1NjUuODYxIDMxLjMyNDYgNTY0LjgwOCAzMi43MTk4IDU2My4xNzggMzIuNzE5OFoiIGZpbGw9IiNGODAwMDAiLz4NCjwvZz4NCjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNMTQ2LjM0NCAyMi4xODExQzE0Ny41OTUgMjIuMjg1NCAxNDguODQ1IDIxLjU1NTMgMTQ5LjYyNyAyMC42Mjk4QzE1MC4zOTUgMTkuNjc4MSAxNTAuOTAzIDE4LjQwMDUgMTUwLjc3MyAxNy4wOTY5QzE0OS42NjYgMTcuMTQ5MSAxNDguMjk4IDE3LjgyNjkgMTQ3LjUxNyAxOC43Nzg2QzE0Ni44IDE5LjU5OTkgMTQ2LjE4OCAyMC45Mjk2IDE0Ni4zNDQgMjIuMTgxMVpNMTQ3Ljg0MSAyMy4wNzk3QzE0OC42NTMgMjIuNzYwNiAxNDkuNjU4IDIyLjM2NTYgMTUwLjc2IDIyLjQyOTFDMTUxLjQ2MyAyMi40ODEyIDE1My40OTUgMjIuNjg5OCAxNTQuNzk4IDI0LjYxOTJDMTU0Ljc5MiAyNC42MjM3IDE1NC43NzggMjQuNjMyMyAxNTQuNzU5IDI0LjY0NUMxNTQuNDM2IDI0Ljg1NDggMTUyLjM5IDI2LjE4NzEgMTUyLjQxNCAyOC44MTY5QzE1Mi40MzkgMzEuOTQ5OSAxNTQuOTg4IDMzLjExODMgMTU1LjMyMiAzMy4yNzExQzE1NS4zNDQgMzMuMjgxMSAxNTUuMzU2IDMzLjI4NjcgMTU1LjM1OCAzMy4yODgzQzE1NS4zNTYgMzMuMjkyNiAxNTUuMzU0IDMzLjMwMSAxNTUuMzUgMzMuMzEzM0MxNTUuMjgzIDMzLjUyODggMTU0Ljg0NSAzNC45NDg5IDE1My44NDcgMzYuNDA0QzE1Mi45MjIgMzcuNzU5OCAxNTEuOTcxIDM5LjA4OTUgMTUwLjQ2IDM5LjExNTZDMTQ5Ljc0OSAzOS4xMjgzIDE0OS4yNyAzOC45MjExIDE0OC43NzIgMzguNzA1NEMxNDguMjQ3IDM4LjQ3ODUgMTQ3LjcwMSAzOC4yNDIyIDE0Ni44NCAzOC4yNDIyQzE0NS45NDcgMzguMjQyMiAxNDUuMzc2IDM4LjQ4NDggMTQ0LjgyNiAzOC43MTg0QzE0NC4zNDggMzguOTIxNCAxNDMuODg3IDM5LjExNzQgMTQzLjI0NSAzOS4xNDE3QzE0MS43ODYgMzkuMTkzOCAxNDAuNjc5IDM3LjcwNzcgMTM5Ljc1NCAzNi4zNTE5QzEzNy44NjYgMzMuNjE0MyAxMzYuNDIgMjguNjM0NCAxMzguMzc0IDI1LjI3MUMxMzkuMzI1IDIzLjU4OTMgMTQxLjA1NyAyMi41MzM0IDE0Mi45MTkgMjIuNTA3M0MxNDMuNzMyIDIyLjQ5MjUgMTQ0LjUwNyAyMi44MDA2IDE0NS4xODQgMjMuMDcwMUMxNDUuNzAyIDIzLjI3NTggMTQ2LjE2MiAyMy40NTg5IDE0Ni41NCAyMy40NTg5QzE0Ni44NzcgMjMuNDU4OSAxNDcuMzE5IDIzLjI4NTEgMTQ3Ljg0MSAyMy4wNzk3WiIgZmlsbD0iYmxhY2siLz4NCjxwYXRoIGQ9Ik0zNi44NTg3IDM3LjUyNDFIMzEuOTg3NEwzNS4wMzQyIDE5LjY2NjhIMzkuOTA1MkwzNi44NTg3IDM3LjUyNDFaIiBmaWxsPSIjMDA1NzlGIi8+DQo8cGF0aCBkPSJNNTQuNTE1NyAyMC4xMDQxQzUzLjU1NDkgMTkuNzQyOCA1Mi4wMzA5IDE5LjM0MzggNTAuMTQ2NiAxOS4zNDM4QzQ1LjMzNjEgMTkuMzQzOCA0MS45NDg2IDIxLjc3NTMgNDEuOTI3OCAyNS4yNTE2QzQxLjg4NzggMjcuODE2NSA0NC4zNTMxIDI5LjI0MSA0Ni4xOTcgMzAuMDk2MkM0OC4wODE2IDMwLjk3MDEgNDguNzIyMyAzMS41NDA1IDQ4LjcyMjMgMzIuMzE5NEM0OC43MDMxIDMzLjUxNTcgNDcuMTk5NCAzNC4wNjcyIDQ1Ljc5NjkgMzQuMDY3MkM0My44NTIxIDM0LjA2NzIgNDIuODEgMzMuNzgyOSA0MS4yMjY0IDMzLjExNzNMNDAuNTg1IDMyLjgzMkwzOS45MDMzIDM2Ljg0MDZDNDEuMDQ1OCAzNy4zMzM5IDQzLjE1MDcgMzcuNzcxNyA0NS4zMzYxIDM3Ljc5MDlDNTAuNDQ3MyAzNy43OTA5IDUzLjc3NDkgMzUuMzk3MSA1My44MTQzIDMxLjY5MjVDNTMuODMzOCAyOS42NTk3IDUyLjUzMiAyOC4xMDIgNDkuNzI1NCAyNi44MjkyQzQ4LjAyMTcgMjYuMDEyMSA0Ni45NzgzIDI1LjQ2MTIgNDYuOTc4MyAyNC42MjUyQzQ2Ljk5ODMgMjMuODY1MiA0Ny44NjA4IDIzLjA4NjggNDkuNzg0IDIzLjA4NjhDNTEuMzY3NyAyMy4wNDg2IDUyLjUzMTIgMjMuNDA5NCA1My40MTI2IDIzLjc3MDVMNTMuODUzMiAyMy45NjAxTDU0LjUxNTcgMjAuMTA0MVoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik02MC45OTI0IDMxLjE5NzlDNjEuMzkzNiAzMC4xNzIgNjIuOTM3MiAyNi4yMDE2IDYyLjkzNzIgMjYuMjAxNkM2Mi45MTcgMjYuMjM5NyA2My4zMzc2IDI1LjE1NjggNjMuNTc4MSAyNC40OTE5TDYzLjkxODYgMjYuMDMwNkM2My45MTg2IDI2LjAzMDYgNjQuODQxIDMwLjMwNTEgNjUuMDQxNCAzMS4xOTc5QzY0LjI4IDMxLjE5NzkgNjEuOTU0NiAzMS4xOTc5IDYwLjk5MjQgMzEuMTk3OVpNNjcuMDA1NCAxOS42NjY4SDYzLjIzNzRDNjIuMDc1NSAxOS42NjY4IDYxLjE5MjcgMTkuOTg5NSA2MC42OTE0IDIxLjE0ODRMNTMuNDU1OCAzNy41MjM5SDU4LjU2NzFDNTguNTY3MSAzNy41MjM5IDU5LjQwODUgMzUuMzE5OSA1OS41ODk0IDM0Ljg0NTJDNjAuMTUwMSAzNC44NDUyIDY1LjEyMjMgMzQuODQ1MiA2NS44NDM3IDM0Ljg0NTJDNjUuOTgzNSAzNS40NzIxIDY2LjQyNDkgMzcuNTIzOSA2Ni40MjQ5IDM3LjUyMzlINzAuOTM1Mkw2Ny4wMDU0IDE5LjY2NjhWMTkuNjY2OFoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik0yNy45MTggMTkuNjY2OEwyMy4xNDc1IDMxLjg0MzhMMjIuNjI2MiAyOS4zNzQxQzIxLjc0NDIgMjYuNTI0NSAxOC45NzgxIDIzLjQyODQgMTUuODkxNCAyMS44ODlMMjAuMjYxIDM3LjUwNTJIMjUuNDEyMkwzMy4wNjkgMTkuNjY2OEgyNy45MThWMTkuNjY2OFoiIGZpbGw9IiMwMDU3OUYiLz4NCjxwYXRoIGQ9Ik0xOC43MTg0IDE5LjY2NjhIMTAuODgxMUwxMC44MDA5IDIwLjAyNzZDMTYuOTE0NSAyMS41MDk1IDIwLjk2MzUgMjUuMDgxNSAyMi42MjcgMjkuMzc0OUwyMC45MjMyIDIxLjE2NzlDMjAuNjQyNyAyMC4wMjc0IDE5Ljc4MDcgMTkuNzA0NCAxOC43MTg0IDE5LjY2NjhaIiBmaWxsPSIjRkFBNjFBIi8+DQo8ZyBjbGlwLXBhdGg9InVybCgjY2xpcDJfNThfMTExKSI+DQo8cGF0aCBkPSJNMjIxLjE1OCAxNy40OTlWMTguOTM1NkgyMzEuMzA2VjE3LjQ5OUgyMjEuMTU4Wk0yMzIuNzQ0IDE3LjQ5OVYxOC45MzU2SDI0Ny4yMDZDMjQ3LjIwNiAxOC45MzU2IDI0NS43MjkgMTcuNDk5IDI0My43NzMgMTcuNDk5SDIzMi43NDRaTTI1MC4wNDMgMTcuNDk5VjE4LjkzNTZIMjU4Ljc5M0wyNTguMjczIDE3LjQ5OUgyNTAuMDQzWk0yNjUuMDY1IDE3LjQ5OUwyNjQuNTQ2IDE4LjkzNTZIMjczLjIxNlYxNy40OTlIMjY1LjA2NVpNMjIxLjE1OCAyMC4yOTI5VjIxLjcyOTZIMjMxLjMwNlYyMC4yOTI5SDIyMS4xNThaTTIzMi43NDQgMjAuMjk1VjIxLjcyOTdIMjQ4Ljg4NEMyNDguODg0IDIxLjcyOTcgMjQ4LjY5NiAyMC42MjM5IDI0OC4zNjcgMjAuMjk1SDIzMi43NDRaTTI1MC4wNDMgMjAuMjk1VjIxLjcyOTdIMjU5Ljc1MkwyNTkuMjcxIDIwLjI5NUgyNTAuMDQzWk0yNjQuMDI3IDIwLjI5NUwyNjMuNTQ2IDIxLjcyOTdIMjczLjIxNlYyMC4yOTVIMjY0LjAyN1YyMC4yOTVaTTIyNC4wNzQgMjMuMDg2OVYyNC41MjU3SDIyOC40NjlWMjMuMDg2OUgyMjQuMDc0VjIzLjA4NjlaTTIzNS42NjEgMjMuMDg2OVYyNC41MjU3SDI0MC4wNTZWMjMuMDg2OUgyMzUuNjYxVjIzLjA4NjlaTTI0NC4zMzEgMjMuMDg2OVYyNC41MjU3SDI0OC43MjZDMjQ4LjcyNiAyNC41MjU3IDI0OS4wMDUgMjMuNzY1OSAyNDkuMDA1IDIzLjA4NjlIMjQ0LjMzMVYyMy4wODY5Wk0yNTIuOTYgMjMuMDg2OVYyNC41MjU3SDI2MC43NTJMMjYwLjIzMiAyMy4wODY5SDI1Mi45NlYyMy4wODY5Wk0yNjMuMDY5IDIzLjA4NjlMMjYyLjU0OCAyNC41MjU3SDI3MC4zNzlWMjMuMDg2OUgyNjMuMDY5VjIzLjA4NjlaTTIyNC4wNzQgMjUuODgzVjI3LjMxOTdIMjI4LjQ2OVYyNS44ODNIMjI0LjA3NFYyNS44ODNaTTIzNS42NjEgMjUuODgzVjI3LjMxOTdIMjQ2Ljg4N0MyNDYuODg3IDI3LjMxOTcgMjQ3LjgyNiAyNi41ODI1IDI0OC4xMjUgMjUuODgzSDIzNS42NjFaTTI1Mi45NiAyNS44ODNWMjcuMzE5N0gyNTcuMzU1VjI2LjUyTDI1Ny42MzQgMjcuMzE5N0gyNjUuNjg0TDI2NS45ODQgMjYuNTJWMjcuMzE5N0gyNzAuMzc5VjI1Ljg4M0gyNjIuMTI5TDI2MS42OTEgMjcuMDk5OUwyNjEuMjUxIDI1Ljg4M0gyNTIuOTZaTTIyNC4wNzQgMjguNjc3VjMwLjExMzdIMjI4LjQ2OVYyOC42NzdIMjI0LjA3NFpNMjM1LjY2MSAyOC42NzdWMzAuMTEzN0gyNDguMTI1QzI0Ny44MjYgMjkuNDE2NSAyNDYuODg3IDI4LjY3NyAyNDYuODg3IDI4LjY3N0gyMzUuNjYxWk0yNTIuOTYgMjguNjc3VjMwLjExMzdIMjU3LjM1NVYyOC42NzdIMjUyLjk2Wk0yNTguMTUzIDI4LjY3N0wyNTguNjg1IDMwLjExMzdIMjY0LjcyMUwyNjUuMjI2IDI4LjY3N0gyNTguMTUzWk0yNjUuOTg0IDI4LjY3N1YzMC4xMTM3SDI3MC4zNzlWMjguNjc3SDI2NS45ODRaTTIyNC4wNzQgMzEuNDcxVjMyLjkwNzZIMjI4LjQ2OVYzMS40NzFIMjI0LjA3NFpNMjM1LjY2MSAzMS40NzFWMzIuOTA3NkgyNDAuMDU2VjMxLjQ3MUgyMzUuNjYxWk0yNDQuMzMxIDMxLjQ3MVYzMi45MDc2SDI0OS4wMDVDMjQ5LjAwNSAzMi4yMjk2IDI0OC43MjYgMzEuNDcxIDI0OC43MjYgMzEuNDcxSDI0NC4zMzFWMzEuNDcxWk0yNTIuOTYgMzEuNDcxVjMyLjkwNzZIMjU3LjM1NVYzMS40NzFIMjUyLjk2Wk0yNTkuMTUxIDMxLjQ3MUwyNTkuNjY2IDMyLjkwNzZIMjYzLjcxM0wyNjQuMjMyIDMxLjQ3MUgyNTkuMTUxWk0yNjUuOTg0IDMxLjQ3MVYzMi45MDc2SDI3MC4zNzlWMzEuNDcxSDI2NS45ODRaTTIyMS4yMzcgMzQuMjY1VjM1LjcwMzdIMjMxLjM4NlYzNC4yNjVIMjIxLjIzN1pNMjMyLjc0NCAzNC4yNjVWMzUuNzAzN0gyNDguMzY3QzI0OC42OTYgMzUuMzc0MyAyNDguODg0IDM0LjI2NSAyNDguODg0IDM0LjI2NUgyMzIuNzQ0VjM0LjI2NVpNMjUwLjEyMyAzNC4yNjVWMzUuNzAzN0gyNTcuMzU1VjM0LjI2NUgyNTAuMTIzWk0yNjAuMTUxIDM0LjI2NUwyNjAuNjggMzUuNzAzN0gyNjIuNzM5TDI2My4yMzYgMzQuMjY1SDI2MC4xNTFaTTI2NS45ODQgMzQuMjY1VjM1LjcwMzdIMjczLjI5NVYzNC4yNjVIMjY1Ljk4NFpNMjIxLjIzNyAzNy4wNjFWMzguNDk3N0gyMzEuMzg2VjM3LjA2MUgyMjEuMjM3Wk0yMzIuNzQ0IDM3LjA2MVYzOC40OTU2SDI0My43NzNDMjQ1LjcyOSAzOC40OTU2IDI0Ny4yMDYgMzcuMDYxIDI0Ny4yMDYgMzcuMDYxSDIzMi43NDRaTTI1MC4xMjMgMzcuMDYxVjM4LjQ5NzdIMjU3LjM1NVYzNy4wNjFIMjUwLjEyM1pNMjYxLjE1NSAzNy4wNjFMMjYxLjY2NCAzOC40OTM2TDI2MS43NTIgMzguNDk1NkwyNjIuMjY5IDM3LjA2MUgyNjEuMTU1VjM3LjA2MVpNMjY1Ljk4NCAzNy4wNjFWMzguNDk3N0gyNzMuMjk1VjM3LjA2MUgyNjUuOTg0WiIgZmlsbD0iIzFGNzBDMSIvPg0KPC9nPg0KPGRlZnM+DQo8Y2xpcFBhdGggaWQ9ImNsaXAwXzU4XzExMSI+DQo8cmVjdCB3aWR0aD0iNDQuNDQ3MyIgaGVpZ2h0PSIyOS42MzE1IiBmaWxsPSJ3aGl0ZSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzUzLjk1NSAxNC44MTU1KSIvPg0KPC9jbGlwUGF0aD4NCjxjbGlwUGF0aCBpZD0iY2xpcDFfNThfMTExIj4NCjxyZWN0IHdpZHRoPSI3Ni41NDgxIiBoZWlnaHQ9IjE2LjM1MDciIGZpbGw9IndoaXRlIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MjUuNTk5IDIwLjk4ODkpIi8+DQo8L2NsaXBQYXRoPg0KPGNsaXBQYXRoIGlkPSJjbGlwMl81OF8xMTEiPg0KPHJlY3Qgd2lkdGg9IjUyLjEzNzIiIGhlaWdodD0iMjAuOTk4NyIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIyMS4xNTggMTcuNDk5KSIvPg0KPC9jbGlwUGF0aD4NCjwvZGVmcz4NCjwvc3ZnPg0K\\\" style=\\\"\\n width: 742.5px;\\n position: relative;\\n top: 107px;\\n left: 32px;\\n \\\">\\n <a href=\" + accountURL + \" style=\\\"\\n float: left;\\n border-radius: 56px;\\n background: #0D6EFD;\\n padding-top: 8px;\\n width: 280px;\\n height: 38px;\\n text-align: center;\\n position: relative;\\n top: 127px;\\n left: 274px;\\n font-size: 16px;\\n color: white;\\n text-decoration: none;\\n letter-spacing: 0.02em;\\n \\\">Claim your FREE account</a>\\n <div style=\\\"\\n font-size: 14px;\\n position: relative;\\n top: 180px;\\n left: 19px;\\n letter-spacing: 0.02em;\\n font-weight: 500;\\n line-height: 125%;\\n\\\">have a Syncfusion account? <a href=\\\"https://www.syncfusion.com/account/login?ReturnUrl=/account/login\\\" style=\\\"text-decoration: none;\\ncolor: #0D6EFD;\\nfont-weight: 500;\\\">Sign In</a></div>\\n </div>\\n </div>\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n _this.isAngular = false;\n _this.isReact = false;\n _this.isVue = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export'],\n 'query-builder': 'all'\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n window[\"\" + sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n var value = obj[\"\" + key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n * <div id='drag'>Draggable</div>\n * <script>\n * var ele = document.getElementById('drag');\n * var drag:Draggable = new Draggable(ele,{\n * clone:false,\n * drag: function(e) {\n * //drag handler code.\n * },\n * handle:'.class'\n * });\n * </script>\n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.getScrollParent = function (node, reverse) {\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n * <div id='drop'>Droppable</div>\n * <script>\n * let ele:HTMLElement = document.getElementById('drop');\n * var drag:Droppable = new Droppable(ele,{\n * accept:'.drop',\n * drop: function(e) {\n * //drop handler code.\n * }\n * });\n * </script>\n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n * <div id='testEle'> </div>;\n * <script>\n * let node: HTMLElement = document.querySelector('#testEle');\n * let kbInstance = new KeyboardEvents({\n * element: node,\n * keyConfigs:{ selectAll : 'ctrl+a' },\n * keyAction: function (e:KeyboardEvent, action:string) {\n * // handler function code\n * }\n * });\n * </script>\n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\r\n var extendStatics = function (d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n};\r\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n var eSwipeArgs = extend(undefined, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n var eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && Object.prototype.hasOwnProperty.call(helper, fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n/**\n * Replace double slashes to single slash.\n *\n * @param {string} tempStr ?\n * @returns {any} ?\n */\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n return tempStr;\n }\n else {\n return tempStr.replace(SINGLE_SLASH, double);\n }\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+<tr|^<tr/;\nvar HAS_SVG = /^[\\n\\r.]+<svg|^<path|^<g/;\nexport var blazorTemplates = {};\n/**\n *\n * @returns {string} ?\n */\nexport function getRandomId() {\n return '-' + Math.random().toString(36).substr(2, 5);\n}\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} templateString - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {NodeList} ?\n * @private\n */\nexport function compile(templateString, helper, ignorePrefix) {\n var compiler = engineObj.compile(templateString, helper, ignorePrefix);\n return function (data, component, propName, templateId, isStringTemplate, index, element, root) {\n var result = compiler(data, component, propName, element, root);\n var blazorTemplateId = 'BlazorTemplateId';\n if (isBlazor() && !isStringTemplate) {\n var randomId = getRandomId();\n var blazorId = templateId + randomId;\n if (!blazorTemplates[\"\" + templateId]) {\n blazorTemplates[\"\" + templateId] = [];\n }\n if (!isNullOrUndefined(index)) {\n var keys = Object.keys(blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key !== blazorTemplateId && data[\"\" + key]) {\n blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)][\"\" + key] = data[\"\" + key];\n }\n if (key === blazorTemplateId) {\n blazorId = blazorTemplates[\"\" + templateId][parseInt(index.toString(), 10)][\"\" + key];\n }\n }\n }\n else {\n data[\"\" + blazorTemplateId] = blazorId;\n blazorTemplates[\"\" + templateId].push(data);\n }\n return propName === 'rowTemplate' ? [createElement('tr', { id: blazorId, className: 'e-blazor-template' })] :\n [createElement('div', { id: blazorId, className: 'e-blazor-template' })];\n }\n if (typeof result === 'string') {\n if (HAS_SVG.test(result)) {\n var ele = createElement('svg', { innerHTML: result });\n return ele.childNodes;\n }\n else {\n var ele = createElement((HAS_ROW.test(result) ? 'table' : 'div'), { innerHTML: result });\n return ele.childNodes;\n }\n }\n else {\n return result;\n }\n };\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {string} comp ?\n * @param {boolean} isEmpty ?\n * @param {Function} callBack ?\n * @returns {void} ?\n */\nexport function updateBlazorTemplate(templateId, templateName, comp, isEmpty, callBack) {\n if (isBlazor()) {\n var ejsIntrop = 'sfBlazor';\n window[\"\" + ejsIntrop].updateTemplate(templateName, blazorTemplates[\"\" + templateId], templateId, comp, callBack);\n if (isEmpty !== false) {\n blazorTemplates[\"\" + templateId] = [];\n }\n }\n}\n/**\n *\n * @param {string} templateId ?\n * @param {string} templateName ?\n * @param {number} index ?\n * @returns {void} ?\n */\nexport function resetBlazorTemplate(templateId, templateName, index) {\n var templateDiv = document.getElementById(templateId);\n if (templateDiv) {\n var innerTemplates = templateDiv.getElementsByClassName('blazor-inner-template');\n for (var i = 0; i < innerTemplates.length; i++) {\n var tempId = ' ';\n if (!isNullOrUndefined(index)) {\n tempId = innerTemplates[parseInt(index.toString(), 10)].getAttribute('data-templateId');\n }\n else {\n tempId = innerTemplates[parseInt(i.toString(), 10)].getAttribute('data-templateId');\n }\n var tempElement = document.getElementById(tempId);\n if (tempElement) {\n var length_1 = tempElement.childNodes.length;\n for (var j = 0; j < length_1; j++) {\n if (!isNullOrUndefined(index)) {\n innerTemplates[parseInt(index.toString(), 10)].appendChild(tempElement.childNodes[0]);\n i = innerTemplates.length;\n }\n else {\n innerTemplates[parseInt(i.toString(), 10)].appendChild(tempElement.childNodes[0]);\n }\n }\n }\n }\n }\n}\n/**\n * Set your custom template engine for template rendering.\n *\n * @param {ITemplateEngine} classObj - Class object for custom template.\n * @returns {void} ?\n * @private\n */\nexport function setTemplateEngine(classObj) {\n engineObj.compile = classObj.compile;\n}\n/**\n * Get current template engine for template rendering\n *\n * @returns {string} ?\n * @private\n */\nexport function getTemplateEngine() {\n return engineObj.compile;\n}\n/**\n * Set the current template function to support Content Security Policy.\n *\n * @param {Function} template - The template function that is going to render.\n * @param {any} helper - The data utilized by the template from the helper.\n * @returns {Function} ?\n * @private\n */\nexport function initializeCSPTemplate(template, helper) {\n var boundFunc;\n template.prototype.CSPTemplate = true;\n if (!isNullOrUndefined(helper)) {\n boundFunc = template.bind(helper);\n boundFunc.prototype = Object.create(template.prototype);\n }\n else {\n boundFunc = template;\n }\n return boundFunc;\n}\n//Default Engine Class\nvar Engine = /** @class */ (function () {\n function Engine() {\n }\n Engine.prototype.compile = function (templateString, helper, ignorePrefix) {\n if (helper === void 0) { helper = {}; }\n return render(templateString, helper);\n };\n return Engine;\n}());\nvar engineObj = { compile: new Engine().compile };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nimport { isNullOrUndefined } from './util';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'oncanplay',\n 'oncanplaythrough',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeypress',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onstart',\n 'onpropertychange',\n 'oncopy',\n 'ontoggle',\n 'onpointerout',\n 'onpointermove',\n 'onpointerleave',\n 'onpointerenter',\n 'onpointerrawupdate',\n 'onpointerover',\n 'onbeforecopy',\n 'onbeforecut',\n 'onbeforeinput'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n SanitizeHtmlHelper.sanitize = function (value) {\n if (isNullOrUndefined(value)) {\n return value;\n }\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n this.wrapElement = null;\n return tempEleValue.replace(/&amp;/g, '&');\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[parseInt(j.toString(), 10)].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[parseInt(j.toString(), 10)].removeAttribute(attribute[parseInt(i.toString(), 10)].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n"],"names":["instances","uid","isBlazorPlatform","createInstance","classFunction","params","arrayParam","unshift","undefined","Function","prototype","bind","apply","setImmediate","handler","unbind","num","Uint16Array","secret","window","msCrypto","crypto","getRandomValues","ret","i","parseInt","toString","messageHandler","event","source","data","length","addEventListener","postMessage","removeEventListener","getValue","nameSpace","obj","value","splits","replace","split","isUndefined","setValue","key","keys","start","fromObj","isNullOrUndefined","deleteObject","containerObject","isObject","constructor","merge","destination","temrObj","tempProp","deepmerge","_i","keys_1","Object","indexOf","Array","isArray","extend","copied","first","second","deep","result","arguments","args","_loop_1","obj1","forEach","clone","src","copy","isArrayChanged","blazorEventExtend","Event","hasOwnProperty","call","debounce","eventFunction","delay","out","_this","this","clearTimeout","setTimeout","compareElementParent","child","parent","node","document","parentNode","throwError","message","Error","e","stack","isBlazor","uniqueID","defaultNumberingSystem","latn","_digits","_type","defaultNumberSymbols","decimal","group","percentSign","plusSign","minusSign","infinity","nan","exponential","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","prop","res","propKeys_1","getSymbolRegex","props","regexStr","map","str","join","RegExp","getSymbolMatch","matchKeys_1","constructRegex","val","len","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","regExp","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","dateCorrection","blazorCurrencyData","DJF","ERN","ETB","NAD","ZAR","XAF","GHS","XDR","AED","BHD","DZD","EGP","ILS","IQD","JOD","KMF","KWD","LBP","LYD","MAD","MRU","OMR","QAR","SAR","SDG","SOS","SSP","SYP","TND","YER","CLP","INR","TZS","EUR","AZN","RUB","BYN","ZMW","BGN","NGN","XOF","BDT","CNY","BAM","UGX","USD","CZK","GBP","DKK","KES","CHF","MVR","BTN","XCD","AUD","BBD","BIF","BMD","BSD","BWP","BZD","CAD","NZD","FJD","FKP","GIP","GMD","GYD","HKD","IDR","JMD","KYD","LRD","MGA","MOP","MUR","MWK","MYR","PGK","PHP","PKR","RWF","SBD","SCR","SEK","SGD","SHP","SLL","ANG","SZL","TOP","TTD","VUV","WST","ARS","BOB","BRL","COP","CRC","CUP","DOP","GTQ","HNL","MXN","NIO","PAB","PEN","PYG","UYU","VES","IRR","GNF","CDF","HTG","XPF","HRK","HUF","AMD","ISK","JPY","GEL","CVE","KZT","KHR","KPW","KRW","KGS","AOA","LAK","MZN","MKD","MNT","BND","MMK","NOK","NPR","AWG","SRD","PLN","AFN","STN","MDL","RON","UAH","LKR","ALL","RSD","TJS","THB","TMT","TRY","UZS","VND","TWD","HijriParser","getHijriDate","gDate","day","getDate","month","getMonth","tMonth","tYear","getFullYear","julilanOffset","yPrefix","Math","floor","b","julianNumber","c","d","tempMonth","modifiedJulianDate","z","cyc","j","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","year","date","toGregorian","a","gDay","gYear","gMonth","Date","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","m","h","H","s","f","datePartMatcher","M","E","y","L","Z","G","DateFormat","dateFormat","culture","option","cldr","dependable","base","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","test","resPattern","isServerRendered","compareBlazorDateFormats","format","getResultantPattern","skeleton","type","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","pattern","numMapper","parser","parserObject","patternMatch_1","match","char","weekday","monthIndex","days","designator","eText","era","timeZone","isNaN","intDateFormatter","options","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","substring","substr","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","abs","ishour","errorText","ms","ls","mf","lf","NumberFormat","numberFormatter","lfrac","fOptions","cOptions","dOptions","numericObject","symbols","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","ignoreCurrency","percentSymbol","minusSymbol","formatRegex","customFormat","useGrouping","pData","getProperNumericSkeleton","isCurrency","isPercent","symbolPattern","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","defaultCurrency","nData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","isFinite","intNumberFormatter","p","negativeDataRegex","lastIndexOf","temp","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","text","range","curData","fValue","zeroData","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","decimalPart","slice","decimalSeparator","toExponential","customPivotFormat","groupNumbers","nlead","nend","min","max","toPrecision","level1","sep","decimalSymbol","level2","flag","prefix","toFixed","lead","_a","ceil","latnRegex","minute","hour","milliseconds","DateParser","dateParser","numOptions","parseOptions","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","hourOnly","tzone","hpattern","parseTimeZoneRegx","pos","parserRegex","dobj","tDate","ystrig","parsedDateParts","internalDateParse","is2DigitYear","getDateObject","setMilliseconds","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","retOptions","props_1","tmatch","curObject","matchString","internalNumberParser","toUpperCase","toLowerCase","getZoneValue","tZone","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolRegex","symbolpattern","getParsedNumber","tempValue","exponent","Infinity","NaN","end","isNegative","parseFloat","convertMaxFracDigits","decimalSplitValue","Observer","on","property","context","id","cntxt","notExist","boundedEvents","isHandlerPresent","push","ranArray","off","splice","indexLocation","notify","argument","successHandler","errorHandler","name","blazorCallback","curObject_1","objs","index","isTrigger","obj_1","promise","then","isJson","JSON","parse","dateReviver","catch","destroy","offIntlEvents","eventsArr","curContext","detectFunction","randomId","isRendered","boundedEvents_1","onIntlChange","cldrData","Internationalization","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","defaultCulture","cultureName","fractionRegex","patternRegex","firstDayMapper","typeMapper","blazorCultureFormats","en-US","D","F","g","r","R","t","T","u","U","Y","blazorCulture","iType","basicPatterns","dPattern","tPattern","mode","calendartype","blazorDefaultObject","defaultObject","dateString","numSystem","convertMapper","dateConverterMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","customRegex","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","trim","currencyCode","customNumberFormat","spaceCapture","spaceGrouping","integerPart","fractionPart","isCurrencyPercent","parts","actual","symbol","part","loc","processSymbol","fractionDigitsPattern","minDigits","maxDigits","diff","minimumIntegerPattern","integer","x","groupingPattern","'"," a","yy","EEEE","sun","mon","tue","wed","thu","fri","sat","currencyFormatRegex","curWithoutNumberRegex","$","%","-","0","1","dates","calendars","gregorian","months","stand-alone","abbreviated","2","3","4","5","6","7","8","9","10","11","12","narrow","wide","short","dayPeriods","am","pm","eras","eraNames","0-alt-variant","1-alt-variant","eraAbbr","eraNarrow","dateFormats","full","long","medium","timeFormats","dateTimeFormats","availableFormats","Ed","Ehm","EHm","Ehms","EHms","Gy","GyMMM","GyMMMd","GyMMMEd","hm","Hm","hms","Hms","hmsv","Hmsv","hmv","Hmv","Md","MEd","MMM","MMMd","MMMEd","MMMMd","yM","yMd","yMEd","yMMM","yMMMd","yMMMEd","yMMMM","islamic","yyyy","yyyyM","yyyyMd","yyyyMEd","yyyyMMM","yyyyMMMd","yyyyMMMEd","yyyyMMMM","yyyyQQQ","yyyyQQQQ","timeZoneNames","currencies","displayName","symbol-alt-narrow","minimumGroupingDigits","symbols-numberSystem-latn","list","superscriptingExponent","perMille","decimalFormats-numberSystem-latn","standard","percentFormats-numberSystem-latn","currencyFormats-numberSystem-latn","accounting","scientificFormats-numberSystem-latn","mapperDigits","currencypData","percentpData","percentnData","currencynData","decimalnData","decimalpData","C","P","N","A","formatSplit","dateObj","options_1","actualPattern","tLength","timeZonePattern","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","getTime","nday","headerRegex","Ajax","send","eventArgs","cancel","httpRequest","Promise","resolve","reject","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","open","url","contentType","setRequestHeader","beforeSend","onSuccess","failureHandler","reason","onFailure","responseText","dataType","error","readyState","status","emitError","statusText","getResponseHeader","responseHeaders","headers","exec","getAllResponseHeaders","header","async","Fetch","contentTypes","application/json","multipart/form-data","application/octet-stream","application/x-www-form-urlencoded","isNOU","fetchRequest","Request","method","Content-Type","body","triggerEvent","fetchResponse","fetch","response","ok","responseType","get","returnVal","callback","instance","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","Browser","browserDetails","extractBrowserDetail","browserInfo","clientInfo","userAgent","version","language","navigator","getEvent","events","isPointer","isTouch","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","isIos","regX","platform","maxTouchPoints","defineProperty","uA","set","enumerable","configurable","info","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","element","__eventList","add","eventName","listener","bindTo","intDebounce","eventData","debounceListener","isIE","passive","remove","some","clearEvents","copyData","parseValue","shift","trigger","eventProp","eventData_1","event_1","SVG_REG","createElement","tagName","properties","createElementNS","innerHTML","className","styles","setAttribute","attrs","attributes","addClass","elements","classes","classList","getClassList","ele","_b","classList_1","curClass","contains","removeClass","classList_2","classArr","isVisible","style","visibility","offsetWidth","executeScript","querySelectorAll","script","head","appendChild","detach","removeChild","select","selector","needsVDOM","querySelectId","querySelector","selectAll","charRegex","idList","setId","splitId","closest","el","nodeType","setStyleAttribute","msMatchesSelector","webkitMatchesSelector","isColEName","Base","setProperties","muteOnChange","prevDetection","isProtectedOnChange","changedProperties","dataBind","serverDataBind","finalUpdate","oldProperties","callChildDataBind","clearChanges","childChangedProperties","newChanges","oldChanges","getOwnPropertyNames","onPropertyChanged","bulkChanges","sfBlazor","allowServerDataBinding","updateModel","saveChanges","newValue","oldValue","modelObserver","isDestroyed","addInstance","moduleClass","getModuleName","ej2_instances","filter","proxyToRaw","isComplexArraySetter","refreshing","ignoreCollectionWatch","getComponent","elem","comp","getElementById","getObject","curKey","defaultValue","getObjectArray","isSetter","isFactory","inst","curType","propertyGetter","complexArrayGetter","ignore","defCollection","controlParent","extendFunc","dFunc","descriptor","keyString","propName","getParentKey","newValueParse","model","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","target","propertyDescriptor","oldVal","addPropertyCollection","Complex","eventDescriptor","finalContext","getParentContext","curText","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","propertyName","getBuilderProperties","component","builderObject","propCollections","isPropertyArray","rex","_c","childType","extendStatics","setPrototypeOf","__proto__","_super","Animation_1","__decorate","decorators","desc","getOwnPropertyDescriptor","Reflect","decorate","Animation","__","create","animate","getModel","elements_1","element_1","delayAnimation","stop","animation","removeAttribute","animationId","getAttribute","frameId","cancelAnimationFrame","animationMode","GlobalAnimationMode","Disable","begin","applyAnimation","step","timeStamp","timerId","prevTimeStamp","duration","startAnimation","avg","timingFunction","progress","requestAnimationFrame","fail","easing","newProp","oldProp","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","rippleHandler","radius","diameter","rippleOptions","offset","getBoundingClientRect","offsetX","pageX","scrollLeft","offsetY","pageY","scrollTop","documentElement","left","right","top","bottom","sqrt","isCenterRipple","rippleElement","getComputedStyle","getPropertyValue","transform","rippleLeaveHandler","rippleUpHandler","removeRipple","rippleElements","opacity","getElementsByClassName","done","ModuleLoader","inject","requiredModules","moduleList","reqLength","clean","loadedModules","clearUnusedModule","modl","moduleList_1","moduleObject","module","modName","member","isModuleLoaded","memberName","getMemberName","isProperty","loadedModule","modules","getNonInjectedModules","usedModules","arg","removableModule_1","mod","ChildProperty","updateChange","parentObj","updateTimeOut","changeTime_1","curIndex","isParentArray","restrictServerDataBind","isSaveChanges","action","parentKey","complexKeys","parent_1","isFinal","valueLength","accountURL","componentList","bypassKey","LicenseValidator","validate","isValidated","convertToChar","validateMsg","validateURL","manager","getKey","npxManager","getInfoFromKey","result_1","invalidPlatform","errors","platformMismatched","versionMismatched","expiryDate","expDate","currDate","trailExpired","invalidKey","licenseContent","noLicense","errorDiv","isLicensed","getDecryptedData","atob","decryptedStr","pkey","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","k","buffr","decryptedKey","charCodeAt","String","fromCharCode","licKey","npxLicKey","setKey","licenseValidator","cArr","cArr_1","arr","registerLicense","validateLicense","createLicenseOverlay","errorBackground","lastPageID","__extends","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","Component","enablePersistence","setPersistData","detachUnloadEvent","localObserver","moduleLoader","refresh","preRender","injectModules","render","accessMount","mount","isReactHybrid","getRootElement","actualElement","getLocalData","eleId","versionBasedStatePersistence","localStorage","getItem","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","appendTo","needsID","getUniqueID","mergePersistData","ignoredComponents","schedule","diagram","PdfViewer","grid","richtexteditor","treegrid","gantt","chart","accumulationchart","query-builder","modulesRequired","moduleName","componentName","charAt","console","warn","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","setState","currentContext","calls","setItem","getPersistData","renderReactTemplates","clearTemplate","templateName","definedName","isHistoryChanged","pageID","location","href","history","hash","addOnPersist","persistObj","objValue","getActualProperties","stringify","ignoreOnPersist","iterateJsonProperties","ignoreList","newObj","this_1","newList","isStringTemplate","isAngular","isReact","isVue","enableRtl","rightToLeft","locale","defaultPosition","isDraggedObject","isDragged","Position","Draggable","Draggable_1","toggleEvents","droppables","scope","getDefaultPosition","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","currentTarget","tapHoldTimer","externalInitialize","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","vertical","horizontal","parentScrollY","tempScrollHeight","scrollHeight","parentScrollX","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","dragProcessStarted","abort","abortSelectors","preventDefault","changedTouches","intCoord","getCoordinates","initialPosition","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","dragTargetElement","posValue","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","position","getMousePosition","isDragScroll","distance","getHelperElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","dragLimit","borderWidth","enableTailMode","diffX","diffY","eleTop","enableScrollHandler","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","width","height","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","pagex","pagey","draEleLeft","helperHeight","draEleTop","dragValue","scrollParent","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","iTop","iLeft","prevTop","prevLeft","isDialogEle","tempDraEleTop","scrollIntoView","getPathElements","getScrollParent","getScrollPosition","reverse","hasScroll","nodeEl","clientHeight","scrollingElement","overflow","nodeEle","docScrollTop","helperClientHeight","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","elementArea","eleWidthBound","eleHeightBound","tborder","tpadding","lowerKey","padding","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","isVerticalScroll","clientWidth","cursorAt","sender","reset","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","wireEvents","mouseOver","accept","isDrag","area","isDropArea","canDrop","droppedElement","display","coord","KeyboardEvents_1","keyCode","backspace","tab","enter","control","alt","pause","capslock","space","escape","pageup","pagedown","home","leftarrow","uparrow","rightarrow","downarrow","insert","delete","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","semicolon","plus","comma","minus","dot","forwardslash","graveaccent","openbracket","backslash","closebracket","singlequote","KeyboardEvents","unwireEvents","keyPressHandler","getKeyConfigData","config","keyData","configCache","altKey","ctrlKey","shiftKey","Number","getKeyCode","keyVal","isAltKey","isCtrlKey","isShiftKey","curkeyCode","which","keyConfigs","configCollection_1","rconfig","rKeyObj","keyAction","L10n","setLocale","intLocale","intGetControlConstant","currentLocale","localeStrings","load","localeObject","getConstant","controlName","SwipeSettings","swipeRegex","Touch","startEvent","isScrollable","eleStyle","overflowX","overflowY","tapHoldEvent","tapCount","touchAction","moveEvent","endEvent","originalEvent","cancelEvent","calcPoints","point","updateChangeTouches","defaultArgs","distanceX","startPoint","distanceY","movedDirection","calcScrollPoints","lastMovedPoint","hScrollLocked","vScrollLocked","scrollDirection","getVelocity","pnt","newX","newY","newT","now","xDist","yDist","interval","tStampStart","checkSwipe","isTouchMoved","startEventData","timeOutTapHold","eScrollArgs","movedPoint","startEvents","startX","startY","velocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","scrollBool","moved","swipeArgs","swipeDirection","tDistance","swipeSettings","swipeThresholdDistance","eSwipeArgs","canTrigger","modeClear","lastTapTime","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","template","ignorePrefix","evalExpResult","varCOunt","localKeys","isClass","singleSpace","insideBraces","outputString","cnt","matchStr","rlStr","rlStr_1","fNameSpace","ftArray","addNameSpace","strs","HandleSpecialCharArrObj","mtc","fnStr","NameSpaceForspecialChar","SlashReplace","addNS","tempStr","nameSpaceNew","quotes","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","random","Engine","templateString","engineObj","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","item","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","children","localName","attr","hasAttribute","oldValueCollection","newValCollection","builderFunction","fromElements","toElement","isEval","docFrag","createDocumentFragment","NodeList","addClasses","removeClasses","cloneNode","compiler","templateId","root","blazorTemplateId","childNodes","blazorId","isRipple","isRippleEnabled","isObj","attrVal","Node","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","enumObject","enumValue","symbPattern","dateSeparator","boundFunc","CSPTemplate","data_1","insertBefore","firstElementChild","printWindow","div","links","getElementsByTagName","blinks","l","reference","outerHTML","write","close","focus","setInterval","ready","print","clearInterval","array","keys_2","encodeURIComponent","childEle","compName","compInstance","templateDiv","innerTemplates","tempId","tempElement","rippleModel","rippleFlag","toRaw","classObj","siblings","childNodes_1","curNode","ELEMENT_NODE","isEmpty","callBack","updateTemplate"],"mappings":"+LAAA,IAAIA,EAAY,gBACZC,EAAM,EACNC,EAAmB,CAAA,EAkBhB,SAASC,EAAeC,EAAeC,GAG1C,OADAC,EAAWC,QAAQC,KAAAA,CAAS,EACrB,IAAKC,SAASC,UAAUC,KAAKC,MAAMR,EAAeE,CAAW,EACxE,CAQO,SAASO,EAAaC,GACzB,IAAIC,EACAC,EAAM,IAAIC,YAAY,CAAC,EAGvBC,IAFYC,OAAOC,UAAYD,OAAOE,QAChCC,gBAAgBN,CAAG,EAChB,MAobjB,SAAsBA,GAElB,IADA,IAAIO,EAAM,GACDC,EAAI,EAAGA,EAAI,EAAGA,CAAC,GACpBD,IAAQC,EAAI,IAAM,IAAMR,EAAIS,SAASD,EAAEE,WAAY,EAAE,GAEzD,OAAOH,CACX,EA1bsCP,CAAG,GACjCW,EAAiB,SAAUC,GACvBA,EAAMC,SAAWV,QAAgC,UAAtB,OAAOS,EAAME,MAAqBF,EAAME,KAAKC,QAAU,IAAMH,EAAME,OAASZ,IACvGJ,IACAC,MAKR,OAFAI,OAAOa,iBAAiB,UAAWL,EAAgB,CAAA,CAAK,EACxDR,OAAOc,YAAYf,EAAQ,GAAG,EACvBH,EAAS,WACZI,OAAOe,oBAAoB,UAAWP,CAAc,EACpDb,EAAUa,EAAiBT,EAASV,KAAAA,EAE5C,CASO,SAAS2B,EAASC,EAAWC,GAGhC,IAFA,IAAIC,EAAQD,EACRE,EAASH,EAAUI,QAAQ,MAAO,GAAG,EAAEA,QAAQ,MAAO,EAAE,EAAEC,MAAM,GAAG,EAC9DjB,EAAI,EAAGA,EAAIe,EAAOR,QAAU,CAACW,EAAYJ,CAAK,EAAGd,CAAC,GACvDc,EAAQA,EAAMC,EAAOd,SAASD,EAAEE,WAAY,EAAE,IAElD,OAAOY,CACX,CAUO,SAASK,EAASP,EAAWE,EAAOD,GAOvC,IANA,IAKIO,EALAC,EAAOT,EAAUI,QAAQ,MAAO,GAAG,EAAEA,QAAQ,MAAO,EAAE,EAAEC,MAAM,GAAG,EACjEK,EAAQT,GAAO,GACfU,EAAUD,EAEVf,EAASc,EAAKd,OAEbP,EAAI,EAAGA,EAAIO,EAAQP,CAAC,GACrBoB,EAAMC,EAAKpB,SAASD,EAAEE,WAAY,EAAE,GAChCF,EAAI,IAAMO,EACVgB,EAAQ,GAAKH,GAAiBpC,KAAAA,IAAV8B,EAAsB,GAAKA,EAE1CU,EAAkBD,EAAQ,GAAKH,EAAI,IACxCG,EAAQ,GAAKH,GAAO,IAExBG,EAAUA,EAAQ,GAAKH,GAE3B,OAAOE,CACX,CASO,SAASG,EAAaZ,EAAKO,GAC9B,OAAOP,EAAI,GAAKO,EACpB,KAIWM,EAAoC,aAAlB,OAAO/B,OAAyBA,OAAS,GAQ/D,SAASgC,EAASd,GAErB,MAAQ,CAACW,EAAkBX,CAAG,GAAKA,EAAIe,cAD1B,GACiDA,WAClE,CAoBO,SAASC,EAAMxB,EAAQyB,GAC1B,GAAI,CAACN,EAAkBM,CAAW,EAK9B,IAJA,IAAIC,EAAU1B,EACV2B,EAAWF,EAEXG,EAAY,YACPC,EAAK,EAAGC,EAFNC,OAAOf,KAAKS,CAAW,EAEFI,EAAKC,EAAO5B,OAAQ2B,CAAE,GAAI,CACtD,IAAId,EAAMe,EAAOD,GACZV,EAAkBO,EAAaE,EAAU,GAA+C,CAAC,IAA1CF,EAAaE,GAAWI,QAAQjB,CAAG,GAClFO,CAAAA,EAASK,EAAS,GAAKZ,EAAI,GAAKkB,CAAAA,MAAMC,QAAQP,EAAS,GAAKZ,EAAI,EAIjEW,EAAQ,GAAKX,GAAOY,EAAS,GAAKZ,GAHlCoB,EAAOT,EAAQ,GAAKX,GAAMW,EAAQ,GAAKX,GAAMY,EAAS,GAAKZ,GAAM,CAAA,CAAI,EAOrF,CAWO,SAASoB,EAAOC,EAAQC,EAAOC,EAAQC,GAuC1C,IAtCA,IAAIC,EAASJ,GAA4B,UAAlB,OAAOA,EAAsBA,EAAS,GACzDlC,EAASuC,UAAUvC,OACnBwC,EAAO,CAACN,EAAQC,EAAOC,EAAQC,GAoC1B5C,GAnCL4C,IACArC,GAAkB,GAkCT,GAAGP,EAAIO,EAAQP,CAAC,GACzBgD,CAjCU,SAAUhD,GACpB,GAAI,CAAC+C,EAAK9C,SAASD,EAAEE,WAAY,EAAE,GAC/B,OAEJ,IAAI+C,EAAOF,EAAK9C,SAASD,EAAEE,WAAY,EAAE,GACzCkC,OAAOf,KAAK4B,CAAI,EAAEC,QAAQ,SAAU9B,GAChC,IAEI+B,EAFAC,EAAMP,EAAO,GAAKzB,GAClBiC,EAAOJ,EAAK,GAAK7B,GAEjBkC,EAAiBhB,MAAMC,QAAQc,CAAI,GAAKf,MAAMC,QAAQa,CAAG,GAAMC,EAAK9C,SAAW6C,EAAI7C,OACnFgD,EAwNL7E,CAAAA,KAxNyC0E,aAAeI,OAAWF,GAC9DV,GAAQW,IAAsB5B,EAAS0B,CAAI,GAAKf,MAAMC,QAAQc,CAAI,GAC9D1B,EAAS0B,CAAI,GACbF,EAAQC,GAAY,GAChBd,MAAMC,QAAQY,CAAK,GAAKf,OAAOlD,UAAUuE,eAAeC,KAAKP,EAAO,gBAAgB,EACpFX,EAAOW,EAAO,GAAIE,EAAMT,CAAI,EAG5BC,EAAO,GAAKzB,GAAOoB,EAAOW,EAAO,GAAIE,EAAMT,CAAI,IAKnDO,EA2MTzE,EA3M8B0E,GAAOhB,OAAOf,KAAKgC,CAAI,EAAE9C,OAAS6C,GAAY,GACnEP,EAAO,GAAKzB,GAAOoB,EAAO,GAAIW,EAAOE,EAAOF,GAASA,EAAM5C,QAAY8C,GAAQA,EAAK9C,MAAO,GAI/FsC,EAAO,GAAKzB,GAAOiC,EAE1B,GAGOrD,CAAC,EAEb,OAAO6C,CACX,CAQO,SAASrB,EAAkBV,GAC9B,OAAOA,MAAAA,CACX,CAQO,SAASI,EAAYJ,GACxB,OAAQ,KAAA,IAAuBA,CACnC,CAmBO,SAAS6C,EAASC,EAAeC,GACpC,IAAIC,EACJ,OAAO,WAGH,IAFA,IAAIC,EAAQC,KACRjB,EAAO,GACFb,EAAK,EAAGA,EAAKY,UAAUvC,OAAQ2B,CAAE,GACtCa,EAAKb,GAAMY,UAAUZ,GAMzB+B,aAAaH,CAAG,EAChBA,EAAMI,WALM,WAER,OADAJ,EAAM,KACCF,EAAcxE,MAAM2E,EAAOhB,CAAI,GAGlBc,CAAK,EAErC,CAyCO,SAASM,EAAqBC,EAAOC,GAExC,OADWD,IACEC,GAGJC,EAJEF,IAIOG,UAAaD,CAJpBF,IAQAD,EARAC,EAQ0BI,WAAYH,CAAM,CAE3D,CAQO,SAASI,EAAWC,GACvB,IACI,MAAM,IAAIC,MAAMD,CAAO,EAE3B,MAAOE,GACH,MAAM,IAAID,MAAMC,EAAEF,QAAU,KAAOE,EAAEC,KAAK,EAElD,CAoEO,SAASC,IACZ,OAAOpG,CACX,CA0DO,SAASqG,IACZ,IAGIvF,EAHJ,GAAwB,aAApB,OAAQG,OAKZ,OAFIH,EAAM,IAAIC,YAAY,CAAC,GACXE,OAAOC,UAAYD,OAAOE,QACzBC,gBAAgBN,CAAG,CACxC,CC/cA,IAAIwF,EAAyB,CACzBC,KAAQ,CACJC,QAAW,aACXC,MAAS,UAEjB,EAEIC,EAAuB,CACvBC,QAAW,IACXC,MAAS,IACTC,YAAe,IACfC,SAAY,IACZC,UAAa,IACbC,SAAY,IACZC,IAAO,MACPC,YAAe,GACnB,EACIC,EAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAM/CC,GAUAA,EAAWC,cAAgB,SAAUlF,EAAKmF,GAEtC,OAAOrF,ED0WJjC,EC3WsBsH,EAAQ,QAAUA,EACpBnF,CAAG,GAQ9BiF,EAAWG,mBAAqB,SAAUpF,GACtC,OAAOF,EAAS,gCAAiCE,CAAG,GAAKmD,KAAKkC,kBASlEJ,EAAWK,cAAgB,SAAUC,EAAM/E,GAGvC,IAFA,IACIgF,EAAM,GACDnE,EAAK,EAAGoE,EAFFjF,GAAQe,OAAOf,KAAK+E,CAAI,EAEClE,EAAKoE,EAAW/F,OAAQ2B,CAAE,GAAI,CAClE,IAAId,EAAMkF,EAAWpE,GAChBE,OAAOlD,UAAUuE,eAAeC,KAAK2C,EAAKD,EAAK,GAAKhF,EAAI,IACzDiF,EAAID,EAAK,GAAKhF,IAAQA,GAG9B,OAAOiF,GAQXP,EAAWS,eAAiB,SAAUC,GAC9BC,EAAWD,EAAME,IAAI,SAAUC,GAC/B,OAAOA,EAAI3F,QAAQ,4BAA6B,MAAM,EACzD,EAAE4F,KAAK,GAAG,EAEX,OAAO,IADMC,OACKJ,EAAU,GAAG,GAOnCX,EAAWgB,eAAiB,SAAUV,GAGlC,IAFA,IACIrG,EAAM,GACDmC,EAAK,EAAG6E,EAFD3E,OAAOf,KAAK+D,CAAoB,EAENlD,EAAK6E,EAAYxG,OAAQ2B,CAAE,GAAI,CACrE,IAAId,EAAM2F,EAAY7E,GACtBnC,EAAIqG,EAAK,GAAKhF,IAAQgE,EAAqB,GAAKhE,GAEpD,OAAOrB,GAQX+F,EAAWkB,eAAiB,SAAUC,GAGlC,IAFA,IAAIC,EAAMD,EAAI1G,OACVR,EAAM,GACDC,EAAI,EAAGA,EAAIkH,EAAKlH,CAAC,GAElBD,GADAC,IAAMkH,EAAM,EACLD,EAAIhH,SAASD,EAAEE,WAAY,EAAE,GAAK,IAGlC+G,EAAIhH,SAASD,EAAEE,WAAY,EAAE,GAG5C,OAAOH,GAUX+F,EAAWqB,kBAAoB,SAAUrG,EAAOsG,EAAOvG,GACnD,OAAOC,EAAME,QAAQoG,EAAO,SAAUT,GAClC,OAAO9F,EAAI,GAAK8F,GACnB,GAQLb,EAAWuB,0BAA4B,SAAUxG,GAC7C,IAAId,EAAM,GAGV,OAFAA,EAAIc,IAAMF,EAAS,UAAWE,CAAG,EACjCd,EAAIuH,QAAU3G,EAAS,yBAA0BZ,EAAIc,GAAG,EACjDd,GAWX+F,EAAWyB,yBAA2B,SAAUC,EAAQC,EAAcC,EAAaC,GAC/E,IAMYC,EANR7H,EAAM,GACN8H,EAAM7D,KAAKqD,0BAA0BG,CAAM,EAgB/C,OAfKtG,EAAY2G,EAAIP,OAAO,GAAKK,CAAAA,GAExBzG,EADD4G,EAASH,EAAahH,EAAS,mBAAoBkH,CAAG,EAAIlH,EAASkH,EAAIP,QAAU,WAAYG,CAAY,CACtF,IACnB1H,EAAIgI,YAAc/D,KAAKmC,cAAc2B,EAAQjC,CAAgB,EACzD+B,EAASf,OACb9G,EAAIiI,iBAAmB,IAAIJ,EAAO5D,KAAKgD,eAAec,CAAM,EAAG,GAAG,EAClE/H,EAAIkI,aAAe,IAAMH,EAAO,GAAK,IAAMA,EAAO,GAAK,IACnDJ,IACA3H,EAAIkI,aAAeH,EAAO,GAAK,IAAMA,EAAO,GAC5C/H,EAAImI,mBAAqBvH,EAASgH,EAAa,gBAAkB,wBAA0BE,EAAIP,QAASO,EAAIhH,GAAG,EAC/Gd,EAAIoI,YAAcnE,KAAK8C,eAAe/G,EAAImI,kBAAkB,EAC5DnI,EAAI0H,aAAeI,EAAIP,UAI5BvH,GAUX+F,EAAWsC,gBAAkB,SAAUZ,EAAQC,EAAcY,GACzD,IAAItI,EAAM,CAAEuI,OAAQ,IAChBT,EAAM7D,KAAKqD,0BAA0BG,CAAM,EAC/C,GAAI,CAACtG,EAAY2G,EAAIP,OAAO,EAAG,CAC3BvH,EAAI0H,aAAeI,EAAIP,QACvBvH,EAAIwI,cAAgB5H,EAAS,wBAA0BkH,EAAIP,QAASO,EAAIhH,GAAG,EAC3Ed,EAAIyI,cAAgB7H,EAAS,gBAAiBZ,EAAIwI,aAAa,EAC/D,IAAIT,EAASnH,EAASkH,EAAIP,QAAU,WAAYG,CAAY,EAC5D,GAAI,CAACvG,EAAY4G,CAAM,EACnB,IAAK,IAAI5F,EAAK,EAAGuG,EAAqB5C,EAAkB3D,EAAKuG,EAAmBlI,OAAQ2B,CAAE,GAAI,CAC1F,IAAIlC,EAAIyI,EAAmBvG,GAC3BnC,EAAIuI,OAAOrI,SAASD,EAAEE,WAAY,EAAE,GAAK4H,EAAO7H,SAASD,EAAEE,WAAY,EAAE,IAIrF,OAAOH,GAEX+F,EAAW4C,MAAQ,cACnB5C,EAAW6C,OAAS,eACpB7C,EAAWI,iBAAmBlB,EACvBc,GAxKP,SAASA,KA8Kb,ICpMQ8C,EDoMJC,EAAqB,CACrBC,IAAO,MACPC,IAAO,MACPC,IAAO,KACPC,IAAO,IACPC,IAAO,IACPC,IAAO,OACPC,IAAO,MACPC,IAAO,MACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,IACPC,IAAO,OACPC,IAAO,OACPC,IAAO,KACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,IACPC,IAAO,IACPC,IAAO,OACPC,IAAO,OACPC,IAAO,OACPC,IAAO,IACPC,IAAO,IACPC,IAAO,MACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,MACPC,IAAO,IACPC,IAAO,MACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,MACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,MACPC,IAAO,MACPC,IAAO,MACPC,IAAO,KACPC,IAAO,MACPC,IAAO,MACPC,IAAO,IACPC,IAAO,IACPC,IAAO,MACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,OACPC,IAAO,KACPC,IAAO,KACPC,IAAO,KACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,KACPC,IAAO,IACPC,IAAO,KACPC,IAAO,KACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,OACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,KACPC,IAAO,MACPC,IAAO,IACPC,IAAO,KACPC,IAAO,KACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,MACPC,IAAO,KACPC,IAAO,IACPC,IAAO,IACPC,IAAO,OACPC,IAAO,OACPC,IAAO,KACPC,IAAO,KACPC,IAAO,IACPC,IAAO,OACPC,IAAO,KACPC,IAAO,KACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,MACPC,IAAO,KACPC,IAAO,IACPC,IAAO,MACPC,IAAO,MACPC,IAAO,IACPC,IAAO,IACPC,IAAO,IACPC,IAAO,KACPC,IAAO,KACPC,IAAO,OACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,MACPC,IAAO,IACPC,IAAO,MACPC,IAAO,OACPC,IAAO,OACPC,IAAO,MACPC,IAAO,IACPC,IAAO,KACPC,IAAO,IACPC,IAAO,MACPC,IAAO,IACPC,IAAO,KACX,EChWWC,EAsMRA,gBAAgBA,cAAc,IArMzB5J,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO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V,KAAA,IAAXA,EAA8B,GACJA,CAAM,GAI5C,IAAI6Q,GAAY,CAAElC,SAAS,IAFhBgC,IAE6BhC,SCxKpCmC,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQrwB,SAAU,yBAC/B,CAAEqwB,UAAW,aAAcrwB,SAAU,+BACrC,CAAEqwB,UAAW,QAASrwB,SAAU,0BAChC,CAAEqwB,UAAW,QAASrwB,SAAU,0BAChC,CAAEqwB,UAAW,OAAQrwB,SAAU,qCAE/BswB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAGAA,GAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACN7xB,WAAY8xB,MAIxBG,GAAmBI,SAAW,SAAU5xD,GACpC,IAGI6xD,EAHJ,OAAInxD,EAAkBV,CAAK,EAChBA,GAEP6xD,EAAO3uD,KAAKuuD,iBACHvuD,KAAK4uD,eAAeD,EAAM7xD,CAAK,IAGhDwxD,GAAmBM,eAAiB,SAAUD,EAAM7xD,GAChDkD,KAAKmuD,YAAcQ,EAAKH,UAAUnyB,WAClCr8B,KAAKkuD,WAAaS,EAAKH,UAAUC,KACjCzuD,KAAK6uD,YAActuD,SAASq7B,cAAc,KAAK,EAC/C57B,KAAK6uD,YAAY7yB,UAAYl/B,EAC7BkD,KAAK8uD,gBACL9uD,KAA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"}