{"version":3,"file":"regex-repo.cjs","sources":["../src/lib/lockdown-re.js","../src/network.mjs","../src/aws.js","../src/lib/uni-non-ascii.mjs","../src/domain-name.mjs","../src/contacts.js","../src/lib/css-color-data.js","../src/lib/numbers-strings.js","../src/css.js","../src/date-times.mjs","../src/ids.js","../src/javascript.js","../src/npm.js","../src/numbers.js","../src/url.mjs"],"sourcesContent":["/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport const lockdownRe = (str, flags) => new RegExp(`^${str}$`, flags)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport { lockdownRe } from './lib/lockdown-re'\n\n// IP address dotted notation octets\n// excludes loopback network 0.0.0.0\n// excludes reserved space >= 224.0.0.0\n// excludes network & broacast addresses\n// (first & last IP address of each class)\nexport const ipHostReString = '(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])'\n  + '(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}'\n  + '(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))'\n\n/**\n * Matches a valid, non-localhost IP address.\n * @category Network\n */\nexport const ipHostRe = lockdownRe(ipHostReString)\n\nexport const ipTupleReString = '(?:0|1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])'\n\nexport const ipAddressReString = `(?:${ipTupleReString}\\\\.){3}${ipTupleReString}`\n\n/**\n * Matches a string in IP address format. Use 'ipHostRe' to match actually valid IP addresses.\n * @category Network\n */\nexport const ipAddressRe = lockdownRe(ipAddressReString)\n\n// credit to: https://stackoverflow.com/a/17871737/929494\nexport const ipV6ReString =\n  '(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|' // 1:2:3:4:5:6:7:8\n  + '([0-9a-fA-F]{1,4}:){1,7}:|' // 1::                              1:2:3:4:5:6:7::\n  + '([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' // 1::8             1:2:3:4:5:6::8  1:2:3:4:5:6::8\n  + '([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' // 1::7:8           1:2:3:4:5::7:8  1:2:3:4:5::8\n  + '([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' // 1::6:7:8         1:2:3:4::6:7:8  1:2:3:4::8\n  + '([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' // 1::5:6:7:8       1:2:3::5:6:7:8  1:2:3::8\n  + '([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' // 1::4:5:6:7:8     1:2::4:5:6:7:8  1:2::8\n  + '[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' // 1::3:4:5:6:7:8   1::3:4:5:6:7:8  1::8\n  + ':((:[0-9a-fA-F]{1,4}){1,7}|:)|' // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8 ::8       ::\n  // (link-local IPv6 addresses with zone index)\n  + 'fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|' // fe80::7:8%eth0   fe80::7:8%1\n  + '::(ffff(:0{1,4}){0,1}:){0,1}'\n  + '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}'\n  // (IPv4-mapped IPv6 addresses and IPv4-translated addresses)\n  + '(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|' // ::255.255.255.255   ::ffff:255.255.255.255  ::ffff:0:255.255.255.255\n  + '([0-9a-fA-F]{1,4}:){1,4}:'\n  + '((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\\\.){3,3}'\n  // 2001:db8:3:4::192.0.2.33  64:ff9b::192.0.2.33 (IPv4-Embedded IPv6 Address)\n  + '(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))'\n\n/**\n * Matches a string in IPV6 format.\n * @category Network\n */\nexport const ipV6Re = lockdownRe(ipV6ReString)\n\nexport const ipVFutureReString = '(?:v[0-9a-fA-F]+\\\\.[a-zA-Z0-9~_.!$&\\'()*+,;=:-]+)'\n\n/**\n * Matches potential future IP protocols.\n * @category Network\n */\nexport const ipVFutureRe = lockdownRe(ipVFutureReString)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport { ipAddressReString } from './network'\n\nconst invalidS3Partials = `(?!^${ipAddressReString}|^xn--|^sthree-|.+-s3alias$|.+--ol-s3$)`\n\nexport const awsS3TaBucketNameReString = invalidS3Partials + '^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$'\n\n/**\n * Matches (most) S3 Transfer Acceleration compatible S3 bucket name. Note `awsS3TaBucketNameReString` cannot be used\n * for partial matches.\n * @category AWS\n */\nexport const awsS3TaBucketNameRe = new RegExp(awsS3TaBucketNameReString)\n\nexport const awsS3BucketNameReString = invalidS3Partials + '^[a-z0-9](?:\\\\.?[a-z0-9-]+)+[a-z0-9]$'\n\n/**\n * Matches (most) valid S3 bucket name. Note `awsS3BucketNameReString` cannot be used for partial matches. Does not\n * enforce 63 character limit.\n * @category AWS\n */\nexport const awsS3BucketNameRe = new RegExp(awsS3BucketNameReString)\n","export const uniNonASCII = '\\\\u0080-\\\\u{e007f}'\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport { lockdownRe } from './lib/lockdown-re'\nimport { ipTupleReString } from './network'\nimport { uniNonASCII } from './lib/uni-non-ascii'\n\nexport const localhostReString = `(?:localhost|127(?:\\\\.${ipTupleReString}){3}|::1|0:0:0:0:0:0:0:1)`\n\n/**\n * Matches any representation of localhost; the special name, IPV4 loopbacks, or IPV6 loopbacks.\n * @category Domain names\n */\nexport const localhostRe = lockdownRe(localhostReString)\n\n// note the 'v' flag breaks on Ubuntu\nexport const tldNameReString = `(?:[${uniNonASCII}]|[a-zA-Z${uniNonASCII}][a-zA-Z0-9${uniNonASCII}]{1,62})`\n\n/**\n * Matches a Top Level Domain (TLD). See [domain name rules](#domain-name-rules). When using the partial string to\n * create a Re, you must use the 'u' or 'v' flag.\n * @category Domain names\n */\nexport const tldNameRe = lockdownRe(tldNameReString, 'u')\n\nexport const domainLabelReString = `(?:[a-zA-Z${uniNonASCII}]|[a-zA-Z0-9${uniNonASCII}]{2}|`\n  // otherwise, verify the 3rd and 4th positions are not '-'\n  + `[a-zA-Z0-9${uniNonASCII}][a-zA-Z0-9${uniNonASCII}\\\\-](?!--)[a-zA-Z0-9${uniNonASCII}\\\\-]{0,60}[a-zA-Z0-9${uniNonASCII}])`\n\n/**\n * Matches a non-tld domain label. Enforces the 63 byte domain label limit for non-international (all ASCII) labels.\n * See [domain name rules](#domain-name-rules). When using the partial string to create a Re, you must use the 'u' or\n * 'v' flag.\n * @category Domain names\n */\nexport const domainLabelRe = lockdownRe(domainLabelReString, 'u')\n\n// export const fqDomainNameReString = `(?![0-9\\\\p{L}.\\\\-]{256,})(?:${domainLabelReString}\\\\.)+${tldNameReString}`\nexport const fqDomainNameReString = `(?!.{256,})(?:${domainLabelReString}\\\\.)+${tldNameReString}`\n\n/**\n * Matches fully qualified domain name (one or more subdomains + TLD). Partially enforces the 255 byte FQ domain name\n * limit, but this is only valid for non-international (all ASCII) domain names because we can only count characters.\n * When using the partial string to create a Re, you must use the 'u' or 'v' flag.\n * @category Domain names\n */\nexport const fqDomainNameRe = lockdownRe(fqDomainNameReString, 'u')\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport { fqDomainNameReString } from './domain-name'\nimport { lockdownRe } from './lib/lockdown-re'\nimport { uniNonASCII } from './lib/uni-non-ascii'\n\nexport const usPhoneReString = '(\\\\+?1[._ -]?)?(\\\\(\\\\d{3}\\\\)|\\\\d{3})[._ -]?\\\\d{3}[._ -]?\\\\d{4}'\n\n/**\n * Matches US phone numbers with optional country code and area code.\n * @category Contacts\n */\nexport const usPhoneRe = lockdownRe(usPhoneReString)\n\nexport const zipCodeReString = '\\\\d{5}([._ -]?\\\\d{4})?'\n\n/**\n * Matches 5 or 9 digit US zip codes.\n * @category Contacts\n */\nexport const zipCodeRe = lockdownRe(zipCodeReString)\n\nexport const emailReString = `([a-zA-Z0-9${uniNonASCII}!#$%&'*+\\\\/=?^_\\`\\\\{\\\\|\\\\}~\\\\-]+(?:\\\\.[a-zA-Z0-9${uniNonASCII}!#$%&'*+\\\\/=?^_\\`\\\\{\\\\|\\\\}~\\\\-]+)*|\"(?:[\\\\x20-\\\\x21\\\\x23-\\\\x5b\\\\x5d-\\\\x7e${uniNonASCII}]|\\\\\\\\[\\\\x20-\\\\x7e${uniNonASCII}])*\")@(${fqDomainNameReString})`\n\n/**\n * Match most valid emails. Provides matching groups 1 (user name) and 2 (domain). When using the partial string to\n * create a Re, you must use the 'u' flag.\n * @category Contacts\n */\nexport const emailRe = lockdownRe(emailReString, 'u')\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nexport const cssPreColors1 = {\n  black   : '#000000',\n  silver  : '#c0c0c0',\n  gray    : '#808080',\n  white   : '#ffffff',\n  maroon  : '#800000',\n  red     : '#ff0000',\n  purple  : '#800080',\n  fuchsia : '#ff00ff',\n  green   : '#008000',\n  lime    : '#00ff00',\n  olive   : '#808000',\n  yellow  : '#ffff00',\n  navy    : '#000080',\n  blue    : '#0000ff',\n  teal    : '#008080',\n  aqua    : '#00ffff',\n}\n\nexport const cssPreColors2 = Object.assign({\n  orange : '#ffa500',\n}, cssPreColors1)\n\nexport const cssPreColors3 = Object.assign({\n  aliceblue            : '#f0f8ff',\n  antiquewhite         : '#faebd7',\n  aquamarine           : '#7fffd4',\n  azure                : '#f0ffff',\n  beige                : '#f5f5dc',\n  bisque               : '#ffe4c4',\n  blanchedalmond       : '#ffebcd',\n  blueviolet           : '#8a2be2',\n  brown                : '#a52a2a',\n  burlywood            : '#deb887',\n  cadetblue            : '#5f9ea0',\n  chartreuse           : '#7fff00',\n  chocolate            : '#d2691e',\n  coral                : '#ff7f50',\n  cornflowerblue       : '#6495ed',\n  cornsilk             : '#fff8dc',\n  crimson              : '#dc143c',\n  cyan                 : 'aqua',\n  darkblue             : '#00008b',\n  darkcyan             : '#008b8b',\n  darkgoldenrod        : '#b8860b',\n  darkgray             : '#a9a9a9',\n  darkgreen            : '#006400',\n  darkgrey             : '#a9a9a9',\n  darkkhaki            : '#bdb76b',\n  darkmagenta          : '#8b008b',\n  darkolivegreen       : '#556b2f',\n  darkorange           : '#ff8c00',\n  darkorchid           : '#9932cc',\n  darkred              : '#8b0000',\n  darksalmon           : '#e9967a',\n  darkseagreen         : '#8fbc8f',\n  darkslateblue        : '#483d8b',\n  darkslategray        : '#2f4f4f',\n  darkslategrey        : '#2f4f4f',\n  darkturquoise        : '#00ced1',\n  darkviolet           : '#9400d3',\n  deeppink             : '#ff1493',\n  deepskyblue          : '#00bfff',\n  dimgray              : '#696969',\n  dimgrey              : '#696969',\n  dodgerblue           : '#1e90ff',\n  firebrick            : '#b22222',\n  floralwhite          : '#fffaf0',\n  forestgreen          : '#228b22',\n  gainsboro            : '#dcdcdc',\n  ghostwhite           : '#f8f8ff',\n  gold                 : '#ffd700',\n  goldenrod            : '#daa520',\n  greenyellow          : '#adff2f',\n  grey                 : '#808080',\n  honeydew             : '#f0fff0',\n  hotpink              : '#ff69b4',\n  indianred            : '#cd5c5c',\n  indigo               : '#4b0082',\n  ivory                : '#fffff0',\n  khaki                : '#f0e68c',\n  lavender             : '#e6e6fa',\n  lavenderblush        : '#fff0f5',\n  lawngreen            : '#7cfc00',\n  lemonchiffon         : '#fffacd',\n  lightblue            : '#add8e6',\n  lightcoral           : '#f08080',\n  lightcyan            : '#e0ffff',\n  lightgoldenrodyellow : '#fafad2',\n  lightgray            : '#d3d3d3',\n  lightgreen           : '#90ee90',\n  lightgrey            : '#d3d3d3',\n  lightpink            : '#ffb6c1',\n  lightsalmon          : '#ffa07a',\n  lightseagreen        : '#20b2aa',\n  lightskyblue         : '#87cefa',\n  lightslategray       : '#778899',\n  lightslategrey       : '#778899',\n  lightsteelblue       : '#b0c4de',\n  lightyellow          : '#ffffe0',\n  limegreen            : '#32cd32',\n  linen                : '#faf0e6',\n  magenta              : 'fuchsia',\n  mediumaquamarine     : '#66cdaa',\n  mediumblue           : '#0000cd',\n  mediumorchid         : '#ba55d3',\n  mediumpurple         : '#9370db',\n  mediumseagreen       : '#3cb371',\n  mediumslateblue      : '#7b68ee',\n  mediumspringgreen    : '#00fa9a',\n  mediumturquoise      : '#48d1cc',\n  mediumvioletred      : '#c71585',\n  midnightblue         : '#191970',\n  mintcream            : '#f5fffa',\n  mistyrose            : '#ffe4e1',\n  moccasin             : '#ffe4b5',\n  navajowhite          : '#ffdead',\n  oldlace              : '#fdf5e6',\n  olivedrab            : '#6b8e23',\n  orangered            : '#ff4500',\n  orchid               : '#da70d6',\n  palegoldenrod        : '#eee8aa',\n  palegreen            : '#98fb98',\n  paleturquoise        : '#afeeee',\n  palevioletred        : '#db7093',\n  papayawhip           : '#ffefd5',\n  peachpuff            : '#ffdab9',\n  peru                 : '#cd853f',\n  pink                 : '#ffc0cb',\n  plum                 : '#dda0dd',\n  powderblue           : '#b0e0e6',\n  rosybrown            : '#bc8f8f',\n  royalblue            : '#4169e1',\n  saddlebrown          : '#8b4513',\n  salmon               : '#fa8072',\n  sandybrown           : '#f4a460',\n  seagreen             : '#2e8b57',\n  seashell             : '#fff5ee',\n  sienna               : '#a0522d',\n  skyblue              : '#87ceeb',\n  slateblue            : '#6a5acd',\n  slategray            : '#708090',\n  slategrey            : '#708090',\n  snow                 : '#fffafa',\n  springgreen          : '#00ff7f',\n  steelblue            : '#4682b4',\n  tan                  : '#d2b48c',\n  thistle              : '#d8bfd8',\n  tomato               : '#ff6347',\n  turquoise            : '#40e0d0',\n  violet               : '#ee82ee',\n  wheat                : '#f5deb3',\n  whitesmoke           : '#f5f5f5',\n  yellowgreen          : '#9acd32',\n}, cssPreColors2)\n\nexport const cssPreColors = Object.assign({\n  rebeccapurple : '#663399',\n}, cssPreColors3)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n// Note, this module is used internally, so these aStr exported to for other\n// modules to use, but the file is not Str-exported through index.\nexport const plainFloatStr = '[+-]?(0(\\\\.[0-9]+)?|[1-9][0-9]*(\\\\.[0-9]+)?)'\n\nexport const scientificFloatStr = `${plainFloatStr}[eE]${plainFloatStr}`\n\nexport const floatStr = `${plainFloatStr}([eE]${plainFloatStr})?`\n\nexport const zeroTo1FloatStr = '(0|0?\\\\.[0-9]+|1(\\\\.0+)?)'\n\nexport const zeroTo100PercentStr = '([0-9]|[1-9][0-9]|100)\\\\%'\n\nexport const zeroTo100FloatPercentStr =\n  '(([0-9]|[1-9][0-9])(\\\\.[0-9]+)?|100(\\\\.0+)?)\\\\%'\n\nexport const zeroTo255Str = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'\n\nexport const zeroTo255FloatStr =\n  '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4])(\\\\.[0-9]+)?|255(\\\\.0+)?)'\n\nexport const zeroTo360Str = '([0-9]|[1-9][0-9]|[1-2][0-9][0-9]|3[0-5][0-9]|360)'\n\nexport const zeroTo360FloatStr =\n  '(([0-9]|[1-9][0-9]|[1-2][0-9][0-9]|3[0-5][0-9])(\\\\.[0-9]+)?|360(\\\\.0+)?)'\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport * as pre from './lib/css-color-data'\nimport { lockdownRe } from './lib/lockdown-re'\nimport {\n  floatStr,\n  zeroTo255Str,\n  zeroTo1FloatStr,\n  zeroTo100PercentStr,\n  zeroTo100FloatPercentStr,\n  zeroTo255FloatStr,\n  zeroTo360Str\n} from './lib/numbers-strings'\n\nexport const hexColorNoAlphaReString = '#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})'\n\n/**\n * Matches hex specified RGB colors with no alpha channel.\n * @category CSS\n */\nexport const hexColorNoAlphaRe = lockdownRe(hexColorNoAlphaReString)\n\n// level 4 adds alpha hex support\nexport const hexColorAlphaReString = '#([a-fA-F0-9]{6}|[a-fA-F0-9]{8}|[a-fA-F0-9]{3,4})'\n\n/**\n * Matches hex specified RGBA colors with an alpha channel.\n * @category CSS\n */\nexport const hexColorAlphaRe = lockdownRe(hexColorAlphaReString)\n\nexport const cssPreColors1ReString = '(?:' + Object.keys(pre.cssPreColors1).join('|') + ')'\n\n/**\n * Matches CSS1 predefined color names.\n * @category CSS\n */\nexport const cssPreColors1Re = lockdownRe(cssPreColors1ReString)\n\nexport const cssPreColors2ReString = '(?:' + Object.keys(pre.cssPreColors2).join('|') + ')'\n\n/**\n * Matches CSS2 predefined color names.\n * @category CSS\n */\nexport const cssPreColors2Re = lockdownRe(cssPreColors2ReString)\n\nexport const cssPreColors3ReString = '(?:' + Object.keys(pre.cssPreColors3).join('|') + ')'\n\n/**\n * Matches CSS3 predefined color names.\n * @category CSS\n */\nexport const cssPreColors3Re = lockdownRe(cssPreColors3ReString)\n\nexport const cssPreColorsReString = '(?:' + Object.keys(pre.cssPreColors).join('|') + ')'\n\n/**\n * Matches CSS4 predefined color names.\n * @category CSS\n */\nexport const cssPreColorsRe = lockdownRe(cssPreColorsReString)\n\nconst alphaStr = `(${zeroTo1FloatStr}|${zeroTo100PercentStr})`\nconst rgb1IntStr = `rgb\\\\((\\\\s*${zeroTo255Str}\\\\s*,){2}\\\\s*${zeroTo255Str}\\\\s*\\\\)`\nconst rgb1PercStr = `rgb\\\\((\\\\s*${zeroTo100PercentStr}\\\\s*,){2}\\\\s*${zeroTo100PercentStr}\\\\s*\\\\)`\nconst rgba3IntStr = `rgba\\\\((\\\\s*${zeroTo255Str}\\\\s*,){3}\\\\s*${alphaStr}\\\\s*\\\\)`\nconst rgba3PercStr = `rgba\\\\((\\\\s*${zeroTo100PercentStr}\\\\s*,){3}\\\\s*${alphaStr}\\\\s*\\\\)`\n\nexport const rgbFuncReString = '(?:' + [rgb1IntStr, rgb1PercStr].join('|') + ')'\n\n/**\n * Matches CSS1 'rgb(...) using '0...255 and percent (integer) notation.\n * @category CSS\n */\nexport const rgbFuncRe = lockdownRe(rgbFuncReString)\n\nexport const rgbaFuncReString = '(?:' + [rgba3IntStr, rgba3PercStr].join('|') + ')'\n\n/**\n * Matches CSS3 'rgba(...) using '0...255 and percent (integer) notation.\n * @category CSS\n */\nexport const rgbaFuncRe = lockdownRe(rgbaFuncReString)\n\n// In level 4, rgba is an alias for rgb, supports floats, and space notation\n// NOTE: The spec allows float values like '+.25e2%', which cannot be recognized\n// via Re and are not supported.\nconst alphaFloatStr = `(${zeroTo1FloatStr}|${zeroTo100FloatPercentStr})`\nconst rgbDecFuncStr = `(\\\\s*${zeroTo255FloatStr}\\\\s*,){2}\\\\s*${zeroTo255FloatStr}\\\\s*(,\\\\s*${alphaFloatStr}\\\\s*)?`\nconst rgbPercFuncStr = `(\\\\s*${zeroTo100FloatPercentStr}\\\\s*,){2}\\\\s*${zeroTo100FloatPercentStr}\\\\s*(,\\\\s*${alphaFloatStr}\\\\s*)?`\nconst rgbDecSpaceStr = `(\\\\s*${zeroTo255FloatStr}\\\\s+){2}${zeroTo255FloatStr}\\\\s*(/\\\\s*${alphaFloatStr}\\\\s*)?`\nconst rgbPercSpaceStr = `(\\\\s*${zeroTo100FloatPercentStr}\\\\s+){2}${zeroTo100FloatPercentStr}\\\\s*(/\\\\s*${alphaFloatStr}\\\\s*)?`\n\nexport const rgbReString = `rgba?\\\\((${rgbDecFuncStr}|${rgbPercFuncStr}|${rgbDecSpaceStr}|${rgbPercSpaceStr})\\\\s*\\\\)`\n\n/**\n * Matches CSS4 'rgb(...) and rgba(...) functios  using '0...255 and percent (float) notation.\n * @category CSS\n */\nexport const rgbRe = lockdownRe(rgbReString)\n\nconst hsl3BaseStr = `\\\\s*${zeroTo360Str}(deg)?\\\\s*(,\\\\s*${zeroTo100PercentStr}\\\\s*)`\nconst hsl3Opts = [`hsl\\\\(${hsl3BaseStr}{2}\\\\)`, `hsla\\\\(${hsl3BaseStr}{3}\\\\)`]\n\nexport const hsl3ReString = '(?:' + hsl3Opts.join('|') + ')'\n\n/**\n * Matches CSS3 'hsl(...) and hsla(...) deg and percent notation.\n * @category CSS\n */\nexport const hsl3Re = lockdownRe(hsl3ReString)\n\nexport const hslReString =\n  `hsla?\\\\(\\\\s*${floatStr}(deg|grad|rad|turn)?\\\\s*(,\\\\s*${zeroTo100FloatPercentStr}\\\\s*){2,3}\\\\)`\n\n/**\n * Matches CSS4 'hsl(...) and hsla(...) deg, grad, rad, turn and percent notation.\n * @category CSS\n */\nexport const hslRe = lockdownRe(hslReString)\n\nexport const cssColor3ReString = '(?:'\n  + [hexColorNoAlphaReString, rgb1IntStr, rgb1PercStr, rgba3IntStr, rgba3PercStr]\n    .concat(Object.keys(pre.cssPreColors3))\n    .concat(hsl3Opts)\n    .join('|')\n    + ')'\n\n/**\n * Matches CSS3 'hex, rgb, rgba, hsl, and predefined colors.\n * @category CSS\n */\nexport const cssColor3Re = lockdownRe(cssColor3ReString)\n\nexport const cssColorReString = '(?:'\n  + [hexColorAlphaReString, rgbReString, hslReString]\n    .concat(Object.keys(pre.cssPreColors))\n    .join('|')\n    + ')'\n\n/**\n * Matches CSS4 'hex, rgb, rgba, hsl, and predefined colors.\n * @category CSS\n */\nexport const cssColorRe = lockdownRe(cssColorReString)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport { lockdownRe } from './lib/lockdown-re'\n\n// Started RE based on https://www.myintervals.com/blog/2009/05/20/iso-8601-date-validation-that-doesnt-suck/\n// Made some corrections, rearranged capture groups.\n\n/**\n * An RE ready string that matches the day designation portion of an ISO 8601 date+time. Provides matching groups 1 (\n * year), 3 (month), and 4 (day of month), 5 (week of year), 6 (day of week date), and 7 (ordinal or Julian date).\n * @category Date time\n */\nexport const iso8601DayReString = '(?:([+-]?\\\\d{4})(?:(-?)(?:(0[1-9]|1[0-2])(?:\\\\2([12]\\\\d|0[1-9]|3[01])?)?|W([0-4]\\\\d|5[0-3])\\\\2([1-7])?|(00[1-9]|0[1-9]\\\\d|[12]\\\\d{2}|3(?:[0-5]\\\\d|6[1-6])))?)?)'\n\nconst eod = '(24(?<endSep>:?)00\\\\k<endSep>00)'\nconst frac = '(?:[.,](\\\\d+))'\nconst hr = `(?:([01]\\\\d|2[0-3])${frac}?)`\nconst min = `(?:([0-5]\\\\d)${frac}?)`\nconst sec = `(?:([0-5]\\\\d|60)${frac}?)`\nconst tz = '([zZ]|(?:[+-](?!00(?::?00)?)(?:[01]\\\\d|2[0-3])(?::?[0-5]\\\\d)?))'\n\nexport const iso8601TimeReString = `(?:(?:${eod}|${hr}(?:(?<timeSep>:?)${min}(?:\\\\k<timeSep>${sec})?)?)${tz}?)`\n\n/**\n * Matches the time designation portion of an ISO 8601 date+time. Provides matching groups 1 (special end of day time),\n * 3 (hours), 3 (fraction of hour), 5 (minutes), 6 (fraction of minute), 7 (seconds), and 8 (fraction of seconds).\n * @category Date time\n */\nexport const iso8601DateReString = `${iso8601DayReString}(?:T${iso8601TimeReString})?`\n\n/**\n * Matches an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date time like '20240101T1212Z. Provides matching\n * groups 1 (year), 3 (month), and 4 (day of month), 5 (week of year), 6 (day of week date), and 7 (ordinal or Julian\n * date), 8 (special end of day time), 10 (hour), 11 (decimal fraction of hour), 13 (minute), 14 (decimal fraction of\n * minute), 15 (seconds), 16 (decimal fraction of a second), and 17 (timezone designation). (Groups 2, 11, and 13 are\n * internal back references.)\n * @category Date time\n */\nexport const iso8601DateRe = lockdownRe(iso8601DateReString)\n\nexport const iso8601DateTimeReString = `${iso8601DayReString}T${iso8601TimeReString}`\n\n/**\n * Matches an [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) _requiring_ both date and time components. See\n * {@link iso8601DateRe} for matching groups.\n * @category Date time\n */\nexport const iso8601DateTimeRe = lockdownRe(iso8601DateTimeReString)\n\n/**\n * An RE ready string that matches the day designation portion of an RFC 2822 date+time. Provides matching groups 1\n * (day of week name), 2 (day of month), 3 (month name), 4 (year).\n * @category Date time\n */\nexport const rfc2822DayReString = '(?:(?:(Sun|Mon|Tue|Wed|Thu|Fri|Sat),\\\\s+)?(0[1-9]|[1-2]?[0-9]|3[01])\\\\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\\\s+(\\\\d{2,4}))'\n\n/**\n * An RE ready string that matches a general timezone designation; compliant with RFC 2822 timezone portion. Provides\n * matching groups 1 (timezone).\n * @category Date time\n */\nexport const timezoneReString = '([+-][0-9]{2}[0-5][0-9]|(?:UT|GMT|[A-Z]{3,5}|[A-IK-Z]))'\n\n/**\n * An RE ready string that matches the time designation portion of an RFC 2822 date+time. Provides matching groups 1\n * (hour), 2 (minutes), 3 (seconds), and 4 (timezone).\n * @category Date time\n */\nexport const rfc2822TimeReString = `(?:(2[0-3]|[0-1][0-9]):([0-5][0-9])(?::(60|[0-5][0-9]))?(?:\\\\s+${timezoneReString})?)`\n\nexport const rfc2822DateReString = `${rfc2822DayReString}\\\\s+${rfc2822TimeReString}`\n\n/**\n * Matches an [RFC 2822](https://datatracker.ietf.org/doc/html/rfc2822#section-3.3) style date like 'Mon, 6 Jan 1992\n * 12:12 UTC'. Provides matching groups 1 (day of week), 2 (day of month), 3 (month name), and 4 (year), 5 (hour), 6\n * (min), 7 (second), and 8 (time zone).\n * @category Date time\n */\nexport const rfc2822DateRe = lockdownRe(rfc2822DateReString)\n\nconst seps = '[./-]'\n\nexport const usDateReString = `(0?[1-9]|1[0-2])${seps}(0?[1-9]|[1-2][0-9]|3[0-1])${seps}([+-])?(\\\\d{1,})`\n\n/**\n * Matches a US style 'MM/DD/YYYY' string. Accepts separators '.', '/', '-'. Will except 1 or 2 digits for month and\n * day and 1-4 digits for the year. Also accepts a + or - before the year. Provides capture groups 1 (month), 2 (day of\n * month), 3 (BCE/CE indicator), and 4 (year).\n * @category Date time\n */\nexport const usDateRe = lockdownRe(usDateReString)\n\nexport const intlDateReString = `([+-])?(\\\\d{1,})${seps}(0?[1-9]|1[0-2])${seps}(0?[1-9]|[1-2][0-9]|3[0-1])`\n\n/**\n * Matches an international style 'YYYY/MM/DD' string. Accepts separators '.', '/', '-'. Will except 1 or 2 digits for\n * month and day and 1-4 digits for the year. Also accepts a + or - before the year. Provides capture groups 1 (BCE/CE\n * indicator), 2 (year), 3 (month), 4 (day).\n * @category Date time\n */\nexport const intlDateRe = lockdownRe(intlDateReString)\n\nexport const militaryTimeReString = '(?:(2400)|([0-1][0-9]|2[0-3])([0-5]\\\\d))'\n\n/**\n * Matches military time style 'HHMM' string. Provides capture groups 1 (special 2400 time), 2 (hour), and 3 (minutes).\n * @category Date time\n */\nexport const militaryTimeRe = lockdownRe(militaryTimeReString)\n\nexport const timeReString = '(?:(0?[1-9]|1[0-2]):([0-5][0-9])(?::([0-5][0-9])(?:[.,](\\\\d+))?)?\\\\s*([aApP][mM]))'\n\n/**\n * Matches a twelve hour time designation, requires AM or PM designation. Allows optional leading 0 in hour. Provides\n * matching groups 1 (hour), 2 (minutes), 3 (seconds, without decimal fractions), 4 (decimal fraction seconds), and 5 (\n * AM/PM indicator).\n * @category Date time\n */\nexport const timeRe = lockdownRe(timeReString)\n\nexport const twentyFourHourTimeReString = '(?:(24:00(?::00)?)|([01]?[0-9]|2[0-3]):([0-5][0-9])(?::([0-5][0-9])(?:[.,](\\\\d+))?)?)'\n\n/**\n * Matches a twenty-four hour time designationAllows optional leading 0 in hour. Provides matching groups 1 (special\n * 24:00 designation with optional seconds), 2 (hour), 3 (minutes), 4 (seconds, without decimal fractions), 5 (decimal\n * fraction seconds).\n * @category Date time\n */\nexport const twentyFourHourTimeRe = lockdownRe(twentyFourHourTimeReString)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { lockdownRe } from './lib/lockdown-re'\n\nexport const uuidReString = '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-5][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}'\n\n/**\n * Matches a UUID.\n * @category Identifiers\n */\nexport const uuidRe = lockdownRe(uuidReString)\n\nexport const ssnReString = '(?!000|666|9\\\\d\\\\d)(\\\\d{3})-?(\\\\d\\\\d)-?(?!0000)(\\\\d{4})'\n\n/**\n * Matches a valid SSN. Provides 3 matching groups, 1 (area number), 2\n * (group number), and 3 (serial number).\n * @category Identifiers\n */\nexport const ssnRe = lockdownRe(ssnReString)\n\n// https://www.irs.gov/businesses/small-businesses-self-employed/how-eins-are-assigned-and-valid-ein-prefixes\nconst validEinPrefix = [10, 12, 60, 67, 50, 53, 1, 2, 3, 4, 5, 6, 11, 13, 14, 16, 21, 22, 23, 25, 34, 51, 52, 54, 55, 56, 57, 58, 59, 65, 30, 32, 35, 36, 37, 38, 61, 15, 24, 40, 44, 94, 95, 80, 90, 33, 39, 41, 42, 43, 48, 62, 63, 64, 66, 68, 71, 72, 73, 74, 75, 76, 77, 82, 83, 84, 85, 86, 87, 88, 91, 92, 93, 98, 99, 20, 26, 27, 45, 46, 47, 81, 31].map((prefix) => ('' + prefix).padStart(2, '0'))\n\nexport const einReString = '(?:' + validEinPrefix.join('|') + ')-?\\\\d{7}'\n\n/**\n * Matches a valid EIN number.\n * @category Identifiers\n */\nexport const einRe = lockdownRe(einReString)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { lockdownRe } from './lib/lockdown-re'\n\nexport const jsReservedWordReString = '(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)'\n\n/**\n * Matches a JS resereved word.\n * @category Javascript\n */\nexport const jsReservedWordRe = lockdownRe(jsReservedWordReString)\n\n/* credit to: https://stackoverflow.com/questions/1661197/what-characters-are-valid-for-javascript-variable-names */\nexport const jsVariableReString = '(?!(?:(?:^| |;)do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)(?: |;|$))[$A-Z_a-z\\\\xaa\\\\xb5\\\\xba\\\\xc0-\\\\xd6\\\\xd8-\\\\xf6\\\\xf8-\\\\u02c1\\\\u02c6-\\\\u02d1\\\\u02e0-\\\\u02e4\\\\u02ec\\\\u02ee\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037a-\\\\u037d\\\\u0386\\\\u0388-\\\\u038a\\\\u038c\\\\u038e-\\\\u03a1\\\\u03a3-\\\\u03f5\\\\u03f7-\\\\u0481\\\\u048a-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05d0-\\\\u05ea\\\\u05f0-\\\\u05f2\\\\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\\\\u08a0\\\\u08a2-\\\\u08ac\\\\u0904-\\\\u0939\\\\u093d\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977\\\\u0979-\\\\u097f\\\\u0985-\\\\u098c\\\\u098f\\\\u0990\\\\u0993-\\\\u09a8\\\\u09aa-\\\\u09b0\\\\u09b2\\\\u09b6-\\\\u09b9\\\\u09bd\\\\u09ce\\\\u09dc\\\\u09dd\\\\u09df-\\\\u09e1\\\\u09f0\\\\u09f1\\\\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\\\\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-\\\\u0c33\\\\u0c35-\\\\u0c39\\\\u0c3d\\\\u0c58\\\\u0c59\\\\u0c60\\\\u0c61\\\\u0c85-\\\\u0c8c\\\\u0c8e-\\\\u0c90\\\\u0c92-\\\\u0ca8\\\\u0caa-\\\\u0cb3\\\\u0cb5-\\\\u0cb9\\\\u0cbd\\\\u0cde\\\\u0ce0\\\\u0ce1\\\\u0cf1\\\\u0cf2\\\\u0d05-\\\\u0d0c\\\\u0d0e-\\\\u0d10\\\\u0d12-\\\\u0d3a\\\\u0d3d\\\\u0d4e\\\\u0d60\\\\u0d61\\\\u0d7a-\\\\u0d7f\\\\u0d85-\\\\u0d96\\\\u0d9a-\\\\u0db1\\\\u0db3-\\\\u0dbb\\\\u0dbd\\\\u0dc0-\\\\u0dc6\\\\u0e01-\\\\u0e30\\\\u0e32\\\\u0e33\\\\u0e40-\\\\u0e46\\\\u0e81\\\\u0e82\\\\u0e84\\\\u0e87\\\\u0e88\\\\u0e8a\\\\u0e8d\\\\u0e94-\\\\u0e97\\\\u0e99-\\\\u0e9f\\\\u0ea1-\\\\u0ea3\\\\u0ea5\\\\u0ea7\\\\u0eaa\\\\u0eab\\\\u0ead-\\\\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\\\\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-\\\\u13f4\\\\u1401-\\\\u166c\\\\u166f-\\\\u167f\\\\u1681-\\\\u169a\\\\u16a0-\\\\u16ea\\\\u16ee-\\\\u16f0\\\\u1700-\\\\u170c\\\\u170e-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176c\\\\u176e-\\\\u1770\\\\u1780-\\\\u17b3\\\\u17d7\\\\u17dc\\\\u1820-\\\\u1877\\\\u1880-\\\\u18a8\\\\u18aa\\\\u18b0-\\\\u18f5\\\\u1900-\\\\u191c\\\\u1950-\\\\u196d\\\\u1970-\\\\u1974\\\\u1980-\\\\u19ab\\\\u19c1-\\\\u19c7\\\\u1a00-\\\\u1a16\\\\u1a20-\\\\u1a54\\\\u1aa7\\\\u1b05-\\\\u1b33\\\\u1b45-\\\\u1b4b\\\\u1b83-\\\\u1ba0\\\\u1bae\\\\u1baf\\\\u1bba-\\\\u1be5\\\\u1c00-\\\\u1c23\\\\u1c4d-\\\\u1c4f\\\\u1c5a-\\\\u1c7d\\\\u1ce9-\\\\u1cec\\\\u1cee-\\\\u1cf1\\\\u1cf5\\\\u1cf6\\\\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\\\\u2c00-\\\\u2c2e\\\\u2c30-\\\\u2c5e\\\\u2c60-\\\\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-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303c\\\\u3041-\\\\u3096\\\\u309d-\\\\u309f\\\\u30a1-\\\\u30fa\\\\u30fc-\\\\u30ff\\\\u3105-\\\\u312d\\\\u3131-\\\\u318e\\\\u31a0-\\\\u31ba\\\\u31f0-\\\\u31ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\ua000-\\\\ua48c\\\\ua4d0-\\\\ua4fd\\\\ua500-\\\\ua60c\\\\ua610-\\\\ua61f\\\\ua62a\\\\ua62b\\\\ua640-\\\\ua66e\\\\ua67f-\\\\ua697\\\\ua6a0-\\\\ua6ef\\\\ua717-\\\\ua71f\\\\ua722-\\\\ua788\\\\ua78b-\\\\ua78e\\\\ua790-\\\\ua793\\\\ua7a0-\\\\ua7aa\\\\ua7f8-\\\\ua801\\\\ua803-\\\\ua805\\\\ua807-\\\\ua80a\\\\ua80c-\\\\ua822\\\\ua840-\\\\ua873\\\\ua882-\\\\ua8b3\\\\ua8f2-\\\\ua8f7\\\\ua8fb\\\\ua90a-\\\\ua925\\\\ua930-\\\\ua946\\\\ua960-\\\\ua97c\\\\ua984-\\\\ua9b2\\\\ua9cf\\\\uaa00-\\\\uaa28\\\\uaa40-\\\\uaa42\\\\uaa44-\\\\uaa4b\\\\uaa60-\\\\uaa76\\\\uaa7a\\\\uaa80-\\\\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\\\\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\\\\uff66-\\\\uffbe\\\\uffc2-\\\\uffc7\\\\uffca-\\\\uffcf\\\\uffd2-\\\\uffd7\\\\uffda-\\\\uffdc][$A-Z_a-z\\\\xaa\\\\xb5\\\\xba\\\\xc0-\\\\xd6\\\\xd8-\\\\xf6\\\\xf8-\\\\u02c1\\\\u02c6-\\\\u02d1\\\\u02e0-\\\\u02e4\\\\u02ec\\\\u02ee\\\\u0370-\\\\u0374\\\\u0376\\\\u0377\\\\u037a-\\\\u037d\\\\u0386\\\\u0388-\\\\u038a\\\\u038c\\\\u038e-\\\\u03a1\\\\u03a3-\\\\u03f5\\\\u03f7-\\\\u0481\\\\u048a-\\\\u0527\\\\u0531-\\\\u0556\\\\u0559\\\\u0561-\\\\u0587\\\\u05d0-\\\\u05ea\\\\u05f0-\\\\u05f2\\\\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\\\\u08a0\\\\u08a2-\\\\u08ac\\\\u0904-\\\\u0939\\\\u093d\\\\u0950\\\\u0958-\\\\u0961\\\\u0971-\\\\u0977\\\\u0979-\\\\u097f\\\\u0985-\\\\u098c\\\\u098f\\\\u0990\\\\u0993-\\\\u09a8\\\\u09aa-\\\\u09b0\\\\u09b2\\\\u09b6-\\\\u09b9\\\\u09bd\\\\u09ce\\\\u09dc\\\\u09dd\\\\u09df-\\\\u09e1\\\\u09f0\\\\u09f1\\\\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\\\\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-\\\\u0c33\\\\u0c35-\\\\u0c39\\\\u0c3d\\\\u0c58\\\\u0c59\\\\u0c60\\\\u0c61\\\\u0c85-\\\\u0c8c\\\\u0c8e-\\\\u0c90\\\\u0c92-\\\\u0ca8\\\\u0caa-\\\\u0cb3\\\\u0cb5-\\\\u0cb9\\\\u0cbd\\\\u0cde\\\\u0ce0\\\\u0ce1\\\\u0cf1\\\\u0cf2\\\\u0d05-\\\\u0d0c\\\\u0d0e-\\\\u0d10\\\\u0d12-\\\\u0d3a\\\\u0d3d\\\\u0d4e\\\\u0d60\\\\u0d61\\\\u0d7a-\\\\u0d7f\\\\u0d85-\\\\u0d96\\\\u0d9a-\\\\u0db1\\\\u0db3-\\\\u0dbb\\\\u0dbd\\\\u0dc0-\\\\u0dc6\\\\u0e01-\\\\u0e30\\\\u0e32\\\\u0e33\\\\u0e40-\\\\u0e46\\\\u0e81\\\\u0e82\\\\u0e84\\\\u0e87\\\\u0e88\\\\u0e8a\\\\u0e8d\\\\u0e94-\\\\u0e97\\\\u0e99-\\\\u0e9f\\\\u0ea1-\\\\u0ea3\\\\u0ea5\\\\u0ea7\\\\u0eaa\\\\u0eab\\\\u0ead-\\\\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\\\\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-\\\\u13f4\\\\u1401-\\\\u166c\\\\u166f-\\\\u167f\\\\u1681-\\\\u169a\\\\u16a0-\\\\u16ea\\\\u16ee-\\\\u16f0\\\\u1700-\\\\u170c\\\\u170e-\\\\u1711\\\\u1720-\\\\u1731\\\\u1740-\\\\u1751\\\\u1760-\\\\u176c\\\\u176e-\\\\u1770\\\\u1780-\\\\u17b3\\\\u17d7\\\\u17dc\\\\u1820-\\\\u1877\\\\u1880-\\\\u18a8\\\\u18aa\\\\u18b0-\\\\u18f5\\\\u1900-\\\\u191c\\\\u1950-\\\\u196d\\\\u1970-\\\\u1974\\\\u1980-\\\\u19ab\\\\u19c1-\\\\u19c7\\\\u1a00-\\\\u1a16\\\\u1a20-\\\\u1a54\\\\u1aa7\\\\u1b05-\\\\u1b33\\\\u1b45-\\\\u1b4b\\\\u1b83-\\\\u1ba0\\\\u1bae\\\\u1baf\\\\u1bba-\\\\u1be5\\\\u1c00-\\\\u1c23\\\\u1c4d-\\\\u1c4f\\\\u1c5a-\\\\u1c7d\\\\u1ce9-\\\\u1cec\\\\u1cee-\\\\u1cf1\\\\u1cf5\\\\u1cf6\\\\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\\\\u2c00-\\\\u2c2e\\\\u2c30-\\\\u2c5e\\\\u2c60-\\\\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-\\\\u3007\\\\u3021-\\\\u3029\\\\u3031-\\\\u3035\\\\u3038-\\\\u303c\\\\u3041-\\\\u3096\\\\u309d-\\\\u309f\\\\u30a1-\\\\u30fa\\\\u30fc-\\\\u30ff\\\\u3105-\\\\u312d\\\\u3131-\\\\u318e\\\\u31a0-\\\\u31ba\\\\u31f0-\\\\u31ff\\\\u3400-\\\\u4db5\\\\u4e00-\\\\u9fcc\\\\ua000-\\\\ua48c\\\\ua4d0-\\\\ua4fd\\\\ua500-\\\\ua60c\\\\ua610-\\\\ua61f\\\\ua62a\\\\ua62b\\\\ua640-\\\\ua66e\\\\ua67f-\\\\ua697\\\\ua6a0-\\\\ua6ef\\\\ua717-\\\\ua71f\\\\ua722-\\\\ua788\\\\ua78b-\\\\ua78e\\\\ua790-\\\\ua793\\\\ua7a0-\\\\ua7aa\\\\ua7f8-\\\\ua801\\\\ua803-\\\\ua805\\\\ua807-\\\\ua80a\\\\ua80c-\\\\ua822\\\\ua840-\\\\ua873\\\\ua882-\\\\ua8b3\\\\ua8f2-\\\\ua8f7\\\\ua8fb\\\\ua90a-\\\\ua925\\\\ua930-\\\\ua946\\\\ua960-\\\\ua97c\\\\ua984-\\\\ua9b2\\\\ua9cf\\\\uaa00-\\\\uaa28\\\\uaa40-\\\\uaa42\\\\uaa44-\\\\uaa4b\\\\uaa60-\\\\uaa76\\\\uaa7a\\\\uaa80-\\\\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\\\\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\\\\uff66-\\\\uffbe\\\\uffc2-\\\\uffc7\\\\uffca-\\\\uffcf\\\\uffd2-\\\\uffd7\\\\uffda-\\\\uffdc0-9\\\\u0300-\\\\u036f\\\\u0483-\\\\u0487\\\\u0591-\\\\u05bd\\\\u05bf\\\\u05c1\\\\u05c2\\\\u05c4\\\\u05c5\\\\u05c7\\\\u0610-\\\\u061a\\\\u064b-\\\\u0669\\\\u0670\\\\u06d6-\\\\u06dc\\\\u06df-\\\\u06e4\\\\u06e7\\\\u06e8\\\\u06ea-\\\\u06ed\\\\u06f0-\\\\u06f9\\\\u0711\\\\u0730-\\\\u074a\\\\u07a6-\\\\u07b0\\\\u07c0-\\\\u07c9\\\\u07eb-\\\\u07f3\\\\u0816-\\\\u0819\\\\u081b-\\\\u0823\\\\u0825-\\\\u0827\\\\u0829-\\\\u082d\\\\u0859-\\\\u085b\\\\u08e4-\\\\u08fe\\\\u0900-\\\\u0903\\\\u093a-\\\\u093c\\\\u093e-\\\\u094f\\\\u0951-\\\\u0957\\\\u0962\\\\u0963\\\\u0966-\\\\u096f\\\\u0981-\\\\u0983\\\\u09bc\\\\u09be-\\\\u09c4\\\\u09c7\\\\u09c8\\\\u09cb-\\\\u09cd\\\\u09d7\\\\u09e2\\\\u09e3\\\\u09e6-\\\\u09ef\\\\u0a01-\\\\u0a03\\\\u0a3c\\\\u0a3e-\\\\u0a42\\\\u0a47\\\\u0a48\\\\u0a4b-\\\\u0a4d\\\\u0a51\\\\u0a66-\\\\u0a71\\\\u0a75\\\\u0a81-\\\\u0a83\\\\u0abc\\\\u0abe-\\\\u0ac5\\\\u0ac7-\\\\u0ac9\\\\u0acb-\\\\u0acd\\\\u0ae2\\\\u0ae3\\\\u0ae6-\\\\u0aef\\\\u0b01-\\\\u0b03\\\\u0b3c\\\\u0b3e-\\\\u0b44\\\\u0b47\\\\u0b48\\\\u0b4b-\\\\u0b4d\\\\u0b56\\\\u0b57\\\\u0b62\\\\u0b63\\\\u0b66-\\\\u0b6f\\\\u0b82\\\\u0bbe-\\\\u0bc2\\\\u0bc6-\\\\u0bc8\\\\u0bca-\\\\u0bcd\\\\u0bd7\\\\u0be6-\\\\u0bef\\\\u0c01-\\\\u0c03\\\\u0c3e-\\\\u0c44\\\\u0c46-\\\\u0c48\\\\u0c4a-\\\\u0c4d\\\\u0c55\\\\u0c56\\\\u0c62\\\\u0c63\\\\u0c66-\\\\u0c6f\\\\u0c82\\\\u0c83\\\\u0cbc\\\\u0cbe-\\\\u0cc4\\\\u0cc6-\\\\u0cc8\\\\u0cca-\\\\u0ccd\\\\u0cd5\\\\u0cd6\\\\u0ce2\\\\u0ce3\\\\u0ce6-\\\\u0cef\\\\u0d02\\\\u0d03\\\\u0d3e-\\\\u0d44\\\\u0d46-\\\\u0d48\\\\u0d4a-\\\\u0d4d\\\\u0d57\\\\u0d62\\\\u0d63\\\\u0d66-\\\\u0d6f\\\\u0d82\\\\u0d83\\\\u0dca\\\\u0dcf-\\\\u0dd4\\\\u0dd6\\\\u0dd8-\\\\u0ddf\\\\u0df2\\\\u0df3\\\\u0e31\\\\u0e34-\\\\u0e3a\\\\u0e47-\\\\u0e4e\\\\u0e50-\\\\u0e59\\\\u0eb1\\\\u0eb4-\\\\u0eb9\\\\u0ebb\\\\u0ebc\\\\u0ec8-\\\\u0ecd\\\\u0ed0-\\\\u0ed9\\\\u0f18\\\\u0f19\\\\u0f20-\\\\u0f29\\\\u0f35\\\\u0f37\\\\u0f39\\\\u0f3e\\\\u0f3f\\\\u0f71-\\\\u0f84\\\\u0f86\\\\u0f87\\\\u0f8d-\\\\u0f97\\\\u0f99-\\\\u0fbc\\\\u0fc6\\\\u102b-\\\\u103e\\\\u1040-\\\\u1049\\\\u1056-\\\\u1059\\\\u105e-\\\\u1060\\\\u1062-\\\\u1064\\\\u1067-\\\\u106d\\\\u1071-\\\\u1074\\\\u1082-\\\\u108d\\\\u108f-\\\\u109d\\\\u135d-\\\\u135f\\\\u1712-\\\\u1714\\\\u1732-\\\\u1734\\\\u1752\\\\u1753\\\\u1772\\\\u1773\\\\u17b4-\\\\u17d3\\\\u17dd\\\\u17e0-\\\\u17e9\\\\u180b-\\\\u180d\\\\u1810-\\\\u1819\\\\u18a9\\\\u1920-\\\\u192b\\\\u1930-\\\\u193b\\\\u1946-\\\\u194f\\\\u19b0-\\\\u19c0\\\\u19c8\\\\u19c9\\\\u19d0-\\\\u19d9\\\\u1a17-\\\\u1a1b\\\\u1a55-\\\\u1a5e\\\\u1a60-\\\\u1a7c\\\\u1a7f-\\\\u1a89\\\\u1a90-\\\\u1a99\\\\u1b00-\\\\u1b04\\\\u1b34-\\\\u1b44\\\\u1b50-\\\\u1b59\\\\u1b6b-\\\\u1b73\\\\u1b80-\\\\u1b82\\\\u1ba1-\\\\u1bad\\\\u1bb0-\\\\u1bb9\\\\u1be6-\\\\u1bf3\\\\u1c24-\\\\u1c37\\\\u1c40-\\\\u1c49\\\\u1c50-\\\\u1c59\\\\u1cd0-\\\\u1cd2\\\\u1cd4-\\\\u1ce8\\\\u1ced\\\\u1cf2-\\\\u1cf4\\\\u1dc0-\\\\u1de6\\\\u1dfc-\\\\u1dff\\\\u200c\\\\u200d\\\\u203f\\\\u2040\\\\u2054\\\\u20d0-\\\\u20dc\\\\u20e1\\\\u20e5-\\\\u20f0\\\\u2cef-\\\\u2cf1\\\\u2d7f\\\\u2de0-\\\\u2dff\\\\u302a-\\\\u302f\\\\u3099\\\\u309a\\\\ua620-\\\\ua629\\\\ua66f\\\\ua674-\\\\ua67d\\\\ua69f\\\\ua6f0\\\\ua6f1\\\\ua802\\\\ua806\\\\ua80b\\\\ua823-\\\\ua827\\\\ua880\\\\ua881\\\\ua8b4-\\\\ua8c4\\\\ua8d0-\\\\ua8d9\\\\ua8e0-\\\\ua8f1\\\\ua900-\\\\ua909\\\\ua926-\\\\ua92d\\\\ua947-\\\\ua953\\\\ua980-\\\\ua983\\\\ua9b3-\\\\ua9c0\\\\ua9d0-\\\\ua9d9\\\\uaa29-\\\\uaa36\\\\uaa43\\\\uaa4c\\\\uaa4d\\\\uaa50-\\\\uaa59\\\\uaa7b\\\\uaab0\\\\uaab2-\\\\uaab4\\\\uaab7\\\\uaab8\\\\uaabe\\\\uaabf\\\\uaac1\\\\uaaeb-\\\\uaaef\\\\uaaf5\\\\uaaf6\\\\uabe3-\\\\uabea\\\\uabec\\\\uabed\\\\uabf0-\\\\uabf9\\\\ufb1e\\\\ufe00-\\\\ufe0f\\\\ufe20-\\\\ufe26\\\\ufe33\\\\ufe34\\\\ufe4d-\\\\ufe4f\\\\uff10-\\\\uff19\\\\uff3f]*'\n\n/**\n * Matches a valid JS variable name.\n * @category Javascript\n */\nexport const jsVariableRe = lockdownRe(jsVariableReString)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport { lockdownRe } from './lib/lockdown-re'\n\nexport const npmPackageNameReString = '(@[a-z0-9-~][a-z0-9-._~]*/)?([a-z0-9-~][a-z0-9-._~]*)'\n\n/**\n * Matches an NPM package name. Provides matching groups 1 (org name,\n * if any) and 2 (package basename).\n * @category NPM\n */\nexport const npmPackageNameRe = lockdownRe(npmPackageNameReString)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\nimport * as numStrs from './lib/numbers-strings'\nimport { lockdownRe } from './lib/lockdown-re'\n\nexport const integerReString = '-?(?:0|[1-9]\\\\d*)'\n\n/**\n * Matches an integer.\n * @category Numbers\n */\nexport const integerRe = lockdownRe(integerReString)\n\nexport const plainFloatReString = numStrs.plainFloatStr\n\n/**\n * Matches a plain (non-scientific notation) float.\n * @category Numbers\n */\nexport const plainFloatRe = lockdownRe(plainFloatReString)\n\nexport const scientificFloatReString = numStrs.scientificFloatStr\n\n/**\n * Matches a scientific notation float.\n * @category Numbers\n */\nexport const scientificFloatRe = lockdownRe(scientificFloatReString)\n\nexport const floatReString = numStrs.floatStr\n\n/**\n * Matches a float in either plan or scientific format.\n * @category Numbers\n */\nexport const floatRe = lockdownRe(floatReString)\n\nexport const zeroTo1FloatReString = numStrs.zeroTo1FloatStr\n\n/**\n * Matches a 0 to 1 float as used in CSS color specifications.\n * @category CSS numbers\n */\nexport const zeroTo1FloatRe = lockdownRe(zeroTo1FloatReString)\n\nexport const zeroTo100PercentReString = numStrs.zeroTo100PercentStr\n\n/**\n * Matches a 0 to 100% integer as used in CSS color specifications.\n * @category CSS numbers\n */\nexport const zeroTo100PercentRe = lockdownRe(zeroTo100PercentReString)\n\nexport const zeroTo100FloatPercentReString = numStrs.zeroTo100FloatPercentStr\n\n/**\n * Matches a 0 to 100% float as used in CSS color specifications.\n * @category CSS numbers\n */\nexport const zeroTo100FloatPercentRe = lockdownRe(zeroTo100FloatPercentReString)\n\nexport const zeroTo255ReString = numStrs.zeroTo255Str\n\n/**\n * Matches a 0 to 255 integer as used in CSS color specifications.\n * @category CSS numbers\n */\nexport const zeroTo255Re = lockdownRe(zeroTo255ReString)\n\nexport const zeroTo255FloatReString = numStrs.zeroTo255FloatStr\n\n/**\n * Matches a 0 to 255 float as used in CSS color specifications.\n * @category CSS numbers\n */\nexport const zeroTo255FloatRe = lockdownRe(zeroTo255FloatReString)\n\nexport const zeroTo360ReString = numStrs.zeroTo360Str\n\n/**\n * Matches a 0 to 360 integer as used in CSS color specifications.\n * @category CSS numbers\n */\nexport const zeroTo360Re = lockdownRe(zeroTo360ReString)\n\nexport const zeroTo360FloatReString = numStrs.zeroTo360FloatStr\n\n/**\n * Matches a 0 to 360 float as used in CSS color specifications.\n * @category CSS numbers\n */\nexport const zeroTo360FloatRe = lockdownRe(zeroTo360FloatReString)\n","/*\nCopyright 2023 Liquid Labs LLC\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\nimport { emailReString } from './contacts'\nimport { ipHostReString, ipV6ReString, ipVFutureReString } from './network'\nimport { fqDomainNameReString } from './domain-name'\nimport { lockdownRe } from './lib/lockdown-re'\n\n// based on the generic URI Re given in [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986#page-51).\nexport const urlReString = '(?:([a-z][a-z0-9+.-]*):\\\\/{0,2}([^/?#]*)(\\\\/[^?#]*)?(?:\\\\?([^#]*))?(?:#(.*))?)'\n\n/**\n * Matches a valid, generic URL. Provides capture groups 1 (schema), 2 (server/authority), 3 (path), 4 (query part), 5 (\n * intra-page link/fragment.) Note, a URL always has scheme, and at a minimum a server/authority or path, and may have\n * both. The query and fragment components are always optional. For general usage, you might want to use the more\n * specific Res for specific protocols or the `commonUrlRe`.\n * @category URL\n */\nexport const urlRe = lockdownRe(urlReString, 'u')\n\nexport const mailtoUrlReString = `(?:mailto:(${emailReString}))`\n\n/**\n * Matches a valid 'mailto:' URL. Provides a single capture group, 1 (email address).' You must use the either the 'u'\n * or 'v' flag when using the Re string.\n * @category URL\n */\nexport const mailtoUrlRe = lockdownRe(mailtoUrlReString, 'u')\n\nconst userPlusPassReString = '(?:(\\\\S+)(?::(\\\\S*))?@)'\nconst hostOrIPReString = `(${ipHostReString}|${fqDomainNameReString}|\\\\[(?:${ipV6ReString}|${ipVFutureReString})\\\\]|localhost)`\nconst portReString = '(?::(\\\\d{2,5}))'\n// though URLs in general allow spaces in the path component, they are disallowed in the HTTP(S) protocols\nconst urlPathReString = '(\\\\/[^ ?#]*)'\n// though URLs in general allow spaces in the query and fragment components, we disallow them in the HTTP(S) protocol\nconst urlQueryAndFragementReString = '(?:\\\\?([^ #]*))?(?:#([^ ]*))?' // already has the '?' qualifiers\n\nexport const httpUrlReString =\n`(https?):\\\\/\\\\/${userPlusPassReString}?${hostOrIPReString}${portReString}?${urlPathReString}?${urlQueryAndFragementReString}`\n\n/**\n * Matches a valid 'http/https' URL. Provides capture groups 1 (protocol), 2 (username), 3 (user password), 4 (host or\n * IP), 5 (port), 6 (path), 7 (query string), and 8 (fragment). You must use the either the 'u' or 'v' flag when using\n * the Re string.\n * @category URL\n */\nexport const httpUrlRe = lockdownRe(httpUrlReString, 'u')\n\nexport const ftpUrlReString = `(?:ftp:\\\\/\\\\/${userPlusPassReString}?${hostOrIPReString}${portReString}?${urlPathReString}?)`\n\n/**\n * Matches a valid 'ftp' URL. Provides capture groups 1 (username), 2 (user password), 3 (host or IP), 4 (port), 5\n * (path). You must use the either the 'u' or 'v' flag when using the Re string.\n * @category URL\n */\nexport const ftpUrlRe = lockdownRe(ftpUrlReString, 'u')\n\nexport const fileUrlReString = `(?:file:\\\\/\\\\/${hostOrIPReString}?${urlPathReString})`\n\n/**\n * Matches a valid 'file' URL. Provides capture groups 1 (host), 2 (port), 3 (path). You must use the either the 'u' or\n * 'v' flag when using the Re string.\n * @category URL\n */\nexport const fileUrlRe = lockdownRe(fileUrlReString, 'u')\n\nexport const commonUrlReString = `(?:${mailtoUrlReString}|${httpUrlReString}|${ftpUrlReString}|${fileUrlReString})`\n\n/**\n * Matches any of the \"common\" web URL types: 'mailto', 'http/https', 'ftp', and 'file'. You must use the either the\n * 'u' or 'v' flag when using the Re string.\n * @category URL\n */\nexport const commonUrlRe = lockdownRe(commonUrlReString, 'u')\n"],"names":["lockdownRe","str","flags","RegExp","ipHostReString","ipHostRe","ipTupleReString","ipAddressReString","ipAddressRe","ipV6ReString","ipV6Re","ipVFutureReString","ipVFutureRe","invalidS3Partials","awsS3TaBucketNameReString","awsS3TaBucketNameRe","awsS3BucketNameReString","awsS3BucketNameRe","uniNonASCII","localhostReString","localhostRe","tldNameReString","tldNameRe","domainLabelReString","domainLabelRe","fqDomainNameReString","fqDomainNameRe","usPhoneReString","usPhoneRe","zipCodeReString","zipCodeRe","emailReString","emailRe","cssPreColors1","black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","cssPreColors2","Object","assign","orange","cssPreColors3","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","cssPreColors","rebeccapurple","plainFloatStr","scientificFloatStr","floatStr","zeroTo1FloatStr","zeroTo100PercentStr","zeroTo100FloatPercentStr","zeroTo255Str","zeroTo255FloatStr","zeroTo360Str","hexColorNoAlphaReString","hexColorNoAlphaRe","hexColorAlphaReString","hexColorAlphaRe","cssPreColors1ReString","keys","pre","join","cssPreColors1Re","cssPreColors2ReString","cssPreColors2Re","cssPreColors3ReString","cssPreColors3Re","cssPreColorsReString","cssPreColorsRe","alphaStr","rgb1IntStr","rgb1PercStr","rgba3IntStr","rgba3PercStr","rgbFuncReString","rgbFuncRe","rgbaFuncReString","rgbaFuncRe","alphaFloatStr","rgbReString","rgbRe","hsl3BaseStr","hsl3Opts","hsl3ReString","hsl3Re","hslReString","hslRe","cssColor3ReString","concat","cssColor3Re","cssColorReString","cssColorRe","iso8601DayReString","frac","iso8601TimeReString","iso8601DateReString","iso8601DateRe","iso8601DateTimeReString","iso8601DateTimeRe","rfc2822DayReString","timezoneReString","rfc2822TimeReString","rfc2822DateReString","rfc2822DateRe","seps","usDateReString","usDateRe","intlDateReString","intlDateRe","militaryTimeReString","militaryTimeRe","timeReString","timeRe","twentyFourHourTimeReString","twentyFourHourTimeRe","uuidReString","uuidRe","ssnReString","ssnRe","einReString","map","prefix","padStart","einRe","jsReservedWordReString","jsReservedWordRe","jsVariableReString","jsVariableRe","npmPackageNameReString","npmPackageNameRe","integerReString","integerRe","plainFloatReString","numStrs","plainFloatRe","scientificFloatReString","scientificFloatRe","floatReString","floatRe","zeroTo1FloatReString","zeroTo1FloatRe","zeroTo100PercentReString","zeroTo100PercentRe","zeroTo100FloatPercentReString","zeroTo100FloatPercentRe","zeroTo255ReString","zeroTo255Re","zeroTo255FloatReString","zeroTo255FloatRe","zeroTo360ReString","zeroTo360Re","zeroTo360FloatReString","zeroTo360FloatRe","urlReString","urlRe","mailtoUrlReString","mailtoUrlRe","userPlusPassReString","hostOrIPReString","portReString","urlPathReString","httpUrlReString","httpUrlRe","ftpUrlReString","ftpUrlRe","fileUrlReString","fileUrlRe","commonUrlReString","commonUrlRe"],"mappings":";;;;;;;;;;;;;;;;;AAgBO,MAAMA,EAAaA,CAACC,EAAKC,IAAU,IAAIC,OAAO,IAAIF,KAAQC,GCMpDE,EAAiB,iIAQjBC,EAAWL,EAAWI,GAEtBE,EAAkB,qCAElBC,EAAoB,MAAMD,WAAyBA,IAMnDE,EAAcR,EAAWO,GAGzBE,EACX,wpBAwBWC,EAASV,EAAWS,GAEpBE,EAAoB,mDAMpBC,EAAcZ,EAAWW,GC3DhCE,EAAoB,OAAON,2CAEpBO,EAA4BD,EAAoB,oCAOhDE,EAAsB,IAAIZ,OAAOW,GAEjCE,EAA0BH,EAAoB,wCAO9CI,EAAoB,IAAId,OAAOa,GCnC/BE,EAAc,qBCmBdC,EAAoB,yBAAyBb,6BAM7Cc,EAAcpB,EAAWmB,GAGzBE,EAAkB,OAAOH,aAAuBA,eAAyBA,YAOzEI,EAAYtB,EAAWqB,EAAiB,KAExCE,EAAsB,aAAaL,gBAA0BA,mBAEzDA,eAAyBA,wBAAkCA,wBAAkCA,MAQjGM,EAAgBxB,EAAWuB,EAAqB,KAGhDE,EAAuB,iBAAiBF,SAA2BF,IAQnEK,EAAiB1B,EAAWyB,EAAsB,KCvClDE,EAAkB,iEAMlBC,EAAY5B,EAAW2B,GAEvBE,EAAkB,yBAMlBC,EAAY9B,EAAW6B,GAEvBE,EAAgB,cAAcb,oDAA8DA,6EAAuFA,sBAAgCA,WAAqBO,KAOxOO,EAAUhC,EAAW+B,EAAe,KC1BpCE,EAAgB,CAC3BC,MAAU,UACVC,OAAU,UACVC,KAAU,UACVC,MAAU,UACVC,OAAU,UACVC,IAAU,UACVC,OAAU,UACVC,QAAU,UACVC,MAAU,UACVC,KAAU,UACVC,MAAU,UACVC,OAAU,UACVC,KAAU,UACVC,KAAU,UACVC,KAAU,UACVC,KAAU,WAGCC,EAAgBC,OAAOC,OAAO,CACzCC,OAAS,WACRpB,GAEUqB,EAAgBH,OAAOC,OAAO,CACzCG,UAAuB,UACvBC,aAAuB,UACvBC,WAAuB,UACvBC,MAAuB,UACvBC,MAAuB,UACvBC,OAAuB,UACvBC,eAAuB,UACvBC,WAAuB,UACvBC,MAAuB,UACvBC,UAAuB,UACvBC,UAAuB,UACvBC,WAAuB,UACvBC,UAAuB,UACvBC,MAAuB,UACvBC,eAAuB,UACvBC,SAAuB,UACvBC,QAAuB,UACvBC,KAAuB,OACvBC,SAAuB,UACvBC,SAAuB,UACvBC,cAAuB,UACvBC,SAAuB,UACvBC,UAAuB,UACvBC,SAAuB,UACvBC,UAAuB,UACvBC,YAAuB,UACvBC,eAAuB,UACvBC,WAAuB,UACvBC,WAAuB,UACvBC,QAAuB,UACvBC,WAAuB,UACvBC,aAAuB,UACvBC,cAAuB,UACvBC,cAAuB,UACvBC,cAAuB,UACvBC,cAAuB,UACvBC,WAAuB,UACvBC,SAAuB,UACvBC,YAAuB,UACvBC,QAAuB,UACvBC,QAAuB,UACvBC,WAAuB,UACvBC,UAAuB,UACvBC,YAAuB,UACvBC,YAAuB,UACvBC,UAAuB,UACvBC,WAAuB,UACvBC,KAAuB,UACvBC,UAAuB,UACvBC,YAAuB,UACvBC,KAAuB,UACvBC,SAAuB,UACvBC,QAAuB,UACvBC,UAAuB,UACvBC,OAAuB,UACvBC,MAAuB,UACvBC,MAAuB,UACvBC,SAAuB,UACvBC,cAAuB,UACvBC,UAAuB,UACvBC,aAAuB,UACvBC,UAAuB,UACvBC,WAAuB,UACvBC,UAAuB,UACvBC,qBAAuB,UACvBC,UAAuB,UACvBC,WAAuB,UACvBC,UAAuB,UACvBC,UAAuB,UACvBC,YAAuB,UACvBC,cAAuB,UACvBC,aAAuB,UACvBC,eAAuB,UACvBC,eAAuB,UACvBC,eAAuB,UACvBC,YAAuB,UACvBC,UAAuB,UACvBC,MAAuB,UACvBC,QAAuB,UACvBC,iBAAuB,UACvBC,WAAuB,UACvBC,aAAuB,UACvBC,aAAuB,UACvBC,eAAuB,UACvBC,gBAAuB,UACvBC,kBAAuB,UACvBC,gBAAuB,UACvBC,gBAAuB,UACvBC,aAAuB,UACvBC,UAAuB,UACvBC,UAAuB,UACvBC,SAAuB,UACvBC,YAAuB,UACvBC,QAAuB,UACvBC,UAAuB,UACvBC,UAAuB,UACvBC,OAAuB,UACvBC,cAAuB,UACvBC,UAAuB,UACvBC,cAAuB,UACvBC,cAAuB,UACvBC,WAAuB,UACvBC,UAAuB,UACvBC,KAAuB,UACvBC,KAAuB,UACvBC,KAAuB,UACvBC,WAAuB,UACvBC,UAAuB,UACvBC,UAAuB,UACvBC,YAAuB,UACvBC,OAAuB,UACvBC,WAAuB,UACvBC,SAAuB,UACvBC,SAAuB,UACvBC,OAAuB,UACvBC,QAAuB,UACvBC,UAAuB,UACvBC,UAAuB,UACvBC,UAAuB,UACvBC,KAAuB,UACvBC,YAAuB,UACvBC,UAAuB,UACvBC,IAAuB,UACvBC,QAAuB,UACvBC,OAAuB,UACvBC,UAAuB,UACvBC,OAAuB,UACvBC,MAAuB,UACvBC,WAAuB,UACvBC,YAAuB,WACtBtI,GAEUuI,EAAetI,OAAOC,OAAO,CACxCsI,cAAgB,WACfpI,GC5JUqI,EAAgB,+CAEhBC,EAAqB,GAAGD,QAAoBA,IAE5CE,EAAW,GAAGF,SAAqBA,MAEnCG,EAAkB,4BAElBC,EAAsB,4BAEtBC,EACX,kDAEWC,EAAe,qDAEfC,EACX,+EAEWC,EAAe,qDCTfC,EAA0B,mCAM1BC,EAAoBrM,EAAWoM,GAG/BE,EAAwB,oDAMxBC,EAAkBvM,EAAWsM,GAE7BE,EAAwB,MAAQrJ,OAAOsJ,KAAKC,GAAmBC,KAAK,KAAO,IAM3EC,EAAkB5M,EAAWwM,GAE7BK,EAAwB,MAAQ1J,OAAOsJ,KAAKC,GAAmBC,KAAK,KAAO,IAM3EG,EAAkB9M,EAAW6M,GAE7BE,EAAwB,MAAQ5J,OAAOsJ,KAAKC,GAAmBC,KAAK,KAAO,IAM3EK,EAAkBhN,EAAW+M,GAE7BE,EAAuB,MAAQ9J,OAAOsJ,KAAKC,GAAkBC,KAAK,KAAO,IAMzEO,GAAiBlN,EAAWiN,GAEnCE,GAAW,IAAIrB,KAAmBC,KAClCqB,GAAa,cAAcnB,iBAA4BA,WACvDoB,GAAc,cAActB,iBAAmCA,WAC/DuB,GAAc,eAAerB,iBAA4BkB,YACzDI,GAAe,eAAexB,iBAAmCoB,YAE1DK,GAAkB,MAAQ,CAACJ,GAAYC,IAAaV,KAAK,KAAO,IAMhEc,GAAYzN,EAAWwN,IAEvBE,GAAmB,MAAQ,CAACJ,GAAaC,IAAcZ,KAAK,KAAO,IAMnEgB,GAAa3N,EAAW0N,IAK/BE,GAAgB,IAAI9B,KAAmBE,KAMhC6B,GAAc,YALL,QAAQ3B,iBAAiCA,cAA8B0B,cACtE,QAAQ5B,iBAAwCA,cAAqC4B,cACrF,QAAQ1B,YAA4BA,cAA8B0B,cACjE,QAAQ5B,YAAmCA,cAAqC4B,qBAQ3FE,GAAQ9N,EAAW6N,IAE1BE,GAAc,OAAO5B,oBAA+BJ,SACpDiC,GAAW,CAAC,SAASD,WAAqB,UAAUA,YAE7CE,GAAe,MAAQD,GAASrB,KAAK,KAAO,IAM5CuB,GAASlO,EAAWiO,IAEpBE,GACX,eAAetC,kCAAyCG,iBAM7CoC,GAAQpO,EAAWmO,IAEnBE,GAAoB,MAC7B,CAACjC,EAAyBgB,GAAYC,GAAaC,GAAaC,IAC/De,OAAOnL,OAAOsJ,KAAKC,IACnB4B,OAAON,IACPrB,KAAK,KACJ,IAMO4B,GAAcvO,EAAWqO,IAEzBG,GAAmB,MAC5B,CAAClC,EAAuBuB,GAAaM,IACpCG,OAAOnL,OAAOsJ,KAAKC,IACnBC,KAAK,KACJ,IAMO8B,GAAazO,EAAWwO,ICrIxBE,GAAqB,kKAG5BC,GAAO,iBAMAC,GAAsB,0CALxB,sBAAsBD,0BACrB,gBAAgBA,wBAChB,mBAAmBA,+EAUlBE,GAAsB,GAAGH,SAAyBE,OAUlDE,GAAgB9O,EAAW6O,IAE3BE,GAA0B,GAAGL,MAAsBE,KAOnDI,GAAoBhP,EAAW+O,IAO/BE,GAAqB,2IAOrBC,GAAmB,0DAOnBC,GAAsB,kEAAkED,QAExFE,GAAsB,GAAGH,SAAyBE,KAQlDE,GAAgBrP,EAAWoP,IAElCE,GAAO,QAEAC,GAAiB,mBAAmBD,gCAAkCA,qBAQtEE,GAAWxP,EAAWuP,IAEtBE,GAAmB,mBAAmBH,qBAAuBA,gCAQ7DI,GAAa1P,EAAWyP,IAExBE,GAAuB,2CAMvBC,GAAiB5P,EAAW2P,IAE5BE,GAAe,qFAQfC,GAAS9P,EAAW6P,IAEpBE,GAA6B,wFAQ7BC,GAAuBhQ,EAAW+P,IC3HlCE,GAAe,2FAMfC,GAASlQ,EAAWiQ,IAEpBE,GAAc,0DAOdC,GAAQpQ,EAAWmQ,IAKnBE,GAAc,MAFJ,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAIC,KAAKC,IAAY,GAAKA,GAAQC,SAAS,EAAG,OAEtV7D,KAAK,KAAO,YAMjD8D,GAAQzQ,EAAWqQ,IC1BnBK,GAAyB,qTAMzBC,GAAmB3Q,EAAW0Q,IAG9BE,GAAqB,oqZAMrBC,GAAe7Q,EAAW4Q,ICf1BE,GAAyB,wDAOzBC,GAAmB/Q,EAAW8Q,ICN9BE,GAAkB,oBAMlBC,GAAYjR,EAAWgR,IAEvBE,GAAqBC,EAMrBC,GAAepR,EAAWkR,IAE1BG,GAA0BF,EAM1BG,GAAoBtR,EAAWqR,IAE/BE,GAAgBJ,EAMhBK,GAAUxR,EAAWuR,IAErBE,GAAuBN,EAMvBO,GAAiB1R,EAAWyR,IAE5BE,GAA2BR,EAM3BS,GAAqB5R,EAAW2R,IAEhCE,GAAgCV,EAMhCW,GAA0B9R,EAAW6R,IAErCE,GAAoBZ,EAMpBa,GAAchS,EAAW+R,IAEzBE,GAAyBd,EAMzBe,GAAmBlS,EAAWiS,IAE9BE,GAAoBhB,EAMpBiB,GAAcpS,EAAWmS,IAEzBE,GN5DX,2EMkEWC,GAAmBtS,EAAWqS,ICpF9BE,GAAc,iFASdC,GAAQxS,EAAWuS,GAAa,KAEhCE,GAAoB,cAAc1Q,MAOlC2Q,GAAc1S,EAAWyS,GAAmB,KAEnDE,GAAuB,0BACvBC,GAAmB,IAAIxS,KAAkBqB,WAA8BhB,KAAgBE,mBACvFkS,GAAe,kBAEfC,GAAkB,eAIXC,GACb,kBAAkBJ,MAAwBC,KAAmBC,MAAgBC,mCAQhEE,GAAYhT,EAAW+S,GAAiB,KAExCE,GAAiB,gBAAgBN,MAAwBC,KAAmBC,MAAgBC,OAO5FI,GAAWlT,EAAWiT,GAAgB,KAEtCE,GAAkB,iBAAiBP,MAAoBE,MAOvDM,GAAYpT,EAAWmT,GAAiB,KAExCE,GAAoB,MAAMZ,MAAqBM,MAAmBE,MAAkBE,MAOpFG,GAActT,EAAWqT,GAAmB;"}