1 line
415 KiB
Plaintext
1 line
415 KiB
Plaintext
{"version":3,"file":"polyfill-force-sikb23vS.js","sources":["../../node_modules/@formatjs/ecma402-abstract/CanonicalizeLocaleList.js","../../node_modules/decimal.js/decimal.mjs","../../node_modules/@formatjs/ecma402-abstract/constants.js","../../node_modules/@formatjs/ecma402-abstract/utils.js","../../node_modules/@formatjs/ecma402-abstract/262.js","../../node_modules/@formatjs/ecma402-abstract/GetOption.js","../../node_modules/@formatjs/ecma402-abstract/GetOptionsObject.js","../../node_modules/@formatjs/ecma402-abstract/IsSanctionedSimpleUnitIdentifier.js","../../node_modules/@formatjs/ecma402-abstract/NumberFormat/decimal-cache.js","../../node_modules/@formatjs/ecma402-abstract/NumberFormat/ComputeExponentForMagnitude.js","../../node_modules/@formatjs/ecma402-abstract/NumberFormat/ToRawFixed.js","../../node_modules/@formatjs/ecma402-abstract/regex.generated.js","../../node_modules/@formatjs/ecma402-abstract/NumberFormat/format_to_parts.js","../../node_modules/@formatjs/ecma402-abstract/SupportedLocales.js","../../node_modules/@formatjs/intl-segmenter/src/cldr-segmentation-rules.generated.js","../../node_modules/@formatjs/intl-segmenter/src/segmentation-utils.js","../../node_modules/@formatjs/intl-segmenter/src/segmenter.js","../../node_modules/@formatjs/intl-segmenter/polyfill-force.js"],"sourcesContent":["/**\n* http://ecma-international.org/ecma-402/7.0/index.html#sec-canonicalizelocalelist\n* @param locales\n*/\nexport function CanonicalizeLocaleList(locales) {\n\t// TODO\n\treturn Intl.getCanonicalLocales(locales);\n}\n","/*!\r\n * decimal.js v10.6.0\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2025 Michael Mclaughlin <M8ch88l@gmail.com>\r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n // See https://github.com/MikeMcl/decimal.js/pull/217\r\n x = new Ctor(1).minus(x).div(x.plus(1)).sqrt().atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, -1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 1);\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|bigint|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|bigint|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|bigint|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` (`n` is -1) and `min` (`n` is 1).\r\n */\r\nfunction maxOrMin(Ctor, args, n) {\r\n var k, y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n\r\n // NaN?\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n }\r\n\r\n k = x.cmp(y);\r\n\r\n if (k === n || k === 0 && x.s === n) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // TODO BigInt str: no need to check for decimal point, exponential form or leading zeros.\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|bigint|Decimal} The y-coordinate.\r\n * x {number|string|bigint|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * min {number|string|bigint|Decimal}\r\n * max {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|bigint|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n // Infinity or NaN?\r\n if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n if (t === 'string') {\r\n if ((i = v.charCodeAt(0)) === 45) { // minus sign\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n if (i === 43) v = v.slice(1); // plus sign\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n if (t === 'bigint') {\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n }\r\n\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|bigint|Decimal} The argument of the logarithm.\r\n * y {number|string|bigint|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, -1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 1);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} The base.\r\n * y {number|string|bigint|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n * y {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|bigint|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|bigint|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n","import { Decimal } from \"decimal.js\";\nexport const TEN = new Decimal(10);\nexport const ZERO = new Decimal(0);\nexport const NEGATIVE_ZERO = new Decimal(-0);\n","import { memoize, strategies } from \"@formatjs/fast-memoize\";\nexport function repeat(s, times) {\n\tif (typeof s.repeat === \"function\") {\n\t\treturn s.repeat(times);\n\t}\n\tconst arr = Array.from({ length: times });\n\tfor (let i = 0; i < arr.length; i++) {\n\t\tarr[i] = s;\n\t}\n\treturn arr.join(\"\");\n}\nexport function setInternalSlot(map, pl, field, value) {\n\tif (!map.get(pl)) {\n\t\tmap.set(pl, Object.create(null));\n\t}\n\tconst slots = map.get(pl);\n\tslots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n\tfor (const k of Object.keys(props)) {\n\t\tsetInternalSlot(map, pl, k, props[k]);\n\t}\n}\nexport function getInternalSlot(map, pl, field) {\n\treturn getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl, ...fields) {\n\tconst slots = map.get(pl);\n\tif (!slots) {\n\t\tthrow new TypeError(`${pl} InternalSlot has not been initialized`);\n\t}\n\treturn fields.reduce((all, f) => {\n\t\tall[f] = slots[f];\n\t\treturn all;\n\t}, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n\treturn patternPart.type === \"literal\";\n}\n/*\n17 ECMAScript Standard Built-in Objects:\nEvery built-in Function object, including constructors, that is not\nidentified as an anonymous function has a name property whose value\nis a String.\n\nUnless otherwise specified, the name property of a built-in Function\nobject, if it exists, has the attributes { [[Writable]]: false,\n[[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, { value }) {\n\tObject.defineProperty(target, name, {\n\t\tconfigurable: true,\n\t\tenumerable: false,\n\t\twritable: true,\n\t\tvalue\n\t});\n}\n/**\n* 7.3.5 CreateDataProperty\n* @param target\n* @param name\n* @param value\n*/\nexport function createDataProperty(target, name, value) {\n\tObject.defineProperty(target, name, {\n\t\tconfigurable: true,\n\t\tenumerable: true,\n\t\twritable: true,\n\t\tvalue\n\t});\n}\nexport const UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\nexport function invariant(condition, message, Err = Error) {\n\tif (!condition) {\n\t\tthrow new Err(message);\n\t}\n}\nexport const createMemoizedNumberFormat = memoize((...args) => new Intl.NumberFormat(...args), { strategy: strategies.variadic });\nexport const createMemoizedPluralRules = memoize((...args) => new Intl.PluralRules(...args), { strategy: strategies.variadic });\nexport const createMemoizedLocale = memoize((...args) => new Intl.Locale(...args), { strategy: strategies.variadic });\nexport const createMemoizedListFormat = memoize((...args) => new Intl.ListFormat(...args), { strategy: strategies.variadic });\n","import { Decimal } from \"decimal.js\";\nimport { ZERO } from \"./constants.js\";\nimport { invariant } from \"./utils.js\";\n/**\n* https://tc39.es/ecma262/#sec-tostring\n*/\nexport function ToString(o) {\n\t// Only symbol is irregular...\n\tif (typeof o === \"symbol\") {\n\t\tthrow TypeError(\"Cannot convert a Symbol value to a string\");\n\t}\n\treturn String(o);\n}\n/**\n* https://tc39.es/ecma262/#sec-tonumber\n* @param val\n*/\nexport function ToNumber(arg) {\n\tif (typeof arg === \"number\") {\n\t\treturn new Decimal(arg);\n\t}\n\t// Support bigint values by converting to string first\n\t// https://tc39.es/ecma402/#sec-intl.pluralrules.prototype.select\n\tif (typeof arg === \"bigint\") {\n\t\treturn new Decimal(arg.toString());\n\t}\n\tinvariant(typeof arg !== \"symbol\", \"Symbol is not supported\", TypeError);\n\tif (arg === undefined) {\n\t\treturn new Decimal(NaN);\n\t}\n\tif (arg === null || arg === 0) {\n\t\treturn ZERO;\n\t}\n\tif (arg === true) {\n\t\treturn new Decimal(1);\n\t}\n\tif (typeof arg === \"string\") {\n\t\ttry {\n\t\t\treturn new Decimal(arg);\n\t\t} catch {\n\t\t\treturn new Decimal(NaN);\n\t\t}\n\t}\n\tinvariant(typeof arg === \"object\", \"object expected\", TypeError);\n\tlet primValue = ToPrimitive(arg, \"number\");\n\tinvariant(typeof primValue !== \"object\", \"object expected\", TypeError);\n\treturn ToNumber(primValue);\n}\n/**\n* https://tc39.es/ecma262/#sec-tointeger\n* @param n\n*/\nfunction ToInteger(n) {\n\tconst number = ToNumber(n);\n\tif (number.isNaN() || number.isZero()) {\n\t\treturn ZERO;\n\t}\n\tif (number.isFinite()) {\n\t\treturn number;\n\t}\n\tlet integer = number.abs().floor();\n\tif (number.isNegative()) {\n\t\tinteger = integer.negated();\n\t}\n\treturn integer;\n}\n/**\n* https://tc39.es/ecma262/#sec-timeclip\n* @param time\n*/\nexport function TimeClip(time) {\n\tif (!time.isFinite()) {\n\t\treturn new Decimal(NaN);\n\t}\n\tif (time.abs().greaterThan(8.64 * 0x38d7ea4c68000)) {\n\t\treturn new Decimal(NaN);\n\t}\n\treturn ToInteger(time);\n}\n/**\n* https://tc39.es/ecma262/#sec-toobject\n* @param arg\n*/\nexport function ToObject(arg) {\n\tif (arg == null) {\n\t\tthrow new TypeError(\"undefined/null cannot be converted to object\");\n\t}\n\treturn Object(arg);\n}\n/**\n* https://www.ecma-international.org/ecma-262/11.0/index.html#sec-samevalue\n* @param x\n* @param y\n*/\nexport function SameValue(x, y) {\n\tif (Object.is) {\n\t\treturn Object.is(x, y);\n\t}\n\t// SameValue algorithm\n\tif (x === y) {\n\t\t// Steps 1-5, 7-10\n\t\t// Steps 6.b-6.e: +0 != -0\n\t\treturn x !== 0 || 1 / x === 1 / y;\n\t}\n\t// Step 6.a: NaN == NaN\n\treturn x !== x && y !== y;\n}\n/**\n* https://www.ecma-international.org/ecma-262/11.0/index.html#sec-arraycreate\n* @param len\n*/\nexport function ArrayCreate(len) {\n\treturn Array.from({ length: len });\n}\n/**\n* https://www.ecma-international.org/ecma-262/11.0/index.html#sec-hasownproperty\n* @param o\n* @param prop\n*/\nexport function HasOwnProperty(o, prop) {\n\treturn Object.prototype.hasOwnProperty.call(o, prop);\n}\n/**\n* https://www.ecma-international.org/ecma-262/11.0/index.html#sec-type\n* @param x\n*/\nexport function Type(x) {\n\tif (x === null) {\n\t\treturn \"Null\";\n\t}\n\tif (typeof x === \"undefined\") {\n\t\treturn \"Undefined\";\n\t}\n\tif (typeof x === \"function\" || typeof x === \"object\") {\n\t\treturn \"Object\";\n\t}\n\tif (typeof x === \"number\") {\n\t\treturn \"Number\";\n\t}\n\tif (typeof x === \"boolean\") {\n\t\treturn \"Boolean\";\n\t}\n\tif (typeof x === \"string\") {\n\t\treturn \"String\";\n\t}\n\tif (typeof x === \"symbol\") {\n\t\treturn \"Symbol\";\n\t}\n\tif (typeof x === \"bigint\") {\n\t\treturn \"BigInt\";\n\t}\n}\nconst MS_PER_DAY = 864e5;\n/**\n* https://www.ecma-international.org/ecma-262/11.0/index.html#eqn-modulo\n* @param x\n* @param y\n* @return k of the same sign as y\n*/\nfunction mod(x, y) {\n\treturn x - Math.floor(x / y) * y;\n}\n/**\n* https://tc39.es/ecma262/#eqn-Day\n* @param t\n*/\nexport function Day(t) {\n\treturn Math.floor(t / MS_PER_DAY);\n}\n/**\n* https://tc39.es/ecma262/#sec-week-day\n* @param t\n*/\nexport function WeekDay(t) {\n\treturn mod(Day(t) + 4, 7);\n}\n/**\n* https://tc39.es/ecma262/#sec-year-number\n* @param y\n*/\nexport function DayFromYear(y) {\n\tif (y < 100) {\n\t\t// Date.UTC parses 0 - 99 as 1900 - 1999\n\t\tconst date = new Date(0);\n\t\tdate.setUTCFullYear(y, 0, 1);\n\t\tdate.setUTCHours(0, 0, 0, 0);\n\t\treturn date.getTime() / MS_PER_DAY;\n\t}\n\treturn Date.UTC(y, 0) / MS_PER_DAY;\n}\n/**\n* https://tc39.es/ecma262/#sec-year-number\n* @param y\n*/\nexport function TimeFromYear(y) {\n\treturn Date.UTC(y, 0);\n}\n/**\n* https://tc39.es/ecma262/#sec-year-number\n* @param t\n*/\nexport function YearFromTime(t) {\n\treturn new Date(t).getUTCFullYear();\n}\nexport function DaysInYear(y) {\n\tif (y % 4 !== 0) {\n\t\treturn 365;\n\t}\n\tif (y % 100 !== 0) {\n\t\treturn 366;\n\t}\n\tif (y % 400 !== 0) {\n\t\treturn 365;\n\t}\n\treturn 366;\n}\nexport function DayWithinYear(t) {\n\treturn Day(t) - DayFromYear(YearFromTime(t));\n}\nexport function InLeapYear(t) {\n\treturn DaysInYear(YearFromTime(t)) === 365 ? 0 : 1;\n}\n/**\n* https://tc39.es/ecma262/#sec-month-number\n* @param t\n*/\nexport function MonthFromTime(t) {\n\tconst dwy = DayWithinYear(t);\n\tconst leap = InLeapYear(t);\n\tif (dwy >= 0 && dwy < 31) {\n\t\treturn 0;\n\t}\n\tif (dwy < 59 + leap) {\n\t\treturn 1;\n\t}\n\tif (dwy < 90 + leap) {\n\t\treturn 2;\n\t}\n\tif (dwy < 120 + leap) {\n\t\treturn 3;\n\t}\n\tif (dwy < 151 + leap) {\n\t\treturn 4;\n\t}\n\tif (dwy < 181 + leap) {\n\t\treturn 5;\n\t}\n\tif (dwy < 212 + leap) {\n\t\treturn 6;\n\t}\n\tif (dwy < 243 + leap) {\n\t\treturn 7;\n\t}\n\tif (dwy < 273 + leap) {\n\t\treturn 8;\n\t}\n\tif (dwy < 304 + leap) {\n\t\treturn 9;\n\t}\n\tif (dwy < 334 + leap) {\n\t\treturn 10;\n\t}\n\tif (dwy < 365 + leap) {\n\t\treturn 11;\n\t}\n\tthrow new Error(\"Invalid time\");\n}\nexport function DateFromTime(t) {\n\tconst dwy = DayWithinYear(t);\n\tconst mft = MonthFromTime(t);\n\tconst leap = InLeapYear(t);\n\tif (mft === 0) {\n\t\treturn dwy + 1;\n\t}\n\tif (mft === 1) {\n\t\treturn dwy - 30;\n\t}\n\tif (mft === 2) {\n\t\treturn dwy - 58 - leap;\n\t}\n\tif (mft === 3) {\n\t\treturn dwy - 89 - leap;\n\t}\n\tif (mft === 4) {\n\t\treturn dwy - 119 - leap;\n\t}\n\tif (mft === 5) {\n\t\treturn dwy - 150 - leap;\n\t}\n\tif (mft === 6) {\n\t\treturn dwy - 180 - leap;\n\t}\n\tif (mft === 7) {\n\t\treturn dwy - 211 - leap;\n\t}\n\tif (mft === 8) {\n\t\treturn dwy - 242 - leap;\n\t}\n\tif (mft === 9) {\n\t\treturn dwy - 272 - leap;\n\t}\n\tif (mft === 10) {\n\t\treturn dwy - 303 - leap;\n\t}\n\tif (mft === 11) {\n\t\treturn dwy - 333 - leap;\n\t}\n\tthrow new Error(\"Invalid time\");\n}\nconst HOURS_PER_DAY = 24;\nconst MINUTES_PER_HOUR = 60;\nconst SECONDS_PER_MINUTE = 60;\nconst MS_PER_SECOND = 1e3;\nconst MS_PER_MINUTE = MS_PER_SECOND * SECONDS_PER_MINUTE;\nconst MS_PER_HOUR = MS_PER_MINUTE * MINUTES_PER_HOUR;\nexport function HourFromTime(t) {\n\treturn mod(Math.floor(t / MS_PER_HOUR), HOURS_PER_DAY);\n}\nexport function MinFromTime(t) {\n\treturn mod(Math.floor(t / MS_PER_MINUTE), MINUTES_PER_HOUR);\n}\nexport function SecFromTime(t) {\n\treturn mod(Math.floor(t / MS_PER_SECOND), SECONDS_PER_MINUTE);\n}\nfunction IsCallable(fn) {\n\treturn typeof fn === \"function\";\n}\n/**\n* The abstract operation OrdinaryHasInstance implements\n* the default algorithm for determining if an object O\n* inherits from the instance object inheritance path\n* provided by constructor C.\n* @param C class\n* @param O object\n* @param internalSlots internalSlots\n*/\nexport function OrdinaryHasInstance(C, O, internalSlots) {\n\tif (!IsCallable(C)) {\n\t\treturn false;\n\t}\n\tif (internalSlots?.boundTargetFunction) {\n\t\tlet BC = internalSlots?.boundTargetFunction;\n\t\treturn O instanceof BC;\n\t}\n\tif (typeof O !== \"object\") {\n\t\treturn false;\n\t}\n\tlet P = C.prototype;\n\tif (typeof P !== \"object\") {\n\t\tthrow new TypeError(\"OrdinaryHasInstance called on an object with an invalid prototype property.\");\n\t}\n\treturn Object.prototype.isPrototypeOf.call(P, O);\n}\nexport function msFromTime(t) {\n\treturn mod(t, MS_PER_SECOND);\n}\nfunction OrdinaryToPrimitive(O, hint) {\n\tlet methodNames;\n\tif (hint === \"string\") {\n\t\tmethodNames = [\"toString\", \"valueOf\"];\n\t} else {\n\t\tmethodNames = [\"valueOf\", \"toString\"];\n\t}\n\tfor (const name of methodNames) {\n\t\tconst method = O[name];\n\t\tif (IsCallable(method)) {\n\t\t\tlet result = method.call(O);\n\t\t\tif (typeof result !== \"object\") {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new TypeError(\"Cannot convert object to primitive value\");\n}\nexport function ToPrimitive(input, preferredType) {\n\tif (typeof input === \"object\" && input != null) {\n\t\tconst exoticToPrim = Symbol.toPrimitive in input ? input[Symbol.toPrimitive] : undefined;\n\t\tlet hint;\n\t\tif (exoticToPrim !== undefined) {\n\t\t\tif (preferredType === undefined) {\n\t\t\t\thint = \"default\";\n\t\t\t} else if (preferredType === \"string\") {\n\t\t\t\thint = \"string\";\n\t\t\t} else {\n\t\t\t\tinvariant(preferredType === \"number\", \"preferredType must be \\\"string\\\" or \\\"number\\\"\");\n\t\t\t\thint = \"number\";\n\t\t\t}\n\t\t\tlet result = exoticToPrim.call(input, hint);\n\t\t\tif (typeof result !== \"object\") {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthrow new TypeError(\"Cannot convert exotic object to primitive.\");\n\t\t}\n\t\tif (preferredType === undefined) {\n\t\t\tpreferredType = \"number\";\n\t\t}\n\t\treturn OrdinaryToPrimitive(input, preferredType);\n\t}\n\treturn input;\n}\n","import { ToString } from \"./262.js\";\n/**\n* https://tc39.es/ecma402/#sec-getoption\n* @param opts\n* @param prop\n* @param type\n* @param values\n* @param fallback\n*/\nexport function GetOption(opts, prop, type, values, fallback) {\n\tif (typeof opts !== \"object\") {\n\t\tthrow new TypeError(\"Options must be an object\");\n\t}\n\tlet value = opts[prop];\n\tif (value !== undefined) {\n\t\tif (type !== \"boolean\" && type !== \"string\") {\n\t\t\tthrow new TypeError(\"invalid type\");\n\t\t}\n\t\tif (type === \"boolean\") {\n\t\t\tvalue = Boolean(value);\n\t\t}\n\t\tif (type === \"string\") {\n\t\t\tvalue = ToString(value);\n\t\t}\n\t\tif (values !== undefined && !values.filter((val) => val == value).length) {\n\t\t\tthrow new RangeError(`${value} is not within ${values.join(\", \")}`);\n\t\t}\n\t\treturn value;\n\t}\n\treturn fallback;\n}\n","/**\n* https://tc39.es/ecma402/#sec-getoptionsobject\n* @param options\n* @returns\n*/\nexport function GetOptionsObject(options) {\n\tif (typeof options === \"undefined\") {\n\t\treturn Object.create(null);\n\t}\n\tif (typeof options === \"object\") {\n\t\treturn options;\n\t}\n\tthrow new TypeError(\"Options must be an object\");\n}\n","/**\n* https://tc39.es/ecma402/#table-sanctioned-simple-unit-identifiers\n*/\nexport const SANCTIONED_UNITS = [\n\t\"angle-degree\",\n\t\"area-acre\",\n\t\"area-hectare\",\n\t\"concentr-percent\",\n\t\"digital-bit\",\n\t\"digital-byte\",\n\t\"digital-gigabit\",\n\t\"digital-gigabyte\",\n\t\"digital-kilobit\",\n\t\"digital-kilobyte\",\n\t\"digital-megabit\",\n\t\"digital-megabyte\",\n\t\"digital-petabyte\",\n\t\"digital-terabit\",\n\t\"digital-terabyte\",\n\t\"duration-day\",\n\t\"duration-hour\",\n\t\"duration-millisecond\",\n\t\"duration-minute\",\n\t\"duration-month\",\n\t\"duration-second\",\n\t\"duration-week\",\n\t\"duration-year\",\n\t\"length-centimeter\",\n\t\"length-foot\",\n\t\"length-inch\",\n\t\"length-kilometer\",\n\t\"length-meter\",\n\t\"length-mile-scandinavian\",\n\t\"length-mile\",\n\t\"length-millimeter\",\n\t\"length-yard\",\n\t\"mass-gram\",\n\t\"mass-kilogram\",\n\t\"mass-ounce\",\n\t\"mass-pound\",\n\t\"mass-stone\",\n\t\"temperature-celsius\",\n\t\"temperature-fahrenheit\",\n\t\"volume-fluid-ounce\",\n\t\"volume-gallon\",\n\t\"volume-liter\",\n\t\"volume-milliliter\"\n];\n// In CLDR, the unit name always follows the form `namespace-unit` pattern.\n// For example: `digital-bit` instead of `bit`. This function removes the namespace prefix.\nexport function removeUnitNamespace(unit) {\n\treturn unit.slice(unit.indexOf(\"-\") + 1);\n}\n/**\n* https://tc39.es/ecma402/#table-sanctioned-simple-unit-identifiers\n*/\nexport const SIMPLE_UNITS = SANCTIONED_UNITS.map(removeUnitNamespace);\n/**\n* https://tc39.es/ecma402/#sec-issanctionedsimpleunitidentifier\n*/\nexport function IsSanctionedSimpleUnitIdentifier(unitIdentifier) {\n\treturn SIMPLE_UNITS.indexOf(unitIdentifier) > -1;\n}\n","import { Decimal } from \"decimal.js\";\nimport { memoize } from \"@formatjs/fast-memoize\";\n/**\n* Cached function to compute powers of 10 for Decimal.js operations.\n* This cache significantly reduces overhead in ComputeExponent and ToRawFixed\n* by memoizing expensive Decimal.pow(10, n) calculations.\n*\n* Common exponents (e.g., -20 to 20) are used repeatedly in number formatting,\n* so caching provides substantial performance benefits.\n*\n* @param exponent - Can be a number or Decimal. If Decimal, it will be converted to string for cache key.\n*/\nexport const getPowerOf10 = memoize((exponent) => {\n\treturn Decimal.pow(10, exponent);\n});\n","import { Decimal } from \"decimal.js\";\nimport \"../types/number.js\";\nimport { invariant } from \"../utils.js\";\nimport { getPowerOf10 } from \"./decimal-cache.js\";\nDecimal.set({ toExpPos: 100 });\n/**\n* The abstract operation ComputeExponentForMagnitude computes an exponent by which to scale a\n* number of the given magnitude (power of ten of the most significant digit) according to the\n* locale and the desired notation (scientific, engineering, or compact).\n*/\nexport function ComputeExponentForMagnitude(internalSlots, magnitude) {\n\tconst { notation, dataLocaleData, numberingSystem } = internalSlots;\n\tswitch (notation) {\n\t\tcase \"standard\": return 0;\n\t\tcase \"scientific\": return magnitude.toNumber();\n\t\tcase \"engineering\":\n\t\t\tconst thousands = magnitude.div(3).floor();\n\t\t\treturn thousands.times(3).toNumber();\n\t\tdefault: {\n\t\t\tinvariant(notation === \"compact\", \"Invalid notation\");\n\t\t\t// Let exponent be an implementation- and locale-dependent (ILD) integer by which to scale a\n\t\t\t// number of the given magnitude in compact notation for the current locale.\n\t\t\tconst { compactDisplay, style, currencyDisplay } = internalSlots;\n\t\t\tlet thresholdMap;\n\t\t\tif (style === \"currency\" && currencyDisplay !== \"name\") {\n\t\t\t\tconst currency = dataLocaleData.numbers.currency[numberingSystem] || dataLocaleData.numbers.currency[dataLocaleData.numbers.nu[0]];\n\t\t\t\tthresholdMap = currency.short;\n\t\t\t} else {\n\t\t\t\tconst decimal = dataLocaleData.numbers.decimal[numberingSystem] || dataLocaleData.numbers.decimal[dataLocaleData.numbers.nu[0]];\n\t\t\t\tthresholdMap = compactDisplay === \"long\" ? decimal.long : decimal.short;\n\t\t\t}\n\t\t\tif (!thresholdMap) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tconst num = getPowerOf10(magnitude).toString();\n\t\t\tconst thresholds = Object.keys(thresholdMap);\n\t\t\tif (num < thresholds[0]) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tif (num > thresholds[thresholds.length - 1]) {\n\t\t\t\t// GH #4236: When number exceeds max threshold, use the exponent\n\t\t\t\t// corresponding to the largest available threshold in locale data.\n\t\t\t\t// Calculate exponent the same way as for normal thresholds (lines 70-73).\n\t\t\t\tconst magnitudeKey = thresholds[thresholds.length - 1];\n\t\t\t\tconst compactPattern = thresholdMap[magnitudeKey].other;\n\t\t\t\tif (compactPattern === \"0\") {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\treturn magnitudeKey.length - thresholdMap[magnitudeKey].other.match(/0+/)[0].length;\n\t\t\t}\n\t\t\tconst i = thresholds.indexOf(num);\n\t\t\tif (i === -1) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t// See https://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats\n\t\t\t// Special handling if the pattern is precisely `0`.\n\t\t\tconst magnitudeKey = thresholds[i];\n\t\t\t// TODO: do we need to handle plural here?\n\t\t\tconst compactPattern = thresholdMap[magnitudeKey].other;\n\t\t\tif (compactPattern === \"0\") {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t// Example: in zh-TW, `10000000` maps to `0000萬`. So we need to return 8 - 4 = 4 here.\n\t\t\treturn magnitudeKey.length - thresholdMap[magnitudeKey].other.match(/0+/)[0].length;\n\t\t}\n\t}\n}\n","import { Decimal } from \"decimal.js\";\nimport \"../types/number.js\";\nimport { repeat } from \"../utils.js\";\nimport { ApplyUnsignedRoundingMode } from \"./ApplyUnsignedRoundingMode.js\";\nimport { getPowerOf10 } from \"./decimal-cache.js\";\n//IMPL: Setting Decimal configuration\nDecimal.set({ toExpPos: 100 });\n//IMPL: Helper function to calculate raw fixed value\nfunction ToRawFixedFn(n, f) {\n\treturn n.times(getPowerOf10(-f));\n}\n//IMPL: Helper function to find n1 and r1\nfunction findN1R1(x, f, roundingIncrement) {\n\tconst nx = x.times(getPowerOf10(f)).floor();\n\tconst n1 = nx.div(roundingIncrement).floor().times(roundingIncrement);\n\tconst r1 = ToRawFixedFn(n1, f);\n\treturn {\n\t\tn1,\n\t\tr1\n\t};\n}\n//IMPL: Helper function to find n2 and r2\nfunction findN2R2(x, f, roundingIncrement) {\n\tconst nx = x.times(getPowerOf10(f)).ceil();\n\tconst n2 = nx.div(roundingIncrement).ceil().times(roundingIncrement);\n\tconst r2 = ToRawFixedFn(n2, f);\n\treturn {\n\t\tn2,\n\t\tr2\n\t};\n}\n/**\n* https://tc39.es/ecma402/#sec-torawfixed\n* @param x a finite non-negative Number or BigInt\n* @param minFraction an integer between 0 and 20\n* @param maxFraction an integer between 0 and 20\n*/\nexport function ToRawFixed(x, minFraction, maxFraction, roundingIncrement, unsignedRoundingMode) {\n\t// 1. Let f be maxFraction.\n\tconst f = maxFraction;\n\t// 2. Let n1 and r1 be the results of performing the maximized rounding of x to f fraction digits.\n\tconst { n1, r1 } = findN1R1(x, f, roundingIncrement);\n\t// 3. Let n2 and r2 be the results of performing the minimized rounding of x to f fraction digits.\n\tconst { n2, r2 } = findN2R2(x, f, roundingIncrement);\n\t// 4. Let r be ApplyUnsignedRoundingMode(x, r1, r2, unsignedRoundingMode).\n\tconst r = ApplyUnsignedRoundingMode(x, r1, r2, unsignedRoundingMode);\n\tlet n, xFinal;\n\tlet m;\n\t// 5. If r is equal to r1, then\n\tif (r.eq(r1)) {\n\t\t// a. Let n be n1.\n\t\tn = n1;\n\t\t// b. Let xFinal be r1.\n\t\txFinal = r1;\n\t} else {\n\t\t// 6. Else,\n\t\t// a. Let n be n2.\n\t\tn = n2;\n\t\t// b. Let xFinal be r2.\n\t\txFinal = r2;\n\t}\n\t// 7. If n is 0, let m be \"0\".\n\tif (n.isZero()) {\n\t\tm = \"0\";\n\t} else {\n\t\t// 8. Else, let m be the String representation of n.\n\t\tm = n.toString();\n\t}\n\tlet int;\n\t// 9. If f is not 0, then\n\tif (f !== 0) {\n\t\t// a. Let k be the length of m.\n\t\tlet k = m.length;\n\t\t// b. If k < f, then\n\t\tif (k <= f) {\n\t\t\t// i. Let z be the String value consisting of f + 1 - k occurrences of the character \"0\".\n\t\t\tconst z = repeat(\"0\", f - k + 1);\n\t\t\t// ii. Set m to the string-concatenation of z and m.\n\t\t\tm = z + m;\n\t\t\t// iii. Set k to f + 1.\n\t\t\tk = f + 1;\n\t\t}\n\t\t// c. Let a be the substring of m from 0 to k - f.\n\t\tconst a = m.slice(0, k - f);\n\t\t// d. Let b be the substring of m from k - f to k.\n\t\tconst b = m.slice(m.length - f);\n\t\t// e. Set m to the string-concatenation of a, \".\", and b.\n\t\tm = a + \".\" + b;\n\t\t// f. Let int be the length of a.\n\t\tint = a.length;\n\t} else {\n\t\t// 10. Else, let int be the length of m.\n\t\tint = m.length;\n\t}\n\t// 11. Let cut be maxFraction - minFraction.\n\tlet cut = maxFraction - minFraction;\n\t// 12. Repeat, while cut > 0 and the last character of m is \"0\",\n\twhile (cut > 0 && m[m.length - 1] === \"0\") {\n\t\t// a. Remove the last character from m.\n\t\tm = m.slice(0, m.length - 1);\n\t\t// b. Decrease cut by 1.\n\t\tcut--;\n\t}\n\t// 13. If the last character of m is \".\", then\n\tif (m[m.length - 1] === \".\") {\n\t\t// a. Remove the last character from m.\n\t\tm = m.slice(0, m.length - 1);\n\t}\n\t// 14. Return the Record { [[FormattedString]]: m, [[RoundedNumber]]: xFinal, [[IntegerDigitsCount]]: int, [[RoundingMagnitude]]: -f }.\n\treturn {\n\t\tformattedString: m,\n\t\troundedNumber: xFinal,\n\t\tintegerDigitsCount: int,\n\t\troundingMagnitude: -f\n\t};\n}\n","// @generated from regex-gen.ts\nexport const S_UNICODE_REGEX = /[\\$\\+<->\\^`\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u0888\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u166D\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20C1\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2429\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2BFF\\u2CE5-\\u2CEA\\u2E50\\u2E51\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFF\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E5\\u31EF\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uAB6A\\uAB6B\\uFB29\\uFBB2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDCF\\uFDFC-\\uFDFF\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD]|\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9C\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD803[\\uDD8E\\uDD8F\\uDED1-\\uDED8]|\\uD805\\uDF3F|\\uD807[\\uDFD5-\\uDFF1]|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD833[\\uDC00-\\uDCEF\\uDCFA-\\uDCFC\\uDD00-\\uDEB3\\uDEBA-\\uDED0\\uDEE0-\\uDEF0\\uDF50-\\uDFC3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDEA\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD838[\\uDD4F\\uDEFF]|\\uD83B[\\uDCAC\\uDCB0\\uDD2E\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD0D-\\uDDAD\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED8\\uDEDC-\\uDEEC\\uDEF0-\\uDEFC\\uDF00-\\uDFD9\\uDFE0-\\uDFEB\\uDFF0]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDCB0-\\uDCBB\\uDCC0\\uDCC1\\uDCD0-\\uDCD8\\uDD00-\\uDE57\\uDE60-\\uDE6D\\uDE70-\\uDE7C\\uDE80-\\uDE8A\\uDE8E-\\uDEC6\\uDEC8\\uDECD-\\uDEDC\\uDEDF-\\uDEEA\\uDEEF-\\uDEF8\\uDF00-\\uDF92\\uDF94-\\uDFEF\\uDFFA]/;\n","import { Decimal } from \"decimal.js\";\nimport { S_UNICODE_REGEX } from \"../regex.generated.js\";\nimport \"../types/number.js\";\nimport { getPowerOf10 } from \"./decimal-cache.js\";\nimport \"../types/plural-rules.js\";\nimport { digitMapping } from \"./digit-mapping.generated.js\";\nimport { GetUnsignedRoundingMode } from \"./GetUnsignedRoundingMode.js\";\nimport { ToRawFixed } from \"./ToRawFixed.js\";\n// This is from: unicode-12.1.0/General_Category/Symbol/regex.js\n// IE11 does not support unicode flag, otherwise this is just /\\p{S}/u.\n// /^\\p{S}/u\nconst CARET_S_UNICODE_REGEX = new RegExp(`^${S_UNICODE_REGEX.source}`);\n// /\\p{S}$/u\nconst S_DOLLAR_UNICODE_REGEX = new RegExp(`${S_UNICODE_REGEX.source}$`);\nconst CLDR_NUMBER_PATTERN = /[#0](?:[.,][#0]+)*/g;\nexport default function formatToParts(numberResult, data, pl, options) {\n\tconst { sign, exponent, magnitude } = numberResult;\n\tconst { notation, style, numberingSystem } = options;\n\tconst defaultNumberingSystem = data.numbers.nu[0];\n\t// #region Part 1: partition and interpolate the CLDR number pattern.\n\t// ----------------------------------------------------------\n\tlet compactNumberPattern = null;\n\tif (notation === \"compact\" && magnitude) {\n\t\tcompactNumberPattern = getCompactDisplayPattern(numberResult, pl, data, style, options.compactDisplay, options.currencyDisplay, numberingSystem);\n\t}\n\t// This is used multiple times\n\tlet nonNameCurrencyPart;\n\tif (style === \"currency\" && options.currencyDisplay !== \"name\") {\n\t\tconst byCurrencyDisplay = data.currencies[options.currency];\n\t\tif (byCurrencyDisplay) {\n\t\t\tswitch (options.currencyDisplay) {\n\t\t\t\tcase \"code\":\n\t\t\t\t\tnonNameCurrencyPart = options.currency;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"symbol\":\n\t\t\t\t\tnonNameCurrencyPart = byCurrencyDisplay.symbol;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tnonNameCurrencyPart = byCurrencyDisplay.narrow;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\t// Fallback for unknown currency\n\t\t\tnonNameCurrencyPart = options.currency;\n\t\t}\n\t}\n\tlet numberPattern;\n\tif (!compactNumberPattern) {\n\t\t// Note: if the style is unit, or is currency and the currency display is name,\n\t\t// its unit parts will be interpolated in part 2. So here we can fallback to decimal.\n\t\tif (style === \"decimal\" || style === \"unit\" || style === \"currency\" && options.currencyDisplay === \"name\") {\n\t\t\t// Shortcut for decimal\n\t\t\tconst decimalData = data.numbers.decimal[numberingSystem] || data.numbers.decimal[defaultNumberingSystem];\n\t\t\tnumberPattern = getPatternForSign(decimalData.standard, sign);\n\t\t} else if (style === \"currency\") {\n\t\t\tconst currencyData = data.numbers.currency[numberingSystem] || data.numbers.currency[defaultNumberingSystem];\n\t\t\t// We replace number pattern part with `0` for easier postprocessing.\n\t\t\tnumberPattern = getPatternForSign(currencyData[options.currencySign], sign);\n\t\t} else {\n\t\t\t// percent\n\t\t\tconst percentPattern = data.numbers.percent[numberingSystem] || data.numbers.percent[defaultNumberingSystem];\n\t\t\tnumberPattern = getPatternForSign(percentPattern, sign);\n\t\t}\n\t} else {\n\t\tnumberPattern = compactNumberPattern;\n\t}\n\t// Extract the decimal number pattern string. It looks like \"#,##0,00\", which will later be\n\t// used to infer decimal group sizes.\n\tconst decimalNumberPattern = CLDR_NUMBER_PATTERN.exec(numberPattern)[0];\n\t// Now we start to substitute patterns\n\t// 1. replace strings like `0` and `#,##0.00` with `{0}`\n\t// 2. unquote characters (invariant: the quoted characters does not contain the special tokens)\n\tnumberPattern = numberPattern.replace(CLDR_NUMBER_PATTERN, \"{0}\").replace(/'(.)'/g, \"$1\");\n\t// Handle currency spacing (both compact and non-compact).\n\tif (style === \"currency\" && options.currencyDisplay !== \"name\") {\n\t\tconst currencyData = data.numbers.currency[numberingSystem] || data.numbers.currency[defaultNumberingSystem];\n\t\t// See `currencySpacing` substitution rule in TR-35.\n\t\t// Here we always assume the currencyMatch is \"[:^S:]\" and surroundingMatch is \"[:digit:]\".\n\t\t//\n\t\t// Example 1: for pattern \"#,##0.00¤\" with symbol \"US$\", we replace \"¤\" with the symbol,\n\t\t// but insert an extra non-break space before the symbol, because \"[:^S:]\" matches \"U\" in\n\t\t// \"US$\" and \"[:digit:]\" matches the latn numbering system digits.\n\t\t//\n\t\t// Example 2: for pattern \"¤#,##0.00\" with symbol \"US$\", there is no spacing between symbol\n\t\t// and number, because `$` does not match \"[:^S:]\".\n\t\t//\n\t\t// Implementation note: here we do the best effort to infer the insertion.\n\t\t// We also assume that `beforeInsertBetween` and `afterInsertBetween` will never be `;`.\n\t\tconst afterCurrency = currencyData.currencySpacing.afterInsertBetween;\n\t\tif (afterCurrency && !S_DOLLAR_UNICODE_REGEX.test(nonNameCurrencyPart)) {\n\t\t\tnumberPattern = numberPattern.replace(\"¤{0}\", `¤${afterCurrency}{0}`);\n\t\t}\n\t\tconst beforeCurrency = currencyData.currencySpacing.beforeInsertBetween;\n\t\tif (beforeCurrency && !CARET_S_UNICODE_REGEX.test(nonNameCurrencyPart)) {\n\t\t\tnumberPattern = numberPattern.replace(\"{0}¤\", `{0}${beforeCurrency}¤`);\n\t\t}\n\t}\n\t// The following tokens are special: `{0}`, `¤`, `%`, `-`, `+`, `{c:...}.\n\tconst numberPatternParts = numberPattern.split(/({c:[^}]+}|\\{0\\}|[¤%\\-+])/g);\n\tconst numberParts = [];\n\tconst symbols = data.numbers.symbols[numberingSystem] || data.numbers.symbols[defaultNumberingSystem];\n\tfor (const part of numberPatternParts) {\n\t\tif (!part) {\n\t\t\tcontinue;\n\t\t}\n\t\tswitch (part) {\n\t\t\tcase \"{0}\": {\n\t\t\t\t// We only need to handle scientific and engineering notation here.\n\t\t\t\tnumberParts.push(...partitionNumberIntoParts(\n\t\t\t\t\tsymbols,\n\t\t\t\t\tnumberResult,\n\t\t\t\t\tnotation,\n\t\t\t\t\texponent,\n\t\t\t\t\tnumberingSystem,\n\t\t\t\t\t// If compact number pattern exists, do not insert group separators.\n\t\t\t\t\t!compactNumberPattern && (options.useGrouping ?? true),\n\t\t\t\t\tdecimalNumberPattern,\n\t\t\t\t\tstyle,\n\t\t\t\t\toptions.roundingIncrement,\n\t\t\t\t\tGetUnsignedRoundingMode(options.roundingMode, sign === -1)\n\t\t\t\t));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"-\":\n\t\t\t\tnumberParts.push({\n\t\t\t\t\ttype: \"minusSign\",\n\t\t\t\t\tvalue: symbols.minusSign\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"+\":\n\t\t\t\tnumberParts.push({\n\t\t\t\t\ttype: \"plusSign\",\n\t\t\t\t\tvalue: symbols.plusSign\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"%\":\n\t\t\t\tnumberParts.push({\n\t\t\t\t\ttype: \"percentSign\",\n\t\t\t\t\tvalue: symbols.percentSign\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tcase \"¤\":\n\t\t\t\t// Computed above when handling currency spacing.\n\t\t\t\tnumberParts.push({\n\t\t\t\t\ttype: \"currency\",\n\t\t\t\t\tvalue: nonNameCurrencyPart\n\t\t\t\t});\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (part.startsWith(\"{c:\")) {\n\t\t\t\t\tnumberParts.push({\n\t\t\t\t\t\ttype: \"compact\",\n\t\t\t\t\t\tvalue: part.substring(3, part.length - 1)\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t// literal\n\t\t\t\t\tnumberParts.push({\n\t\t\t\t\t\ttype: \"literal\",\n\t\t\t\t\t\tvalue: part\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// #endregion\n\t// #region Part 2: interpolate unit pattern if necessary.\n\t// ----------------------------------------------\n\tswitch (style) {\n\t\tcase \"currency\": {\n\t\t\t// `currencyDisplay: 'name'` has similar pattern handling as units.\n\t\t\tif (options.currencyDisplay === \"name\") {\n\t\t\t\tconst unitPattern = (data.numbers.currency[numberingSystem] || data.numbers.currency[defaultNumberingSystem]).unitPattern;\n\t\t\t\t// Select plural\n\t\t\t\tlet unitName;\n\t\t\t\tconst currencyNameData = data.currencies[options.currency];\n\t\t\t\tif (currencyNameData) {\n\t\t\t\t\tunitName = selectPlural(pl, numberResult.roundedNumber.times(getPowerOf10(exponent)).toNumber(), currencyNameData.displayName);\n\t\t\t\t} else {\n\t\t\t\t\t// Fallback for unknown currency\n\t\t\t\t\tunitName = options.currency;\n\t\t\t\t}\n\t\t\t\t// Do {0} and {1} substitution\n\t\t\t\tconst unitPatternParts = unitPattern.split(/(\\{[01]\\})/g);\n\t\t\t\tconst result = [];\n\t\t\t\tfor (const part of unitPatternParts) {\n\t\t\t\t\tswitch (part) {\n\t\t\t\t\t\tcase \"{0}\":\n\t\t\t\t\t\t\tresult.push(...numberParts);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase \"{1}\":\n\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\ttype: \"currency\",\n\t\t\t\t\t\t\t\tvalue: unitName\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tif (part) {\n\t\t\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\t\t\ttype: \"literal\",\n\t\t\t\t\t\t\t\t\tvalue: part\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn numberParts;\n\t\t\t}\n\t\t}\n\t\tcase \"unit\": {\n\t\t\tconst { unit, unitDisplay } = options;\n\t\t\tlet unitData = data.units.simple[unit];\n\t\t\tlet unitPattern;\n\t\t\tif (unitData) {\n\t\t\t\t// Simple unit pattern\n\t\t\t\tunitPattern = selectPlural(pl, numberResult.roundedNumber.times(getPowerOf10(exponent)).toNumber(), data.units.simple[unit][unitDisplay]);\n\t\t\t} else {\n\t\t\t\t// See: http://unicode.org/reports/tr35/tr35-general.html#perUnitPatterns\n\t\t\t\t// If cannot find unit in the simple pattern, it must be \"per\" compound pattern.\n\t\t\t\t// Implementation note: we are not following TR-35 here because we need to format to parts!\n\t\t\t\tconst [numeratorUnit, denominatorUnit] = unit.split(\"-per-\");\n\t\t\t\tunitData = data.units.simple[numeratorUnit];\n\t\t\t\tconst numeratorUnitPattern = selectPlural(pl, numberResult.roundedNumber.times(getPowerOf10(exponent)).toNumber(), data.units.simple[numeratorUnit][unitDisplay]);\n\t\t\t\tconst perUnitPattern = data.units.simple[denominatorUnit].perUnit[unitDisplay];\n\t\t\t\tif (perUnitPattern) {\n\t\t\t\t\t// perUnitPattern exists, combine it with numeratorUnitPattern\n\t\t\t\t\tunitPattern = perUnitPattern.replace(\"{0}\", numeratorUnitPattern);\n\t\t\t\t} else {\n\t\t\t\t\t// get compoundUnit pattern (e.g. \"{0} per {1}\"), repalce {0} with numerator pattern and {1} with\n\t\t\t\t\t// the denominator pattern in singular form.\n\t\t\t\t\tconst perPattern = data.units.compound.per[unitDisplay];\n\t\t\t\t\tconst denominatorPattern = selectPlural(pl, 1, data.units.simple[denominatorUnit][unitDisplay]);\n\t\t\t\t\tunitPattern = unitPattern = perPattern.replace(\"{0}\", numeratorUnitPattern).replace(\"{1}\", denominatorPattern.replace(\"{0}\", \"\"));\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst result = [];\n\t\t\t// We need spacing around \"{0}\" because they are not treated as \"unit\" parts, but \"literal\".\n\t\t\tfor (const part of unitPattern.split(/(\\s*\\{0\\}\\s*)/)) {\n\t\t\t\tconst interpolateMatch = /^(\\s*)\\{0\\}(\\s*)$/.exec(part);\n\t\t\t\tif (interpolateMatch) {\n\t\t\t\t\t// Space before \"{0}\"\n\t\t\t\t\tif (interpolateMatch[1]) {\n\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\ttype: \"literal\",\n\t\t\t\t\t\t\tvalue: interpolateMatch[1]\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t// \"{0}\" itself\n\t\t\t\t\tresult.push(...numberParts);\n\t\t\t\t\t// Space after \"{0}\"\n\t\t\t\t\tif (interpolateMatch[2]) {\n\t\t\t\t\t\tresult.push({\n\t\t\t\t\t\t\ttype: \"literal\",\n\t\t\t\t\t\t\tvalue: interpolateMatch[2]\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (part) {\n\t\t\t\t\tresult.push({\n\t\t\t\t\t\ttype: \"unit\",\n\t\t\t\t\t\tvalue: part\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t\tdefault: return numberParts;\n\t}\n\t// #endregion\n}\n// A subset of https://tc39.es/ecma402/#sec-partitionnotationsubpattern\n// Plus the exponent parts handling.\nfunction partitionNumberIntoParts(symbols, numberResult, notation, exponent, numberingSystem, useGrouping, decimalNumberPattern, style, roundingIncrement, unsignedRoundingMode) {\n\tconst result = [];\n\t// eslint-disable-next-line prefer-const\n\tlet { formattedString: n, roundedNumber: x } = numberResult;\n\tif (x.isNaN()) {\n\t\treturn [{\n\t\t\ttype: \"nan\",\n\t\t\tvalue: n\n\t\t}];\n\t} else if (!x.isFinite()) {\n\t\treturn [{\n\t\t\ttype: \"infinity\",\n\t\t\tvalue: n\n\t\t}];\n\t}\n\tconst digitReplacementTable = digitMapping[numberingSystem];\n\tif (digitReplacementTable) {\n\t\tn = n.replace(/\\d/g, (digit) => digitReplacementTable[+digit] || digit);\n\t}\n\t// TODO: Else use an implementation dependent algorithm to map n to the appropriate\n\t// representation of n in the given numbering system.\n\tconst decimalSepIndex = n.indexOf(\".\");\n\tlet integer;\n\tlet fraction;\n\tif (decimalSepIndex > 0) {\n\t\tinteger = n.slice(0, decimalSepIndex);\n\t\tfraction = n.slice(decimalSepIndex + 1);\n\t} else {\n\t\tinteger = n;\n\t}\n\t// #region Grouping integer digits\n\t// The weird compact and x >= 10000 check is to ensure consistency with Node.js and Chrome.\n\t// Note that `de` does not have compact form for thousands, but Node.js does not insert grouping separator\n\t// unless the rounded number is greater than 10000:\n\t// NumberFormat('de', {notation: 'compact', compactDisplay: 'short'}).format(1234) //=> \"1234\"\n\t// NumberFormat('de').format(1234) //=> \"1.234\"\n\tlet shouldUseGrouping = false;\n\tif (useGrouping === \"always\") {\n\t\tshouldUseGrouping = true;\n\t} else if (useGrouping === \"min2\") {\n\t\tshouldUseGrouping = x.greaterThanOrEqualTo(1e4);\n\t} else if (useGrouping === \"auto\" || useGrouping) {\n\t\tshouldUseGrouping = notation !== \"compact\" || x.greaterThanOrEqualTo(1e4);\n\t}\n\tif (shouldUseGrouping) {\n\t\t// a. Let groupSepSymbol be the implementation-, locale-, and numbering system-dependent (ILND) String representing the grouping separator.\n\t\t// For currency we should use `currencyGroup` instead of generic `group`\n\t\tconst groupSepSymbol = style === \"currency\" && symbols.currencyGroup != null ? symbols.currencyGroup : symbols.group;\n\t\tconst groups = [];\n\t\t// > There may be two different grouping sizes: The primary grouping size used for the least\n\t\t// > significant integer group, and the secondary grouping size used for more significant groups.\n\t\t// > If a pattern contains multiple grouping separators, the interval between the last one and the\n\t\t// > end of the integer defines the primary grouping size, and the interval between the last two\n\t\t// > defines the secondary grouping size. All others are ignored.\n\t\tconst integerNumberPattern = decimalNumberPattern.split(\".\")[0];\n\t\tconst patternGroups = integerNumberPattern.split(\",\");\n\t\tlet primaryGroupingSize = 3;\n\t\tlet secondaryGroupingSize = 3;\n\t\tif (patternGroups.length > 1) {\n\t\t\tprimaryGroupingSize = patternGroups[patternGroups.length - 1].length;\n\t\t}\n\t\tif (patternGroups.length > 2) {\n\t\t\tsecondaryGroupingSize = patternGroups[patternGroups.length - 2].length;\n\t\t}\n\t\tlet i = integer.length - primaryGroupingSize;\n\t\tif (i > 0) {\n\t\t\t// Slice the least significant integer group\n\t\t\tgroups.push(integer.slice(i, i + primaryGroupingSize));\n\t\t\t// Then iteratively push the more signicant groups\n\t\t\t// TODO: handle surrogate pairs in some numbering system digits\n\t\t\tfor (i -= secondaryGroupingSize; i > 0; i -= secondaryGroupingSize) {\n\t\t\t\tgroups.push(integer.slice(i, i + secondaryGroupingSize));\n\t\t\t}\n\t\t\tgroups.push(integer.slice(0, i + secondaryGroupingSize));\n\t\t} else {\n\t\t\tgroups.push(integer);\n\t\t}\n\t\twhile (groups.length > 0) {\n\t\t\tconst integerGroup = groups.pop();\n\t\t\tresult.push({\n\t\t\t\ttype: \"integer\",\n\t\t\t\tvalue: integerGroup\n\t\t\t});\n\t\t\tif (groups.length > 0) {\n\t\t\t\tresult.push({\n\t\t\t\t\ttype: \"group\",\n\t\t\t\t\tvalue: groupSepSymbol\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult.push({\n\t\t\ttype: \"integer\",\n\t\t\tvalue: integer\n\t\t});\n\t}\n\t// #endregion\n\tif (fraction !== undefined) {\n\t\tconst decimalSepSymbol = style === \"currency\" && symbols.currencyDecimal != null ? symbols.currencyDecimal : symbols.decimal;\n\t\tresult.push({\n\t\t\ttype: \"decimal\",\n\t\t\tvalue: decimalSepSymbol\n\t\t}, {\n\t\t\ttype: \"fraction\",\n\t\t\tvalue: fraction\n\t\t});\n\t}\n\tif ((notation === \"scientific\" || notation === \"engineering\") && x.isFinite()) {\n\t\tresult.push({\n\t\t\ttype: \"exponentSeparator\",\n\t\t\tvalue: symbols.exponential\n\t\t});\n\t\tif (exponent < 0) {\n\t\t\tresult.push({\n\t\t\t\ttype: \"exponentMinusSign\",\n\t\t\t\tvalue: symbols.minusSign\n\t\t\t});\n\t\t\texponent = -exponent;\n\t\t}\n\t\tconst exponentResult = ToRawFixed(new Decimal(exponent), 0, 0, roundingIncrement, unsignedRoundingMode);\n\t\tresult.push({\n\t\t\ttype: \"exponentInteger\",\n\t\t\tvalue: exponentResult.formattedString\n\t\t});\n\t}\n\treturn result;\n}\nfunction getPatternForSign(pattern, sign) {\n\tif (pattern.indexOf(\";\") < 0) {\n\t\tpattern = `${pattern};-${pattern}`;\n\t}\n\tconst [zeroPattern, negativePattern] = pattern.split(\";\");\n\tswitch (sign) {\n\t\tcase 0: return zeroPattern;\n\t\tcase -1: return negativePattern;\n\t\tdefault: return negativePattern.indexOf(\"-\") >= 0 ? negativePattern.replace(/-/g, \"+\") : `+${zeroPattern}`;\n\t}\n}\n// Find the CLDR pattern for compact notation based on the magnitude of data and style.\n//\n// Example return value: \"¤ {c:laki}000;¤{c:laki} -0\" (`sw` locale):\n// - Notice the `{c:...}` token that wraps the compact literal.\n// - The consecutive zeros are normalized to single zero to match CLDR_NUMBER_PATTERN.\n//\n// Returning null means the compact display pattern cannot be found.\nfunction getCompactDisplayPattern(numberResult, pl, data, style, compactDisplay, currencyDisplay, numberingSystem) {\n\tconst { roundedNumber, sign, magnitude } = numberResult;\n\tlet magnitudeKey = String(10 ** magnitude);\n\tconst defaultNumberingSystem = data.numbers.nu[0];\n\tlet pattern;\n\tif (style === \"currency\" && currencyDisplay !== \"name\") {\n\t\tconst byNumberingSystem = data.numbers.currency;\n\t\tconst currencyData = byNumberingSystem[numberingSystem] || byNumberingSystem[defaultNumberingSystem];\n\t\t// NOTE: compact notation ignores currencySign!\n\t\tlet compactPluralRules = currencyData.short?.[magnitudeKey];\n\t\t// GH #4236: If magnitude exceeds available patterns, use the largest available\n\t\tif (!compactPluralRules) {\n\t\t\tconst thresholds = Object.keys(currencyData.short || {});\n\t\t\tif (thresholds.length > 0 && magnitudeKey > thresholds[thresholds.length - 1]) {\n\t\t\t\tmagnitudeKey = thresholds[thresholds.length - 1];\n\t\t\t\tcompactPluralRules = currencyData.short?.[magnitudeKey];\n\t\t\t}\n\t\t}\n\t\tif (!compactPluralRules) {\n\t\t\treturn null;\n\t\t}\n\t\tpattern = selectPlural(pl, roundedNumber.toNumber(), compactPluralRules);\n\t} else {\n\t\tconst byNumberingSystem = data.numbers.decimal;\n\t\tconst byCompactDisplay = byNumberingSystem[numberingSystem] || byNumberingSystem[defaultNumberingSystem];\n\t\tlet compactPlaralRule = byCompactDisplay[compactDisplay][magnitudeKey];\n\t\t// GH #4236: If magnitude exceeds available patterns, use the largest available\n\t\tif (!compactPlaralRule) {\n\t\t\tconst thresholds = Object.keys(byCompactDisplay[compactDisplay]);\n\t\t\tif (thresholds.length > 0 && magnitudeKey > thresholds[thresholds.length - 1]) {\n\t\t\t\tmagnitudeKey = thresholds[thresholds.length - 1];\n\t\t\t\tcompactPlaralRule = byCompactDisplay[compactDisplay][magnitudeKey];\n\t\t\t}\n\t\t}\n\t\tif (!compactPlaralRule) {\n\t\t\treturn null;\n\t\t}\n\t\tpattern = selectPlural(pl, roundedNumber.toNumber(), compactPlaralRule);\n\t}\n\t// See https://unicode.org/reports/tr35/tr35-numbers.html#Compact_Number_Formats\n\t// > If the value is precisely “0”, either explicit or defaulted, then the normal number format\n\t// > pattern for that sort of object is supplied.\n\tif (pattern === \"0\") {\n\t\treturn null;\n\t}\n\tpattern = getPatternForSign(pattern, sign).replace(/([^\\s;\\-+\\d¤]+)/g, \"{c:$1}\").replace(/0+/, \"0\");\n\treturn pattern;\n}\nfunction selectPlural(pl, x, rules) {\n\treturn rules[pl.select(x)] || rules.other;\n}\n","import { LookupSupportedLocales } from \"@formatjs/intl-localematcher\";\nimport { ToObject } from \"./262.js\";\nimport { GetOption } from \"./GetOption.js\";\n/**\n* https://tc39.es/ecma402/#sec-supportedlocales\n* @param availableLocales\n* @param requestedLocales\n* @param options\n*/\nexport function SupportedLocales(availableLocales, requestedLocales, options) {\n\tlet matcher = \"best fit\";\n\tif (options !== undefined) {\n\t\toptions = ToObject(options);\n\t\tmatcher = GetOption(options, \"localeMatcher\", \"string\", [\"lookup\", \"best fit\"], \"best fit\");\n\t}\n\tif (matcher === \"best fit\") {\n\t\treturn LookupSupportedLocales(Array.from(availableLocales), requestedLocales);\n\t}\n\treturn LookupSupportedLocales(Array.from(availableLocales), requestedLocales);\n}\n","/* @generated */\n// prettier-ignore\nexport const SegmentationRules = {\n\t\"de\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [\n\t\t\t\"Port.\",\n\t\t\t\"Alt.\",\n\t\t\t\"Di.\",\n\t\t\t\"Ges.\",\n\t\t\t\"frz.\",\n\t\t\t\"entspr.\",\n\t\t\t\"Gebr.\",\n\t\t\t\"erw.\",\n\t\t\t\"Frl.\",\n\t\t\t\"Inh.\",\n\t\t\t\"k.u.k.\",\n\t\t\t\"Ca.\",\n\t\t\t\"J.D.\",\n\t\t\t\"Ausg.\",\n\t\t\t\"evtl.\",\n\t\t\t\"So.\",\n\t\t\t\"i.B.\",\n\t\t\t\"s.a.\",\n\t\t\t\"kgl.\",\n\t\t\t\"Sept.\",\n\t\t\t\"o.B.\",\n\t\t\t\"Sa.\",\n\t\t\t\"ev.\",\n\t\t\t\"Dez.\",\n\t\t\t\"am.\",\n\t\t\t\"i.R.\",\n\t\t\t\"eigtl.\",\n\t\t\t\"i.J.\",\n\t\t\t\"u.U.\",\n\t\t\t\"G.\",\n\t\t\t\"z.Hd.\",\n\t\t\t\"u.A.w.g.\",\n\t\t\t\"Kl.\",\n\t\t\t\"Spezif.\",\n\t\t\t\"Obj.\",\n\t\t\t\"Ing.\",\n\t\t\t\"D. h.\",\n\t\t\t\"Folg.\",\n\t\t\t\"Akt.\",\n\t\t\t\"i.A.\",\n\t\t\t\"Msp.\",\n\t\t\t\"U.U.\",\n\t\t\t\"Chr.\",\n\t\t\t\"R.\",\n\t\t\t\"Einh.\",\n\t\t\t\"schwäb.\",\n\t\t\t\"Vgl.\",\n\t\t\t\"Aug.\",\n\t\t\t\"Dipl.-Ing.\",\n\t\t\t\"W.\",\n\t\t\t\"B.\",\n\t\t\t\"U. U.\",\n\t\t\t\"J.\",\n\t\t\t\"Fa.\",\n\t\t\t\"Mo.\",\n\t\t\t\"n.u.Z.\",\n\t\t\t\"Op.\",\n\t\t\t\"Mrd.\",\n\t\t\t\"e.h.\",\n\t\t\t\"Hr.\",\n\t\t\t\"Hrn.\",\n\t\t\t\"Ztr.\",\n\t\t\t\"k. u. k.\",\n\t\t\t\"Bibl.\",\n\t\t\t\"d.Ä.\",\n\t\t\t\"b.\",\n\t\t\t\"M.\",\n\t\t\t\"i.H.\",\n\t\t\t\"v.R.w.\",\n\t\t\t\"o.A.\",\n\t\t\t\"St.\",\n\t\t\t\"Dr.\",\n\t\t\t\"Fn.\",\n\t\t\t\"Abs.\",\n\t\t\t\"Rd.\",\n\t\t\t\"Dtzd.\",\n\t\t\t\"Jahrh.\",\n\t\t\t\"Z.\",\n\t\t\t\"Std.\",\n\t\t\t\"n. Chr.\",\n\t\t\t\"möbl.\",\n\t\t\t\"tägl.\",\n\t\t\t\"gest.\",\n\t\t\t\"gesch.\",\n\t\t\t\"z.B.\",\n\t\t\t\"Hbf.\",\n\t\t\t\"Abt.\",\n\t\t\t\"A.M.\",\n\t\t\t\"e.Wz.\",\n\t\t\t\"v.T.\",\n\t\t\t\"Nov.\",\n\t\t\t\"z.\",\n\t\t\t\"Prot.\",\n\t\t\t\"U.S.\",\n\t\t\t\"Wg.\",\n\t\t\t\"u.v.a.\",\n\t\t\t\"Adr.\",\n\t\t\t\"App.\",\n\t\t\t\"ggf.\",\n\t\t\t\"ggfs.\",\n\t\t\t\"Jan.\",\n\t\t\t\"O.\",\n\t\t\t\"Rel.\",\n\t\t\t\"od.\",\n\t\t\t\"Pfd.\",\n\t\t\t\"a.a.O.\",\n\t\t\t\"p.Adr.\",\n\t\t\t\"P.\",\n\t\t\t\"Gem.\",\n\t\t\t\"v. Chr.\",\n\t\t\t\"Art.\",\n\t\t\t\"z.Z.\",\n\t\t\t\"S.A.\",\n\t\t\t\"i.V.\",\n\t\t\t\"verh.\",\n\t\t\t\"Ausschl.\",\n\t\t\t\"m.W.\",\n\t\t\t\"Dir.\",\n\t\t\t\"Verf.\",\n\t\t\t\"Sek.\",\n\t\t\t\"r.\",\n\t\t\t\"Chin.\",\n\t\t\t\"Feb.\",\n\t\t\t\"Int.\",\n\t\t\t\"Sep.\",\n\t\t\t\"Gesch.\",\n\t\t\t\"schweiz.\",\n\t\t\t\"Bed.\",\n\t\t\t\"a.Rh.\",\n\t\t\t\"jew.\",\n\t\t\t\"vgl.\",\n\t\t\t\"a.M.\",\n\t\t\t\"Str.\",\n\t\t\t\"exkl.\",\n\t\t\t\"gek.\",\n\t\t\t\"Erf.\",\n\t\t\t\"u.Ä.\",\n\t\t\t\"ehem.\",\n\t\t\t\"näml.\",\n\t\t\t\"u. Z.\",\n\t\t\t\"v. u. Z.\",\n\t\t\t\"sog.\",\n\t\t\t\"C.\",\n\t\t\t\"Dipl.-Kfm.\",\n\t\t\t\"mtl.\",\n\t\t\t\"Hrsg.\",\n\t\t\t\"Qu.\",\n\t\t\t\"röm.\",\n\t\t\t\"u.\",\n\t\t\t\"U.\",\n\t\t\t\"Adj.\",\n\t\t\t\"Kap.\",\n\t\t\t\"hpts.\",\n\t\t\t\"a.D.\",\n\t\t\t\"gedr.\",\n\t\t\t\"Best.\",\n\t\t\t\"N.\",\n\t\t\t\"v.u.Z.\",\n\t\t\t\"Phys.\",\n\t\t\t\"Fr.\",\n\t\t\t\"d.J.\",\n\t\t\t\"Reg.-Bez.\",\n\t\t\t\"m.E.\",\n\t\t\t\"schles.\",\n\t\t\t\"Max.\",\n\t\t\t\"Ltd.\",\n\t\t\t\"südd.\",\n\t\t\t\"inkl.\",\n\t\t\t\"geb.\",\n\t\t\t\"Ggf.\",\n\t\t\t\"Inc.\",\n\t\t\t\"kath.\",\n\t\t\t\"kfm.\",\n\t\t\t\"Nr.\",\n\t\t\t\"Proz.\",\n\t\t\t\"Dim.\",\n\t\t\t\"verw.\",\n\t\t\t\"Reg.\",\n\t\t\t\"Dat.\",\n\t\t\t\"Evtl.\",\n\t\t\t\"led.\",\n\t\t\t\"F.\",\n\t\t\t\"Test.\",\n\t\t\t\"Schr.\",\n\t\t\t\"Do.\",\n\t\t\t\"PIN.\",\n\t\t\t\"Z. Zt.\",\n\t\t\t\"v.Chr.\",\n\t\t\t\"Tägl.\",\n\t\t\t\"s.\",\n\t\t\t\"amtl.\",\n\t\t\t\"Temp.\",\n\t\t\t\"Mind.\",\n\t\t\t\"e.V.\",\n\t\t\t\"Abw.\",\n\t\t\t\"P.M.\",\n\t\t\t\"F.f.\",\n\t\t\t\"a.a.S.\",\n\t\t\t\"Mod.\",\n\t\t\t\"Co.\",\n\t\t\t\"Min.\",\n\t\t\t\"Allg.\",\n\t\t\t\"Geograph.\",\n\t\t\t\"Jr.\",\n\t\t\t\"Urspr.\",\n\t\t\t\"Apr.\",\n\t\t\t\"Z. B.\",\n\t\t\t\"v.H.\",\n\t\t\t\"A.\",\n\t\t\t\"einschl.\",\n\t\t\t\"Trans.\",\n\t\t\t\"zzgl.\",\n\t\t\t\"StR.\",\n\t\t\t\"Fam.\",\n\t\t\t\"I.\",\n\t\t\t\"jhrl.\",\n\t\t\t\"u.a.\",\n\t\t\t\"Ben.\",\n\t\t\t\"o.g.\",\n\t\t\t\"Kfm.\",\n\t\t\t\"Konv.\",\n\t\t\t\"Mi.\",\n\t\t\t\"L.\",\n\t\t\t\"beil.\",\n\t\t\t\"T.\",\n\t\t\t\"Ursprüngl.\",\n\t\t\t\"röm.-kath.\",\n\t\t\t\"Okt.\",\n\t\t\t\"u.ä.\",\n\t\t\t\"Tel.\",\n\t\t\t\"D.\",\n\t\t\t\"Ber.\",\n\t\t\t\"Kop.\",\n\t\t\t\"Mio.\",\n\t\t\t\"Y.\",\n\t\t\t\"U.S.A.\",\n\t\t\t\"v. H.\",\n\t\t\t\"Forts. f.\",\n\t\t\t\"Rep.\",\n\t\t\t\"Hptst.\",\n\t\t\t\"österr.\"\n\t\t],\n\t\t\"variables\": {}\n\t} },\n\t\"el\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [],\n\t\t\"variables\": { \"$STerm\": \"(?:[!;\\\\?\\\\u037E\\\\u0589\\\\u061D-\\\\u061F\\\\u06D4\\\\u0700-\\\\u0702\\\\u07F9\\\\u0837\\\\u0839\\\\u083D\\\\u083E\\\\u0964\\\\u0965\\\\u104A\\\\u104B\\\\u1362\\\\u1367\\\\u1368\\\\u166E\\\\u1735\\\\u1736\\\\u17D4\\\\u17D5\\\\u1803\\\\u1809\\\\u1944\\\\u1945\\\\u1AA8-\\\\u1AAB\\\\u1B4E\\\\u1B4F\\\\u1B5A\\\\u1B5B\\\\u1B5E\\\\u1B5F\\\\u1B7D-\\\\u1B7F\\\\u1C3B\\\\u1C3C\\\\u1C7E\\\\u1C7F\\\\u203C\\\\u203D\\\\u2047-\\\\u2049\\\\u2CF9-\\\\u2CFB\\\\u2E2E\\\\u2E3C\\\\u2E53\\\\u2E54\\\\u3002\\\\uA4FF\\\\uA60E\\\\uA60F\\\\uA6F3\\\\uA6F7\\\\uA876\\\\uA877\\\\uA8CE\\\\uA8CF\\\\uA92F\\\\uA9C8\\\\uA9C9\\\\uAA5D-\\\\uAA5F\\\\uAAF0\\\\uAAF1\\\\uABEB\\\\uFE12\\\\uFE15\\\\uFE16\\\\uFE56\\\\uFE57\\\\uFF01\\\\uFF1F\\\\uFF61]|\\\\uD802[\\\\uDE56\\\\uDE57]|\\\\uD803[\\\\uDF55-\\\\uDF59\\\\uDF86-\\\\uDF89]|\\\\uD804[\\\\uDC47\\\\uDC48\\\\uDCBE-\\\\uDCC1\\\\uDD41-\\\\uDD43\\\\uDDC5\\\\uDDC6\\\\uDDCD\\\\uDDDE\\\\uDDDF\\\\uDE38\\\\uDE39\\\\uDE3B\\\\uDE3C\\\\uDEA9\\\\uDFD4\\\\uDFD5]|\\\\uD805[\\\\uDC4B\\\\uDC4C\\\\uDDC2\\\\uDDC3\\\\uDDC9-\\\\uDDD7\\\\uDE41\\\\uDE42\\\\uDF3C-\\\\uDF3E]|\\\\uD806[\\\\uDD44\\\\uDD46\\\\uDE42\\\\uDE43\\\\uDE9B\\\\uDE9C]|\\\\uD807[\\\\uDC41\\\\uDC42\\\\uDEF7\\\\uDEF8\\\\uDF43\\\\uDF44]|\\\\uD81A[\\\\uDE6E\\\\uDE6F\\\\uDEF5\\\\uDF37\\\\uDF38\\\\uDF44]|\\\\uD81B[\\\\uDD6E\\\\uDD6F\\\\uDE98]|\\\\uD82F\\\\uDC9F|\\\\uD836\\\\uDE88)\" }\n\t} },\n\t\"en\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [\n\t\t\t\"L.P.\",\n\t\t\t\"Alt.\",\n\t\t\t\"Approx.\",\n\t\t\t\"E.G.\",\n\t\t\t\"O.\",\n\t\t\t\"Maj.\",\n\t\t\t\"Misc.\",\n\t\t\t\"P.O.\",\n\t\t\t\"J.D.\",\n\t\t\t\"Jam.\",\n\t\t\t\"Card.\",\n\t\t\t\"Dec.\",\n\t\t\t\"Sept.\",\n\t\t\t\"MR.\",\n\t\t\t\"Long.\",\n\t\t\t\"Hat.\",\n\t\t\t\"G.\",\n\t\t\t\"Link.\",\n\t\t\t\"DC.\",\n\t\t\t\"D.C.\",\n\t\t\t\"M.T.\",\n\t\t\t\"Hz.\",\n\t\t\t\"Mrs.\",\n\t\t\t\"By.\",\n\t\t\t\"Act.\",\n\t\t\t\"Var.\",\n\t\t\t\"N.V.\",\n\t\t\t\"Aug.\",\n\t\t\t\"B.\",\n\t\t\t\"S.A.\",\n\t\t\t\"Up.\",\n\t\t\t\"Job.\",\n\t\t\t\"Num.\",\n\t\t\t\"M.I.T.\",\n\t\t\t\"Ok.\",\n\t\t\t\"Org.\",\n\t\t\t\"Ex.\",\n\t\t\t\"Cont.\",\n\t\t\t\"U.\",\n\t\t\t\"Mart.\",\n\t\t\t\"Fn.\",\n\t\t\t\"Abs.\",\n\t\t\t\"Lt.\",\n\t\t\t\"OK.\",\n\t\t\t\"Z.\",\n\t\t\t\"E.\",\n\t\t\t\"Kb.\",\n\t\t\t\"Est.\",\n\t\t\t\"A.M.\",\n\t\t\t\"L.A.\",\n\t\t\t\"Prof.\",\n\t\t\t\"U.S.\",\n\t\t\t\"Nov.\",\n\t\t\t\"Ph.D.\",\n\t\t\t\"Mar.\",\n\t\t\t\"I.T.\",\n\t\t\t\"exec.\",\n\t\t\t\"Jan.\",\n\t\t\t\"N.Y.\",\n\t\t\t\"X.\",\n\t\t\t\"Md.\",\n\t\t\t\"Op.\",\n\t\t\t\"vs.\",\n\t\t\t\"D.A.\",\n\t\t\t\"A.D.\",\n\t\t\t\"R.L.\",\n\t\t\t\"P.M.\",\n\t\t\t\"Or.\",\n\t\t\t\"M.R.\",\n\t\t\t\"Cap.\",\n\t\t\t\"PC.\",\n\t\t\t\"Feb.\",\n\t\t\t\"Exec.\",\n\t\t\t\"I.e.\",\n\t\t\t\"Sep.\",\n\t\t\t\"Gb.\",\n\t\t\t\"K.\",\n\t\t\t\"U.S.C.\",\n\t\t\t\"Mt.\",\n\t\t\t\"S.\",\n\t\t\t\"A.S.\",\n\t\t\t\"C.O.D.\",\n\t\t\t\"Capt.\",\n\t\t\t\"Col.\",\n\t\t\t\"In.\",\n\t\t\t\"C.F.\",\n\t\t\t\"Adj.\",\n\t\t\t\"AD.\",\n\t\t\t\"I.D.\",\n\t\t\t\"Mgr.\",\n\t\t\t\"R.T.\",\n\t\t\t\"B.V.\",\n\t\t\t\"M.\",\n\t\t\t\"Conn.\",\n\t\t\t\"Yr.\",\n\t\t\t\"Rev.\",\n\t\t\t\"Phys.\",\n\t\t\t\"pp.\",\n\t\t\t\"Ms.\",\n\t\t\t\"To.\",\n\t\t\t\"Sgt.\",\n\t\t\t\"J.K.\",\n\t\t\t\"Nr.\",\n\t\t\t\"Jun.\",\n\t\t\t\"Fri.\",\n\t\t\t\"S.A.R.\",\n\t\t\t\"Lev.\",\n\t\t\t\"Lt.Cdr.\",\n\t\t\t\"Def.\",\n\t\t\t\"F.\",\n\t\t\t\"Do.\",\n\t\t\t\"Joe.\",\n\t\t\t\"Id.\",\n\t\t\t\"Mr.\",\n\t\t\t\"Dept.\",\n\t\t\t\"Is.\",\n\t\t\t\"Pvt.\",\n\t\t\t\"Diff.\",\n\t\t\t\"Hon.B.A.\",\n\t\t\t\"Q.\",\n\t\t\t\"Mb.\",\n\t\t\t\"On.\",\n\t\t\t\"Min.\",\n\t\t\t\"J.B.\",\n\t\t\t\"Ed.\",\n\t\t\t\"AB.\",\n\t\t\t\"A.\",\n\t\t\t\"S.p.A.\",\n\t\t\t\"I.\",\n\t\t\t\"a.m.\",\n\t\t\t\"Comm.\",\n\t\t\t\"Go.\",\n\t\t\t\"VS.\",\n\t\t\t\"L.\",\n\t\t\t\"All.\",\n\t\t\t\"PP.\",\n\t\t\t\"P.V.\",\n\t\t\t\"T.\",\n\t\t\t\"K.R.\",\n\t\t\t\"Etc.\",\n\t\t\t\"D.\",\n\t\t\t\"Adv.\",\n\t\t\t\"Lib.\",\n\t\t\t\"E.g.\",\n\t\t\t\"Pro.\",\n\t\t\t\"U.S.A.\",\n\t\t\t\"S.E.\",\n\t\t\t\"AA.\",\n\t\t\t\"Rep.\",\n\t\t\t\"Sq.\",\n\t\t\t\"As.\"\n\t\t],\n\t\t\"variables\": {}\n\t} },\n\t\"es\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [\n\t\t\t\"Rdos.\",\n\t\t\t\"JJ.OO.\",\n\t\t\t\"Sres.\",\n\t\t\t\"fig.\",\n\t\t\t\"may.\",\n\t\t\t\"RR.HH.\",\n\t\t\t\"oct.\",\n\t\t\t\"cap.\",\n\t\t\t\"mié.\",\n\t\t\t\"doc.\",\n\t\t\t\"Excmo.\",\n\t\t\t\"Trab.\",\n\t\t\t\"Excmos.\",\n\t\t\t\"Kit.\",\n\t\t\t\"Inc.\",\n\t\t\t\"FF.CC.\",\n\t\t\t\"DC.\",\n\t\t\t\"ago.\",\n\t\t\t\"trad.\",\n\t\t\t\"SA.\",\n\t\t\t\"Rvdos.\",\n\t\t\t\"ed.\",\n\t\t\t\"Exmo.\",\n\t\t\t\"jul.\",\n\t\t\t\"col.\",\n\t\t\t\"RAM.\",\n\t\t\t\"Srtas.\",\n\t\t\t\"ene.\",\n\t\t\t\"Rol.\",\n\t\t\t\"Fabric.\",\n\t\t\t\"Comm.\",\n\t\t\t\"vid.\",\n\t\t\t\"Da.\",\n\t\t\t\"dic.\",\n\t\t\t\"ss.\",\n\t\t\t\"abr.\",\n\t\t\t\"ntra.\",\n\t\t\t\"Sra.\",\n\t\t\t\"dtor.\",\n\t\t\t\"cf.\",\n\t\t\t\"dom.\",\n\t\t\t\"prov.\",\n\t\t\t\"Emm.\",\n\t\t\t\"Sr.\",\n\t\t\t\"licdo.\",\n\t\t\t\"p.ej.\",\n\t\t\t\"bol.\",\n\t\t\t\"figs.\",\n\t\t\t\"Vda.\",\n\t\t\t\"Dr.\",\n\t\t\t\"ntro.\",\n\t\t\t\"Desv.\",\n\t\t\t\"O.M.\",\n\t\t\t\"Ldo.\",\n\t\t\t\"Drs.\",\n\t\t\t\"sáb.\",\n\t\t\t\"feb.\",\n\t\t\t\"Ltda.\",\n\t\t\t\"Lcda.\",\n\t\t\t\"Exma.\",\n\t\t\t\"C.V.\",\n\t\t\t\"SS.MM.\",\n\t\t\t\"Lda.\",\n\t\t\t\"U.S.\",\n\t\t\t\"hnos.\",\n\t\t\t\"R.D.\",\n\t\t\t\"Korn.\",\n\t\t\t\"v.gr.\",\n\t\t\t\"vs.\",\n\t\t\t\"Ilmas.\",\n\t\t\t\"Rdo.\",\n\t\t\t\"ej.\",\n\t\t\t\"vie.\",\n\t\t\t\"jue.\",\n\t\t\t\"a. C.\",\n\t\t\t\"Ilmos.\",\n\t\t\t\"e. c.\",\n\t\t\t\"Excma.\",\n\t\t\t\"afma.\",\n\t\t\t\"licda.\",\n\t\t\t\"Em.\",\n\t\t\t\"K.\",\n\t\t\t\"sras.\",\n\t\t\t\"MM.\",\n\t\t\t\"fund.\",\n\t\t\t\"Mons.\",\n\t\t\t\"Lcdo.\",\n\t\t\t\"afmo.\",\n\t\t\t\"C.\",\n\t\t\t\"A.C.\",\n\t\t\t\"dptos.\",\n\t\t\t\"Col.\",\n\t\t\t\"Srta.\",\n\t\t\t\"Av.\",\n\t\t\t\"Ant.\",\n\t\t\t\"depto.\",\n\t\t\t\"Var.\",\n\t\t\t\"H.P.\",\n\t\t\t\"D.\",\n\t\t\t\"M.\",\n\t\t\t\"C.P.\",\n\t\t\t\"Rev.\",\n\t\t\t\"Rvdmos.\",\n\t\t\t\"Fr.\",\n\t\t\t\"Ilmo.\",\n\t\t\t\"afmos.\",\n\t\t\t\"Ltd.\",\n\t\t\t\"afmas.\",\n\t\t\t\"prof.\",\n\t\t\t\"lun.\",\n\t\t\t\"SS.AA.\",\n\t\t\t\"Sol.\",\n\t\t\t\"nov.\",\n\t\t\t\"mss.\",\n\t\t\t\"Dña.\",\n\t\t\t\"Seg.\",\n\t\t\t\"mar.\",\n\t\t\t\"Rvdmo.\",\n\t\t\t\"Reg.\",\n\t\t\t\"ms.\",\n\t\t\t\"Sras.\",\n\t\t\t\"sres.\",\n\t\t\t\"U.S.A.\",\n\t\t\t\"Sta.\",\n\t\t\t\"Sdad.\",\n\t\t\t\"Dra.\",\n\t\t\t\"srs.\",\n\t\t\t\"R.U.\",\n\t\t\t\"deptos.\",\n\t\t\t\"dpto.\",\n\t\t\t\"jun.\",\n\t\t\t\"bco.\",\n\t\t\t\"Cía.\",\n\t\t\t\"Id.\",\n\t\t\t\"Mr.\",\n\t\t\t\"e.g.\",\n\t\t\t\"C.S.\",\n\t\t\t\"Excmas.\",\n\t\t\t\"Dª.\",\n\t\t\t\"Rvdo.\",\n\t\t\t\"Lic.\",\n\t\t\t\"cfr.\",\n\t\t\t\"Corp.\",\n\t\t\t\"Dto.\",\n\t\t\t\"Ilma.\",\n\t\t\t\"L.\",\n\t\t\t\"All.\",\n\t\t\t\"PP.\",\n\t\t\t\"d. C.\",\n\t\t\t\"Ltdo.\",\n\t\t\t\"mtro.\",\n\t\t\t\"Mrs.\",\n\t\t\t\"Desc.\",\n\t\t\t\"Avda.\",\n\t\t\t\"Exmas.\",\n\t\t\t\"a. e. c.\",\n\t\t\t\"Bien.\",\n\t\t\t\"Exmos.\",\n\t\t\t\"AA.\",\n\t\t\t\"Sto.\",\n\t\t\t\"CA.\",\n\t\t\t\"sept.\",\n\t\t\t\"Exc.\",\n\t\t\t\"c/c.\"\n\t\t],\n\t\t\"variables\": {}\n\t} },\n\t\"fr\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [\n\t\t\t\"aux.\",\n\t\t\t\"config.\",\n\t\t\t\"collab.\",\n\t\t\t\"M.\",\n\t\t\t\"dim.\",\n\t\t\t\"imprim.\",\n\t\t\t\"oct.\",\n\t\t\t\"syst.\",\n\t\t\t\"bull.\",\n\t\t\t\"MM.\",\n\t\t\t\"doc.\",\n\t\t\t\"P.O.\",\n\t\t\t\"hôp.\",\n\t\t\t\"Mart.\",\n\t\t\t\"juil.\",\n\t\t\t\"broch.\",\n\t\t\t\"adr.\",\n\t\t\t\"symb.\",\n\t\t\t\"C.\",\n\t\t\t\"anc.\",\n\t\t\t\"voit.\",\n\t\t\t\"Jr.\",\n\t\t\t\"graph.\",\n\t\t\t\"dir.\",\n\t\t\t\"éd.\",\n\t\t\t\"fig.\",\n\t\t\t\"édit.\",\n\t\t\t\"niv.\",\n\t\t\t\"quart.\",\n\t\t\t\"cam.\",\n\t\t\t\"éval.\",\n\t\t\t\"anon.\",\n\t\t\t\"réf.\",\n\t\t\t\"Comm.\",\n\t\t\t\"Prof.\",\n\t\t\t\"févr.\",\n\t\t\t\"indus.\",\n\t\t\t\"DC.\",\n\t\t\t\"équiv.\",\n\t\t\t\"illustr.\",\n\t\t\t\"acoust.\",\n\t\t\t\"nov.\",\n\t\t\t\"L.\",\n\t\t\t\"All.\",\n\t\t\t\"U.S.\",\n\t\t\t\"S.M.A.R.T.\",\n\t\t\t\"sept.\",\n\t\t\t\"avr.\",\n\t\t\t\"jeu.\",\n\t\t\t\"dest.\",\n\t\t\t\"P.-D. G.\",\n\t\t\t\"ill.\",\n\t\t\t\"coll.\",\n\t\t\t\"encycl.\",\n\t\t\t\"mer.\",\n\t\t\t\"Desc.\",\n\t\t\t\"ven.\",\n\t\t\t\"P.\",\n\t\t\t\"lun.\",\n\t\t\t\"Inc.\",\n\t\t\t\"sam.\",\n\t\t\t\"D.\",\n\t\t\t\"append.\",\n\t\t\t\"Var.\",\n\t\t\t\"categ.\",\n\t\t\t\"janv.\",\n\t\t\t\"S.A.\",\n\t\t\t\"imm.\",\n\t\t\t\"U.S.A.\",\n\t\t\t\"mar.\",\n\t\t\t\"exempl.\",\n\t\t\t\"déc.\",\n\t\t\t\"ann.\",\n\t\t\t\"U.\",\n\t\t\t\"synth.\",\n\t\t\t\"dict.\",\n\t\t\t\"av. J.-C.\",\n\t\t\t\"W.\",\n\t\t\t\"Op.\",\n\t\t\t\"ap. J.-C.\",\n\t\t\t\"gouv.\",\n\t\t\t\"trav. publ.\"\n\t\t],\n\t\t\"variables\": {}\n\t} },\n\t\"it\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [\n\t\t\t\"N.B.\",\n\t\t\t\"div.\",\n\t\t\t\"a.C.\",\n\t\t\t\"fig.\",\n\t\t\t\"d.p.R.\",\n\t\t\t\"c.c.p.\",\n\t\t\t\"Cfr.\",\n\t\t\t\"vol.\",\n\t\t\t\"Geom.\",\n\t\t\t\"O.d.G.\",\n\t\t\t\"S.p.A.\",\n\t\t\t\"ver.\",\n\t\t\t\"N.d.A.\",\n\t\t\t\"dott.\",\n\t\t\t\"arch.\",\n\t\t\t\"d.C.\",\n\t\t\t\"N.d.T.\",\n\t\t\t\"rag.\",\n\t\t\t\"Sig.\",\n\t\t\t\"Mod.\",\n\t\t\t\"pag.\",\n\t\t\t\"dr.\",\n\t\t\t\"tav.\",\n\t\t\t\"N.d.E.\",\n\t\t\t\"DC.\",\n\t\t\t\"mitt.\",\n\t\t\t\"Ing.\",\n\t\t\t\"int.\",\n\t\t\t\"on.\",\n\t\t\t\"C.P.\",\n\t\t\t\"ag.\",\n\t\t\t\"L.\",\n\t\t\t\"U.S.\",\n\t\t\t\"S.M.A.R.T.\",\n\t\t\t\"p.i.\",\n\t\t\t\"tab.\",\n\t\t\t\"Ltd.\",\n\t\t\t\"Liv.\",\n\t\t\t\"D.\",\n\t\t\t\"U.S.A.\",\n\t\t\t\"sez.\",\n\t\t\t\"avv.\",\n\t\t\t\"S.A.R.\",\n\t\t\t\"all.\",\n\t\t\t\"p.\"\n\t\t],\n\t\t\"variables\": {}\n\t} },\n\t\"ja\": { \"word\": {\n\t\t\"segmentRules\": {\n\t\t\t\"13.3\": {\n\t\t\t\t\"after\": \"$Hiragana\",\n\t\t\t\t\"before\": \"$Hiragana\",\n\t\t\t\t\"breaks\": false\n\t\t\t},\n\t\t\t\"13.4\": {\n\t\t\t\t\"after\": \"$Ideographic\",\n\t\t\t\t\"before\": \"$Ideographic\",\n\t\t\t\t\"breaks\": false\n\t\t\t}\n\t\t},\n\t\t\"suppressions\": [],\n\t\t\"variables\": {\n\t\t\t\"$Hiragana\": \"((?:[\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F]|\\\\uD82C[\\\\uDC01-\\\\uDD1F\\\\uDD32\\\\uDD50-\\\\uDD52]|\\\\uD83C\\\\uDE00)(?:(?:[\\\\xAD\\\\u061C\\\\u180E\\\\u200E\\\\u200F\\\\u202A-\\\\u202E\\\\u2060-\\\\u2064\\\\u2066-\\\\u206F\\\\uFEFF\\\\uFFF9-\\\\uFFFB]|\\\\uD80D[\\\\uDC30-\\\\uDC3F]|\\\\uD82F[\\\\uDCA0-\\\\uDCA3]|\\\\uD834[\\\\uDD73-\\\\uDD7A]|\\\\uDB40\\\\uDC01)|(?:[\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u07FD\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u0897-\\\\u089F\\\\u08CA-\\\\u08E1\\\\u08E3-\\\\u0903\\\\u093A-\\\\u093C\\\\u093E-\\\\u094F\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981-\\\\u0983\\\\u09BC\\\\u09BE-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u09FE\\\\u0A01-\\\\u0A03\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0ABC\\\\u0ABE-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0AFA-\\\\u0AFF\\\\u0B01-\\\\u0B03\\\\u0B3C\\\\u0B3E-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B55-\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD7\\\\u0C00-\\\\u0C04\\\\u0C3C\\\\u0C3E-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81-\\\\u0C83\\\\u0CBC\\\\u0CBE-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0CF3\\\\u0D00-\\\\u0D03\\\\u0D3B\\\\u0D3C\\\\u0D3E-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D81-\\\\u0D83\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DF2\\\\u0DF3\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EBC\\\\u0EC8-\\\\u0ECE\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E\\\\u0F3F\\\\u0F71-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102B-\\\\u103E\\\\u1056-\\\\u1059\\\\u105E-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106D\\\\u1071-\\\\u1074\\\\u1082-\\\\u108D\\\\u108F\\\\u109A-\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1715\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u180F\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1A17-\\\\u1A1B\\\\u1A55-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ADD\\\\u1AE0-\\\\u1AEB\\\\u1B00-\\\\u1B04\\\\u1B34-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1B82\\\\u1BA1-\\\\u1BAD\\\\u1BE6-\\\\u1BF3\\\\u1C24-\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE8\\\\u1CED\\\\u1CF4\\\\u1CF7-\\\\u1CF9\\\\u1DC0-\\\\u1DFF\\\\u200C\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA823-\\\\uA827\\\\uA82C\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA8FF\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA953\\\\uA980-\\\\uA983\\\\uA9B3-\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA4D\\\\uAA7B-\\\\uAA7D\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEB-\\\\uAAEF\\\\uAAF5\\\\uAAF6\\\\uABE3-\\\\uABEA\\\\uABEC\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F\\\\uFF9E\\\\uFF9F]|\\\\uD800[\\\\uDDFD\\\\uDEE0\\\\uDF76-\\\\uDF7A]|\\\\uD802[\\\\uDE01-\\\\uDE03\\\\uDE05\\\\uDE06\\\\uDE0C-\\\\uDE0F\\\\uDE38-\\\\uDE3A\\\\uDE3F\\\\uDEE5\\\\uDEE6]|\\\\uD803[\\\\uDD24-\\\\uDD27\\\\uDD69-\\\\uDD6D\\\\uDEAB\\\\uDEAC\\\\uDEFA-\\\\uDEFF\\\\uDF46-\\\\uDF50\\\\uDF82-\\\\uDF85]|\\\\uD804[\\\\uDC00-\\\\uDC02\\\\uDC38-\\\\uDC46\\\\uDC70\\\\uDC73\\\\uDC74\\\\uDC7F-\\\\uDC82\\\\uDCB0-\\\\uDCBA\\\\uDCC2\\\\uDD00-\\\\uDD02\\\\uDD27-\\\\uDD34\\\\uDD45\\\\uDD46\\\\uDD73\\\\uDD80-\\\\uDD82\\\\uDDB3-\\\\uDDC0\\\\uDDC9-\\\\uDDCC\\\\uDDCE\\\\uDDCF\\\\uDE2C-\\\\uDE37\\\\uDE3E\\\\uDE41\\\\uDEDF-\\\\uDEEA\\\\uDF00-\\\\uDF03\\\\uDF3B\\\\uDF3C\\\\uDF3E-\\\\uDF44\\\\uDF47\\\\uDF48\\\\uDF4B-\\\\uDF4D\\\\uDF57\\\\uDF62\\\\uDF63\\\\uDF66-\\\\uDF6C\\\\uDF70-\\\\uDF74\\\\uDFB8-\\\\uDFC0\\\\uDFC2\\\\uDFC5\\\\uDFC7-\\\\uDFCA\\\\uDFCC-\\\\uDFD0\\\\uDFD2\\\\uDFE1\\\\uDFE2]|\\\\uD805[\\\\uDC35-\\\\uDC46\\\\uDC5E\\\\uDCB0-\\\\uDCC3\\\\uDDAF-\\\\uDDB5\\\\uDDB8-\\\\uDDC0\\\\uDDDC\\\\uDDDD\\\\uDE30-\\\\uDE40\\\\uDEAB-\\\\uDEB7\\\\uDF1D-\\\\uDF2B]|\\\\uD806[\\\\uDC2C-\\\\uDC3A\\\\uDD30-\\\\uDD35\\\\uDD37\\\\uDD38\\\\uDD3B-\\\\uDD3E\\\\uDD40\\\\uDD42\\\\uDD43\\\\uDDD1-\\\\uDDD7\\\\uDDDA-\\\\uDDE0\\\\uDDE4\\\\uDE01-\\\\uDE0A\\\\uDE33-\\\\uDE39\\\\uDE3B-\\\\uDE3E\\\\uDE47\\\\uDE51-\\\\uDE5B\\\\uDE8A-\\\\uDE99\\\\uDF60-\\\\uDF67]|\\\\uD807[\\\\uDC2F-\\\\uDC36\\\\uDC38-\\\\uDC3F\\\\uDC92-\\\\uDCA7\\\\uDCA9-\\\\uDCB6\\\\uDD31-\\\\uDD36\\\\uDD3A\\\\uDD3C\\\\uDD3D\\\\uDD3F-\\\\uDD45\\\\uDD47\\\\uDD8A-\\\\uDD8E\\\\uDD90\\\\uDD91\\\\uDD93-\\\\uDD97\\\\uDEF3-\\\\uDEF6\\\\uDF00\\\\uDF01\\\\uDF03\\\\uDF34-\\\\uDF3A\\\\uDF3E-\\\\uDF42\\\\uDF5A]|\\\\uD80D[\\\\uDC40\\\\uDC47-\\\\uDC55]|\\\\uD818[\\\\uDD1E-\\\\uDD2F]|\\\\uD81A[\\\\uDEF0-\\\\uDEF4\\\\uDF30-\\\\uDF36]|\\\\uD81B[\\\\uDF4F\\\\uDF51-\\\\uDF87\\\\uDF8F-\\\\uDF92\\\\uDFE4\\\\uDFF0\\\\uDFF1]|\\\\uD82F[\\\\uDC9D\\\\uDC9E]|\\\\uD833[\\\\uDF00-\\\\uDF2D\\\\uDF30-\\\\uDF46]|\\\\uD834[\\\\uDD65-\\\\uDD69\\\\uDD6D-\\\\uDD72\\\\uDD7B-\\\\uDD82\\\\uDD85-\\\\uDD8B\\\\uDDAA-\\\\uDDAD\\\\uDE42-\\\\uDE44]|\\\\uD836[\\\\uDE00-\\\\uDE36\\\\uDE3B-\\\\uDE6C\\\\uDE75\\\\uDE84\\\\uDE9B-\\\\uDE9F\\\\uDEA1-\\\\uDEAF]|\\\\uD838[\\\\uDC00-\\\\uDC06\\\\uDC08-\\\\uDC18\\\\uDC1B-\\\\uDC21\\\\uDC23\\\\uDC24\\\\uDC26-\\\\uDC2A\\\\uDC8F\\\\uDD30-\\\\uDD36\\\\uDEAE\\\\uDEEC-\\\\uDEEF]|\\\\uD839[\\\\uDCEC-\\\\uDCEF\\\\uDDEE\\\\uDDEF\\\\uDEE3\\\\uDEE6\\\\uDEEE\\\\uDEEF\\\\uDEF5]|\\\\uD83A[\\\\uDCD0-\\\\uDCD6\\\\uDD44-\\\\uDD4A]|\\\\uD83C[\\\\uDFFB-\\\\uDFFF]|\\\\uDB40[\\\\uDC20-\\\\uDC7F\\\\uDD00-\\\\uDDEF]))*)\",\n\t\t\t\"$Ideographic\": \"((?:[\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3038-\\\\u303B\\\\u3400-\\\\u4DBF\\\\u4E00-\\\\u9FFF\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9]|\\\\uD81B[\\\\uDFE4\\\\uDFF2-\\\\uDFF6]|[\\\\uD81C-\\\\uD822\\\\uD840-\\\\uD868\\\\uD86A-\\\\uD86D\\\\uD86F-\\\\uD872\\\\uD874-\\\\uD879\\\\uD880-\\\\uD883\\\\uD885-\\\\uD88C][\\\\uDC00-\\\\uDFFF]|\\\\uD823[\\\\uDC00-\\\\uDCD5\\\\uDCFF-\\\\uDD1E\\\\uDD80-\\\\uDDF2]|\\\\uD82C[\\\\uDD70-\\\\uDEFB]|\\\\uD869[\\\\uDC00-\\\\uDEDF\\\\uDF00-\\\\uDFFF]|\\\\uD86E[\\\\uDC00-\\\\uDC1D\\\\uDC20-\\\\uDFFF]|\\\\uD873[\\\\uDC00-\\\\uDEAD\\\\uDEB0-\\\\uDFFF]|\\\\uD87A[\\\\uDC00-\\\\uDFE0\\\\uDFF0-\\\\uDFFF]|\\\\uD87B[\\\\uDC00-\\\\uDE5D]|\\\\uD87E[\\\\uDC00-\\\\uDE1D]|\\\\uD884[\\\\uDC00-\\\\uDF4A\\\\uDF50-\\\\uDFFF]|\\\\uD88D[\\\\uDC00-\\\\uDC79])(?:(?:[\\\\xAD\\\\u061C\\\\u180E\\\\u200E\\\\u200F\\\\u202A-\\\\u202E\\\\u2060-\\\\u2064\\\\u2066-\\\\u206F\\\\uFEFF\\\\uFFF9-\\\\uFFFB]|\\\\uD80D[\\\\uDC30-\\\\uDC3F]|\\\\uD82F[\\\\uDCA0-\\\\uDCA3]|\\\\uD834[\\\\uDD73-\\\\uDD7A]|\\\\uDB40\\\\uDC01)|(?:[\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u07FD\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u0897-\\\\u089F\\\\u08CA-\\\\u08E1\\\\u08E3-\\\\u0903\\\\u093A-\\\\u093C\\\\u093E-\\\\u094F\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981-\\\\u0983\\\\u09BC\\\\u09BE-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u09FE\\\\u0A01-\\\\u0A03\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0ABC\\\\u0ABE-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0AFA-\\\\u0AFF\\\\u0B01-\\\\u0B03\\\\u0B3C\\\\u0B3E-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B55-\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD7\\\\u0C00-\\\\u0C04\\\\u0C3C\\\\u0C3E-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81-\\\\u0C83\\\\u0CBC\\\\u0CBE-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0CF3\\\\u0D00-\\\\u0D03\\\\u0D3B\\\\u0D3C\\\\u0D3E-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D81-\\\\u0D83\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DF2\\\\u0DF3\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EBC\\\\u0EC8-\\\\u0ECE\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E\\\\u0F3F\\\\u0F71-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102B-\\\\u103E\\\\u1056-\\\\u1059\\\\u105E-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106D\\\\u1071-\\\\u1074\\\\u1082-\\\\u108D\\\\u108F\\\\u109A-\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1715\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u180F\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1A17-\\\\u1A1B\\\\u1A55-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ADD\\\\u1AE0-\\\\u1AEB\\\\u1B00-\\\\u1B04\\\\u1B34-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1B82\\\\u1BA1-\\\\u1BAD\\\\u1BE6-\\\\u1BF3\\\\u1C24-\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE8\\\\u1CED\\\\u1CF4\\\\u1CF7-\\\\u1CF9\\\\u1DC0-\\\\u1DFF\\\\u200C\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA823-\\\\uA827\\\\uA82C\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA8FF\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA953\\\\uA980-\\\\uA983\\\\uA9B3-\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA4D\\\\uAA7B-\\\\uAA7D\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEB-\\\\uAAEF\\\\uAAF5\\\\uAAF6\\\\uABE3-\\\\uABEA\\\\uABEC\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F\\\\uFF9E\\\\uFF9F]|\\\\uD800[\\\\uDDFD\\\\uDEE0\\\\uDF76-\\\\uDF7A]|\\\\uD802[\\\\uDE01-\\\\uDE03\\\\uDE05\\\\uDE06\\\\uDE0C-\\\\uDE0F\\\\uDE38-\\\\uDE3A\\\\uDE3F\\\\uDEE5\\\\uDEE6]|\\\\uD803[\\\\uDD24-\\\\uDD27\\\\uDD69-\\\\uDD6D\\\\uDEAB\\\\uDEAC\\\\uDEFA-\\\\uDEFF\\\\uDF46-\\\\uDF50\\\\uDF82-\\\\uDF85]|\\\\uD804[\\\\uDC00-\\\\uDC02\\\\uDC38-\\\\uDC46\\\\uDC70\\\\uDC73\\\\uDC74\\\\uDC7F-\\\\uDC82\\\\uDCB0-\\\\uDCBA\\\\uDCC2\\\\uDD00-\\\\uDD02\\\\uDD27-\\\\uDD34\\\\uDD45\\\\uDD46\\\\uDD73\\\\uDD80-\\\\uDD82\\\\uDDB3-\\\\uDDC0\\\\uDDC9-\\\\uDDCC\\\\uDDCE\\\\uDDCF\\\\uDE2C-\\\\uDE37\\\\uDE3E\\\\uDE41\\\\uDEDF-\\\\uDEEA\\\\uDF00-\\\\uDF03\\\\uDF3B\\\\uDF3C\\\\uDF3E-\\\\uDF44\\\\uDF47\\\\uDF48\\\\uDF4B-\\\\uDF4D\\\\uDF57\\\\uDF62\\\\uDF63\\\\uDF66-\\\\uDF6C\\\\uDF70-\\\\uDF74\\\\uDFB8-\\\\uDFC0\\\\uDFC2\\\\uDFC5\\\\uDFC7-\\\\uDFCA\\\\uDFCC-\\\\uDFD0\\\\uDFD2\\\\uDFE1\\\\uDFE2]|\\\\uD805[\\\\uDC35-\\\\uDC46\\\\uDC5E\\\\uDCB0-\\\\uDCC3\\\\uDDAF-\\\\uDDB5\\\\uDDB8-\\\\uDDC0\\\\uDDDC\\\\uDDDD\\\\uDE30-\\\\uDE40\\\\uDEAB-\\\\uDEB7\\\\uDF1D-\\\\uDF2B]|\\\\uD806[\\\\uDC2C-\\\\uDC3A\\\\uDD30-\\\\uDD35\\\\uDD37\\\\uDD38\\\\uDD3B-\\\\uDD3E\\\\uDD40\\\\uDD42\\\\uDD43\\\\uDDD1-\\\\uDDD7\\\\uDDDA-\\\\uDDE0\\\\uDDE4\\\\uDE01-\\\\uDE0A\\\\uDE33-\\\\uDE39\\\\uDE3B-\\\\uDE3E\\\\uDE47\\\\uDE51-\\\\uDE5B\\\\uDE8A-\\\\uDE99\\\\uDF60-\\\\uDF67]|\\\\uD807[\\\\uDC2F-\\\\uDC36\\\\uDC38-\\\\uDC3F\\\\uDC92-\\\\uDCA7\\\\uDCA9-\\\\uDCB6\\\\uDD31-\\\\uDD36\\\\uDD3A\\\\uDD3C\\\\uDD3D\\\\uDD3F-\\\\uDD45\\\\uDD47\\\\uDD8A-\\\\uDD8E\\\\uDD90\\\\uDD91\\\\uDD93-\\\\uDD97\\\\uDEF3-\\\\uDEF6\\\\uDF00\\\\uDF01\\\\uDF03\\\\uDF34-\\\\uDF3A\\\\uDF3E-\\\\uDF42\\\\uDF5A]|\\\\uD80D[\\\\uDC40\\\\uDC47-\\\\uDC55]|\\\\uD818[\\\\uDD1E-\\\\uDD2F]|\\\\uD81A[\\\\uDEF0-\\\\uDEF4\\\\uDF30-\\\\uDF36]|\\\\uD81B[\\\\uDF4F\\\\uDF51-\\\\uDF87\\\\uDF8F-\\\\uDF92\\\\uDFE4\\\\uDFF0\\\\uDFF1]|\\\\uD82F[\\\\uDC9D\\\\uDC9E]|\\\\uD833[\\\\uDF00-\\\\uDF2D\\\\uDF30-\\\\uDF46]|\\\\uD834[\\\\uDD65-\\\\uDD69\\\\uDD6D-\\\\uDD72\\\\uDD7B-\\\\uDD82\\\\uDD85-\\\\uDD8B\\\\uDDAA-\\\\uDDAD\\\\uDE42-\\\\uDE44]|\\\\uD836[\\\\uDE00-\\\\uDE36\\\\uDE3B-\\\\uDE6C\\\\uDE75\\\\uDE84\\\\uDE9B-\\\\uDE9F\\\\uDEA1-\\\\uDEAF]|\\\\uD838[\\\\uDC00-\\\\uDC06\\\\uDC08-\\\\uDC18\\\\uDC1B-\\\\uDC21\\\\uDC23\\\\uDC24\\\\uDC26-\\\\uDC2A\\\\uDC8F\\\\uDD30-\\\\uDD36\\\\uDEAE\\\\uDEEC-\\\\uDEEF]|\\\\uD839[\\\\uDCEC-\\\\uDCEF\\\\uDDEE\\\\uDDEF\\\\uDEE3\\\\uDEE6\\\\uDEEE\\\\uDEEF\\\\uDEF5]|\\\\uD83A[\\\\uDCD0-\\\\uDCD6\\\\uDD44-\\\\uDD4A]|\\\\uD83C[\\\\uDFFB-\\\\uDFFF]|\\\\uDB40[\\\\uDC20-\\\\uDC7F\\\\uDD00-\\\\uDDEF]))*)\"\n\t\t}\n\t} },\n\t\"pt\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [\n\t\t\t\"psicol.\",\n\t\t\t\"fig.\",\n\t\t\t\"compl.\",\n\t\t\t\"rep.\",\n\t\t\t\"cap.\",\n\t\t\t\"doc.\",\n\t\t\t\"fisiol.\",\n\t\t\t\"dipl.\",\n\t\t\t\"astron.\",\n\t\t\t\"port.\",\n\t\t\t\"eletrôn.\",\n\t\t\t\"geom.\",\n\t\t\t\"mov.\",\n\t\t\t\"ago.\",\n\t\t\t\"trad.\",\n\t\t\t\"arquit.\",\n\t\t\t\"dez.\",\n\t\t\t\"ed.\",\n\t\t\t\"apt.\",\n\t\t\t\"Exmo.\",\n\t\t\t\"col.\",\n\t\t\t\"ff.\",\n\t\t\t\"univ.\",\n\t\t\t\"res.\",\n\t\t\t\"R.\",\n\t\t\t\"transp.\",\n\t\t\t\"D.C\",\n\t\t\t\"l.\",\n\t\t\t\"des.\",\n\t\t\t\"fev.\",\n\t\t\t\"abr.\",\n\t\t\t\"liter.\",\n\t\t\t\"lat.\",\n\t\t\t\"Dir.\",\n\t\t\t\"cf.\",\n\t\t\t\"adm.\",\n\t\t\t\"fot.\",\n\t\t\t\"p.m.\",\n\t\t\t\"P.M.\",\n\t\t\t\"créd.\",\n\t\t\t\"jur.\",\n\t\t\t\"com.\",\n\t\t\t\"anat.\",\n\t\t\t\"dir.\",\n\t\t\t\"end.\",\n\t\t\t\"fís.\",\n\t\t\t\"E.\",\n\t\t\t\"Est.\",\n\t\t\t\"cont.\",\n\t\t\t\"matem.\",\n\t\t\t\"Drs.\",\n\t\t\t\"gên.\",\n\t\t\t\"neol.\",\n\t\t\t\"pág.\",\n\t\t\t\"índ.\",\n\t\t\t\"Ltda.\",\n\t\t\t\"Exma.\",\n\t\t\t\"esp.\",\n\t\t\t\"ingl.\",\n\t\t\t\"tecnol.\",\n\t\t\t\"Mar.\",\n\t\t\t\"símb.\",\n\t\t\t\"Pe.\",\n\t\t\t\"pal.\",\n\t\t\t\"filos.\",\n\t\t\t\"V.T.\",\n\t\t\t\"fasc.\",\n\t\t\t\"vs.\",\n\t\t\t\"mai.\",\n\t\t\t\"S.A.\",\n\t\t\t\"profa.\",\n\t\t\t\"N.Sra.\",\n\t\t\t\"r.s.v.p.\",\n\t\t\t\"cel.\",\n\t\t\t\"mat.\",\n\t\t\t\"abrev.\",\n\t\t\t\"out.\",\n\t\t\t\"long.\",\n\t\t\t\"aux.\",\n\t\t\t\"arit.\",\n\t\t\t\"aer.\",\n\t\t\t\"jul.\",\n\t\t\t\"lin.\",\n\t\t\t\"S.\",\n\t\t\t\"méd.\",\n\t\t\t\"odontol.\",\n\t\t\t\"org.\",\n\t\t\t\"A.C.\",\n\t\t\t\"jun.\",\n\t\t\t\"déb.\",\n\t\t\t\"Av.\",\n\t\t\t\"álg.\",\n\t\t\t\"sup.\",\n\t\t\t\"fl.\",\n\t\t\t\"odont.\",\n\t\t\t\"caps.\",\n\t\t\t\"relat.\",\n\t\t\t\"organiz.\",\n\t\t\t\"hist.\",\n\t\t\t\"Fr.\",\n\t\t\t\"Ilmo.\",\n\t\t\t\"fem.\",\n\t\t\t\"ap.\",\n\t\t\t\"Ltd.\",\n\t\t\t\"pol.\",\n\t\t\t\"séc.\",\n\t\t\t\"prof.\",\n\t\t\t\"cx.\",\n\t\t\t\"nov.\",\n\t\t\t\"quím.\",\n\t\t\t\"mús.\",\n\t\t\t\"agric.\",\n\t\t\t\"mar.\",\n\t\t\t\"W.C.\",\n\t\t\t\"fr.\",\n\t\t\t\"cat.\",\n\t\t\t\"jan.\",\n\t\t\t\"pron.\",\n\t\t\t\"rel.\",\n\t\t\t\"autom.\",\n\t\t\t\"Sta.\",\n\t\t\t\"Dra.\",\n\t\t\t\"p.\",\n\t\t\t\"tel.\",\n\t\t\t\"div.\",\n\t\t\t\"p. ex.\",\n\t\t\t\"a.C.\",\n\t\t\t\"bras.\",\n\t\t\t\"Alm.\",\n\t\t\t\"Dr.\",\n\t\t\t\"comp.\",\n\t\t\t\"pq.\",\n\t\t\t\"arqueol.\",\n\t\t\t\"náut.\",\n\t\t\t\"biogr.\",\n\t\t\t\"f.\",\n\t\t\t\"círc.\",\n\t\t\t\"fac.\",\n\t\t\t\"d.C.\",\n\t\t\t\"apart.\",\n\t\t\t\"ex.\",\n\t\t\t\"Jr.\",\n\t\t\t\"set.\",\n\t\t\t\"tec.\",\n\t\t\t\"sociol.\",\n\t\t\t\"gram.\",\n\t\t\t\"ind.\",\n\t\t\t\"Ilma.\",\n\t\t\t\"vol.\",\n\t\t\t\"eng.\",\n\t\t\t\"rod.\",\n\t\t\t\"Ph.D.\",\n\t\t\t\"Dras.\",\n\t\t\t\"pp.\",\n\t\t\t\"elem.\",\n\t\t\t\"máq.\",\n\t\t\t\"cód.\",\n\t\t\t\"eletr.\",\n\t\t\t\"prod.\",\n\t\t\t\"ref.\",\n\t\t\t\"fil.\",\n\t\t\t\"a.m.\",\n\t\t\t\"A.M\",\n\t\t\t\"obs.\",\n\t\t\t\"N.T.\",\n\t\t\t\"contab.\",\n\t\t\t\"Sto.\",\n\t\t\t\"lit.\",\n\t\t\t\"educ.\",\n\t\t\t\"rementente\",\n\t\t\t\"desc.\",\n\t\t\t\"próx.\"\n\t\t],\n\t\t\"variables\": {}\n\t} },\n\t\"root\": {\n\t\t\"grapheme\": {\n\t\t\t\"segmentRules\": {\n\t\t\t\t\"11\": {\n\t\t\t\t\t\"after\": \"$ExtPict\",\n\t\t\t\t\t\"before\": \"$ExtPict$Extend*$ZWJ\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"12\": {\n\t\t\t\t\t\"after\": \"$RI\",\n\t\t\t\t\t\"before\": \"^($RI$RI)*$RI\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"13\": {\n\t\t\t\t\t\"after\": \"$RI\",\n\t\t\t\t\t\"before\": \"[^\\\\uDDE6-\\\\uDDFF]($RI$RI)*$RI\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"after\": \"$LF\",\n\t\t\t\t\t\"before\": \"$CR\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"before\": \"($Control|$CR|$LF)\",\n\t\t\t\t\t\"breaks\": true\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"after\": \"($Control|$CR|$LF)\",\n\t\t\t\t\t\"breaks\": true\n\t\t\t\t},\n\t\t\t\t\"6\": {\n\t\t\t\t\t\"after\": \"($L|$V|$LV|$LVT)\",\n\t\t\t\t\t\"before\": \"$L\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"7\": {\n\t\t\t\t\t\"after\": \"($V|$T)\",\n\t\t\t\t\t\"before\": \"($LV|$V)\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"8\": {\n\t\t\t\t\t\"after\": \"$T\",\n\t\t\t\t\t\"before\": \"($LVT|$T)\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"9\": {\n\t\t\t\t\t\"after\": \"($Extend|$ZWJ)\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"9.1\": {\n\t\t\t\t\t\"after\": \"$SpacingMark\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"9.2\": {\n\t\t\t\t\t\"before\": \"$Prepend\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"9.3\": {\n\t\t\t\t\t\"after\": \"$LinkingConsonant\",\n\t\t\t\t\t\"before\": \"$LinkingConsonant$ConjunctExtender*$ConjunctLinker$ConjunctExtender*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"suppressions\": [],\n\t\t\t\"variables\": {\n\t\t\t\t\"$CR\": \"\\\\r\",\n\t\t\t\t\"$ConjunctExtender\": \"(?:[\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u07FD\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u0897-\\\\u089F\\\\u08CA-\\\\u08E1\\\\u08E3-\\\\u0902\\\\u093A\\\\u093C\\\\u0941-\\\\u0948\\\\u094D\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981\\\\u09BC\\\\u09BE\\\\u09C1-\\\\u09C4\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u09FE\\\\u0A01\\\\u0A02\\\\u0A3C\\\\u0A41\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81\\\\u0A82\\\\u0ABC\\\\u0AC1-\\\\u0AC5\\\\u0AC7\\\\u0AC8\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0AFA-\\\\u0AFF\\\\u0B01\\\\u0B3C\\\\u0B3E\\\\u0B3F\\\\u0B41-\\\\u0B44\\\\u0B4D\\\\u0B55-\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE\\\\u0BC0\\\\u0BCD\\\\u0BD7\\\\u0C00\\\\u0C04\\\\u0C3C\\\\u0C3E-\\\\u0C40\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81\\\\u0CBC\\\\u0CBF\\\\u0CC0\\\\u0CC2\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0D00\\\\u0D01\\\\u0D3B\\\\u0D3C\\\\u0D3E\\\\u0D41-\\\\u0D44\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D81\\\\u0DCA\\\\u0DCF\\\\u0DD2-\\\\u0DD4\\\\u0DD6\\\\u0DDF\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EBC\\\\u0EC8-\\\\u0ECE\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F71-\\\\u0F7E\\\\u0F80-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102D-\\\\u1030\\\\u1032-\\\\u1037\\\\u1039\\\\u103A\\\\u103D\\\\u103E\\\\u1058\\\\u1059\\\\u105E-\\\\u1060\\\\u1071-\\\\u1074\\\\u1082\\\\u1085\\\\u1086\\\\u108D\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1715\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4\\\\u17B5\\\\u17B7-\\\\u17BD\\\\u17C6\\\\u17C9-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u180F\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u1922\\\\u1927\\\\u1928\\\\u1932\\\\u1939-\\\\u193B\\\\u1A17\\\\u1A18\\\\u1A1B\\\\u1A56\\\\u1A58-\\\\u1A5E\\\\u1A60\\\\u1A62\\\\u1A65-\\\\u1A6C\\\\u1A73-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ADD\\\\u1AE0-\\\\u1AEB\\\\u1B00-\\\\u1B03\\\\u1B34-\\\\u1B3D\\\\u1B42-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80\\\\u1B81\\\\u1BA2-\\\\u1BA5\\\\u1BA8-\\\\u1BAD\\\\u1BE6\\\\u1BE8\\\\u1BE9\\\\u1BED\\\\u1BEF-\\\\u1BF3\\\\u1C2C-\\\\u1C33\\\\u1C36\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE0\\\\u1CE2-\\\\u1CE8\\\\u1CED\\\\u1CF4\\\\u1CF8\\\\u1CF9\\\\u1DC0-\\\\u1DFF\\\\u200D\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA825\\\\uA826\\\\uA82C\\\\uA8C4\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA8FF\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA951\\\\uA953\\\\uA980-\\\\uA982\\\\uA9B3\\\\uA9B6-\\\\uA9B9\\\\uA9BC\\\\uA9BD\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA2E\\\\uAA31\\\\uAA32\\\\uAA35\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA7C\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEC\\\\uAAED\\\\uAAF6\\\\uABE5\\\\uABE8\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F\\\\uFF9E\\\\uFF9F]|\\\\uD800[\\\\uDDFD\\\\uDEE0\\\\uDF76-\\\\uDF7A]|\\\\uD802[\\\\uDE01-\\\\uDE03\\\\uDE05\\\\uDE06\\\\uDE0C-\\\\uDE0F\\\\uDE38-\\\\uDE3A\\\\uDE3F\\\\uDEE5\\\\uDEE6]|\\\\uD803[\\\\uDD24-\\\\uDD27\\\\uDD69-\\\\uDD6D\\\\uDEAB\\\\uDEAC\\\\uDEFA-\\\\uDEFF\\\\uDF46-\\\\uDF50\\\\uDF82-\\\\uDF85]|\\\\uD804[\\\\uDC01\\\\uDC38-\\\\uDC46\\\\uDC70\\\\uDC73\\\\uDC74\\\\uDC7F-\\\\uDC81\\\\uDCB3-\\\\uDCB6\\\\uDCB9\\\\uDCBA\\\\uDCC2\\\\uDD00-\\\\uDD02\\\\uDD27-\\\\uDD2B\\\\uDD2D-\\\\uDD34\\\\uDD73\\\\uDD80\\\\uDD81\\\\uDDB6-\\\\uDDBE\\\\uDDC0\\\\uDDC9-\\\\uDDCC\\\\uDDCF\\\\uDE2F-\\\\uDE31\\\\uDE34-\\\\uDE37\\\\uDE3E\\\\uDE41\\\\uDEDF\\\\uDEE3-\\\\uDEEA\\\\uDF00\\\\uDF01\\\\uDF3B\\\\uDF3C\\\\uDF3E\\\\uDF40\\\\uDF4D\\\\uDF57\\\\uDF66-\\\\uDF6C\\\\uDF70-\\\\uDF74\\\\uDFB8\\\\uDFBB-\\\\uDFC0\\\\uDFC2\\\\uDFC5\\\\uDFC7-\\\\uDFC9\\\\uDFCE-\\\\uDFD0\\\\uDFD2\\\\uDFE1\\\\uDFE2]|\\\\uD805[\\\\uDC38-\\\\uDC3F\\\\uDC42-\\\\uDC44\\\\uDC46\\\\uDC5E\\\\uDCB0\\\\uDCB3-\\\\uDCB8\\\\uDCBA\\\\uDCBD\\\\uDCBF\\\\uDCC0\\\\uDCC2\\\\uDCC3\\\\uDDAF\\\\uDDB2-\\\\uDDB5\\\\uDDBC\\\\uDDBD\\\\uDDBF\\\\uDDC0\\\\uDDDC\\\\uDDDD\\\\uDE33-\\\\uDE3A\\\\uDE3D\\\\uDE3F\\\\uDE40\\\\uDEAB\\\\uDEAD\\\\uDEB0-\\\\uDEB7\\\\uDF1D\\\\uDF1F\\\\uDF22-\\\\uDF25\\\\uDF27-\\\\uDF2B]|\\\\uD806[\\\\uDC2F-\\\\uDC37\\\\uDC39\\\\uDC3A\\\\uDD30\\\\uDD3B-\\\\uDD3E\\\\uDD43\\\\uDDD4-\\\\uDDD7\\\\uDDDA\\\\uDDDB\\\\uDDE0\\\\uDE01-\\\\uDE0A\\\\uDE33-\\\\uDE38\\\\uDE3B-\\\\uDE3E\\\\uDE47\\\\uDE51-\\\\uDE56\\\\uDE59-\\\\uDE5B\\\\uDE8A-\\\\uDE96\\\\uDE98\\\\uDE99\\\\uDF60\\\\uDF62-\\\\uDF64\\\\uDF66]|\\\\uD807[\\\\uDC30-\\\\uDC36\\\\uDC38-\\\\uDC3D\\\\uDC3F\\\\uDC92-\\\\uDCA7\\\\uDCAA-\\\\uDCB0\\\\uDCB2\\\\uDCB3\\\\uDCB5\\\\uDCB6\\\\uDD31-\\\\uDD36\\\\uDD3A\\\\uDD3C\\\\uDD3D\\\\uDD3F-\\\\uDD45\\\\uDD47\\\\uDD90\\\\uDD91\\\\uDD95\\\\uDD97\\\\uDEF3\\\\uDEF4\\\\uDF00\\\\uDF01\\\\uDF36-\\\\uDF3A\\\\uDF40-\\\\uDF42\\\\uDF5A]|\\\\uD80D[\\\\uDC40\\\\uDC47-\\\\uDC55]|\\\\uD818[\\\\uDD1E-\\\\uDD29\\\\uDD2D-\\\\uDD2F]|\\\\uD81A[\\\\uDEF0-\\\\uDEF4\\\\uDF30-\\\\uDF36]|\\\\uD81B[\\\\uDF4F\\\\uDF8F-\\\\uDF92\\\\uDFE4\\\\uDFF0\\\\uDFF1]|\\\\uD82F[\\\\uDC9D\\\\uDC9E]|\\\\uD833[\\\\uDF00-\\\\uDF2D\\\\uDF30-\\\\uDF46]|\\\\uD834[\\\\uDD65-\\\\uDD69\\\\uDD6D-\\\\uDD72\\\\uDD7B-\\\\uDD82\\\\uDD85-\\\\uDD8B\\\\uDDAA-\\\\uDDAD\\\\uDE42-\\\\uDE44]|\\\\uD836[\\\\uDE00-\\\\uDE36\\\\uDE3B-\\\\uDE6C\\\\uDE75\\\\uDE84\\\\uDE9B-\\\\uDE9F\\\\uDEA1-\\\\uDEAF]|\\\\uD838[\\\\uDC00-\\\\uDC06\\\\uDC08-\\\\uDC18\\\\uDC1B-\\\\uDC21\\\\uDC23\\\\uDC24\\\\uDC26-\\\\uDC2A\\\\uDC8F\\\\uDD30-\\\\uDD36\\\\uDEAE\\\\uDEEC-\\\\uDEEF]|\\\\uD839[\\\\uDCEC-\\\\uDCEF\\\\uDDEE\\\\uDDEF\\\\uDEE3\\\\uDEE6\\\\uDEEE\\\\uDEEF\\\\uDEF5]|\\\\uD83A[\\\\uDCD0-\\\\uDCD6\\\\uDD44-\\\\uDD4A]|\\\\uD83C[\\\\uDFFB-\\\\uDFFF]|\\\\uDB40[\\\\uDC20-\\\\uDC7F\\\\uDD00-\\\\uDDEF])\",\n\t\t\t\t\"$ConjunctLinker\": \"(?:[\\\\u094D\\\\u09CD\\\\u0ACD\\\\u0B4D\\\\u0C4D\\\\u0D4D\\\\u1039\\\\u17D2\\\\u1A60\\\\u1B44\\\\u1BAB\\\\uA9C0\\\\uAAF6]|\\\\uD802\\\\uDE3F|\\\\uD804[\\\\uDD33\\\\uDFD0]|\\\\uD806[\\\\uDD3E\\\\uDE47\\\\uDE99]|\\\\uD807\\\\uDF42)\",\n\t\t\t\t\"$Control\": \"(?:[\\\\0-\\\\t\\\\x0B\\\\f\\\\x0E-\\\\x1F\\\\x7F-\\\\x9F\\\\xAD\\\\u061C\\\\u180E\\\\u200B\\\\u200E\\\\u200F\\\\u2028-\\\\u202E\\\\u2060-\\\\u206F\\\\uFEFF\\\\uFFF0-\\\\uFFFB]|\\\\uD80D[\\\\uDC30-\\\\uDC3F]|\\\\uD82F[\\\\uDCA0-\\\\uDCA3]|\\\\uD834[\\\\uDD73-\\\\uDD7A]|\\\\uDB40[\\\\uDC00-\\\\uDC1F\\\\uDC80-\\\\uDCFF\\\\uDDF0-\\\\uDFFF]|[\\\\uDB41-\\\\uDB43][\\\\uDC00-\\\\uDFFF])\",\n\t\t\t\t\"$ExtPict\": \"(?:[\\\\xA9\\\\xAE\\\\u203C\\\\u2049\\\\u2122\\\\u2139\\\\u2194-\\\\u2199\\\\u21A9\\\\u21AA\\\\u231A\\\\u231B\\\\u2328\\\\u23CF\\\\u23E9-\\\\u23F3\\\\u23F8-\\\\u23FA\\\\u24C2\\\\u25AA\\\\u25AB\\\\u25B6\\\\u25C0\\\\u25FB-\\\\u25FE\\\\u2600-\\\\u2604\\\\u260E\\\\u2611\\\\u2614\\\\u2615\\\\u2618\\\\u261D\\\\u2620\\\\u2622\\\\u2623\\\\u2626\\\\u262A\\\\u262E\\\\u262F\\\\u2638-\\\\u263A\\\\u2640\\\\u2642\\\\u2648-\\\\u2653\\\\u265F\\\\u2660\\\\u2663\\\\u2665\\\\u2666\\\\u2668\\\\u267B\\\\u267E\\\\u267F\\\\u2692-\\\\u2697\\\\u2699\\\\u269B\\\\u269C\\\\u26A0\\\\u26A1\\\\u26A7\\\\u26AA\\\\u26AB\\\\u26B0\\\\u26B1\\\\u26BD\\\\u26BE\\\\u26C4\\\\u26C5\\\\u26C8\\\\u26CE\\\\u26CF\\\\u26D1\\\\u26D3\\\\u26D4\\\\u26E9\\\\u26EA\\\\u26F0-\\\\u26F5\\\\u26F7-\\\\u26FA\\\\u26FD\\\\u2702\\\\u2705\\\\u2708-\\\\u270D\\\\u270F\\\\u2712\\\\u2714\\\\u2716\\\\u271D\\\\u2721\\\\u2728\\\\u2733\\\\u2734\\\\u2744\\\\u2747\\\\u274C\\\\u274E\\\\u2753-\\\\u2755\\\\u2757\\\\u2763\\\\u2764\\\\u2795-\\\\u2797\\\\u27A1\\\\u27B0\\\\u27BF\\\\u2934\\\\u2935\\\\u2B05-\\\\u2B07\\\\u2B1B\\\\u2B1C\\\\u2B50\\\\u2B55\\\\u3030\\\\u303D\\\\u3297\\\\u3299]|\\\\uD83C[\\\\uDC04\\\\uDC2C-\\\\uDC2F\\\\uDC94-\\\\uDC9F\\\\uDCAF\\\\uDCB0\\\\uDCC0\\\\uDCCF\\\\uDCD0\\\\uDCF6-\\\\uDCFF\\\\uDD70\\\\uDD71\\\\uDD7E\\\\uDD7F\\\\uDD8E\\\\uDD91-\\\\uDD9A\\\\uDDAE-\\\\uDDE5\\\\uDE01-\\\\uDE0F\\\\uDE1A\\\\uDE2F\\\\uDE32-\\\\uDE3A\\\\uDE3C-\\\\uDE3F\\\\uDE49-\\\\uDE5F\\\\uDE66-\\\\uDF21\\\\uDF24-\\\\uDF93\\\\uDF96\\\\uDF97\\\\uDF99-\\\\uDF9B\\\\uDF9E-\\\\uDFF0\\\\uDFF3-\\\\uDFF5\\\\uDFF7-\\\\uDFFA]|\\\\uD83D[\\\\uDC00-\\\\uDCFD\\\\uDCFF-\\\\uDD3D\\\\uDD49-\\\\uDD4E\\\\uDD50-\\\\uDD67\\\\uDD6F\\\\uDD70\\\\uDD73-\\\\uDD7A\\\\uDD87\\\\uDD8A-\\\\uDD8D\\\\uDD90\\\\uDD95\\\\uDD96\\\\uDDA4\\\\uDDA5\\\\uDDA8\\\\uDDB1\\\\uDDB2\\\\uDDBC\\\\uDDC2-\\\\uDDC4\\\\uDDD1-\\\\uDDD3\\\\uDDDC-\\\\uDDDE\\\\uDDE1\\\\uDDE3\\\\uDDE8\\\\uDDEF\\\\uDDF3\\\\uDDFA-\\\\uDE4F\\\\uDE80-\\\\uDEC5\\\\uDECB-\\\\uDED2\\\\uDED5-\\\\uDEE5\\\\uDEE9\\\\uDEEB-\\\\uDEF0\\\\uDEF3-\\\\uDEFF\\\\uDFDA-\\\\uDFFF]|\\\\uD83E[\\\\uDC0C-\\\\uDC0F\\\\uDC48-\\\\uDC4F\\\\uDC5A-\\\\uDC5F\\\\uDC88-\\\\uDC8F\\\\uDCAE\\\\uDCAF\\\\uDCBC-\\\\uDCBF\\\\uDCC2-\\\\uDCCF\\\\uDCD9-\\\\uDCFF\\\\uDD0C-\\\\uDD3A\\\\uDD3C-\\\\uDD45\\\\uDD47-\\\\uDDFF\\\\uDE58-\\\\uDE5F\\\\uDE6E-\\\\uDEFF]|\\\\uD83F[\\\\uDC00-\\\\uDFFD])\",\n\t\t\t\t\"$Extend\": \"(?:[\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u07FD\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u0897-\\\\u089F\\\\u08CA-\\\\u08E1\\\\u08E3-\\\\u0902\\\\u093A\\\\u093C\\\\u0941-\\\\u0948\\\\u094D\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981\\\\u09BC\\\\u09BE\\\\u09C1-\\\\u09C4\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u09FE\\\\u0A01\\\\u0A02\\\\u0A3C\\\\u0A41\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81\\\\u0A82\\\\u0ABC\\\\u0AC1-\\\\u0AC5\\\\u0AC7\\\\u0AC8\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0AFA-\\\\u0AFF\\\\u0B01\\\\u0B3C\\\\u0B3E\\\\u0B3F\\\\u0B41-\\\\u0B44\\\\u0B4D\\\\u0B55-\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE\\\\u0BC0\\\\u0BCD\\\\u0BD7\\\\u0C00\\\\u0C04\\\\u0C3C\\\\u0C3E-\\\\u0C40\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81\\\\u0CBC\\\\u0CBF\\\\u0CC0\\\\u0CC2\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0D00\\\\u0D01\\\\u0D3B\\\\u0D3C\\\\u0D3E\\\\u0D41-\\\\u0D44\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D81\\\\u0DCA\\\\u0DCF\\\\u0DD2-\\\\u0DD4\\\\u0DD6\\\\u0DDF\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EBC\\\\u0EC8-\\\\u0ECE\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F71-\\\\u0F7E\\\\u0F80-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102D-\\\\u1030\\\\u1032-\\\\u1037\\\\u1039\\\\u103A\\\\u103D\\\\u103E\\\\u1058\\\\u1059\\\\u105E-\\\\u1060\\\\u1071-\\\\u1074\\\\u1082\\\\u1085\\\\u1086\\\\u108D\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1715\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4\\\\u17B5\\\\u17B7-\\\\u17BD\\\\u17C6\\\\u17C9-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u180F\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u1922\\\\u1927\\\\u1928\\\\u1932\\\\u1939-\\\\u193B\\\\u1A17\\\\u1A18\\\\u1A1B\\\\u1A56\\\\u1A58-\\\\u1A5E\\\\u1A60\\\\u1A62\\\\u1A65-\\\\u1A6C\\\\u1A73-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ADD\\\\u1AE0-\\\\u1AEB\\\\u1B00-\\\\u1B03\\\\u1B34-\\\\u1B3D\\\\u1B42-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80\\\\u1B81\\\\u1BA2-\\\\u1BA5\\\\u1BA8-\\\\u1BAD\\\\u1BE6\\\\u1BE8\\\\u1BE9\\\\u1BED\\\\u1BEF-\\\\u1BF3\\\\u1C2C-\\\\u1C33\\\\u1C36\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE0\\\\u1CE2-\\\\u1CE8\\\\u1CED\\\\u1CF4\\\\u1CF8\\\\u1CF9\\\\u1DC0-\\\\u1DFF\\\\u200C\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA825\\\\uA826\\\\uA82C\\\\uA8C4\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA8FF\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA951\\\\uA953\\\\uA980-\\\\uA982\\\\uA9B3\\\\uA9B6-\\\\uA9B9\\\\uA9BC\\\\uA9BD\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA2E\\\\uAA31\\\\uAA32\\\\uAA35\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA7C\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEC\\\\uAAED\\\\uAAF6\\\\uABE5\\\\uABE8\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F\\\\uFF9E\\\\uFF9F]|\\\\uD800[\\\\uDDFD\\\\uDEE0\\\\uDF76-\\\\uDF7A]|\\\\uD802[\\\\uDE01-\\\\uDE03\\\\uDE05\\\\uDE06\\\\uDE0C-\\\\uDE0F\\\\uDE38-\\\\uDE3A\\\\uDE3F\\\\uDEE5\\\\uDEE6]|\\\\uD803[\\\\uDD24-\\\\uDD27\\\\uDD69-\\\\uDD6D\\\\uDEAB\\\\uDEAC\\\\uDEFA-\\\\uDEFF\\\\uDF46-\\\\uDF50\\\\uDF82-\\\\uDF85]|\\\\uD804[\\\\uDC01\\\\uDC38-\\\\uDC46\\\\uDC70\\\\uDC73\\\\uDC74\\\\uDC7F-\\\\uDC81\\\\uDCB3-\\\\uDCB6\\\\uDCB9\\\\uDCBA\\\\uDCC2\\\\uDD00-\\\\uDD02\\\\uDD27-\\\\uDD2B\\\\uDD2D-\\\\uDD34\\\\uDD73\\\\uDD80\\\\uDD81\\\\uDDB6-\\\\uDDBE\\\\uDDC0\\\\uDDC9-\\\\uDDCC\\\\uDDCF\\\\uDE2F-\\\\uDE31\\\\uDE34-\\\\uDE37\\\\uDE3E\\\\uDE41\\\\uDEDF\\\\uDEE3-\\\\uDEEA\\\\uDF00\\\\uDF01\\\\uDF3B\\\\uDF3C\\\\uDF3E\\\\uDF40\\\\uDF4D\\\\uDF57\\\\uDF66-\\\\uDF6C\\\\uDF70-\\\\uDF74\\\\uDFB8\\\\uDFBB-\\\\uDFC0\\\\uDFC2\\\\uDFC5\\\\uDFC7-\\\\uDFC9\\\\uDFCE-\\\\uDFD0\\\\uDFD2\\\\uDFE1\\\\uDFE2]|\\\\uD805[\\\\uDC38-\\\\uDC3F\\\\uDC42-\\\\uDC44\\\\uDC46\\\\uDC5E\\\\uDCB0\\\\uDCB3-\\\\uDCB8\\\\uDCBA\\\\uDCBD\\\\uDCBF\\\\uDCC0\\\\uDCC2\\\\uDCC3\\\\uDDAF\\\\uDDB2-\\\\uDDB5\\\\uDDBC\\\\uDDBD\\\\uDDBF\\\\uDDC0\\\\uDDDC\\\\uDDDD\\\\uDE33-\\\\uDE3A\\\\uDE3D\\\\uDE3F\\\\uDE40\\\\uDEAB\\\\uDEAD\\\\uDEB0-\\\\uDEB7\\\\uDF1D\\\\uDF1F\\\\uDF22-\\\\uDF25\\\\uDF27-\\\\uDF2B]|\\\\uD806[\\\\uDC2F-\\\\uDC37\\\\uDC39\\\\uDC3A\\\\uDD30\\\\uDD3B-\\\\uDD3E\\\\uDD43\\\\uDDD4-\\\\uDDD7\\\\uDDDA\\\\uDDDB\\\\uDDE0\\\\uDE01-\\\\uDE0A\\\\uDE33-\\\\uDE38\\\\uDE3B-\\\\uDE3E\\\\uDE47\\\\uDE51-\\\\uDE56\\\\uDE59-\\\\uDE5B\\\\uDE8A-\\\\uDE96\\\\uDE98\\\\uDE99\\\\uDF60\\\\uDF62-\\\\uDF64\\\\uDF66]|\\\\uD807[\\\\uDC30-\\\\uDC36\\\\uDC38-\\\\uDC3D\\\\uDC3F\\\\uDC92-\\\\uDCA7\\\\uDCAA-\\\\uDCB0\\\\uDCB2\\\\uDCB3\\\\uDCB5\\\\uDCB6\\\\uDD31-\\\\uDD36\\\\uDD3A\\\\uDD3C\\\\uDD3D\\\\uDD3F-\\\\uDD45\\\\uDD47\\\\uDD90\\\\uDD91\\\\uDD95\\\\uDD97\\\\uDEF3\\\\uDEF4\\\\uDF00\\\\uDF01\\\\uDF36-\\\\uDF3A\\\\uDF40-\\\\uDF42\\\\uDF5A]|\\\\uD80D[\\\\uDC40\\\\uDC47-\\\\uDC55]|\\\\uD818[\\\\uDD1E-\\\\uDD29\\\\uDD2D-\\\\uDD2F]|\\\\uD81A[\\\\uDEF0-\\\\uDEF4\\\\uDF30-\\\\uDF36]|\\\\uD81B[\\\\uDF4F\\\\uDF8F-\\\\uDF92\\\\uDFE4\\\\uDFF0\\\\uDFF1]|\\\\uD82F[\\\\uDC9D\\\\uDC9E]|\\\\uD833[\\\\uDF00-\\\\uDF2D\\\\uDF30-\\\\uDF46]|\\\\uD834[\\\\uDD65-\\\\uDD69\\\\uDD6D-\\\\uDD72\\\\uDD7B-\\\\uDD82\\\\uDD85-\\\\uDD8B\\\\uDDAA-\\\\uDDAD\\\\uDE42-\\\\uDE44]|\\\\uD836[\\\\uDE00-\\\\uDE36\\\\uDE3B-\\\\uDE6C\\\\uDE75\\\\uDE84\\\\uDE9B-\\\\uDE9F\\\\uDEA1-\\\\uDEAF]|\\\\uD838[\\\\uDC00-\\\\uDC06\\\\uDC08-\\\\uDC18\\\\uDC1B-\\\\uDC21\\\\uDC23\\\\uDC24\\\\uDC26-\\\\uDC2A\\\\uDC8F\\\\uDD30-\\\\uDD36\\\\uDEAE\\\\uDEEC-\\\\uDEEF]|\\\\uD839[\\\\uDCEC-\\\\uDCEF\\\\uDDEE\\\\uDDEF\\\\uDEE3\\\\uDEE6\\\\uDEEE\\\\uDEEF\\\\uDEF5]|\\\\uD83A[\\\\uDCD0-\\\\uDCD6\\\\uDD44-\\\\uDD4A]|\\\\uD83C[\\\\uDFFB-\\\\uDFFF]|\\\\uDB40[\\\\uDC20-\\\\uDC7F\\\\uDD00-\\\\uDDEF])\",\n\t\t\t\t\"$L\": \"[\\\\u1100-\\\\u115F\\\\uA960-\\\\uA97C]\",\n\t\t\t\t\"$LF\": \"\\\\n\",\n\t\t\t\t\"$LV\": \"[\\\\uAC00\\\\uAC1C\\\\uAC38\\\\uAC54\\\\uAC70\\\\uAC8C\\\\uACA8\\\\uACC4\\\\uACE0\\\\uACFC\\\\uAD18\\\\uAD34\\\\uAD50\\\\uAD6C\\\\uAD88\\\\uADA4\\\\uADC0\\\\uADDC\\\\uADF8\\\\uAE14\\\\uAE30\\\\uAE4C\\\\uAE68\\\\uAE84\\\\uAEA0\\\\uAEBC\\\\uAED8\\\\uAEF4\\\\uAF10\\\\uAF2C\\\\uAF48\\\\uAF64\\\\uAF80\\\\uAF9C\\\\uAFB8\\\\uAFD4\\\\uAFF0\\\\uB00C\\\\uB028\\\\uB044\\\\uB060\\\\uB07C\\\\uB098\\\\uB0B4\\\\uB0D0\\\\uB0EC\\\\uB108\\\\uB124\\\\uB140\\\\uB15C\\\\uB178\\\\uB194\\\\uB1B0\\\\uB1CC\\\\uB1E8\\\\uB204\\\\uB220\\\\uB23C\\\\uB258\\\\uB274\\\\uB290\\\\uB2AC\\\\uB2C8\\\\uB2E4\\\\uB300\\\\uB31C\\\\uB338\\\\uB354\\\\uB370\\\\uB38C\\\\uB3A8\\\\uB3C4\\\\uB3E0\\\\uB3FC\\\\uB418\\\\uB434\\\\uB450\\\\uB46C\\\\uB488\\\\uB4A4\\\\uB4C0\\\\uB4DC\\\\uB4F8\\\\uB514\\\\uB530\\\\uB54C\\\\uB568\\\\uB584\\\\uB5A0\\\\uB5BC\\\\uB5D8\\\\uB5F4\\\\uB610\\\\uB62C\\\\uB648\\\\uB664\\\\uB680\\\\uB69C\\\\uB6B8\\\\uB6D4\\\\uB6F0\\\\uB70C\\\\uB728\\\\uB744\\\\uB760\\\\uB77C\\\\uB798\\\\uB7B4\\\\uB7D0\\\\uB7EC\\\\uB808\\\\uB824\\\\uB840\\\\uB85C\\\\uB878\\\\uB894\\\\uB8B0\\\\uB8CC\\\\uB8E8\\\\uB904\\\\uB920\\\\uB93C\\\\uB958\\\\uB974\\\\uB990\\\\uB9AC\\\\uB9C8\\\\uB9E4\\\\uBA00\\\\uBA1C\\\\uBA38\\\\uBA54\\\\uBA70\\\\uBA8C\\\\uBAA8\\\\uBAC4\\\\uBAE0\\\\uBAFC\\\\uBB18\\\\uBB34\\\\uBB50\\\\uBB6C\\\\uBB88\\\\uBBA4\\\\uBBC0\\\\uBBDC\\\\uBBF8\\\\uBC14\\\\uBC30\\\\uBC4C\\\\uBC68\\\\uBC84\\\\uBCA0\\\\uBCBC\\\\uBCD8\\\\uBCF4\\\\uBD10\\\\uBD2C\\\\uBD48\\\\uBD64\\\\uBD80\\\\uBD9C\\\\uBDB8\\\\uBDD4\\\\uBDF0\\\\uBE0C\\\\uBE28\\\\uBE44\\\\uBE60\\\\uBE7C\\\\uBE98\\\\uBEB4\\\\uBED0\\\\uBEEC\\\\uBF08\\\\uBF24\\\\uBF40\\\\uBF5C\\\\uBF78\\\\uBF94\\\\uBFB0\\\\uBFCC\\\\uBFE8\\\\uC004\\\\uC020\\\\uC03C\\\\uC058\\\\uC074\\\\uC090\\\\uC0AC\\\\uC0C8\\\\uC0E4\\\\uC100\\\\uC11C\\\\uC138\\\\uC154\\\\uC170\\\\uC18C\\\\uC1A8\\\\uC1C4\\\\uC1E0\\\\uC1FC\\\\uC218\\\\uC234\\\\uC250\\\\uC26C\\\\uC288\\\\uC2A4\\\\uC2C0\\\\uC2DC\\\\uC2F8\\\\uC314\\\\uC330\\\\uC34C\\\\uC368\\\\uC384\\\\uC3A0\\\\uC3BC\\\\uC3D8\\\\uC3F4\\\\uC410\\\\uC42C\\\\uC448\\\\uC464\\\\uC480\\\\uC49C\\\\uC4B8\\\\uC4D4\\\\uC4F0\\\\uC50C\\\\uC528\\\\uC544\\\\uC560\\\\uC57C\\\\uC598\\\\uC5B4\\\\uC5D0\\\\uC5EC\\\\uC608\\\\uC624\\\\uC640\\\\uC65C\\\\uC678\\\\uC694\\\\uC6B0\\\\uC6CC\\\\uC6E8\\\\uC704\\\\uC720\\\\uC73C\\\\uC758\\\\uC774\\\\uC790\\\\uC7AC\\\\uC7C8\\\\uC7E4\\\\uC800\\\\uC81C\\\\uC838\\\\uC854\\\\uC870\\\\uC88C\\\\uC8A8\\\\uC8C4\\\\uC8E0\\\\uC8FC\\\\uC918\\\\uC934\\\\uC950\\\\uC96C\\\\uC988\\\\uC9A4\\\\uC9C0\\\\uC9DC\\\\uC9F8\\\\uCA14\\\\uCA30\\\\uCA4C\\\\uCA68\\\\uCA84\\\\uCAA0\\\\uCABC\\\\uCAD8\\\\uCAF4\\\\uCB10\\\\uCB2C\\\\uCB48\\\\uCB64\\\\uCB80\\\\uCB9C\\\\uCBB8\\\\uCBD4\\\\uCBF0\\\\uCC0C\\\\uCC28\\\\uCC44\\\\uCC60\\\\uCC7C\\\\uCC98\\\\uCCB4\\\\uCCD0\\\\uCCEC\\\\uCD08\\\\uCD24\\\\uCD40\\\\uCD5C\\\\uCD78\\\\uCD94\\\\uCDB0\\\\uCDCC\\\\uCDE8\\\\uCE04\\\\uCE20\\\\uCE3C\\\\uCE58\\\\uCE74\\\\uCE90\\\\uCEAC\\\\uCEC8\\\\uCEE4\\\\uCF00\\\\uCF1C\\\\uCF38\\\\uCF54\\\\uCF70\\\\uCF8C\\\\uCFA8\\\\uCFC4\\\\uCFE0\\\\uCFFC\\\\uD018\\\\uD034\\\\uD050\\\\uD06C\\\\uD088\\\\uD0A4\\\\uD0C0\\\\uD0DC\\\\uD0F8\\\\uD114\\\\uD130\\\\uD14C\\\\uD168\\\\uD184\\\\uD1A0\\\\uD1BC\\\\uD1D8\\\\uD1F4\\\\uD210\\\\uD22C\\\\uD248\\\\uD264\\\\uD280\\\\uD29C\\\\uD2B8\\\\uD2D4\\\\uD2F0\\\\uD30C\\\\uD328\\\\uD344\\\\uD360\\\\uD37C\\\\uD398\\\\uD3B4\\\\uD3D0\\\\uD3EC\\\\uD408\\\\uD424\\\\uD440\\\\uD45C\\\\uD478\\\\uD494\\\\uD4B0\\\\uD4CC\\\\uD4E8\\\\uD504\\\\uD520\\\\uD53C\\\\uD558\\\\uD574\\\\uD590\\\\uD5AC\\\\uD5C8\\\\uD5E4\\\\uD600\\\\uD61C\\\\uD638\\\\uD654\\\\uD670\\\\uD68C\\\\uD6A8\\\\uD6C4\\\\uD6E0\\\\uD6FC\\\\uD718\\\\uD734\\\\uD750\\\\uD76C\\\\uD788]\",\n\t\t\t\t\"$LVT\": \"[\\\\uAC01-\\\\uAC1B\\\\uAC1D-\\\\uAC37\\\\uAC39-\\\\uAC53\\\\uAC55-\\\\uAC6F\\\\uAC71-\\\\uAC8B\\\\uAC8D-\\\\uACA7\\\\uACA9-\\\\uACC3\\\\uACC5-\\\\uACDF\\\\uACE1-\\\\uACFB\\\\uACFD-\\\\uAD17\\\\uAD19-\\\\uAD33\\\\uAD35-\\\\uAD4F\\\\uAD51-\\\\uAD6B\\\\uAD6D-\\\\uAD87\\\\uAD89-\\\\uADA3\\\\uADA5-\\\\uADBF\\\\uADC1-\\\\uADDB\\\\uADDD-\\\\uADF7\\\\uADF9-\\\\uAE13\\\\uAE15-\\\\uAE2F\\\\uAE31-\\\\uAE4B\\\\uAE4D-\\\\uAE67\\\\uAE69-\\\\uAE83\\\\uAE85-\\\\uAE9F\\\\uAEA1-\\\\uAEBB\\\\uAEBD-\\\\uAED7\\\\uAED9-\\\\uAEF3\\\\uAEF5-\\\\uAF0F\\\\uAF11-\\\\uAF2B\\\\uAF2D-\\\\uAF47\\\\uAF49-\\\\uAF63\\\\uAF65-\\\\uAF7F\\\\uAF81-\\\\uAF9B\\\\uAF9D-\\\\uAFB7\\\\uAFB9-\\\\uAFD3\\\\uAFD5-\\\\uAFEF\\\\uAFF1-\\\\uB00B\\\\uB00D-\\\\uB027\\\\uB029-\\\\uB043\\\\uB045-\\\\uB05F\\\\uB061-\\\\uB07B\\\\uB07D-\\\\uB097\\\\uB099-\\\\uB0B3\\\\uB0B5-\\\\uB0CF\\\\uB0D1-\\\\uB0EB\\\\uB0ED-\\\\uB107\\\\uB109-\\\\uB123\\\\uB125-\\\\uB13F\\\\uB141-\\\\uB15B\\\\uB15D-\\\\uB177\\\\uB179-\\\\uB193\\\\uB195-\\\\uB1AF\\\\uB1B1-\\\\uB1CB\\\\uB1CD-\\\\uB1E7\\\\uB1E9-\\\\uB203\\\\uB205-\\\\uB21F\\\\uB221-\\\\uB23B\\\\uB23D-\\\\uB257\\\\uB259-\\\\uB273\\\\uB275-\\\\uB28F\\\\uB291-\\\\uB2AB\\\\uB2AD-\\\\uB2C7\\\\uB2C9-\\\\uB2E3\\\\uB2E5-\\\\uB2FF\\\\uB301-\\\\uB31B\\\\uB31D-\\\\uB337\\\\uB339-\\\\uB353\\\\uB355-\\\\uB36F\\\\uB371-\\\\uB38B\\\\uB38D-\\\\uB3A7\\\\uB3A9-\\\\uB3C3\\\\uB3C5-\\\\uB3DF\\\\uB3E1-\\\\uB3FB\\\\uB3FD-\\\\uB417\\\\uB419-\\\\uB433\\\\uB435-\\\\uB44F\\\\uB451-\\\\uB46B\\\\uB46D-\\\\uB487\\\\uB489-\\\\uB4A3\\\\uB4A5-\\\\uB4BF\\\\uB4C1-\\\\uB4DB\\\\uB4DD-\\\\uB4F7\\\\uB4F9-\\\\uB513\\\\uB515-\\\\uB52F\\\\uB531-\\\\uB54B\\\\uB54D-\\\\uB567\\\\uB569-\\\\uB583\\\\uB585-\\\\uB59F\\\\uB5A1-\\\\uB5BB\\\\uB5BD-\\\\uB5D7\\\\uB5D9-\\\\uB5F3\\\\uB5F5-\\\\uB60F\\\\uB611-\\\\uB62B\\\\uB62D-\\\\uB647\\\\uB649-\\\\uB663\\\\uB665-\\\\uB67F\\\\uB681-\\\\uB69B\\\\uB69D-\\\\uB6B7\\\\uB6B9-\\\\uB6D3\\\\uB6D5-\\\\uB6EF\\\\uB6F1-\\\\uB70B\\\\uB70D-\\\\uB727\\\\uB729-\\\\uB743\\\\uB745-\\\\uB75F\\\\uB761-\\\\uB77B\\\\uB77D-\\\\uB797\\\\uB799-\\\\uB7B3\\\\uB7B5-\\\\uB7CF\\\\uB7D1-\\\\uB7EB\\\\uB7ED-\\\\uB807\\\\uB809-\\\\uB823\\\\uB825-\\\\uB83F\\\\uB841-\\\\uB85B\\\\uB85D-\\\\uB877\\\\uB879-\\\\uB893\\\\uB895-\\\\uB8AF\\\\uB8B1-\\\\uB8CB\\\\uB8CD-\\\\uB8E7\\\\uB8E9-\\\\uB903\\\\uB905-\\\\uB91F\\\\uB921-\\\\uB93B\\\\uB93D-\\\\uB957\\\\uB959-\\\\uB973\\\\uB975-\\\\uB98F\\\\uB991-\\\\uB9AB\\\\uB9AD-\\\\uB9C7\\\\uB9C9-\\\\uB9E3\\\\uB9E5-\\\\uB9FF\\\\uBA01-\\\\uBA1B\\\\uBA1D-\\\\uBA37\\\\uBA39-\\\\uBA53\\\\uBA55-\\\\uBA6F\\\\uBA71-\\\\uBA8B\\\\uBA8D-\\\\uBAA7\\\\uBAA9-\\\\uBAC3\\\\uBAC5-\\\\uBADF\\\\uBAE1-\\\\uBAFB\\\\uBAFD-\\\\uBB17\\\\uBB19-\\\\uBB33\\\\uBB35-\\\\uBB4F\\\\uBB51-\\\\uBB6B\\\\uBB6D-\\\\uBB87\\\\uBB89-\\\\uBBA3\\\\uBBA5-\\\\uBBBF\\\\uBBC1-\\\\uBBDB\\\\uBBDD-\\\\uBBF7\\\\uBBF9-\\\\uBC13\\\\uBC15-\\\\uBC2F\\\\uBC31-\\\\uBC4B\\\\uBC4D-\\\\uBC67\\\\uBC69-\\\\uBC83\\\\uBC85-\\\\uBC9F\\\\uBCA1-\\\\uBCBB\\\\uBCBD-\\\\uBCD7\\\\uBCD9-\\\\uBCF3\\\\uBCF5-\\\\uBD0F\\\\uBD11-\\\\uBD2B\\\\uBD2D-\\\\uBD47\\\\uBD49-\\\\uBD63\\\\uBD65-\\\\uBD7F\\\\uBD81-\\\\uBD9B\\\\uBD9D-\\\\uBDB7\\\\uBDB9-\\\\uBDD3\\\\uBDD5-\\\\uBDEF\\\\uBDF1-\\\\uBE0B\\\\uBE0D-\\\\uBE27\\\\uBE29-\\\\uBE43\\\\uBE45-\\\\uBE5F\\\\uBE61-\\\\uBE7B\\\\uBE7D-\\\\uBE97\\\\uBE99-\\\\uBEB3\\\\uBEB5-\\\\uBECF\\\\uBED1-\\\\uBEEB\\\\uBEED-\\\\uBF07\\\\uBF09-\\\\uBF23\\\\uBF25-\\\\uBF3F\\\\uBF41-\\\\uBF5B\\\\uBF5D-\\\\uBF77\\\\uBF79-\\\\uBF93\\\\uBF95-\\\\uBFAF\\\\uBFB1-\\\\uBFCB\\\\uBFCD-\\\\uBFE7\\\\uBFE9-\\\\uC003\\\\uC005-\\\\uC01F\\\\uC021-\\\\uC03B\\\\uC03D-\\\\uC057\\\\uC059-\\\\uC073\\\\uC075-\\\\uC08F\\\\uC091-\\\\uC0AB\\\\uC0AD-\\\\uC0C7\\\\uC0C9-\\\\uC0E3\\\\uC0E5-\\\\uC0FF\\\\uC101-\\\\uC11B\\\\uC11D-\\\\uC137\\\\uC139-\\\\uC153\\\\uC155-\\\\uC16F\\\\uC171-\\\\uC18B\\\\uC18D-\\\\uC1A7\\\\uC1A9-\\\\uC1C3\\\\uC1C5-\\\\uC1DF\\\\uC1E1-\\\\uC1FB\\\\uC1FD-\\\\uC217\\\\uC219-\\\\uC233\\\\uC235-\\\\uC24F\\\\uC251-\\\\uC26B\\\\uC26D-\\\\uC287\\\\uC289-\\\\uC2A3\\\\uC2A5-\\\\uC2BF\\\\uC2C1-\\\\uC2DB\\\\uC2DD-\\\\uC2F7\\\\uC2F9-\\\\uC313\\\\uC315-\\\\uC32F\\\\uC331-\\\\uC34B\\\\uC34D-\\\\uC367\\\\uC369-\\\\uC383\\\\uC385-\\\\uC39F\\\\uC3A1-\\\\uC3BB\\\\uC3BD-\\\\uC3D7\\\\uC3D9-\\\\uC3F3\\\\uC3F5-\\\\uC40F\\\\uC411-\\\\uC42B\\\\uC42D-\\\\uC447\\\\uC449-\\\\uC463\\\\uC465-\\\\uC47F\\\\uC481-\\\\uC49B\\\\uC49D-\\\\uC4B7\\\\uC4B9-\\\\uC4D3\\\\uC4D5-\\\\uC4EF\\\\uC4F1-\\\\uC50B\\\\uC50D-\\\\uC527\\\\uC529-\\\\uC543\\\\uC545-\\\\uC55F\\\\uC561-\\\\uC57B\\\\uC57D-\\\\uC597\\\\uC599-\\\\uC5B3\\\\uC5B5-\\\\uC5CF\\\\uC5D1-\\\\uC5EB\\\\uC5ED-\\\\uC607\\\\uC609-\\\\uC623\\\\uC625-\\\\uC63F\\\\uC641-\\\\uC65B\\\\uC65D-\\\\uC677\\\\uC679-\\\\uC693\\\\uC695-\\\\uC6AF\\\\uC6B1-\\\\uC6CB\\\\uC6CD-\\\\uC6E7\\\\uC6E9-\\\\uC703\\\\uC705-\\\\uC71F\\\\uC721-\\\\uC73B\\\\uC73D-\\\\uC757\\\\uC759-\\\\uC773\\\\uC775-\\\\uC78F\\\\uC791-\\\\uC7AB\\\\uC7AD-\\\\uC7C7\\\\uC7C9-\\\\uC7E3\\\\uC7E5-\\\\uC7FF\\\\uC801-\\\\uC81B\\\\uC81D-\\\\uC837\\\\uC839-\\\\uC853\\\\uC855-\\\\uC86F\\\\uC871-\\\\uC88B\\\\uC88D-\\\\uC8A7\\\\uC8A9-\\\\uC8C3\\\\uC8C5-\\\\uC8DF\\\\uC8E1-\\\\uC8FB\\\\uC8FD-\\\\uC917\\\\uC919-\\\\uC933\\\\uC935-\\\\uC94F\\\\uC951-\\\\uC96B\\\\uC96D-\\\\uC987\\\\uC989-\\\\uC9A3\\\\uC9A5-\\\\uC9BF\\\\uC9C1-\\\\uC9DB\\\\uC9DD-\\\\uC9F7\\\\uC9F9-\\\\uCA13\\\\uCA15-\\\\uCA2F\\\\uCA31-\\\\uCA4B\\\\uCA4D-\\\\uCA67\\\\uCA69-\\\\uCA83\\\\uCA85-\\\\uCA9F\\\\uCAA1-\\\\uCABB\\\\uCABD-\\\\uCAD7\\\\uCAD9-\\\\uCAF3\\\\uCAF5-\\\\uCB0F\\\\uCB11-\\\\uCB2B\\\\uCB2D-\\\\uCB47\\\\uCB49-\\\\uCB63\\\\uCB65-\\\\uCB7F\\\\uCB81-\\\\uCB9B\\\\uCB9D-\\\\uCBB7\\\\uCBB9-\\\\uCBD3\\\\uCBD5-\\\\uCBEF\\\\uCBF1-\\\\uCC0B\\\\uCC0D-\\\\uCC27\\\\uCC29-\\\\uCC43\\\\uCC45-\\\\uCC5F\\\\uCC61-\\\\uCC7B\\\\uCC7D-\\\\uCC97\\\\uCC99-\\\\uCCB3\\\\uCCB5-\\\\uCCCF\\\\uCCD1-\\\\uCCEB\\\\uCCED-\\\\uCD07\\\\uCD09-\\\\uCD23\\\\uCD25-\\\\uCD3F\\\\uCD41-\\\\uCD5B\\\\uCD5D-\\\\uCD77\\\\uCD79-\\\\uCD93\\\\uCD95-\\\\uCDAF\\\\uCDB1-\\\\uCDCB\\\\uCDCD-\\\\uCDE7\\\\uCDE9-\\\\uCE03\\\\uCE05-\\\\uCE1F\\\\uCE21-\\\\uCE3B\\\\uCE3D-\\\\uCE57\\\\uCE59-\\\\uCE73\\\\uCE75-\\\\uCE8F\\\\uCE91-\\\\uCEAB\\\\uCEAD-\\\\uCEC7\\\\uCEC9-\\\\uCEE3\\\\uCEE5-\\\\uCEFF\\\\uCF01-\\\\uCF1B\\\\uCF1D-\\\\uCF37\\\\uCF39-\\\\uCF53\\\\uCF55-\\\\uCF6F\\\\uCF71-\\\\uCF8B\\\\uCF8D-\\\\uCFA7\\\\uCFA9-\\\\uCFC3\\\\uCFC5-\\\\uCFDF\\\\uCFE1-\\\\uCFFB\\\\uCFFD-\\\\uD017\\\\uD019-\\\\uD033\\\\uD035-\\\\uD04F\\\\uD051-\\\\uD06B\\\\uD06D-\\\\uD087\\\\uD089-\\\\uD0A3\\\\uD0A5-\\\\uD0BF\\\\uD0C1-\\\\uD0DB\\\\uD0DD-\\\\uD0F7\\\\uD0F9-\\\\uD113\\\\uD115-\\\\uD12F\\\\uD131-\\\\uD14B\\\\uD14D-\\\\uD167\\\\uD169-\\\\uD183\\\\uD185-\\\\uD19F\\\\uD1A1-\\\\uD1BB\\\\uD1BD-\\\\uD1D7\\\\uD1D9-\\\\uD1F3\\\\uD1F5-\\\\uD20F\\\\uD211-\\\\uD22B\\\\uD22D-\\\\uD247\\\\uD249-\\\\uD263\\\\uD265-\\\\uD27F\\\\uD281-\\\\uD29B\\\\uD29D-\\\\uD2B7\\\\uD2B9-\\\\uD2D3\\\\uD2D5-\\\\uD2EF\\\\uD2F1-\\\\uD30B\\\\uD30D-\\\\uD327\\\\uD329-\\\\uD343\\\\uD345-\\\\uD35F\\\\uD361-\\\\uD37B\\\\uD37D-\\\\uD397\\\\uD399-\\\\uD3B3\\\\uD3B5-\\\\uD3CF\\\\uD3D1-\\\\uD3EB\\\\uD3ED-\\\\uD407\\\\uD409-\\\\uD423\\\\uD425-\\\\uD43F\\\\uD441-\\\\uD45B\\\\uD45D-\\\\uD477\\\\uD479-\\\\uD493\\\\uD495-\\\\uD4AF\\\\uD4B1-\\\\uD4CB\\\\uD4CD-\\\\uD4E7\\\\uD4E9-\\\\uD503\\\\uD505-\\\\uD51F\\\\uD521-\\\\uD53B\\\\uD53D-\\\\uD557\\\\uD559-\\\\uD573\\\\uD575-\\\\uD58F\\\\uD591-\\\\uD5AB\\\\uD5AD-\\\\uD5C7\\\\uD5C9-\\\\uD5E3\\\\uD5E5-\\\\uD5FF\\\\uD601-\\\\uD61B\\\\uD61D-\\\\uD637\\\\uD639-\\\\uD653\\\\uD655-\\\\uD66F\\\\uD671-\\\\uD68B\\\\uD68D-\\\\uD6A7\\\\uD6A9-\\\\uD6C3\\\\uD6C5-\\\\uD6DF\\\\uD6E1-\\\\uD6FB\\\\uD6FD-\\\\uD717\\\\uD719-\\\\uD733\\\\uD735-\\\\uD74F\\\\uD751-\\\\uD76B\\\\uD76D-\\\\uD787\\\\uD789-\\\\uD7A3]\",\n\t\t\t\t\"$LinkingConsonant\": \"(?:[\\\\u0915-\\\\u0939\\\\u0958-\\\\u095F\\\\u0978-\\\\u097F\\\\u0995-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09DC\\\\u09DD\\\\u09DF\\\\u09F0\\\\u09F1\\\\u0A95-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0AF9\\\\u0B15-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B5C\\\\u0B5D\\\\u0B5F\\\\u0B71\\\\u0C15-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C58-\\\\u0C5A\\\\u0D15-\\\\u0D3A\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u1780-\\\\u17B3\\\\u1A20-\\\\u1A54\\\\u1B0B\\\\u1B0C\\\\u1B13-\\\\u1B33\\\\u1B45-\\\\u1B4C\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBB-\\\\u1BBD\\\\uA989-\\\\uA98B\\\\uA98F-\\\\uA9B2\\\\uA9E0-\\\\uA9E4\\\\uA9E7-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA60-\\\\uAA6F\\\\uAA71-\\\\uAA73\\\\uAA7A\\\\uAA7E\\\\uAA7F\\\\uAAE0-\\\\uAAEA\\\\uABC0-\\\\uABDA]|\\\\uD802[\\\\uDE00\\\\uDE10-\\\\uDE13\\\\uDE15-\\\\uDE17\\\\uDE19-\\\\uDE35]|\\\\uD804[\\\\uDD03-\\\\uDD26\\\\uDD44\\\\uDD47\\\\uDF80-\\\\uDF89\\\\uDF8B\\\\uDF8E\\\\uDF90-\\\\uDFB5]|\\\\uD806[\\\\uDD00-\\\\uDD06\\\\uDD09\\\\uDD0C-\\\\uDD13\\\\uDD15\\\\uDD16\\\\uDD18-\\\\uDD2F\\\\uDE00\\\\uDE0B-\\\\uDE32\\\\uDE50\\\\uDE5C-\\\\uDE83]|\\\\uD807[\\\\uDF04-\\\\uDF10\\\\uDF12-\\\\uDF33])\",\n\t\t\t\t\"$Prepend\": \"(?:[\\\\u0600-\\\\u0605\\\\u06DD\\\\u070F\\\\u0890\\\\u0891\\\\u08E2\\\\u0D4E]|\\\\uD804[\\\\uDCBD\\\\uDCCD\\\\uDDC2\\\\uDDC3\\\\uDFD1]|\\\\uD806[\\\\uDD3F\\\\uDD41\\\\uDE84-\\\\uDE89]|\\\\uD807[\\\\uDD46\\\\uDF02])\",\n\t\t\t\t\"$RI\": \"(?:\\\\uD83C[\\\\uDDE6-\\\\uDDFF])\",\n\t\t\t\t\"$SpacingMark\": \"(?:[\\\\u0903\\\\u093B\\\\u093E-\\\\u0940\\\\u0949-\\\\u094C\\\\u094E\\\\u094F\\\\u0982\\\\u0983\\\\u09BF\\\\u09C0\\\\u09C7\\\\u09C8\\\\u09CB\\\\u09CC\\\\u0A03\\\\u0A3E-\\\\u0A40\\\\u0A83\\\\u0ABE-\\\\u0AC0\\\\u0AC9\\\\u0ACB\\\\u0ACC\\\\u0B02\\\\u0B03\\\\u0B40\\\\u0B47\\\\u0B48\\\\u0B4B\\\\u0B4C\\\\u0BBF\\\\u0BC1\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCC\\\\u0C01-\\\\u0C03\\\\u0C41-\\\\u0C44\\\\u0C82\\\\u0C83\\\\u0CBE\\\\u0CC1\\\\u0CC3\\\\u0CC4\\\\u0CF3\\\\u0D02\\\\u0D03\\\\u0D3F\\\\u0D40\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4C\\\\u0D82\\\\u0D83\\\\u0DD0\\\\u0DD1\\\\u0DD8-\\\\u0DDE\\\\u0DF2\\\\u0DF3\\\\u0E33\\\\u0EB3\\\\u0F3E\\\\u0F3F\\\\u0F7F\\\\u1031\\\\u103B\\\\u103C\\\\u1056\\\\u1057\\\\u1084\\\\u17B6\\\\u17BE-\\\\u17C5\\\\u17C7\\\\u17C8\\\\u1923-\\\\u1926\\\\u1929-\\\\u192B\\\\u1930\\\\u1931\\\\u1933-\\\\u1938\\\\u1A19\\\\u1A1A\\\\u1A55\\\\u1A57\\\\u1A6D-\\\\u1A72\\\\u1B04\\\\u1B3E-\\\\u1B41\\\\u1B82\\\\u1BA1\\\\u1BA6\\\\u1BA7\\\\u1BE7\\\\u1BEA-\\\\u1BEC\\\\u1BEE\\\\u1C24-\\\\u1C2B\\\\u1C34\\\\u1C35\\\\u1CE1\\\\u1CF7\\\\uA823\\\\uA824\\\\uA827\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C3\\\\uA952\\\\uA983\\\\uA9B4\\\\uA9B5\\\\uA9BA\\\\uA9BB\\\\uA9BE\\\\uA9BF\\\\uAA2F\\\\uAA30\\\\uAA33\\\\uAA34\\\\uAA4D\\\\uAAEB\\\\uAAEE\\\\uAAEF\\\\uAAF5\\\\uABE3\\\\uABE4\\\\uABE6\\\\uABE7\\\\uABE9\\\\uABEA\\\\uABEC]|\\\\uD804[\\\\uDC00\\\\uDC02\\\\uDC82\\\\uDCB0-\\\\uDCB2\\\\uDCB7\\\\uDCB8\\\\uDD2C\\\\uDD45\\\\uDD46\\\\uDD82\\\\uDDB3-\\\\uDDB5\\\\uDDBF\\\\uDDCE\\\\uDE2C-\\\\uDE2E\\\\uDE32\\\\uDE33\\\\uDEE0-\\\\uDEE2\\\\uDF02\\\\uDF03\\\\uDF3F\\\\uDF41-\\\\uDF44\\\\uDF47\\\\uDF48\\\\uDF4B\\\\uDF4C\\\\uDF62\\\\uDF63\\\\uDFB9\\\\uDFBA\\\\uDFCA\\\\uDFCC\\\\uDFCD]|\\\\uD805[\\\\uDC35-\\\\uDC37\\\\uDC40\\\\uDC41\\\\uDC45\\\\uDCB1\\\\uDCB2\\\\uDCB9\\\\uDCBB\\\\uDCBC\\\\uDCBE\\\\uDCC1\\\\uDDB0\\\\uDDB1\\\\uDDB8-\\\\uDDBB\\\\uDDBE\\\\uDE30-\\\\uDE32\\\\uDE3B\\\\uDE3C\\\\uDE3E\\\\uDEAC\\\\uDEAE\\\\uDEAF\\\\uDF1E\\\\uDF26]|\\\\uD806[\\\\uDC2C-\\\\uDC2E\\\\uDC38\\\\uDD31-\\\\uDD35\\\\uDD37\\\\uDD38\\\\uDD40\\\\uDD42\\\\uDDD1-\\\\uDDD3\\\\uDDDC-\\\\uDDDF\\\\uDDE4\\\\uDE39\\\\uDE57\\\\uDE58\\\\uDE97\\\\uDF61\\\\uDF65\\\\uDF67]|\\\\uD807[\\\\uDC2F\\\\uDC3E\\\\uDCA9\\\\uDCB1\\\\uDCB4\\\\uDD8A-\\\\uDD8E\\\\uDD93\\\\uDD94\\\\uDD96\\\\uDEF5\\\\uDEF6\\\\uDF03\\\\uDF34\\\\uDF35\\\\uDF3E\\\\uDF3F]|\\\\uD818[\\\\uDD2A-\\\\uDD2C]|\\\\uD81B[\\\\uDF51-\\\\uDF87])\",\n\t\t\t\t\"$T\": \"[\\\\u11A8-\\\\u11FF\\\\uD7CB-\\\\uD7FB]\",\n\t\t\t\t\"$V\": \"(?:[\\\\u1160-\\\\u11A7\\\\uD7B0-\\\\uD7C6]|\\\\uD81B[\\\\uDD63\\\\uDD67-\\\\uDD6A])\",\n\t\t\t\t\"$XX\": \"[\\\\0-\\\\uD7FF\\\\uE000-\\\\uFFFF]\",\n\t\t\t\t\"$ZWJ\": \"\\\\u200D\"\n\t\t\t}\n\t\t},\n\t\t\"sentence\": {\n\t\t\t\"segmentRules\": {\n\t\t\t\t\"10\": {\n\t\t\t\t\t\"after\": \"($Sp|$ParaSep)\",\n\t\t\t\t\t\"before\": \"$SATerm$Close*$Sp*(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"11\": {\n\t\t\t\t\t\"before\": \"$SATerm$Close*$Sp*$ParaSep?(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": true\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"after\": \"$LF\",\n\t\t\t\t\t\"before\": \"$CR\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"before\": \"$ParaSep(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": true\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"after\": \"(?:$Extend|$Format)\",\n\t\t\t\t\t\"before\": \"(?:(?!(?:$ParaSep))(?:[\\\\0-\\\\uD7FF\\\\uE000-\\\\uFFFF]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]))\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"6\": {\n\t\t\t\t\t\"after\": \"$Numeric\",\n\t\t\t\t\t\"before\": \"$ATerm(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"7\": {\n\t\t\t\t\t\"after\": \"$Upper\",\n\t\t\t\t\t\"before\": \"($Upper|$Lower)$ATerm(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"8\": {\n\t\t\t\t\t\"after\": \"(?:(?!$OLetter$Upper$Lower$ParaSep$SATerm))*$Lower\",\n\t\t\t\t\t\"before\": \"$ATerm$Close*$Sp*(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"8.1\": {\n\t\t\t\t\t\"after\": \"($SContinue|$SATerm)\",\n\t\t\t\t\t\"before\": \"$SATerm$Close*$Sp*(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"9\": {\n\t\t\t\t\t\"after\": \"($Close|$Sp|$ParaSep)\",\n\t\t\t\t\t\"before\": \"$SATerm$Close*(?:$Extend|$Format)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"998\": {\n\t\t\t\t\t\"after\": \"$Any\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"suppressions\": [],\n\t\t\t\"variables\": {\n\t\t\t\t\"$ATerm\": \"[\\\\.\\\\u2024\\\\uFE52\\\\uFF0E]\",\n\t\t\t\t\"$Any\": \"(?:[\\\\0-\\\\uD7FF\\\\uE000-\\\\uFFFF]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]|[\\\\uD800-\\\\uDBFF](?![\\\\uDC00-\\\\uDFFF])|(?:[^\\\\uD800-\\\\uDBFF]|^)[\\\\uDC00-\\\\uDFFF])\",\n\t\t\t\t\"$CR\": \"\\\\r\",\n\t\t\t\t\"$Close\": \"(?:[\\\"'-\\\\)\\\\[\\\\]\\\\{\\\\}\\\\xAB\\\\xBB\\\\u0F3A-\\\\u0F3D\\\\u169B\\\\u169C\\\\u2018-\\\\u201F\\\\u2039\\\\u203A\\\\u2045\\\\u2046\\\\u207D\\\\u207E\\\\u208D\\\\u208E\\\\u2308-\\\\u230B\\\\u2329\\\\u232A\\\\u275B-\\\\u2760\\\\u2768-\\\\u2775\\\\u27C5\\\\u27C6\\\\u27E6-\\\\u27EF\\\\u2983-\\\\u2998\\\\u29D8-\\\\u29DB\\\\u29FC\\\\u29FD\\\\u2E00-\\\\u2E0D\\\\u2E1C\\\\u2E1D\\\\u2E20-\\\\u2E29\\\\u2E42\\\\u2E55-\\\\u2E5C\\\\u3008-\\\\u3011\\\\u3014-\\\\u301B\\\\u301D-\\\\u301F\\\\uFD3E\\\\uFD3F\\\\uFE17\\\\uFE18\\\\uFE35-\\\\uFE44\\\\uFE47\\\\uFE48\\\\uFE59-\\\\uFE5E\\\\uFF08\\\\uFF09\\\\uFF3B\\\\uFF3D\\\\uFF5B\\\\uFF5D\\\\uFF5F\\\\uFF60\\\\uFF62\\\\uFF63]|\\\\uD83D[\\\\uDE76-\\\\uDE78])\",\n\t\t\t\t\"$Extend\": \"(?:[\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u07FD\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u0897-\\\\u089F\\\\u08CA-\\\\u08E1\\\\u08E3-\\\\u0903\\\\u093A-\\\\u093C\\\\u093E-\\\\u094F\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981-\\\\u0983\\\\u09BC\\\\u09BE-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u09FE\\\\u0A01-\\\\u0A03\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0ABC\\\\u0ABE-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0AFA-\\\\u0AFF\\\\u0B01-\\\\u0B03\\\\u0B3C\\\\u0B3E-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B55-\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD7\\\\u0C00-\\\\u0C04\\\\u0C3C\\\\u0C3E-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81-\\\\u0C83\\\\u0CBC\\\\u0CBE-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0CF3\\\\u0D00-\\\\u0D03\\\\u0D3B\\\\u0D3C\\\\u0D3E-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D81-\\\\u0D83\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DF2\\\\u0DF3\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EBC\\\\u0EC8-\\\\u0ECE\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E\\\\u0F3F\\\\u0F71-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102B-\\\\u103E\\\\u1056-\\\\u1059\\\\u105E-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106D\\\\u1071-\\\\u1074\\\\u1082-\\\\u108D\\\\u108F\\\\u109A-\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1715\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u180F\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1A17-\\\\u1A1B\\\\u1A55-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ADD\\\\u1AE0-\\\\u1AEB\\\\u1B00-\\\\u1B04\\\\u1B34-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1B82\\\\u1BA1-\\\\u1BAD\\\\u1BE6-\\\\u1BF3\\\\u1C24-\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE8\\\\u1CED\\\\u1CF4\\\\u1CF7-\\\\u1CF9\\\\u1DC0-\\\\u1DFF\\\\u200C\\\\u200D\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA823-\\\\uA827\\\\uA82C\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA8FF\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA953\\\\uA980-\\\\uA983\\\\uA9B3-\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA4D\\\\uAA7B-\\\\uAA7D\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEB-\\\\uAAEF\\\\uAAF5\\\\uAAF6\\\\uABE3-\\\\uABEA\\\\uABEC\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F\\\\uFF9E\\\\uFF9F]|\\\\uD800[\\\\uDDFD\\\\uDEE0\\\\uDF76-\\\\uDF7A]|\\\\uD802[\\\\uDE01-\\\\uDE03\\\\uDE05\\\\uDE06\\\\uDE0C-\\\\uDE0F\\\\uDE38-\\\\uDE3A\\\\uDE3F\\\\uDEE5\\\\uDEE6]|\\\\uD803[\\\\uDD24-\\\\uDD27\\\\uDD69-\\\\uDD6D\\\\uDEAB\\\\uDEAC\\\\uDEFA-\\\\uDEFF\\\\uDF46-\\\\uDF50\\\\uDF82-\\\\uDF85]|\\\\uD804[\\\\uDC00-\\\\uDC02\\\\uDC38-\\\\uDC46\\\\uDC70\\\\uDC73\\\\uDC74\\\\uDC7F-\\\\uDC82\\\\uDCB0-\\\\uDCBA\\\\uDCC2\\\\uDD00-\\\\uDD02\\\\uDD27-\\\\uDD34\\\\uDD45\\\\uDD46\\\\uDD73\\\\uDD80-\\\\uDD82\\\\uDDB3-\\\\uDDC0\\\\uDDC9-\\\\uDDCC\\\\uDDCE\\\\uDDCF\\\\uDE2C-\\\\uDE37\\\\uDE3E\\\\uDE41\\\\uDEDF-\\\\uDEEA\\\\uDF00-\\\\uDF03\\\\uDF3B\\\\uDF3C\\\\uDF3E-\\\\uDF44\\\\uDF47\\\\uDF48\\\\uDF4B-\\\\uDF4D\\\\uDF57\\\\uDF62\\\\uDF63\\\\uDF66-\\\\uDF6C\\\\uDF70-\\\\uDF74\\\\uDFB8-\\\\uDFC0\\\\uDFC2\\\\uDFC5\\\\uDFC7-\\\\uDFCA\\\\uDFCC-\\\\uDFD0\\\\uDFD2\\\\uDFE1\\\\uDFE2]|\\\\uD805[\\\\uDC35-\\\\uDC46\\\\uDC5E\\\\uDCB0-\\\\uDCC3\\\\uDDAF-\\\\uDDB5\\\\uDDB8-\\\\uDDC0\\\\uDDDC\\\\uDDDD\\\\uDE30-\\\\uDE40\\\\uDEAB-\\\\uDEB7\\\\uDF1D-\\\\uDF2B]|\\\\uD806[\\\\uDC2C-\\\\uDC3A\\\\uDD30-\\\\uDD35\\\\uDD37\\\\uDD38\\\\uDD3B-\\\\uDD3E\\\\uDD40\\\\uDD42\\\\uDD43\\\\uDDD1-\\\\uDDD7\\\\uDDDA-\\\\uDDE0\\\\uDDE4\\\\uDE01-\\\\uDE0A\\\\uDE33-\\\\uDE39\\\\uDE3B-\\\\uDE3E\\\\uDE47\\\\uDE51-\\\\uDE5B\\\\uDE8A-\\\\uDE99\\\\uDF60-\\\\uDF67]|\\\\uD807[\\\\uDC2F-\\\\uDC36\\\\uDC38-\\\\uDC3F\\\\uDC92-\\\\uDCA7\\\\uDCA9-\\\\uDCB6\\\\uDD31-\\\\uDD36\\\\uDD3A\\\\uDD3C\\\\uDD3D\\\\uDD3F-\\\\uDD45\\\\uDD47\\\\uDD8A-\\\\uDD8E\\\\uDD90\\\\uDD91\\\\uDD93-\\\\uDD97\\\\uDEF3-\\\\uDEF6\\\\uDF00\\\\uDF01\\\\uDF03\\\\uDF34-\\\\uDF3A\\\\uDF3E-\\\\uDF42\\\\uDF5A]|\\\\uD80D[\\\\uDC40\\\\uDC47-\\\\uDC55]|\\\\uD818[\\\\uDD1E-\\\\uDD2F]|\\\\uD81A[\\\\uDEF0-\\\\uDEF4\\\\uDF30-\\\\uDF36]|\\\\uD81B[\\\\uDF4F\\\\uDF51-\\\\uDF87\\\\uDF8F-\\\\uDF92\\\\uDFE4\\\\uDFF0\\\\uDFF1]|\\\\uD82F[\\\\uDC9D\\\\uDC9E]|\\\\uD833[\\\\uDF00-\\\\uDF2D\\\\uDF30-\\\\uDF46]|\\\\uD834[\\\\uDD65-\\\\uDD69\\\\uDD6D-\\\\uDD72\\\\uDD7B-\\\\uDD82\\\\uDD85-\\\\uDD8B\\\\uDDAA-\\\\uDDAD\\\\uDE42-\\\\uDE44]|\\\\uD836[\\\\uDE00-\\\\uDE36\\\\uDE3B-\\\\uDE6C\\\\uDE75\\\\uDE84\\\\uDE9B-\\\\uDE9F\\\\uDEA1-\\\\uDEAF]|\\\\uD838[\\\\uDC00-\\\\uDC06\\\\uDC08-\\\\uDC18\\\\uDC1B-\\\\uDC21\\\\uDC23\\\\uDC24\\\\uDC26-\\\\uDC2A\\\\uDC8F\\\\uDD30-\\\\uDD36\\\\uDEAE\\\\uDEEC-\\\\uDEEF]|\\\\uD839[\\\\uDCEC-\\\\uDCEF\\\\uDDEE\\\\uDDEF\\\\uDEE3\\\\uDEE6\\\\uDEEE\\\\uDEEF\\\\uDEF5]|\\\\uD83A[\\\\uDCD0-\\\\uDCD6\\\\uDD44-\\\\uDD4A]|\\\\uDB40[\\\\uDC20-\\\\uDC7F\\\\uDD00-\\\\uDDEF])\",\n\t\t\t\t\"$Format\": \"(?:[\\\\xAD\\\\u061C\\\\u070F\\\\u180E\\\\u200B\\\\u200E\\\\u200F\\\\u202A-\\\\u202E\\\\u2060-\\\\u2064\\\\u2066-\\\\u206F\\\\uFEFF\\\\uFFF9-\\\\uFFFB]|\\\\uD80D[\\\\uDC30-\\\\uDC3F]|\\\\uD82F[\\\\uDCA0-\\\\uDCA3]|\\\\uD834[\\\\uDD73-\\\\uDD7A]|\\\\uDB40\\\\uDC01)\",\n\t\t\t\t\"$LF\": \"\\\\n\",\n\t\t\t\t\"$Lower\": \"(?:[a-z\\\\xAA\\\\xB5\\\\xBA\\\\xDF-\\\\xF6\\\\xF8-\\\\xFF\\\\u0101\\\\u0103\\\\u0105\\\\u0107\\\\u0109\\\\u010B\\\\u010D\\\\u010F\\\\u0111\\\\u0113\\\\u0115\\\\u0117\\\\u0119\\\\u011B\\\\u011D\\\\u011F\\\\u0121\\\\u0123\\\\u0125\\\\u0127\\\\u0129\\\\u012B\\\\u012D\\\\u012F\\\\u0131\\\\u0133\\\\u0135\\\\u0137\\\\u0138\\\\u013A\\\\u013C\\\\u013E\\\\u0140\\\\u0142\\\\u0144\\\\u0146\\\\u0148\\\\u0149\\\\u014B\\\\u014D\\\\u014F\\\\u0151\\\\u0153\\\\u0155\\\\u0157\\\\u0159\\\\u015B\\\\u015D\\\\u015F\\\\u0161\\\\u0163\\\\u0165\\\\u0167\\\\u0169\\\\u016B\\\\u016D\\\\u016F\\\\u0171\\\\u0173\\\\u0175\\\\u0177\\\\u017A\\\\u017C\\\\u017E-\\\\u0180\\\\u0183\\\\u0185\\\\u0188\\\\u018C\\\\u018D\\\\u0192\\\\u0195\\\\u0199-\\\\u019B\\\\u019E\\\\u01A1\\\\u01A3\\\\u01A5\\\\u01A8\\\\u01AA\\\\u01AB\\\\u01AD\\\\u01B0\\\\u01B4\\\\u01B6\\\\u01B9\\\\u01BA\\\\u01BD-\\\\u01BF\\\\u01C6\\\\u01C9\\\\u01CC\\\\u01CE\\\\u01D0\\\\u01D2\\\\u01D4\\\\u01D6\\\\u01D8\\\\u01DA\\\\u01DC\\\\u01DD\\\\u01DF\\\\u01E1\\\\u01E3\\\\u01E5\\\\u01E7\\\\u01E9\\\\u01EB\\\\u01ED\\\\u01EF\\\\u01F0\\\\u01F3\\\\u01F5\\\\u01F9\\\\u01FB\\\\u01FD\\\\u01FF\\\\u0201\\\\u0203\\\\u0205\\\\u0207\\\\u0209\\\\u020B\\\\u020D\\\\u020F\\\\u0211\\\\u0213\\\\u0215\\\\u0217\\\\u0219\\\\u021B\\\\u021D\\\\u021F\\\\u0221\\\\u0223\\\\u0225\\\\u0227\\\\u0229\\\\u022B\\\\u022D\\\\u022F\\\\u0231\\\\u0233-\\\\u0239\\\\u023C\\\\u023F\\\\u0240\\\\u0242\\\\u0247\\\\u0249\\\\u024B\\\\u024D\\\\u024F-\\\\u0293\\\\u0296-\\\\u02B8\\\\u02C0\\\\u02C1\\\\u02E0-\\\\u02E4\\\\u0371\\\\u0373\\\\u0377\\\\u037A-\\\\u037D\\\\u0390\\\\u03AC-\\\\u03CE\\\\u03D0\\\\u03D1\\\\u03D5-\\\\u03D7\\\\u03D9\\\\u03DB\\\\u03DD\\\\u03DF\\\\u03E1\\\\u03E3\\\\u03E5\\\\u03E7\\\\u03E9\\\\u03EB\\\\u03ED\\\\u03EF-\\\\u03F3\\\\u03F5\\\\u03F8\\\\u03FB\\\\u03FC\\\\u0430-\\\\u045F\\\\u0461\\\\u0463\\\\u0465\\\\u0467\\\\u0469\\\\u046B\\\\u046D\\\\u046F\\\\u0471\\\\u0473\\\\u0475\\\\u0477\\\\u0479\\\\u047B\\\\u047D\\\\u047F\\\\u0481\\\\u048B\\\\u048D\\\\u048F\\\\u0491\\\\u0493\\\\u0495\\\\u0497\\\\u0499\\\\u049B\\\\u049D\\\\u049F\\\\u04A1\\\\u04A3\\\\u04A5\\\\u04A7\\\\u04A9\\\\u04AB\\\\u04AD\\\\u04AF\\\\u04B1\\\\u04B3\\\\u04B5\\\\u04B7\\\\u04B9\\\\u04BB\\\\u04BD\\\\u04BF\\\\u04C2\\\\u04C4\\\\u04C6\\\\u04C8\\\\u04CA\\\\u04CC\\\\u04CE\\\\u04CF\\\\u04D1\\\\u04D3\\\\u04D5\\\\u04D7\\\\u04D9\\\\u04DB\\\\u04DD\\\\u04DF\\\\u04E1\\\\u04E3\\\\u04E5\\\\u04E7\\\\u04E9\\\\u04EB\\\\u04ED\\\\u04EF\\\\u04F1\\\\u04F3\\\\u04F5\\\\u04F7\\\\u04F9\\\\u04FB\\\\u04FD\\\\u04FF\\\\u0501\\\\u0503\\\\u0505\\\\u0507\\\\u0509\\\\u050B\\\\u050D\\\\u050F\\\\u0511\\\\u0513\\\\u0515\\\\u0517\\\\u0519\\\\u051B\\\\u051D\\\\u051F\\\\u0521\\\\u0523\\\\u0525\\\\u0527\\\\u0529\\\\u052B\\\\u052D\\\\u052F\\\\u0560-\\\\u0588\\\\u10FC\\\\u13F8-\\\\u13FD\\\\u1C80-\\\\u1C88\\\\u1C8A\\\\u1D00-\\\\u1DBF\\\\u1E01\\\\u1E03\\\\u1E05\\\\u1E07\\\\u1E09\\\\u1E0B\\\\u1E0D\\\\u1E0F\\\\u1E11\\\\u1E13\\\\u1E15\\\\u1E17\\\\u1E19\\\\u1E1B\\\\u1E1D\\\\u1E1F\\\\u1E21\\\\u1E23\\\\u1E25\\\\u1E27\\\\u1E29\\\\u1E2B\\\\u1E2D\\\\u1E2F\\\\u1E31\\\\u1E33\\\\u1E35\\\\u1E37\\\\u1E39\\\\u1E3B\\\\u1E3D\\\\u1E3F\\\\u1E41\\\\u1E43\\\\u1E45\\\\u1E47\\\\u1E49\\\\u1E4B\\\\u1E4D\\\\u1E4F\\\\u1E51\\\\u1E53\\\\u1E55\\\\u1E57\\\\u1E59\\\\u1E5B\\\\u1E5D\\\\u1E5F\\\\u1E61\\\\u1E63\\\\u1E65\\\\u1E67\\\\u1E69\\\\u1E6B\\\\u1E6D\\\\u1E6F\\\\u1E71\\\\u1E73\\\\u1E75\\\\u1E77\\\\u1E79\\\\u1E7B\\\\u1E7D\\\\u1E7F\\\\u1E81\\\\u1E83\\\\u1E85\\\\u1E87\\\\u1E89\\\\u1E8B\\\\u1E8D\\\\u1E8F\\\\u1E91\\\\u1E93\\\\u1E95-\\\\u1E9D\\\\u1E9F\\\\u1EA1\\\\u1EA3\\\\u1EA5\\\\u1EA7\\\\u1EA9\\\\u1EAB\\\\u1EAD\\\\u1EAF\\\\u1EB1\\\\u1EB3\\\\u1EB5\\\\u1EB7\\\\u1EB9\\\\u1EBB\\\\u1EBD\\\\u1EBF\\\\u1EC1\\\\u1EC3\\\\u1EC5\\\\u1EC7\\\\u1EC9\\\\u1ECB\\\\u1ECD\\\\u1ECF\\\\u1ED1\\\\u1ED3\\\\u1ED5\\\\u1ED7\\\\u1ED9\\\\u1EDB\\\\u1EDD\\\\u1EDF\\\\u1EE1\\\\u1EE3\\\\u1EE5\\\\u1EE7\\\\u1EE9\\\\u1EEB\\\\u1EED\\\\u1EEF\\\\u1EF1\\\\u1EF3\\\\u1EF5\\\\u1EF7\\\\u1EF9\\\\u1EFB\\\\u1EFD\\\\u1EFF-\\\\u1F07\\\\u1F10-\\\\u1F15\\\\u1F20-\\\\u1F27\\\\u1F30-\\\\u1F37\\\\u1F40-\\\\u1F45\\\\u1F50-\\\\u1F57\\\\u1F60-\\\\u1F67\\\\u1F70-\\\\u1F7D\\\\u1F80-\\\\u1F87\\\\u1F90-\\\\u1F97\\\\u1FA0-\\\\u1FA7\\\\u1FB0-\\\\u1FB4\\\\u1FB6\\\\u1FB7\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6\\\\u1FC7\\\\u1FD0-\\\\u1FD3\\\\u1FD6\\\\u1FD7\\\\u1FE0-\\\\u1FE7\\\\u1FF2-\\\\u1FF4\\\\u1FF6\\\\u1FF7\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u210A\\\\u210E\\\\u210F\\\\u2113\\\\u212F\\\\u2134\\\\u2139\\\\u213C\\\\u213D\\\\u2146-\\\\u2149\\\\u214E\\\\u2170-\\\\u217F\\\\u2184\\\\u24D0-\\\\u24E9\\\\u2C30-\\\\u2C5F\\\\u2C61\\\\u2C65\\\\u2C66\\\\u2C68\\\\u2C6A\\\\u2C6C\\\\u2C71\\\\u2C73\\\\u2C74\\\\u2C76-\\\\u2C7D\\\\u2C81\\\\u2C83\\\\u2C85\\\\u2C87\\\\u2C89\\\\u2C8B\\\\u2C8D\\\\u2C8F\\\\u2C91\\\\u2C93\\\\u2C95\\\\u2C97\\\\u2C99\\\\u2C9B\\\\u2C9D\\\\u2C9F\\\\u2CA1\\\\u2CA3\\\\u2CA5\\\\u2CA7\\\\u2CA9\\\\u2CAB\\\\u2CAD\\\\u2CAF\\\\u2CB1\\\\u2CB3\\\\u2CB5\\\\u2CB7\\\\u2CB9\\\\u2CBB\\\\u2CBD\\\\u2CBF\\\\u2CC1\\\\u2CC3\\\\u2CC5\\\\u2CC7\\\\u2CC9\\\\u2CCB\\\\u2CCD\\\\u2CCF\\\\u2CD1\\\\u2CD3\\\\u2CD5\\\\u2CD7\\\\u2CD9\\\\u2CDB\\\\u2CDD\\\\u2CDF\\\\u2CE1\\\\u2CE3\\\\u2CE4\\\\u2CEC\\\\u2CEE\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\uA641\\\\uA643\\\\uA645\\\\uA647\\\\uA649\\\\uA64B\\\\uA64D\\\\uA64F\\\\uA651\\\\uA653\\\\uA655\\\\uA657\\\\uA659\\\\uA65B\\\\uA65D\\\\uA65F\\\\uA661\\\\uA663\\\\uA665\\\\uA667\\\\uA669\\\\uA66B\\\\uA66D\\\\uA681\\\\uA683\\\\uA685\\\\uA687\\\\uA689\\\\uA68B\\\\uA68D\\\\uA68F\\\\uA691\\\\uA693\\\\uA695\\\\uA697\\\\uA699\\\\uA69B-\\\\uA69D\\\\uA723\\\\uA725\\\\uA727\\\\uA729\\\\uA72B\\\\uA72D\\\\uA72F-\\\\uA731\\\\uA733\\\\uA735\\\\uA737\\\\uA739\\\\uA73B\\\\uA73D\\\\uA73F\\\\uA741\\\\uA743\\\\uA745\\\\uA747\\\\uA749\\\\uA74B\\\\uA74D\\\\uA74F\\\\uA751\\\\uA753\\\\uA755\\\\uA757\\\\uA759\\\\uA75B\\\\uA75D\\\\uA75F\\\\uA761\\\\uA763\\\\uA765\\\\uA767\\\\uA769\\\\uA76B\\\\uA76D\\\\uA76F-\\\\uA778\\\\uA77A\\\\uA77C\\\\uA77F\\\\uA781\\\\uA783\\\\uA785\\\\uA787\\\\uA78C\\\\uA78E\\\\uA791\\\\uA793-\\\\uA795\\\\uA797\\\\uA799\\\\uA79B\\\\uA79D\\\\uA79F\\\\uA7A1\\\\uA7A3\\\\uA7A5\\\\uA7A7\\\\uA7A9\\\\uA7AF\\\\uA7B5\\\\uA7B7\\\\uA7B9\\\\uA7BB\\\\uA7BD\\\\uA7BF\\\\uA7C1\\\\uA7C3\\\\uA7C8\\\\uA7CA\\\\uA7CD\\\\uA7CF\\\\uA7D1\\\\uA7D3\\\\uA7D5\\\\uA7D7\\\\uA7D9\\\\uA7DB\\\\uA7F1-\\\\uA7F4\\\\uA7F6\\\\uA7F8-\\\\uA7FA\\\\uAB30-\\\\uAB5A\\\\uAB5C-\\\\uAB69\\\\uAB70-\\\\uABBF\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFF41-\\\\uFF5A]|\\\\uD801[\\\\uDC28-\\\\uDC4F\\\\uDCD8-\\\\uDCFB\\\\uDD97-\\\\uDDA1\\\\uDDA3-\\\\uDDB1\\\\uDDB3-\\\\uDDB9\\\\uDDBB\\\\uDDBC\\\\uDF80\\\\uDF83-\\\\uDF85\\\\uDF87-\\\\uDFB0\\\\uDFB2-\\\\uDFBA]|\\\\uD803[\\\\uDCC0-\\\\uDCF2\\\\uDD70-\\\\uDD85]|\\\\uD806[\\\\uDCC0-\\\\uDCDF]|\\\\uD81B[\\\\uDE60-\\\\uDE7F\\\\uDEBB-\\\\uDED3]|\\\\uD835[\\\\uDC1A-\\\\uDC33\\\\uDC4E-\\\\uDC54\\\\uDC56-\\\\uDC67\\\\uDC82-\\\\uDC9B\\\\uDCB6-\\\\uDCB9\\\\uDCBB\\\\uDCBD-\\\\uDCC3\\\\uDCC5-\\\\uDCCF\\\\uDCEA-\\\\uDD03\\\\uDD1E-\\\\uDD37\\\\uDD52-\\\\uDD6B\\\\uDD86-\\\\uDD9F\\\\uDDBA-\\\\uDDD3\\\\uDDEE-\\\\uDE07\\\\uDE22-\\\\uDE3B\\\\uDE56-\\\\uDE6F\\\\uDE8A-\\\\uDEA5\\\\uDEC2-\\\\uDEDA\\\\uDEDC-\\\\uDEE1\\\\uDEFC-\\\\uDF14\\\\uDF16-\\\\uDF1B\\\\uDF36-\\\\uDF4E\\\\uDF50-\\\\uDF55\\\\uDF70-\\\\uDF88\\\\uDF8A-\\\\uDF8F\\\\uDFAA-\\\\uDFC2\\\\uDFC4-\\\\uDFC9\\\\uDFCB]|\\\\uD837[\\\\uDF00-\\\\uDF09\\\\uDF0B-\\\\uDF1E\\\\uDF25-\\\\uDF2A]|\\\\uD838[\\\\uDC30-\\\\uDC6D]|\\\\uD83A[\\\\uDD22-\\\\uDD43])\",\n\t\t\t\t\"$Numeric\": \"(?:[0-9\\\\u0600-\\\\u0605\\\\u0660-\\\\u0669\\\\u066B\\\\u066C\\\\u06DD\\\\u06F0-\\\\u06F9\\\\u07C0-\\\\u07C9\\\\u0890\\\\u0891\\\\u08E2\\\\u0966-\\\\u096F\\\\u09E6-\\\\u09EF\\\\u0A66-\\\\u0A6F\\\\u0AE6-\\\\u0AEF\\\\u0B66-\\\\u0B6F\\\\u0BE6-\\\\u0BEF\\\\u0C66-\\\\u0C6F\\\\u0CE6-\\\\u0CEF\\\\u0D66-\\\\u0D6F\\\\u0DE6-\\\\u0DEF\\\\u0E50-\\\\u0E59\\\\u0ED0-\\\\u0ED9\\\\u0F20-\\\\u0F29\\\\u1040-\\\\u1049\\\\u1090-\\\\u1099\\\\u17E0-\\\\u17E9\\\\u1810-\\\\u1819\\\\u1946-\\\\u194F\\\\u19D0-\\\\u19DA\\\\u1A80-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1B50-\\\\u1B59\\\\u1BB0-\\\\u1BB9\\\\u1C40-\\\\u1C49\\\\u1C50-\\\\u1C59\\\\uA620-\\\\uA629\\\\uA8D0-\\\\uA8D9\\\\uA900-\\\\uA909\\\\uA9D0-\\\\uA9D9\\\\uA9F0-\\\\uA9F9\\\\uAA50-\\\\uAA59\\\\uABF0-\\\\uABF9\\\\uFF10-\\\\uFF19]|\\\\uD801[\\\\uDCA0-\\\\uDCA9]|[\\\\uD803\\\\uD818][\\\\uDD30-\\\\uDD39\\\\uDD40-\\\\uDD49]|\\\\uD804[\\\\uDC66-\\\\uDC6F\\\\uDCBD\\\\uDCCD\\\\uDCF0-\\\\uDCF9\\\\uDD36-\\\\uDD3F\\\\uDDD0-\\\\uDDD9\\\\uDEF0-\\\\uDEF9]|\\\\uD805[\\\\uDC50-\\\\uDC59\\\\uDCD0-\\\\uDCD9\\\\uDE50-\\\\uDE59\\\\uDEC0-\\\\uDEC9\\\\uDED0-\\\\uDEE3\\\\uDF30-\\\\uDF39]|\\\\uD806[\\\\uDCE0-\\\\uDCE9\\\\uDD50-\\\\uDD59\\\\uDFF0-\\\\uDFF9]|\\\\uD807[\\\\uDC50-\\\\uDC59\\\\uDD50-\\\\uDD59\\\\uDDA0-\\\\uDDA9\\\\uDDE0-\\\\uDDE9\\\\uDF50-\\\\uDF59]|\\\\uD81A[\\\\uDE60-\\\\uDE69\\\\uDEC0-\\\\uDEC9\\\\uDF50-\\\\uDF59]|\\\\uD81B[\\\\uDD70-\\\\uDD79]|\\\\uD833[\\\\uDCF0-\\\\uDCF9]|\\\\uD835[\\\\uDFCE-\\\\uDFFF]|\\\\uD838[\\\\uDD40-\\\\uDD49\\\\uDEF0-\\\\uDEF9]|\\\\uD839[\\\\uDCF0-\\\\uDCF9\\\\uDDF1-\\\\uDDFA]|\\\\uD83A[\\\\uDD50-\\\\uDD59]|\\\\uD83E[\\\\uDFF0-\\\\uDFF9])\",\n\t\t\t\t\"$OLetter\": \"(?:[\\\\u01BB\\\\u01C0-\\\\u01C3\\\\u0294\\\\u0295\\\\u02B9-\\\\u02BF\\\\u02C6-\\\\u02D1\\\\u02EC\\\\u02EE\\\\u0374\\\\u0559\\\\u05D0-\\\\u05EA\\\\u05EF-\\\\u05F3\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u0860-\\\\u086A\\\\u0870-\\\\u0887\\\\u0889-\\\\u088F\\\\u08A0-\\\\u08C9\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u09FC\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0AF9\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58-\\\\u0C5A\\\\u0C5C\\\\u0C5D\\\\u0C60\\\\u0C61\\\\u0C80\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDC-\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D04-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D54-\\\\u0D56\\\\u0D5F-\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0E01-\\\\u0E30\\\\u0E32\\\\u0E33\\\\u0E40-\\\\u0E46\\\\u0E81\\\\u0E82\\\\u0E84\\\\u0E86-\\\\u0E8A\\\\u0E8C-\\\\u0EA3\\\\u0EA5\\\\u0EA7-\\\\u0EB0\\\\u0EB2\\\\u0EB3\\\\u0EBD\\\\u0EC0-\\\\u0EC4\\\\u0EC6\\\\u0EDC-\\\\u0EDF\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u1000-\\\\u102A\\\\u103F\\\\u1050-\\\\u1055\\\\u105A-\\\\u105D\\\\u1061\\\\u1065\\\\u1066\\\\u106E-\\\\u1070\\\\u1075-\\\\u1081\\\\u108E\\\\u10D0-\\\\u10FA\\\\u10FD-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u1711\\\\u171F-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1780-\\\\u17B3\\\\u17D7\\\\u17DC\\\\u1820-\\\\u1878\\\\u1880-\\\\u1884\\\\u1887-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1950-\\\\u196D\\\\u1970-\\\\u1974\\\\u1980-\\\\u19AB\\\\u19B0-\\\\u19C9\\\\u1A00-\\\\u1A16\\\\u1A20-\\\\u1A54\\\\u1AA7\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4C\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1C90-\\\\u1CBA\\\\u1CBD-\\\\u1CBF\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF3\\\\u1CF5\\\\u1CF6\\\\u1CFA\\\\u2135-\\\\u2138\\\\u2180-\\\\u2182\\\\u2185-\\\\u2188\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303C\\\\u3041-\\\\u3096\\\\u309D-\\\\u309F\\\\u30A1-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u3105-\\\\u312F\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BF\\\\u31F0-\\\\u31FF\\\\u3400-\\\\u4DBF\\\\u4E00-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA66E\\\\uA67F\\\\uA6A0-\\\\uA6EF\\\\uA717-\\\\uA71F\\\\uA788\\\\uA78F\\\\uA7F7\\\\uA7FB-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA8FD\\\\uA8FE\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uA9E0-\\\\uA9E4\\\\uA9E6-\\\\uA9EF\\\\uA9FA-\\\\uA9FE\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAA60-\\\\uAA76\\\\uAA7A\\\\uAA7E-\\\\uAAAF\\\\uAAB1\\\\uAAB5\\\\uAAB6\\\\uAAB9-\\\\uAABD\\\\uAAC0\\\\uAAC2\\\\uAADB-\\\\uAADD\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uABC0-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uF900-\\\\uFA6D\\\\uFA70-\\\\uFAD9\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF66-\\\\uFF9D\\\\uFFA0-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]|\\\\uD800[\\\\uDC00-\\\\uDC0B\\\\uDC0D-\\\\uDC26\\\\uDC28-\\\\uDC3A\\\\uDC3C\\\\uDC3D\\\\uDC3F-\\\\uDC4D\\\\uDC50-\\\\uDC5D\\\\uDC80-\\\\uDCFA\\\\uDD40-\\\\uDD74\\\\uDE80-\\\\uDE9C\\\\uDEA0-\\\\uDED0\\\\uDF00-\\\\uDF1F\\\\uDF2D-\\\\uDF4A\\\\uDF50-\\\\uDF75\\\\uDF80-\\\\uDF9D\\\\uDFA0-\\\\uDFC3\\\\uDFC8-\\\\uDFCF\\\\uDFD1-\\\\uDFD5]|\\\\uD801[\\\\uDC50-\\\\uDC9D\\\\uDD00-\\\\uDD27\\\\uDD30-\\\\uDD63\\\\uDDC0-\\\\uDDF3\\\\uDE00-\\\\uDF36\\\\uDF40-\\\\uDF55\\\\uDF60-\\\\uDF67\\\\uDF81\\\\uDF82]|\\\\uD802[\\\\uDC00-\\\\uDC05\\\\uDC08\\\\uDC0A-\\\\uDC35\\\\uDC37\\\\uDC38\\\\uDC3C\\\\uDC3F-\\\\uDC55\\\\uDC60-\\\\uDC76\\\\uDC80-\\\\uDC9E\\\\uDCE0-\\\\uDCF2\\\\uDCF4\\\\uDCF5\\\\uDD00-\\\\uDD15\\\\uDD20-\\\\uDD39\\\\uDD40-\\\\uDD59\\\\uDD80-\\\\uDDB7\\\\uDDBE\\\\uDDBF\\\\uDE00\\\\uDE10-\\\\uDE13\\\\uDE15-\\\\uDE17\\\\uDE19-\\\\uDE35\\\\uDE60-\\\\uDE7C\\\\uDE80-\\\\uDE9C\\\\uDEC0-\\\\uDEC7\\\\uDEC9-\\\\uDEE4\\\\uDF00-\\\\uDF35\\\\uDF40-\\\\uDF55\\\\uDF60-\\\\uDF72\\\\uDF80-\\\\uDF91]|\\\\uD803[\\\\uDC00-\\\\uDC48\\\\uDD00-\\\\uDD23\\\\uDD4A-\\\\uDD4F\\\\uDD6F\\\\uDE80-\\\\uDEA9\\\\uDEB0\\\\uDEB1\\\\uDEC2-\\\\uDEC7\\\\uDF00-\\\\uDF1C\\\\uDF27\\\\uDF30-\\\\uDF45\\\\uDF70-\\\\uDF81\\\\uDFB0-\\\\uDFC4\\\\uDFE0-\\\\uDFF6]|\\\\uD804[\\\\uDC03-\\\\uDC37\\\\uDC71\\\\uDC72\\\\uDC75\\\\uDC83-\\\\uDCAF\\\\uDCD0-\\\\uDCE8\\\\uDD03-\\\\uDD26\\\\uDD44\\\\uDD47\\\\uDD50-\\\\uDD72\\\\uDD76\\\\uDD83-\\\\uDDB2\\\\uDDC1-\\\\uDDC4\\\\uDDDA\\\\uDDDC\\\\uDE00-\\\\uDE11\\\\uDE13-\\\\uDE2B\\\\uDE3F\\\\uDE40\\\\uDE80-\\\\uDE86\\\\uDE88\\\\uDE8A-\\\\uDE8D\\\\uDE8F-\\\\uDE9D\\\\uDE9F-\\\\uDEA8\\\\uDEB0-\\\\uDEDE\\\\uDF05-\\\\uDF0C\\\\uDF0F\\\\uDF10\\\\uDF13-\\\\uDF28\\\\uDF2A-\\\\uDF30\\\\uDF32\\\\uDF33\\\\uDF35-\\\\uDF39\\\\uDF3D\\\\uDF50\\\\uDF5D-\\\\uDF61\\\\uDF80-\\\\uDF89\\\\uDF8B\\\\uDF8E\\\\uDF90-\\\\uDFB5\\\\uDFB7\\\\uDFD1\\\\uDFD3]|\\\\uD805[\\\\uDC00-\\\\uDC34\\\\uDC47-\\\\uDC4A\\\\uDC5F-\\\\uDC61\\\\uDC80-\\\\uDCAF\\\\uDCC4\\\\uDCC5\\\\uDCC7\\\\uDD80-\\\\uDDAE\\\\uDDD8-\\\\uDDDB\\\\uDE00-\\\\uDE2F\\\\uDE44\\\\uDE80-\\\\uDEAA\\\\uDEB8\\\\uDF00-\\\\uDF1A\\\\uDF40-\\\\uDF46]|\\\\uD806[\\\\uDC00-\\\\uDC2B\\\\uDCFF-\\\\uDD06\\\\uDD09\\\\uDD0C-\\\\uDD13\\\\uDD15\\\\uDD16\\\\uDD18-\\\\uDD2F\\\\uDD3F\\\\uDD41\\\\uDDA0-\\\\uDDA7\\\\uDDAA-\\\\uDDD0\\\\uDDE1\\\\uDDE3\\\\uDE00\\\\uDE0B-\\\\uDE32\\\\uDE3A\\\\uDE50\\\\uDE5C-\\\\uDE89\\\\uDE9D\\\\uDEB0-\\\\uDEF8\\\\uDFC0-\\\\uDFE0]|\\\\uD807[\\\\uDC00-\\\\uDC08\\\\uDC0A-\\\\uDC2E\\\\uDC40\\\\uDC72-\\\\uDC8F\\\\uDD00-\\\\uDD06\\\\uDD08\\\\uDD09\\\\uDD0B-\\\\uDD30\\\\uDD46\\\\uDD60-\\\\uDD65\\\\uDD67\\\\uDD68\\\\uDD6A-\\\\uDD89\\\\uDD98\\\\uDDB0-\\\\uDDDB\\\\uDEE0-\\\\uDEF2\\\\uDF02\\\\uDF04-\\\\uDF10\\\\uDF12-\\\\uDF33\\\\uDFB0]|\\\\uD808[\\\\uDC00-\\\\uDF99]|\\\\uD809[\\\\uDC00-\\\\uDC6E\\\\uDC80-\\\\uDD43]|\\\\uD80B[\\\\uDF90-\\\\uDFF0]|[\\\\uD80C\\\\uD80E\\\\uD80F\\\\uD81C-\\\\uD822\\\\uD840-\\\\uD868\\\\uD86A-\\\\uD86D\\\\uD86F-\\\\uD872\\\\uD874-\\\\uD879\\\\uD880-\\\\uD883\\\\uD885-\\\\uD88C][\\\\uDC00-\\\\uDFFF]|\\\\uD80D[\\\\uDC00-\\\\uDC2F\\\\uDC41-\\\\uDC46\\\\uDC60-\\\\uDFFF]|\\\\uD810[\\\\uDC00-\\\\uDFFA]|\\\\uD811[\\\\uDC00-\\\\uDE46]|\\\\uD818[\\\\uDD00-\\\\uDD1D]|\\\\uD81A[\\\\uDC00-\\\\uDE38\\\\uDE40-\\\\uDE5E\\\\uDE70-\\\\uDEBE\\\\uDED0-\\\\uDEED\\\\uDF00-\\\\uDF2F\\\\uDF40-\\\\uDF43\\\\uDF63-\\\\uDF77\\\\uDF7D-\\\\uDF8F]|\\\\uD81B[\\\\uDD40-\\\\uDD6C\\\\uDF00-\\\\uDF4A\\\\uDF50\\\\uDF93-\\\\uDF9F\\\\uDFE0\\\\uDFE1\\\\uDFE3\\\\uDFF2-\\\\uDFF6]|\\\\uD823[\\\\uDC00-\\\\uDCD5\\\\uDCFF-\\\\uDD1E\\\\uDD80-\\\\uDDF2]|\\\\uD82B[\\\\uDFF0-\\\\uDFF3\\\\uDFF5-\\\\uDFFB\\\\uDFFD\\\\uDFFE]|\\\\uD82C[\\\\uDC00-\\\\uDD22\\\\uDD32\\\\uDD50-\\\\uDD52\\\\uDD55\\\\uDD64-\\\\uDD67\\\\uDD70-\\\\uDEFB]|\\\\uD82F[\\\\uDC00-\\\\uDC6A\\\\uDC70-\\\\uDC7C\\\\uDC80-\\\\uDC88\\\\uDC90-\\\\uDC99]|\\\\uD837\\\\uDF0A|\\\\uD838[\\\\uDD00-\\\\uDD2C\\\\uDD37-\\\\uDD3D\\\\uDD4E\\\\uDE90-\\\\uDEAD\\\\uDEC0-\\\\uDEEB]|\\\\uD839[\\\\uDCD0-\\\\uDCEB\\\\uDDD0-\\\\uDDED\\\\uDDF0\\\\uDEC0-\\\\uDEDE\\\\uDEE0-\\\\uDEE2\\\\uDEE4\\\\uDEE5\\\\uDEE7-\\\\uDEED\\\\uDEF0-\\\\uDEF4\\\\uDEFE\\\\uDEFF\\\\uDFE0-\\\\uDFE6\\\\uDFE8-\\\\uDFEB\\\\uDFED\\\\uDFEE\\\\uDFF0-\\\\uDFFE]|\\\\uD83A[\\\\uDC00-\\\\uDCC4\\\\uDD4B]|\\\\uD83B[\\\\uDE00-\\\\uDE03\\\\uDE05-\\\\uDE1F\\\\uDE21\\\\uDE22\\\\uDE24\\\\uDE27\\\\uDE29-\\\\uDE32\\\\uDE34-\\\\uDE37\\\\uDE39\\\\uDE3B\\\\uDE42\\\\uDE47\\\\uDE49\\\\uDE4B\\\\uDE4D-\\\\uDE4F\\\\uDE51\\\\uDE52\\\\uDE54\\\\uDE57\\\\uDE59\\\\uDE5B\\\\uDE5D\\\\uDE5F\\\\uDE61\\\\uDE62\\\\uDE64\\\\uDE67-\\\\uDE6A\\\\uDE6C-\\\\uDE72\\\\uDE74-\\\\uDE77\\\\uDE79-\\\\uDE7C\\\\uDE7E\\\\uDE80-\\\\uDE89\\\\uDE8B-\\\\uDE9B\\\\uDEA1-\\\\uDEA3\\\\uDEA5-\\\\uDEA9\\\\uDEAB-\\\\uDEBB]|\\\\uD869[\\\\uDC00-\\\\uDEDF\\\\uDF00-\\\\uDFFF]|\\\\uD86E[\\\\uDC00-\\\\uDC1D\\\\uDC20-\\\\uDFFF]|\\\\uD873[\\\\uDC00-\\\\uDEAD\\\\uDEB0-\\\\uDFFF]|\\\\uD87A[\\\\uDC00-\\\\uDFE0\\\\uDFF0-\\\\uDFFF]|\\\\uD87B[\\\\uDC00-\\\\uDE5D]|\\\\uD87E[\\\\uDC00-\\\\uDE1D]|\\\\uD884[\\\\uDC00-\\\\uDF4A\\\\uDF50-\\\\uDFFF]|\\\\uD88D[\\\\uDC00-\\\\uDC79])\",\n\t\t\t\t\"$ParaSep\": \"[\\\\n\\\\r\\\\x85\\\\u2028\\\\u2029]\",\n\t\t\t\t\"$SATerm\": \"(?:[!\\\\.\\\\?\\\\u0589\\\\u061D-\\\\u061F\\\\u06D4\\\\u0700-\\\\u0702\\\\u07F9\\\\u0837\\\\u0839\\\\u083D\\\\u083E\\\\u0964\\\\u0965\\\\u104A\\\\u104B\\\\u1362\\\\u1367\\\\u1368\\\\u166E\\\\u1735\\\\u1736\\\\u17D4\\\\u17D5\\\\u1803\\\\u1809\\\\u1944\\\\u1945\\\\u1AA8-\\\\u1AAB\\\\u1B4E\\\\u1B4F\\\\u1B5A\\\\u1B5B\\\\u1B5E\\\\u1B5F\\\\u1B7D-\\\\u1B7F\\\\u1C3B\\\\u1C3C\\\\u1C7E\\\\u1C7F\\\\u2024\\\\u203C\\\\u203D\\\\u2047-\\\\u2049\\\\u2CF9-\\\\u2CFB\\\\u2E2E\\\\u2E3C\\\\u2E53\\\\u2E54\\\\u3002\\\\uA4FF\\\\uA60E\\\\uA60F\\\\uA6F3\\\\uA6F7\\\\uA876\\\\uA877\\\\uA8CE\\\\uA8CF\\\\uA92F\\\\uA9C8\\\\uA9C9\\\\uAA5D-\\\\uAA5F\\\\uAAF0\\\\uAAF1\\\\uABEB\\\\uFE12\\\\uFE15\\\\uFE16\\\\uFE52\\\\uFE56\\\\uFE57\\\\uFF01\\\\uFF0E\\\\uFF1F\\\\uFF61]|\\\\uD802[\\\\uDE56\\\\uDE57]|\\\\uD803[\\\\uDF55-\\\\uDF59\\\\uDF86-\\\\uDF89]|\\\\uD804[\\\\uDC47\\\\uDC48\\\\uDCBE-\\\\uDCC1\\\\uDD41-\\\\uDD43\\\\uDDC5\\\\uDDC6\\\\uDDCD\\\\uDDDE\\\\uDDDF\\\\uDE38\\\\uDE39\\\\uDE3B\\\\uDE3C\\\\uDEA9\\\\uDFD4\\\\uDFD5]|\\\\uD805[\\\\uDC4B\\\\uDC4C\\\\uDDC2\\\\uDDC3\\\\uDDC9-\\\\uDDD7\\\\uDE41\\\\uDE42\\\\uDF3C-\\\\uDF3E]|\\\\uD806[\\\\uDD44\\\\uDD46\\\\uDE42\\\\uDE43\\\\uDE9B\\\\uDE9C]|\\\\uD807[\\\\uDC41\\\\uDC42\\\\uDEF7\\\\uDEF8\\\\uDF43\\\\uDF44]|\\\\uD81A[\\\\uDE6E\\\\uDE6F\\\\uDEF5\\\\uDF37\\\\uDF38\\\\uDF44]|\\\\uD81B[\\\\uDD6E\\\\uDD6F\\\\uDE98]|\\\\uD82F\\\\uDC9F|\\\\uD836\\\\uDE88)\",\n\t\t\t\t\"$SContinue\": \"[,\\\\x2D:;\\\\u037E\\\\u055D\\\\u060C\\\\u060D\\\\u07F8\\\\u1802\\\\u1808\\\\u2013\\\\u2014\\\\u3001\\\\uFE10\\\\uFE11\\\\uFE13\\\\uFE14\\\\uFE31\\\\uFE32\\\\uFE50\\\\uFE51\\\\uFE54\\\\uFE55\\\\uFE58\\\\uFE63\\\\uFF0C\\\\uFF0D\\\\uFF1A\\\\uFF1B\\\\uFF64]\",\n\t\t\t\t\"$STerm\": \"(?:[!\\\\?\\\\u0589\\\\u061D-\\\\u061F\\\\u06D4\\\\u0700-\\\\u0702\\\\u07F9\\\\u0837\\\\u0839\\\\u083D\\\\u083E\\\\u0964\\\\u0965\\\\u104A\\\\u104B\\\\u1362\\\\u1367\\\\u1368\\\\u166E\\\\u1735\\\\u1736\\\\u17D4\\\\u17D5\\\\u1803\\\\u1809\\\\u1944\\\\u1945\\\\u1AA8-\\\\u1AAB\\\\u1B4E\\\\u1B4F\\\\u1B5A\\\\u1B5B\\\\u1B5E\\\\u1B5F\\\\u1B7D-\\\\u1B7F\\\\u1C3B\\\\u1C3C\\\\u1C7E\\\\u1C7F\\\\u203C\\\\u203D\\\\u2047-\\\\u2049\\\\u2CF9-\\\\u2CFB\\\\u2E2E\\\\u2E3C\\\\u2E53\\\\u2E54\\\\u3002\\\\uA4FF\\\\uA60E\\\\uA60F\\\\uA6F3\\\\uA6F7\\\\uA876\\\\uA877\\\\uA8CE\\\\uA8CF\\\\uA92F\\\\uA9C8\\\\uA9C9\\\\uAA5D-\\\\uAA5F\\\\uAAF0\\\\uAAF1\\\\uABEB\\\\uFE12\\\\uFE15\\\\uFE16\\\\uFE56\\\\uFE57\\\\uFF01\\\\uFF1F\\\\uFF61]|\\\\uD802[\\\\uDE56\\\\uDE57]|\\\\uD803[\\\\uDF55-\\\\uDF59\\\\uDF86-\\\\uDF89]|\\\\uD804[\\\\uDC47\\\\uDC48\\\\uDCBE-\\\\uDCC1\\\\uDD41-\\\\uDD43\\\\uDDC5\\\\uDDC6\\\\uDDCD\\\\uDDDE\\\\uDDDF\\\\uDE38\\\\uDE39\\\\uDE3B\\\\uDE3C\\\\uDEA9\\\\uDFD4\\\\uDFD5]|\\\\uD805[\\\\uDC4B\\\\uDC4C\\\\uDDC2\\\\uDDC3\\\\uDDC9-\\\\uDDD7\\\\uDE41\\\\uDE42\\\\uDF3C-\\\\uDF3E]|\\\\uD806[\\\\uDD44\\\\uDD46\\\\uDE42\\\\uDE43\\\\uDE9B\\\\uDE9C]|\\\\uD807[\\\\uDC41\\\\uDC42\\\\uDEF7\\\\uDEF8\\\\uDF43\\\\uDF44]|\\\\uD81A[\\\\uDE6E\\\\uDE6F\\\\uDEF5\\\\uDF37\\\\uDF38\\\\uDF44]|\\\\uD81B[\\\\uDD6E\\\\uDD6F\\\\uDE98]|\\\\uD82F\\\\uDC9F|\\\\uD836\\\\uDE88)\",\n\t\t\t\t\"$Sep\": \"[\\\\x85\\\\u2028\\\\u2029]\",\n\t\t\t\t\"$Sp\": \"[\\\\t\\\\x0B\\\\f \\\\xA0\\\\u1680\\\\u2000-\\\\u200A\\\\u202F\\\\u205F\\\\u3000]\",\n\t\t\t\t\"$Upper\": \"(?:[A-Z\\\\xC0-\\\\xD6\\\\xD8-\\\\xDE\\\\u0100\\\\u0102\\\\u0104\\\\u0106\\\\u0108\\\\u010A\\\\u010C\\\\u010E\\\\u0110\\\\u0112\\\\u0114\\\\u0116\\\\u0118\\\\u011A\\\\u011C\\\\u011E\\\\u0120\\\\u0122\\\\u0124\\\\u0126\\\\u0128\\\\u012A\\\\u012C\\\\u012E\\\\u0130\\\\u0132\\\\u0134\\\\u0136\\\\u0139\\\\u013B\\\\u013D\\\\u013F\\\\u0141\\\\u0143\\\\u0145\\\\u0147\\\\u014A\\\\u014C\\\\u014E\\\\u0150\\\\u0152\\\\u0154\\\\u0156\\\\u0158\\\\u015A\\\\u015C\\\\u015E\\\\u0160\\\\u0162\\\\u0164\\\\u0166\\\\u0168\\\\u016A\\\\u016C\\\\u016E\\\\u0170\\\\u0172\\\\u0174\\\\u0176\\\\u0178\\\\u0179\\\\u017B\\\\u017D\\\\u0181\\\\u0182\\\\u0184\\\\u0186\\\\u0187\\\\u0189-\\\\u018B\\\\u018E-\\\\u0191\\\\u0193\\\\u0194\\\\u0196-\\\\u0198\\\\u019C\\\\u019D\\\\u019F\\\\u01A0\\\\u01A2\\\\u01A4\\\\u01A6\\\\u01A7\\\\u01A9\\\\u01AC\\\\u01AE\\\\u01AF\\\\u01B1-\\\\u01B3\\\\u01B5\\\\u01B7\\\\u01B8\\\\u01BC\\\\u01C4\\\\u01C5\\\\u01C7\\\\u01C8\\\\u01CA\\\\u01CB\\\\u01CD\\\\u01CF\\\\u01D1\\\\u01D3\\\\u01D5\\\\u01D7\\\\u01D9\\\\u01DB\\\\u01DE\\\\u01E0\\\\u01E2\\\\u01E4\\\\u01E6\\\\u01E8\\\\u01EA\\\\u01EC\\\\u01EE\\\\u01F1\\\\u01F2\\\\u01F4\\\\u01F6-\\\\u01F8\\\\u01FA\\\\u01FC\\\\u01FE\\\\u0200\\\\u0202\\\\u0204\\\\u0206\\\\u0208\\\\u020A\\\\u020C\\\\u020E\\\\u0210\\\\u0212\\\\u0214\\\\u0216\\\\u0218\\\\u021A\\\\u021C\\\\u021E\\\\u0220\\\\u0222\\\\u0224\\\\u0226\\\\u0228\\\\u022A\\\\u022C\\\\u022E\\\\u0230\\\\u0232\\\\u023A\\\\u023B\\\\u023D\\\\u023E\\\\u0241\\\\u0243-\\\\u0246\\\\u0248\\\\u024A\\\\u024C\\\\u024E\\\\u0370\\\\u0372\\\\u0376\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E\\\\u038F\\\\u0391-\\\\u03A1\\\\u03A3-\\\\u03AB\\\\u03CF\\\\u03D2-\\\\u03D4\\\\u03D8\\\\u03DA\\\\u03DC\\\\u03DE\\\\u03E0\\\\u03E2\\\\u03E4\\\\u03E6\\\\u03E8\\\\u03EA\\\\u03EC\\\\u03EE\\\\u03F4\\\\u03F7\\\\u03F9\\\\u03FA\\\\u03FD-\\\\u042F\\\\u0460\\\\u0462\\\\u0464\\\\u0466\\\\u0468\\\\u046A\\\\u046C\\\\u046E\\\\u0470\\\\u0472\\\\u0474\\\\u0476\\\\u0478\\\\u047A\\\\u047C\\\\u047E\\\\u0480\\\\u048A\\\\u048C\\\\u048E\\\\u0490\\\\u0492\\\\u0494\\\\u0496\\\\u0498\\\\u049A\\\\u049C\\\\u049E\\\\u04A0\\\\u04A2\\\\u04A4\\\\u04A6\\\\u04A8\\\\u04AA\\\\u04AC\\\\u04AE\\\\u04B0\\\\u04B2\\\\u04B4\\\\u04B6\\\\u04B8\\\\u04BA\\\\u04BC\\\\u04BE\\\\u04C0\\\\u04C1\\\\u04C3\\\\u04C5\\\\u04C7\\\\u04C9\\\\u04CB\\\\u04CD\\\\u04D0\\\\u04D2\\\\u04D4\\\\u04D6\\\\u04D8\\\\u04DA\\\\u04DC\\\\u04DE\\\\u04E0\\\\u04E2\\\\u04E4\\\\u04E6\\\\u04E8\\\\u04EA\\\\u04EC\\\\u04EE\\\\u04F0\\\\u04F2\\\\u04F4\\\\u04F6\\\\u04F8\\\\u04FA\\\\u04FC\\\\u04FE\\\\u0500\\\\u0502\\\\u0504\\\\u0506\\\\u0508\\\\u050A\\\\u050C\\\\u050E\\\\u0510\\\\u0512\\\\u0514\\\\u0516\\\\u0518\\\\u051A\\\\u051C\\\\u051E\\\\u0520\\\\u0522\\\\u0524\\\\u0526\\\\u0528\\\\u052A\\\\u052C\\\\u052E\\\\u0531-\\\\u0556\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u13A0-\\\\u13F5\\\\u1C89\\\\u1E00\\\\u1E02\\\\u1E04\\\\u1E06\\\\u1E08\\\\u1E0A\\\\u1E0C\\\\u1E0E\\\\u1E10\\\\u1E12\\\\u1E14\\\\u1E16\\\\u1E18\\\\u1E1A\\\\u1E1C\\\\u1E1E\\\\u1E20\\\\u1E22\\\\u1E24\\\\u1E26\\\\u1E28\\\\u1E2A\\\\u1E2C\\\\u1E2E\\\\u1E30\\\\u1E32\\\\u1E34\\\\u1E36\\\\u1E38\\\\u1E3A\\\\u1E3C\\\\u1E3E\\\\u1E40\\\\u1E42\\\\u1E44\\\\u1E46\\\\u1E48\\\\u1E4A\\\\u1E4C\\\\u1E4E\\\\u1E50\\\\u1E52\\\\u1E54\\\\u1E56\\\\u1E58\\\\u1E5A\\\\u1E5C\\\\u1E5E\\\\u1E60\\\\u1E62\\\\u1E64\\\\u1E66\\\\u1E68\\\\u1E6A\\\\u1E6C\\\\u1E6E\\\\u1E70\\\\u1E72\\\\u1E74\\\\u1E76\\\\u1E78\\\\u1E7A\\\\u1E7C\\\\u1E7E\\\\u1E80\\\\u1E82\\\\u1E84\\\\u1E86\\\\u1E88\\\\u1E8A\\\\u1E8C\\\\u1E8E\\\\u1E90\\\\u1E92\\\\u1E94\\\\u1E9E\\\\u1EA0\\\\u1EA2\\\\u1EA4\\\\u1EA6\\\\u1EA8\\\\u1EAA\\\\u1EAC\\\\u1EAE\\\\u1EB0\\\\u1EB2\\\\u1EB4\\\\u1EB6\\\\u1EB8\\\\u1EBA\\\\u1EBC\\\\u1EBE\\\\u1EC0\\\\u1EC2\\\\u1EC4\\\\u1EC6\\\\u1EC8\\\\u1ECA\\\\u1ECC\\\\u1ECE\\\\u1ED0\\\\u1ED2\\\\u1ED4\\\\u1ED6\\\\u1ED8\\\\u1EDA\\\\u1EDC\\\\u1EDE\\\\u1EE0\\\\u1EE2\\\\u1EE4\\\\u1EE6\\\\u1EE8\\\\u1EEA\\\\u1EEC\\\\u1EEE\\\\u1EF0\\\\u1EF2\\\\u1EF4\\\\u1EF6\\\\u1EF8\\\\u1EFA\\\\u1EFC\\\\u1EFE\\\\u1F08-\\\\u1F0F\\\\u1F18-\\\\u1F1D\\\\u1F28-\\\\u1F2F\\\\u1F38-\\\\u1F3F\\\\u1F48-\\\\u1F4D\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F\\\\u1F68-\\\\u1F6F\\\\u1F88-\\\\u1F8F\\\\u1F98-\\\\u1F9F\\\\u1FA8-\\\\u1FAF\\\\u1FB8-\\\\u1FBC\\\\u1FC8-\\\\u1FCC\\\\u1FD8-\\\\u1FDB\\\\u1FE8-\\\\u1FEC\\\\u1FF8-\\\\u1FFC\\\\u2102\\\\u2107\\\\u210B-\\\\u210D\\\\u2110-\\\\u2112\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u2130-\\\\u2133\\\\u213E\\\\u213F\\\\u2145\\\\u2160-\\\\u216F\\\\u2183\\\\u24B6-\\\\u24CF\\\\u2C00-\\\\u2C2F\\\\u2C60\\\\u2C62-\\\\u2C64\\\\u2C67\\\\u2C69\\\\u2C6B\\\\u2C6D-\\\\u2C70\\\\u2C72\\\\u2C75\\\\u2C7E-\\\\u2C80\\\\u2C82\\\\u2C84\\\\u2C86\\\\u2C88\\\\u2C8A\\\\u2C8C\\\\u2C8E\\\\u2C90\\\\u2C92\\\\u2C94\\\\u2C96\\\\u2C98\\\\u2C9A\\\\u2C9C\\\\u2C9E\\\\u2CA0\\\\u2CA2\\\\u2CA4\\\\u2CA6\\\\u2CA8\\\\u2CAA\\\\u2CAC\\\\u2CAE\\\\u2CB0\\\\u2CB2\\\\u2CB4\\\\u2CB6\\\\u2CB8\\\\u2CBA\\\\u2CBC\\\\u2CBE\\\\u2CC0\\\\u2CC2\\\\u2CC4\\\\u2CC6\\\\u2CC8\\\\u2CCA\\\\u2CCC\\\\u2CCE\\\\u2CD0\\\\u2CD2\\\\u2CD4\\\\u2CD6\\\\u2CD8\\\\u2CDA\\\\u2CDC\\\\u2CDE\\\\u2CE0\\\\u2CE2\\\\u2CEB\\\\u2CED\\\\u2CF2\\\\uA640\\\\uA642\\\\uA644\\\\uA646\\\\uA648\\\\uA64A\\\\uA64C\\\\uA64E\\\\uA650\\\\uA652\\\\uA654\\\\uA656\\\\uA658\\\\uA65A\\\\uA65C\\\\uA65E\\\\uA660\\\\uA662\\\\uA664\\\\uA666\\\\uA668\\\\uA66A\\\\uA66C\\\\uA680\\\\uA682\\\\uA684\\\\uA686\\\\uA688\\\\uA68A\\\\uA68C\\\\uA68E\\\\uA690\\\\uA692\\\\uA694\\\\uA696\\\\uA698\\\\uA69A\\\\uA722\\\\uA724\\\\uA726\\\\uA728\\\\uA72A\\\\uA72C\\\\uA72E\\\\uA732\\\\uA734\\\\uA736\\\\uA738\\\\uA73A\\\\uA73C\\\\uA73E\\\\uA740\\\\uA742\\\\uA744\\\\uA746\\\\uA748\\\\uA74A\\\\uA74C\\\\uA74E\\\\uA750\\\\uA752\\\\uA754\\\\uA756\\\\uA758\\\\uA75A\\\\uA75C\\\\uA75E\\\\uA760\\\\uA762\\\\uA764\\\\uA766\\\\uA768\\\\uA76A\\\\uA76C\\\\uA76E\\\\uA779\\\\uA77B\\\\uA77D\\\\uA77E\\\\uA780\\\\uA782\\\\uA784\\\\uA786\\\\uA78B\\\\uA78D\\\\uA790\\\\uA792\\\\uA796\\\\uA798\\\\uA79A\\\\uA79C\\\\uA79E\\\\uA7A0\\\\uA7A2\\\\uA7A4\\\\uA7A6\\\\uA7A8\\\\uA7AA-\\\\uA7AE\\\\uA7B0-\\\\uA7B4\\\\uA7B6\\\\uA7B8\\\\uA7BA\\\\uA7BC\\\\uA7BE\\\\uA7C0\\\\uA7C2\\\\uA7C4-\\\\uA7C7\\\\uA7C9\\\\uA7CB\\\\uA7CC\\\\uA7CE\\\\uA7D0\\\\uA7D2\\\\uA7D4\\\\uA7D6\\\\uA7D8\\\\uA7DA\\\\uA7DC\\\\uA7F5\\\\uFF21-\\\\uFF3A]|\\\\uD801[\\\\uDC00-\\\\uDC27\\\\uDCB0-\\\\uDCD3\\\\uDD70-\\\\uDD7A\\\\uDD7C-\\\\uDD8A\\\\uDD8C-\\\\uDD92\\\\uDD94\\\\uDD95]|\\\\uD803[\\\\uDC80-\\\\uDCB2\\\\uDD50-\\\\uDD65]|\\\\uD806[\\\\uDCA0-\\\\uDCBF]|\\\\uD81B[\\\\uDE40-\\\\uDE5F\\\\uDEA0-\\\\uDEB8]|\\\\uD835[\\\\uDC00-\\\\uDC19\\\\uDC34-\\\\uDC4D\\\\uDC68-\\\\uDC81\\\\uDC9C\\\\uDC9E\\\\uDC9F\\\\uDCA2\\\\uDCA5\\\\uDCA6\\\\uDCA9-\\\\uDCAC\\\\uDCAE-\\\\uDCB5\\\\uDCD0-\\\\uDCE9\\\\uDD04\\\\uDD05\\\\uDD07-\\\\uDD0A\\\\uDD0D-\\\\uDD14\\\\uDD16-\\\\uDD1C\\\\uDD38\\\\uDD39\\\\uDD3B-\\\\uDD3E\\\\uDD40-\\\\uDD44\\\\uDD46\\\\uDD4A-\\\\uDD50\\\\uDD6C-\\\\uDD85\\\\uDDA0-\\\\uDDB9\\\\uDDD4-\\\\uDDED\\\\uDE08-\\\\uDE21\\\\uDE3C-\\\\uDE55\\\\uDE70-\\\\uDE89\\\\uDEA8-\\\\uDEC0\\\\uDEE2-\\\\uDEFA\\\\uDF1C-\\\\uDF34\\\\uDF56-\\\\uDF6E\\\\uDF90-\\\\uDFA8\\\\uDFCA]|\\\\uD83A[\\\\uDD00-\\\\uDD21]|\\\\uD83C[\\\\uDD30-\\\\uDD49\\\\uDD50-\\\\uDD69\\\\uDD70-\\\\uDD89])\",\n\t\t\t\t\"$XX\": \"[\\\\0-\\\\uD7FF\\\\uE000-\\\\uFFFF]\"\n\t\t\t}\n\t\t},\n\t\t\"word\": {\n\t\t\t\"segmentRules\": {\n\t\t\t\t\"10\": {\n\t\t\t\t\t\"after\": \"$AHLetter\",\n\t\t\t\t\t\"before\": \"$Numeric(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"11\": {\n\t\t\t\t\t\"after\": \"$Numeric\",\n\t\t\t\t\t\"before\": \"$Numeric($MidNum|$MidNumLetQ)(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"12\": {\n\t\t\t\t\t\"after\": \"($MidNum|$MidNumLetQ)(?:$Extend|$Format|$ZWJ)*$Numeric\",\n\t\t\t\t\t\"before\": \"$Numeric(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"13\": {\n\t\t\t\t\t\"after\": \"$Katakana\",\n\t\t\t\t\t\"before\": \"$Katakana(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"13.1\": {\n\t\t\t\t\t\"after\": \"$ExtendNumLet\",\n\t\t\t\t\t\"before\": \"($AHLetter|$Numeric|$Katakana|$ExtendNumLet)(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"13.2\": {\n\t\t\t\t\t\"after\": \"($AHLetter|$Numeric|$Katakana)\",\n\t\t\t\t\t\"before\": \"$ExtendNumLet(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"15\": {\n\t\t\t\t\t\"after\": \"$RI\",\n\t\t\t\t\t\"before\": \"^($RI$RI)*$RI(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"16\": {\n\t\t\t\t\t\"after\": \"$RI\",\n\t\t\t\t\t\"before\": \"[^\\\\xAD\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0600-\\\\u0605\\\\u0610-\\\\u061A\\\\u061C\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DD\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u070F\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u07FD\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u0890\\\\u0891\\\\u0898-\\\\u089F\\\\u08CA-\\\\u0903\\\\u093A-\\\\u093C\\\\u093E-\\\\u094F\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981-\\\\u0983\\\\u09BC\\\\u09BE-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u09FE\\\\u0A01-\\\\u0A03\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0ABC\\\\u0ABE-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0AFA-\\\\u0AFF\\\\u0B01-\\\\u0B03\\\\u0B3C\\\\u0B3E-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B55-\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD7\\\\u0C00-\\\\u0C04\\\\u0C3C\\\\u0C3E-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81-\\\\u0C83\\\\u0CBC\\\\u0CBE-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0CF3\\\\u0D00-\\\\u0D03\\\\u0D3B\\\\u0D3C\\\\u0D3E-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D81-\\\\u0D83\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DF2\\\\u0DF3\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EBC\\\\u0EC8-\\\\u0ECE\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E\\\\u0F3F\\\\u0F71-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102B-\\\\u103E\\\\u1056-\\\\u1059\\\\u105E-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106D\\\\u1071-\\\\u1074\\\\u1082-\\\\u108D\\\\u108F\\\\u109A-\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1715\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180F\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1A17-\\\\u1A1B\\\\u1A55-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ACE\\\\u1B00-\\\\u1B04\\\\u1B34-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1B82\\\\u1BA1-\\\\u1BAD\\\\u1BE6-\\\\u1BF3\\\\u1C24-\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE8\\\\u1CED\\\\u1CF4\\\\u1CF7-\\\\u1CF9\\\\u1DC0-\\\\u1DFF\\\\u200C-\\\\u200F\\\\u202A-\\\\u202E\\\\u2060-\\\\u2064\\\\u2066-\\\\u206F\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA823-\\\\uA827\\\\uA82C\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA8FF\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA953\\\\uA980-\\\\uA983\\\\uA9B3-\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA4D\\\\uAA7B-\\\\uAA7D\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEB-\\\\uAAEF\\\\uAAF5\\\\uAAF6\\\\uABE3-\\\\uABEA\\\\uABEC\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F\\\\uFEFF\\\\uFF9E\\\\uFF9F\\\\uFFF9-\\\\uFFFB\\\\uDDFD\\\\uDEE0\\\\uDF76-\\\\uDF7A\\\\uDE01-\\\\uDE03\\\\uDE05\\\\uDE06\\\\uDE0C-\\\\uDE0F\\\\uDE38-\\\\uDE3A\\\\uDE3F\\\\uDEE5\\\\uDEE6\\\\uDD24-\\\\uDD27\\\\uDEAB\\\\uDEAC\\\\uDEFD-\\\\uDEFF\\\\uDF46-\\\\uDF50\\\\uDF82-\\\\uDF85\\\\uDC00-\\\\uDC02\\\\uDC38-\\\\uDC46\\\\uDC70\\\\uDC73\\\\uDC74\\\\uDC7F-\\\\uDC82\\\\uDCB0-\\\\uDCBA\\\\uDCBD\\\\uDCC2\\\\uDCCD\\\\uDD00-\\\\uDD02\\\\uDD27-\\\\uDD34\\\\uDD45\\\\uDD46\\\\uDD73\\\\uDD80-\\\\uDD82\\\\uDDB3-\\\\uDDC0\\\\uDDC9-\\\\uDDCC\\\\uDDCE\\\\uDDCF\\\\uDE2C-\\\\uDE37\\\\uDE3E\\\\uDE41\\\\uDEDF-\\\\uDEEA\\\\uDF00-\\\\uDF03\\\\uDF3B\\\\uDF3C\\\\uDF3E-\\\\uDF44\\\\uDF47\\\\uDF48\\\\uDF4B-\\\\uDF4D\\\\uDF57\\\\uDF62\\\\uDF63\\\\uDF66-\\\\uDF6C\\\\uDF70-\\\\uDF74\\\\uDC35-\\\\uDC46\\\\uDC5E\\\\uDCB0-\\\\uDCC3\\\\uDDAF-\\\\uDDB5\\\\uDDB8-\\\\uDDC0\\\\uDDDC\\\\uDDDD\\\\uDE30-\\\\uDE40\\\\uDEAB-\\\\uDEB7\\\\uDF1D-\\\\uDF2B\\\\uDC2C-\\\\uDC3A\\\\uDD30-\\\\uDD35\\\\uDD37\\\\uDD38\\\\uDD3B-\\\\uDD3E\\\\uDD40\\\\uDD42\\\\uDD43\\\\uDDD1-\\\\uDDD7\\\\uDDDA-\\\\uDDE0\\\\uDDE4\\\\uDE01-\\\\uDE0A\\\\uDE33-\\\\uDE39\\\\uDE3B-\\\\uDE3E\\\\uDE47\\\\uDE51-\\\\uDE5B\\\\uDE8A-\\\\uDE99\\\\uDC2F-\\\\uDC36\\\\uDC38-\\\\uDC3F\\\\uDC92-\\\\uDCA7\\\\uDCA9-\\\\uDCB6\\\\uDD31-\\\\uDD36\\\\uDD3A\\\\uDD3C\\\\uDD3D\\\\uDD3F-\\\\uDD45\\\\uDD47\\\\uDD8A-\\\\uDD8E\\\\uDD90\\\\uDD91\\\\uDD93-\\\\uDD97\\\\uDEF3-\\\\uDEF6\\\\uDF00\\\\uDF01\\\\uDF03\\\\uDF34-\\\\uDF3A\\\\uDF3E-\\\\uDF42\\\\uDC30-\\\\uDC40\\\\uDC47-\\\\uDC55\\\\uDEF0-\\\\uDEF4\\\\uDF30-\\\\uDF36\\\\uDF4F\\\\uDF51-\\\\uDF87\\\\uDF8F-\\\\uDF92\\\\uDFE4\\\\uDFF0\\\\uDFF1\\\\uDC9D\\\\uDC9E\\\\uDCA0-\\\\uDCA3\\\\uDF00-\\\\uDF2D\\\\uDF30-\\\\uDF46\\\\uDD65-\\\\uDD69\\\\uDD6D-\\\\uDD82\\\\uDD85-\\\\uDD8B\\\\uDDAA-\\\\uDDAD\\\\uDE42-\\\\uDE44\\\\uDE00-\\\\uDE36\\\\uDE3B-\\\\uDE6C\\\\uDE75\\\\uDE84\\\\uDE9B-\\\\uDE9F\\\\uDEA1-\\\\uDEAF\\\\uDC00-\\\\uDC06\\\\uDC08-\\\\uDC18\\\\uDC1B-\\\\uDC21\\\\uDC23\\\\uDC24\\\\uDC26-\\\\uDC2A\\\\uDC8F\\\\uDD30-\\\\uDD36\\\\uDEAE\\\\uDEEC-\\\\uDEEF\\\\uDCEC-\\\\uDCEF\\\\uDCD0-\\\\uDCD6\\\\uDD44-\\\\uDD4A\\\\uDDE6-\\\\uDDFF\\\\uDFFB-\\\\uDFFF\\\\uDC01\\\\uDC20-\\\\uDC7F\\\\uDD00-\\\\uDDEF]($RI$RI)*$RI(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"3\": {\n\t\t\t\t\t\"after\": \"$LF\",\n\t\t\t\t\t\"before\": \"$CR\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"3.1\": {\n\t\t\t\t\t\"before\": \"($Newline|$CR|$LF)\",\n\t\t\t\t\t\"breaks\": true\n\t\t\t\t},\n\t\t\t\t\"3.2\": {\n\t\t\t\t\t\"after\": \"($Newline|$CR|$LF)\",\n\t\t\t\t\t\"breaks\": true\n\t\t\t\t},\n\t\t\t\t\"3.3\": {\n\t\t\t\t\t\"after\": \"$ExtPict\",\n\t\t\t\t\t\"before\": \"$ZWJ\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"3.4\": {\n\t\t\t\t\t\"after\": \"$WSegSpace\",\n\t\t\t\t\t\"before\": \"$WSegSpace\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"4\": {\n\t\t\t\t\t\"after\": \"(?:$Extend|$Format|$ZWJ)\",\n\t\t\t\t\t\"before\": \"(?:(?!(?:$CR|$LF|$Newline))(?:[\\\\0-\\\\uD7FF\\\\uE000-\\\\uFFFF]|[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]))\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"5\": {\n\t\t\t\t\t\"after\": \"$AHLetter\",\n\t\t\t\t\t\"before\": \"$AHLetter(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"6\": {\n\t\t\t\t\t\"after\": \"($MidLetter|$MidNumLetQ)(?:$Extend|$Format|$ZWJ)*$AHLetter\",\n\t\t\t\t\t\"before\": \"$AHLetter(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"7\": {\n\t\t\t\t\t\"after\": \"$AHLetter\",\n\t\t\t\t\t\"before\": \"$AHLetter($MidLetter|$MidNumLetQ)(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"7.1\": {\n\t\t\t\t\t\"after\": \"$Single_Quote\",\n\t\t\t\t\t\"before\": \"$Hebrew_Letter(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"7.2\": {\n\t\t\t\t\t\"after\": \"$Double_Quote$Hebrew_Letter\",\n\t\t\t\t\t\"before\": \"$Hebrew_Letter(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"7.3\": {\n\t\t\t\t\t\"after\": \"$Hebrew_Letter\",\n\t\t\t\t\t\"before\": \"$Hebrew_Letter$Double_Quote(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"8\": {\n\t\t\t\t\t\"after\": \"$Numeric\",\n\t\t\t\t\t\"before\": \"$Numeric(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t},\n\t\t\t\t\"9\": {\n\t\t\t\t\t\"after\": \"$Numeric\",\n\t\t\t\t\t\"before\": \"$AHLetter(?:$Extend|$Format|$ZWJ)*\",\n\t\t\t\t\t\"breaks\": false\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"suppressions\": [],\n\t\t\t\"variables\": {\n\t\t\t\t\"$AHLetter\": \"(?:[A-Za-z\\\\xAA\\\\xB5\\\\xB8\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02D7\\\\u02DE-\\\\u02FF\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559-\\\\u055C\\\\u055E\\\\u0560-\\\\u0588\\\\u058A\\\\u05D0-\\\\u05EA\\\\u05EF-\\\\u05F3\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u070F\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u0860-\\\\u086A\\\\u0870-\\\\u0887\\\\u0889-\\\\u088F\\\\u08A0-\\\\u08C9\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u09FC\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0AF9\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58-\\\\u0C5A\\\\u0C5C\\\\u0C5D\\\\u0C60\\\\u0C61\\\\u0C80\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDC-\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D04-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D54-\\\\u0D56\\\\u0D5F-\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F5\\\\u13F8-\\\\u13FD\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u1711\\\\u171F-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1820-\\\\u1878\\\\u1880-\\\\u1884\\\\u1887-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1A00-\\\\u1A16\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4C\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1C80-\\\\u1C8A\\\\u1C90-\\\\u1CBA\\\\u1CBD-\\\\u1CBF\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF3\\\\u1CF5\\\\u1CF6\\\\u1CFA\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u24B6-\\\\u24E9\\\\u2C00-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005\\\\u303B\\\\u303C\\\\u3105-\\\\u312F\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BF\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA708-\\\\uA7DC\\\\uA7F1-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA8FD\\\\uA8FE\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB69\\\\uAB70-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFFA0-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]|\\\\uD800[\\\\uDC00-\\\\uDC0B\\\\uDC0D-\\\\uDC26\\\\uDC28-\\\\uDC3A\\\\uDC3C\\\\uDC3D\\\\uDC3F-\\\\uDC4D\\\\uDC50-\\\\uDC5D\\\\uDC80-\\\\uDCFA\\\\uDD40-\\\\uDD74\\\\uDE80-\\\\uDE9C\\\\uDEA0-\\\\uDED0\\\\uDF00-\\\\uDF1F\\\\uDF2D-\\\\uDF4A\\\\uDF50-\\\\uDF75\\\\uDF80-\\\\uDF9D\\\\uDFA0-\\\\uDFC3\\\\uDFC8-\\\\uDFCF\\\\uDFD1-\\\\uDFD5]|\\\\uD801[\\\\uDC00-\\\\uDC9D\\\\uDCB0-\\\\uDCD3\\\\uDCD8-\\\\uDCFB\\\\uDD00-\\\\uDD27\\\\uDD30-\\\\uDD63\\\\uDD70-\\\\uDD7A\\\\uDD7C-\\\\uDD8A\\\\uDD8C-\\\\uDD92\\\\uDD94\\\\uDD95\\\\uDD97-\\\\uDDA1\\\\uDDA3-\\\\uDDB1\\\\uDDB3-\\\\uDDB9\\\\uDDBB\\\\uDDBC\\\\uDDC0-\\\\uDDF3\\\\uDE00-\\\\uDF36\\\\uDF40-\\\\uDF55\\\\uDF60-\\\\uDF67\\\\uDF80-\\\\uDF85\\\\uDF87-\\\\uDFB0\\\\uDFB2-\\\\uDFBA]|\\\\uD802[\\\\uDC00-\\\\uDC05\\\\uDC08\\\\uDC0A-\\\\uDC35\\\\uDC37\\\\uDC38\\\\uDC3C\\\\uDC3F-\\\\uDC55\\\\uDC60-\\\\uDC76\\\\uDC80-\\\\uDC9E\\\\uDCE0-\\\\uDCF2\\\\uDCF4\\\\uDCF5\\\\uDD00-\\\\uDD15\\\\uDD20-\\\\uDD39\\\\uDD40-\\\\uDD59\\\\uDD80-\\\\uDDB7\\\\uDDBE\\\\uDDBF\\\\uDE00\\\\uDE10-\\\\uDE13\\\\uDE15-\\\\uDE17\\\\uDE19-\\\\uDE35\\\\uDE60-\\\\uDE7C\\\\uDE80-\\\\uDE9C\\\\uDEC0-\\\\uDEC7\\\\uDEC9-\\\\uDEE4\\\\uDF00-\\\\uDF35\\\\uDF40-\\\\uDF55\\\\uDF60-\\\\uDF72\\\\uDF80-\\\\uDF91]|\\\\uD803[\\\\uDC00-\\\\uDC48\\\\uDC80-\\\\uDCB2\\\\uDCC0-\\\\uDCF2\\\\uDD00-\\\\uDD23\\\\uDD4A-\\\\uDD65\\\\uDD6F-\\\\uDD85\\\\uDE80-\\\\uDEA9\\\\uDEB0\\\\uDEB1\\\\uDEC2-\\\\uDEC7\\\\uDF00-\\\\uDF1C\\\\uDF27\\\\uDF30-\\\\uDF45\\\\uDF70-\\\\uDF81\\\\uDFB0-\\\\uDFC4\\\\uDFE0-\\\\uDFF6]|\\\\uD804[\\\\uDC03-\\\\uDC37\\\\uDC71\\\\uDC72\\\\uDC75\\\\uDC83-\\\\uDCAF\\\\uDCD0-\\\\uDCE8\\\\uDD03-\\\\uDD26\\\\uDD44\\\\uDD47\\\\uDD50-\\\\uDD72\\\\uDD76\\\\uDD83-\\\\uDDB2\\\\uDDC1-\\\\uDDC4\\\\uDDDA\\\\uDDDC\\\\uDE00-\\\\uDE11\\\\uDE13-\\\\uDE2B\\\\uDE3F\\\\uDE40\\\\uDE80-\\\\uDE86\\\\uDE88\\\\uDE8A-\\\\uDE8D\\\\uDE8F-\\\\uDE9D\\\\uDE9F-\\\\uDEA8\\\\uDEB0-\\\\uDEDE\\\\uDF05-\\\\uDF0C\\\\uDF0F\\\\uDF10\\\\uDF13-\\\\uDF28\\\\uDF2A-\\\\uDF30\\\\uDF32\\\\uDF33\\\\uDF35-\\\\uDF39\\\\uDF3D\\\\uDF50\\\\uDF5D-\\\\uDF61\\\\uDF80-\\\\uDF89\\\\uDF8B\\\\uDF8E\\\\uDF90-\\\\uDFB5\\\\uDFB7\\\\uDFD1\\\\uDFD3]|\\\\uD805[\\\\uDC00-\\\\uDC34\\\\uDC47-\\\\uDC4A\\\\uDC5F-\\\\uDC61\\\\uDC80-\\\\uDCAF\\\\uDCC4\\\\uDCC5\\\\uDCC7\\\\uDD80-\\\\uDDAE\\\\uDDD8-\\\\uDDDB\\\\uDE00-\\\\uDE2F\\\\uDE44\\\\uDE80-\\\\uDEAA\\\\uDEB8]|\\\\uD806[\\\\uDC00-\\\\uDC2B\\\\uDCA0-\\\\uDCDF\\\\uDCFF-\\\\uDD06\\\\uDD09\\\\uDD0C-\\\\uDD13\\\\uDD15\\\\uDD16\\\\uDD18-\\\\uDD2F\\\\uDD3F\\\\uDD41\\\\uDDA0-\\\\uDDA7\\\\uDDAA-\\\\uDDD0\\\\uDDE1\\\\uDDE3\\\\uDE00\\\\uDE0B-\\\\uDE32\\\\uDE3A\\\\uDE50\\\\uDE5C-\\\\uDE89\\\\uDE9D\\\\uDEB0-\\\\uDEF8\\\\uDFC0-\\\\uDFE0]|\\\\uD807[\\\\uDC00-\\\\uDC08\\\\uDC0A-\\\\uDC2E\\\\uDC40\\\\uDC72-\\\\uDC8F\\\\uDD00-\\\\uDD06\\\\uDD08\\\\uDD09\\\\uDD0B-\\\\uDD30\\\\uDD46\\\\uDD60-\\\\uDD65\\\\uDD67\\\\uDD68\\\\uDD6A-\\\\uDD89\\\\uDD98\\\\uDDB0-\\\\uDDDB\\\\uDEE0-\\\\uDEF2\\\\uDF02\\\\uDF04-\\\\uDF10\\\\uDF12-\\\\uDF33\\\\uDFB0]|\\\\uD808[\\\\uDC00-\\\\uDF99]|\\\\uD809[\\\\uDC00-\\\\uDC6E\\\\uDC80-\\\\uDD43]|\\\\uD80B[\\\\uDF90-\\\\uDFF0]|[\\\\uD80C\\\\uD80E\\\\uD80F][\\\\uDC00-\\\\uDFFF]|\\\\uD80D[\\\\uDC00-\\\\uDC2F\\\\uDC41-\\\\uDC46\\\\uDC60-\\\\uDFFF]|\\\\uD810[\\\\uDC00-\\\\uDFFA]|\\\\uD811[\\\\uDC00-\\\\uDE46]|\\\\uD818[\\\\uDD00-\\\\uDD1D]|\\\\uD81A[\\\\uDC00-\\\\uDE38\\\\uDE40-\\\\uDE5E\\\\uDE70-\\\\uDEBE\\\\uDED0-\\\\uDEED\\\\uDF00-\\\\uDF2F\\\\uDF40-\\\\uDF43\\\\uDF63-\\\\uDF77\\\\uDF7D-\\\\uDF8F]|\\\\uD81B[\\\\uDD40-\\\\uDD6C\\\\uDE40-\\\\uDE7F\\\\uDEA0-\\\\uDEB8\\\\uDEBB-\\\\uDED3\\\\uDF00-\\\\uDF4A\\\\uDF50\\\\uDF93-\\\\uDF9F\\\\uDFE0\\\\uDFE1\\\\uDFE3]|\\\\uD82F[\\\\uDC00-\\\\uDC6A\\\\uDC70-\\\\uDC7C\\\\uDC80-\\\\uDC88\\\\uDC90-\\\\uDC99]|\\\\uD835[\\\\uDC00-\\\\uDC54\\\\uDC56-\\\\uDC9C\\\\uDC9E\\\\uDC9F\\\\uDCA2\\\\uDCA5\\\\uDCA6\\\\uDCA9-\\\\uDCAC\\\\uDCAE-\\\\uDCB9\\\\uDCBB\\\\uDCBD-\\\\uDCC3\\\\uDCC5-\\\\uDD05\\\\uDD07-\\\\uDD0A\\\\uDD0D-\\\\uDD14\\\\uDD16-\\\\uDD1C\\\\uDD1E-\\\\uDD39\\\\uDD3B-\\\\uDD3E\\\\uDD40-\\\\uDD44\\\\uDD46\\\\uDD4A-\\\\uDD50\\\\uDD52-\\\\uDEA5\\\\uDEA8-\\\\uDEC0\\\\uDEC2-\\\\uDEDA\\\\uDEDC-\\\\uDEFA\\\\uDEFC-\\\\uDF14\\\\uDF16-\\\\uDF34\\\\uDF36-\\\\uDF4E\\\\uDF50-\\\\uDF6E\\\\uDF70-\\\\uDF88\\\\uDF8A-\\\\uDFA8\\\\uDFAA-\\\\uDFC2\\\\uDFC4-\\\\uDFCB]|\\\\uD837[\\\\uDF00-\\\\uDF1E\\\\uDF25-\\\\uDF2A]|\\\\uD838[\\\\uDC30-\\\\uDC6D\\\\uDD00-\\\\uDD2C\\\\uDD37-\\\\uDD3D\\\\uDD4E\\\\uDE90-\\\\uDEAD\\\\uDEC0-\\\\uDEEB]|\\\\uD839[\\\\uDCD0-\\\\uDCEB\\\\uDDD0-\\\\uDDED\\\\uDDF0\\\\uDEC0-\\\\uDEDE\\\\uDEE0-\\\\uDEE2\\\\uDEE4\\\\uDEE5\\\\uDEE7-\\\\uDEED\\\\uDEF0-\\\\uDEF4\\\\uDEFE\\\\uDEFF\\\\uDFE0-\\\\uDFE6\\\\uDFE8-\\\\uDFEB\\\\uDFED\\\\uDFEE\\\\uDFF0-\\\\uDFFE]|\\\\uD83A[\\\\uDC00-\\\\uDCC4\\\\uDD00-\\\\uDD43\\\\uDD4B]|\\\\uD83B[\\\\uDE00-\\\\uDE03\\\\uDE05-\\\\uDE1F\\\\uDE21\\\\uDE22\\\\uDE24\\\\uDE27\\\\uDE29-\\\\uDE32\\\\uDE34-\\\\uDE37\\\\uDE39\\\\uDE3B\\\\uDE42\\\\uDE47\\\\uDE49\\\\uDE4B\\\\uDE4D-\\\\uDE4F\\\\uDE51\\\\uDE52\\\\uDE54\\\\uDE57\\\\uDE59\\\\uDE5B\\\\uDE5D\\\\uDE5F\\\\uDE61\\\\uDE62\\\\uDE64\\\\uDE67-\\\\uDE6A\\\\uDE6C-\\\\uDE72\\\\uDE74-\\\\uDE77\\\\uDE79-\\\\uDE7C\\\\uDE7E\\\\uDE80-\\\\uDE89\\\\uDE8B-\\\\uDE9B\\\\uDEA1-\\\\uDEA3\\\\uDEA5-\\\\uDEA9\\\\uDEAB-\\\\uDEBB]|\\\\uD83C[\\\\uDD30-\\\\uDD49\\\\uDD50-\\\\uDD69\\\\uDD70-\\\\uDD89])\",\n\t\t\t\t\"$ALetter\": \"(?:[A-Za-z\\\\xAA\\\\xB5\\\\xB8\\\\xBA\\\\xC0-\\\\xD6\\\\xD8-\\\\xF6\\\\xF8-\\\\u02D7\\\\u02DE-\\\\u02FF\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037A-\\\\u037D\\\\u037F\\\\u0386\\\\u0388-\\\\u038A\\\\u038C\\\\u038E-\\\\u03A1\\\\u03A3-\\\\u03F5\\\\u03F7-\\\\u0481\\\\u048A-\\\\u052F\\\\u0531-\\\\u0556\\\\u0559-\\\\u055C\\\\u055E\\\\u0560-\\\\u0588\\\\u058A\\\\u05F3\\\\u0620-\\\\u064A\\\\u066E\\\\u066F\\\\u0671-\\\\u06D3\\\\u06D5\\\\u06E5\\\\u06E6\\\\u06EE\\\\u06EF\\\\u06FA-\\\\u06FC\\\\u06FF\\\\u070F\\\\u0710\\\\u0712-\\\\u072F\\\\u074D-\\\\u07A5\\\\u07B1\\\\u07CA-\\\\u07EA\\\\u07F4\\\\u07F5\\\\u07FA\\\\u0800-\\\\u0815\\\\u081A\\\\u0824\\\\u0828\\\\u0840-\\\\u0858\\\\u0860-\\\\u086A\\\\u0870-\\\\u0887\\\\u0889-\\\\u088F\\\\u08A0-\\\\u08C9\\\\u0904-\\\\u0939\\\\u093D\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0980\\\\u0985-\\\\u098C\\\\u098F\\\\u0990\\\\u0993-\\\\u09A8\\\\u09AA-\\\\u09B0\\\\u09B2\\\\u09B6-\\\\u09B9\\\\u09BD\\\\u09CE\\\\u09DC\\\\u09DD\\\\u09DF-\\\\u09E1\\\\u09F0\\\\u09F1\\\\u09FC\\\\u0A05-\\\\u0A0A\\\\u0A0F\\\\u0A10\\\\u0A13-\\\\u0A28\\\\u0A2A-\\\\u0A30\\\\u0A32\\\\u0A33\\\\u0A35\\\\u0A36\\\\u0A38\\\\u0A39\\\\u0A59-\\\\u0A5C\\\\u0A5E\\\\u0A72-\\\\u0A74\\\\u0A85-\\\\u0A8D\\\\u0A8F-\\\\u0A91\\\\u0A93-\\\\u0AA8\\\\u0AAA-\\\\u0AB0\\\\u0AB2\\\\u0AB3\\\\u0AB5-\\\\u0AB9\\\\u0ABD\\\\u0AD0\\\\u0AE0\\\\u0AE1\\\\u0AF9\\\\u0B05-\\\\u0B0C\\\\u0B0F\\\\u0B10\\\\u0B13-\\\\u0B28\\\\u0B2A-\\\\u0B30\\\\u0B32\\\\u0B33\\\\u0B35-\\\\u0B39\\\\u0B3D\\\\u0B5C\\\\u0B5D\\\\u0B5F-\\\\u0B61\\\\u0B71\\\\u0B83\\\\u0B85-\\\\u0B8A\\\\u0B8E-\\\\u0B90\\\\u0B92-\\\\u0B95\\\\u0B99\\\\u0B9A\\\\u0B9C\\\\u0B9E\\\\u0B9F\\\\u0BA3\\\\u0BA4\\\\u0BA8-\\\\u0BAA\\\\u0BAE-\\\\u0BB9\\\\u0BD0\\\\u0C05-\\\\u0C0C\\\\u0C0E-\\\\u0C10\\\\u0C12-\\\\u0C28\\\\u0C2A-\\\\u0C39\\\\u0C3D\\\\u0C58-\\\\u0C5A\\\\u0C5C\\\\u0C5D\\\\u0C60\\\\u0C61\\\\u0C80\\\\u0C85-\\\\u0C8C\\\\u0C8E-\\\\u0C90\\\\u0C92-\\\\u0CA8\\\\u0CAA-\\\\u0CB3\\\\u0CB5-\\\\u0CB9\\\\u0CBD\\\\u0CDC-\\\\u0CDE\\\\u0CE0\\\\u0CE1\\\\u0CF1\\\\u0CF2\\\\u0D04-\\\\u0D0C\\\\u0D0E-\\\\u0D10\\\\u0D12-\\\\u0D3A\\\\u0D3D\\\\u0D4E\\\\u0D54-\\\\u0D56\\\\u0D5F-\\\\u0D61\\\\u0D7A-\\\\u0D7F\\\\u0D85-\\\\u0D96\\\\u0D9A-\\\\u0DB1\\\\u0DB3-\\\\u0DBB\\\\u0DBD\\\\u0DC0-\\\\u0DC6\\\\u0F00\\\\u0F40-\\\\u0F47\\\\u0F49-\\\\u0F6C\\\\u0F88-\\\\u0F8C\\\\u10A0-\\\\u10C5\\\\u10C7\\\\u10CD\\\\u10D0-\\\\u10FA\\\\u10FC-\\\\u1248\\\\u124A-\\\\u124D\\\\u1250-\\\\u1256\\\\u1258\\\\u125A-\\\\u125D\\\\u1260-\\\\u1288\\\\u128A-\\\\u128D\\\\u1290-\\\\u12B0\\\\u12B2-\\\\u12B5\\\\u12B8-\\\\u12BE\\\\u12C0\\\\u12C2-\\\\u12C5\\\\u12C8-\\\\u12D6\\\\u12D8-\\\\u1310\\\\u1312-\\\\u1315\\\\u1318-\\\\u135A\\\\u1380-\\\\u138F\\\\u13A0-\\\\u13F5\\\\u13F8-\\\\u13FD\\\\u1401-\\\\u166C\\\\u166F-\\\\u167F\\\\u1681-\\\\u169A\\\\u16A0-\\\\u16EA\\\\u16EE-\\\\u16F8\\\\u1700-\\\\u1711\\\\u171F-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176C\\\\u176E-\\\\u1770\\\\u1820-\\\\u1878\\\\u1880-\\\\u1884\\\\u1887-\\\\u18A8\\\\u18AA\\\\u18B0-\\\\u18F5\\\\u1900-\\\\u191E\\\\u1A00-\\\\u1A16\\\\u1B05-\\\\u1B33\\\\u1B45-\\\\u1B4C\\\\u1B83-\\\\u1BA0\\\\u1BAE\\\\u1BAF\\\\u1BBA-\\\\u1BE5\\\\u1C00-\\\\u1C23\\\\u1C4D-\\\\u1C4F\\\\u1C5A-\\\\u1C7D\\\\u1C80-\\\\u1C8A\\\\u1C90-\\\\u1CBA\\\\u1CBD-\\\\u1CBF\\\\u1CE9-\\\\u1CEC\\\\u1CEE-\\\\u1CF3\\\\u1CF5\\\\u1CF6\\\\u1CFA\\\\u1D00-\\\\u1DBF\\\\u1E00-\\\\u1F15\\\\u1F18-\\\\u1F1D\\\\u1F20-\\\\u1F45\\\\u1F48-\\\\u1F4D\\\\u1F50-\\\\u1F57\\\\u1F59\\\\u1F5B\\\\u1F5D\\\\u1F5F-\\\\u1F7D\\\\u1F80-\\\\u1FB4\\\\u1FB6-\\\\u1FBC\\\\u1FBE\\\\u1FC2-\\\\u1FC4\\\\u1FC6-\\\\u1FCC\\\\u1FD0-\\\\u1FD3\\\\u1FD6-\\\\u1FDB\\\\u1FE0-\\\\u1FEC\\\\u1FF2-\\\\u1FF4\\\\u1FF6-\\\\u1FFC\\\\u2071\\\\u207F\\\\u2090-\\\\u209C\\\\u2102\\\\u2107\\\\u210A-\\\\u2113\\\\u2115\\\\u2119-\\\\u211D\\\\u2124\\\\u2126\\\\u2128\\\\u212A-\\\\u212D\\\\u212F-\\\\u2139\\\\u213C-\\\\u213F\\\\u2145-\\\\u2149\\\\u214E\\\\u2160-\\\\u2188\\\\u24B6-\\\\u24E9\\\\u2C00-\\\\u2CE4\\\\u2CEB-\\\\u2CEE\\\\u2CF2\\\\u2CF3\\\\u2D00-\\\\u2D25\\\\u2D27\\\\u2D2D\\\\u2D30-\\\\u2D67\\\\u2D6F\\\\u2D80-\\\\u2D96\\\\u2DA0-\\\\u2DA6\\\\u2DA8-\\\\u2DAE\\\\u2DB0-\\\\u2DB6\\\\u2DB8-\\\\u2DBE\\\\u2DC0-\\\\u2DC6\\\\u2DC8-\\\\u2DCE\\\\u2DD0-\\\\u2DD6\\\\u2DD8-\\\\u2DDE\\\\u2E2F\\\\u3005\\\\u303B\\\\u303C\\\\u3105-\\\\u312F\\\\u3131-\\\\u318E\\\\u31A0-\\\\u31BF\\\\uA000-\\\\uA48C\\\\uA4D0-\\\\uA4FD\\\\uA500-\\\\uA60C\\\\uA610-\\\\uA61F\\\\uA62A\\\\uA62B\\\\uA640-\\\\uA66E\\\\uA67F-\\\\uA69D\\\\uA6A0-\\\\uA6EF\\\\uA708-\\\\uA7DC\\\\uA7F1-\\\\uA801\\\\uA803-\\\\uA805\\\\uA807-\\\\uA80A\\\\uA80C-\\\\uA822\\\\uA840-\\\\uA873\\\\uA882-\\\\uA8B3\\\\uA8F2-\\\\uA8F7\\\\uA8FB\\\\uA8FD\\\\uA8FE\\\\uA90A-\\\\uA925\\\\uA930-\\\\uA946\\\\uA960-\\\\uA97C\\\\uA984-\\\\uA9B2\\\\uA9CF\\\\uAA00-\\\\uAA28\\\\uAA40-\\\\uAA42\\\\uAA44-\\\\uAA4B\\\\uAAE0-\\\\uAAEA\\\\uAAF2-\\\\uAAF4\\\\uAB01-\\\\uAB06\\\\uAB09-\\\\uAB0E\\\\uAB11-\\\\uAB16\\\\uAB20-\\\\uAB26\\\\uAB28-\\\\uAB2E\\\\uAB30-\\\\uAB69\\\\uAB70-\\\\uABE2\\\\uAC00-\\\\uD7A3\\\\uD7B0-\\\\uD7C6\\\\uD7CB-\\\\uD7FB\\\\uFB00-\\\\uFB06\\\\uFB13-\\\\uFB17\\\\uFB50-\\\\uFBB1\\\\uFBD3-\\\\uFD3D\\\\uFD50-\\\\uFD8F\\\\uFD92-\\\\uFDC7\\\\uFDF0-\\\\uFDFB\\\\uFE70-\\\\uFE74\\\\uFE76-\\\\uFEFC\\\\uFF21-\\\\uFF3A\\\\uFF41-\\\\uFF5A\\\\uFFA0-\\\\uFFBE\\\\uFFC2-\\\\uFFC7\\\\uFFCA-\\\\uFFCF\\\\uFFD2-\\\\uFFD7\\\\uFFDA-\\\\uFFDC]|\\\\uD800[\\\\uDC00-\\\\uDC0B\\\\uDC0D-\\\\uDC26\\\\uDC28-\\\\uDC3A\\\\uDC3C\\\\uDC3D\\\\uDC3F-\\\\uDC4D\\\\uDC50-\\\\uDC5D\\\\uDC80-\\\\uDCFA\\\\uDD40-\\\\uDD74\\\\uDE80-\\\\uDE9C\\\\uDEA0-\\\\uDED0\\\\uDF00-\\\\uDF1F\\\\uDF2D-\\\\uDF4A\\\\uDF50-\\\\uDF75\\\\uDF80-\\\\uDF9D\\\\uDFA0-\\\\uDFC3\\\\uDFC8-\\\\uDFCF\\\\uDFD1-\\\\uDFD5]|\\\\uD801[\\\\uDC00-\\\\uDC9D\\\\uDCB0-\\\\uDCD3\\\\uDCD8-\\\\uDCFB\\\\uDD00-\\\\uDD27\\\\uDD30-\\\\uDD63\\\\uDD70-\\\\uDD7A\\\\uDD7C-\\\\uDD8A\\\\uDD8C-\\\\uDD92\\\\uDD94\\\\uDD95\\\\uDD97-\\\\uDDA1\\\\uDDA3-\\\\uDDB1\\\\uDDB3-\\\\uDDB9\\\\uDDBB\\\\uDDBC\\\\uDDC0-\\\\uDDF3\\\\uDE00-\\\\uDF36\\\\uDF40-\\\\uDF55\\\\uDF60-\\\\uDF67\\\\uDF80-\\\\uDF85\\\\uDF87-\\\\uDFB0\\\\uDFB2-\\\\uDFBA]|\\\\uD802[\\\\uDC00-\\\\uDC05\\\\uDC08\\\\uDC0A-\\\\uDC35\\\\uDC37\\\\uDC38\\\\uDC3C\\\\uDC3F-\\\\uDC55\\\\uDC60-\\\\uDC76\\\\uDC80-\\\\uDC9E\\\\uDCE0-\\\\uDCF2\\\\uDCF4\\\\uDCF5\\\\uDD00-\\\\uDD15\\\\uDD20-\\\\uDD39\\\\uDD40-\\\\uDD59\\\\uDD80-\\\\uDDB7\\\\uDDBE\\\\uDDBF\\\\uDE00\\\\uDE10-\\\\uDE13\\\\uDE15-\\\\uDE17\\\\uDE19-\\\\uDE35\\\\uDE60-\\\\uDE7C\\\\uDE80-\\\\uDE9C\\\\uDEC0-\\\\uDEC7\\\\uDEC9-\\\\uDEE4\\\\uDF00-\\\\uDF35\\\\uDF40-\\\\uDF55\\\\uDF60-\\\\uDF72\\\\uDF80-\\\\uDF91]|\\\\uD803[\\\\uDC00-\\\\uDC48\\\\uDC80-\\\\uDCB2\\\\uDCC0-\\\\uDCF2\\\\uDD00-\\\\uDD23\\\\uDD4A-\\\\uDD65\\\\uDD6F-\\\\uDD85\\\\uDE80-\\\\uDEA9\\\\uDEB0\\\\uDEB1\\\\uDEC2-\\\\uDEC7\\\\uDF00-\\\\uDF1C\\\\uDF27\\\\uDF30-\\\\uDF45\\\\uDF70-\\\\uDF81\\\\uDFB0-\\\\uDFC4\\\\uDFE0-\\\\uDFF6]|\\\\uD804[\\\\uDC03-\\\\uDC37\\\\uDC71\\\\uDC72\\\\uDC75\\\\uDC83-\\\\uDCAF\\\\uDCD0-\\\\uDCE8\\\\uDD03-\\\\uDD26\\\\uDD44\\\\uDD47\\\\uDD50-\\\\uDD72\\\\uDD76\\\\uDD83-\\\\uDDB2\\\\uDDC1-\\\\uDDC4\\\\uDDDA\\\\uDDDC\\\\uDE00-\\\\uDE11\\\\uDE13-\\\\uDE2B\\\\uDE3F\\\\uDE40\\\\uDE80-\\\\uDE86\\\\uDE88\\\\uDE8A-\\\\uDE8D\\\\uDE8F-\\\\uDE9D\\\\uDE9F-\\\\uDEA8\\\\uDEB0-\\\\uDEDE\\\\uDF05-\\\\uDF0C\\\\uDF0F\\\\uDF10\\\\uDF13-\\\\uDF28\\\\uDF2A-\\\\uDF30\\\\uDF32\\\\uDF33\\\\uDF35-\\\\uDF39\\\\uDF3D\\\\uDF50\\\\uDF5D-\\\\uDF61\\\\uDF80-\\\\uDF89\\\\uDF8B\\\\uDF8E\\\\uDF90-\\\\uDFB5\\\\uDFB7\\\\uDFD1\\\\uDFD3]|\\\\uD805[\\\\uDC00-\\\\uDC34\\\\uDC47-\\\\uDC4A\\\\uDC5F-\\\\uDC61\\\\uDC80-\\\\uDCAF\\\\uDCC4\\\\uDCC5\\\\uDCC7\\\\uDD80-\\\\uDDAE\\\\uDDD8-\\\\uDDDB\\\\uDE00-\\\\uDE2F\\\\uDE44\\\\uDE80-\\\\uDEAA\\\\uDEB8]|\\\\uD806[\\\\uDC00-\\\\uDC2B\\\\uDCA0-\\\\uDCDF\\\\uDCFF-\\\\uDD06\\\\uDD09\\\\uDD0C-\\\\uDD13\\\\uDD15\\\\uDD16\\\\uDD18-\\\\uDD2F\\\\uDD3F\\\\uDD41\\\\uDDA0-\\\\uDDA7\\\\uDDAA-\\\\uDDD0\\\\uDDE1\\\\uDDE3\\\\uDE00\\\\uDE0B-\\\\uDE32\\\\uDE3A\\\\uDE50\\\\uDE5C-\\\\uDE89\\\\uDE9D\\\\uDEB0-\\\\uDEF8\\\\uDFC0-\\\\uDFE0]|\\\\uD807[\\\\uDC00-\\\\uDC08\\\\uDC0A-\\\\uDC2E\\\\uDC40\\\\uDC72-\\\\uDC8F\\\\uDD00-\\\\uDD06\\\\uDD08\\\\uDD09\\\\uDD0B-\\\\uDD30\\\\uDD46\\\\uDD60-\\\\uDD65\\\\uDD67\\\\uDD68\\\\uDD6A-\\\\uDD89\\\\uDD98\\\\uDDB0-\\\\uDDDB\\\\uDEE0-\\\\uDEF2\\\\uDF02\\\\uDF04-\\\\uDF10\\\\uDF12-\\\\uDF33\\\\uDFB0]|\\\\uD808[\\\\uDC00-\\\\uDF99]|\\\\uD809[\\\\uDC00-\\\\uDC6E\\\\uDC80-\\\\uDD43]|\\\\uD80B[\\\\uDF90-\\\\uDFF0]|[\\\\uD80C\\\\uD80E\\\\uD80F][\\\\uDC00-\\\\uDFFF]|\\\\uD80D[\\\\uDC00-\\\\uDC2F\\\\uDC41-\\\\uDC46\\\\uDC60-\\\\uDFFF]|\\\\uD810[\\\\uDC00-\\\\uDFFA]|\\\\uD811[\\\\uDC00-\\\\uDE46]|\\\\uD818[\\\\uDD00-\\\\uDD1D]|\\\\uD81A[\\\\uDC00-\\\\uDE38\\\\uDE40-\\\\uDE5E\\\\uDE70-\\\\uDEBE\\\\uDED0-\\\\uDEED\\\\uDF00-\\\\uDF2F\\\\uDF40-\\\\uDF43\\\\uDF63-\\\\uDF77\\\\uDF7D-\\\\uDF8F]|\\\\uD81B[\\\\uDD40-\\\\uDD6C\\\\uDE40-\\\\uDE7F\\\\uDEA0-\\\\uDEB8\\\\uDEBB-\\\\uDED3\\\\uDF00-\\\\uDF4A\\\\uDF50\\\\uDF93-\\\\uDF9F\\\\uDFE0\\\\uDFE1\\\\uDFE3]|\\\\uD82F[\\\\uDC00-\\\\uDC6A\\\\uDC70-\\\\uDC7C\\\\uDC80-\\\\uDC88\\\\uDC90-\\\\uDC99]|\\\\uD835[\\\\uDC00-\\\\uDC54\\\\uDC56-\\\\uDC9C\\\\uDC9E\\\\uDC9F\\\\uDCA2\\\\uDCA5\\\\uDCA6\\\\uDCA9-\\\\uDCAC\\\\uDCAE-\\\\uDCB9\\\\uDCBB\\\\uDCBD-\\\\uDCC3\\\\uDCC5-\\\\uDD05\\\\uDD07-\\\\uDD0A\\\\uDD0D-\\\\uDD14\\\\uDD16-\\\\uDD1C\\\\uDD1E-\\\\uDD39\\\\uDD3B-\\\\uDD3E\\\\uDD40-\\\\uDD44\\\\uDD46\\\\uDD4A-\\\\uDD50\\\\uDD52-\\\\uDEA5\\\\uDEA8-\\\\uDEC0\\\\uDEC2-\\\\uDEDA\\\\uDEDC-\\\\uDEFA\\\\uDEFC-\\\\uDF14\\\\uDF16-\\\\uDF34\\\\uDF36-\\\\uDF4E\\\\uDF50-\\\\uDF6E\\\\uDF70-\\\\uDF88\\\\uDF8A-\\\\uDFA8\\\\uDFAA-\\\\uDFC2\\\\uDFC4-\\\\uDFCB]|\\\\uD837[\\\\uDF00-\\\\uDF1E\\\\uDF25-\\\\uDF2A]|\\\\uD838[\\\\uDC30-\\\\uDC6D\\\\uDD00-\\\\uDD2C\\\\uDD37-\\\\uDD3D\\\\uDD4E\\\\uDE90-\\\\uDEAD\\\\uDEC0-\\\\uDEEB]|\\\\uD839[\\\\uDCD0-\\\\uDCEB\\\\uDDD0-\\\\uDDED\\\\uDDF0\\\\uDEC0-\\\\uDEDE\\\\uDEE0-\\\\uDEE2\\\\uDEE4\\\\uDEE5\\\\uDEE7-\\\\uDEED\\\\uDEF0-\\\\uDEF4\\\\uDEFE\\\\uDEFF\\\\uDFE0-\\\\uDFE6\\\\uDFE8-\\\\uDFEB\\\\uDFED\\\\uDFEE\\\\uDFF0-\\\\uDFFE]|\\\\uD83A[\\\\uDC00-\\\\uDCC4\\\\uDD00-\\\\uDD43\\\\uDD4B]|\\\\uD83B[\\\\uDE00-\\\\uDE03\\\\uDE05-\\\\uDE1F\\\\uDE21\\\\uDE22\\\\uDE24\\\\uDE27\\\\uDE29-\\\\uDE32\\\\uDE34-\\\\uDE37\\\\uDE39\\\\uDE3B\\\\uDE42\\\\uDE47\\\\uDE49\\\\uDE4B\\\\uDE4D-\\\\uDE4F\\\\uDE51\\\\uDE52\\\\uDE54\\\\uDE57\\\\uDE59\\\\uDE5B\\\\uDE5D\\\\uDE5F\\\\uDE61\\\\uDE62\\\\uDE64\\\\uDE67-\\\\uDE6A\\\\uDE6C-\\\\uDE72\\\\uDE74-\\\\uDE77\\\\uDE79-\\\\uDE7C\\\\uDE7E\\\\uDE80-\\\\uDE89\\\\uDE8B-\\\\uDE9B\\\\uDEA1-\\\\uDEA3\\\\uDEA5-\\\\uDEA9\\\\uDEAB-\\\\uDEBB]|\\\\uD83C[\\\\uDD30-\\\\uDD49\\\\uDD50-\\\\uDD69\\\\uDD70-\\\\uDD89])\",\n\t\t\t\t\"$CR\": \"\\\\r\",\n\t\t\t\t\"$Double_Quote\": \"\\\"\",\n\t\t\t\t\"$ExtPict\": \"(?:[\\\\xA9\\\\xAE\\\\u203C\\\\u2049\\\\u2122\\\\u2139\\\\u2194-\\\\u2199\\\\u21A9\\\\u21AA\\\\u231A\\\\u231B\\\\u2328\\\\u23CF\\\\u23E9-\\\\u23F3\\\\u23F8-\\\\u23FA\\\\u24C2\\\\u25AA\\\\u25AB\\\\u25B6\\\\u25C0\\\\u25FB-\\\\u25FE\\\\u2600-\\\\u2604\\\\u260E\\\\u2611\\\\u2614\\\\u2615\\\\u2618\\\\u261D\\\\u2620\\\\u2622\\\\u2623\\\\u2626\\\\u262A\\\\u262E\\\\u262F\\\\u2638-\\\\u263A\\\\u2640\\\\u2642\\\\u2648-\\\\u2653\\\\u265F\\\\u2660\\\\u2663\\\\u2665\\\\u2666\\\\u2668\\\\u267B\\\\u267E\\\\u267F\\\\u2692-\\\\u2697\\\\u2699\\\\u269B\\\\u269C\\\\u26A0\\\\u26A1\\\\u26A7\\\\u26AA\\\\u26AB\\\\u26B0\\\\u26B1\\\\u26BD\\\\u26BE\\\\u26C4\\\\u26C5\\\\u26C8\\\\u26CE\\\\u26CF\\\\u26D1\\\\u26D3\\\\u26D4\\\\u26E9\\\\u26EA\\\\u26F0-\\\\u26F5\\\\u26F7-\\\\u26FA\\\\u26FD\\\\u2702\\\\u2705\\\\u2708-\\\\u270D\\\\u270F\\\\u2712\\\\u2714\\\\u2716\\\\u271D\\\\u2721\\\\u2728\\\\u2733\\\\u2734\\\\u2744\\\\u2747\\\\u274C\\\\u274E\\\\u2753-\\\\u2755\\\\u2757\\\\u2763\\\\u2764\\\\u2795-\\\\u2797\\\\u27A1\\\\u27B0\\\\u27BF\\\\u2934\\\\u2935\\\\u2B05-\\\\u2B07\\\\u2B1B\\\\u2B1C\\\\u2B50\\\\u2B55\\\\u3030\\\\u303D\\\\u3297\\\\u3299]|\\\\uD83C[\\\\uDC04\\\\uDC2C-\\\\uDC2F\\\\uDC94-\\\\uDC9F\\\\uDCAF\\\\uDCB0\\\\uDCC0\\\\uDCCF\\\\uDCD0\\\\uDCF6-\\\\uDCFF\\\\uDD70\\\\uDD71\\\\uDD7E\\\\uDD7F\\\\uDD8E\\\\uDD91-\\\\uDD9A\\\\uDDAE-\\\\uDDE5\\\\uDE01-\\\\uDE0F\\\\uDE1A\\\\uDE2F\\\\uDE32-\\\\uDE3A\\\\uDE3C-\\\\uDE3F\\\\uDE49-\\\\uDE5F\\\\uDE66-\\\\uDF21\\\\uDF24-\\\\uDF93\\\\uDF96\\\\uDF97\\\\uDF99-\\\\uDF9B\\\\uDF9E-\\\\uDFF0\\\\uDFF3-\\\\uDFF5\\\\uDFF7-\\\\uDFFA]|\\\\uD83D[\\\\uDC00-\\\\uDCFD\\\\uDCFF-\\\\uDD3D\\\\uDD49-\\\\uDD4E\\\\uDD50-\\\\uDD67\\\\uDD6F\\\\uDD70\\\\uDD73-\\\\uDD7A\\\\uDD87\\\\uDD8A-\\\\uDD8D\\\\uDD90\\\\uDD95\\\\uDD96\\\\uDDA4\\\\uDDA5\\\\uDDA8\\\\uDDB1\\\\uDDB2\\\\uDDBC\\\\uDDC2-\\\\uDDC4\\\\uDDD1-\\\\uDDD3\\\\uDDDC-\\\\uDDDE\\\\uDDE1\\\\uDDE3\\\\uDDE8\\\\uDDEF\\\\uDDF3\\\\uDDFA-\\\\uDE4F\\\\uDE80-\\\\uDEC5\\\\uDECB-\\\\uDED2\\\\uDED5-\\\\uDEE5\\\\uDEE9\\\\uDEEB-\\\\uDEF0\\\\uDEF3-\\\\uDEFF\\\\uDFDA-\\\\uDFFF]|\\\\uD83E[\\\\uDC0C-\\\\uDC0F\\\\uDC48-\\\\uDC4F\\\\uDC5A-\\\\uDC5F\\\\uDC88-\\\\uDC8F\\\\uDCAE\\\\uDCAF\\\\uDCBC-\\\\uDCBF\\\\uDCC2-\\\\uDCCF\\\\uDCD9-\\\\uDCFF\\\\uDD0C-\\\\uDD3A\\\\uDD3C-\\\\uDD45\\\\uDD47-\\\\uDDFF\\\\uDE58-\\\\uDE5F\\\\uDE6E-\\\\uDEFF]|\\\\uD83F[\\\\uDC00-\\\\uDFFD])\",\n\t\t\t\t\"$Extend\": \"(?:[\\\\u0300-\\\\u036F\\\\u0483-\\\\u0489\\\\u0591-\\\\u05BD\\\\u05BF\\\\u05C1\\\\u05C2\\\\u05C4\\\\u05C5\\\\u05C7\\\\u0610-\\\\u061A\\\\u064B-\\\\u065F\\\\u0670\\\\u06D6-\\\\u06DC\\\\u06DF-\\\\u06E4\\\\u06E7\\\\u06E8\\\\u06EA-\\\\u06ED\\\\u0711\\\\u0730-\\\\u074A\\\\u07A6-\\\\u07B0\\\\u07EB-\\\\u07F3\\\\u07FD\\\\u0816-\\\\u0819\\\\u081B-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082D\\\\u0859-\\\\u085B\\\\u0897-\\\\u089F\\\\u08CA-\\\\u08E1\\\\u08E3-\\\\u0903\\\\u093A-\\\\u093C\\\\u093E-\\\\u094F\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0981-\\\\u0983\\\\u09BC\\\\u09BE-\\\\u09C4\\\\u09C7\\\\u09C8\\\\u09CB-\\\\u09CD\\\\u09D7\\\\u09E2\\\\u09E3\\\\u09FE\\\\u0A01-\\\\u0A03\\\\u0A3C\\\\u0A3E-\\\\u0A42\\\\u0A47\\\\u0A48\\\\u0A4B-\\\\u0A4D\\\\u0A51\\\\u0A70\\\\u0A71\\\\u0A75\\\\u0A81-\\\\u0A83\\\\u0ABC\\\\u0ABE-\\\\u0AC5\\\\u0AC7-\\\\u0AC9\\\\u0ACB-\\\\u0ACD\\\\u0AE2\\\\u0AE3\\\\u0AFA-\\\\u0AFF\\\\u0B01-\\\\u0B03\\\\u0B3C\\\\u0B3E-\\\\u0B44\\\\u0B47\\\\u0B48\\\\u0B4B-\\\\u0B4D\\\\u0B55-\\\\u0B57\\\\u0B62\\\\u0B63\\\\u0B82\\\\u0BBE-\\\\u0BC2\\\\u0BC6-\\\\u0BC8\\\\u0BCA-\\\\u0BCD\\\\u0BD7\\\\u0C00-\\\\u0C04\\\\u0C3C\\\\u0C3E-\\\\u0C44\\\\u0C46-\\\\u0C48\\\\u0C4A-\\\\u0C4D\\\\u0C55\\\\u0C56\\\\u0C62\\\\u0C63\\\\u0C81-\\\\u0C83\\\\u0CBC\\\\u0CBE-\\\\u0CC4\\\\u0CC6-\\\\u0CC8\\\\u0CCA-\\\\u0CCD\\\\u0CD5\\\\u0CD6\\\\u0CE2\\\\u0CE3\\\\u0CF3\\\\u0D00-\\\\u0D03\\\\u0D3B\\\\u0D3C\\\\u0D3E-\\\\u0D44\\\\u0D46-\\\\u0D48\\\\u0D4A-\\\\u0D4D\\\\u0D57\\\\u0D62\\\\u0D63\\\\u0D81-\\\\u0D83\\\\u0DCA\\\\u0DCF-\\\\u0DD4\\\\u0DD6\\\\u0DD8-\\\\u0DDF\\\\u0DF2\\\\u0DF3\\\\u0E31\\\\u0E34-\\\\u0E3A\\\\u0E47-\\\\u0E4E\\\\u0EB1\\\\u0EB4-\\\\u0EBC\\\\u0EC8-\\\\u0ECE\\\\u0F18\\\\u0F19\\\\u0F35\\\\u0F37\\\\u0F39\\\\u0F3E\\\\u0F3F\\\\u0F71-\\\\u0F84\\\\u0F86\\\\u0F87\\\\u0F8D-\\\\u0F97\\\\u0F99-\\\\u0FBC\\\\u0FC6\\\\u102B-\\\\u103E\\\\u1056-\\\\u1059\\\\u105E-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106D\\\\u1071-\\\\u1074\\\\u1082-\\\\u108D\\\\u108F\\\\u109A-\\\\u109D\\\\u135D-\\\\u135F\\\\u1712-\\\\u1715\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17B4-\\\\u17D3\\\\u17DD\\\\u180B-\\\\u180D\\\\u180F\\\\u1885\\\\u1886\\\\u18A9\\\\u1920-\\\\u192B\\\\u1930-\\\\u193B\\\\u1A17-\\\\u1A1B\\\\u1A55-\\\\u1A5E\\\\u1A60-\\\\u1A7C\\\\u1A7F\\\\u1AB0-\\\\u1ADD\\\\u1AE0-\\\\u1AEB\\\\u1B00-\\\\u1B04\\\\u1B34-\\\\u1B44\\\\u1B6B-\\\\u1B73\\\\u1B80-\\\\u1B82\\\\u1BA1-\\\\u1BAD\\\\u1BE6-\\\\u1BF3\\\\u1C24-\\\\u1C37\\\\u1CD0-\\\\u1CD2\\\\u1CD4-\\\\u1CE8\\\\u1CED\\\\u1CF4\\\\u1CF7-\\\\u1CF9\\\\u1DC0-\\\\u1DFF\\\\u200C\\\\u20D0-\\\\u20F0\\\\u2CEF-\\\\u2CF1\\\\u2D7F\\\\u2DE0-\\\\u2DFF\\\\u302A-\\\\u302F\\\\u3099\\\\u309A\\\\uA66F-\\\\uA672\\\\uA674-\\\\uA67D\\\\uA69E\\\\uA69F\\\\uA6F0\\\\uA6F1\\\\uA802\\\\uA806\\\\uA80B\\\\uA823-\\\\uA827\\\\uA82C\\\\uA880\\\\uA881\\\\uA8B4-\\\\uA8C5\\\\uA8E0-\\\\uA8F1\\\\uA8FF\\\\uA926-\\\\uA92D\\\\uA947-\\\\uA953\\\\uA980-\\\\uA983\\\\uA9B3-\\\\uA9C0\\\\uA9E5\\\\uAA29-\\\\uAA36\\\\uAA43\\\\uAA4C\\\\uAA4D\\\\uAA7B-\\\\uAA7D\\\\uAAB0\\\\uAAB2-\\\\uAAB4\\\\uAAB7\\\\uAAB8\\\\uAABE\\\\uAABF\\\\uAAC1\\\\uAAEB-\\\\uAAEF\\\\uAAF5\\\\uAAF6\\\\uABE3-\\\\uABEA\\\\uABEC\\\\uABED\\\\uFB1E\\\\uFE00-\\\\uFE0F\\\\uFE20-\\\\uFE2F\\\\uFF9E\\\\uFF9F]|\\\\uD800[\\\\uDDFD\\\\uDEE0\\\\uDF76-\\\\uDF7A]|\\\\uD802[\\\\uDE01-\\\\uDE03\\\\uDE05\\\\uDE06\\\\uDE0C-\\\\uDE0F\\\\uDE38-\\\\uDE3A\\\\uDE3F\\\\uDEE5\\\\uDEE6]|\\\\uD803[\\\\uDD24-\\\\uDD27\\\\uDD69-\\\\uDD6D\\\\uDEAB\\\\uDEAC\\\\uDEFA-\\\\uDEFF\\\\uDF46-\\\\uDF50\\\\uDF82-\\\\uDF85]|\\\\uD804[\\\\uDC00-\\\\uDC02\\\\uDC38-\\\\uDC46\\\\uDC70\\\\uDC73\\\\uDC74\\\\uDC7F-\\\\uDC82\\\\uDCB0-\\\\uDCBA\\\\uDCC2\\\\uDD00-\\\\uDD02\\\\uDD27-\\\\uDD34\\\\uDD45\\\\uDD46\\\\uDD73\\\\uDD80-\\\\uDD82\\\\uDDB3-\\\\uDDC0\\\\uDDC9-\\\\uDDCC\\\\uDDCE\\\\uDDCF\\\\uDE2C-\\\\uDE37\\\\uDE3E\\\\uDE41\\\\uDEDF-\\\\uDEEA\\\\uDF00-\\\\uDF03\\\\uDF3B\\\\uDF3C\\\\uDF3E-\\\\uDF44\\\\uDF47\\\\uDF48\\\\uDF4B-\\\\uDF4D\\\\uDF57\\\\uDF62\\\\uDF63\\\\uDF66-\\\\uDF6C\\\\uDF70-\\\\uDF74\\\\uDFB8-\\\\uDFC0\\\\uDFC2\\\\uDFC5\\\\uDFC7-\\\\uDFCA\\\\uDFCC-\\\\uDFD0\\\\uDFD2\\\\uDFE1\\\\uDFE2]|\\\\uD805[\\\\uDC35-\\\\uDC46\\\\uDC5E\\\\uDCB0-\\\\uDCC3\\\\uDDAF-\\\\uDDB5\\\\uDDB8-\\\\uDDC0\\\\uDDDC\\\\uDDDD\\\\uDE30-\\\\uDE40\\\\uDEAB-\\\\uDEB7\\\\uDF1D-\\\\uDF2B]|\\\\uD806[\\\\uDC2C-\\\\uDC3A\\\\uDD30-\\\\uDD35\\\\uDD37\\\\uDD38\\\\uDD3B-\\\\uDD3E\\\\uDD40\\\\uDD42\\\\uDD43\\\\uDDD1-\\\\uDDD7\\\\uDDDA-\\\\uDDE0\\\\uDDE4\\\\uDE01-\\\\uDE0A\\\\uDE33-\\\\uDE39\\\\uDE3B-\\\\uDE3E\\\\uDE47\\\\uDE51-\\\\uDE5B\\\\uDE8A-\\\\uDE99\\\\uDF60-\\\\uDF67]|\\\\uD807[\\\\uDC2F-\\\\uDC36\\\\uDC38-\\\\uDC3F\\\\uDC92-\\\\uDCA7\\\\uDCA9-\\\\uDCB6\\\\uDD31-\\\\uDD36\\\\uDD3A\\\\uDD3C\\\\uDD3D\\\\uDD3F-\\\\uDD45\\\\uDD47\\\\uDD8A-\\\\uDD8E\\\\uDD90\\\\uDD91\\\\uDD93-\\\\uDD97\\\\uDEF3-\\\\uDEF6\\\\uDF00\\\\uDF01\\\\uDF03\\\\uDF34-\\\\uDF3A\\\\uDF3E-\\\\uDF42\\\\uDF5A]|\\\\uD80D[\\\\uDC40\\\\uDC47-\\\\uDC55]|\\\\uD818[\\\\uDD1E-\\\\uDD2F]|\\\\uD81A[\\\\uDEF0-\\\\uDEF4\\\\uDF30-\\\\uDF36]|\\\\uD81B[\\\\uDF4F\\\\uDF51-\\\\uDF87\\\\uDF8F-\\\\uDF92\\\\uDFE4\\\\uDFF0\\\\uDFF1]|\\\\uD82F[\\\\uDC9D\\\\uDC9E]|\\\\uD833[\\\\uDF00-\\\\uDF2D\\\\uDF30-\\\\uDF46]|\\\\uD834[\\\\uDD65-\\\\uDD69\\\\uDD6D-\\\\uDD72\\\\uDD7B-\\\\uDD82\\\\uDD85-\\\\uDD8B\\\\uDDAA-\\\\uDDAD\\\\uDE42-\\\\uDE44]|\\\\uD836[\\\\uDE00-\\\\uDE36\\\\uDE3B-\\\\uDE6C\\\\uDE75\\\\uDE84\\\\uDE9B-\\\\uDE9F\\\\uDEA1-\\\\uDEAF]|\\\\uD838[\\\\uDC00-\\\\uDC06\\\\uDC08-\\\\uDC18\\\\uDC1B-\\\\uDC21\\\\uDC23\\\\uDC24\\\\uDC26-\\\\uDC2A\\\\uDC8F\\\\uDD30-\\\\uDD36\\\\uDEAE\\\\uDEEC-\\\\uDEEF]|\\\\uD839[\\\\uDCEC-\\\\uDCEF\\\\uDDEE\\\\uDDEF\\\\uDEE3\\\\uDEE6\\\\uDEEE\\\\uDEEF\\\\uDEF5]|\\\\uD83A[\\\\uDCD0-\\\\uDCD6\\\\uDD44-\\\\uDD4A]|\\\\uD83C[\\\\uDFFB-\\\\uDFFF]|\\\\uDB40[\\\\uDC20-\\\\uDC7F\\\\uDD00-\\\\uDDEF])\",\n\t\t\t\t\"$ExtendNumLet\": \"[_\\\\u202F\\\\u203F\\\\u2040\\\\u2054\\\\uFE33\\\\uFE34\\\\uFE4D-\\\\uFE4F\\\\uFF3F]\",\n\t\t\t\t\"$Format\": \"(?:[\\\\xAD\\\\u061C\\\\u180E\\\\u200E\\\\u200F\\\\u202A-\\\\u202E\\\\u2060-\\\\u2064\\\\u2066-\\\\u206F\\\\uFEFF\\\\uFFF9-\\\\uFFFB]|\\\\uD80D[\\\\uDC30-\\\\uDC3F]|\\\\uD82F[\\\\uDCA0-\\\\uDCA3]|\\\\uD834[\\\\uDD73-\\\\uDD7A]|\\\\uDB40\\\\uDC01)\",\n\t\t\t\t\"$Hebrew_Letter\": \"[\\\\u05D0-\\\\u05EA\\\\u05EF-\\\\u05F2\\\\uFB1D\\\\uFB1F-\\\\uFB28\\\\uFB2A-\\\\uFB36\\\\uFB38-\\\\uFB3C\\\\uFB3E\\\\uFB40\\\\uFB41\\\\uFB43\\\\uFB44\\\\uFB46-\\\\uFB4F]\",\n\t\t\t\t\"$Katakana\": \"(?:[\\\\u3031-\\\\u3035\\\\u309B\\\\u309C\\\\u30A0-\\\\u30FA\\\\u30FC-\\\\u30FF\\\\u31F0-\\\\u31FF\\\\u32D0-\\\\u32FE\\\\u3300-\\\\u3357\\\\uFF66-\\\\uFF9D]|\\\\uD82B[\\\\uDFF0-\\\\uDFF3\\\\uDFF5-\\\\uDFFB\\\\uDFFD\\\\uDFFE]|\\\\uD82C[\\\\uDC00\\\\uDD20-\\\\uDD22\\\\uDD55\\\\uDD64-\\\\uDD67])\",\n\t\t\t\t\"$LF\": \"\\\\n\",\n\t\t\t\t\"$MidLetter\": \"[:\\\\xB7\\\\u0387\\\\u055F\\\\u05F4\\\\u2027\\\\uFE13\\\\uFE55\\\\uFF1A]\",\n\t\t\t\t\"$MidNum\": \"[,;\\\\u037E\\\\u0589\\\\u060C\\\\u060D\\\\u066C\\\\u07F8\\\\u2044\\\\uFE50\\\\uFE54\\\\uFF0C\\\\uFF1B]\",\n\t\t\t\t\"$MidNumLet\": \"[\\\\.\\\\u2018\\\\u2019\\\\u2024\\\\uFE52\\\\uFF07\\\\uFF0E]\",\n\t\t\t\t\"$MidNumLetQ\": \"['\\\\.\\\\u2018\\\\u2019\\\\u2024\\\\uFE52\\\\uFF07\\\\uFF0E]\",\n\t\t\t\t\"$Newline\": \"[\\\\x0B\\\\f\\\\x85\\\\u2028\\\\u2029]\",\n\t\t\t\t\"$Numeric\": \"(?:[0-9\\\\u0600-\\\\u0605\\\\u0660-\\\\u0669\\\\u066B\\\\u06DD\\\\u06F0-\\\\u06F9\\\\u07C0-\\\\u07C9\\\\u0890\\\\u0891\\\\u08E2\\\\u0966-\\\\u096F\\\\u09E6-\\\\u09EF\\\\u0A66-\\\\u0A6F\\\\u0AE6-\\\\u0AEF\\\\u0B66-\\\\u0B6F\\\\u0BE6-\\\\u0BEF\\\\u0C66-\\\\u0C6F\\\\u0CE6-\\\\u0CEF\\\\u0D66-\\\\u0D6F\\\\u0DE6-\\\\u0DEF\\\\u0E50-\\\\u0E59\\\\u0ED0-\\\\u0ED9\\\\u0F20-\\\\u0F29\\\\u1040-\\\\u1049\\\\u1090-\\\\u1099\\\\u17E0-\\\\u17E9\\\\u1810-\\\\u1819\\\\u1946-\\\\u194F\\\\u19D0-\\\\u19DA\\\\u1A80-\\\\u1A89\\\\u1A90-\\\\u1A99\\\\u1B50-\\\\u1B59\\\\u1BB0-\\\\u1BB9\\\\u1C40-\\\\u1C49\\\\u1C50-\\\\u1C59\\\\uA620-\\\\uA629\\\\uA8D0-\\\\uA8D9\\\\uA900-\\\\uA909\\\\uA9D0-\\\\uA9D9\\\\uA9F0-\\\\uA9F9\\\\uAA50-\\\\uAA59\\\\uABF0-\\\\uABF9\\\\uFF10-\\\\uFF19]|\\\\uD801[\\\\uDCA0-\\\\uDCA9]|[\\\\uD803\\\\uD818][\\\\uDD30-\\\\uDD39\\\\uDD40-\\\\uDD49]|\\\\uD804[\\\\uDC66-\\\\uDC6F\\\\uDCBD\\\\uDCCD\\\\uDCF0-\\\\uDCF9\\\\uDD36-\\\\uDD3F\\\\uDDD0-\\\\uDDD9\\\\uDEF0-\\\\uDEF9]|\\\\uD805[\\\\uDC50-\\\\uDC59\\\\uDCD0-\\\\uDCD9\\\\uDE50-\\\\uDE59\\\\uDEC0-\\\\uDEC9\\\\uDED0-\\\\uDEE3\\\\uDF30-\\\\uDF39]|\\\\uD806[\\\\uDCE0-\\\\uDCE9\\\\uDD50-\\\\uDD59\\\\uDFF0-\\\\uDFF9]|\\\\uD807[\\\\uDC50-\\\\uDC59\\\\uDD50-\\\\uDD59\\\\uDDA0-\\\\uDDA9\\\\uDDE0-\\\\uDDE9\\\\uDF50-\\\\uDF59]|\\\\uD81A[\\\\uDE60-\\\\uDE69\\\\uDEC0-\\\\uDEC9\\\\uDF50-\\\\uDF59]|\\\\uD81B[\\\\uDD70-\\\\uDD79]|\\\\uD833[\\\\uDCF0-\\\\uDCF9]|\\\\uD835[\\\\uDFCE-\\\\uDFFF]|\\\\uD838[\\\\uDD40-\\\\uDD49\\\\uDEF0-\\\\uDEF9]|\\\\uD839[\\\\uDCF0-\\\\uDCF9\\\\uDDF1-\\\\uDDFA]|\\\\uD83A[\\\\uDD50-\\\\uDD59]|\\\\uD83E[\\\\uDFF0-\\\\uDFF9])\",\n\t\t\t\t\"$RI\": \"(?:\\\\uD83C[\\\\uDDE6-\\\\uDDFF])\",\n\t\t\t\t\"$Single_Quote\": \"'\",\n\t\t\t\t\"$WSegSpace\": \"[ \\\\u1680\\\\u2000-\\\\u2006\\\\u2008-\\\\u200A\\\\u205F\\\\u3000]\",\n\t\t\t\t\"$XX\": \"[\\\\0-\\\\uD7FF\\\\uE000-\\\\uFFFF]\",\n\t\t\t\t\"$ZWJ\": \"\\\\u200D\"\n\t\t\t}\n\t\t}\n\t},\n\t\"ru\": { \"sentence\": {\n\t\t\"segmentRules\": {},\n\t\t\"suppressions\": [\n\t\t\t\"руб.\",\n\t\t\t\"янв.\",\n\t\t\t\"до н. э.\",\n\t\t\t\"сент.\",\n\t\t\t\"тел.\",\n\t\t\t\"дек.\",\n\t\t\t\"февр.\",\n\t\t\t\"нояб.\",\n\t\t\t\"апр.\",\n\t\t\t\"н. э.\",\n\t\t\t\"окт.\",\n\t\t\t\"тыс.\",\n\t\t\t\"авг.\",\n\t\t\t\"проф.\",\n\t\t\t\"н.э.\",\n\t\t\t\"кв.\",\n\t\t\t\"ул.\",\n\t\t\t\"отд.\"\n\t\t],\n\t\t\"variables\": {}\n\t} },\n\t\"zh\": {}\n};\n","export const replaceVariables = (variables, input) => {\n\tconst findVarRegex = /\\$[A-Za-z0-9_]+/gm;\n\treturn input.replaceAll(findVarRegex, (match) => {\n\t\tif (!(match in variables)) {\n\t\t\tthrow new Error(`No such variable ${match}`);\n\t\t}\n\t\treturn variables[match];\n\t});\n};\nexport const isSurrogate = (str, pos) => {\n\treturn 55296 <= str.charCodeAt(pos - 1) && str.charCodeAt(pos - 1) <= 56319 && 56320 <= str.charCodeAt(pos) && str.charCodeAt(pos) <= 57343;\n};\n// alternative surrogate check mimicking the java implementation\n// const TRAIL_SURROGATE_BITMASK = 0xfffffc00\n// const TRAIL_SURROGATE_BITS = 0xdc00\n// const LEAD_SURROGATE_BITMASK = 0xfffffc00\n// const LEAD_SURROGATE_BITS = 0xd800\n// const isSurrogate = (text: string, position: number) => {\n// if (\n// (text.charCodeAt(position - 1) & LEAD_SURROGATE_BITMASK) ==\n// LEAD_SURROGATE_BITS &&\n// (text.charCodeAt(position) & TRAIL_SURROGATE_BITMASK) ==\n// TRAIL_SURROGATE_BITS\n// ) {\n// return true\n// } else {\n// return false\n// }\n// }\n","import { CanonicalizeLocaleList, GetOption, GetOptionsObject, SupportedLocales, getInternalSlot, getMultiInternalSlots, setInternalSlot } from \"@formatjs/ecma402-abstract\";\nimport { ResolveLocale } from \"@formatjs/intl-localematcher\";\nimport { SegmentationRules } from \"./cldr-segmentation-rules.generated.js\";\nimport { isSurrogate, replaceVariables } from \"./segmentation-utils.js\";\n// Cached regex patterns for word character detection\n// Note: Unicode property escape regex is created at runtime in try-catch\n// to avoid compile-time errors when targeting ES5\nconst WORD_CHARACTERS_BASIC_REGEX = /\\w/;\n// Lazy-initialized Unicode word character regex (null if not supported)\nlet WORD_CHARACTERS_UNICODE_REGEX = undefined;\n/**\n* Adds $ to before rules and ^ to after rules for strictness\n* Replaces variables\n* Initializes the RegExp\n*\n* @param rule raw rule string from cldr-segmentation-rules.generated\n* @param variables\n* @param after appends ^ if true and $ if false\n* @returns\n*/\nconst generateRuleRegex = (rule, variables, after) => {\n\treturn new RegExp(`${after ? \"^\" : \"\"}${replaceVariables(variables, rule)}${after ? \"\" : \"$\"}`);\n};\nconst prepareLocaleSegmentationRules = (segmentationTypeValue) => {\n\tconst preparedRules = {};\n\tfor (const ruleNr of Object.keys(segmentationTypeValue.segmentRules)) {\n\t\tconst ruleValue = segmentationTypeValue.segmentRules[ruleNr];\n\t\tconst preparedRule = { breaks: ruleValue.breaks };\n\t\tif (\"before\" in ruleValue && ruleValue.before) {\n\t\t\tpreparedRule.before = generateRuleRegex(ruleValue.before, segmentationTypeValue.variables, false);\n\t\t}\n\t\tif (\"after\" in ruleValue && ruleValue.after) {\n\t\t\tpreparedRule.after = generateRuleRegex(ruleValue.after, segmentationTypeValue.variables, true);\n\t\t}\n\t\tpreparedRules[ruleNr] = preparedRule;\n\t}\n\treturn preparedRules;\n};\nconst breaksAtResult = (breaks, matchingRule) => ({\n\tbreaks,\n\tmatchingRule\n});\nexport class Segmenter {\n\trules;\n\truleSortedKeys;\n\tmergedSegmentationTypeValue;\n\tconstructor(locales, options) {\n\t\tif (new.target === undefined) {\n\t\t\tthrow TypeError(`Constructor Intl.Segmenter requires 'new'`);\n\t\t}\n\t\tconst requestedLocales = CanonicalizeLocaleList(locales);\n\t\toptions = GetOptionsObject(options);\n\t\tconst opt = Object.create(null);\n\t\tconst matcher = GetOption(options, \"localeMatcher\", \"string\", [\"lookup\", \"best fit\"], \"best fit\");\n\t\topt.localeMatcher = matcher;\n\t\tconst granularity = GetOption(options, \"granularity\", \"string\", [\n\t\t\t\"word\",\n\t\t\t\"sentence\",\n\t\t\t\"grapheme\"\n\t\t], \"grapheme\");\n\t\tsetSlot(this, \"granularity\", granularity);\n\t\t//TODO: figure out correct availible locales\n\t\tconst r = ResolveLocale(Segmenter.availableLocales, requestedLocales, opt, [], {}, () => \"\");\n\t\tsetSlot(this, \"locale\", r.locale);\n\t\t//root rules based on granularity\n\t\tthis.mergedSegmentationTypeValue = SegmentationRules.root[granularity];\n\t\t//merge root rules with locale ones if locale is specified\n\t\tif (r.locale.length) {\n\t\t\tconst localeOverrides = SegmentationRules[r.locale];\n\t\t\tif (granularity in localeOverrides) {\n\t\t\t\tconst localeSegmentationTypeValue = localeOverrides[granularity];\n\t\t\t\tthis.mergedSegmentationTypeValue.variables = {\n\t\t\t\t\t...this.mergedSegmentationTypeValue.variables,\n\t\t\t\t\t...localeSegmentationTypeValue.variables\n\t\t\t\t};\n\t\t\t\tthis.mergedSegmentationTypeValue.segmentRules = {\n\t\t\t\t\t...this.mergedSegmentationTypeValue.segmentRules,\n\t\t\t\t\t...localeSegmentationTypeValue.segmentRules\n\t\t\t\t};\n\t\t\t\tthis.mergedSegmentationTypeValue.suppressions = [...this.mergedSegmentationTypeValue.suppressions, ...localeSegmentationTypeValue.suppressions];\n\t\t\t}\n\t\t}\n\t\t//prepare rules\n\t\tthis.rules = prepareLocaleSegmentationRules(this.mergedSegmentationTypeValue);\n\t\t//order rule keys\n\t\tthis.ruleSortedKeys = Object.keys(this.rules).sort((a, b) => Number(a) - Number(b));\n\t}\n\tbreaksAt(position, input) {\n\t\tconst ruleSortedKeys = this.ruleSortedKeys;\n\t\tconst rules = this.rules;\n\t\tconst mergedSegmentationTypeValue = this.mergedSegmentationTypeValue;\n\t\t//artificial rule 0.2\n\t\tif (position === 0) {\n\t\t\treturn breaksAtResult(true, \"0.2\");\n\t\t}\n\t\tif (position === input.length) {\n\t\t\t//rule 0.3\n\t\t\treturn breaksAtResult(true, \"0.3\");\n\t\t}\n\t\t//artificial rule 0.1: js specific, due to es5 regex not being unicode aware\n\t\t//number 0.1 chosen to mimic java implementation, but needs to execute after 0.2 and 0.3 to be inside the string bounds\n\t\tif (isSurrogate(input, position)) {\n\t\t\treturn breaksAtResult(false, \"0.1\");\n\t\t}\n\t\tconst stringBeforeBreak = input.substring(0, position);\n\t\tconst stringAfterBreak = input.substring(position);\n\t\t//artificial rule 0.4: handle suppressions\n\t\tif (\"suppressions\" in mergedSegmentationTypeValue) {\n\t\t\tfor (const suppressions of mergedSegmentationTypeValue.suppressions) {\n\t\t\t\tif (stringBeforeBreak.trim().endsWith(suppressions)) {\n\t\t\t\t\treturn breaksAtResult(false, \"0.4\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// loop through rules and find a match\n\t\tfor (const ruleKey of ruleSortedKeys) {\n\t\t\tconst { before, after, breaks } = rules[ruleKey];\n\t\t\t// for debugging\n\t\t\t// if (ruleKey === '16' && position === 4) {\n\t\t\t// console.log({before, after, stringBeforeBreak, stringAfterBreak})\n\t\t\t// }\n\t\t\tif (before) {\n\t\t\t\tif (!before.test(stringBeforeBreak)) {\n\t\t\t\t\t//didn't match the before part, therfore skipping\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (after) {\n\t\t\t\tif (!after.test(stringAfterBreak)) {\n\t\t\t\t\t//didn't match the after part, therfore skipping\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn breaksAtResult(breaks, ruleKey);\n\t\t}\n\t\t//artificial rule 999: if no rule matched is Any ÷ Any so return true\n\t\treturn breaksAtResult(true, \"999\");\n\t}\n\tsegment(input) {\n\t\tcheckReceiver(this, \"segment\");\n\t\treturn new SegmentIterator(this, input);\n\t}\n\tresolvedOptions() {\n\t\tcheckReceiver(this, \"resolvedOptions\");\n\t\treturn { ...getMultiInternalSlots(__INTERNAL_SLOT_MAP__, this, \"locale\", \"granularity\") };\n\t}\n\tstatic availableLocales = new Set(Object.keys(SegmentationRules).filter((key) => key !== \"root\"));\n\tstatic supportedLocalesOf(locales, options) {\n\t\treturn SupportedLocales(Segmenter.availableLocales, CanonicalizeLocaleList(locales), options);\n\t}\n\tstatic polyfilled = true;\n}\n/**\n* Determines if a segment is word-like according to Unicode Word Break rules.\n*\n* A segment is considered word-like if it contains alphabetic characters,\n* numbers, or ideographs. Segments containing only whitespace, punctuation,\n* or symbols are not word-like.\n*\n* Per Unicode Word Break (UAX #29) and native Intl.Segmenter implementations,\n* this matches segments that contain characters from word character classes:\n* ALetter, Hebrew_Letter, Numeric, Katakana, Hiragana, and Ideographic.\n*\n* @param segment - The text segment to check\n* @param matchingRule - The word break rule that created this segment\n* @returns true if the segment is word-like\n*/\nfunction isSegmentWordLike(segment, matchingRule) {\n\t// Primary check: Does the segment contain word characters?\n\t// Word-like segments contain letters (including ideographs), numbers,\n\t// or connecting characters like apostrophes within words\n\t//\n\t// Regex matches:\n\t// - Letters: \\p{L} (all Unicode letters)\n\t// - Numbers: \\p{N} (all Unicode numbers)\n\t// - Marks: \\p{M} (combining marks, typically part of letters)\n\t//\n\t// Note: Using Unicode property escapes which work in modern JS engines\n\t// and are necessary for proper internationalization\n\t// Lazy-initialize Unicode regex on first use\n\tif (WORD_CHARACTERS_UNICODE_REGEX === undefined) {\n\t\ttry {\n\t\t\t// Create Unicode property escape regex at runtime to avoid compile-time TS1501 error\n\t\t\tWORD_CHARACTERS_UNICODE_REGEX = new RegExp(\"[\\\\p{L}\\\\p{N}\\\\p{M}]\", \"u\");\n\t\t} catch {\n\t\t\t// Environment doesn't support Unicode property escapes\n\t\t\tWORD_CHARACTERS_UNICODE_REGEX = null;\n\t\t}\n\t}\n\tlet hasWordCharacters;\n\tif (WORD_CHARACTERS_UNICODE_REGEX) {\n\t\t// Check if segment contains word characters using Unicode property escapes\n\t\t// This matches the behavior of native Intl.Segmenter in Chrome/Firefox\n\t\thasWordCharacters = WORD_CHARACTERS_UNICODE_REGEX.test(segment);\n\t} else {\n\t\t// Fallback for environments without Unicode property escapes\n\t\t// Match basic word characters: letters, numbers, underscores\n\t\thasWordCharacters = WORD_CHARACTERS_BASIC_REGEX.test(segment);\n\t}\n\t// If segment contains word characters, it's word-like\n\tif (hasWordCharacters) {\n\t\treturn true;\n\t}\n\t// If no word characters, check if it's definitely not word-like via rules\n\t// Non-word-like rules per Unicode Word Break specification (UAX #29):\n\t// https://unicode.org/reports/tr29/#Word_Boundaries\n\t//\n\t// WB3a (3.1): Break before newlines (sot ÷ (Newline | CR | LF))\n\t// WB3b (3.2): Break after newlines ((Newline | CR | LF) ÷ eot)\n\t// WB3d (3.4): Keep horizontal whitespace together (WSegSpace × WSegSpace)\n\t//\n\t// These rules specifically identify non-word segments like line breaks and whitespace\n\tconst definitelyNotWordLikeRules = [\n\t\t\"3.1\",\n\t\t\"3.2\",\n\t\t\"3.4\"\n\t];\n\tif (definitelyNotWordLikeRules.includes(matchingRule)) {\n\t\treturn false;\n\t}\n\t// For segments without word characters and not matching specific non-word rules,\n\t// return false (e.g., punctuation, symbols, whitespace via rule 999)\n\treturn false;\n}\nconst createSegmentDataObject = (segmenter, segment, index, input, matchingRule) => {\n\tconst returnValue = {\n\t\tsegment,\n\t\tindex,\n\t\tinput\n\t};\n\tif (getSlot(segmenter, \"granularity\") === \"word\") {\n\t\treturnValue.isWordLike = isSegmentWordLike(segment, matchingRule);\n\t}\n\treturn returnValue;\n};\nclass SegmentIterator {\n\tsegmenter;\n\tlastSegmentIndex;\n\tinput;\n\tconstructor(segmenter, input) {\n\t\tthis.segmenter = segmenter;\n\t\tthis.lastSegmentIndex = 0;\n\t\tif (typeof input == \"symbol\") {\n\t\t\tthrow TypeError(`Input must not be a symbol`);\n\t\t}\n\t\tthis.input = String(input);\n\t}\n\t[Symbol.iterator]() {\n\t\treturn new SegmentIterator(this.segmenter, this.input);\n\t}\n\tnext() {\n\t\t//using only the relevant bit of the string\n\t\tlet checkString = this.input.substring(this.lastSegmentIndex);\n\t\t//loop from the start of the checkString, until exactly length (breaksAt returns break at pos=== lenght)\n\t\tfor (let position = 1; position <= checkString.length; position++) {\n\t\t\tconst { breaks, matchingRule } = this.segmenter.breaksAt(position, checkString);\n\t\t\tif (breaks) {\n\t\t\t\tconst segment = checkString.substring(0, position);\n\t\t\t\tconst index = this.lastSegmentIndex;\n\t\t\t\tthis.lastSegmentIndex += position;\n\t\t\t\treturn {\n\t\t\t\t\tdone: false,\n\t\t\t\t\tvalue: createSegmentDataObject(this.segmenter, segment, index, this.input, matchingRule)\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\t//no segment was found by the loop, therefore the segmentation is done\n\t\treturn {\n\t\t\tdone: true,\n\t\t\tvalue: undefined\n\t\t};\n\t}\n\tcontaining(positionInput) {\n\t\tif (typeof positionInput === \"bigint\") {\n\t\t\tthrow TypeError(\"Index must not be a BigInt\");\n\t\t}\n\t\tlet position = Number(positionInput);\n\t\t//https://tc39.es/ecma262/#sec-tointegerorinfinity\n\t\t// 2. If number is NaN, +0𝔽, or -0𝔽, return 0.\n\t\tif (isNaN(position) || !position) {\n\t\t\tposition = 0;\n\t\t}\n\t\t// 5. Let integer be floor(abs(ℝ(number))).\n\t\t// 6. If number < -0𝔽, set integer to -integer.\n\t\tposition = Math.floor(Math.abs(position)) * (position < 0 ? -1 : 1);\n\t\tif (position < 0 || position >= this.input.length) {\n\t\t\treturn undefined;\n\t\t}\n\t\t//find previous break point\n\t\tlet previousBreakPoint = 0;\n\t\tif (position === 0) {\n\t\t\tpreviousBreakPoint = 0;\n\t\t} else {\n\t\t\tconst checkString = this.input;\n\t\t\tfor (let cursor = position; cursor >= 0; cursor--) {\n\t\t\t\tconst { breaks } = this.segmenter.breaksAt(cursor, checkString);\n\t\t\t\tif (breaks) {\n\t\t\t\t\tpreviousBreakPoint = cursor;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlet checkString = this.input.substring(previousBreakPoint);\n\t\t//find next break point\n\t\tfor (let cursor = 1; cursor <= checkString.length; cursor++) {\n\t\t\tconst { breaks, matchingRule } = this.segmenter.breaksAt(cursor, checkString);\n\t\t\tif (breaks) {\n\t\t\t\tconst segment = checkString.substring(0, cursor);\n\t\t\t\treturn createSegmentDataObject(this.segmenter, segment, previousBreakPoint, this.input, matchingRule);\n\t\t\t}\n\t\t}\n\t}\n}\nconst __INTERNAL_SLOT_MAP__ = new WeakMap();\nfunction getSlot(instance, key) {\n\treturn getInternalSlot(__INTERNAL_SLOT_MAP__, instance, key);\n}\nfunction setSlot(instance, key, value) {\n\tsetInternalSlot(__INTERNAL_SLOT_MAP__, instance, key, value);\n}\nfunction checkReceiver(receiver, methodName) {\n\tif (!(receiver instanceof Segmenter)) {\n\t\tthrow TypeError(`Method Intl.Segmenter.prototype.${methodName} called on incompatible receiver`);\n\t}\n}\ntry {\n\t// IE11 does not have Symbol\n\tif (typeof Symbol !== \"undefined\") {\n\t\tObject.defineProperty(Segmenter.prototype, Symbol.toStringTag, {\n\t\t\tvalue: \"Intl.Segmenter\",\n\t\t\twritable: false,\n\t\t\tenumerable: false,\n\t\t\tconfigurable: true\n\t\t});\n\t}\n\t//github.com/tc39/test262/blob/main/test/intl402/Segmenter/constructor/length.js\n\tObject.defineProperty(Segmenter.prototype.constructor, \"length\", {\n\t\tvalue: 0,\n\t\twritable: false,\n\t\tenumerable: false,\n\t\tconfigurable: true\n\t});\n\t// https://github.com/tc39/test262/blob/main/test/intl402/Segmenter/constructor/supportedLocalesOf/length.js\n\tObject.defineProperty(Segmenter.supportedLocalesOf, \"length\", {\n\t\tvalue: 1,\n\t\twritable: false,\n\t\tenumerable: false,\n\t\tconfigurable: true\n\t});\n} catch {}\n","import { Segmenter } from \"./src/segmenter.js\";\nObject.defineProperty(Intl, \"Segmenter\", {\n\tvalue: Segmenter,\n\tenumerable: false,\n\twritable: true,\n\tconfigurable: true\n});\n"],"names":["CanonicalizeLocaleList","locales","EXP_LIMIT","MAX_DIGITS","NUMERALS","LN10","PI","DEFAULTS","inexact","quadrant","external","decimalError","invalidArgument","precisionLimitExceeded","cryptoUnavailable","tag","mathfloor","mathpow","isBinary","isHex","isOctal","isDecimal","BASE","LOG_BASE","MAX_SAFE_INTEGER","LN10_PRECISION","PI_PRECISION","P","x","finalise","min","max","k","Ctor","y","i","j","xdL","ydL","xd","yd","xs","ys","pr","rm","cosine","toLessThanHalfPi","e","m","n","r","rep","s","sd","t3","t3plusx","digitsToString","divide","w","d","len","one","tinyPow","taylorSeries","cosh2_x","d8","sinh2_x","d5","d16","d20","getPi","wpr","xsd","halfPi","px","t","x2","base","isBase10","denominator","inf","num","arg","guard","naturalLogarithm","getLn10","checkRoundingDigits","xe","xLTy","getBase10Exponent","q","naturalExponential","carry","z","getPrecision","sine","rL","toStringBinary","dp","checkInt32","str","finiteToString","maxD","d0","d1","d2","n0","n1","yn","intPow","ws","indexOfLastWord","getZeroString","repeating","di","rd","convertBase","baseIn","baseOut","arr","arrL","strL","cos2x","multiplyInteger","temp","compare","a","b","aL","bL","subtract","cmp","logBase","more","prod","prodL","qd","rem","remL","rem0","xi","xL","yd0","yL","yz","sign","isTruncated","digits","roundUp","xdi","out","isExp","nonFiniteToString","zs","truncate","isOdd","maxOrMin","args","pow","sum","c","c0","numerator","x1","parseDecimal","parseOther","divisor","isFloat","p","Decimal","sin2_x","isHyperbolic","u","isNeg","pi","abs","acos","acosh","add","asin","asinh","atan","atanh","atan2","cbrt","ceil","clamp","config","obj","v","useDefaults","ps","cos","cosh","clone","isDecimalInstance","div","exp","floor","hypot","ln","log","log10","log2","mod","mul","random","round","sin","sinh","sqrt","sub","tan","tanh","trunc","TEN","ZERO","NEGATIVE_ZERO","setInternalSlot","map","pl","field","value","slots","getInternalSlot","getMultiInternalSlots","fields","all","f","createMemoizedNumberFormat","memoize","strategies","createMemoizedPluralRules","createMemoizedLocale","createMemoizedListFormat","ToString","o","ToObject","MINUTES_PER_HOUR","SECONDS_PER_MINUTE","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","GetOption","opts","prop","type","values","fallback","val","GetOptionsObject","options","SANCTIONED_UNITS","removeUnitNamespace","unit","SIMPLE_UNITS","getPowerOf10","exponent","S_UNICODE_REGEX","CARET_S_UNICODE_REGEX","S_DOLLAR_UNICODE_REGEX","SupportedLocales","availableLocales","requestedLocales","matcher","LookupSupportedLocales","SegmentationRules","replaceVariables","variables","input","findVarRegex","match","isSurrogate","pos","WORD_CHARACTERS_BASIC_REGEX","WORD_CHARACTERS_UNICODE_REGEX","generateRuleRegex","rule","after","prepareLocaleSegmentationRules","segmentationTypeValue","preparedRules","ruleNr","ruleValue","preparedRule","breaksAtResult","breaks","matchingRule","Segmenter","opt","granularity","setSlot","ResolveLocale","localeOverrides","localeSegmentationTypeValue","position","ruleSortedKeys","rules","mergedSegmentationTypeValue","stringBeforeBreak","stringAfterBreak","suppressions","ruleKey","before","checkReceiver","SegmentIterator","__INTERNAL_SLOT_MAP__","key","isSegmentWordLike","segment","hasWordCharacters","createSegmentDataObject","segmenter","index","returnValue","getSlot","checkString","positionInput","previousBreakPoint","cursor","instance","receiver","methodName"],"mappings":"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AAA,EAChB,aAAgB,CACf,QACA,OACA,MACA,OACA,OACA,UACA,QACA,OACA,OACA,OACA,SACA,MACA,OACA,QACA,QACA,MACA,OACA,OACA,OACA,QACA,OACA,MACA,MACA,OACA,MACA,OACA,SACA,OACA,OACA,KACA,QACA,WACA,MACA,UACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,KACA,QACA,UACA,OACA,OACA,aACA,KACA,KACA,QACA,KACA,MACA,MACA,SACA,MACA,OACA,OACA,MACA,OACA,OACA,WACA,QACA,OACA,KACA,KACA,OACA,SACA,OACA,MACA,MACA,MACA,OACA,MACA,QACA,SACA,KACA,OACA,UACA,QACA,QACA,QACA,SACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,KACA,QACA,OACA,MACA,SACA,OACA,OACA,OACA,QACA,OACA,KACA,OACA,MACA,OACA,SACA,SACA,KACA,OACA,UACA,OACA,OACA,OACA,OACA,QACA,WACA,OACA,OACA,QACA,OACA,KACA,QACA,OACA,OACA,OACA,SACA,WACA,OACA,QACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,QACA,QACA,QACA,WACA,OACA,KACA,aACA,OACA,QACA,MACA,OACA,KACA,KACA,OACA,OACA,QACA,OACA,QACA,QACA,KACA,SACA,QACA,MACA,OACA,YACA,OACA,UACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,QACA,OACA,MACA,QACA,OACA,QACA,OACA,OACA,QACA,OACA,KACA,QACA,QACA,MACA,OACA,SACA,SACA,QACA,KACA,QACA,QACA,QACA,OACA,OACA,OACA,OACA,SACA,OACA,MACA,OACA,QACA,YACA,MACA,SACA,OACA,QACA,OACA,KACA,WACA,SACA,QACA,OACA,OACA,KACA,QACA,OACA,OACA,OACA,OACA,QACA,MACA,KACA,QACA,KACA,aACA,aACA,OACA,OACA,OACA,KACA,OACA,OACA,OACA,KACA,SACA,QACA,YACA,OACA,SACA,SACH,EACE,UAAa,CAAA,CACf,CAAE,EACD,GAAM,CAAE,SAAY,CACnB,aAAgB,CAAA,EAChB,aAAgB,CAAA,EAChB,UAAa,CAAE,OAAU,2iCAA2iC,CACtkC,CAAE,EACD,GAAM,CAAE,SAAY,CACnB,aAAgB,CAAA,EAChB,aAAgB,CACf,OACA,OACA,UACA,OACA,KACA,OACA,QACA,OACA,OACA,OACA,QACA,OACA,QACA,MACA,QACA,OACA,KACA,QACA,MACA,OACA,OACA,MACA,OACA,MACA,OACA,OACA,OACA,OACA,KACA,OACA,MACA,OACA,OACA,SACA,MACA,OACA,MACA,QACA,KACA,QACA,MACA,OACA,MACA,MACA,KACA,KACA,MACA,OACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,OACA,KACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,MACA,OACA,QACA,OACA,OACA,MACA,KACA,SACA,MACA,KACA,OACA,SACA,QACA,OACA,MACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,KACA,QACA,MACA,OACA,QACA,MACA,MACA,MACA,OACA,OACA,MACA,OACA,OACA,SACA,OACA,UACA,OACA,KACA,MACA,OACA,MACA,MACA,QACA,MACA,OACA,QACA,WACA,KACA,MACA,MACA,OACA,OACA,MACA,MACA,KACA,SACA,KACA,OACA,QACA,MACA,MACA,KACA,OACA,MACA,OACA,KACA,OACA,OACA,KACA,OACA,OACA,OACA,OACA,SACA,OACA,MACA,OACA,MACA,KACH,EACE,UAAa,CAAA,CACf,CAAE,EACD,GAAM,CAAE,SAAY,CACnB,aAAgB,CAAA,EAChB,aAAgB,CACf,QACA,SACA,QACA,OACA,OACA,SACA,OACA,OACA,OACA,OACA,SACA,QACA,UACA,OACA,OACA,SACA,MACA,OACA,QACA,MACA,SACA,MACA,QACA,OACA,OACA,OACA,SACA,OACA,OACA,UACA,QACA,OACA,MACA,OACA,MACA,OACA,QACA,OACA,QACA,MACA,OACA,QACA,OACA,MACA,SACA,QACA,OACA,QACA,OACA,MACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,QACA,QACA,OACA,SACA,OACA,OACA,QACA,OACA,QACA,QACA,MACA,SACA,OACA,MACA,OACA,OACA,QACA,SACA,QACA,SACA,QACA,SACA,MACA,KACA,QACA,MACA,QACA,QACA,QACA,QACA,KACA,OACA,SACA,OACA,QACA,MACA,OACA,SACA,OACA,OACA,KACA,KACA,OACA,OACA,UACA,MACA,QACA,SACA,OACA,SACA,QACA,OACA,SACA,OACA,OACA,OACA,OACA,OACA,OACA,SACA,OACA,MACA,QACA,QACA,SACA,OACA,QACA,OACA,OACA,OACA,UACA,QACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,UACA,MACA,QACA,OACA,OACA,QACA,OACA,QACA,KACA,OACA,MACA,QACA,QACA,QACA,OACA,QACA,QACA,SACA,WACA,QACA,SACA,MACA,OACA,MACA,QACA,OACA,MACH,EACE,UAAa,CAAA,CACf,CAAE,EACD,GAAM,CAAE,SAAY,CACnB,aAAgB,CAAA,EAChB,aAAgB,CACf,OACA,UACA,UACA,KACA,OACA,UACA,OACA,QACA,QACA,MACA,OACA,OACA,OACA,QACA,QACA,SACA,OACA,QACA,KACA,OACA,QACA,MACA,SACA,OACA,MACA,OACA,QACA,OACA,SACA,OACA,QACA,QACA,OACA,QACA,QACA,QACA,SACA,MACA,SACA,WACA,UACA,OACA,KACA,OACA,OACA,aACA,QACA,OACA,OACA,QACA,WACA,OACA,QACA,UACA,OACA,QACA,OACA,KACA,OACA,OACA,OACA,KACA,UACA,OACA,SACA,QACA,OACA,OACA,SACA,OACA,UACA,OACA,OACA,KACA,SACA,QACA,YACA,KACA,MACA,YACA,QACA,aACH,EACE,UAAa,CAAA,CACf,CAAE,EACD,GAAM,CAAE,SAAY,CACnB,aAAgB,CAAA,EAChB,aAAgB,CACf,OACA,OACA,OACA,OACA,SACA,SACA,OACA,OACA,QACA,SACA,SACA,OACA,SACA,QACA,QACA,OACA,SACA,OACA,OACA,OACA,OACA,MACA,OACA,SACA,MACA,QACA,OACA,OACA,MACA,OACA,MACA,KACA,OACA,aACA,OACA,OACA,OACA,OACA,KACA,SACA,OACA,OACA,SACA,OACA,IACH,EACE,UAAa,CAAA,CACf,CAAE,EACD,GAAM,CAAE,KAAQ,CACf,aAAgB,CACf,OAAQ,CACP,MAAS,YACT,OAAU,YACV,OAAU,EACd,EACG,OAAQ,CACP,MAAS,eACT,OAAU,eACV,OAAU,EACd,CACA,EACE,aAAgB,CAAA,EAChB,UAAa,CACZ,UAAa,6sJACb,aAAgB,ytKACnB,CACA,CAAE,EACD,GAAM,CAAE,SAAY,CACnB,aAAgB,CAAA,EAChB,aAAgB,CACf,UACA,OACA,SACA,OACA,OACA,OACA,UACA,QACA,UACA,QACA,WACA,QACA,OACA,OACA,QACA,UACA,OACA,MACA,OACA,QACA,OACA,MACA,QACA,OACA,KACA,UACA,MACA,KACA,OACA,OACA,OACA,SACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,OACA,OACA,KACA,OACA,QACA,SACA,OACA,OACA,QACA,OACA,OACA,QACA,QACA,OACA,QACA,UACA,OACA,QACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,OACA,SACA,SACA,WACA,OACA,OACA,SACA,OACA,QACA,OACA,QACA,OACA,OACA,OACA,KACA,OACA,WACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,MACA,SACA,QACA,SACA,WACA,QACA,MACA,QACA,OACA,MACA,OACA,OACA,OACA,QACA,MACA,OACA,QACA,OACA,SACA,OACA,OACA,MACA,OACA,OACA,QACA,OACA,SACA,OACA,OACA,KACA,OACA,OACA,SACA,OACA,QACA,OACA,MACA,QACA,MACA,WACA,QACA,SACA,KACA,QACA,OACA,OACA,SACA,MACA,MACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,OACA,OACA,QACA,QACA,MACA,QACA,OACA,OACA,SACA,QACA,OACA,OACA,OACA,MACA,OACA,OACA,UACA,OACA,OACA,QACA,aACA,QACA,OACH,EACE,UAAa,CAAA,CACf,CAAE,EACD,KAAQ,CACP,SAAY,CACX,aAAgB,CACf,GAAM,CACL,MAAS,WACT,OAAU,uBACV,OAAU,EACf,EACI,GAAM,CACL,MAAS,MACT,OAAU,gBACV,OAAU,EACf,EACI,GAAM,CACL,MAAS,MACT,OAAU,iCACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,MACT,OAAU,MACV,OAAU,EACf,EACI,EAAK,CACJ,OAAU,qBACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,qBACT,OAAU,EACf,EACI,EAAK,CACJ,MAAS,mBACT,OAAU,KACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,UACT,OAAU,WACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,KACT,OAAU,YACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,iBACT,OAAU,EACf,EACI,MAAO,CACN,MAAS,eACT,OAAU,EACf,EACI,MAAO,CACN,OAAU,WACV,OAAU,EACf,EACI,MAAO,CACN,MAAS,oBACT,OAAU,uEACV,OAAU,EACf,CACA,EACG,aAAgB,CAAA,EAChB,UAAa,CACZ,IAAO,MACP,kBAAqB,krJACrB,gBAAmB,yLACnB,SAAY,+SACZ,SAAY,iyDACZ,QAAW,krJACX,GAAM,mCACN,IAAO,MACP,IAAO,8uFACP,KAAQ,s2LACR,kBAAqB,mhCACrB,SAAY,8KACZ,IAAO,+BACP,aAAgB,8zDAChB,GAAM,mCACN,GAAM,uEACN,IAAO,+BACP,KAAQ,SACZ,CACA,EACE,SAAY,CACX,aAAgB,CACf,GAAM,CACL,MAAS,iBACT,OAAU,yCACV,OAAU,EACf,EACI,GAAM,CACL,OAAU,kDACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,MACT,OAAU,MACV,OAAU,EACf,EACI,EAAK,CACJ,OAAU,+BACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,sBACT,OAAU,0FACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,WACT,OAAU,6BACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,SACT,OAAU,4CACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,qDACT,OAAU,wCACV,OAAU,EACf,EACI,MAAO,CACN,MAAS,uBACT,OAAU,yCACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,wBACT,OAAU,qCACV,OAAU,EACf,EACI,IAAO,CACN,MAAS,OACT,OAAU,EACf,CACA,EACG,aAAgB,CAAA,EAChB,UAAa,CACZ,OAAU,6BACV,KAAQ,uJACR,IAAO,MACP,OAAU,miBACV,QAAW,64IACX,QAAW,qNACX,IAAO,MACP,OAAU,smLACV,SAAY,kwCACZ,SAAY,q4PACZ,SAAY,8BACZ,QAAW,4jCACX,WAAc,0MACd,OAAU,oiCACV,KAAQ,wBACR,IAAO,iEACP,OAAU,45KACV,IAAO,8BACX,CACA,EACE,KAAQ,CACP,aAAgB,CACf,GAAM,CACL,MAAS,YACT,OAAU,oCACV,OAAU,EACf,EACI,GAAM,CACL,MAAS,WACT,OAAU,yDACV,OAAU,EACf,EACI,GAAM,CACL,MAAS,yDACT,OAAU,oCACV,OAAU,EACf,EACI,GAAM,CACL,MAAS,YACT,OAAU,qCACV,OAAU,EACf,EACI,OAAQ,CACP,MAAS,gBACT,OAAU,wEACV,OAAU,EACf,EACI,OAAQ,CACP,MAAS,iCACT,OAAU,yCACV,OAAU,EACf,EACI,GAAM,CACL,MAAS,MACT,OAAU,yCACV,OAAU,EACf,EACI,GAAM,CACL,MAAS,MACT,OAAU,ssIACV,OAAU,EACf,EACI,EAAK,CACJ,MAAS,MACT,OAAU,MACV,OAAU,EACf,EACI,MAAO,CACN,OAAU,qBACV,OAAU,EACf,EACI,MAAO,CACN,MAAS,qBACT,OAAU,EACf,EACI,MAAO,CACN,MAAS,WACT,OAAU,OACV,OAAU,EACf,EACI,MAAO,CACN,MAAS,aACT,OAAU,aACV,OAAU,EACf,EACI,EAAK,CACJ,MAA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]} |