warqadui 0.0.6 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../../node_modules/html2canvas/node_modules/tslib/tslib.es6.js", "../../../../../node_modules/src/css/layout/bounds.ts", "../../../../../node_modules/html2canvas/node_modules/src/Util.ts", "../../../../../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Util.ts", "../../../../../node_modules/html2canvas/node_modules/css-line-break/node_modules/src/Trie.ts", "../../../../../node_modules/html2canvas/node_modules/css-line-break/node_modules/utrie/node_modules/src/index.ts", "../../../../../node_modules/html2canvas/node_modules/src/linebreak-trie.ts", "../../../../../node_modules/html2canvas/node_modules/src/LineBreak.ts", "../../../../../node_modules/src/css/syntax/tokenizer.ts", "../../../../../node_modules/src/css/syntax/parser.ts", "../../../../../node_modules/src/css/types/length.ts", "../../../../../node_modules/src/css/types/length-percentage.ts", "../../../../../node_modules/src/css/types/angle.ts", "../../../../../node_modules/src/css/types/color.ts", "../../../../../node_modules/src/css/property-descriptors/background-clip.ts", "../../../../../node_modules/src/css/property-descriptors/background-color.ts", "../../../../../node_modules/src/css/types/functions/gradient.ts", "../../../../../node_modules/src/css/types/functions/linear-gradient.ts", "../../../../../node_modules/src/css/types/functions/-prefix-linear-gradient.ts", "../../../../../node_modules/src/css/types/functions/-webkit-gradient.ts", "../../../../../node_modules/src/css/types/functions/radial-gradient.ts", "../../../../../node_modules/src/css/types/functions/-prefix-radial-gradient.ts", "../../../../../node_modules/src/css/types/image.ts", "../../../../../node_modules/src/css/property-descriptors/background-image.ts", "../../../../../node_modules/src/css/property-descriptors/background-origin.ts", "../../../../../node_modules/src/css/property-descriptors/background-position.ts", "../../../../../node_modules/src/css/property-descriptors/background-repeat.ts", "../../../../../node_modules/src/css/property-descriptors/background-size.ts", "../../../../../node_modules/src/css/property-descriptors/border-color.ts", "../../../../../node_modules/src/css/property-descriptors/border-radius.ts", "../../../../../node_modules/src/css/property-descriptors/border-style.ts", "../../../../../node_modules/src/css/property-descriptors/border-width.ts", "../../../../../node_modules/src/css/property-descriptors/color.ts", "../../../../../node_modules/src/css/property-descriptors/direction.ts", "../../../../../node_modules/src/css/property-descriptors/display.ts", "../../../../../node_modules/src/css/property-descriptors/float.ts", "../../../../../node_modules/src/css/property-descriptors/letter-spacing.ts", "../../../../../node_modules/src/css/property-descriptors/line-break.ts", "../../../../../node_modules/src/css/property-descriptors/line-height.ts", "../../../../../node_modules/src/css/property-descriptors/list-style-image.ts", "../../../../../node_modules/src/css/property-descriptors/list-style-position.ts", "../../../../../node_modules/src/css/property-descriptors/list-style-type.ts", "../../../../../node_modules/src/css/property-descriptors/margin.ts", "../../../../../node_modules/src/css/property-descriptors/overflow.ts", "../../../../../node_modules/src/css/property-descriptors/overflow-wrap.ts", "../../../../../node_modules/src/css/property-descriptors/padding.ts", "../../../../../node_modules/src/css/property-descriptors/text-align.ts", "../../../../../node_modules/src/css/property-descriptors/position.ts", "../../../../../node_modules/src/css/property-descriptors/text-shadow.ts", "../../../../../node_modules/src/css/property-descriptors/text-transform.ts", "../../../../../node_modules/src/css/property-descriptors/transform.ts", "../../../../../node_modules/src/css/property-descriptors/transform-origin.ts", "../../../../../node_modules/src/css/property-descriptors/visibility.ts", "../../../../../node_modules/src/css/property-descriptors/word-break.ts", "../../../../../node_modules/src/css/property-descriptors/z-index.ts", "../../../../../node_modules/src/css/types/time.ts", "../../../../../node_modules/src/css/property-descriptors/opacity.ts", "../../../../../node_modules/src/css/property-descriptors/text-decoration-color.ts", "../../../../../node_modules/src/css/property-descriptors/text-decoration-line.ts", "../../../../../node_modules/src/css/property-descriptors/font-family.ts", "../../../../../node_modules/src/css/property-descriptors/font-size.ts", "../../../../../node_modules/src/css/property-descriptors/font-weight.ts", "../../../../../node_modules/src/css/property-descriptors/font-variant.ts", "../../../../../node_modules/src/css/property-descriptors/font-style.ts", "../../../../../node_modules/src/core/bitwise.ts", "../../../../../node_modules/src/css/property-descriptors/content.ts", "../../../../../node_modules/src/css/property-descriptors/counter-increment.ts", "../../../../../node_modules/src/css/property-descriptors/counter-reset.ts", "../../../../../node_modules/src/css/property-descriptors/duration.ts", "../../../../../node_modules/src/css/property-descriptors/quotes.ts", "../../../../../node_modules/src/css/property-descriptors/box-shadow.ts", "../../../../../node_modules/src/css/property-descriptors/paint-order.ts", "../../../../../node_modules/src/css/property-descriptors/webkit-text-stroke-color.ts", "../../../../../node_modules/src/css/property-descriptors/webkit-text-stroke-width.ts", "../../../../../node_modules/src/css/index.ts", "../../../../../node_modules/src/core/debugger.ts", "../../../../../node_modules/src/dom/element-container.ts", "../../../../../node_modules/html2canvas/node_modules/src/grapheme-break-trie.ts", "../../../../../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Util.ts", "../../../../../node_modules/html2canvas/node_modules/text-segmentation/node_modules/src/Trie.ts", "../../../../../node_modules/html2canvas/node_modules/text-segmentation/node_modules/utrie/node_modules/src/index.ts", "../../../../../node_modules/html2canvas/node_modules/src/GraphemeBreak.ts", "../../../../../node_modules/src/core/features.ts", "../../../../../node_modules/src/css/layout/text.ts", "../../../../../node_modules/src/dom/text-container.ts", "../../../../../node_modules/src/dom/replaced-elements/image-element-container.ts", "../../../../../node_modules/src/dom/replaced-elements/canvas-element-container.ts", "../../../../../node_modules/src/dom/replaced-elements/svg-element-container.ts", "../../../../../node_modules/src/dom/elements/li-element-container.ts", "../../../../../node_modules/src/dom/elements/ol-element-container.ts", "../../../../../node_modules/src/dom/replaced-elements/input-element-container.ts", "../../../../../node_modules/src/dom/elements/select-element-container.ts", "../../../../../node_modules/src/dom/elements/textarea-element-container.ts", "../../../../../node_modules/src/dom/replaced-elements/iframe-element-container.ts", "../../../../../node_modules/src/dom/node-parser.ts", "../../../../../node_modules/src/css/types/functions/counter.ts", "../../../../../node_modules/src/dom/document-cloner.ts", "../../../../../node_modules/src/core/cache-storage.ts", "../../../../../node_modules/src/render/vector.ts", "../../../../../node_modules/src/render/bezier-curve.ts", "../../../../../node_modules/src/render/bound-curves.ts", "../../../../../node_modules/src/render/effects.ts", "../../../../../node_modules/src/render/path.ts", "../../../../../node_modules/src/render/stacking-context.ts", "../../../../../node_modules/src/render/border.ts", "../../../../../node_modules/src/render/box-sizing.ts", "../../../../../node_modules/src/render/background.ts", "../../../../../node_modules/src/core/util.ts", "../../../../../node_modules/src/render/font-metrics.ts", "../../../../../node_modules/src/render/renderer.ts", "../../../../../node_modules/src/render/canvas/canvas-renderer.ts", "../../../../../node_modules/src/render/canvas/foreignobject-renderer.ts", "../../../../../node_modules/src/core/logger.ts", "../../../../../node_modules/src/core/context.ts", "../../../../../node_modules/src/index.ts"],
4
4
  "sourcesContent": ["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n", "import {Context} from '../../core/context';\n\nexport class Bounds {\n constructor(readonly left: number, readonly top: number, readonly width: number, readonly height: number) {}\n\n add(x: number, y: number, w: number, h: number): Bounds {\n return new Bounds(this.left + x, this.top + y, this.width + w, this.height + h);\n }\n\n static fromClientRect(context: Context, clientRect: ClientRect): Bounds {\n return new Bounds(\n clientRect.left + context.windowBounds.left,\n clientRect.top + context.windowBounds.top,\n clientRect.width,\n clientRect.height\n );\n }\n\n static fromDOMRectList(context: Context, domRectList: DOMRectList): Bounds {\n const domRect = Array.from(domRectList).find((rect) => rect.width !== 0);\n return domRect\n ? new Bounds(\n domRect.left + context.windowBounds.left,\n domRect.top + context.windowBounds.top,\n domRect.width,\n domRect.height\n )\n : Bounds.EMPTY;\n }\n\n static EMPTY = new Bounds(0, 0, 0, 0);\n}\n\nexport const parseBounds = (context: Context, node: Element): Bounds => {\n return Bounds.fromClientRect(context, node.getBoundingClientRect());\n};\n\nexport const parseDocumentSize = (document: Document): Bounds => {\n const body = document.body;\n const documentElement = document.documentElement;\n\n if (!body || !documentElement) {\n throw new Error(`Unable to get document size`);\n }\n const width = Math.max(\n Math.max(body.scrollWidth, documentElement.scrollWidth),\n Math.max(body.offsetWidth, documentElement.offsetWidth),\n Math.max(body.clientWidth, documentElement.clientWidth)\n );\n\n const height = Math.max(\n Math.max(body.scrollHeight, documentElement.scrollHeight),\n Math.max(body.offsetHeight, documentElement.offsetHeight),\n Math.max(body.clientHeight, documentElement.clientHeight)\n );\n\n return new Bounds(0, 0, width, height);\n};\n", "export const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n", "import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n", "export const base64 =\n 'KwAAAAAAAAAACA4AUD0AADAgAAACAAAAAAAIABAAGABAAEgAUABYAGAAaABgAGgAYgBqAF8AZwBgAGgAcQB5AHUAfQCFAI0AlQCdAKIAqgCyALoAYABoAGAAaABgAGgAwgDKAGAAaADGAM4A0wDbAOEA6QDxAPkAAQEJAQ8BFwF1AH0AHAEkASwBNAE6AUIBQQFJAVEBWQFhAWgBcAF4ATAAgAGGAY4BlQGXAZ8BpwGvAbUBvQHFAc0B0wHbAeMB6wHxAfkBAQIJAvEBEQIZAiECKQIxAjgCQAJGAk4CVgJeAmQCbAJ0AnwCgQKJApECmQKgAqgCsAK4ArwCxAIwAMwC0wLbAjAA4wLrAvMC+AIAAwcDDwMwABcDHQMlAy0DNQN1AD0DQQNJA0kDSQNRA1EDVwNZA1kDdQB1AGEDdQBpA20DdQN1AHsDdQCBA4kDkQN1AHUAmQOhA3UAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AKYDrgN1AHUAtgO+A8YDzgPWAxcD3gPjA+sD8wN1AHUA+wMDBAkEdQANBBUEHQQlBCoEFwMyBDgEYABABBcDSARQBFgEYARoBDAAcAQzAXgEgASIBJAEdQCXBHUAnwSnBK4EtgS6BMIEyAR1AHUAdQB1AHUAdQCVANAEYABgAGAAYABgAGAAYABgANgEYADcBOQEYADsBPQE/AQEBQwFFAUcBSQFLAU0BWQEPAVEBUsFUwVbBWAAYgVgAGoFcgV6BYIFigWRBWAAmQWfBaYFYABgAGAAYABgAKoFYACxBbAFuQW6BcEFwQXHBcEFwQXPBdMF2wXjBeoF8gX6BQIGCgYSBhoGIgYqBjIGOgZgAD4GRgZMBmAAUwZaBmAAYABgAGAAYABgAGAAYABgAGAAYABgAGIGYABpBnAGYABgAGAAYABgAGAAYABgAGAAYAB4Bn8GhQZgAGAAYAB1AHcDFQSLBmAAYABgAJMGdQA9A3UAmwajBqsGqwaVALMGuwbDBjAAywbSBtIG1QbSBtIG0gbSBtIG0gbdBuMG6wbzBvsGAwcLBxMHAwcbByMHJwcsBywHMQcsB9IGOAdAB0gHTgfSBkgHVgfSBtIG0gbSBtIG0gbSBtIG0gbSBiwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdgAGAALAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAdbB2MHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB2kH0gZwB64EdQB1AHUAdQB1AHUAdQB1AHUHfQdgAIUHjQd1AHUAlQedB2AAYAClB6sHYACzB7YHvgfGB3UAzgfWBzMB3gfmB1EB7gf1B/0HlQENAQUIDQh1ABUIHQglCBcDLQg1CD0IRQhNCEEDUwh1AHUAdQBbCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIaQhjCGQIZQhmCGcIaAhpCGMIZAhlCGYIZwhoCGkIYwhkCGUIZghnCGgIcAh3CHoIMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIgggwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAALAcsBywHLAcsBywHLAcsBywHLAcsB4oILAcsB44I0gaWCJ4Ipgh1AHUAqgiyCHUAdQB1AHUAdQB1AHUAdQB1AHUAtwh8AXUAvwh1AMUIyQjRCNkI4AjoCHUAdQB1AO4I9gj+CAYJDgkTCS0HGwkjCYIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiCCIIIggiAAIAAAAFAAYABgAGIAXwBgAHEAdQBFAJUAogCyAKAAYABgAEIA4ABGANMA4QDxAMEBDwE1AFwBLAE6AQEBUQF4QkhCmEKoQrhCgAHIQsAB0MLAAcABwAHAAeDC6ABoAHDCwMMAAcABwAHAAdDDGMMAAcAB6MM4wwjDWMNow3jDaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAGgAaABoAEjDqABWw6bDqABpg6gAaABoAHcDvwOPA+gAaABfA/8DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DvwO/A78DpcPAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcAB9cPKwkyCToJMAB1AHUAdQBCCUoJTQl1AFUJXAljCWcJawkwADAAMAAwAHMJdQB2CX4JdQCECYoJjgmWCXUAngkwAGAAYABxAHUApgn3A64JtAl1ALkJdQDACTAAMAAwADAAdQB1AHUAdQB1AHUAdQB1AHUAowYNBMUIMAAwADAAMADICcsJ0wnZCRUE4QkwAOkJ8An4CTAAMAB1AAAKvwh1AAgKDwoXCh8KdQAwACcKLgp1ADYKqAmICT4KRgowADAAdQB1AE4KMAB1AFYKdQBeCnUAZQowADAAMAAwADAAMAAwADAAMAAVBHUAbQowADAAdQC5CXUKMAAwAHwBxAijBogEMgF9CoQKiASMCpQKmgqIBKIKqgquCogEDQG2Cr4KxgrLCjAAMADTCtsKCgHjCusK8Qr5CgELMAAwADAAMAB1AIsECQsRC3UANAEZCzAAMAAwADAAMAB1ACELKQswAHUANAExCzkLdQBBC0kLMABRC1kLMAAwADAAMAAwADAAdQBhCzAAMAAwAGAAYABpC3ELdwt/CzAAMACHC4sLkwubC58Lpwt1AK4Ltgt1APsDMAAwADAAMAAwADAAMAAwAL4LwwvLC9IL1wvdCzAAMADlC+kL8Qv5C/8LSQswADAAMAAwADAAMAAwADAAMAAHDDAAMAAwADAAMAAODBYMHgx1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1ACYMMAAwADAAdQB1AHUALgx1AHUAdQB1AHUAdQA2DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AD4MdQBGDHUAdQB1AHUAdQB1AEkMdQB1AHUAdQB1AFAMMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQBYDHUAdQB1AF8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUA+wMVBGcMMAAwAHwBbwx1AHcMfwyHDI8MMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAYABgAJcMMAAwADAAdQB1AJ8MlQClDDAAMACtDCwHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsB7UMLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHdQB1AHUAdQB1AHUAdQB1AHUAdQB1AHUAdQB1AA0EMAC9DDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAsBywHLAcsBywHLAcsBywHLQcwAMEMyAwsBywHLAcsBywHLAcsBywHLAcsBywHzAwwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwAHUAdQB1ANQM2QzhDDAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMABgAGAAYABgAGAAYABgAOkMYADxDGAA+AwADQYNYABhCWAAYAAODTAAMAAwADAAFg1gAGAAHg37AzAAMAAwADAAYABgACYNYAAsDTQNPA1gAEMNPg1LDWAAYABgAGAAYABgAGAAYABgAGAAUg1aDYsGVglhDV0NcQBnDW0NdQ15DWAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAlQCBDZUAiA2PDZcNMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAnw2nDTAAMAAwADAAMAAwAHUArw23DTAAMAAwADAAMAAwADAAMAAwADAAMAB1AL8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAB1AHUAdQB1AHUAdQDHDTAAYABgAM8NMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA1w11ANwNMAAwAD0B5A0wADAAMAAwADAAMADsDfQN/A0EDgwOFA4wABsOMAAwADAAMAAwADAAMAAwANIG0gbSBtIG0gbSBtIG0gYjDigOwQUuDsEFMw7SBjoO0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGQg5KDlIOVg7SBtIGXg5lDm0OdQ7SBtIGfQ6EDooOjQ6UDtIGmg6hDtIG0gaoDqwO0ga0DrwO0gZgAGAAYADEDmAAYAAkBtIGzA5gANIOYADaDokO0gbSBt8O5w7SBu8O0gb1DvwO0gZgAGAAxA7SBtIG0gbSBtIGYABgAGAAYAAED2AAsAUMD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHJA8sBywHLAcsBywHLAccDywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywPLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAc0D9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAccD9IG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIGFA8sBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHLAcsBywHPA/SBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gbSBtIG0gYUD0QPlQCVAJUAMAAwADAAMACVAJUAlQCVAJUAlQCVAEwPMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAA//8EAAQABAAEAAQABAAEAAQABAANAAMAAQABAAIABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQACgATABcAHgAbABoAHgAXABYAEgAeABsAGAAPABgAHABLAEsASwBLAEsASwBLAEsASwBLABgAGAAeAB4AHgATAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABYAGwASAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWAA0AEQAeAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAFAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJABYAGgAbABsAGwAeAB0AHQAeAE8AFwAeAA0AHgAeABoAGwBPAE8ADgBQAB0AHQAdAE8ATwAXAE8ATwBPABYAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AHgAeAFAATwBAAE8ATwBPAEAATwBQAFAATwBQAB4AHgAeAB4AHgAeAB0AHQAdAB0AHgAdAB4ADgBQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgBQAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAJAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAkACQAJAAkACQAJAAkABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAFAAHgAeAB4AKwArAFAAUABQAFAAGABQACsAKwArACsAHgAeAFAAHgBQAFAAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUAAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAYAA0AKwArAB4AHgAbACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAB4ABAAEAB4ABAAEABMABAArACsAKwArACsAKwArACsAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAKwArACsAKwBWAFYAVgBWAB4AHgArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AGgAaABoAGAAYAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQAEwAEACsAEwATAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABLAEsASwBLAEsASwBLAEsASwBLABoAGQAZAB4AUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQABMAUAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABABQAFAABAAEAB4ABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUAAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAFAABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQAUABQAB4AHgAYABMAUAArACsABAAbABsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAFAABAAEAAQABAAEAFAABAAEAAQAUAAEAAQABAAEAAQAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArACsAHgArAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAUAAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEAA0ADQBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUAArACsAKwBQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABABQACsAKwArACsAKwArACsAKwAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUAAaABoAUABQAFAAUABQAEwAHgAbAFAAHgAEACsAKwAEAAQABAArAFAAUABQAFAAUABQACsAKwArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQACsAUABQACsAKwAEACsABAAEAAQABAAEACsAKwArACsABAAEACsAKwAEAAQABAArACsAKwAEACsAKwArACsAKwArACsAUABQAFAAUAArAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLAAQABABQAFAAUAAEAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsAKwAEAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAArACsAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AGwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAKwArACsAKwArAAQABAAEACsAKwArACsAUABQACsAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAAQAUAArAFAAUABQAFAAUABQACsAKwArAFAAUABQACsAUABQAFAAUAArACsAKwBQAFAAKwBQACsAUABQACsAKwArAFAAUAArACsAKwBQAFAAUAArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArAAQABAAEAAQABAArACsAKwAEAAQABAArAAQABAAEAAQAKwArAFAAKwArACsAKwArACsABAArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAHgAeAB4AHgAeAB4AGwAeACsAKwArACsAKwAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAUABQAFAAKwArACsAKwArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwAOAFAAUABQAFAAUABQAFAAHgBQAAQABAAEAA4AUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAKwArAAQAUAAEAAQABAAEAAQABAAEACsABAAEAAQAKwAEAAQABAAEACsAKwArACsAKwArACsABAAEACsAKwArACsAKwArACsAUAArAFAAUAAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAFAABAAEAAQABAAEAAQABAArAAQABAAEACsABAAEAAQABABQAB4AKwArACsAKwBQAFAAUAAEAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQABoAUABQAFAAUABQAFAAKwAEAAQABAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQACsAUAArACsAUABQAFAAUABQAFAAUAArACsAKwAEACsAKwArACsABAAEAAQABAAEAAQAKwAEACsABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArAAQABAAeACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAXAAqACoAKgAqACoAKgAqACsAKwArACsAGwBcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAeAEsASwBLAEsASwBLAEsASwBLAEsADQANACsAKwArACsAKwBcAFwAKwBcACsAXABcAFwAXABcACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAXAArAFwAXABcAFwAXABcAFwAXABcAFwAKgBcAFwAKgAqACoAKgAqACoAKgAqACoAXAArACsAXABcAFwAXABcACsAXAArACoAKgAqACoAKgAqACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwBcAFwAXABcAFAADgAOAA4ADgAeAA4ADgAJAA4ADgANAAkAEwATABMAEwATAAkAHgATAB4AHgAeAAQABAAeAB4AHgAeAB4AHgBLAEsASwBLAEsASwBLAEsASwBLAFAAUABQAFAAUABQAFAAUABQAFAADQAEAB4ABAAeAAQAFgARABYAEQAEAAQAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQADQAEAAQABAAEAAQADQAEAAQAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAA0ADQAeAB4AHgAeAB4AHgAEAB4AHgAeAB4AHgAeACsAHgAeAA4ADgANAA4AHgAeAB4AHgAeAAkACQArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgBcAEsASwBLAEsASwBLAEsASwBLAEsADQANAB4AHgAeAB4AXABcAFwAXABcAFwAKgAqACoAKgBcAFwAXABcACoAKgAqAFwAKgAqACoAXABcACoAKgAqACoAKgAqACoAXABcAFwAKgAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKgAqAFwAKgBLAEsASwBLAEsASwBLAEsASwBLACoAKgAqACoAKgAqAFAAUABQAFAAUABQACsAUAArACsAKwArACsAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAKwBQACsAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsABAAEAAQAHgANAB4AHgAeAB4AHgAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUAArACsADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAWABEAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQANAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAANAA0AKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUAArAAQABAArACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqAA0ADQAVAFwADQAeAA0AGwBcACoAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwAeAB4AEwATAA0ADQAOAB4AEwATAB4ABAAEAAQACQArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAHgArACsAKwATABMASwBLAEsASwBLAEsASwBLAEsASwBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAXABcAFwAXABcACsAKwArACsAKwArACsAKwArACsAKwBcAFwAXABcAFwAXABcAFwAXABcAFwAXAArACsAKwArAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAXAArACsAKwAqACoAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAArACsAHgAeAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcACoAKgAqACoAKgAqACoAKgAqACoAKwAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKwArAAQASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACoAKgAqACoAKgAqACoAXAAqACoAKgAqACoAKgArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABABQAFAAUABQAFAAUABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwANAA0AHgANAA0ADQANAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAEAAQABAAEAAQAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwAeAB4AHgAeAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArAA0ADQANAA0ADQBLAEsASwBLAEsASwBLAEsASwBLACsAKwArAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAA0ADQBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUAAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArAAQABAAEAB4ABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAAQAUABQAFAAUABQAFAABABQAFAABAAEAAQAUAArACsAKwArACsABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQACsAUAArAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAFAAUABQACsAHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQACsAKwAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQACsAHgAeAB4AHgAeAB4AHgAOAB4AKwANAA0ADQANAA0ADQANAAkADQANAA0ACAAEAAsABAAEAA0ACQANAA0ADAAdAB0AHgAXABcAFgAXABcAFwAWABcAHQAdAB4AHgAUABQAFAANAAEAAQAEAAQABAAEAAQACQAaABoAGgAaABoAGgAaABoAHgAXABcAHQAVABUAHgAeAB4AHgAeAB4AGAAWABEAFQAVABUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ADQAeAA0ADQANAA0AHgANAA0ADQAHAB4AHgAeAB4AKwAEAAQABAAEAAQABAAEAAQABAAEAFAAUAArACsATwBQAFAAUABQAFAAHgAeAB4AFgARAE8AUABPAE8ATwBPAFAAUABQAFAAUAAeAB4AHgAWABEAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArABsAGwAbABsAGwAbABsAGgAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGgAbABsAGwAbABoAGwAbABoAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbABsAGwAbAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAHgAeAFAAGgAeAB0AHgBQAB4AGgAeAB4AHgAeAB4AHgAeAB4AHgBPAB4AUAAbAB4AHgBQAFAAUABQAFAAHgAeAB4AHQAdAB4AUAAeAFAAHgBQAB4AUABPAFAAUAAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAHgBQAFAAUABQAE8ATwBQAFAAUABQAFAATwBQAFAATwBQAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAUABQAFAATwBPAE8ATwBPAE8ATwBPAE8ATwBQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABPAB4AHgArACsAKwArAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHQAdAB4AHgAeAB0AHQAeAB4AHQAeAB4AHgAdAB4AHQAbABsAHgAdAB4AHgAeAB4AHQAeAB4AHQAdAB0AHQAeAB4AHQAeAB0AHgAdAB0AHQAdAB0AHQAeAB0AHgAeAB4AHgAeAB0AHQAdAB0AHgAeAB4AHgAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB4AHgAeAB0AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAeAB0AHQAdAB0AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAdAB4AHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAWABEAHgAeAB4AHgAeAB4AHQAeAB4AHgAeAB4AHgAeACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAWABEAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAFAAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAeAB4AHQAdAB0AHQAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB0AHQAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB0AHQAeAB4AHQAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AHQAdAB0AHgAeAB0AHgAeAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlAB4AHQAdAB4AHgAdAB4AHgAeAB4AHQAdAB4AHgAeAB4AJQAlAB0AHQAlAB4AJQAlACUAIAAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAeAB4AHgAeAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHgAdAB0AHQAeAB0AJQAdAB0AHgAdAB0AHgAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHQAdAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAdAB0AHQAdACUAHgAlACUAJQAdACUAJQAdAB0AHQAlACUAHQAdACUAHQAdACUAJQAlAB4AHQAeAB4AHgAeAB0AHQAlAB0AHQAdAB0AHQAdACUAJQAlACUAJQAdACUAJQAgACUAHQAdACUAJQAlACUAJQAlACUAJQAeAB4AHgAlACUAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB0AHgAeAB4AFwAXABcAFwAXABcAHgATABMAJQAeAB4AHgAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARABYAEQAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAWABEAFgARABYAEQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAWABEAFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AFgARAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAdAB0AHQAdAB0AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAFAAUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAEAAQABAAeAB4AKwArACsAKwArABMADQANAA0AUAATAA0AUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUAANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAA0ADQANAA0ADQANAA0ADQAeAA0AFgANAB4AHgAXABcAHgAeABcAFwAWABEAFgARABYAEQAWABEADQANAA0ADQATAFAADQANAB4ADQANAB4AHgAeAB4AHgAMAAwADQANAA0AHgANAA0AFgANAA0ADQANAA0ADQANAA0AHgANAB4ADQANAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArACsAKwArACsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArAA0AEQARACUAJQBHAFcAVwAWABEAFgARABYAEQAWABEAFgARACUAJQAWABEAFgARABYAEQAWABEAFQAWABEAEQAlAFcAVwBXAFcAVwBXAFcAVwBXAAQABAAEAAQABAAEACUAVwBXAFcAVwA2ACUAJQBXAFcAVwBHAEcAJQAlACUAKwBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBRAFcAUQBXAFEAVwBXAFcAVwBXAFcAUQBXAFcAVwBXAFcAVwBRAFEAKwArAAQABAAVABUARwBHAFcAFQBRAFcAUQBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFEAVwBRAFcAUQBXAFcAVwBXAFcAVwBRAFcAVwBXAFcAVwBXAFEAUQBXAFcAVwBXABUAUQBHAEcAVwArACsAKwArACsAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwAlACUAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACsAKwArACsAKwArACsAKwArACsAKwArAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAUQBRAFEAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBPAE8ATwBPAE8ATwBPAE8AJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADQATAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABLAEsASwBLAEsASwBLAEsASwBLAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAABAAEAAQABAAeAAQABAAEAAQABAAEAAQABAAEAAQAHgBQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUABQAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAeAA0ADQANAA0ADQArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AUAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAB4AHgAeAB4AHgAeAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AUABQAFAAUABQAFAAUABQAFAAUABQAAQAUABQAFAABABQAFAAUABQAAQAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAeAB4AHgAeAAQAKwArACsAUABQAFAAUABQAFAAHgAeABoAHgArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAADgAOABMAEwArACsAKwArACsAKwArACsABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwANAA0ASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUAAeAB4AHgBQAA4AUABQAAQAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArAB4AWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYAFgAWABYACsAKwArAAQAHgAeAB4AHgAeAB4ADQANAA0AHgAeAB4AHgArAFAASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArAB4AHgBcAFwAXABcAFwAKgBcAFwAXABcAFwAXABcAFwAXABcAEsASwBLAEsASwBLAEsASwBLAEsAXABcAFwAXABcACsAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAFAAUABQAAQAUABQAFAAUABQAFAAUABQAAQABAArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAHgANAA0ADQBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKgAqACoAXAAqACoAKgBcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXAAqAFwAKgAqACoAXABcACoAKgBcAFwAXABcAFwAKgAqAFwAKgBcACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFwAXABcACoAKgBQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAA0ADQBQAFAAUAAEAAQAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQADQAEAAQAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAVABVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBUAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVAFUAVQBVACsAKwArACsAKwArACsAKwArACsAKwArAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAWQBZAFkAKwArACsAKwBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAWgBaAFoAKwArACsAKwAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAKwArACsAKwArAFYABABWAFYAVgBWAFYAVgBWAFYAVgBWAB4AVgBWAFYAVgBWAFYAVgBWAFYAVgBWAFYAVgArAFYAVgBWAFYAVgArAFYAKwBWAFYAKwBWAFYAKwBWAFYAVgBWAFYAVgBWAFYAVgBWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAEQAWAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAaAB4AKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAGAARABEAGAAYABMAEwAWABEAFAArACsAKwArACsAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACUAJQAlACUAJQAWABEAFgARABYAEQAWABEAFgARABYAEQAlACUAFgARACUAJQAlACUAJQAlACUAEQAlABEAKwAVABUAEwATACUAFgARABYAEQAWABEAJQAlACUAJQAlACUAJQAlACsAJQAbABoAJQArACsAKwArAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAcAKwATACUAJQAbABoAJQAlABYAEQAlACUAEQAlABEAJQBXAFcAVwBXAFcAVwBXAFcAVwBXABUAFQAlACUAJQATACUAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXABYAJQARACUAJQAlAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAWACUAEQAlABYAEQARABYAEQARABUAVwBRAFEAUQBRAFEAUQBRAFEAUQBRAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAEcARwArACsAVwBXAFcAVwBXAFcAKwArAFcAVwBXAFcAVwBXACsAKwBXAFcAVwBXAFcAVwArACsAVwBXAFcAKwArACsAGgAbACUAJQAlABsAGwArAB4AHgAeAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwAEAAQABAAQAB0AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsADQANAA0AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAA0AUABQAFAAUAArACsAKwArAFAAUABQAFAAUABQAFAAUAANAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwArAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwBQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwANAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAB4AUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAUABQAFAAUABQAAQABAAEACsABAAEACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAKwBQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAA0ADQANAA0ADQANAA0ADQAeACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAArACsAKwArAFAAUABQAFAAUAANAA0ADQANAA0ADQAUACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsADQANAA0ADQANAA0ADQBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAB4AHgAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArAAQABAANACsAKwBQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAB4AHgAeAB4AHgArACsAKwArACsAKwAEAAQABAAEAAQABAAEAA0ADQAeAB4AHgAeAB4AKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwAeACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEACsASwBLAEsASwBLAEsASwBLAEsASwANAA0ADQANAFAABAAEAFAAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAeAA4AUAArACsAKwArACsAKwArACsAKwAEAFAAUABQAFAADQANAB4ADQAEAAQABAAEAB4ABAAEAEsASwBLAEsASwBLAEsASwBLAEsAUAAOAFAADQANAA0AKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAANAA0AHgANAA0AHgAEACsAUABQAFAAUABQAFAAUAArAFAAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAA0AKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsABAAEAAQABAArAFAAUABQAFAAUABQAFAAUAArACsAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQACsABAAEAFAABAAEAAQABAAEAAQABAArACsABAAEACsAKwAEAAQABAArACsAUAArACsAKwArACsAKwAEACsAKwArACsAKwBQAFAAUABQAFAABAAEACsAKwAEAAQABAAEAAQABAAEACsAKwArAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsABAAEAAQABAAEAAQABABQAFAAUABQAA0ADQANAA0AHgBLAEsASwBLAEsASwBLAEsASwBLAA0ADQArAB4ABABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAFAAUAAeAFAAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABAAEAAQADgANAA0AEwATAB4AHgAeAA0ADQANAA0ADQANAA0ADQANAA0ADQANAA0ADQANAFAAUABQAFAABAAEACsAKwAEAA0ADQAeAFAAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAFAAKwArACsAKwArACsAKwBLAEsASwBLAEsASwBLAEsASwBLACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAXABcAFwAKwArACoAKgAqACoAKgAqACoAKgAqACoAKgAqACoAKgAqACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBcAFwADQANAA0AKgBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAKwArAFAAKwArAFAAUABQAFAAUABQAFAAUAArAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQAKwAEAAQAKwArAAQABAAEAAQAUAAEAFAABAAEAA0ADQANACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAArACsABAAEAAQABAAEAAQABABQAA4AUAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAABAAEAAQABAAEAAQABAAEAAQABABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAFAABAAEAAQABAAOAB4ADQANAA0ADQAOAB4ABAArACsAKwArACsAKwArACsAUAAEAAQABAAEAAQABAAEAAQABAAEAAQAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAA0ADQANAFAADgAOAA4ADQANACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAEAAQABAAEACsABAAEAAQABAAEAAQABAAEAFAADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAOABMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQACsAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAArACsAKwAEACsABAAEACsABAAEAAQABAAEAAQABABQAAQAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAUABQAFAAUABQAFAAKwBQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAUAArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAABAAEAAQABAAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAaABoAGgAaAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArAA0AUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsADQANAA0ADQANACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABIAEgAQwBDAEMAUABQAFAAUABDAFAAUABQAEgAQwBIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAASABDAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwAJAAkACQAJAAkACQAJABYAEQArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABIAEMAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwANAA0AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArAAQABAAEAAQABAANACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEAA0ADQANAB4AHgAeAB4AHgAeAFAAUABQAFAADQAeACsAKwArACsAKwArACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAANAA0AHgAeACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwAEAFAABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwAEAAQABAAEAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAARwBHABUARwAJACsAKwArACsAKwArACsAKwArACsAKwAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUQBRAFEAKwArACsAKwArACsAKwArACsAKwArACsAKwBRAFEAUQBRACsAKwArACsAKwArACsAKwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUAArACsAHgAEAAQADQAEAAQABAAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAAQABAAEAAQABAAeAB4AHgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAB4AHgAEAAQABAAEAAQABAAEAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4ABAAEAAQAHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwArACsAKwArACsAKwArACsAKwArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAKwArAFAAKwArAFAAUAArACsAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACsAUAArAFAAUABQAFAAUABQAFAAKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwBQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAHgAeAFAAUABQAFAAUAArAFAAKwArACsAUABQAFAAUABQAFAAUAArAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAB4AHgAeAB4AHgAeAB4AHgAeACsAKwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAEsASwBLAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAeAB4AHgAeAB4AHgAeAB4ABAAeAB4AHgAeAB4AHgAeAB4AHgAeAAQAHgAeAA0ADQANAA0AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQAKwAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArAAQABAAEAAQABAAEAAQAKwAEAAQAKwAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwAEAAQABAAEAAQABAAEAFAAUABQAFAAUABQAFAAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwBQAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArABsAUABQAFAAUABQACsAKwBQAFAAUABQAFAAUABQAFAAUAAEAAQABAAEAAQABAAEACsAKwArACsAKwArACsAKwArAB4AHgAeAB4ABAAEAAQABAAEAAQABABQACsAKwArACsASwBLAEsASwBLAEsASwBLAEsASwArACsAKwArABYAFgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAGgBQAFAAUAAaAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAeAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQACsAKwBQAFAAUABQACsAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUAArACsAKwArACsAKwBQACsAKwArACsAUAArAFAAKwBQACsAUABQAFAAKwBQAFAAKwBQACsAKwBQACsAUAArAFAAKwBQACsAUAArAFAAUAArAFAAKwArAFAAUABQAFAAKwBQAFAAUABQAFAAUABQACsAUABQAFAAUAArAFAAUABQAFAAKwBQACsAUABQAFAAUABQAFAAUABQAFAAUAArAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAArACsAKwArACsAUABQAFAAKwBQAFAAUABQAFAAKwBQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwAeAB4AKwArACsAKwArACsAKwArACsAKwArACsAKwArAE8ATwBPAE8ATwBPAE8ATwBPAE8ATwBPAE8AJQAlACUAHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHgAeAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB4AHgAeACUAJQAlAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAdAB0AHQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAKQApACkAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAlACUAJQAlACUAHgAlACUAJQAlACUAIAAgACAAJQAlACAAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACEAIQAhACEAIQAlACUAIAAgACUAJQAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlACUAIAAlACUAJQAlACAAIAAgACUAIAAgACAAJQAlACUAJQAlACUAJQAgACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAlAB4AJQAeACUAJQAlACUAJQAgACUAJQAlACUAHgAlAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAgACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACAAIAAgACAAIAAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeABcAFwAXABUAFQAVAB4AHgAeAB4AJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAgACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlACUAJQAeAB4AHgAeAB4AHgAeAB4AHgAeACUAJQAlACUAJQAlAB4AHgAeAB4AHgAeAB4AHgAlACUAJQAlACUAJQAlACUAHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAgACUAJQAgACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAJQAlACUAJQAlACUAIAAlACUAJQAlACUAJQAlACUAJQAgACAAIAAgACAAIAAgACAAIAAgACUAJQAgACAAIAAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACAAIAAlACAAIAAlACAAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAgACAAIAAlACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAJQAlAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AKwAeAB4AHgAeAB4AHgAeAB4AHgAeAB4AHgArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAEsASwBLAEsASwBLAEsASwBLAEsAKwArACsAKwArACsAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwArAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwAlACUAJQAlACUAJQAlACUAJQAlACUAVwBXACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQBXAFcAVwBXAFcAVwBXAFcAVwBXAFcAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAJQAlACUAKwAEACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArACsAKwArAA==';\nexport const byteLength = 39664;\n", "'use strict';\n\nimport {createTrieFromBase64} from 'utrie';\nimport {base64, byteLength} from './linebreak-trie';\nimport {fromCodePoint, toCodePoints} from './Util';\n\nexport const LETTER_NUMBER_MODIFIER = 50;\n\n// Non-tailorable Line Breaking Classes\nconst BK = 1; // Cause a line break (after)\nconst CR = 2; // Cause a line break (after), except between CR and LF\nconst LF = 3; // Cause a line break (after)\nconst CM = 4; // Prohibit a line break between the character and the preceding character\nconst NL = 5; // Cause a line break (after)\nconst SG = 6; // Do not occur in well-formed text\nconst WJ = 7; // Prohibit line breaks before and after\nconst ZW = 8; // Provide a break opportunity\nconst GL = 9; // Prohibit line breaks before and after\nconst SP = 10; // Enable indirect line breaks\nconst ZWJ = 11; // Prohibit line breaks within joiner sequences\n// Break Opportunities\nconst B2 = 12; // Provide a line break opportunity before and after the character\nconst BA = 13; // Generally provide a line break opportunity after the character\nconst BB = 14; // Generally provide a line break opportunity before the character\nconst HY = 15; // Provide a line break opportunity after the character, except in numeric context\nconst CB = 16; // Provide a line break opportunity contingent on additional information\n// Characters Prohibiting Certain Breaks\nconst CL = 17; // Prohibit line breaks before\nconst CP = 18; // Prohibit line breaks before\nconst EX = 19; // Prohibit line breaks before\nconst IN = 20; // Allow only indirect line breaks between pairs\nconst NS = 21; // Allow only indirect line breaks before\nconst OP = 22; // Prohibit line breaks after\nconst QU = 23; // Act like they are both opening and closing\n// Numeric Context\nconst IS = 24; // Prevent breaks after any and before numeric\nconst NU = 25; // Form numeric expressions for line breaking purposes\nconst PO = 26; // Do not break following a numeric expression\nconst PR = 27; // Do not break in front of a numeric expression\nconst SY = 28; // Prevent a break before; and allow a break after\n// Other Characters\nconst AI = 29; // Act like AL when the resolvedEAW is N; otherwise; act as ID\nconst AL = 30; // Are alphabetic characters or symbols that are used with alphabetic characters\nconst CJ = 31; // Treat as NS or ID for strict or normal breaking.\nconst EB = 32; // Do not break from following Emoji Modifier\nconst EM = 33; // Do not break from preceding Emoji Base\nconst H2 = 34; // Form Korean syllable blocks\nconst H3 = 35; // Form Korean syllable blocks\nconst HL = 36; // Do not break around a following hyphen; otherwise act as Alphabetic\nconst ID = 37; // Break before or after; except in some numeric context\nconst JL = 38; // Form Korean syllable blocks\nconst JV = 39; // Form Korean syllable blocks\nconst JT = 40; // Form Korean syllable blocks\nconst RI = 41; // Keep pairs together. For pairs; break before and after other classes\nconst SA = 42; // Provide a line break opportunity contingent on additional, language-specific context analysis\nconst XX = 43; // Have as yet unknown line breaking behavior or unassigned code positions\n\nconst ea_OP = [0x2329, 0xff08];\n\nexport const classes: {[key: string]: number} = {\n BK,\n CR,\n LF,\n CM,\n NL,\n SG,\n WJ,\n ZW,\n GL,\n SP,\n ZWJ,\n B2,\n BA,\n BB,\n HY,\n CB,\n CL,\n CP,\n EX,\n IN,\n NS,\n OP,\n QU,\n IS,\n NU,\n PO,\n PR,\n SY,\n AI,\n AL,\n CJ,\n EB,\n EM,\n H2,\n H3,\n HL,\n ID,\n JL,\n JV,\n JT,\n RI,\n SA,\n XX,\n};\n\nexport const BREAK_MANDATORY = '!';\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nconst ALPHABETICS = [AL, HL];\nconst HARD_LINE_BREAKS = [BK, CR, LF, NL];\nconst SPACE = [SP, ZW];\nconst PREFIX_POSTFIX = [PR, PO];\nconst LINE_BREAKS = HARD_LINE_BREAKS.concat(SPACE);\nconst KOREAN_SYLLABLE_BLOCK = [JL, JV, JT, H2, H3];\nconst HYPHEN = [HY, BA];\n\nexport const codePointsToCharacterClasses = (\n codePoints: number[],\n lineBreak: string = 'strict'\n): [number[], number[], boolean[]] => {\n const types: number[] = [];\n const indices: number[] = [];\n const categories: boolean[] = [];\n codePoints.forEach((codePoint, index) => {\n let classType = UnicodeTrie.get(codePoint);\n if (classType > LETTER_NUMBER_MODIFIER) {\n categories.push(true);\n classType -= LETTER_NUMBER_MODIFIER;\n } else {\n categories.push(false);\n }\n\n if (['normal', 'auto', 'loose'].indexOf(lineBreak) !== -1) {\n // U+2010, – U+2013, 〜 U+301C, ゠ U+30A0\n if ([0x2010, 0x2013, 0x301c, 0x30a0].indexOf(codePoint) !== -1) {\n indices.push(index);\n return types.push(CB);\n }\n }\n\n if (classType === CM || classType === ZWJ) {\n // LB10 Treat any remaining combining mark or ZWJ as AL.\n if (index === 0) {\n indices.push(index);\n return types.push(AL);\n }\n\n // LB9 Do not break a combining character sequence; treat it as if it has the line breaking class of\n // the base character in all of the following rules. Treat ZWJ as if it were CM.\n const prev = types[index - 1];\n if (LINE_BREAKS.indexOf(prev) === -1) {\n indices.push(indices[index - 1]);\n return types.push(prev);\n }\n indices.push(index);\n return types.push(AL);\n }\n\n indices.push(index);\n\n if (classType === CJ) {\n return types.push(lineBreak === 'strict' ? NS : ID);\n }\n\n if (classType === SA) {\n return types.push(AL);\n }\n\n if (classType === AI) {\n return types.push(AL);\n }\n\n // For supplementary characters, a useful default is to treat characters in the range 10000..1FFFD as AL\n // and characters in the ranges 20000..2FFFD and 30000..3FFFD as ID, until the implementation can be revised\n // to take into account the actual line breaking properties for these characters.\n if (classType === XX) {\n if ((codePoint >= 0x20000 && codePoint <= 0x2fffd) || (codePoint >= 0x30000 && codePoint <= 0x3fffd)) {\n return types.push(ID);\n } else {\n return types.push(AL);\n }\n }\n\n types.push(classType);\n });\n\n return [indices, types, categories];\n};\n\nconst isAdjacentWithSpaceIgnored = (\n a: number[] | number,\n b: number,\n currentIndex: number,\n classTypes: number[]\n): boolean => {\n const current = classTypes[currentIndex];\n if (Array.isArray(a) ? a.indexOf(current) !== -1 : a === current) {\n let i = currentIndex;\n while (i <= classTypes.length) {\n i++;\n let next = classTypes[i];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (current === SP) {\n let i = currentIndex;\n\n while (i > 0) {\n i--;\n const prev = classTypes[i];\n\n if (Array.isArray(a) ? a.indexOf(prev) !== -1 : a === prev) {\n let n = currentIndex;\n while (n <= classTypes.length) {\n n++;\n let next = classTypes[n];\n\n if (next === b) {\n return true;\n }\n\n if (next !== SP) {\n break;\n }\n }\n }\n\n if (prev !== SP) {\n break;\n }\n }\n }\n return false;\n};\n\nconst previousNonSpaceClassType = (currentIndex: number, classTypes: number[]): number => {\n let i = currentIndex;\n while (i >= 0) {\n let type = classTypes[i];\n if (type === SP) {\n i--;\n } else {\n return type;\n }\n }\n return 0;\n};\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED | typeof BREAK_MANDATORY;\n\nconst _lineBreakAtIndex = (\n codePoints: number[],\n classTypes: number[],\n indicies: number[],\n index: number,\n forbiddenBreaks?: boolean[]\n): BREAK_OPPORTUNITIES => {\n if (indicies[index] === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n let currentIndex = index - 1;\n if (Array.isArray(forbiddenBreaks) && forbiddenBreaks[currentIndex] === true) {\n return BREAK_NOT_ALLOWED;\n }\n\n let beforeIndex = currentIndex - 1;\n let afterIndex = currentIndex + 1;\n let current = classTypes[currentIndex];\n\n // LB4 Always break after hard line breaks.\n // LB5 Treat CR followed by LF, as well as CR, LF, and NL as hard line breaks.\n let before = beforeIndex >= 0 ? classTypes[beforeIndex] : 0;\n let next = classTypes[afterIndex];\n\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n if (HARD_LINE_BREAKS.indexOf(current) !== -1) {\n return BREAK_MANDATORY;\n }\n\n // LB6 Do not break before hard line breaks.\n if (HARD_LINE_BREAKS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB7 Do not break before spaces or zero width space.\n if (SPACE.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB8 Break before any character following a zero-width space, even if one or more spaces intervene.\n if (previousNonSpaceClassType(currentIndex, classTypes) === ZW) {\n return BREAK_ALLOWED;\n }\n\n // LB8a Do not break after a zero width joiner.\n if (UnicodeTrie.get(codePoints[currentIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // zwj emojis\n if ((current === EB || current === EM) && UnicodeTrie.get(codePoints[afterIndex]) === ZWJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB11 Do not break before or after Word joiner and related characters.\n if (current === WJ || next === WJ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12 Do not break after NBSP and related characters.\n if (current === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB12a Do not break before NBSP and related characters, except after spaces and hyphens.\n if ([SP, BA, HY].indexOf(current) === -1 && next === GL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB13 Do not break before ‘]’ or ‘!’ or ‘;’ or ‘/’, even after spaces.\n if ([CL, CP, EX, IS, SY].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB14 Do not break after ‘[’, even after spaces.\n if (previousNonSpaceClassType(currentIndex, classTypes) === OP) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB15 Do not break within ‘”[’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(QU, OP, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB16 Do not break between closing punctuation and a nonstarter (lb=NS), even with intervening spaces.\n if (isAdjacentWithSpaceIgnored([CL, CP], NS, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB17 Do not break within ‘——’, even with intervening spaces.\n if (isAdjacentWithSpaceIgnored(B2, B2, currentIndex, classTypes)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB18 Break after spaces.\n if (current === SP) {\n return BREAK_ALLOWED;\n }\n\n // LB19 Do not break before or after quotation marks, such as ‘ ” ’.\n if (current === QU || next === QU) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB20 Break before and after unresolved CB.\n if (next === CB || current === CB) {\n return BREAK_ALLOWED;\n }\n\n // LB21 Do not break before hyphen-minus, other hyphens, fixed-width spaces, small kana, and other non-starters, or after acute accents.\n if ([BA, HY, NS].indexOf(next) !== -1 || current === BB) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21a Don't break after Hebrew + Hyphen.\n if (before === HL && HYPHEN.indexOf(current) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB21b Don’t break between Solidus and Hebrew letters.\n if (current === SY && next === HL) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB22 Do not break before ellipsis.\n if (next === IN) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23 Do not break between digits and letters.\n if ((ALPHABETICS.indexOf(next) !== -1 && current === NU) || (ALPHABETICS.indexOf(current) !== -1 && next === NU)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB23a Do not break between numeric prefixes and ideographs, or between ideographs and numeric postfixes.\n if (\n (current === PR && [ID, EB, EM].indexOf(next) !== -1) ||\n ([ID, EB, EM].indexOf(current) !== -1 && next === PO)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB24 Do not break between numeric prefix/postfix and letters, or between letters and prefix/postfix.\n if (\n (ALPHABETICS.indexOf(current) !== -1 && PREFIX_POSTFIX.indexOf(next) !== -1) ||\n (PREFIX_POSTFIX.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB25 Do not break between the following pairs of classes relevant to numbers:\n if (\n // (PR | PO) × ( OP | HY )? NU\n ([PR, PO].indexOf(current) !== -1 &&\n (next === NU || ([OP, HY].indexOf(next) !== -1 && classTypes[afterIndex + 1] === NU))) ||\n // ( OP | HY ) × NU\n ([OP, HY].indexOf(current) !== -1 && next === NU) ||\n // NU ×\t(NU | SY | IS)\n (current === NU && [NU, SY, IS].indexOf(next) !== -1)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // NU (NU | SY | IS)* × (NU | SY | IS | CL | CP)\n if ([NU, SY, IS, CL, CP].indexOf(next) !== -1) {\n let prevIndex = currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // NU (NU | SY | IS)* (CL | CP)? × (PO | PR))\n if ([PR, PO].indexOf(next) !== -1) {\n let prevIndex = [CL, CP].indexOf(current) !== -1 ? beforeIndex : currentIndex;\n while (prevIndex >= 0) {\n let type = classTypes[prevIndex];\n if (type === NU) {\n return BREAK_NOT_ALLOWED;\n } else if ([SY, IS].indexOf(type) !== -1) {\n prevIndex--;\n } else {\n break;\n }\n }\n }\n\n // LB26 Do not break a Korean syllable.\n if (\n (JL === current && [JL, JV, H2, H3].indexOf(next) !== -1) ||\n ([JV, H2].indexOf(current) !== -1 && [JV, JT].indexOf(next) !== -1) ||\n ([JT, H3].indexOf(current) !== -1 && next === JT)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB27 Treat a Korean Syllable Block the same as ID.\n if (\n (KOREAN_SYLLABLE_BLOCK.indexOf(current) !== -1 && [IN, PO].indexOf(next) !== -1) ||\n (KOREAN_SYLLABLE_BLOCK.indexOf(next) !== -1 && current === PR)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB28 Do not break between alphabetics (“at”).\n if (ALPHABETICS.indexOf(current) !== -1 && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB29 Do not break between numeric punctuation and alphabetics (“e.g.”).\n if (current === IS && ALPHABETICS.indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30 Do not break between letters, numbers, or ordinary symbols and opening or closing parentheses.\n if (\n (ALPHABETICS.concat(NU).indexOf(current) !== -1 &&\n next === OP &&\n ea_OP.indexOf(codePoints[afterIndex]) === -1) ||\n (ALPHABETICS.concat(NU).indexOf(next) !== -1 && current === CP)\n ) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB30a Break between two regional indicator symbols if and only if there are an even number of regional\n // indicators preceding the position of the break.\n if (current === RI && next === RI) {\n let i = indicies[currentIndex];\n let count = 1;\n while (i > 0) {\n i--;\n if (classTypes[i] === RI) {\n count++;\n } else {\n break;\n }\n }\n if (count % 2 !== 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // LB30b Do not break between an emoji base and an emoji modifier.\n if (current === EB && next === EM) {\n return BREAK_NOT_ALLOWED;\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const lineBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // LB2 Never break at the start of text.\n if (index === 0) {\n return BREAK_NOT_ALLOWED;\n }\n\n // LB3 Always break at the end of text.\n if (index >= codePoints.length) {\n return BREAK_MANDATORY;\n }\n\n const [indices, classTypes] = codePointsToCharacterClasses(codePoints);\n\n return _lineBreakAtIndex(codePoints, classTypes, indices, index);\n};\n\nexport type LINE_BREAK = 'auto' | 'normal' | 'strict';\nexport type WORD_BREAK = 'normal' | 'break-all' | 'break-word' | 'keep-all';\n\ninterface IOptions {\n lineBreak?: LINE_BREAK;\n wordBreak?: WORD_BREAK;\n}\n\nconst cssFormattedClasses = (codePoints: number[], options?: IOptions): [number[], number[], boolean[] | undefined] => {\n if (!options) {\n options = {lineBreak: 'normal', wordBreak: 'normal'};\n }\n let [indicies, classTypes, isLetterNumber] = codePointsToCharacterClasses(codePoints, options.lineBreak);\n\n if (options.wordBreak === 'break-all' || options.wordBreak === 'break-word') {\n classTypes = classTypes.map((type) => ([NU, AL, SA].indexOf(type) !== -1 ? ID : type));\n }\n\n const forbiddenBreakpoints =\n options.wordBreak === 'keep-all'\n ? isLetterNumber.map((letterNumber, i) => {\n return letterNumber && codePoints[i] >= 0x4e00 && codePoints[i] <= 0x9fff;\n })\n : undefined;\n\n return [indicies, classTypes, forbiddenBreakpoints];\n};\n\nexport const inlineBreakOpportunities = (str: string, options?: IOptions): string => {\n const codePoints = toCodePoints(str);\n let output = BREAK_NOT_ALLOWED;\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n\n codePoints.forEach((codePoint, i) => {\n output +=\n fromCodePoint(codePoint) +\n (i >= codePoints.length - 1\n ? BREAK_MANDATORY\n : _lineBreakAtIndex(codePoints, classTypes, indicies, i + 1, forbiddenBreakpoints));\n });\n\n return output;\n};\n\nclass Break {\n private readonly codePoints: number[];\n readonly required: boolean;\n readonly start: number;\n readonly end: number;\n\n constructor(codePoints: number[], lineBreak: string, start: number, end: number) {\n this.codePoints = codePoints;\n this.required = lineBreak === BREAK_MANDATORY;\n this.start = start;\n this.end = end;\n }\n\n slice(): string {\n return fromCodePoint(...this.codePoints.slice(this.start, this.end));\n }\n}\n\nexport type LineBreak =\n | {\n done: true;\n value: null;\n }\n | {\n done: false;\n value: Break;\n };\n\ninterface ILineBreakIterator {\n next: () => LineBreak;\n}\n\nexport const LineBreaker = (str: string, options?: IOptions): ILineBreakIterator => {\n const codePoints = toCodePoints(str);\n const [indicies, classTypes, forbiddenBreakpoints] = cssFormattedClasses(codePoints, options);\n const length = codePoints.length;\n let lastEnd = 0;\n let nextIndex = 0;\n\n return {\n next: () => {\n if (nextIndex >= length) {\n return {done: true, value: null};\n }\n let lineBreak = BREAK_NOT_ALLOWED;\n while (\n nextIndex < length &&\n (lineBreak = _lineBreakAtIndex(codePoints, classTypes, indicies, ++nextIndex, forbiddenBreakpoints)) ===\n BREAK_NOT_ALLOWED\n ) {}\n\n if (lineBreak !== BREAK_NOT_ALLOWED || nextIndex === length) {\n const value = new Break(codePoints, lineBreak, lastEnd, nextIndex);\n lastEnd = nextIndex;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n },\n };\n};\n", "// https://www.w3.org/TR/css-syntax-3\n\nimport {fromCodePoint, toCodePoints} from 'css-line-break';\n\nexport const enum TokenType {\n STRING_TOKEN,\n BAD_STRING_TOKEN,\n LEFT_PARENTHESIS_TOKEN,\n RIGHT_PARENTHESIS_TOKEN,\n COMMA_TOKEN,\n HASH_TOKEN,\n DELIM_TOKEN,\n AT_KEYWORD_TOKEN,\n PREFIX_MATCH_TOKEN,\n DASH_MATCH_TOKEN,\n INCLUDE_MATCH_TOKEN,\n LEFT_CURLY_BRACKET_TOKEN,\n RIGHT_CURLY_BRACKET_TOKEN,\n SUFFIX_MATCH_TOKEN,\n SUBSTRING_MATCH_TOKEN,\n DIMENSION_TOKEN,\n PERCENTAGE_TOKEN,\n NUMBER_TOKEN,\n FUNCTION,\n FUNCTION_TOKEN,\n IDENT_TOKEN,\n COLUMN_TOKEN,\n URL_TOKEN,\n BAD_URL_TOKEN,\n CDC_TOKEN,\n CDO_TOKEN,\n COLON_TOKEN,\n SEMICOLON_TOKEN,\n LEFT_SQUARE_BRACKET_TOKEN,\n RIGHT_SQUARE_BRACKET_TOKEN,\n UNICODE_RANGE_TOKEN,\n WHITESPACE_TOKEN,\n EOF_TOKEN\n}\n\ninterface IToken {\n type: TokenType;\n}\n\nexport interface Token extends IToken {\n type:\n | TokenType.BAD_URL_TOKEN\n | TokenType.BAD_STRING_TOKEN\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.RIGHT_PARENTHESIS_TOKEN\n | TokenType.COMMA_TOKEN\n | TokenType.SUBSTRING_MATCH_TOKEN\n | TokenType.PREFIX_MATCH_TOKEN\n | TokenType.SUFFIX_MATCH_TOKEN\n | TokenType.COLON_TOKEN\n | TokenType.SEMICOLON_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN\n | TokenType.RIGHT_CURLY_BRACKET_TOKEN\n | TokenType.DASH_MATCH_TOKEN\n | TokenType.INCLUDE_MATCH_TOKEN\n | TokenType.COLUMN_TOKEN\n | TokenType.WHITESPACE_TOKEN\n | TokenType.CDC_TOKEN\n | TokenType.CDO_TOKEN\n | TokenType.EOF_TOKEN;\n}\n\nexport interface StringValueToken extends IToken {\n type:\n | TokenType.STRING_TOKEN\n | TokenType.DELIM_TOKEN\n | TokenType.FUNCTION_TOKEN\n | TokenType.IDENT_TOKEN\n | TokenType.URL_TOKEN\n | TokenType.AT_KEYWORD_TOKEN;\n value: string;\n}\n\nexport interface HashToken extends IToken {\n type: TokenType.HASH_TOKEN;\n flags: number;\n value: string;\n}\n\nexport interface NumberValueToken extends IToken {\n type: TokenType.PERCENTAGE_TOKEN | TokenType.NUMBER_TOKEN;\n flags: number;\n number: number;\n}\n\nexport interface DimensionToken extends IToken {\n type: TokenType.DIMENSION_TOKEN;\n flags: number;\n unit: string;\n number: number;\n}\n\nexport interface UnicodeRangeToken extends IToken {\n type: TokenType.UNICODE_RANGE_TOKEN;\n start: number;\n end: number;\n}\n\nexport type CSSToken = Token | StringValueToken | NumberValueToken | DimensionToken | UnicodeRangeToken | HashToken;\n\nexport const FLAG_UNRESTRICTED = 1 << 0;\nexport const FLAG_ID = 1 << 1;\nexport const FLAG_INTEGER = 1 << 2;\nexport const FLAG_NUMBER = 1 << 3;\n\nconst LINE_FEED = 0x000a;\nconst SOLIDUS = 0x002f;\nconst REVERSE_SOLIDUS = 0x005c;\nconst CHARACTER_TABULATION = 0x0009;\nconst SPACE = 0x0020;\nconst QUOTATION_MARK = 0x0022;\nconst EQUALS_SIGN = 0x003d;\nconst NUMBER_SIGN = 0x0023;\nconst DOLLAR_SIGN = 0x0024;\nconst PERCENTAGE_SIGN = 0x0025;\nconst APOSTROPHE = 0x0027;\nconst LEFT_PARENTHESIS = 0x0028;\nconst RIGHT_PARENTHESIS = 0x0029;\nconst LOW_LINE = 0x005f;\nconst HYPHEN_MINUS = 0x002d;\nconst EXCLAMATION_MARK = 0x0021;\nconst LESS_THAN_SIGN = 0x003c;\nconst GREATER_THAN_SIGN = 0x003e;\nconst COMMERCIAL_AT = 0x0040;\nconst LEFT_SQUARE_BRACKET = 0x005b;\nconst RIGHT_SQUARE_BRACKET = 0x005d;\nconst CIRCUMFLEX_ACCENT = 0x003d;\nconst LEFT_CURLY_BRACKET = 0x007b;\nconst QUESTION_MARK = 0x003f;\nconst RIGHT_CURLY_BRACKET = 0x007d;\nconst VERTICAL_LINE = 0x007c;\nconst TILDE = 0x007e;\nconst CONTROL = 0x0080;\nconst REPLACEMENT_CHARACTER = 0xfffd;\nconst ASTERISK = 0x002a;\nconst PLUS_SIGN = 0x002b;\nconst COMMA = 0x002c;\nconst COLON = 0x003a;\nconst SEMICOLON = 0x003b;\nconst FULL_STOP = 0x002e;\nconst NULL = 0x0000;\nconst BACKSPACE = 0x0008;\nconst LINE_TABULATION = 0x000b;\nconst SHIFT_OUT = 0x000e;\nconst INFORMATION_SEPARATOR_ONE = 0x001f;\nconst DELETE = 0x007f;\nconst EOF = -1;\nconst ZERO = 0x0030;\nconst a = 0x0061;\nconst e = 0x0065;\nconst f = 0x0066;\nconst u = 0x0075;\nconst z = 0x007a;\nconst A = 0x0041;\nconst E = 0x0045;\nconst F = 0x0046;\nconst U = 0x0055;\nconst Z = 0x005a;\n\nconst isDigit = (codePoint: number) => codePoint >= ZERO && codePoint <= 0x0039;\nconst isSurrogateCodePoint = (codePoint: number) => codePoint >= 0xd800 && codePoint <= 0xdfff;\nconst isHex = (codePoint: number) =>\n isDigit(codePoint) || (codePoint >= A && codePoint <= F) || (codePoint >= a && codePoint <= f);\nconst isLowerCaseLetter = (codePoint: number) => codePoint >= a && codePoint <= z;\nconst isUpperCaseLetter = (codePoint: number) => codePoint >= A && codePoint <= Z;\nconst isLetter = (codePoint: number) => isLowerCaseLetter(codePoint) || isUpperCaseLetter(codePoint);\nconst isNonASCIICodePoint = (codePoint: number) => codePoint >= CONTROL;\nconst isWhiteSpace = (codePoint: number): boolean =>\n codePoint === LINE_FEED || codePoint === CHARACTER_TABULATION || codePoint === SPACE;\nconst isNameStartCodePoint = (codePoint: number): boolean =>\n isLetter(codePoint) || isNonASCIICodePoint(codePoint) || codePoint === LOW_LINE;\nconst isNameCodePoint = (codePoint: number): boolean =>\n isNameStartCodePoint(codePoint) || isDigit(codePoint) || codePoint === HYPHEN_MINUS;\nconst isNonPrintableCodePoint = (codePoint: number): boolean => {\n return (\n (codePoint >= NULL && codePoint <= BACKSPACE) ||\n codePoint === LINE_TABULATION ||\n (codePoint >= SHIFT_OUT && codePoint <= INFORMATION_SEPARATOR_ONE) ||\n codePoint === DELETE\n );\n};\nconst isValidEscape = (c1: number, c2: number): boolean => {\n if (c1 !== REVERSE_SOLIDUS) {\n return false;\n }\n\n return c2 !== LINE_FEED;\n};\nconst isIdentifierStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === HYPHEN_MINUS) {\n return isNameStartCodePoint(c2) || isValidEscape(c2, c3);\n } else if (isNameStartCodePoint(c1)) {\n return true;\n } else if (c1 === REVERSE_SOLIDUS && isValidEscape(c1, c2)) {\n return true;\n }\n return false;\n};\n\nconst isNumberStart = (c1: number, c2: number, c3: number): boolean => {\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n if (isDigit(c2)) {\n return true;\n }\n\n return c2 === FULL_STOP && isDigit(c3);\n }\n\n if (c1 === FULL_STOP) {\n return isDigit(c2);\n }\n\n return isDigit(c1);\n};\n\nconst stringToNumber = (codePoints: number[]): number => {\n let c = 0;\n let sign = 1;\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n sign = -1;\n }\n c++;\n }\n\n const integers = [];\n\n while (isDigit(codePoints[c])) {\n integers.push(codePoints[c++]);\n }\n\n const int = integers.length ? parseInt(fromCodePoint(...integers), 10) : 0;\n\n if (codePoints[c] === FULL_STOP) {\n c++;\n }\n\n const fraction = [];\n while (isDigit(codePoints[c])) {\n fraction.push(codePoints[c++]);\n }\n\n const fracd = fraction.length;\n const frac = fracd ? parseInt(fromCodePoint(...fraction), 10) : 0;\n\n if (codePoints[c] === E || codePoints[c] === e) {\n c++;\n }\n\n let expsign = 1;\n\n if (codePoints[c] === PLUS_SIGN || codePoints[c] === HYPHEN_MINUS) {\n if (codePoints[c] === HYPHEN_MINUS) {\n expsign = -1;\n }\n c++;\n }\n\n const exponent = [];\n\n while (isDigit(codePoints[c])) {\n exponent.push(codePoints[c++]);\n }\n\n const exp = exponent.length ? parseInt(fromCodePoint(...exponent), 10) : 0;\n\n return sign * (int + frac * Math.pow(10, -fracd)) * Math.pow(10, expsign * exp);\n};\n\nconst LEFT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.LEFT_PARENTHESIS_TOKEN\n};\nconst RIGHT_PARENTHESIS_TOKEN: Token = {\n type: TokenType.RIGHT_PARENTHESIS_TOKEN\n};\nconst COMMA_TOKEN: Token = {type: TokenType.COMMA_TOKEN};\nconst SUFFIX_MATCH_TOKEN: Token = {type: TokenType.SUFFIX_MATCH_TOKEN};\nconst PREFIX_MATCH_TOKEN: Token = {type: TokenType.PREFIX_MATCH_TOKEN};\nconst COLUMN_TOKEN: Token = {type: TokenType.COLUMN_TOKEN};\nconst DASH_MATCH_TOKEN: Token = {type: TokenType.DASH_MATCH_TOKEN};\nconst INCLUDE_MATCH_TOKEN: Token = {type: TokenType.INCLUDE_MATCH_TOKEN};\nconst LEFT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_CURLY_BRACKET_TOKEN\n};\nconst RIGHT_CURLY_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_CURLY_BRACKET_TOKEN\n};\nconst SUBSTRING_MATCH_TOKEN: Token = {type: TokenType.SUBSTRING_MATCH_TOKEN};\nconst BAD_URL_TOKEN: Token = {type: TokenType.BAD_URL_TOKEN};\nconst BAD_STRING_TOKEN: Token = {type: TokenType.BAD_STRING_TOKEN};\nconst CDO_TOKEN: Token = {type: TokenType.CDO_TOKEN};\nconst CDC_TOKEN: Token = {type: TokenType.CDC_TOKEN};\nconst COLON_TOKEN: Token = {type: TokenType.COLON_TOKEN};\nconst SEMICOLON_TOKEN: Token = {type: TokenType.SEMICOLON_TOKEN};\nconst LEFT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.LEFT_SQUARE_BRACKET_TOKEN\n};\nconst RIGHT_SQUARE_BRACKET_TOKEN: Token = {\n type: TokenType.RIGHT_SQUARE_BRACKET_TOKEN\n};\nconst WHITESPACE_TOKEN: Token = {type: TokenType.WHITESPACE_TOKEN};\nexport const EOF_TOKEN: Token = {type: TokenType.EOF_TOKEN};\n\nexport class Tokenizer {\n private _value: number[];\n\n constructor() {\n this._value = [];\n }\n\n write(chunk: string): void {\n this._value = this._value.concat(toCodePoints(chunk));\n }\n\n read(): CSSToken[] {\n const tokens = [];\n let token = this.consumeToken();\n while (token !== EOF_TOKEN) {\n tokens.push(token);\n token = this.consumeToken();\n }\n return tokens;\n }\n\n private consumeToken(): CSSToken {\n const codePoint = this.consumeCodePoint();\n\n switch (codePoint) {\n case QUOTATION_MARK:\n return this.consumeStringToken(QUOTATION_MARK);\n case NUMBER_SIGN:\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if (isNameCodePoint(c1) || isValidEscape(c2, c3)) {\n const flags = isIdentifierStart(c1, c2, c3) ? FLAG_ID : FLAG_UNRESTRICTED;\n const value = this.consumeName();\n\n return {type: TokenType.HASH_TOKEN, value, flags};\n }\n break;\n case DOLLAR_SIGN:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUFFIX_MATCH_TOKEN;\n }\n break;\n case APOSTROPHE:\n return this.consumeStringToken(APOSTROPHE);\n case LEFT_PARENTHESIS:\n return LEFT_PARENTHESIS_TOKEN;\n case RIGHT_PARENTHESIS:\n return RIGHT_PARENTHESIS_TOKEN;\n case ASTERISK:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return SUBSTRING_MATCH_TOKEN;\n }\n break;\n case PLUS_SIGN:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case COMMA:\n return COMMA_TOKEN;\n case HYPHEN_MINUS:\n const e1 = codePoint;\n const e2 = this.peekCodePoint(0);\n const e3 = this.peekCodePoint(1);\n\n if (isNumberStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isIdentifierStart(e1, e2, e3)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n if (e2 === HYPHEN_MINUS && e3 === GREATER_THAN_SIGN) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDC_TOKEN;\n }\n break;\n\n case FULL_STOP:\n if (isNumberStart(codePoint, this.peekCodePoint(0), this.peekCodePoint(1))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n break;\n case SOLIDUS:\n if (this.peekCodePoint(0) === ASTERISK) {\n this.consumeCodePoint();\n while (true) {\n let c = this.consumeCodePoint();\n if (c === ASTERISK) {\n c = this.consumeCodePoint();\n if (c === SOLIDUS) {\n return this.consumeToken();\n }\n }\n if (c === EOF) {\n return this.consumeToken();\n }\n }\n }\n break;\n case COLON:\n return COLON_TOKEN;\n case SEMICOLON:\n return SEMICOLON_TOKEN;\n case LESS_THAN_SIGN:\n if (\n this.peekCodePoint(0) === EXCLAMATION_MARK &&\n this.peekCodePoint(1) === HYPHEN_MINUS &&\n this.peekCodePoint(2) === HYPHEN_MINUS\n ) {\n this.consumeCodePoint();\n this.consumeCodePoint();\n return CDO_TOKEN;\n }\n break;\n case COMMERCIAL_AT:\n const a1 = this.peekCodePoint(0);\n const a2 = this.peekCodePoint(1);\n const a3 = this.peekCodePoint(2);\n if (isIdentifierStart(a1, a2, a3)) {\n const value = this.consumeName();\n return {type: TokenType.AT_KEYWORD_TOKEN, value};\n }\n break;\n case LEFT_SQUARE_BRACKET:\n return LEFT_SQUARE_BRACKET_TOKEN;\n case REVERSE_SOLIDUS:\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n break;\n case RIGHT_SQUARE_BRACKET:\n return RIGHT_SQUARE_BRACKET_TOKEN;\n case CIRCUMFLEX_ACCENT:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return PREFIX_MATCH_TOKEN;\n }\n break;\n case LEFT_CURLY_BRACKET:\n return LEFT_CURLY_BRACKET_TOKEN;\n case RIGHT_CURLY_BRACKET:\n return RIGHT_CURLY_BRACKET_TOKEN;\n case u:\n case U:\n const u1 = this.peekCodePoint(0);\n const u2 = this.peekCodePoint(1);\n if (u1 === PLUS_SIGN && (isHex(u2) || u2 === QUESTION_MARK)) {\n this.consumeCodePoint();\n this.consumeUnicodeRangeToken();\n }\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n case VERTICAL_LINE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return DASH_MATCH_TOKEN;\n }\n if (this.peekCodePoint(0) === VERTICAL_LINE) {\n this.consumeCodePoint();\n return COLUMN_TOKEN;\n }\n break;\n case TILDE:\n if (this.peekCodePoint(0) === EQUALS_SIGN) {\n this.consumeCodePoint();\n return INCLUDE_MATCH_TOKEN;\n }\n break;\n case EOF:\n return EOF_TOKEN;\n }\n\n if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n return WHITESPACE_TOKEN;\n }\n\n if (isDigit(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeNumericToken();\n }\n\n if (isNameStartCodePoint(codePoint)) {\n this.reconsumeCodePoint(codePoint);\n return this.consumeIdentLikeToken();\n }\n\n return {type: TokenType.DELIM_TOKEN, value: fromCodePoint(codePoint)};\n }\n\n private consumeCodePoint(): number {\n const value = this._value.shift();\n\n return typeof value === 'undefined' ? -1 : value;\n }\n\n private reconsumeCodePoint(codePoint: number) {\n this._value.unshift(codePoint);\n }\n\n private peekCodePoint(delta: number): number {\n if (delta >= this._value.length) {\n return -1;\n }\n\n return this._value[delta];\n }\n\n private consumeUnicodeRangeToken(): UnicodeRangeToken {\n const digits = [];\n let codePoint = this.consumeCodePoint();\n while (isHex(codePoint) && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n let questionMarks = false;\n while (codePoint === QUESTION_MARK && digits.length < 6) {\n digits.push(codePoint);\n codePoint = this.consumeCodePoint();\n questionMarks = true;\n }\n\n if (questionMarks) {\n const start = parseInt(\n fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? ZERO : digit))),\n 16\n );\n const end = parseInt(fromCodePoint(...digits.map((digit) => (digit === QUESTION_MARK ? F : digit))), 16);\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n }\n\n const start = parseInt(fromCodePoint(...digits), 16);\n if (this.peekCodePoint(0) === HYPHEN_MINUS && isHex(this.peekCodePoint(1))) {\n this.consumeCodePoint();\n codePoint = this.consumeCodePoint();\n const endDigits = [];\n while (isHex(codePoint) && endDigits.length < 6) {\n endDigits.push(codePoint);\n codePoint = this.consumeCodePoint();\n }\n const end = parseInt(fromCodePoint(...endDigits), 16);\n\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end};\n } else {\n return {type: TokenType.UNICODE_RANGE_TOKEN, start, end: start};\n }\n }\n\n private consumeIdentLikeToken(): StringValueToken | Token {\n const value = this.consumeName();\n if (value.toLowerCase() === 'url' && this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return this.consumeUrlToken();\n } else if (this.peekCodePoint(0) === LEFT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.FUNCTION_TOKEN, value};\n }\n\n return {type: TokenType.IDENT_TOKEN, value};\n }\n\n private consumeUrlToken(): StringValueToken | Token {\n const value = [];\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF) {\n return {type: TokenType.URL_TOKEN, value: ''};\n }\n\n const next = this.peekCodePoint(0);\n if (next === APOSTROPHE || next === QUOTATION_MARK) {\n const stringToken = this.consumeStringToken(this.consumeCodePoint());\n if (stringToken.type === TokenType.STRING_TOKEN) {\n this.consumeWhiteSpace();\n\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: stringToken.value};\n }\n }\n\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === EOF || codePoint === RIGHT_PARENTHESIS) {\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n } else if (isWhiteSpace(codePoint)) {\n this.consumeWhiteSpace();\n if (this.peekCodePoint(0) === EOF || this.peekCodePoint(0) === RIGHT_PARENTHESIS) {\n this.consumeCodePoint();\n return {type: TokenType.URL_TOKEN, value: fromCodePoint(...value)};\n }\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (\n codePoint === QUOTATION_MARK ||\n codePoint === APOSTROPHE ||\n codePoint === LEFT_PARENTHESIS ||\n isNonPrintableCodePoint(codePoint)\n ) {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n } else if (codePoint === REVERSE_SOLIDUS) {\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n value.push(this.consumeEscapedCodePoint());\n } else {\n this.consumeBadUrlRemnants();\n return BAD_URL_TOKEN;\n }\n } else {\n value.push(codePoint);\n }\n }\n }\n\n private consumeWhiteSpace(): void {\n while (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n }\n\n private consumeBadUrlRemnants(): void {\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (codePoint === RIGHT_PARENTHESIS || codePoint === EOF) {\n return;\n }\n\n if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n this.consumeEscapedCodePoint();\n }\n }\n }\n\n private consumeStringSlice(count: number): string {\n const SLICE_STACK_SIZE = 50000;\n let value = '';\n while (count > 0) {\n const amount = Math.min(SLICE_STACK_SIZE, count);\n value += fromCodePoint(...this._value.splice(0, amount));\n count -= amount;\n }\n this._value.shift();\n\n return value;\n }\n\n private consumeStringToken(endingCodePoint: number): StringValueToken | Token {\n let value = '';\n let i = 0;\n\n do {\n const codePoint = this._value[i];\n if (codePoint === EOF || codePoint === undefined || codePoint === endingCodePoint) {\n value += this.consumeStringSlice(i);\n return {type: TokenType.STRING_TOKEN, value};\n }\n\n if (codePoint === LINE_FEED) {\n this._value.splice(0, i);\n return BAD_STRING_TOKEN;\n }\n\n if (codePoint === REVERSE_SOLIDUS) {\n const next = this._value[i + 1];\n if (next !== EOF && next !== undefined) {\n if (next === LINE_FEED) {\n value += this.consumeStringSlice(i);\n i = -1;\n this._value.shift();\n } else if (isValidEscape(codePoint, next)) {\n value += this.consumeStringSlice(i);\n value += fromCodePoint(this.consumeEscapedCodePoint());\n i = -1;\n }\n }\n }\n\n i++;\n } while (true);\n }\n\n private consumeNumber() {\n const repr = [];\n let type = FLAG_INTEGER;\n let c1 = this.peekCodePoint(0);\n if (c1 === PLUS_SIGN || c1 === HYPHEN_MINUS) {\n repr.push(this.consumeCodePoint());\n }\n\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n c1 = this.peekCodePoint(0);\n let c2 = this.peekCodePoint(1);\n if (c1 === FULL_STOP && isDigit(c2)) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n c1 = this.peekCodePoint(0);\n c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n if ((c1 === E || c1 === e) && (((c2 === PLUS_SIGN || c2 === HYPHEN_MINUS) && isDigit(c3)) || isDigit(c2))) {\n repr.push(this.consumeCodePoint(), this.consumeCodePoint());\n type = FLAG_NUMBER;\n while (isDigit(this.peekCodePoint(0))) {\n repr.push(this.consumeCodePoint());\n }\n }\n\n return [stringToNumber(repr), type];\n }\n\n private consumeNumericToken(): NumberValueToken | DimensionToken {\n const [number, flags] = this.consumeNumber();\n const c1 = this.peekCodePoint(0);\n const c2 = this.peekCodePoint(1);\n const c3 = this.peekCodePoint(2);\n\n if (isIdentifierStart(c1, c2, c3)) {\n const unit = this.consumeName();\n return {type: TokenType.DIMENSION_TOKEN, number, flags, unit};\n }\n\n if (c1 === PERCENTAGE_SIGN) {\n this.consumeCodePoint();\n return {type: TokenType.PERCENTAGE_TOKEN, number, flags};\n }\n\n return {type: TokenType.NUMBER_TOKEN, number, flags};\n }\n\n private consumeEscapedCodePoint(): number {\n const codePoint = this.consumeCodePoint();\n\n if (isHex(codePoint)) {\n let hex = fromCodePoint(codePoint);\n while (isHex(this.peekCodePoint(0)) && hex.length < 6) {\n hex += fromCodePoint(this.consumeCodePoint());\n }\n\n if (isWhiteSpace(this.peekCodePoint(0))) {\n this.consumeCodePoint();\n }\n\n const hexCodePoint = parseInt(hex, 16);\n\n if (hexCodePoint === 0 || isSurrogateCodePoint(hexCodePoint) || hexCodePoint > 0x10ffff) {\n return REPLACEMENT_CHARACTER;\n }\n\n return hexCodePoint;\n }\n\n if (codePoint === EOF) {\n return REPLACEMENT_CHARACTER;\n }\n\n return codePoint;\n }\n\n private consumeName(): string {\n let result = '';\n while (true) {\n const codePoint = this.consumeCodePoint();\n if (isNameCodePoint(codePoint)) {\n result += fromCodePoint(codePoint);\n } else if (isValidEscape(codePoint, this.peekCodePoint(0))) {\n result += fromCodePoint(this.consumeEscapedCodePoint());\n } else {\n this.reconsumeCodePoint(codePoint);\n return result;\n }\n }\n }\n}\n", "import {\n CSSToken,\n DimensionToken,\n EOF_TOKEN,\n NumberValueToken,\n StringValueToken,\n Tokenizer,\n TokenType\n} from './tokenizer';\n\nexport type CSSBlockType =\n | TokenType.LEFT_PARENTHESIS_TOKEN\n | TokenType.LEFT_SQUARE_BRACKET_TOKEN\n | TokenType.LEFT_CURLY_BRACKET_TOKEN;\n\nexport interface CSSBlock {\n type: CSSBlockType;\n values: CSSValue[];\n}\n\nexport interface CSSFunction {\n type: TokenType.FUNCTION;\n name: string;\n values: CSSValue[];\n}\n\nexport type CSSValue = CSSFunction | CSSToken | CSSBlock;\n\nexport class Parser {\n private _tokens: CSSToken[];\n\n constructor(tokens: CSSToken[]) {\n this._tokens = tokens;\n }\n\n static create(value: string): Parser {\n const tokenizer = new Tokenizer();\n tokenizer.write(value);\n return new Parser(tokenizer.read());\n }\n\n static parseValue(value: string): CSSValue {\n return Parser.create(value).parseComponentValue();\n }\n\n static parseValues(value: string): CSSValue[] {\n return Parser.create(value).parseComponentValues();\n }\n\n parseComponentValue(): CSSValue {\n let token = this.consumeToken();\n while (token.type === TokenType.WHITESPACE_TOKEN) {\n token = this.consumeToken();\n }\n\n if (token.type === TokenType.EOF_TOKEN) {\n throw new SyntaxError(`Error parsing CSS component value, unexpected EOF`);\n }\n\n this.reconsumeToken(token);\n const value = this.consumeComponentValue();\n\n do {\n token = this.consumeToken();\n } while (token.type === TokenType.WHITESPACE_TOKEN);\n\n if (token.type === TokenType.EOF_TOKEN) {\n return value;\n }\n\n throw new SyntaxError(`Error parsing CSS component value, multiple values found when expecting only one`);\n }\n\n parseComponentValues(): CSSValue[] {\n const values = [];\n while (true) {\n const value = this.consumeComponentValue();\n if (value.type === TokenType.EOF_TOKEN) {\n return values;\n }\n values.push(value);\n values.push();\n }\n }\n\n private consumeComponentValue(): CSSValue {\n const token = this.consumeToken();\n\n switch (token.type) {\n case TokenType.LEFT_CURLY_BRACKET_TOKEN:\n case TokenType.LEFT_SQUARE_BRACKET_TOKEN:\n case TokenType.LEFT_PARENTHESIS_TOKEN:\n return this.consumeSimpleBlock(token.type);\n case TokenType.FUNCTION_TOKEN:\n return this.consumeFunction(token);\n }\n\n return token;\n }\n\n private consumeSimpleBlock(type: CSSBlockType): CSSBlock {\n const block: CSSBlock = {type, values: []};\n\n let token = this.consumeToken();\n while (true) {\n if (token.type === TokenType.EOF_TOKEN || isEndingTokenFor(token, type)) {\n return block;\n }\n\n this.reconsumeToken(token);\n block.values.push(this.consumeComponentValue());\n token = this.consumeToken();\n }\n }\n\n private consumeFunction(functionToken: StringValueToken): CSSFunction {\n const cssFunction: CSSFunction = {\n name: functionToken.value,\n values: [],\n type: TokenType.FUNCTION\n };\n\n while (true) {\n const token = this.consumeToken();\n if (token.type === TokenType.EOF_TOKEN || token.type === TokenType.RIGHT_PARENTHESIS_TOKEN) {\n return cssFunction;\n }\n\n this.reconsumeToken(token);\n cssFunction.values.push(this.consumeComponentValue());\n }\n }\n\n private consumeToken(): CSSToken {\n const token = this._tokens.shift();\n return typeof token === 'undefined' ? EOF_TOKEN : token;\n }\n\n private reconsumeToken(token: CSSToken): void {\n this._tokens.unshift(token);\n }\n}\n\nexport const isDimensionToken = (token: CSSValue): token is DimensionToken => token.type === TokenType.DIMENSION_TOKEN;\nexport const isNumberToken = (token: CSSValue): token is NumberValueToken => token.type === TokenType.NUMBER_TOKEN;\nexport const isIdentToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.IDENT_TOKEN;\nexport const isStringToken = (token: CSSValue): token is StringValueToken => token.type === TokenType.STRING_TOKEN;\nexport const isIdentWithValue = (token: CSSValue, value: string): boolean =>\n isIdentToken(token) && token.value === value;\n\nexport const nonWhiteSpace = (token: CSSValue): boolean => token.type !== TokenType.WHITESPACE_TOKEN;\nexport const nonFunctionArgSeparator = (token: CSSValue): boolean =>\n token.type !== TokenType.WHITESPACE_TOKEN && token.type !== TokenType.COMMA_TOKEN;\n\nexport const parseFunctionArgs = (tokens: CSSValue[]): CSSValue[][] => {\n const args: CSSValue[][] = [];\n let arg: CSSValue[] = [];\n tokens.forEach((token) => {\n if (token.type === TokenType.COMMA_TOKEN) {\n if (arg.length === 0) {\n throw new Error(`Error parsing function args, zero tokens for arg`);\n }\n args.push(arg);\n arg = [];\n return;\n }\n\n if (token.type !== TokenType.WHITESPACE_TOKEN) {\n arg.push(token);\n }\n });\n if (arg.length) {\n args.push(arg);\n }\n\n return args;\n};\n\nconst isEndingTokenFor = (token: CSSToken, type: CSSBlockType): boolean => {\n if (type === TokenType.LEFT_CURLY_BRACKET_TOKEN && token.type === TokenType.RIGHT_CURLY_BRACKET_TOKEN) {\n return true;\n }\n if (type === TokenType.LEFT_SQUARE_BRACKET_TOKEN && token.type === TokenType.RIGHT_SQUARE_BRACKET_TOKEN) {\n return true;\n }\n\n return type === TokenType.LEFT_PARENTHESIS_TOKEN && token.type === TokenType.RIGHT_PARENTHESIS_TOKEN;\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {DimensionToken, NumberValueToken, TokenType} from '../syntax/tokenizer';\n\nexport type Length = DimensionToken | NumberValueToken;\n\nexport const isLength = (token: CSSValue): token is Length =>\n token.type === TokenType.NUMBER_TOKEN || token.type === TokenType.DIMENSION_TOKEN;\n", "import {DimensionToken, FLAG_INTEGER, NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {isLength} from './length';\nexport type LengthPercentage = DimensionToken | NumberValueToken;\nexport type LengthPercentageTuple = [LengthPercentage] | [LengthPercentage, LengthPercentage];\n\nexport const isLengthPercentage = (token: CSSValue): token is LengthPercentage =>\n token.type === TokenType.PERCENTAGE_TOKEN || isLength(token);\nexport const parseLengthPercentageTuple = (tokens: LengthPercentage[]): LengthPercentageTuple =>\n tokens.length > 1 ? [tokens[0], tokens[1]] : [tokens[0]];\nexport const ZERO_LENGTH: NumberValueToken = {\n type: TokenType.NUMBER_TOKEN,\n number: 0,\n flags: FLAG_INTEGER\n};\n\nexport const FIFTY_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\n\nexport const HUNDRED_PERCENT: NumberValueToken = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 100,\n flags: FLAG_INTEGER\n};\n\nexport const getAbsoluteValueForTuple = (\n tuple: LengthPercentageTuple,\n width: number,\n height: number\n): [number, number] => {\n const [x, y] = tuple;\n return [getAbsoluteValue(x, width), getAbsoluteValue(typeof y !== 'undefined' ? y : x, height)];\n};\nexport const getAbsoluteValue = (token: LengthPercentage, parent: number): number => {\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n return (token.number / 100) * parent;\n }\n\n if (isDimensionToken(token)) {\n switch (token.unit) {\n case 'rem':\n case 'em':\n return 16 * token.number; // TODO use correct font-size\n case 'px':\n default:\n return token.number;\n }\n }\n\n return token.number;\n};\n", "import {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {HUNDRED_PERCENT, ZERO_LENGTH} from './length-percentage';\nimport {GradientCorner} from './image';\nimport {Context} from '../../core/context';\n\nconst DEG = 'deg';\nconst GRAD = 'grad';\nconst RAD = 'rad';\nconst TURN = 'turn';\n\nexport const angle: ITypeDescriptor<number> = {\n name: 'angle',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit) {\n case DEG:\n return (Math.PI * value.number) / 180;\n case GRAD:\n return (Math.PI / 200) * value.number;\n case RAD:\n return value.number;\n case TURN:\n return Math.PI * 2 * value.number;\n }\n }\n\n throw new Error(`Unsupported angle type`);\n }\n};\n\nexport const isAngle = (value: CSSValue): boolean => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n if (value.unit === DEG || value.unit === GRAD || value.unit === RAD || value.unit === TURN) {\n return true;\n }\n }\n return false;\n};\n\nexport const parseNamedSide = (tokens: CSSValue[]): number | GradientCorner => {\n const sideOrCorner = tokens\n .filter(isIdentToken)\n .map((ident) => ident.value)\n .join(' ');\n\n switch (sideOrCorner) {\n case 'to bottom right':\n case 'to right bottom':\n case 'left top':\n case 'top left':\n return [ZERO_LENGTH, ZERO_LENGTH];\n case 'to top':\n case 'bottom':\n return deg(0);\n case 'to bottom left':\n case 'to left bottom':\n case 'right top':\n case 'top right':\n return [ZERO_LENGTH, HUNDRED_PERCENT];\n case 'to right':\n case 'left':\n return deg(90);\n case 'to top left':\n case 'to left top':\n case 'right bottom':\n case 'bottom right':\n return [HUNDRED_PERCENT, HUNDRED_PERCENT];\n case 'to bottom':\n case 'top':\n return deg(180);\n case 'to top right':\n case 'to right top':\n case 'left bottom':\n case 'bottom left':\n return [HUNDRED_PERCENT, ZERO_LENGTH];\n case 'to left':\n case 'right':\n return deg(270);\n }\n\n return 0;\n};\n\nexport const deg = (deg: number): number => (Math.PI * deg) / 180;\n", "import {CSSValue, nonFunctionArgSeparator, Parser} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {angle, deg} from './angle';\nimport {getAbsoluteValue, isLengthPercentage} from './length-percentage';\nimport {Context} from '../../core/context';\nexport type Color = number;\n\nexport const color: ITypeDescriptor<Color> = {\n name: 'color',\n parse: (context: Context, value: CSSValue): Color => {\n if (value.type === TokenType.FUNCTION) {\n const colorFunction = SUPPORTED_COLOR_FUNCTIONS[value.name];\n if (typeof colorFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported color function \"${value.name}\"`);\n }\n return colorFunction(context, value.values);\n }\n\n if (value.type === TokenType.HASH_TOKEN) {\n if (value.value.length === 3) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), 1);\n }\n\n if (value.value.length === 4) {\n const r = value.value.substring(0, 1);\n const g = value.value.substring(1, 2);\n const b = value.value.substring(2, 3);\n const a = value.value.substring(3, 4);\n return pack(parseInt(r + r, 16), parseInt(g + g, 16), parseInt(b + b, 16), parseInt(a + a, 16) / 255);\n }\n\n if (value.value.length === 6) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), 1);\n }\n\n if (value.value.length === 8) {\n const r = value.value.substring(0, 2);\n const g = value.value.substring(2, 4);\n const b = value.value.substring(4, 6);\n const a = value.value.substring(6, 8);\n return pack(parseInt(r, 16), parseInt(g, 16), parseInt(b, 16), parseInt(a, 16) / 255);\n }\n }\n\n if (value.type === TokenType.IDENT_TOKEN) {\n const namedColor = COLORS[value.value.toUpperCase()];\n if (typeof namedColor !== 'undefined') {\n return namedColor;\n }\n }\n\n return COLORS.TRANSPARENT;\n }\n};\n\nexport const isTransparent = (color: Color): boolean => (0xff & color) === 0;\n\nexport const asString = (color: Color): string => {\n const alpha = 0xff & color;\n const blue = 0xff & (color >> 8);\n const green = 0xff & (color >> 16);\n const red = 0xff & (color >> 24);\n return alpha < 255 ? `rgba(${red},${green},${blue},${alpha / 255})` : `rgb(${red},${green},${blue})`;\n};\n\nexport const pack = (r: number, g: number, b: number, a: number): Color =>\n ((r << 24) | (g << 16) | (b << 8) | (Math.round(a * 255) << 0)) >>> 0;\n\nconst getTokenColorValue = (token: CSSValue, i: number): number => {\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.PERCENTAGE_TOKEN) {\n const max = i === 3 ? 1 : 255;\n return i === 3 ? (token.number / 100) * max : Math.round((token.number / 100) * max);\n }\n\n return 0;\n};\n\nconst rgb = (_context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n\n if (tokens.length === 3) {\n const [r, g, b] = tokens.map(getTokenColorValue);\n return pack(r, g, b, 1);\n }\n\n if (tokens.length === 4) {\n const [r, g, b, a] = tokens.map(getTokenColorValue);\n return pack(r, g, b, a);\n }\n\n return 0;\n};\n\nfunction hue2rgb(t1: number, t2: number, hue: number): number {\n if (hue < 0) {\n hue += 1;\n }\n if (hue >= 1) {\n hue -= 1;\n }\n\n if (hue < 1 / 6) {\n return (t2 - t1) * hue * 6 + t1;\n } else if (hue < 1 / 2) {\n return t2;\n } else if (hue < 2 / 3) {\n return (t2 - t1) * 6 * (2 / 3 - hue) + t1;\n } else {\n return t1;\n }\n}\n\nconst hsl = (context: Context, args: CSSValue[]): number => {\n const tokens = args.filter(nonFunctionArgSeparator);\n const [hue, saturation, lightness, alpha] = tokens;\n\n const h = (hue.type === TokenType.NUMBER_TOKEN ? deg(hue.number) : angle.parse(context, hue)) / (Math.PI * 2);\n const s = isLengthPercentage(saturation) ? saturation.number / 100 : 0;\n const l = isLengthPercentage(lightness) ? lightness.number / 100 : 0;\n const a = typeof alpha !== 'undefined' && isLengthPercentage(alpha) ? getAbsoluteValue(alpha, 1) : 1;\n\n if (s === 0) {\n return pack(l * 255, l * 255, l * 255, 1);\n }\n\n const t2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n\n const t1 = l * 2 - t2;\n const r = hue2rgb(t1, t2, h + 1 / 3);\n const g = hue2rgb(t1, t2, h);\n const b = hue2rgb(t1, t2, h - 1 / 3);\n return pack(r * 255, g * 255, b * 255, a);\n};\n\nconst SUPPORTED_COLOR_FUNCTIONS: {\n [key: string]: (context: Context, args: CSSValue[]) => number;\n} = {\n hsl: hsl,\n hsla: hsl,\n rgb: rgb,\n rgba: rgb\n};\n\nexport const parseColor = (context: Context, value: string): Color =>\n color.parse(context, Parser.create(value).parseComponentValue());\n\nexport const COLORS: {[key: string]: Color} = {\n ALICEBLUE: 0xf0f8ffff,\n ANTIQUEWHITE: 0xfaebd7ff,\n AQUA: 0x00ffffff,\n AQUAMARINE: 0x7fffd4ff,\n AZURE: 0xf0ffffff,\n BEIGE: 0xf5f5dcff,\n BISQUE: 0xffe4c4ff,\n BLACK: 0x000000ff,\n BLANCHEDALMOND: 0xffebcdff,\n BLUE: 0x0000ffff,\n BLUEVIOLET: 0x8a2be2ff,\n BROWN: 0xa52a2aff,\n BURLYWOOD: 0xdeb887ff,\n CADETBLUE: 0x5f9ea0ff,\n CHARTREUSE: 0x7fff00ff,\n CHOCOLATE: 0xd2691eff,\n CORAL: 0xff7f50ff,\n CORNFLOWERBLUE: 0x6495edff,\n CORNSILK: 0xfff8dcff,\n CRIMSON: 0xdc143cff,\n CYAN: 0x00ffffff,\n DARKBLUE: 0x00008bff,\n DARKCYAN: 0x008b8bff,\n DARKGOLDENROD: 0xb886bbff,\n DARKGRAY: 0xa9a9a9ff,\n DARKGREEN: 0x006400ff,\n DARKGREY: 0xa9a9a9ff,\n DARKKHAKI: 0xbdb76bff,\n DARKMAGENTA: 0x8b008bff,\n DARKOLIVEGREEN: 0x556b2fff,\n DARKORANGE: 0xff8c00ff,\n DARKORCHID: 0x9932ccff,\n DARKRED: 0x8b0000ff,\n DARKSALMON: 0xe9967aff,\n DARKSEAGREEN: 0x8fbc8fff,\n DARKSLATEBLUE: 0x483d8bff,\n DARKSLATEGRAY: 0x2f4f4fff,\n DARKSLATEGREY: 0x2f4f4fff,\n DARKTURQUOISE: 0x00ced1ff,\n DARKVIOLET: 0x9400d3ff,\n DEEPPINK: 0xff1493ff,\n DEEPSKYBLUE: 0x00bfffff,\n DIMGRAY: 0x696969ff,\n DIMGREY: 0x696969ff,\n DODGERBLUE: 0x1e90ffff,\n FIREBRICK: 0xb22222ff,\n FLORALWHITE: 0xfffaf0ff,\n FORESTGREEN: 0x228b22ff,\n FUCHSIA: 0xff00ffff,\n GAINSBORO: 0xdcdcdcff,\n GHOSTWHITE: 0xf8f8ffff,\n GOLD: 0xffd700ff,\n GOLDENROD: 0xdaa520ff,\n GRAY: 0x808080ff,\n GREEN: 0x008000ff,\n GREENYELLOW: 0xadff2fff,\n GREY: 0x808080ff,\n HONEYDEW: 0xf0fff0ff,\n HOTPINK: 0xff69b4ff,\n INDIANRED: 0xcd5c5cff,\n INDIGO: 0x4b0082ff,\n IVORY: 0xfffff0ff,\n KHAKI: 0xf0e68cff,\n LAVENDER: 0xe6e6faff,\n LAVENDERBLUSH: 0xfff0f5ff,\n LAWNGREEN: 0x7cfc00ff,\n LEMONCHIFFON: 0xfffacdff,\n LIGHTBLUE: 0xadd8e6ff,\n LIGHTCORAL: 0xf08080ff,\n LIGHTCYAN: 0xe0ffffff,\n LIGHTGOLDENRODYELLOW: 0xfafad2ff,\n LIGHTGRAY: 0xd3d3d3ff,\n LIGHTGREEN: 0x90ee90ff,\n LIGHTGREY: 0xd3d3d3ff,\n LIGHTPINK: 0xffb6c1ff,\n LIGHTSALMON: 0xffa07aff,\n LIGHTSEAGREEN: 0x20b2aaff,\n LIGHTSKYBLUE: 0x87cefaff,\n LIGHTSLATEGRAY: 0x778899ff,\n LIGHTSLATEGREY: 0x778899ff,\n LIGHTSTEELBLUE: 0xb0c4deff,\n LIGHTYELLOW: 0xffffe0ff,\n LIME: 0x00ff00ff,\n LIMEGREEN: 0x32cd32ff,\n LINEN: 0xfaf0e6ff,\n MAGENTA: 0xff00ffff,\n MAROON: 0x800000ff,\n MEDIUMAQUAMARINE: 0x66cdaaff,\n MEDIUMBLUE: 0x0000cdff,\n MEDIUMORCHID: 0xba55d3ff,\n MEDIUMPURPLE: 0x9370dbff,\n MEDIUMSEAGREEN: 0x3cb371ff,\n MEDIUMSLATEBLUE: 0x7b68eeff,\n MEDIUMSPRINGGREEN: 0x00fa9aff,\n MEDIUMTURQUOISE: 0x48d1ccff,\n MEDIUMVIOLETRED: 0xc71585ff,\n MIDNIGHTBLUE: 0x191970ff,\n MINTCREAM: 0xf5fffaff,\n MISTYROSE: 0xffe4e1ff,\n MOCCASIN: 0xffe4b5ff,\n NAVAJOWHITE: 0xffdeadff,\n NAVY: 0x000080ff,\n OLDLACE: 0xfdf5e6ff,\n OLIVE: 0x808000ff,\n OLIVEDRAB: 0x6b8e23ff,\n ORANGE: 0xffa500ff,\n ORANGERED: 0xff4500ff,\n ORCHID: 0xda70d6ff,\n PALEGOLDENROD: 0xeee8aaff,\n PALEGREEN: 0x98fb98ff,\n PALETURQUOISE: 0xafeeeeff,\n PALEVIOLETRED: 0xdb7093ff,\n PAPAYAWHIP: 0xffefd5ff,\n PEACHPUFF: 0xffdab9ff,\n PERU: 0xcd853fff,\n PINK: 0xffc0cbff,\n PLUM: 0xdda0ddff,\n POWDERBLUE: 0xb0e0e6ff,\n PURPLE: 0x800080ff,\n REBECCAPURPLE: 0x663399ff,\n RED: 0xff0000ff,\n ROSYBROWN: 0xbc8f8fff,\n ROYALBLUE: 0x4169e1ff,\n SADDLEBROWN: 0x8b4513ff,\n SALMON: 0xfa8072ff,\n SANDYBROWN: 0xf4a460ff,\n SEAGREEN: 0x2e8b57ff,\n SEASHELL: 0xfff5eeff,\n SIENNA: 0xa0522dff,\n SILVER: 0xc0c0c0ff,\n SKYBLUE: 0x87ceebff,\n SLATEBLUE: 0x6a5acdff,\n SLATEGRAY: 0x708090ff,\n SLATEGREY: 0x708090ff,\n SNOW: 0xfffafaff,\n SPRINGGREEN: 0x00ff7fff,\n STEELBLUE: 0x4682b4ff,\n TAN: 0xd2b48cff,\n TEAL: 0x008080ff,\n THISTLE: 0xd8bfd8ff,\n TOMATO: 0xff6347ff,\n TRANSPARENT: 0x00000000,\n TURQUOISE: 0x40e0d0ff,\n VIOLET: 0xee82eeff,\n WHEAT: 0xf5deb3ff,\n WHITE: 0xffffffff,\n WHITESMOKE: 0xf5f5f5ff,\n YELLOW: 0xffff00ff,\n YELLOWGREEN: 0x9acd32ff\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum BACKGROUND_CLIP {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundClip = BACKGROUND_CLIP[];\n\nexport const backgroundClip: IPropertyListDescriptor<BackgroundClip> = {\n name: 'background-clip',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundClip => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_CLIP.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_CLIP.CONTENT_BOX;\n }\n }\n return BACKGROUND_CLIP.BORDER_BOX;\n });\n }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const backgroundColor: IPropertyTypeValueDescriptor = {\n name: `background-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n", "import {CSSValue} from '../../syntax/parser';\nimport {\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n GradientColorStop,\n GradientCorner,\n UnprocessedGradientColorStop\n} from '../image';\nimport {color as colorType} from '../color';\nimport {getAbsoluteValue, HUNDRED_PERCENT, isLengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const parseColorStop = (context: Context, args: CSSValue[]): UnprocessedGradientColorStop => {\n const color = colorType.parse(context, args[0]);\n const stop = args[1];\n return stop && isLengthPercentage(stop) ? {color, stop} : {color, stop: null};\n};\n\nexport const processColorStops = (stops: UnprocessedGradientColorStop[], lineLength: number): GradientColorStop[] => {\n const first = stops[0];\n const last = stops[stops.length - 1];\n if (first.stop === null) {\n first.stop = ZERO_LENGTH;\n }\n\n if (last.stop === null) {\n last.stop = HUNDRED_PERCENT;\n }\n\n const processStops: (number | null)[] = [];\n let previous = 0;\n for (let i = 0; i < stops.length; i++) {\n const stop = stops[i].stop;\n if (stop !== null) {\n const absoluteValue = getAbsoluteValue(stop, lineLength);\n if (absoluteValue > previous) {\n processStops.push(absoluteValue);\n } else {\n processStops.push(previous);\n }\n previous = absoluteValue;\n } else {\n processStops.push(null);\n }\n }\n\n let gapBegin = null;\n for (let i = 0; i < processStops.length; i++) {\n const stop = processStops[i];\n if (stop === null) {\n if (gapBegin === null) {\n gapBegin = i;\n }\n } else if (gapBegin !== null) {\n const gapLength = i - gapBegin;\n const beforeGap = processStops[gapBegin - 1] as number;\n const gapValue = (stop - beforeGap) / (gapLength + 1);\n for (let g = 1; g <= gapLength; g++) {\n processStops[gapBegin + g - 1] = gapValue * g;\n }\n gapBegin = null;\n }\n }\n\n return stops.map(({color}, i) => {\n return {color, stop: Math.max(Math.min(1, (processStops[i] as number) / lineLength), 0)};\n });\n};\n\nconst getAngleFromCorner = (corner: GradientCorner, width: number, height: number): number => {\n const centerX = width / 2;\n const centerY = height / 2;\n const x = getAbsoluteValue(corner[0], width) - centerX;\n const y = centerY - getAbsoluteValue(corner[1], height);\n\n return (Math.atan2(y, x) + Math.PI * 2) % (Math.PI * 2);\n};\n\nexport const calculateGradientDirection = (\n angle: number | GradientCorner,\n width: number,\n height: number\n): [number, number, number, number, number] => {\n const radian = typeof angle === 'number' ? angle : getAngleFromCorner(angle, width, height);\n\n const lineLength = Math.abs(width * Math.sin(radian)) + Math.abs(height * Math.cos(radian));\n\n const halfWidth = width / 2;\n const halfHeight = height / 2;\n const halfLineLength = lineLength / 2;\n\n const yDiff = Math.sin(radian - Math.PI / 2) * halfLineLength;\n const xDiff = Math.cos(radian - Math.PI / 2) * halfLineLength;\n\n return [lineLength, halfWidth - xDiff, halfWidth + xDiff, halfHeight - yDiff, halfHeight + yDiff];\n};\n\nconst distance = (a: number, b: number): number => Math.sqrt(a * a + b * b);\n\nconst findCorner = (width: number, height: number, x: number, y: number, closest: boolean): [number, number] => {\n const corners = [\n [0, 0],\n [0, height],\n [width, 0],\n [width, height]\n ];\n\n return corners.reduce(\n (stat, corner) => {\n const [cx, cy] = corner;\n const d = distance(x - cx, y - cy);\n if (closest ? d < stat.optimumDistance : d > stat.optimumDistance) {\n return {\n optimumCorner: corner,\n optimumDistance: d\n };\n }\n\n return stat;\n },\n {\n optimumDistance: closest ? Infinity : -Infinity,\n optimumCorner: null\n }\n ).optimumCorner as [number, number];\n};\n\nexport const calculateRadius = (\n gradient: CSSRadialGradientImage,\n x: number,\n y: number,\n width: number,\n height: number\n): [number, number] => {\n let rx = 0;\n let ry = 0;\n\n switch (gradient.size) {\n case CSSRadialExtent.CLOSEST_SIDE:\n // The ending shape is sized so that that it exactly meets the side of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, it exactly meets the closest side in each dimension.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.min(Math.abs(x), Math.abs(x - width));\n ry = Math.min(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.CLOSEST_CORNER:\n // The ending shape is sized so that that it passes through the corner of the gradient box closest to the gradient’s center.\n // If the shape is an ellipse, the ending shape is given the same aspect-ratio it would have if closest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.min(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"closest-side\")\n const c = Math.min(Math.abs(y), Math.abs(y - height)) / Math.min(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, true);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n\n case CSSRadialExtent.FARTHEST_SIDE:\n // Same as closest-side, except the ending shape is sized based on the farthest side(s)\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(Math.abs(x), Math.abs(x - width), Math.abs(y), Math.abs(y - height));\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n rx = Math.max(Math.abs(x), Math.abs(x - width));\n ry = Math.max(Math.abs(y), Math.abs(y - height));\n }\n break;\n\n case CSSRadialExtent.FARTHEST_CORNER:\n // Same as closest-corner, except the ending shape is sized based on the farthest corner.\n // If the shape is an ellipse, the ending shape is given the same aspect ratio it would have if farthest-side were specified.\n if (gradient.shape === CSSRadialShape.CIRCLE) {\n rx = ry = Math.max(\n distance(x, y),\n distance(x, y - height),\n distance(x - width, y),\n distance(x - width, y - height)\n );\n } else if (gradient.shape === CSSRadialShape.ELLIPSE) {\n // Compute the ratio ry/rx (which is to be the same as for \"farthest-side\")\n const c = Math.max(Math.abs(y), Math.abs(y - height)) / Math.max(Math.abs(x), Math.abs(x - width));\n const [cx, cy] = findCorner(width, height, x, y, false);\n rx = distance(cx - x, (cy - y) / c);\n ry = c * rx;\n }\n break;\n }\n\n if (Array.isArray(gradient.size)) {\n rx = getAbsoluteValue(gradient.size[0], width);\n ry = gradient.size.length === 2 ? getAbsoluteValue(gradient.size[1], height) : rx;\n }\n\n return [rx, ry];\n};\n", "import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const linearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (firstToken.type === TokenType.IDENT_TOKEN && firstToken.value === 'to') {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = angleType.parse(context, firstToken);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {angle, stops, type: CSSImageType.LINEAR_GRADIENT};\n};\n", "import {CSSValue, parseFunctionArgs} from '../../syntax/parser';\nimport {CSSImageType, CSSLinearGradientImage, GradientCorner, UnprocessedGradientColorStop} from '../image';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {isAngle, angle as angleType, parseNamedSide, deg} from '../angle';\nimport {parseColorStop} from './gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixLinearGradient = (context: Context, tokens: CSSValue[]): CSSLinearGradientImage => {\n let angle: number | GradientCorner = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n if (i === 0) {\n const firstToken = arg[0];\n if (\n firstToken.type === TokenType.IDENT_TOKEN &&\n ['top', 'left', 'right', 'bottom'].indexOf(firstToken.value) !== -1\n ) {\n angle = parseNamedSide(arg);\n return;\n } else if (isAngle(firstToken)) {\n angle = (angleType.parse(context, firstToken) + deg(270)) % deg(360);\n return;\n }\n }\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n });\n\n return {\n angle,\n stops,\n type: CSSImageType.LINEAR_GRADIENT\n };\n};\n", "import {CSSValue, isIdentToken, isNumberToken, nonFunctionArgSeparator, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSLinearGradientImage,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {deg} from '../angle';\nimport {TokenType} from '../../syntax/tokenizer';\nimport {color as colorType} from '../color';\nimport {HUNDRED_PERCENT, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {Context} from '../../../core/context';\n\nexport const webkitGradient = (\n context: Context,\n tokens: CSSValue[]\n): CSSLinearGradientImage | CSSRadialGradientImage => {\n const angle = deg(180);\n const stops: UnprocessedGradientColorStop[] = [];\n let type = CSSImageType.LINEAR_GRADIENT;\n const shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n const size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n const firstToken = arg[0];\n if (i === 0) {\n if (isIdentToken(firstToken) && firstToken.value === 'linear') {\n type = CSSImageType.LINEAR_GRADIENT;\n return;\n } else if (isIdentToken(firstToken) && firstToken.value === 'radial') {\n type = CSSImageType.RADIAL_GRADIENT;\n return;\n }\n }\n\n if (firstToken.type === TokenType.FUNCTION) {\n if (firstToken.name === 'from') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: ZERO_LENGTH, color});\n } else if (firstToken.name === 'to') {\n const color = colorType.parse(context, firstToken.values[0]);\n stops.push({stop: HUNDRED_PERCENT, color});\n } else if (firstToken.name === 'color-stop') {\n const values = firstToken.values.filter(nonFunctionArgSeparator);\n if (values.length === 2) {\n const color = colorType.parse(context, values[1]);\n const stop = values[0];\n if (isNumberToken(stop)) {\n stops.push({\n stop: {type: TokenType.PERCENTAGE_TOKEN, number: stop.number * 100, flags: stop.flags},\n color\n });\n }\n }\n }\n }\n });\n\n return type === CSSImageType.LINEAR_GRADIENT\n ? {\n angle: (angle + deg(180)) % deg(360),\n stops,\n type\n }\n : {size, shape, stops, position, type};\n};\n", "import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {Context} from '../../../core/context';\nexport const CLOSEST_SIDE = 'closest-side';\nexport const FARTHEST_SIDE = 'farthest-side';\nexport const CLOSEST_CORNER = 'closest-corner';\nexport const FARTHEST_CORNER = 'farthest-corner';\nexport const CIRCLE = 'circle';\nexport const ELLIPSE = 'ellipse';\nexport const COVER = 'cover';\nexport const CONTAIN = 'contain';\n\nexport const radialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n let isAtPosition = false;\n isColorStop = arg.reduce((acc, token) => {\n if (isAtPosition) {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return acc;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return acc;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return acc;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n }\n } else if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case 'at':\n isAtPosition = true;\n return false;\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case COVER:\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CONTAIN:\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n", "import {CSSValue, isIdentToken, parseFunctionArgs} from '../../syntax/parser';\nimport {\n CSSImageType,\n CSSRadialExtent,\n CSSRadialGradientImage,\n CSSRadialShape,\n CSSRadialSize,\n UnprocessedGradientColorStop\n} from '../image';\nimport {parseColorStop} from './gradient';\nimport {FIFTY_PERCENT, HUNDRED_PERCENT, isLengthPercentage, LengthPercentage, ZERO_LENGTH} from '../length-percentage';\nimport {isLength} from '../length';\nimport {\n CIRCLE,\n CLOSEST_CORNER,\n CLOSEST_SIDE,\n CONTAIN,\n COVER,\n ELLIPSE,\n FARTHEST_CORNER,\n FARTHEST_SIDE\n} from './radial-gradient';\nimport {Context} from '../../../core/context';\n\nexport const prefixRadialGradient = (context: Context, tokens: CSSValue[]): CSSRadialGradientImage => {\n let shape: CSSRadialShape = CSSRadialShape.CIRCLE;\n let size: CSSRadialSize = CSSRadialExtent.FARTHEST_CORNER;\n const stops: UnprocessedGradientColorStop[] = [];\n const position: LengthPercentage[] = [];\n\n parseFunctionArgs(tokens).forEach((arg, i) => {\n let isColorStop = true;\n if (i === 0) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'center':\n position.push(FIFTY_PERCENT);\n return false;\n case 'top':\n case 'left':\n position.push(ZERO_LENGTH);\n return false;\n case 'right':\n case 'bottom':\n position.push(HUNDRED_PERCENT);\n return false;\n }\n } else if (isLengthPercentage(token) || isLength(token)) {\n position.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n } else if (i === 1) {\n isColorStop = arg.reduce((acc, token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case CIRCLE:\n shape = CSSRadialShape.CIRCLE;\n return false;\n case ELLIPSE:\n shape = CSSRadialShape.ELLIPSE;\n return false;\n case CONTAIN:\n case CLOSEST_SIDE:\n size = CSSRadialExtent.CLOSEST_SIDE;\n return false;\n case FARTHEST_SIDE:\n size = CSSRadialExtent.FARTHEST_SIDE;\n return false;\n case CLOSEST_CORNER:\n size = CSSRadialExtent.CLOSEST_CORNER;\n return false;\n case COVER:\n case FARTHEST_CORNER:\n size = CSSRadialExtent.FARTHEST_CORNER;\n return false;\n }\n } else if (isLength(token) || isLengthPercentage(token)) {\n if (!Array.isArray(size)) {\n size = [];\n }\n size.push(token);\n return false;\n }\n\n return acc;\n }, isColorStop);\n }\n\n if (isColorStop) {\n const colorStop = parseColorStop(context, arg);\n stops.push(colorStop);\n }\n });\n\n return {size, shape, stops, position, type: CSSImageType.RADIAL_GRADIENT};\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Color} from './color';\nimport {linearGradient} from './functions/linear-gradient';\nimport {prefixLinearGradient} from './functions/-prefix-linear-gradient';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {LengthPercentage} from './length-percentage';\nimport {webkitGradient} from './functions/-webkit-gradient';\nimport {radialGradient} from './functions/radial-gradient';\nimport {prefixRadialGradient} from './functions/-prefix-radial-gradient';\nimport {Context} from '../../core/context';\n\nexport const enum CSSImageType {\n URL,\n LINEAR_GRADIENT,\n RADIAL_GRADIENT\n}\n\nexport const isLinearGradient = (background: ICSSImage): background is CSSLinearGradientImage => {\n return background.type === CSSImageType.LINEAR_GRADIENT;\n};\n\nexport const isRadialGradient = (background: ICSSImage): background is CSSRadialGradientImage => {\n return background.type === CSSImageType.RADIAL_GRADIENT;\n};\n\nexport interface UnprocessedGradientColorStop {\n color: Color;\n stop: LengthPercentage | null;\n}\n\nexport interface GradientColorStop {\n color: Color;\n stop: number;\n}\n\nexport interface ICSSImage {\n type: CSSImageType;\n}\n\nexport interface CSSURLImage extends ICSSImage {\n url: string;\n type: CSSImageType.URL;\n}\n\n// interface ICSSGeneratedImage extends ICSSImage {}\n\nexport type GradientCorner = [LengthPercentage, LengthPercentage];\n\ninterface ICSSGradientImage extends ICSSImage {\n stops: UnprocessedGradientColorStop[];\n}\n\nexport interface CSSLinearGradientImage extends ICSSGradientImage {\n angle: number | GradientCorner;\n type: CSSImageType.LINEAR_GRADIENT;\n}\n\nexport const enum CSSRadialShape {\n CIRCLE,\n ELLIPSE\n}\n\nexport const enum CSSRadialExtent {\n CLOSEST_SIDE,\n FARTHEST_SIDE,\n CLOSEST_CORNER,\n FARTHEST_CORNER\n}\n\nexport type CSSRadialSize = CSSRadialExtent | LengthPercentage[];\n\nexport interface CSSRadialGradientImage extends ICSSGradientImage {\n type: CSSImageType.RADIAL_GRADIENT;\n shape: CSSRadialShape;\n size: CSSRadialSize;\n position: LengthPercentage[];\n}\n\nexport const image: ITypeDescriptor<ICSSImage> = {\n name: 'image',\n parse: (context: Context, value: CSSValue): ICSSImage => {\n if (value.type === TokenType.URL_TOKEN) {\n const image: CSSURLImage = {url: value.value, type: CSSImageType.URL};\n context.cache.addImage(value.value);\n return image;\n }\n\n if (value.type === TokenType.FUNCTION) {\n const imageFunction = SUPPORTED_IMAGE_FUNCTIONS[value.name];\n if (typeof imageFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported image function \"${value.name}\"`);\n }\n return imageFunction(context, value.values);\n }\n\n throw new Error(`Unsupported image type ${value.type}`);\n }\n};\n\nexport function isSupportedImage(value: CSSValue): boolean {\n return (\n !(value.type === TokenType.IDENT_TOKEN && value.value === 'none') &&\n (value.type !== TokenType.FUNCTION || !!SUPPORTED_IMAGE_FUNCTIONS[value.name])\n );\n}\n\nconst SUPPORTED_IMAGE_FUNCTIONS: Record<string, (context: Context, args: CSSValue[]) => ICSSImage> = {\n 'linear-gradient': linearGradient,\n '-moz-linear-gradient': prefixLinearGradient,\n '-ms-linear-gradient': prefixLinearGradient,\n '-o-linear-gradient': prefixLinearGradient,\n '-webkit-linear-gradient': prefixLinearGradient,\n 'radial-gradient': radialGradient,\n '-moz-radial-gradient': prefixRadialGradient,\n '-ms-radial-gradient': prefixRadialGradient,\n '-o-radial-gradient': prefixRadialGradient,\n '-webkit-radial-gradient': prefixRadialGradient,\n '-webkit-gradient': webkitGradient\n};\n", "import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image, isSupportedImage} from '../types/image';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, nonFunctionArgSeparator} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const backgroundImage: IPropertyListDescriptor<ICSSImage[]> = {\n name: 'background-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens\n .filter((value) => nonFunctionArgSeparator(value) && isSupportedImage(value))\n .map((value) => image.parse(context, value));\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum BACKGROUND_ORIGIN {\n BORDER_BOX = 0,\n PADDING_BOX = 1,\n CONTENT_BOX = 2\n}\n\nexport type BackgroundOrigin = BACKGROUND_ORIGIN[];\n\nexport const backgroundOrigin: IPropertyListDescriptor<BackgroundOrigin> = {\n name: 'background-origin',\n initialValue: 'border-box',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundOrigin => {\n return tokens.map((token) => {\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'padding-box':\n return BACKGROUND_ORIGIN.PADDING_BOX;\n case 'content-box':\n return BACKGROUND_ORIGIN.CONTENT_BOX;\n }\n }\n return BACKGROUND_ORIGIN.BORDER_BOX;\n });\n }\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BackgroundPosition = BackgroundImagePosition[];\n\nexport type BackgroundImagePosition = LengthPercentageTuple;\n\nexport const backgroundPosition: IPropertyListDescriptor<BackgroundPosition> = {\n name: 'background-position',\n initialValue: '0% 0%',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundPosition => {\n return parseFunctionArgs(tokens)\n .map((values: CSSValue[]) => values.filter(isLengthPercentage))\n .map(parseLengthPercentageTuple);\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport type BackgroundRepeat = BACKGROUND_REPEAT[];\n\nexport const enum BACKGROUND_REPEAT {\n REPEAT = 0,\n NO_REPEAT = 1,\n REPEAT_X = 2,\n REPEAT_Y = 3\n}\n\nexport const backgroundRepeat: IPropertyListDescriptor<BackgroundRepeat> = {\n name: 'background-repeat',\n initialValue: 'repeat',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundRepeat => {\n return parseFunctionArgs(tokens)\n .map((values) =>\n values\n .filter(isIdentToken)\n .map((token) => token.value)\n .join(' ')\n )\n .map(parseBackgroundRepeat);\n }\n};\n\nconst parseBackgroundRepeat = (value: string): BACKGROUND_REPEAT => {\n switch (value) {\n case 'no-repeat':\n return BACKGROUND_REPEAT.NO_REPEAT;\n case 'repeat-x':\n case 'repeat no-repeat':\n return BACKGROUND_REPEAT.REPEAT_X;\n case 'repeat-y':\n case 'no-repeat repeat':\n return BACKGROUND_REPEAT.REPEAT_Y;\n case 'repeat':\n default:\n return BACKGROUND_REPEAT.REPEAT;\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, parseFunctionArgs} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {StringValueToken} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport enum BACKGROUND_SIZE {\n AUTO = 'auto',\n CONTAIN = 'contain',\n COVER = 'cover'\n}\n\nexport type BackgroundSizeInfo = LengthPercentage | StringValueToken;\nexport type BackgroundSize = BackgroundSizeInfo[][];\n\nexport const backgroundSize: IPropertyListDescriptor<BackgroundSize> = {\n name: 'background-size',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BackgroundSize => {\n return parseFunctionArgs(tokens).map((values) => values.filter(isBackgroundSizeInfoToken));\n }\n};\n\nconst isBackgroundSizeInfoToken = (value: CSSValue): value is BackgroundSizeInfo =>\n isIdentToken(value) || isLengthPercentage(value);\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nconst borderColorForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `border-${side}-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n});\n\nexport const borderTopColor: IPropertyTypeValueDescriptor = borderColorForSide('top');\nexport const borderRightColor: IPropertyTypeValueDescriptor = borderColorForSide('right');\nexport const borderBottomColor: IPropertyTypeValueDescriptor = borderColorForSide('bottom');\nexport const borderLeftColor: IPropertyTypeValueDescriptor = borderColorForSide('left');\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentageTuple, parseLengthPercentageTuple} from '../types/length-percentage';\nimport {Context} from '../../core/context';\nexport type BorderRadius = LengthPercentageTuple;\n\nconst borderRadiusForSide = (side: string): IPropertyListDescriptor<BorderRadius> => ({\n name: `border-radius-${side}`,\n initialValue: '0 0',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): BorderRadius =>\n parseLengthPercentageTuple(tokens.filter(isLengthPercentage))\n});\n\nexport const borderTopLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-left');\nexport const borderTopRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('top-right');\nexport const borderBottomRightRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-right');\nexport const borderBottomLeftRadius: IPropertyListDescriptor<BorderRadius> = borderRadiusForSide('bottom-left');\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum BORDER_STYLE {\n NONE = 0,\n SOLID = 1,\n DASHED = 2,\n DOTTED = 3,\n DOUBLE = 4\n}\n\nconst borderStyleForSide = (side: string): IPropertyIdentValueDescriptor<BORDER_STYLE> => ({\n name: `border-${side}-style`,\n initialValue: 'solid',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, style: string): BORDER_STYLE => {\n switch (style) {\n case 'none':\n return BORDER_STYLE.NONE;\n case 'dashed':\n return BORDER_STYLE.DASHED;\n case 'dotted':\n return BORDER_STYLE.DOTTED;\n case 'double':\n return BORDER_STYLE.DOUBLE;\n }\n return BORDER_STYLE.SOLID;\n }\n});\n\nexport const borderTopStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('top');\nexport const borderRightStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('right');\nexport const borderBottomStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('bottom');\nexport const borderLeftStyle: IPropertyIdentValueDescriptor<BORDER_STYLE> = borderStyleForSide('left');\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nconst borderWidthForSide = (side: string): IPropertyValueDescriptor<number> => ({\n name: `border-${side}-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n});\n\nexport const borderTopWidth: IPropertyValueDescriptor<number> = borderWidthForSide('top');\nexport const borderRightWidth: IPropertyValueDescriptor<number> = borderWidthForSide('right');\nexport const borderBottomWidth: IPropertyValueDescriptor<number> = borderWidthForSide('bottom');\nexport const borderLeftWidth: IPropertyValueDescriptor<number> = borderWidthForSide('left');\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const color: IPropertyTypeValueDescriptor = {\n name: `color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\n\nexport const enum DIRECTION {\n LTR = 0,\n RTL = 1\n}\n\nexport const direction: IPropertyIdentValueDescriptor<DIRECTION> = {\n name: 'direction',\n initialValue: 'ltr',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, direction: string) => {\n switch (direction) {\n case 'rtl':\n return DIRECTION.RTL;\n case 'ltr':\n default:\n return DIRECTION.LTR;\n }\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum DISPLAY {\n NONE = 0,\n BLOCK = 1 << 1,\n INLINE = 1 << 2,\n RUN_IN = 1 << 3,\n FLOW = 1 << 4,\n FLOW_ROOT = 1 << 5,\n TABLE = 1 << 6,\n FLEX = 1 << 7,\n GRID = 1 << 8,\n RUBY = 1 << 9,\n SUBGRID = 1 << 10,\n LIST_ITEM = 1 << 11,\n TABLE_ROW_GROUP = 1 << 12,\n TABLE_HEADER_GROUP = 1 << 13,\n TABLE_FOOTER_GROUP = 1 << 14,\n TABLE_ROW = 1 << 15,\n TABLE_CELL = 1 << 16,\n TABLE_COLUMN_GROUP = 1 << 17,\n TABLE_COLUMN = 1 << 18,\n TABLE_CAPTION = 1 << 19,\n RUBY_BASE = 1 << 20,\n RUBY_TEXT = 1 << 21,\n RUBY_BASE_CONTAINER = 1 << 22,\n RUBY_TEXT_CONTAINER = 1 << 23,\n CONTENTS = 1 << 24,\n INLINE_BLOCK = 1 << 25,\n INLINE_LIST_ITEM = 1 << 26,\n INLINE_TABLE = 1 << 27,\n INLINE_FLEX = 1 << 28,\n INLINE_GRID = 1 << 29\n}\n\nexport type Display = number;\n\nexport const display: IPropertyListDescriptor<Display> = {\n name: 'display',\n initialValue: 'inline-block',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): Display => {\n return tokens.filter(isIdentToken).reduce((bit, token) => {\n return bit | parseDisplayValue(token.value);\n }, DISPLAY.NONE);\n }\n};\n\nconst parseDisplayValue = (display: string): Display => {\n switch (display) {\n case 'block':\n case '-webkit-box':\n return DISPLAY.BLOCK;\n case 'inline':\n return DISPLAY.INLINE;\n case 'run-in':\n return DISPLAY.RUN_IN;\n case 'flow':\n return DISPLAY.FLOW;\n case 'flow-root':\n return DISPLAY.FLOW_ROOT;\n case 'table':\n return DISPLAY.TABLE;\n case 'flex':\n case '-webkit-flex':\n return DISPLAY.FLEX;\n case 'grid':\n case '-ms-grid':\n return DISPLAY.GRID;\n case 'ruby':\n return DISPLAY.RUBY;\n case 'subgrid':\n return DISPLAY.SUBGRID;\n case 'list-item':\n return DISPLAY.LIST_ITEM;\n case 'table-row-group':\n return DISPLAY.TABLE_ROW_GROUP;\n case 'table-header-group':\n return DISPLAY.TABLE_HEADER_GROUP;\n case 'table-footer-group':\n return DISPLAY.TABLE_FOOTER_GROUP;\n case 'table-row':\n return DISPLAY.TABLE_ROW;\n case 'table-cell':\n return DISPLAY.TABLE_CELL;\n case 'table-column-group':\n return DISPLAY.TABLE_COLUMN_GROUP;\n case 'table-column':\n return DISPLAY.TABLE_COLUMN;\n case 'table-caption':\n return DISPLAY.TABLE_CAPTION;\n case 'ruby-base':\n return DISPLAY.RUBY_BASE;\n case 'ruby-text':\n return DISPLAY.RUBY_TEXT;\n case 'ruby-base-container':\n return DISPLAY.RUBY_BASE_CONTAINER;\n case 'ruby-text-container':\n return DISPLAY.RUBY_TEXT_CONTAINER;\n case 'contents':\n return DISPLAY.CONTENTS;\n case 'inline-block':\n return DISPLAY.INLINE_BLOCK;\n case 'inline-list-item':\n return DISPLAY.INLINE_LIST_ITEM;\n case 'inline-table':\n return DISPLAY.INLINE_TABLE;\n case 'inline-flex':\n return DISPLAY.INLINE_FLEX;\n case 'inline-grid':\n return DISPLAY.INLINE_GRID;\n }\n\n return DISPLAY.NONE;\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FLOAT {\n NONE = 0,\n LEFT = 1,\n RIGHT = 2,\n INLINE_START = 3,\n INLINE_END = 4\n}\n\nexport const float: IPropertyIdentValueDescriptor<FLOAT> = {\n name: 'float',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, float: string) => {\n switch (float) {\n case 'left':\n return FLOAT.LEFT;\n case 'right':\n return FLOAT.RIGHT;\n case 'inline-start':\n return FLOAT.INLINE_START;\n case 'inline-end':\n return FLOAT.INLINE_END;\n }\n return FLOAT.NONE;\n }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport const letterSpacing: IPropertyValueDescriptor<number> = {\n name: 'letter-spacing',\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'normal') {\n return 0;\n }\n\n if (token.type === TokenType.NUMBER_TOKEN) {\n return token.number;\n }\n\n if (token.type === TokenType.DIMENSION_TOKEN) {\n return token.number;\n }\n\n return 0;\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum LINE_BREAK {\n NORMAL = 'normal',\n STRICT = 'strict'\n}\n\nexport const lineBreak: IPropertyIdentValueDescriptor<LINE_BREAK> = {\n name: 'line-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, lineBreak: string): LINE_BREAK => {\n switch (lineBreak) {\n case 'strict':\n return LINE_BREAK.STRICT;\n case 'normal':\n default:\n return LINE_BREAK.NORMAL;\n }\n }\n};\n", "import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {getAbsoluteValue, isLengthPercentage} from '../types/length-percentage';\nexport const lineHeight: IPropertyTokenValueDescriptor = {\n name: 'line-height',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n};\n\nexport const computeLineHeight = (token: CSSValue, fontSize: number): number => {\n if (isIdentToken(token) && token.value === 'normal') {\n return 1.2 * fontSize;\n } else if (token.type === TokenType.NUMBER_TOKEN) {\n return fontSize * token.number;\n } else if (isLengthPercentage(token)) {\n return getAbsoluteValue(token, fontSize);\n }\n\n return fontSize;\n};\n", "import {TokenType} from '../syntax/tokenizer';\nimport {ICSSImage, image} from '../types/image';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const listStyleImage: IPropertyValueDescriptor<ICSSImage | null> = {\n name: 'list-style-image',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n return image.parse(context, token);\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_POSITION {\n INSIDE = 0,\n OUTSIDE = 1\n}\n\nexport const listStylePosition: IPropertyIdentValueDescriptor<LIST_STYLE_POSITION> = {\n name: 'list-style-position',\n initialValue: 'outside',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'inside':\n return LIST_STYLE_POSITION.INSIDE;\n case 'outside':\n default:\n return LIST_STYLE_POSITION.OUTSIDE;\n }\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum LIST_STYLE_TYPE {\n NONE = -1,\n DISC = 0,\n CIRCLE = 1,\n SQUARE = 2,\n DECIMAL = 3,\n CJK_DECIMAL = 4,\n DECIMAL_LEADING_ZERO = 5,\n LOWER_ROMAN = 6,\n UPPER_ROMAN = 7,\n LOWER_GREEK = 8,\n LOWER_ALPHA = 9,\n UPPER_ALPHA = 10,\n ARABIC_INDIC = 11,\n ARMENIAN = 12,\n BENGALI = 13,\n CAMBODIAN = 14,\n CJK_EARTHLY_BRANCH = 15,\n CJK_HEAVENLY_STEM = 16,\n CJK_IDEOGRAPHIC = 17,\n DEVANAGARI = 18,\n ETHIOPIC_NUMERIC = 19,\n GEORGIAN = 20,\n GUJARATI = 21,\n GURMUKHI = 22,\n HEBREW = 22,\n HIRAGANA = 23,\n HIRAGANA_IROHA = 24,\n JAPANESE_FORMAL = 25,\n JAPANESE_INFORMAL = 26,\n KANNADA = 27,\n KATAKANA = 28,\n KATAKANA_IROHA = 29,\n KHMER = 30,\n KOREAN_HANGUL_FORMAL = 31,\n KOREAN_HANJA_FORMAL = 32,\n KOREAN_HANJA_INFORMAL = 33,\n LAO = 34,\n LOWER_ARMENIAN = 35,\n MALAYALAM = 36,\n MONGOLIAN = 37,\n MYANMAR = 38,\n ORIYA = 39,\n PERSIAN = 40,\n SIMP_CHINESE_FORMAL = 41,\n SIMP_CHINESE_INFORMAL = 42,\n TAMIL = 43,\n TELUGU = 44,\n THAI = 45,\n TIBETAN = 46,\n TRAD_CHINESE_FORMAL = 47,\n TRAD_CHINESE_INFORMAL = 48,\n UPPER_ARMENIAN = 49,\n DISCLOSURE_OPEN = 50,\n DISCLOSURE_CLOSED = 51\n}\n\nexport const listStyleType: IPropertyIdentValueDescriptor<LIST_STYLE_TYPE> = {\n name: 'list-style-type',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, type: string) => {\n switch (type) {\n case 'disc':\n return LIST_STYLE_TYPE.DISC;\n case 'circle':\n return LIST_STYLE_TYPE.CIRCLE;\n case 'square':\n return LIST_STYLE_TYPE.SQUARE;\n case 'decimal':\n return LIST_STYLE_TYPE.DECIMAL;\n case 'cjk-decimal':\n return LIST_STYLE_TYPE.CJK_DECIMAL;\n case 'decimal-leading-zero':\n return LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO;\n case 'lower-roman':\n return LIST_STYLE_TYPE.LOWER_ROMAN;\n case 'upper-roman':\n return LIST_STYLE_TYPE.UPPER_ROMAN;\n case 'lower-greek':\n return LIST_STYLE_TYPE.LOWER_GREEK;\n case 'lower-alpha':\n return LIST_STYLE_TYPE.LOWER_ALPHA;\n case 'upper-alpha':\n return LIST_STYLE_TYPE.UPPER_ALPHA;\n case 'arabic-indic':\n return LIST_STYLE_TYPE.ARABIC_INDIC;\n case 'armenian':\n return LIST_STYLE_TYPE.ARMENIAN;\n case 'bengali':\n return LIST_STYLE_TYPE.BENGALI;\n case 'cambodian':\n return LIST_STYLE_TYPE.CAMBODIAN;\n case 'cjk-earthly-branch':\n return LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH;\n case 'cjk-heavenly-stem':\n return LIST_STYLE_TYPE.CJK_HEAVENLY_STEM;\n case 'cjk-ideographic':\n return LIST_STYLE_TYPE.CJK_IDEOGRAPHIC;\n case 'devanagari':\n return LIST_STYLE_TYPE.DEVANAGARI;\n case 'ethiopic-numeric':\n return LIST_STYLE_TYPE.ETHIOPIC_NUMERIC;\n case 'georgian':\n return LIST_STYLE_TYPE.GEORGIAN;\n case 'gujarati':\n return LIST_STYLE_TYPE.GUJARATI;\n case 'gurmukhi':\n return LIST_STYLE_TYPE.GURMUKHI;\n case 'hebrew':\n return LIST_STYLE_TYPE.HEBREW;\n case 'hiragana':\n return LIST_STYLE_TYPE.HIRAGANA;\n case 'hiragana-iroha':\n return LIST_STYLE_TYPE.HIRAGANA_IROHA;\n case 'japanese-formal':\n return LIST_STYLE_TYPE.JAPANESE_FORMAL;\n case 'japanese-informal':\n return LIST_STYLE_TYPE.JAPANESE_INFORMAL;\n case 'kannada':\n return LIST_STYLE_TYPE.KANNADA;\n case 'katakana':\n return LIST_STYLE_TYPE.KATAKANA;\n case 'katakana-iroha':\n return LIST_STYLE_TYPE.KATAKANA_IROHA;\n case 'khmer':\n return LIST_STYLE_TYPE.KHMER;\n case 'korean-hangul-formal':\n return LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL;\n case 'korean-hanja-formal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL;\n case 'korean-hanja-informal':\n return LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL;\n case 'lao':\n return LIST_STYLE_TYPE.LAO;\n case 'lower-armenian':\n return LIST_STYLE_TYPE.LOWER_ARMENIAN;\n case 'malayalam':\n return LIST_STYLE_TYPE.MALAYALAM;\n case 'mongolian':\n return LIST_STYLE_TYPE.MONGOLIAN;\n case 'myanmar':\n return LIST_STYLE_TYPE.MYANMAR;\n case 'oriya':\n return LIST_STYLE_TYPE.ORIYA;\n case 'persian':\n return LIST_STYLE_TYPE.PERSIAN;\n case 'simp-chinese-formal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL;\n case 'simp-chinese-informal':\n return LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL;\n case 'tamil':\n return LIST_STYLE_TYPE.TAMIL;\n case 'telugu':\n return LIST_STYLE_TYPE.TELUGU;\n case 'thai':\n return LIST_STYLE_TYPE.THAI;\n case 'tibetan':\n return LIST_STYLE_TYPE.TIBETAN;\n case 'trad-chinese-formal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL;\n case 'trad-chinese-informal':\n return LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL;\n case 'upper-armenian':\n return LIST_STYLE_TYPE.UPPER_ARMENIAN;\n case 'disclosure-open':\n return LIST_STYLE_TYPE.DISCLOSURE_OPEN;\n case 'disclosure-closed':\n return LIST_STYLE_TYPE.DISCLOSURE_CLOSED;\n case 'none':\n default:\n return LIST_STYLE_TYPE.NONE;\n }\n }\n};\n", "import {IPropertyTokenValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst marginForSide = (side: string): IPropertyTokenValueDescriptor => ({\n name: `margin-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TOKEN_VALUE\n});\n\nexport const marginTop: IPropertyTokenValueDescriptor = marginForSide('top');\nexport const marginRight: IPropertyTokenValueDescriptor = marginForSide('right');\nexport const marginBottom: IPropertyTokenValueDescriptor = marginForSide('bottom');\nexport const marginLeft: IPropertyTokenValueDescriptor = marginForSide('left');\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW {\n VISIBLE = 0,\n HIDDEN = 1,\n SCROLL = 2,\n CLIP = 3,\n AUTO = 4\n}\n\nexport const overflow: IPropertyListDescriptor<OVERFLOW[]> = {\n name: 'overflow',\n initialValue: 'visible',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): OVERFLOW[] => {\n return tokens.filter(isIdentToken).map((overflow) => {\n switch (overflow.value) {\n case 'hidden':\n return OVERFLOW.HIDDEN;\n case 'scroll':\n return OVERFLOW.SCROLL;\n case 'clip':\n return OVERFLOW.CLIP;\n case 'auto':\n return OVERFLOW.AUTO;\n case 'visible':\n default:\n return OVERFLOW.VISIBLE;\n }\n });\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum OVERFLOW_WRAP {\n NORMAL = 'normal',\n BREAK_WORD = 'break-word'\n}\n\nexport const overflowWrap: IPropertyIdentValueDescriptor<OVERFLOW_WRAP> = {\n name: 'overflow-wrap',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'break-word':\n return OVERFLOW_WRAP.BREAK_WORD;\n case 'normal':\n default:\n return OVERFLOW_WRAP.NORMAL;\n }\n }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nconst paddingForSide = (side: string): IPropertyTypeValueDescriptor => ({\n name: `padding-${side}`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length-percentage'\n});\n\nexport const paddingTop: IPropertyTypeValueDescriptor = paddingForSide('top');\nexport const paddingRight: IPropertyTypeValueDescriptor = paddingForSide('right');\nexport const paddingBottom: IPropertyTypeValueDescriptor = paddingForSide('bottom');\nexport const paddingLeft: IPropertyTypeValueDescriptor = paddingForSide('left');\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_ALIGN {\n LEFT = 0,\n CENTER = 1,\n RIGHT = 2\n}\n\nexport const textAlign: IPropertyIdentValueDescriptor<TEXT_ALIGN> = {\n name: 'text-align',\n initialValue: 'left',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textAlign: string) => {\n switch (textAlign) {\n case 'right':\n return TEXT_ALIGN.RIGHT;\n case 'center':\n case 'justify':\n return TEXT_ALIGN.CENTER;\n case 'left':\n default:\n return TEXT_ALIGN.LEFT;\n }\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum POSITION {\n STATIC = 0,\n RELATIVE = 1,\n ABSOLUTE = 2,\n FIXED = 3,\n STICKY = 4\n}\n\nexport const position: IPropertyIdentValueDescriptor<POSITION> = {\n name: 'position',\n initialValue: 'static',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, position: string) => {\n switch (position) {\n case 'relative':\n return POSITION.RELATIVE;\n case 'absolute':\n return POSITION.ABSOLUTE;\n case 'fixed':\n return POSITION.FIXED;\n case 'sticky':\n return POSITION.STICKY;\n }\n\n return POSITION.STATIC;\n }\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color, COLORS} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type TextShadow = TextShadowItem[];\ninterface TextShadowItem {\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n}\n\nexport const textShadow: IPropertyListDescriptor<TextShadow> = {\n name: 'text-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): TextShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: TextShadowItem = {\n color: COLORS.TRANSPARENT,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else {\n shadow.blur = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum TEXT_TRANSFORM {\n NONE = 0,\n LOWERCASE = 1,\n UPPERCASE = 2,\n CAPITALIZE = 3\n}\n\nexport const textTransform: IPropertyIdentValueDescriptor<TEXT_TRANSFORM> = {\n name: 'text-transform',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, textTransform: string) => {\n switch (textTransform) {\n case 'uppercase':\n return TEXT_TRANSFORM.UPPERCASE;\n case 'lowercase':\n return TEXT_TRANSFORM.LOWERCASE;\n case 'capitalize':\n return TEXT_TRANSFORM.CAPITALIZE;\n }\n\n return TEXT_TRANSFORM.NONE;\n }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {NumberValueToken, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type Matrix = [number, number, number, number, number, number];\nexport type Transform = Matrix | null;\n\nexport const transform: IPropertyValueDescriptor<Transform> = {\n name: 'transform',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue) => {\n if (token.type === TokenType.IDENT_TOKEN && token.value === 'none') {\n return null;\n }\n\n if (token.type === TokenType.FUNCTION) {\n const transformFunction = SUPPORTED_TRANSFORM_FUNCTIONS[token.name];\n if (typeof transformFunction === 'undefined') {\n throw new Error(`Attempting to parse an unsupported transform function \"${token.name}\"`);\n }\n return transformFunction(token.values);\n }\n\n return null;\n }\n};\n\nconst matrix = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n return values.length === 6 ? (values as Matrix) : null;\n};\n\n// doesn't support 3D transforms at the moment\nconst matrix3d = (args: CSSValue[]): Transform => {\n const values = args.filter((arg) => arg.type === TokenType.NUMBER_TOKEN).map((arg: NumberValueToken) => arg.number);\n\n const [a1, b1, {}, {}, a2, b2, {}, {}, {}, {}, {}, {}, a4, b4, {}, {}] = values;\n\n return values.length === 16 ? [a1, b1, a2, b2, a4, b4] : null;\n};\n\nconst SUPPORTED_TRANSFORM_FUNCTIONS: {\n [key: string]: (args: CSSValue[]) => Transform;\n} = {\n matrix: matrix,\n matrix3d: matrix3d\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {isLengthPercentage, LengthPercentage} from '../types/length-percentage';\nimport {FLAG_INTEGER, TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\nexport type TransformOrigin = [LengthPercentage, LengthPercentage];\n\nconst DEFAULT_VALUE: LengthPercentage = {\n type: TokenType.PERCENTAGE_TOKEN,\n number: 50,\n flags: FLAG_INTEGER\n};\nconst DEFAULT: TransformOrigin = [DEFAULT_VALUE, DEFAULT_VALUE];\n\nexport const transformOrigin: IPropertyListDescriptor<TransformOrigin> = {\n name: 'transform-origin',\n initialValue: '50% 50%',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const origins: LengthPercentage[] = tokens.filter(isLengthPercentage);\n\n if (origins.length !== 2) {\n return DEFAULT;\n }\n\n return [origins[0], origins[1]];\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum VISIBILITY {\n VISIBLE = 0,\n HIDDEN = 1,\n COLLAPSE = 2\n}\n\nexport const visibility: IPropertyIdentValueDescriptor<VISIBILITY> = {\n name: 'visible',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, visibility: string) => {\n switch (visibility) {\n case 'hidden':\n return VISIBILITY.HIDDEN;\n case 'collapse':\n return VISIBILITY.COLLAPSE;\n case 'visible':\n default:\n return VISIBILITY.VISIBLE;\n }\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport enum WORD_BREAK {\n NORMAL = 'normal',\n BREAK_ALL = 'break-all',\n KEEP_ALL = 'keep-all'\n}\n\nexport const wordBreak: IPropertyIdentValueDescriptor<WORD_BREAK> = {\n name: 'word-break',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, wordBreak: string): WORD_BREAK => {\n switch (wordBreak) {\n case 'break-all':\n return WORD_BREAK.BREAK_ALL;\n case 'keep-all':\n return WORD_BREAK.KEEP_ALL;\n case 'normal':\n default:\n return WORD_BREAK.NORMAL;\n }\n }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\ninterface zIndex {\n order: number;\n auto: boolean;\n}\n\nexport const zIndex: IPropertyValueDescriptor<zIndex> = {\n name: 'z-index',\n initialValue: 'auto',\n prefix: false,\n type: PropertyDescriptorParsingType.VALUE,\n parse: (_context: Context, token: CSSValue): zIndex => {\n if (token.type === TokenType.IDENT_TOKEN) {\n return {auto: true, order: 0};\n }\n\n if (isNumberToken(token)) {\n return {auto: false, order: token.number};\n }\n\n throw new Error(`Invalid z-index number parsed`);\n }\n};\n", "import {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {ITypeDescriptor} from '../ITypeDescriptor';\nimport {Context} from '../../core/context';\n\nexport const time: ITypeDescriptor<number> = {\n name: 'time',\n parse: (_context: Context, value: CSSValue): number => {\n if (value.type === TokenType.DIMENSION_TOKEN) {\n switch (value.unit.toLowerCase()) {\n case 's':\n return 1000 * value.number;\n case 'ms':\n return value.number;\n }\n }\n\n throw new Error(`Unsupported time type`);\n }\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const opacity: IPropertyValueDescriptor<number> = {\n name: 'opacity',\n initialValue: '1',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n return 1;\n }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const textDecorationColor: IPropertyTypeValueDescriptor = {\n name: `text-decoration-color`,\n initialValue: 'transparent',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport const enum TEXT_DECORATION_LINE {\n NONE = 0,\n UNDERLINE = 1,\n OVERLINE = 2,\n LINE_THROUGH = 3,\n BLINK = 4\n}\n\nexport type TextDecorationLine = TEXT_DECORATION_LINE[];\n\nexport const textDecorationLine: IPropertyListDescriptor<TextDecorationLine> = {\n name: 'text-decoration-line',\n initialValue: 'none',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): TextDecorationLine => {\n return tokens\n .filter(isIdentToken)\n .map((token) => {\n switch (token.value) {\n case 'underline':\n return TEXT_DECORATION_LINE.UNDERLINE;\n case 'overline':\n return TEXT_DECORATION_LINE.OVERLINE;\n case 'line-through':\n return TEXT_DECORATION_LINE.LINE_THROUGH;\n case 'none':\n return TEXT_DECORATION_LINE.BLINK;\n }\n return TEXT_DECORATION_LINE.NONE;\n })\n .filter((line) => line !== TEXT_DECORATION_LINE.NONE);\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport type FONT_FAMILY = string;\n\nexport type FontFamily = FONT_FAMILY[];\n\nexport const fontFamily: IPropertyListDescriptor<FontFamily> = {\n name: `font-family`,\n initialValue: '',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n const accumulator: string[] = [];\n const results: string[] = [];\n tokens.forEach((token) => {\n switch (token.type) {\n case TokenType.IDENT_TOKEN:\n case TokenType.STRING_TOKEN:\n accumulator.push(token.value);\n break;\n case TokenType.NUMBER_TOKEN:\n accumulator.push(token.number.toString());\n break;\n case TokenType.COMMA_TOKEN:\n results.push(accumulator.join(' '));\n accumulator.length = 0;\n break;\n }\n });\n if (accumulator.length) {\n results.push(accumulator.join(' '));\n }\n return results.map((result) => (result.indexOf(' ') === -1 ? result : `'${result}'`));\n }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\n\nexport const fontSize: IPropertyTypeValueDescriptor = {\n name: `font-size`,\n initialValue: '0',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'length'\n};\n", "import {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontWeight: IPropertyValueDescriptor<number> = {\n name: 'font-weight',\n initialValue: 'normal',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isNumberToken(token)) {\n return token.number;\n }\n\n if (isIdentToken(token)) {\n switch (token.value) {\n case 'bold':\n return 700;\n case 'normal':\n default:\n return 400;\n }\n }\n\n return 400;\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const fontVariant: IPropertyListDescriptor<string[]> = {\n name: 'font-variant',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]): string[] => {\n return tokens.filter(isIdentToken).map((token) => token.value);\n }\n};\n", "import {IPropertyIdentValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const enum FONT_STYLE {\n NORMAL = 'normal',\n ITALIC = 'italic',\n OBLIQUE = 'oblique'\n}\n\nexport const fontStyle: IPropertyIdentValueDescriptor<FONT_STYLE> = {\n name: 'font-style',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.IDENT_VALUE,\n parse: (_context: Context, overflow: string) => {\n switch (overflow) {\n case 'oblique':\n return FONT_STYLE.OBLIQUE;\n case 'italic':\n return FONT_STYLE.ITALIC;\n case 'normal':\n default:\n return FONT_STYLE.NORMAL;\n }\n }\n};\n", "export const contains = (bit: number, value: number): boolean => (bit & value) !== 0;\n", "import {TokenType} from '../syntax/tokenizer';\nimport {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport type Content = CSSValue[];\n\nexport const content: IPropertyListDescriptor<Content> = {\n name: 'content',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return [];\n }\n\n return tokens;\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_INCREMENT {\n counter: string;\n increment: number;\n}\n\nexport type CounterIncrement = COUNTER_INCREMENT[] | null;\n\nexport const counterIncrement: IPropertyListDescriptor<CounterIncrement> = {\n name: 'counter-increment',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const increments = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (counter.type === TokenType.IDENT_TOKEN) {\n const increment = next && isNumberToken(next) ? next.number : 1;\n increments.push({counter: counter.value, increment});\n }\n }\n\n return increments;\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken, isNumberToken, nonWhiteSpace} from '../syntax/parser';\nimport {Context} from '../../core/context';\n\nexport interface COUNTER_RESET {\n counter: string;\n reset: number;\n}\n\nexport type CounterReset = COUNTER_RESET[];\n\nexport const counterReset: IPropertyListDescriptor<CounterReset> = {\n name: 'counter-reset',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return [];\n }\n\n const resets = [];\n const filtered = tokens.filter(nonWhiteSpace);\n\n for (let i = 0; i < filtered.length; i++) {\n const counter = filtered[i];\n const next = filtered[i + 1];\n if (isIdentToken(counter) && counter.value !== 'none') {\n const reset = next && isNumberToken(next) ? next.number : 0;\n resets.push({counter: counter.value, reset});\n }\n }\n\n return resets;\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nimport {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {time} from '../types/time';\n\nexport const duration: IPropertyListDescriptor<number[]> = {\n name: 'duration',\n initialValue: '0s',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (context: Context, tokens: CSSValue[]) => {\n return tokens.filter(isDimensionToken).map((token) => time.parse(context, token));\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isStringToken} from '../syntax/parser';\nimport {TokenType} from '../syntax/tokenizer';\nimport {Context} from '../../core/context';\n\nexport interface QUOTE {\n open: string;\n close: string;\n}\n\nexport type Quotes = QUOTE[] | null;\n\nexport const quotes: IPropertyListDescriptor<Quotes> = {\n name: 'quotes',\n initialValue: 'none',\n prefix: true,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]) => {\n if (tokens.length === 0) {\n return null;\n }\n\n const first = tokens[0];\n\n if (first.type === TokenType.IDENT_TOKEN && first.value === 'none') {\n return null;\n }\n\n const quotes = [];\n const filtered = tokens.filter(isStringToken);\n\n if (filtered.length % 2 !== 0) {\n return null;\n }\n\n for (let i = 0; i < filtered.length; i += 2) {\n const open = filtered[i].value;\n const close = filtered[i + 1].value;\n quotes.push({open, close});\n }\n\n return quotes;\n }\n};\n\nexport const getQuote = (quotes: Quotes, depth: number, open: boolean): string => {\n if (!quotes) {\n return '';\n }\n\n const quote = quotes[Math.min(depth, quotes.length - 1)];\n if (!quote) {\n return '';\n }\n\n return open ? quote.open : quote.close;\n};\n", "import {PropertyDescriptorParsingType, IPropertyListDescriptor} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentWithValue, parseFunctionArgs} from '../syntax/parser';\nimport {ZERO_LENGTH} from '../types/length-percentage';\nimport {color, Color} from '../types/color';\nimport {isLength, Length} from '../types/length';\nimport {Context} from '../../core/context';\n\nexport type BoxShadow = BoxShadowItem[];\ninterface BoxShadowItem {\n inset: boolean;\n color: Color;\n offsetX: Length;\n offsetY: Length;\n blur: Length;\n spread: Length;\n}\n\nexport const boxShadow: IPropertyListDescriptor<BoxShadow> = {\n name: 'box-shadow',\n initialValue: 'none',\n type: PropertyDescriptorParsingType.LIST,\n prefix: false,\n parse: (context: Context, tokens: CSSValue[]): BoxShadow => {\n if (tokens.length === 1 && isIdentWithValue(tokens[0], 'none')) {\n return [];\n }\n\n return parseFunctionArgs(tokens).map((values: CSSValue[]) => {\n const shadow: BoxShadowItem = {\n color: 0x000000ff,\n offsetX: ZERO_LENGTH,\n offsetY: ZERO_LENGTH,\n blur: ZERO_LENGTH,\n spread: ZERO_LENGTH,\n inset: false\n };\n let c = 0;\n for (let i = 0; i < values.length; i++) {\n const token = values[i];\n if (isIdentWithValue(token, 'inset')) {\n shadow.inset = true;\n } else if (isLength(token)) {\n if (c === 0) {\n shadow.offsetX = token;\n } else if (c === 1) {\n shadow.offsetY = token;\n } else if (c === 2) {\n shadow.blur = token;\n } else {\n shadow.spread = token;\n }\n c++;\n } else {\n shadow.color = color.parse(context, token);\n }\n }\n return shadow;\n });\n }\n};\n", "import {IPropertyListDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {CSSValue, isIdentToken} from '../syntax/parser';\nimport {Context} from '../../core/context';\nexport const enum PAINT_ORDER_LAYER {\n FILL,\n STROKE,\n MARKERS\n}\n\nexport type PaintOrder = PAINT_ORDER_LAYER[];\n\nexport const paintOrder: IPropertyListDescriptor<PaintOrder> = {\n name: 'paint-order',\n initialValue: 'normal',\n prefix: false,\n type: PropertyDescriptorParsingType.LIST,\n parse: (_context: Context, tokens: CSSValue[]): PaintOrder => {\n const DEFAULT_VALUE = [PAINT_ORDER_LAYER.FILL, PAINT_ORDER_LAYER.STROKE, PAINT_ORDER_LAYER.MARKERS];\n const layers: PaintOrder = [];\n\n tokens.filter(isIdentToken).forEach((token) => {\n switch (token.value) {\n case 'stroke':\n layers.push(PAINT_ORDER_LAYER.STROKE);\n break;\n case 'fill':\n layers.push(PAINT_ORDER_LAYER.FILL);\n break;\n case 'markers':\n layers.push(PAINT_ORDER_LAYER.MARKERS);\n break;\n }\n });\n DEFAULT_VALUE.forEach((value) => {\n if (layers.indexOf(value) === -1) {\n layers.push(value);\n }\n });\n\n return layers;\n }\n};\n", "import {IPropertyTypeValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nexport const webkitTextStrokeColor: IPropertyTypeValueDescriptor = {\n name: `-webkit-text-stroke-color`,\n initialValue: 'currentcolor',\n prefix: false,\n type: PropertyDescriptorParsingType.TYPE_VALUE,\n format: 'color'\n};\n", "import {CSSValue, isDimensionToken} from '../syntax/parser';\nimport {IPropertyValueDescriptor, PropertyDescriptorParsingType} from '../IPropertyDescriptor';\nimport {Context} from '../../core/context';\nexport const webkitTextStrokeWidth: IPropertyValueDescriptor<number> = {\n name: `-webkit-text-stroke-width`,\n initialValue: '0',\n type: PropertyDescriptorParsingType.VALUE,\n prefix: false,\n parse: (_context: Context, token: CSSValue): number => {\n if (isDimensionToken(token)) {\n return token.number;\n }\n return 0;\n }\n};\n", "import {CSSPropertyDescriptor, PropertyDescriptorParsingType} from './IPropertyDescriptor';\nimport {backgroundClip} from './property-descriptors/background-clip';\nimport {backgroundColor} from './property-descriptors/background-color';\nimport {backgroundImage} from './property-descriptors/background-image';\nimport {backgroundOrigin} from './property-descriptors/background-origin';\nimport {backgroundPosition} from './property-descriptors/background-position';\nimport {backgroundRepeat} from './property-descriptors/background-repeat';\nimport {backgroundSize} from './property-descriptors/background-size';\nimport {\n borderBottomColor,\n borderLeftColor,\n borderRightColor,\n borderTopColor\n} from './property-descriptors/border-color';\nimport {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderTopLeftRadius,\n borderTopRightRadius\n} from './property-descriptors/border-radius';\nimport {\n borderBottomStyle,\n borderLeftStyle,\n borderRightStyle,\n borderTopStyle\n} from './property-descriptors/border-style';\nimport {\n borderBottomWidth,\n borderLeftWidth,\n borderRightWidth,\n borderTopWidth\n} from './property-descriptors/border-width';\nimport {color} from './property-descriptors/color';\nimport {direction} from './property-descriptors/direction';\nimport {display, DISPLAY} from './property-descriptors/display';\nimport {float, FLOAT} from './property-descriptors/float';\nimport {letterSpacing} from './property-descriptors/letter-spacing';\nimport {lineBreak} from './property-descriptors/line-break';\nimport {lineHeight} from './property-descriptors/line-height';\nimport {listStyleImage} from './property-descriptors/list-style-image';\nimport {listStylePosition} from './property-descriptors/list-style-position';\nimport {listStyleType} from './property-descriptors/list-style-type';\nimport {marginBottom, marginLeft, marginRight, marginTop} from './property-descriptors/margin';\nimport {overflow, OVERFLOW} from './property-descriptors/overflow';\nimport {overflowWrap} from './property-descriptors/overflow-wrap';\nimport {paddingBottom, paddingLeft, paddingRight, paddingTop} from './property-descriptors/padding';\nimport {textAlign} from './property-descriptors/text-align';\nimport {position, POSITION} from './property-descriptors/position';\nimport {textShadow} from './property-descriptors/text-shadow';\nimport {textTransform} from './property-descriptors/text-transform';\nimport {transform} from './property-descriptors/transform';\nimport {transformOrigin} from './property-descriptors/transform-origin';\nimport {visibility, VISIBILITY} from './property-descriptors/visibility';\nimport {wordBreak} from './property-descriptors/word-break';\nimport {zIndex} from './property-descriptors/z-index';\nimport {CSSValue, isIdentToken, Parser} from './syntax/parser';\nimport {Tokenizer} from './syntax/tokenizer';\nimport {Color, color as colorType, isTransparent} from './types/color';\nimport {angle} from './types/angle';\nimport {image} from './types/image';\nimport {time} from './types/time';\nimport {opacity} from './property-descriptors/opacity';\nimport {textDecorationColor} from './property-descriptors/text-decoration-color';\nimport {textDecorationLine} from './property-descriptors/text-decoration-line';\nimport {isLengthPercentage, LengthPercentage, ZERO_LENGTH} from './types/length-percentage';\nimport {fontFamily} from './property-descriptors/font-family';\nimport {fontSize} from './property-descriptors/font-size';\nimport {isLength} from './types/length';\nimport {fontWeight} from './property-descriptors/font-weight';\nimport {fontVariant} from './property-descriptors/font-variant';\nimport {fontStyle} from './property-descriptors/font-style';\nimport {contains} from '../core/bitwise';\nimport {content} from './property-descriptors/content';\nimport {counterIncrement} from './property-descriptors/counter-increment';\nimport {counterReset} from './property-descriptors/counter-reset';\nimport {duration} from './property-descriptors/duration';\nimport {quotes} from './property-descriptors/quotes';\nimport {boxShadow} from './property-descriptors/box-shadow';\nimport {paintOrder} from './property-descriptors/paint-order';\nimport {webkitTextStrokeColor} from './property-descriptors/webkit-text-stroke-color';\nimport {webkitTextStrokeWidth} from './property-descriptors/webkit-text-stroke-width';\nimport {Context} from '../core/context';\n\nexport class CSSParsedDeclaration {\n animationDuration: ReturnType<typeof duration.parse>;\n backgroundClip: ReturnType<typeof backgroundClip.parse>;\n backgroundColor: Color;\n backgroundImage: ReturnType<typeof backgroundImage.parse>;\n backgroundOrigin: ReturnType<typeof backgroundOrigin.parse>;\n backgroundPosition: ReturnType<typeof backgroundPosition.parse>;\n backgroundRepeat: ReturnType<typeof backgroundRepeat.parse>;\n backgroundSize: ReturnType<typeof backgroundSize.parse>;\n borderTopColor: Color;\n borderRightColor: Color;\n borderBottomColor: Color;\n borderLeftColor: Color;\n borderTopLeftRadius: ReturnType<typeof borderTopLeftRadius.parse>;\n borderTopRightRadius: ReturnType<typeof borderTopRightRadius.parse>;\n borderBottomRightRadius: ReturnType<typeof borderBottomRightRadius.parse>;\n borderBottomLeftRadius: ReturnType<typeof borderBottomLeftRadius.parse>;\n borderTopStyle: ReturnType<typeof borderTopStyle.parse>;\n borderRightStyle: ReturnType<typeof borderRightStyle.parse>;\n borderBottomStyle: ReturnType<typeof borderBottomStyle.parse>;\n borderLeftStyle: ReturnType<typeof borderLeftStyle.parse>;\n borderTopWidth: ReturnType<typeof borderTopWidth.parse>;\n borderRightWidth: ReturnType<typeof borderRightWidth.parse>;\n borderBottomWidth: ReturnType<typeof borderBottomWidth.parse>;\n borderLeftWidth: ReturnType<typeof borderLeftWidth.parse>;\n boxShadow: ReturnType<typeof boxShadow.parse>;\n color: Color;\n direction: ReturnType<typeof direction.parse>;\n display: ReturnType<typeof display.parse>;\n float: ReturnType<typeof float.parse>;\n fontFamily: ReturnType<typeof fontFamily.parse>;\n fontSize: LengthPercentage;\n fontStyle: ReturnType<typeof fontStyle.parse>;\n fontVariant: ReturnType<typeof fontVariant.parse>;\n fontWeight: ReturnType<typeof fontWeight.parse>;\n letterSpacing: ReturnType<typeof letterSpacing.parse>;\n lineBreak: ReturnType<typeof lineBreak.parse>;\n lineHeight: CSSValue;\n listStyleImage: ReturnType<typeof listStyleImage.parse>;\n listStylePosition: ReturnType<typeof listStylePosition.parse>;\n listStyleType: ReturnType<typeof listStyleType.parse>;\n marginTop: CSSValue;\n marginRight: CSSValue;\n marginBottom: CSSValue;\n marginLeft: CSSValue;\n opacity: ReturnType<typeof opacity.parse>;\n overflowX: OVERFLOW;\n overflowY: OVERFLOW;\n overflowWrap: ReturnType<typeof overflowWrap.parse>;\n paddingTop: LengthPercentage;\n paddingRight: LengthPercentage;\n paddingBottom: LengthPercentage;\n paddingLeft: LengthPercentage;\n paintOrder: ReturnType<typeof paintOrder.parse>;\n position: ReturnType<typeof position.parse>;\n textAlign: ReturnType<typeof textAlign.parse>;\n textDecorationColor: Color;\n textDecorationLine: ReturnType<typeof textDecorationLine.parse>;\n textShadow: ReturnType<typeof textShadow.parse>;\n textTransform: ReturnType<typeof textTransform.parse>;\n transform: ReturnType<typeof transform.parse>;\n transformOrigin: ReturnType<typeof transformOrigin.parse>;\n visibility: ReturnType<typeof visibility.parse>;\n webkitTextStrokeColor: Color;\n webkitTextStrokeWidth: ReturnType<typeof webkitTextStrokeWidth.parse>;\n wordBreak: ReturnType<typeof wordBreak.parse>;\n zIndex: ReturnType<typeof zIndex.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.animationDuration = parse(context, duration, declaration.animationDuration);\n this.backgroundClip = parse(context, backgroundClip, declaration.backgroundClip);\n this.backgroundColor = parse(context, backgroundColor, declaration.backgroundColor);\n this.backgroundImage = parse(context, backgroundImage, declaration.backgroundImage);\n this.backgroundOrigin = parse(context, backgroundOrigin, declaration.backgroundOrigin);\n this.backgroundPosition = parse(context, backgroundPosition, declaration.backgroundPosition);\n this.backgroundRepeat = parse(context, backgroundRepeat, declaration.backgroundRepeat);\n this.backgroundSize = parse(context, backgroundSize, declaration.backgroundSize);\n this.borderTopColor = parse(context, borderTopColor, declaration.borderTopColor);\n this.borderRightColor = parse(context, borderRightColor, declaration.borderRightColor);\n this.borderBottomColor = parse(context, borderBottomColor, declaration.borderBottomColor);\n this.borderLeftColor = parse(context, borderLeftColor, declaration.borderLeftColor);\n this.borderTopLeftRadius = parse(context, borderTopLeftRadius, declaration.borderTopLeftRadius);\n this.borderTopRightRadius = parse(context, borderTopRightRadius, declaration.borderTopRightRadius);\n this.borderBottomRightRadius = parse(context, borderBottomRightRadius, declaration.borderBottomRightRadius);\n this.borderBottomLeftRadius = parse(context, borderBottomLeftRadius, declaration.borderBottomLeftRadius);\n this.borderTopStyle = parse(context, borderTopStyle, declaration.borderTopStyle);\n this.borderRightStyle = parse(context, borderRightStyle, declaration.borderRightStyle);\n this.borderBottomStyle = parse(context, borderBottomStyle, declaration.borderBottomStyle);\n this.borderLeftStyle = parse(context, borderLeftStyle, declaration.borderLeftStyle);\n this.borderTopWidth = parse(context, borderTopWidth, declaration.borderTopWidth);\n this.borderRightWidth = parse(context, borderRightWidth, declaration.borderRightWidth);\n this.borderBottomWidth = parse(context, borderBottomWidth, declaration.borderBottomWidth);\n this.borderLeftWidth = parse(context, borderLeftWidth, declaration.borderLeftWidth);\n this.boxShadow = parse(context, boxShadow, declaration.boxShadow);\n this.color = parse(context, color, declaration.color);\n this.direction = parse(context, direction, declaration.direction);\n this.display = parse(context, display, declaration.display);\n this.float = parse(context, float, declaration.cssFloat);\n this.fontFamily = parse(context, fontFamily, declaration.fontFamily);\n this.fontSize = parse(context, fontSize, declaration.fontSize);\n this.fontStyle = parse(context, fontStyle, declaration.fontStyle);\n this.fontVariant = parse(context, fontVariant, declaration.fontVariant);\n this.fontWeight = parse(context, fontWeight, declaration.fontWeight);\n this.letterSpacing = parse(context, letterSpacing, declaration.letterSpacing);\n this.lineBreak = parse(context, lineBreak, declaration.lineBreak);\n this.lineHeight = parse(context, lineHeight, declaration.lineHeight);\n this.listStyleImage = parse(context, listStyleImage, declaration.listStyleImage);\n this.listStylePosition = parse(context, listStylePosition, declaration.listStylePosition);\n this.listStyleType = parse(context, listStyleType, declaration.listStyleType);\n this.marginTop = parse(context, marginTop, declaration.marginTop);\n this.marginRight = parse(context, marginRight, declaration.marginRight);\n this.marginBottom = parse(context, marginBottom, declaration.marginBottom);\n this.marginLeft = parse(context, marginLeft, declaration.marginLeft);\n this.opacity = parse(context, opacity, declaration.opacity);\n const overflowTuple = parse(context, overflow, declaration.overflow);\n this.overflowX = overflowTuple[0];\n this.overflowY = overflowTuple[overflowTuple.length > 1 ? 1 : 0];\n this.overflowWrap = parse(context, overflowWrap, declaration.overflowWrap);\n this.paddingTop = parse(context, paddingTop, declaration.paddingTop);\n this.paddingRight = parse(context, paddingRight, declaration.paddingRight);\n this.paddingBottom = parse(context, paddingBottom, declaration.paddingBottom);\n this.paddingLeft = parse(context, paddingLeft, declaration.paddingLeft);\n this.paintOrder = parse(context, paintOrder, declaration.paintOrder);\n this.position = parse(context, position, declaration.position);\n this.textAlign = parse(context, textAlign, declaration.textAlign);\n this.textDecorationColor = parse(\n context,\n textDecorationColor,\n declaration.textDecorationColor ?? declaration.color\n );\n this.textDecorationLine = parse(\n context,\n textDecorationLine,\n declaration.textDecorationLine ?? declaration.textDecoration\n );\n this.textShadow = parse(context, textShadow, declaration.textShadow);\n this.textTransform = parse(context, textTransform, declaration.textTransform);\n this.transform = parse(context, transform, declaration.transform);\n this.transformOrigin = parse(context, transformOrigin, declaration.transformOrigin);\n this.visibility = parse(context, visibility, declaration.visibility);\n this.webkitTextStrokeColor = parse(context, webkitTextStrokeColor, declaration.webkitTextStrokeColor);\n this.webkitTextStrokeWidth = parse(context, webkitTextStrokeWidth, declaration.webkitTextStrokeWidth);\n this.wordBreak = parse(context, wordBreak, declaration.wordBreak);\n this.zIndex = parse(context, zIndex, declaration.zIndex);\n }\n\n isVisible(): boolean {\n return this.display > 0 && this.opacity > 0 && this.visibility === VISIBILITY.VISIBLE;\n }\n\n isTransparent(): boolean {\n return isTransparent(this.backgroundColor);\n }\n\n isTransformed(): boolean {\n return this.transform !== null;\n }\n\n isPositioned(): boolean {\n return this.position !== POSITION.STATIC;\n }\n\n isPositionedWithZIndex(): boolean {\n return this.isPositioned() && !this.zIndex.auto;\n }\n\n isFloating(): boolean {\n return this.float !== FLOAT.NONE;\n }\n\n isInlineLevel(): boolean {\n return (\n contains(this.display, DISPLAY.INLINE) ||\n contains(this.display, DISPLAY.INLINE_BLOCK) ||\n contains(this.display, DISPLAY.INLINE_FLEX) ||\n contains(this.display, DISPLAY.INLINE_GRID) ||\n contains(this.display, DISPLAY.INLINE_LIST_ITEM) ||\n contains(this.display, DISPLAY.INLINE_TABLE)\n );\n }\n}\n\nexport class CSSParsedPseudoDeclaration {\n content: ReturnType<typeof content.parse>;\n quotes: ReturnType<typeof quotes.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.content = parse(context, content, declaration.content);\n this.quotes = parse(context, quotes, declaration.quotes);\n }\n}\n\nexport class CSSParsedCounterDeclaration {\n counterIncrement: ReturnType<typeof counterIncrement.parse>;\n counterReset: ReturnType<typeof counterReset.parse>;\n\n constructor(context: Context, declaration: CSSStyleDeclaration) {\n this.counterIncrement = parse(context, counterIncrement, declaration.counterIncrement);\n this.counterReset = parse(context, counterReset, declaration.counterReset);\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parse = (context: Context, descriptor: CSSPropertyDescriptor<any>, style?: string | null) => {\n const tokenizer = new Tokenizer();\n const value = style !== null && typeof style !== 'undefined' ? style.toString() : descriptor.initialValue;\n tokenizer.write(value);\n const parser = new Parser(tokenizer.read());\n switch (descriptor.type) {\n case PropertyDescriptorParsingType.IDENT_VALUE:\n const token = parser.parseComponentValue();\n return descriptor.parse(context, isIdentToken(token) ? token.value : descriptor.initialValue);\n case PropertyDescriptorParsingType.VALUE:\n return descriptor.parse(context, parser.parseComponentValue());\n case PropertyDescriptorParsingType.LIST:\n return descriptor.parse(context, parser.parseComponentValues());\n case PropertyDescriptorParsingType.TOKEN_VALUE:\n return parser.parseComponentValue();\n case PropertyDescriptorParsingType.TYPE_VALUE:\n switch (descriptor.format) {\n case 'angle':\n return angle.parse(context, parser.parseComponentValue());\n case 'color':\n return colorType.parse(context, parser.parseComponentValue());\n case 'image':\n return image.parse(context, parser.parseComponentValue());\n case 'length':\n const length = parser.parseComponentValue();\n return isLength(length) ? length : ZERO_LENGTH;\n case 'length-percentage':\n const value = parser.parseComponentValue();\n return isLengthPercentage(value) ? value : ZERO_LENGTH;\n case 'time':\n return time.parse(context, parser.parseComponentValue());\n }\n break;\n }\n};\n", "const elementDebuggerAttribute = 'data-html2canvas-debug';\nexport const enum DebuggerType {\n NONE,\n ALL,\n CLONE,\n PARSE,\n RENDER\n}\n\nconst getElementDebugType = (element: Element): DebuggerType => {\n const attribute = element.getAttribute(elementDebuggerAttribute);\n switch (attribute) {\n case 'all':\n return DebuggerType.ALL;\n case 'clone':\n return DebuggerType.CLONE;\n case 'parse':\n return DebuggerType.PARSE;\n case 'render':\n return DebuggerType.RENDER;\n default:\n return DebuggerType.NONE;\n }\n};\n\nexport const isDebugging = (element: Element, type: Omit<DebuggerType, DebuggerType.NONE>): boolean => {\n const elementType = getElementDebugType(element);\n return elementType === DebuggerType.ALL || type === elementType;\n};\n", "import {CSSParsedDeclaration} from '../css/index';\nimport {TextContainer} from './text-container';\nimport {Bounds, parseBounds} from '../css/layout/bounds';\nimport {isHTMLElementNode} from './node-parser';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport const enum FLAGS {\n CREATES_STACKING_CONTEXT = 1 << 1,\n CREATES_REAL_STACKING_CONTEXT = 1 << 2,\n IS_LIST_OWNER = 1 << 3,\n DEBUG_RENDER = 1 << 4\n}\n\nexport class ElementContainer {\n readonly styles: CSSParsedDeclaration;\n readonly textNodes: TextContainer[] = [];\n readonly elements: ElementContainer[] = [];\n bounds: Bounds;\n flags = 0;\n\n constructor(protected readonly context: Context, element: Element) {\n if (isDebugging(element, DebuggerType.PARSE)) {\n debugger;\n }\n\n this.styles = new CSSParsedDeclaration(context, window.getComputedStyle(element, null));\n\n if (isHTMLElementNode(element)) {\n if (this.styles.animationDuration.some((duration) => duration > 0)) {\n element.style.animationDuration = '0s';\n }\n\n if (this.styles.transform !== null) {\n // getBoundingClientRect takes transforms into account\n element.style.transform = 'none';\n }\n }\n\n this.bounds = parseBounds(this.context, element);\n\n if (isDebugging(element, DebuggerType.RENDER)) {\n this.flags |= FLAGS.DEBUG_RENDER;\n }\n }\n}\n", "export const base64 =\n 'AAAAAAAAAAAAEA4AGBkAAFAaAAACAAAAAAAIABAAGAAwADgACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAAQABIAEQATAAIABAACAAQAAgAEAAIABAAVABcAAgAEAAIABAACAAQAGAAaABwAHgAgACIAI4AlgAIABAAmwCjAKgAsAC2AL4AvQDFAMoA0gBPAVYBWgEIAAgACACMANoAYgFkAWwBdAF8AX0BhQGNAZUBlgGeAaMBlQGWAasBswF8AbsBwwF0AcsBYwHTAQgA2wG/AOMBdAF8AekB8QF0AfkB+wHiAHQBfAEIAAMC5gQIAAsCEgIIAAgAFgIeAggAIgIpAggAMQI5AkACygEIAAgASAJQAlgCYAIIAAgACAAKBQoFCgUTBRMFGQUrBSsFCAAIAAgACAAIAAgACAAIAAgACABdAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABoAmgCrwGvAQgAbgJ2AggAHgEIAAgACADnAXsCCAAIAAgAgwIIAAgACAAIAAgACACKAggAkQKZAggAPADJAAgAoQKkAqwCsgK6AsICCADJAggA0AIIAAgACAAIANYC3gIIAAgACAAIAAgACABAAOYCCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAkASoB+QIEAAgACAA8AEMCCABCBQgACABJBVAFCAAIAAgACAAIAAgACAAIAAgACABTBVoFCAAIAFoFCABfBWUFCAAIAAgACAAIAAgAbQUIAAgACAAIAAgACABzBXsFfQWFBYoFigWKBZEFigWKBYoFmAWfBaYFrgWxBbkFCAAIAAgACAAIAAgACAAIAAgACAAIAMEFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAMgFCADQBQgACAAIAAgACAAIAAgACAAIAAgACAAIAO4CCAAIAAgAiQAIAAgACABAAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAD0AggACAD8AggACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIANYFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAMDvwAIAAgAJAIIAAgACAAIAAgACAAIAAgACwMTAwgACAB9BOsEGwMjAwgAKwMyAwsFYgE3A/MEPwMIAEUDTQNRAwgAWQOsAGEDCAAIAAgACAAIAAgACABpAzQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFOgU0BTUFNgU3BTgFOQU6BTQFNQU2BTcFOAU5BToFNAU1BTYFNwU4BTkFIQUoBSwFCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABtAwgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABMAEwACAAIAAgACAAIABgACAAIAAgACAC/AAgACAAyAQgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACAAIAAwAAgACAAIAAgACAAIAAgACAAIAAAARABIAAgACAAIABQASAAIAAgAIABwAEAAjgCIABsAqAC2AL0AigDQAtwC+IJIQqVAZUBWQqVAZUBlQGVAZUBlQGrC5UBlQGVAZUBlQGVAZUBlQGVAXsKlQGVAbAK6wsrDGUMpQzlDJUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAZUBlQGVAfAKAAuZA64AtwCJALoC6ADwAAgAuACgA/oEpgO6AqsD+AAIAAgAswMIAAgACAAIAIkAuwP5AfsBwwPLAwgACAAIAAgACADRA9kDCAAIAOED6QMIAAgACAAIAAgACADuA/YDCAAIAP4DyQAIAAgABgQIAAgAXQAOBAgACAAIAAgACAAIABMECAAIAAgACAAIAAgACAD8AAQBCAAIAAgAGgQiBCoECAExBAgAEAEIAAgACAAIAAgACAAIAAgACAAIAAgACAA4BAgACABABEYECAAIAAgATAQYAQgAVAQIAAgACAAIAAgACAAIAAgACAAIAFoECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAOQEIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAB+BAcACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAEABhgSMBAgACAAIAAgAlAQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAwAEAAQABAADAAMAAwADAAQABAAEAAQABAAEAAQABHATAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAdQMIAAgACAAIAAgACAAIAMkACAAIAAgAfQMIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACACFA4kDCAAIAAgACAAIAOcBCAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAIcDCAAIAAgACAAIAAgACAAIAAgACAAIAJEDCAAIAAgACADFAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABgBAgAZgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAbAQCBXIECAAIAHkECAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACABAAJwEQACjBKoEsgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAC6BMIECAAIAAgACAAIAAgACABmBAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAxwQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAGYECAAIAAgAzgQIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBd0FXwUIAOIF6gXxBYoF3gT5BQAGCAaKBYoFigWKBYoFigWKBYoFigWKBYoFigXWBIoFigWKBYoFigWKBYoFigWKBYsFEAaKBYoFigWKBYoFigWKBRQGCACKBYoFigWKBQgACAAIANEECAAIABgGigUgBggAJgYIAC4GMwaKBYoF0wQ3Bj4GigWKBYoFigWKBYoFigWKBYoFigWKBYoFigUIAAgACAAIAAgACAAIAAgAigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWKBYoFigWLBf///////wQABAAEAAQABAAEAAQABAAEAAQAAwAEAAQAAgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAQADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUAAAAFAAUAAAAFAAUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUAAQAAAAUABQAFAAUABQAFAAAAAAAFAAUAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAFAAUAAQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAAABwAHAAcAAAAHAAcABwAFAAEAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAcABwAFAAUAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQABAAAAAAAAAAAAAAAFAAUABQAFAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAHAAcAAAAHAAcAAAAAAAUABQAHAAUAAQAHAAEABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwABAAUABQAFAAUAAAAAAAAAAAAAAAEAAQABAAEAAQABAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABQANAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAABQAHAAUABQAFAAAAAAAAAAcABQAFAAUABQAFAAQABAAEAAQABAAEAAQABAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUAAAAFAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAUAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAcABwAFAAcABwAAAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUABwAHAAUABQAFAAUAAAAAAAcABwAAAAAABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAABQAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAAAAAAAAAAABQAFAAAAAAAFAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAFAAUABQAFAAUAAAAFAAUABwAAAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABwAFAAUABQAFAAAAAAAHAAcAAAAAAAcABwAFAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAAAAAAAAAHAAcABwAAAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAABQAHAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAUABQAFAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAHAAcABQAHAAcAAAAFAAcABwAAAAcABwAFAAUAAAAAAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAFAAcABwAFAAUABQAAAAUAAAAHAAcABwAHAAcABwAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAHAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABwAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAUAAAAFAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABwAFAAUABQAFAAUAAAAFAAUAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABwAFAAUABQAFAAUABQAAAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABQAFAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABQAFAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAHAAUABQAFAAUABQAFAAUABwAHAAcABwAHAAcABwAHAAUABwAHAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABwAHAAcABwAFAAUABwAHAAcAAAAAAAAAAAAHAAcABQAHAAcABwAHAAcABwAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAcABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAUABQAFAAUABQAFAAUAAAAFAAAABQAAAAAABQAFAAUABQAFAAUABQAFAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAFAAUAAAAAAAUABQAFAAUABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABwAFAAcABwAHAAcABwAFAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAUABQAFAAUABwAHAAUABQAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABQAFAAcABwAHAAUABwAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAcABQAFAAUABQAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAAAAAABwAFAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAAAAAAAAAFAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAUABQAHAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAUABQAFAAUABQAHAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAcABwAFAAUABQAFAAcABwAFAAUABwAHAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAFAAcABwAFAAUABwAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAFAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAFAAUABQAAAAAABQAFAAAAAAAAAAAAAAAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAcABwAAAAAAAAAAAAAABwAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAcABwAFAAcABwAAAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAFAAUABQAAAAUABQAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABwAFAAUABQAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAUABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAHAAcABQAHAAUABQAAAAAAAAAAAAAAAAAFAAAABwAHAAcABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAHAAcABwAAAAAABwAHAAAAAAAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABwAHAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAFAAUABwAFAAcABwAFAAcABQAFAAcABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAHAAcABQAFAAUABQAAAAAABwAHAAcABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAHAAUABQAFAAUABQAFAAUABQAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABwAFAAcABwAFAAUABQAFAAUABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAcABwAFAAUABQAFAAcABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAUABQAFAAUABQAHAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAFAAUABQAFAAAAAAAFAAUABwAHAAcABwAFAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABwAHAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAcABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUAAAAHAAUABQAFAAUABQAFAAUABwAFAAUABwAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUAAAAAAAAABQAAAAUABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAcABwAHAAcAAAAFAAUAAAAHAAcABQAHAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAAAAUABQAFAAAAAAAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAFAAUABQAAAAAABQAFAAUABQAFAAUABQAAAAUABQAAAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAUABQAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAFAAUABQAFAAUABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAFAAUABQAFAAUADgAOAA4ADgAOAA4ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAA8ADwAPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAcABwAHAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAMAAwADAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAAAAAAAAAAAAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAKAAoACgAAAAAAAAAAAAsADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwACwAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAMAAwADAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAADgAOAA4AAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAAAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4AAAAOAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAAAAAAAAAAAA4AAAAOAAAAAAAAAAAADgAOAA4AAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAAA4ADgAOAA4ADgAOAA4ADgAOAAAADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4ADgAOAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAOAA4ADgAOAA4AAAAAAAAAAAAAAAAAAAAAAA4ADgAOAA4ADgAOAA4ADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAOAA4ADgAOAA4ADgAAAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4ADgAOAA4AAAAAAAAAAAA=';\nexport const byteLength = 19616;\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const decode = (base64: string): ArrayBuffer | number[] => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const buffer =\n typeof ArrayBuffer !== 'undefined' &&\n typeof Uint8Array !== 'undefined' &&\n typeof Uint8Array.prototype.slice !== 'undefined'\n ? new ArrayBuffer(bufferLength)\n : new Array(bufferLength);\n const bytes = Array.isArray(buffer) ? buffer : new Uint8Array(buffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return buffer;\n};\n\nexport const polyUint16Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 2) {\n bytes.push((buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n\nexport const polyUint32Array = (buffer: number[]): number[] => {\n const length = buffer.length;\n const bytes = [];\n for (let i = 0; i < length; i += 4) {\n bytes.push((buffer[i + 3] << 24) | (buffer[i + 2] << 16) | (buffer[i + 1] << 8) | buffer[i]);\n }\n return bytes;\n};\n", "import {decode, polyUint16Array, polyUint32Array} from './Util';\n\nexport type int = number;\n\n/** Shift size for getting the index-2 table offset. */\nexport const UTRIE2_SHIFT_2 = 5;\n\n/** Shift size for getting the index-1 table offset. */\nexport const UTRIE2_SHIFT_1 = 6 + 5;\n\n/**\n * Shift size for shifting left the index array values.\n * Increases possible data size with 16-bit index values at the cost\n * of compactability.\n * This requires data blocks to be aligned by UTRIE2_DATA_GRANULARITY.\n */\nexport const UTRIE2_INDEX_SHIFT = 2;\n\n/**\n * Difference between the two shift sizes,\n * for getting an index-1 offset from an index-2 offset. 6=11-5\n */\nexport const UTRIE2_SHIFT_1_2 = UTRIE2_SHIFT_1 - UTRIE2_SHIFT_2;\n\n/**\n * The part of the index-2 table for U+D800..U+DBFF stores values for\n * lead surrogate code _units_ not code _points_.\n * Values for lead surrogate code _points_ are indexed with this portion of the table.\n * Length=32=0x20=0x400>>UTRIE2_SHIFT_2. (There are 1024=0x400 lead surrogates.)\n */\nexport const UTRIE2_LSCP_INDEX_2_OFFSET = 0x10000 >> UTRIE2_SHIFT_2;\n\n/** Number of entries in a data block. 32=0x20 */\nexport const UTRIE2_DATA_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_2;\n/** Mask for getting the lower bits for the in-data-block offset. */\nexport const UTRIE2_DATA_MASK = UTRIE2_DATA_BLOCK_LENGTH - 1;\n\nexport const UTRIE2_LSCP_INDEX_2_LENGTH = 0x400 >> UTRIE2_SHIFT_2;\n/** Count the lengths of both BMP pieces. 2080=0x820 */\nexport const UTRIE2_INDEX_2_BMP_LENGTH = UTRIE2_LSCP_INDEX_2_OFFSET + UTRIE2_LSCP_INDEX_2_LENGTH;\n/**\n * The 2-byte UTF-8 version of the index-2 table follows at offset 2080=0x820.\n * Length 32=0x20 for lead bytes C0..DF, regardless of UTRIE2_SHIFT_2.\n */\nexport const UTRIE2_UTF8_2B_INDEX_2_OFFSET = UTRIE2_INDEX_2_BMP_LENGTH;\nexport const UTRIE2_UTF8_2B_INDEX_2_LENGTH = 0x800 >> 6; /* U+0800 is the first code point after 2-byte UTF-8 */\n/**\n * The index-1 table, only used for supplementary code points, at offset 2112=0x840.\n * Variable length, for code points up to highStart, where the last single-value range starts.\n * Maximum length 512=0x200=0x100000>>UTRIE2_SHIFT_1.\n * (For 0x100000 supplementary code points U+10000..U+10ffff.)\n *\n * The part of the index-2 table for supplementary code points starts\n * after this index-1 table.\n *\n * Both the index-1 table and the following part of the index-2 table\n * are omitted completely if there is only BMP data.\n */\nexport const UTRIE2_INDEX_1_OFFSET = UTRIE2_UTF8_2B_INDEX_2_OFFSET + UTRIE2_UTF8_2B_INDEX_2_LENGTH;\n\n/**\n * Number of index-1 entries for the BMP. 32=0x20\n * This part of the index-1 table is omitted from the serialized form.\n */\nexport const UTRIE2_OMITTED_BMP_INDEX_1_LENGTH = 0x10000 >> UTRIE2_SHIFT_1;\n\n/** Number of entries in an index-2 block. 64=0x40 */\nexport const UTRIE2_INDEX_2_BLOCK_LENGTH = 1 << UTRIE2_SHIFT_1_2;\n/** Mask for getting the lower bits for the in-index-2-block offset. */\nexport const UTRIE2_INDEX_2_MASK = UTRIE2_INDEX_2_BLOCK_LENGTH - 1;\n\nconst slice16 = (view: number[] | Uint16Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint16Array(Array.prototype.slice.call(view, start, end));\n};\n\nconst slice32 = (view: number[] | Uint32Array, start: number, end?: number) => {\n if (view.slice) {\n return view.slice(start, end);\n }\n\n return new Uint32Array(Array.prototype.slice.call(view, start, end));\n};\n\nexport const createTrieFromBase64 = (base64: string, _byteLength: number): Trie => {\n const buffer = decode(base64);\n const view32 = Array.isArray(buffer) ? polyUint32Array(buffer) : new Uint32Array(buffer);\n const view16 = Array.isArray(buffer) ? polyUint16Array(buffer) : new Uint16Array(buffer);\n const headerLength = 24;\n\n const index = slice16(view16, headerLength / 2, view32[4] / 2);\n const data =\n view32[5] === 2\n ? slice16(view16, (headerLength + view32[4]) / 2)\n : slice32(view32, Math.ceil((headerLength + view32[4]) / 4));\n\n return new Trie(view32[0], view32[1], view32[2], view32[3], index, data);\n};\n\nexport class Trie {\n initialValue: int;\n errorValue: int;\n highStart: int;\n highValueIndex: int;\n index: Uint16Array | number[];\n data: Uint32Array | Uint16Array | number[];\n\n constructor(\n initialValue: int,\n errorValue: int,\n highStart: int,\n highValueIndex: int,\n index: Uint16Array | number[],\n data: Uint32Array | Uint16Array | number[]\n ) {\n this.initialValue = initialValue;\n this.errorValue = errorValue;\n this.highStart = highStart;\n this.highValueIndex = highValueIndex;\n this.index = index;\n this.data = data;\n }\n\n /**\n * Get the value for a code point as stored in the Trie.\n *\n * @param codePoint the code point\n * @return the value\n */\n get(codePoint: number): number {\n let ix;\n if (codePoint >= 0) {\n if (codePoint < 0x0d800 || (codePoint > 0x0dbff && codePoint <= 0x0ffff)) {\n // Ordinary BMP code point, excluding leading surrogates.\n // BMP uses a single level lookup. BMP index starts at offset 0 in the Trie2 index.\n // 16 bit data is stored in the index array itself.\n ix = this.index[codePoint >> UTRIE2_SHIFT_2];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint <= 0xffff) {\n // Lead Surrogate Code Point. A Separate index section is stored for\n // lead surrogate code units and code points.\n // The main index has the code unit data.\n // For this function, we need the code point data.\n // Note: this expression could be refactored for slightly improved efficiency, but\n // surrogate code points will be so rare in practice that it's not worth it.\n ix = this.index[UTRIE2_LSCP_INDEX_2_OFFSET + ((codePoint - 0xd800) >> UTRIE2_SHIFT_2)];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n\n if (codePoint < this.highStart) {\n // Supplemental code point, use two-level lookup.\n ix = UTRIE2_INDEX_1_OFFSET - UTRIE2_OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> UTRIE2_SHIFT_1);\n ix = this.index[ix];\n ix += (codePoint >> UTRIE2_SHIFT_2) & UTRIE2_INDEX_2_MASK;\n ix = this.index[ix];\n ix = (ix << UTRIE2_INDEX_SHIFT) + (codePoint & UTRIE2_DATA_MASK);\n return this.data[ix];\n }\n if (codePoint <= 0x10ffff) {\n return this.data[this.highValueIndex];\n }\n }\n\n // Fall through. The code point is outside of the legal range of 0..0x10ffff.\n return this.errorValue;\n }\n}\n", "const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n", "import {base64, byteLength} from './grapheme-break-trie';\nimport {createTrieFromBase64} from 'utrie';\n\nconst Other = 0;\nconst Prepend = 1;\nconst CR = 2;\nconst LF = 3;\nconst Control = 4;\nconst Extend = 5;\nconst Regional_Indicator = 6;\nconst SpacingMark = 7;\nconst L = 8;\nconst V = 9;\nconst T = 10;\nconst LV = 11;\nconst LVT = 12;\nconst ZWJ = 13;\nconst Extended_Pictographic = 14;\nconst RI = 15;\n\nexport const classes: {[key: string]: number} = {\n Other,\n Prepend,\n CR,\n LF,\n Control,\n Extend,\n Regional_Indicator,\n SpacingMark,\n L,\n V,\n T,\n LV,\n LVT,\n ZWJ,\n Extended_Pictographic,\n RI,\n};\n\nexport const toCodePoints = (str: string): number[] => {\n const codePoints = [];\n let i = 0;\n const length = str.length;\n while (i < length) {\n const value = str.charCodeAt(i++);\n if (value >= 0xd800 && value <= 0xdbff && i < length) {\n const extra = str.charCodeAt(i++);\n if ((extra & 0xfc00) === 0xdc00) {\n codePoints.push(((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000);\n } else {\n codePoints.push(value);\n i--;\n }\n } else {\n codePoints.push(value);\n }\n }\n return codePoints;\n};\n\nexport const fromCodePoint = (...codePoints: number[]): string => {\n if (String.fromCodePoint) {\n return String.fromCodePoint(...codePoints);\n }\n\n const length = codePoints.length;\n if (!length) {\n return '';\n }\n\n const codeUnits = [];\n\n let index = -1;\n let result = '';\n while (++index < length) {\n let codePoint = codePoints[index];\n if (codePoint <= 0xffff) {\n codeUnits.push(codePoint);\n } else {\n codePoint -= 0x10000;\n codeUnits.push((codePoint >> 10) + 0xd800, (codePoint % 0x400) + 0xdc00);\n }\n if (index + 1 === length || codeUnits.length > 0x4000) {\n result += String.fromCharCode(...codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n};\n\nexport const UnicodeTrie = createTrieFromBase64(base64, byteLength);\n\nexport const BREAK_NOT_ALLOWED = '×';\nexport const BREAK_ALLOWED = '÷';\n\nexport type BREAK_OPPORTUNITIES = typeof BREAK_NOT_ALLOWED | typeof BREAK_ALLOWED;\n\nexport const codePointToClass = (codePoint: number): number => UnicodeTrie.get(codePoint);\n\nconst _graphemeBreakAtIndex = (_codePoints: number[], classTypes: number[], index: number): BREAK_OPPORTUNITIES => {\n let prevIndex = index - 2;\n let prev = classTypes[prevIndex];\n const current = classTypes[index - 1];\n const next = classTypes[index];\n // GB3 Do not break between a CR and LF\n if (current === CR && next === LF) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB4 Otherwise, break before and after controls.\n if (current === CR || current === LF || current === Control) {\n return BREAK_ALLOWED;\n }\n\n // GB5\n if (next === CR || next === LF || next === Control) {\n return BREAK_ALLOWED;\n }\n\n // Do not break Hangul syllable sequences.\n // GB6\n if (current === L && [L, V, LV, LVT].indexOf(next) !== -1) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB7\n if ((current === LV || current === V) && (next === V || next === T)) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB8\n if ((current === LVT || current === T) && next === T) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9 Do not break before extending characters or ZWJ.\n if (next === ZWJ || next === Extend) {\n return BREAK_NOT_ALLOWED;\n }\n // Do not break before SpacingMarks, or after Prepend characters.\n // GB9a\n if (next === SpacingMark) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB9a\n if (current === Prepend) {\n return BREAK_NOT_ALLOWED;\n }\n\n // GB11 Do not break within emoji modifier sequences or emoji zwj sequences.\n if (current === ZWJ && next === Extended_Pictographic) {\n while (prev === Extend) {\n prev = classTypes[--prevIndex];\n }\n if (prev === Extended_Pictographic) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n // GB12 Do not break within emoji flag sequences.\n // That is, do not break between regional indicator (RI) symbols\n // if there is an odd number of RI characters before the break point.\n if (current === RI && next === RI) {\n let countRI = 0;\n while (prev === RI) {\n countRI++;\n prev = classTypes[--prevIndex];\n }\n if (countRI % 2 === 0) {\n return BREAK_NOT_ALLOWED;\n }\n }\n\n return BREAK_ALLOWED;\n};\n\nexport const graphemeBreakAtIndex = (codePoints: number[], index: number): BREAK_OPPORTUNITIES => {\n // GB1 Break at the start and end of text, unless the text is empty.\n if (index === 0) {\n return BREAK_ALLOWED;\n }\n\n // GB2\n if (index >= codePoints.length) {\n return BREAK_ALLOWED;\n }\n\n const classTypes = codePoints.map(codePointToClass);\n return _graphemeBreakAtIndex(codePoints, classTypes, index);\n};\n\nexport const GraphemeBreaker = (str: string) => {\n const codePoints = toCodePoints(str);\n const length = codePoints.length;\n let index = 0;\n let lastEnd = 0;\n const classTypes = codePoints.map(codePointToClass);\n\n return {\n next: () => {\n if (index >= length) {\n return {done: true, value: null};\n }\n\n let graphemeBreak = BREAK_NOT_ALLOWED;\n while (\n index < length &&\n (graphemeBreak = _graphemeBreakAtIndex(codePoints, classTypes, ++index)) === BREAK_NOT_ALLOWED\n ) {}\n\n if (graphemeBreak !== BREAK_NOT_ALLOWED || index === length) {\n const value = fromCodePoint.apply(null, codePoints.slice(lastEnd, index));\n lastEnd = index;\n return {value, done: false};\n }\n\n return {done: true, value: null};\n while (index < length) {}\n\n return {done: true, value: null};\n },\n };\n};\n\nexport const splitGraphemes = (str: string): string[] => {\n const breaker = GraphemeBreaker(str);\n\n const graphemes = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n graphemes.push(bk.value.slice());\n }\n }\n\n return graphemes;\n};\n", "import {fromCodePoint, toCodePoints} from 'css-line-break';\n\nconst testRangeBounds = (document: Document) => {\n const TEST_HEIGHT = 123;\n\n if (document.createRange) {\n const range = document.createRange();\n if (range.getBoundingClientRect) {\n const testElement = document.createElement('boundtest');\n testElement.style.height = `${TEST_HEIGHT}px`;\n testElement.style.display = 'block';\n document.body.appendChild(testElement);\n\n range.selectNode(testElement);\n const rangeBounds = range.getBoundingClientRect();\n const rangeHeight = Math.round(rangeBounds.height);\n document.body.removeChild(testElement);\n if (rangeHeight === TEST_HEIGHT) {\n return true;\n }\n }\n }\n\n return false;\n};\n\nconst testIOSLineBreak = (document: Document) => {\n const testElement = document.createElement('boundtest');\n testElement.style.width = '50px';\n testElement.style.display = 'block';\n testElement.style.fontSize = '12px';\n testElement.style.letterSpacing = '0px';\n testElement.style.wordSpacing = '0px';\n document.body.appendChild(testElement);\n const range = document.createRange();\n\n testElement.innerHTML = typeof ''.repeat === 'function' ? '&#128104;'.repeat(10) : '';\n\n const node = testElement.firstChild as Text;\n\n const textList = toCodePoints(node.data).map((i) => fromCodePoint(i));\n let offset = 0;\n let prev: DOMRect = {} as DOMRect;\n\n // ios 13 does not handle range getBoundingClientRect line changes correctly #2177\n const supports = textList.every((text, i) => {\n range.setStart(node, offset);\n range.setEnd(node, offset + text.length);\n const rect = range.getBoundingClientRect();\n\n offset += text.length;\n const boundAhead = rect.x > prev.x || rect.y > prev.y;\n\n prev = rect;\n if (i === 0) {\n return true;\n }\n\n return boundAhead;\n });\n\n document.body.removeChild(testElement);\n return supports;\n};\n\nconst testCORS = (): boolean => typeof new Image().crossOrigin !== 'undefined';\n\nconst testResponseType = (): boolean => typeof new XMLHttpRequest().responseType === 'string';\n\nconst testSVG = (document: Document): boolean => {\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return false;\n }\n\n img.src = `data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'></svg>`;\n\n try {\n ctx.drawImage(img, 0, 0);\n canvas.toDataURL();\n } catch (e) {\n return false;\n }\n return true;\n};\n\nconst isGreenPixel = (data: Uint8ClampedArray): boolean =>\n data[0] === 0 && data[1] === 255 && data[2] === 0 && data[3] === 255;\n\nconst testForeignObject = (document: Document): Promise<boolean> => {\n const canvas = document.createElement('canvas');\n const size = 100;\n canvas.width = size;\n canvas.height = size;\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return Promise.reject(false);\n }\n ctx.fillStyle = 'rgb(0, 255, 0)';\n ctx.fillRect(0, 0, size, size);\n\n const img = new Image();\n const greenImageSrc = canvas.toDataURL();\n img.src = greenImageSrc;\n const svg = createForeignObjectSVG(size, size, 0, 0, img);\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n return loadSerializedSVG(svg)\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n const data = ctx.getImageData(0, 0, size, size).data;\n ctx.fillStyle = 'red';\n ctx.fillRect(0, 0, size, size);\n\n const node = document.createElement('div');\n node.style.backgroundImage = `url(${greenImageSrc})`;\n node.style.height = `${size}px`;\n // Firefox 55 does not render inline <img /> tags\n return isGreenPixel(data)\n ? loadSerializedSVG(createForeignObjectSVG(size, size, 0, 0, node))\n : Promise.reject(false);\n })\n .then((img: HTMLImageElement) => {\n ctx.drawImage(img, 0, 0);\n // Edge does not render background-images\n return isGreenPixel(ctx.getImageData(0, 0, size, size).data);\n })\n .catch(() => false);\n};\n\nexport const createForeignObjectSVG = (\n width: number,\n height: number,\n x: number,\n y: number,\n node: Node\n): SVGForeignObjectElement => {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttributeNS(null, 'width', width.toString());\n svg.setAttributeNS(null, 'height', height.toString());\n\n foreignObject.setAttributeNS(null, 'width', '100%');\n foreignObject.setAttributeNS(null, 'height', '100%');\n foreignObject.setAttributeNS(null, 'x', x.toString());\n foreignObject.setAttributeNS(null, 'y', y.toString());\n foreignObject.setAttributeNS(null, 'externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n\n foreignObject.appendChild(node);\n\n return svg;\n};\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> => {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n};\n\nexport const FEATURES = {\n get SUPPORT_RANGE_BOUNDS(): boolean {\n 'use strict';\n const value = testRangeBounds(document);\n Object.defineProperty(FEATURES, 'SUPPORT_RANGE_BOUNDS', {value});\n return value;\n },\n get SUPPORT_WORD_BREAKING(): boolean {\n 'use strict';\n const value = FEATURES.SUPPORT_RANGE_BOUNDS && testIOSLineBreak(document);\n Object.defineProperty(FEATURES, 'SUPPORT_WORD_BREAKING', {value});\n return value;\n },\n get SUPPORT_SVG_DRAWING(): boolean {\n 'use strict';\n const value = testSVG(document);\n Object.defineProperty(FEATURES, 'SUPPORT_SVG_DRAWING', {value});\n return value;\n },\n get SUPPORT_FOREIGNOBJECT_DRAWING(): Promise<boolean> {\n 'use strict';\n const value =\n typeof Array.from === 'function' && typeof window.fetch === 'function'\n ? testForeignObject(document)\n : Promise.resolve(false);\n Object.defineProperty(FEATURES, 'SUPPORT_FOREIGNOBJECT_DRAWING', {value});\n return value;\n },\n get SUPPORT_CORS_IMAGES(): boolean {\n 'use strict';\n const value = testCORS();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_IMAGES', {value});\n return value;\n },\n get SUPPORT_RESPONSE_TYPE(): boolean {\n 'use strict';\n const value = testResponseType();\n Object.defineProperty(FEATURES, 'SUPPORT_RESPONSE_TYPE', {value});\n return value;\n },\n get SUPPORT_CORS_XHR(): boolean {\n 'use strict';\n const value = 'withCredentials' in new XMLHttpRequest();\n Object.defineProperty(FEATURES, 'SUPPORT_CORS_XHR', {value});\n return value;\n },\n get SUPPORT_NATIVE_TEXT_SEGMENTATION(): boolean {\n 'use strict';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const value = !!(typeof Intl !== 'undefined' && (Intl as any).Segmenter);\n Object.defineProperty(FEATURES, 'SUPPORT_NATIVE_TEXT_SEGMENTATION', {value});\n return value;\n }\n};\n", "import {OVERFLOW_WRAP} from '../property-descriptors/overflow-wrap';\nimport {CSSParsedDeclaration} from '../index';\nimport {fromCodePoint, LineBreaker, toCodePoints} from 'css-line-break';\nimport {splitGraphemes} from 'text-segmentation';\nimport {Bounds, parseBounds} from './bounds';\nimport {FEATURES} from '../../core/features';\nimport {Context} from '../../core/context';\n\nexport class TextBounds {\n readonly text: string;\n readonly bounds: Bounds;\n\n constructor(text: string, bounds: Bounds) {\n this.text = text;\n this.bounds = bounds;\n }\n}\n\nexport const parseTextBounds = (\n context: Context,\n value: string,\n styles: CSSParsedDeclaration,\n node: Text\n): TextBounds[] => {\n const textList = breakText(value, styles);\n const textBounds: TextBounds[] = [];\n let offset = 0;\n textList.forEach((text) => {\n if (styles.textDecorationLine.length || text.trim().length > 0) {\n if (FEATURES.SUPPORT_RANGE_BOUNDS) {\n const clientRects = createRange(node, offset, text.length).getClientRects();\n if (clientRects.length > 1) {\n const subSegments = segmentGraphemes(text);\n let subOffset = 0;\n subSegments.forEach((subSegment) => {\n textBounds.push(\n new TextBounds(\n subSegment,\n Bounds.fromDOMRectList(\n context,\n createRange(node, subOffset + offset, subSegment.length).getClientRects()\n )\n )\n );\n subOffset += subSegment.length;\n });\n } else {\n textBounds.push(new TextBounds(text, Bounds.fromDOMRectList(context, clientRects)));\n }\n } else {\n const replacementNode = node.splitText(text.length);\n textBounds.push(new TextBounds(text, getWrapperBounds(context, node)));\n node = replacementNode;\n }\n } else if (!FEATURES.SUPPORT_RANGE_BOUNDS) {\n node = node.splitText(text.length);\n }\n offset += text.length;\n });\n\n return textBounds;\n};\n\nconst getWrapperBounds = (context: Context, node: Text): Bounds => {\n const ownerDocument = node.ownerDocument;\n if (ownerDocument) {\n const wrapper = ownerDocument.createElement('html2canvaswrapper');\n wrapper.appendChild(node.cloneNode(true));\n const parentNode = node.parentNode;\n if (parentNode) {\n parentNode.replaceChild(wrapper, node);\n const bounds = parseBounds(context, wrapper);\n if (wrapper.firstChild) {\n parentNode.replaceChild(wrapper.firstChild, wrapper);\n }\n return bounds;\n }\n }\n\n return Bounds.EMPTY;\n};\n\nconst createRange = (node: Text, offset: number, length: number): Range => {\n const ownerDocument = node.ownerDocument;\n if (!ownerDocument) {\n throw new Error('Node has no owner document');\n }\n const range = ownerDocument.createRange();\n range.setStart(node, offset);\n range.setEnd(node, offset + length);\n return range;\n};\n\nexport const segmentGraphemes = (value: string): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {granularity: 'grapheme'});\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return splitGraphemes(value);\n};\n\nconst segmentWords = (value: string, styles: CSSParsedDeclaration): string[] => {\n if (FEATURES.SUPPORT_NATIVE_TEXT_SEGMENTATION) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const segmenter = new (Intl as any).Segmenter(void 0, {\n granularity: 'word'\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return Array.from(segmenter.segment(value)).map((segment: any) => segment.segment);\n }\n\n return breakWords(value, styles);\n};\n\nconst breakText = (value: string, styles: CSSParsedDeclaration): string[] => {\n return styles.letterSpacing !== 0 ? segmentGraphemes(value) : segmentWords(value, styles);\n};\n\n// https://drafts.csswg.org/css-text/#word-separator\nconst wordSeparators = [0x0020, 0x00a0, 0x1361, 0x10100, 0x10101, 0x1039, 0x1091];\n\nconst breakWords = (str: string, styles: CSSParsedDeclaration): string[] => {\n const breaker = LineBreaker(str, {\n lineBreak: styles.lineBreak,\n wordBreak: styles.overflowWrap === OVERFLOW_WRAP.BREAK_WORD ? 'break-word' : styles.wordBreak\n });\n\n const words = [];\n let bk;\n\n while (!(bk = breaker.next()).done) {\n if (bk.value) {\n const value = bk.value.slice();\n const codePoints = toCodePoints(value);\n let word = '';\n codePoints.forEach((codePoint) => {\n if (wordSeparators.indexOf(codePoint) === -1) {\n word += fromCodePoint(codePoint);\n } else {\n if (word.length) {\n words.push(word);\n }\n words.push(fromCodePoint(codePoint));\n word = '';\n }\n });\n\n if (word.length) {\n words.push(word);\n }\n }\n }\n\n return words;\n};\n", "import {CSSParsedDeclaration} from '../css/index';\nimport {TEXT_TRANSFORM} from '../css/property-descriptors/text-transform';\nimport {parseTextBounds, TextBounds} from '../css/layout/text';\nimport {Context} from '../core/context';\n\nexport class TextContainer {\n text: string;\n textBounds: TextBounds[];\n\n constructor(context: Context, node: Text, styles: CSSParsedDeclaration) {\n this.text = transform(node.data, styles.textTransform);\n this.textBounds = parseTextBounds(context, this.text, styles, node);\n }\n}\n\nconst transform = (text: string, transform: TEXT_TRANSFORM) => {\n switch (transform) {\n case TEXT_TRANSFORM.LOWERCASE:\n return text.toLowerCase();\n case TEXT_TRANSFORM.CAPITALIZE:\n return text.replace(CAPITALIZE, capitalize);\n case TEXT_TRANSFORM.UPPERCASE:\n return text.toUpperCase();\n default:\n return text;\n }\n};\n\nconst CAPITALIZE = /(^|\\s|:|-|\\(|\\))([a-z])/g;\n\nconst capitalize = (m: string, p1: string, p2: string) => {\n if (m.length > 0) {\n return p1 + p2.toUpperCase();\n }\n\n return m;\n};\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class ImageElementContainer extends ElementContainer {\n src: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: HTMLImageElement) {\n super(context, img);\n this.src = img.currentSrc || img.src;\n this.intrinsicWidth = img.naturalWidth;\n this.intrinsicHeight = img.naturalHeight;\n this.context.cache.addImage(this.src);\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\n\nexport class CanvasElementContainer extends ElementContainer {\n canvas: HTMLCanvasElement;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, canvas: HTMLCanvasElement) {\n super(context, canvas);\n this.canvas = canvas;\n this.intrinsicWidth = canvas.width;\n this.intrinsicHeight = canvas.height;\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {parseBounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nexport class SVGElementContainer extends ElementContainer {\n svg: string;\n intrinsicWidth: number;\n intrinsicHeight: number;\n\n constructor(context: Context, img: SVGSVGElement) {\n super(context, img);\n const s = new XMLSerializer();\n const bounds = parseBounds(context, img);\n img.setAttribute('width', `${bounds.width}px`);\n img.setAttribute('height', `${bounds.height}px`);\n\n this.svg = `data:image/svg+xml,${encodeURIComponent(s.serializeToString(img))}`;\n this.intrinsicWidth = img.width.baseVal.value;\n this.intrinsicHeight = img.height.baseVal.value;\n\n this.context.cache.addImage(this.svg);\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class LIElementContainer extends ElementContainer {\n readonly value: number;\n\n constructor(context: Context, element: HTMLLIElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class OLElementContainer extends ElementContainer {\n readonly start: number;\n readonly reversed: boolean;\n\n constructor(context: Context, element: HTMLOListElement) {\n super(context, element);\n this.start = element.start;\n this.reversed = typeof element.reversed === 'boolean' && element.reversed === true;\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BACKGROUND_ORIGIN} from '../../css/property-descriptors/background-origin';\nimport {TokenType} from '../../css/syntax/tokenizer';\nimport {LengthPercentageTuple} from '../../css/types/length-percentage';\nimport {Bounds} from '../../css/layout/bounds';\nimport {Context} from '../../core/context';\n\nconst CHECKBOX_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.DIMENSION_TOKEN,\n flags: 0,\n unit: 'px',\n number: 3\n }\n];\n\nconst RADIO_BORDER_RADIUS: LengthPercentageTuple = [\n {\n type: TokenType.PERCENTAGE_TOKEN,\n flags: 0,\n number: 50\n }\n];\n\nconst reformatInputBounds = (bounds: Bounds): Bounds => {\n if (bounds.width > bounds.height) {\n return new Bounds(bounds.left + (bounds.width - bounds.height) / 2, bounds.top, bounds.height, bounds.height);\n } else if (bounds.width < bounds.height) {\n return new Bounds(bounds.left, bounds.top + (bounds.height - bounds.width) / 2, bounds.width, bounds.width);\n }\n return bounds;\n};\n\nconst getInputValue = (node: HTMLInputElement): string => {\n const value = node.type === PASSWORD ? new Array(node.value.length + 1).join('\\u2022') : node.value;\n\n return value.length === 0 ? node.placeholder || '' : value;\n};\n\nexport const CHECKBOX = 'checkbox';\nexport const RADIO = 'radio';\nexport const PASSWORD = 'password';\nexport const INPUT_COLOR = 0x2a2a2aff;\n\nexport class InputElementContainer extends ElementContainer {\n readonly type: string;\n readonly checked: boolean;\n readonly value: string;\n\n constructor(context: Context, input: HTMLInputElement) {\n super(context, input);\n this.type = input.type.toLowerCase();\n this.checked = input.checked;\n this.value = getInputValue(input);\n\n if (this.type === CHECKBOX || this.type === RADIO) {\n this.styles.backgroundColor = 0xdededeff;\n this.styles.borderTopColor =\n this.styles.borderRightColor =\n this.styles.borderBottomColor =\n this.styles.borderLeftColor =\n 0xa5a5a5ff;\n this.styles.borderTopWidth =\n this.styles.borderRightWidth =\n this.styles.borderBottomWidth =\n this.styles.borderLeftWidth =\n 1;\n this.styles.borderTopStyle =\n this.styles.borderRightStyle =\n this.styles.borderBottomStyle =\n this.styles.borderLeftStyle =\n BORDER_STYLE.SOLID;\n this.styles.backgroundClip = [BACKGROUND_CLIP.BORDER_BOX];\n this.styles.backgroundOrigin = [BACKGROUND_ORIGIN.BORDER_BOX];\n this.bounds = reformatInputBounds(this.bounds);\n }\n\n switch (this.type) {\n case CHECKBOX:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n CHECKBOX_BORDER_RADIUS;\n break;\n case RADIO:\n this.styles.borderTopRightRadius =\n this.styles.borderTopLeftRadius =\n this.styles.borderBottomRightRadius =\n this.styles.borderBottomLeftRadius =\n RADIO_BORDER_RADIUS;\n break;\n }\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class SelectElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLSelectElement) {\n super(context, element);\n const option = element.options[element.selectedIndex || 0];\n this.value = option ? option.text || '' : '';\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {Context} from '../../core/context';\nexport class TextareaElementContainer extends ElementContainer {\n readonly value: string;\n constructor(context: Context, element: HTMLTextAreaElement) {\n super(context, element);\n this.value = element.value;\n }\n}\n", "import {ElementContainer} from '../element-container';\nimport {parseTree} from '../node-parser';\nimport {Color, parseColor, COLORS, isTransparent} from '../../css/types/color';\nimport {Context} from '../../core/context';\n\nexport class IFrameElementContainer extends ElementContainer {\n src: string;\n width: number;\n height: number;\n tree?: ElementContainer;\n backgroundColor: Color;\n\n constructor(context: Context, iframe: HTMLIFrameElement) {\n super(context, iframe);\n this.src = iframe.src;\n this.width = parseInt(iframe.width, 10) || 0;\n this.height = parseInt(iframe.height, 10) || 0;\n this.backgroundColor = this.styles.backgroundColor;\n try {\n if (\n iframe.contentWindow &&\n iframe.contentWindow.document &&\n iframe.contentWindow.document.documentElement\n ) {\n this.tree = parseTree(context, iframe.contentWindow.document.documentElement);\n\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = iframe.contentWindow.document.documentElement\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.documentElement).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = iframe.contentWindow.document.body\n ? parseColor(\n context,\n getComputedStyle(iframe.contentWindow.document.body).backgroundColor as string\n )\n : COLORS.TRANSPARENT;\n\n this.backgroundColor = isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? this.styles.backgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor;\n }\n } catch (e) {}\n }\n}\n", "import {CSSParsedDeclaration} from '../css';\nimport {ElementContainer, FLAGS} from './element-container';\nimport {TextContainer} from './text-container';\nimport {ImageElementContainer} from './replaced-elements/image-element-container';\nimport {CanvasElementContainer} from './replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from './replaced-elements/svg-element-container';\nimport {LIElementContainer} from './elements/li-element-container';\nimport {OLElementContainer} from './elements/ol-element-container';\nimport {InputElementContainer} from './replaced-elements/input-element-container';\nimport {SelectElementContainer} from './elements/select-element-container';\nimport {TextareaElementContainer} from './elements/textarea-element-container';\nimport {IFrameElementContainer} from './replaced-elements/iframe-element-container';\nimport {Context} from '../core/context';\n\nconst LIST_OWNERS = ['OL', 'UL', 'MENU'];\n\nconst parseNodeTree = (context: Context, node: Node, parent: ElementContainer, root: ElementContainer) => {\n for (let childNode = node.firstChild, nextNode; childNode; childNode = nextNode) {\n nextNode = childNode.nextSibling;\n\n if (isTextNode(childNode) && childNode.data.trim().length > 0) {\n parent.textNodes.push(new TextContainer(context, childNode, parent.styles));\n } else if (isElementNode(childNode)) {\n if (isSlotElement(childNode) && childNode.assignedNodes) {\n childNode.assignedNodes().forEach((childNode) => parseNodeTree(context, childNode, parent, root));\n } else {\n const container = createContainer(context, childNode);\n if (container.styles.isVisible()) {\n if (createsRealStackingContext(childNode, container, root)) {\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n } else if (createsStackingContext(container.styles)) {\n container.flags |= FLAGS.CREATES_STACKING_CONTEXT;\n }\n\n if (LIST_OWNERS.indexOf(childNode.tagName) !== -1) {\n container.flags |= FLAGS.IS_LIST_OWNER;\n }\n\n parent.elements.push(container);\n childNode.slot;\n if (childNode.shadowRoot) {\n parseNodeTree(context, childNode.shadowRoot, container, root);\n } else if (\n !isTextareaElement(childNode) &&\n !isSVGElement(childNode) &&\n !isSelectElement(childNode)\n ) {\n parseNodeTree(context, childNode, container, root);\n }\n }\n }\n }\n }\n};\n\nconst createContainer = (context: Context, element: Element): ElementContainer => {\n if (isImageElement(element)) {\n return new ImageElementContainer(context, element);\n }\n\n if (isCanvasElement(element)) {\n return new CanvasElementContainer(context, element);\n }\n\n if (isSVGElement(element)) {\n return new SVGElementContainer(context, element);\n }\n\n if (isLIElement(element)) {\n return new LIElementContainer(context, element);\n }\n\n if (isOLElement(element)) {\n return new OLElementContainer(context, element);\n }\n\n if (isInputElement(element)) {\n return new InputElementContainer(context, element);\n }\n\n if (isSelectElement(element)) {\n return new SelectElementContainer(context, element);\n }\n\n if (isTextareaElement(element)) {\n return new TextareaElementContainer(context, element);\n }\n\n if (isIFrameElement(element)) {\n return new IFrameElementContainer(context, element);\n }\n\n return new ElementContainer(context, element);\n};\n\nexport const parseTree = (context: Context, element: HTMLElement): ElementContainer => {\n const container = createContainer(context, element);\n container.flags |= FLAGS.CREATES_REAL_STACKING_CONTEXT;\n parseNodeTree(context, element, container, container);\n return container;\n};\n\nconst createsRealStackingContext = (node: Element, container: ElementContainer, root: ElementContainer): boolean => {\n return (\n container.styles.isPositionedWithZIndex() ||\n container.styles.opacity < 1 ||\n container.styles.isTransformed() ||\n (isBodyElement(node) && root.styles.isTransparent())\n );\n};\n\nconst createsStackingContext = (styles: CSSParsedDeclaration): boolean => styles.isPositioned() || styles.isFloating();\n\nexport const isTextNode = (node: Node): node is Text => node.nodeType === Node.TEXT_NODE;\nexport const isElementNode = (node: Node): node is Element => node.nodeType === Node.ELEMENT_NODE;\nexport const isHTMLElementNode = (node: Node): node is HTMLElement =>\n isElementNode(node) && typeof (node as HTMLElement).style !== 'undefined' && !isSVGElementNode(node);\nexport const isSVGElementNode = (element: Element): element is SVGElement =>\n typeof (element as SVGElement).className === 'object';\nexport const isLIElement = (node: Element): node is HTMLLIElement => node.tagName === 'LI';\nexport const isOLElement = (node: Element): node is HTMLOListElement => node.tagName === 'OL';\nexport const isInputElement = (node: Element): node is HTMLInputElement => node.tagName === 'INPUT';\nexport const isHTMLElement = (node: Element): node is HTMLHtmlElement => node.tagName === 'HTML';\nexport const isSVGElement = (node: Element): node is SVGSVGElement => node.tagName === 'svg';\nexport const isBodyElement = (node: Element): node is HTMLBodyElement => node.tagName === 'BODY';\nexport const isCanvasElement = (node: Element): node is HTMLCanvasElement => node.tagName === 'CANVAS';\nexport const isVideoElement = (node: Element): node is HTMLVideoElement => node.tagName === 'VIDEO';\nexport const isImageElement = (node: Element): node is HTMLImageElement => node.tagName === 'IMG';\nexport const isIFrameElement = (node: Element): node is HTMLIFrameElement => node.tagName === 'IFRAME';\nexport const isStyleElement = (node: Element): node is HTMLStyleElement => node.tagName === 'STYLE';\nexport const isScriptElement = (node: Element): node is HTMLScriptElement => node.tagName === 'SCRIPT';\nexport const isTextareaElement = (node: Element): node is HTMLTextAreaElement => node.tagName === 'TEXTAREA';\nexport const isSelectElement = (node: Element): node is HTMLSelectElement => node.tagName === 'SELECT';\nexport const isSlotElement = (node: Element): node is HTMLSlotElement => node.tagName === 'SLOT';\n// https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\nexport const isCustomElement = (node: Element): node is HTMLElement => node.tagName.indexOf('-') > 0;\n", "import {LIST_STYLE_TYPE} from '../../property-descriptors/list-style-type';\nimport {fromCodePoint} from 'css-line-break';\nimport {contains} from '../../../core/bitwise';\nimport {CSSParsedCounterDeclaration} from '../../index';\n\nexport class CounterState {\n private readonly counters: {[key: string]: number[]} = {};\n\n getCounterValue(name: string): number {\n const counter = this.counters[name];\n\n if (counter && counter.length) {\n return counter[counter.length - 1];\n }\n return 1;\n }\n\n getCounterValues(name: string): readonly number[] {\n const counter = this.counters[name];\n return counter ? counter : [];\n }\n\n pop(counters: string[]): void {\n counters.forEach((counter) => this.counters[counter].pop());\n }\n\n parse(style: CSSParsedCounterDeclaration): string[] {\n const counterIncrement = style.counterIncrement;\n const counterReset = style.counterReset;\n let canReset = true;\n\n if (counterIncrement !== null) {\n counterIncrement.forEach((entry) => {\n const counter = this.counters[entry.counter];\n if (counter && entry.increment !== 0) {\n canReset = false;\n if (!counter.length) {\n counter.push(1);\n }\n counter[Math.max(0, counter.length - 1)] += entry.increment;\n }\n });\n }\n\n const counterNames: string[] = [];\n if (canReset) {\n counterReset.forEach((entry) => {\n let counter = this.counters[entry.counter];\n counterNames.push(entry.counter);\n if (!counter) {\n counter = this.counters[entry.counter] = [];\n }\n counter.push(entry.reset);\n });\n }\n\n return counterNames;\n }\n}\n\ninterface CounterSymbols {\n integers: number[];\n values: string[];\n}\n\nconst ROMAN_UPPER: CounterSymbols = {\n integers: [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1],\n values: ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X', 'IX', 'V', 'IV', 'I']\n};\n\nconst ARMENIAN: CounterSymbols = {\n integers: [\n 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90, 80, 70,\n 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'Ք',\n 'Փ',\n 'Ւ',\n 'Ց',\n 'Ր',\n 'Տ',\n 'Վ',\n 'Ս',\n 'Ռ',\n 'Ջ',\n 'Պ',\n 'Չ',\n 'Ո',\n 'Շ',\n 'Ն',\n 'Յ',\n 'Մ',\n 'Ճ',\n 'Ղ',\n 'Ձ',\n 'Հ',\n 'Կ',\n 'Ծ',\n 'Խ',\n 'Լ',\n 'Ի',\n 'Ժ',\n 'Թ',\n 'Ը',\n 'Է',\n 'Զ',\n 'Ե',\n 'Դ',\n 'Գ',\n 'Բ',\n 'Ա'\n ]\n};\n\nconst HEBREW: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 400, 300, 200, 100, 90, 80, 70, 60, 50, 40, 30, 20,\n 19, 18, 17, 16, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'י׳',\n 'ט׳',\n 'ח׳',\n 'ז׳',\n 'ו׳',\n 'ה׳',\n 'ד׳',\n 'ג׳',\n 'ב׳',\n 'א׳',\n 'ת',\n 'ש',\n 'ר',\n 'ק',\n 'צ',\n 'פ',\n 'ע',\n 'ס',\n 'נ',\n 'מ',\n 'ל',\n 'כ',\n 'יט',\n 'יח',\n 'יז',\n 'טז',\n 'טו',\n 'י',\n 'ט',\n 'ח',\n 'ז',\n 'ו',\n 'ה',\n 'ד',\n 'ג',\n 'ב',\n 'א'\n ]\n};\n\nconst GEORGIAN: CounterSymbols = {\n integers: [\n 10000, 9000, 8000, 7000, 6000, 5000, 4000, 3000, 2000, 1000, 900, 800, 700, 600, 500, 400, 300, 200, 100, 90,\n 80, 70, 60, 50, 40, 30, 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1\n ],\n values: [\n 'ჵ',\n 'ჰ',\n 'ჯ',\n 'ჴ',\n 'ხ',\n 'ჭ',\n 'წ',\n 'ძ',\n 'ც',\n 'ჩ',\n 'შ',\n 'ყ',\n 'ღ',\n 'ქ',\n 'ფ',\n 'ჳ',\n 'ტ',\n 'ს',\n 'რ',\n 'ჟ',\n 'პ',\n 'ო',\n 'ჲ',\n 'ნ',\n 'მ',\n 'ლ',\n 'კ',\n 'ი',\n 'თ',\n 'ჱ',\n 'ზ',\n 'ვ',\n 'ე',\n 'დ',\n 'გ',\n 'ბ',\n 'ა'\n ]\n};\n\nconst createAdditiveCounter = (\n value: number,\n min: number,\n max: number,\n symbols: CounterSymbols,\n fallback: LIST_STYLE_TYPE,\n suffix: string\n) => {\n if (value < min || value > max) {\n return createCounterText(value, fallback, suffix.length > 0);\n }\n\n return (\n symbols.integers.reduce((string, integer, index) => {\n while (value >= integer) {\n value -= integer;\n string += symbols.values[index];\n }\n return string;\n }, '') + suffix\n );\n};\n\nconst createCounterStyleWithSymbolResolver = (\n value: number,\n codePointRangeLength: number,\n isNumeric: boolean,\n resolver: (codePoint: number) => string\n): string => {\n let string = '';\n\n do {\n if (!isNumeric) {\n value--;\n }\n string = resolver(value) + string;\n value /= codePointRangeLength;\n } while (value * codePointRangeLength >= codePointRangeLength);\n\n return string;\n};\n\nconst createCounterStyleFromRange = (\n value: number,\n codePointRangeStart: number,\n codePointRangeEnd: number,\n isNumeric: boolean,\n suffix: string\n): string => {\n const codePointRangeLength = codePointRangeEnd - codePointRangeStart + 1;\n\n return (\n (value < 0 ? '-' : '') +\n (createCounterStyleWithSymbolResolver(Math.abs(value), codePointRangeLength, isNumeric, (codePoint) =>\n fromCodePoint(Math.floor(codePoint % codePointRangeLength) + codePointRangeStart)\n ) +\n suffix)\n );\n};\n\nconst createCounterStyleFromSymbols = (value: number, symbols: string, suffix = '. '): string => {\n const codePointRangeLength = symbols.length;\n return (\n createCounterStyleWithSymbolResolver(\n Math.abs(value),\n codePointRangeLength,\n false,\n (codePoint) => symbols[Math.floor(codePoint % codePointRangeLength)]\n ) + suffix\n );\n};\n\nconst CJK_ZEROS = 1 << 0;\nconst CJK_TEN_COEFFICIENTS = 1 << 1;\nconst CJK_TEN_HIGH_COEFFICIENTS = 1 << 2;\nconst CJK_HUNDRED_COEFFICIENTS = 1 << 3;\n\nconst createCJKCounter = (\n value: number,\n numbers: string,\n multipliers: string,\n negativeSign: string,\n suffix: string,\n flags: number\n): string => {\n if (value < -9999 || value > 9999) {\n return createCounterText(value, LIST_STYLE_TYPE.CJK_DECIMAL, suffix.length > 0);\n }\n let tmp = Math.abs(value);\n let string = suffix;\n\n if (tmp === 0) {\n return numbers[0] + string;\n }\n\n for (let digit = 0; tmp > 0 && digit <= 4; digit++) {\n const coefficient = tmp % 10;\n\n if (coefficient === 0 && contains(flags, CJK_ZEROS) && string !== '') {\n string = numbers[coefficient] + string;\n } else if (\n coefficient > 1 ||\n (coefficient === 1 && digit === 0) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_COEFFICIENTS)) ||\n (coefficient === 1 && digit === 1 && contains(flags, CJK_TEN_HIGH_COEFFICIENTS) && value > 100) ||\n (coefficient === 1 && digit > 1 && contains(flags, CJK_HUNDRED_COEFFICIENTS))\n ) {\n string = numbers[coefficient] + (digit > 0 ? multipliers[digit - 1] : '') + string;\n } else if (coefficient === 1 && digit > 0) {\n string = multipliers[digit - 1] + string;\n }\n tmp = Math.floor(tmp / 10);\n }\n\n return (value < 0 ? negativeSign : '') + string;\n};\n\nconst CHINESE_INFORMAL_MULTIPLIERS = '十百千萬';\nconst CHINESE_FORMAL_MULTIPLIERS = '拾佰仟萬';\nconst JAPANESE_NEGATIVE = 'マイナス';\nconst KOREAN_NEGATIVE = '마이너스';\n\nexport const createCounterText = (value: number, type: LIST_STYLE_TYPE, appendSuffix: boolean): string => {\n const defaultSuffix = appendSuffix ? '. ' : '';\n const cjkSuffix = appendSuffix ? '、' : '';\n const koreanSuffix = appendSuffix ? ', ' : '';\n const spaceSuffix = appendSuffix ? ' ' : '';\n switch (type) {\n case LIST_STYLE_TYPE.DISC:\n return '•' + spaceSuffix;\n case LIST_STYLE_TYPE.CIRCLE:\n return '◦' + spaceSuffix;\n case LIST_STYLE_TYPE.SQUARE:\n return '◾' + spaceSuffix;\n case LIST_STYLE_TYPE.DECIMAL_LEADING_ZERO:\n const string = createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n return string.length < 4 ? `0${string}` : string;\n case LIST_STYLE_TYPE.CJK_DECIMAL:\n return createCounterStyleFromSymbols(value, '〇一二三四五六七八九', cjkSuffix);\n case LIST_STYLE_TYPE.LOWER_ROMAN:\n return createAdditiveCounter(\n value,\n 1,\n 3999,\n ROMAN_UPPER,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.UPPER_ROMAN:\n return createAdditiveCounter(value, 1, 3999, ROMAN_UPPER, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_GREEK:\n return createCounterStyleFromRange(value, 945, 969, false, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ALPHA:\n return createCounterStyleFromRange(value, 97, 122, false, defaultSuffix);\n case LIST_STYLE_TYPE.UPPER_ALPHA:\n return createCounterStyleFromRange(value, 65, 90, false, defaultSuffix);\n case LIST_STYLE_TYPE.ARABIC_INDIC:\n return createCounterStyleFromRange(value, 1632, 1641, true, defaultSuffix);\n case LIST_STYLE_TYPE.ARMENIAN:\n case LIST_STYLE_TYPE.UPPER_ARMENIAN:\n return createAdditiveCounter(value, 1, 9999, ARMENIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.LOWER_ARMENIAN:\n return createAdditiveCounter(\n value,\n 1,\n 9999,\n ARMENIAN,\n LIST_STYLE_TYPE.DECIMAL,\n defaultSuffix\n ).toLowerCase();\n case LIST_STYLE_TYPE.BENGALI:\n return createCounterStyleFromRange(value, 2534, 2543, true, defaultSuffix);\n case LIST_STYLE_TYPE.CAMBODIAN:\n case LIST_STYLE_TYPE.KHMER:\n return createCounterStyleFromRange(value, 6112, 6121, true, defaultSuffix);\n case LIST_STYLE_TYPE.CJK_EARTHLY_BRANCH:\n return createCounterStyleFromSymbols(value, '子丑寅卯辰巳午未申酉戌亥', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_HEAVENLY_STEM:\n return createCounterStyleFromSymbols(value, '甲乙丙丁戊己庚辛壬癸', cjkSuffix);\n case LIST_STYLE_TYPE.CJK_IDEOGRAPHIC:\n case LIST_STYLE_TYPE.TRAD_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.TRAD_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參肆伍陸柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '負',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_INFORMAL:\n return createCJKCounter(\n value,\n '零一二三四五六七八九',\n CHINESE_INFORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.SIMP_CHINESE_FORMAL:\n return createCJKCounter(\n value,\n '零壹贰叁肆伍陆柒捌玖',\n CHINESE_FORMAL_MULTIPLIERS,\n '负',\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS | CJK_HUNDRED_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.JAPANESE_INFORMAL:\n return createCJKCounter(value, '〇一二三四五六七八九', '十百千万', JAPANESE_NEGATIVE, cjkSuffix, 0);\n case LIST_STYLE_TYPE.JAPANESE_FORMAL:\n return createCJKCounter(\n value,\n '零壱弐参四伍六七八九',\n '拾百千万',\n JAPANESE_NEGATIVE,\n cjkSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANGUL_FORMAL:\n return createCJKCounter(\n value,\n '영일이삼사오육칠팔구',\n '십백천만',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.KOREAN_HANJA_INFORMAL:\n return createCJKCounter(value, '零一二三四五六七八九', '十百千萬', KOREAN_NEGATIVE, koreanSuffix, 0);\n case LIST_STYLE_TYPE.KOREAN_HANJA_FORMAL:\n return createCJKCounter(\n value,\n '零壹貳參四五六七八九',\n '拾百千',\n KOREAN_NEGATIVE,\n koreanSuffix,\n CJK_ZEROS | CJK_TEN_COEFFICIENTS | CJK_TEN_HIGH_COEFFICIENTS\n );\n case LIST_STYLE_TYPE.DEVANAGARI:\n return createCounterStyleFromRange(value, 0x966, 0x96f, true, defaultSuffix);\n case LIST_STYLE_TYPE.GEORGIAN:\n return createAdditiveCounter(value, 1, 19999, GEORGIAN, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.GUJARATI:\n return createCounterStyleFromRange(value, 0xae6, 0xaef, true, defaultSuffix);\n case LIST_STYLE_TYPE.GURMUKHI:\n return createCounterStyleFromRange(value, 0xa66, 0xa6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.HEBREW:\n return createAdditiveCounter(value, 1, 10999, HEBREW, LIST_STYLE_TYPE.DECIMAL, defaultSuffix);\n case LIST_STYLE_TYPE.HIRAGANA:\n return createCounterStyleFromSymbols(\n value,\n 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐゑをん'\n );\n case LIST_STYLE_TYPE.HIRAGANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'いろはにほへとちりぬるをわかよたれそつねならむうゐのおくやまけふこえてあさきゆめみしゑひもせす'\n );\n case LIST_STYLE_TYPE.KANNADA:\n return createCounterStyleFromRange(value, 0xce6, 0xcef, true, defaultSuffix);\n case LIST_STYLE_TYPE.KATAKANA:\n return createCounterStyleFromSymbols(\n value,\n 'アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヰヱヲン',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.KATAKANA_IROHA:\n return createCounterStyleFromSymbols(\n value,\n 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス',\n cjkSuffix\n );\n case LIST_STYLE_TYPE.LAO:\n return createCounterStyleFromRange(value, 0xed0, 0xed9, true, defaultSuffix);\n case LIST_STYLE_TYPE.MONGOLIAN:\n return createCounterStyleFromRange(value, 0x1810, 0x1819, true, defaultSuffix);\n case LIST_STYLE_TYPE.MYANMAR:\n return createCounterStyleFromRange(value, 0x1040, 0x1049, true, defaultSuffix);\n case LIST_STYLE_TYPE.ORIYA:\n return createCounterStyleFromRange(value, 0xb66, 0xb6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.PERSIAN:\n return createCounterStyleFromRange(value, 0x6f0, 0x6f9, true, defaultSuffix);\n case LIST_STYLE_TYPE.TAMIL:\n return createCounterStyleFromRange(value, 0xbe6, 0xbef, true, defaultSuffix);\n case LIST_STYLE_TYPE.TELUGU:\n return createCounterStyleFromRange(value, 0xc66, 0xc6f, true, defaultSuffix);\n case LIST_STYLE_TYPE.THAI:\n return createCounterStyleFromRange(value, 0xe50, 0xe59, true, defaultSuffix);\n case LIST_STYLE_TYPE.TIBETAN:\n return createCounterStyleFromRange(value, 0xf20, 0xf29, true, defaultSuffix);\n case LIST_STYLE_TYPE.DECIMAL:\n default:\n return createCounterStyleFromRange(value, 48, 57, true, defaultSuffix);\n }\n};\n", "import {Bounds} from '../css/layout/bounds';\nimport {\n isBodyElement,\n isCanvasElement,\n isCustomElement,\n isElementNode,\n isHTMLElementNode,\n isIFrameElement,\n isImageElement,\n isScriptElement,\n isSelectElement,\n isSlotElement,\n isStyleElement,\n isSVGElementNode,\n isTextareaElement,\n isTextNode,\n isVideoElement\n} from './node-parser';\nimport {isIdentToken, nonFunctionArgSeparator} from '../css/syntax/parser';\nimport {TokenType} from '../css/syntax/tokenizer';\nimport {CounterState, createCounterText} from '../css/types/functions/counter';\nimport {LIST_STYLE_TYPE, listStyleType} from '../css/property-descriptors/list-style-type';\nimport {CSSParsedCounterDeclaration, CSSParsedPseudoDeclaration} from '../css/index';\nimport {getQuote} from '../css/property-descriptors/quotes';\nimport {Context} from '../core/context';\nimport {DebuggerType, isDebugging} from '../core/debugger';\n\nexport interface CloneOptions {\n ignoreElements?: (element: Element) => boolean;\n onclone?: (document: Document, element: HTMLElement) => void;\n allowTaint?: boolean;\n}\n\nexport interface WindowOptions {\n scrollX: number;\n scrollY: number;\n windowWidth: number;\n windowHeight: number;\n}\n\nexport type CloneConfigurations = CloneOptions & {\n inlineImages: boolean;\n copyStyles: boolean;\n};\n\nconst IGNORE_ATTRIBUTE = 'data-html2canvas-ignore';\n\nexport class DocumentCloner {\n private readonly scrolledElements: [Element, number, number][];\n private readonly referenceElement: HTMLElement;\n clonedReferenceElement?: HTMLElement;\n private readonly documentElement: HTMLElement;\n private readonly counters: CounterState;\n private quoteDepth: number;\n\n constructor(\n private readonly context: Context,\n element: HTMLElement,\n private readonly options: CloneConfigurations\n ) {\n this.scrolledElements = [];\n this.referenceElement = element;\n this.counters = new CounterState();\n this.quoteDepth = 0;\n if (!element.ownerDocument) {\n throw new Error('Cloned element does not have an owner document');\n }\n\n this.documentElement = this.cloneNode(element.ownerDocument.documentElement, false) as HTMLElement;\n }\n\n toIFrame(ownerDocument: Document, windowSize: Bounds): Promise<HTMLIFrameElement> {\n const iframe: HTMLIFrameElement = createIFrameContainer(ownerDocument, windowSize);\n\n if (!iframe.contentWindow) {\n return Promise.reject(`Unable to find iframe window`);\n }\n\n const scrollX = (ownerDocument.defaultView as Window).pageXOffset;\n const scrollY = (ownerDocument.defaultView as Window).pageYOffset;\n\n const cloneWindow = iframe.contentWindow;\n const documentClone: Document = cloneWindow.document;\n\n /* Chrome doesn't detect relative background-images assigned in inline <style> sheets when fetched through getComputedStyle\n if window url is about:blank, we can assign the url to current by writing onto the document\n */\n\n const iframeLoad = iframeLoader(iframe).then(async () => {\n this.scrolledElements.forEach(restoreNodeScroll);\n if (cloneWindow) {\n cloneWindow.scrollTo(windowSize.left, windowSize.top);\n if (\n /(iPad|iPhone|iPod)/g.test(navigator.userAgent) &&\n (cloneWindow.scrollY !== windowSize.top || cloneWindow.scrollX !== windowSize.left)\n ) {\n this.context.logger.warn('Unable to restore scroll position for cloned document');\n this.context.windowBounds = this.context.windowBounds.add(\n cloneWindow.scrollX - windowSize.left,\n cloneWindow.scrollY - windowSize.top,\n 0,\n 0\n );\n }\n }\n\n const onclone = this.options.onclone;\n\n const referenceElement = this.clonedReferenceElement;\n\n if (typeof referenceElement === 'undefined') {\n return Promise.reject(`Error finding the ${this.referenceElement.nodeName} in the cloned document`);\n }\n\n if (documentClone.fonts && documentClone.fonts.ready) {\n await documentClone.fonts.ready;\n }\n\n if (/(AppleWebKit)/g.test(navigator.userAgent)) {\n await imagesReady(documentClone);\n }\n\n if (typeof onclone === 'function') {\n return Promise.resolve()\n .then(() => onclone(documentClone, referenceElement))\n .then(() => iframe);\n }\n\n return iframe;\n });\n\n documentClone.open();\n documentClone.write(`${serializeDoctype(document.doctype)}<html></html>`);\n // Chrome scrolls the parent document for some reason after the write to the cloned window???\n restoreOwnerScroll(this.referenceElement.ownerDocument, scrollX, scrollY);\n documentClone.replaceChild(documentClone.adoptNode(this.documentElement), documentClone.documentElement);\n documentClone.close();\n\n return iframeLoad;\n }\n\n createElementClone<T extends HTMLElement | SVGElement>(node: T): HTMLElement | SVGElement {\n if (isDebugging(node, DebuggerType.CLONE)) {\n debugger;\n }\n if (isCanvasElement(node)) {\n return this.createCanvasClone(node);\n }\n if (isVideoElement(node)) {\n return this.createVideoClone(node);\n }\n if (isStyleElement(node)) {\n return this.createStyleClone(node);\n }\n\n const clone = node.cloneNode(false) as T;\n if (isImageElement(clone)) {\n if (isImageElement(node) && node.currentSrc && node.currentSrc !== node.src) {\n clone.src = node.currentSrc;\n clone.srcset = '';\n }\n\n if (clone.loading === 'lazy') {\n clone.loading = 'eager';\n }\n }\n\n if (isCustomElement(clone)) {\n return this.createCustomElementClone(clone);\n }\n\n return clone;\n }\n\n createCustomElementClone(node: HTMLElement): HTMLElement {\n const clone = document.createElement('html2canvascustomelement');\n copyCSSStyles(node.style, clone);\n\n return clone;\n }\n\n createStyleClone(node: HTMLStyleElement): HTMLStyleElement {\n try {\n const sheet = node.sheet as CSSStyleSheet | undefined;\n if (sheet && sheet.cssRules) {\n const css: string = [].slice.call(sheet.cssRules, 0).reduce((css: string, rule: CSSRule) => {\n if (rule && typeof rule.cssText === 'string') {\n return css + rule.cssText;\n }\n return css;\n }, '');\n const style = node.cloneNode(false) as HTMLStyleElement;\n style.textContent = css;\n return style;\n }\n } catch (e) {\n // accessing node.sheet.cssRules throws a DOMException\n this.context.logger.error('Unable to access cssRules property', e);\n if (e.name !== 'SecurityError') {\n throw e;\n }\n }\n return node.cloneNode(false) as HTMLStyleElement;\n }\n\n createCanvasClone(canvas: HTMLCanvasElement): HTMLImageElement | HTMLCanvasElement {\n if (this.options.inlineImages && canvas.ownerDocument) {\n const img = canvas.ownerDocument.createElement('img');\n try {\n img.src = canvas.toDataURL();\n return img;\n } catch (e) {\n this.context.logger.info(`Unable to inline canvas contents, canvas is tainted`, canvas);\n }\n }\n\n const clonedCanvas = canvas.cloneNode(false) as HTMLCanvasElement;\n\n try {\n clonedCanvas.width = canvas.width;\n clonedCanvas.height = canvas.height;\n const ctx = canvas.getContext('2d');\n const clonedCtx = clonedCanvas.getContext('2d');\n if (clonedCtx) {\n if (!this.options.allowTaint && ctx) {\n clonedCtx.putImageData(ctx.getImageData(0, 0, canvas.width, canvas.height), 0, 0);\n } else {\n const gl = canvas.getContext('webgl2') ?? canvas.getContext('webgl');\n if (gl) {\n const attribs = gl.getContextAttributes();\n if (attribs?.preserveDrawingBuffer === false) {\n this.context.logger.warn(\n 'Unable to clone WebGL context as it has preserveDrawingBuffer=false',\n canvas\n );\n }\n }\n\n clonedCtx.drawImage(canvas, 0, 0);\n }\n }\n return clonedCanvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone canvas as it is tainted`, canvas);\n }\n\n return clonedCanvas;\n }\n\n createVideoClone(video: HTMLVideoElement): HTMLCanvasElement {\n const canvas = video.ownerDocument.createElement('canvas');\n\n canvas.width = video.offsetWidth;\n canvas.height = video.offsetHeight;\n const ctx = canvas.getContext('2d');\n\n try {\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n if (!this.options.allowTaint) {\n ctx.getImageData(0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n } catch (e) {\n this.context.logger.info(`Unable to clone video as it is tainted`, video);\n }\n\n const blankCanvas = video.ownerDocument.createElement('canvas');\n\n blankCanvas.width = video.offsetWidth;\n blankCanvas.height = video.offsetHeight;\n return blankCanvas;\n }\n\n appendChildNode(clone: HTMLElement | SVGElement, child: Node, copyStyles: boolean): void {\n if (\n !isElementNode(child) ||\n (!isScriptElement(child) &&\n !child.hasAttribute(IGNORE_ATTRIBUTE) &&\n (typeof this.options.ignoreElements !== 'function' || !this.options.ignoreElements(child)))\n ) {\n if (!this.options.copyStyles || !isElementNode(child) || !isStyleElement(child)) {\n clone.appendChild(this.cloneNode(child, copyStyles));\n }\n }\n }\n\n cloneChildNodes(node: Element, clone: HTMLElement | SVGElement, copyStyles: boolean): void {\n for (\n let child = node.shadowRoot ? node.shadowRoot.firstChild : node.firstChild;\n child;\n child = child.nextSibling\n ) {\n if (isElementNode(child) && isSlotElement(child) && typeof child.assignedNodes === 'function') {\n const assignedNodes = child.assignedNodes() as ChildNode[];\n if (assignedNodes.length) {\n assignedNodes.forEach((assignedNode) => this.appendChildNode(clone, assignedNode, copyStyles));\n }\n } else {\n this.appendChildNode(clone, child, copyStyles);\n }\n }\n }\n\n cloneNode(node: Node, copyStyles: boolean): Node {\n if (isTextNode(node)) {\n return document.createTextNode(node.data);\n }\n\n if (!node.ownerDocument) {\n return node.cloneNode(false);\n }\n\n const window = node.ownerDocument.defaultView;\n\n if (window && isElementNode(node) && (isHTMLElementNode(node) || isSVGElementNode(node))) {\n const clone = this.createElementClone(node);\n clone.style.transitionProperty = 'none';\n\n const style = window.getComputedStyle(node);\n const styleBefore = window.getComputedStyle(node, ':before');\n const styleAfter = window.getComputedStyle(node, ':after');\n\n if (this.referenceElement === node && isHTMLElementNode(clone)) {\n this.clonedReferenceElement = clone;\n }\n if (isBodyElement(clone)) {\n createPseudoHideStyles(clone);\n }\n\n const counters = this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const before = this.resolvePseudoContent(node, clone, styleBefore, PseudoElementType.BEFORE);\n\n if (isCustomElement(node)) {\n copyStyles = true;\n }\n\n if (!isVideoElement(node)) {\n this.cloneChildNodes(node, clone, copyStyles);\n }\n\n if (before) {\n clone.insertBefore(before, clone.firstChild);\n }\n\n const after = this.resolvePseudoContent(node, clone, styleAfter, PseudoElementType.AFTER);\n if (after) {\n clone.appendChild(after);\n }\n\n this.counters.pop(counters);\n\n if (\n (style && (this.options.copyStyles || isSVGElementNode(node)) && !isIFrameElement(node)) ||\n copyStyles\n ) {\n copyCSSStyles(style, clone);\n }\n\n if (node.scrollTop !== 0 || node.scrollLeft !== 0) {\n this.scrolledElements.push([clone, node.scrollLeft, node.scrollTop]);\n }\n\n if (\n (isTextareaElement(node) || isSelectElement(node)) &&\n (isTextareaElement(clone) || isSelectElement(clone))\n ) {\n clone.value = node.value;\n }\n\n return clone;\n }\n\n return node.cloneNode(false);\n }\n\n resolvePseudoContent(\n node: Element,\n clone: Element,\n style: CSSStyleDeclaration,\n pseudoElt: PseudoElementType\n ): HTMLElement | void {\n if (!style) {\n return;\n }\n\n const value = style.content;\n const document = clone.ownerDocument;\n if (!document || !value || value === 'none' || value === '-moz-alt-content' || style.display === 'none') {\n return;\n }\n\n this.counters.parse(new CSSParsedCounterDeclaration(this.context, style));\n const declaration = new CSSParsedPseudoDeclaration(this.context, style);\n\n const anonymousReplacedElement = document.createElement('html2canvaspseudoelement');\n copyCSSStyles(style, anonymousReplacedElement);\n\n declaration.content.forEach((token) => {\n if (token.type === TokenType.STRING_TOKEN) {\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n } else if (token.type === TokenType.URL_TOKEN) {\n const img = document.createElement('img');\n img.src = token.value;\n img.style.opacity = '1';\n anonymousReplacedElement.appendChild(img);\n } else if (token.type === TokenType.FUNCTION) {\n if (token.name === 'attr') {\n const attr = token.values.filter(isIdentToken);\n if (attr.length) {\n anonymousReplacedElement.appendChild(\n document.createTextNode(node.getAttribute(attr[0].value) || '')\n );\n }\n } else if (token.name === 'counter') {\n const [counter, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterState = this.counters.getCounterValue(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n\n anonymousReplacedElement.appendChild(\n document.createTextNode(createCounterText(counterState, counterType, false))\n );\n }\n } else if (token.name === 'counters') {\n const [counter, delim, counterStyle] = token.values.filter(nonFunctionArgSeparator);\n if (counter && isIdentToken(counter)) {\n const counterStates = this.counters.getCounterValues(counter.value);\n const counterType =\n counterStyle && isIdentToken(counterStyle)\n ? listStyleType.parse(this.context, counterStyle.value)\n : LIST_STYLE_TYPE.DECIMAL;\n const separator = delim && delim.type === TokenType.STRING_TOKEN ? delim.value : '';\n const text = counterStates\n .map((value) => createCounterText(value, counterType, false))\n .join(separator);\n\n anonymousReplacedElement.appendChild(document.createTextNode(text));\n }\n } else {\n // console.log('FUNCTION_TOKEN', token);\n }\n } else if (token.type === TokenType.IDENT_TOKEN) {\n switch (token.value) {\n case 'open-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, this.quoteDepth++, true))\n );\n break;\n case 'close-quote':\n anonymousReplacedElement.appendChild(\n document.createTextNode(getQuote(declaration.quotes, --this.quoteDepth, false))\n );\n break;\n default:\n // safari doesn't parse string tokens correctly because of lack of quotes\n anonymousReplacedElement.appendChild(document.createTextNode(token.value));\n }\n }\n });\n\n anonymousReplacedElement.className = `${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE} ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n const newClassName =\n pseudoElt === PseudoElementType.BEFORE\n ? ` ${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}`\n : ` ${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}`;\n\n if (isSVGElementNode(clone)) {\n clone.className.baseValue += newClassName;\n } else {\n clone.className += newClassName;\n }\n\n return anonymousReplacedElement;\n }\n\n static destroy(container: HTMLIFrameElement): boolean {\n if (container.parentNode) {\n container.parentNode.removeChild(container);\n return true;\n }\n return false;\n }\n}\n\nenum PseudoElementType {\n BEFORE,\n AFTER\n}\n\nconst createIFrameContainer = (ownerDocument: Document, bounds: Bounds): HTMLIFrameElement => {\n const cloneIframeContainer = ownerDocument.createElement('iframe');\n\n cloneIframeContainer.className = 'html2canvas-container';\n cloneIframeContainer.style.visibility = 'hidden';\n cloneIframeContainer.style.position = 'fixed';\n cloneIframeContainer.style.left = '-10000px';\n cloneIframeContainer.style.top = '0px';\n cloneIframeContainer.style.border = '0';\n cloneIframeContainer.width = bounds.width.toString();\n cloneIframeContainer.height = bounds.height.toString();\n cloneIframeContainer.scrolling = 'no'; // ios won't scroll without it\n cloneIframeContainer.setAttribute(IGNORE_ATTRIBUTE, 'true');\n ownerDocument.body.appendChild(cloneIframeContainer);\n\n return cloneIframeContainer;\n};\n\nconst imageReady = (img: HTMLImageElement): Promise<Event | void | string> => {\n return new Promise((resolve) => {\n if (img.complete) {\n resolve();\n return;\n }\n if (!img.src) {\n resolve();\n return;\n }\n img.onload = resolve;\n img.onerror = resolve;\n });\n};\n\nconst imagesReady = (document: HTMLDocument): Promise<unknown[]> => {\n return Promise.all([].slice.call(document.images, 0).map(imageReady));\n};\n\nconst iframeLoader = (iframe: HTMLIFrameElement): Promise<HTMLIFrameElement> => {\n return new Promise((resolve, reject) => {\n const cloneWindow = iframe.contentWindow;\n\n if (!cloneWindow) {\n return reject(`No window assigned for iframe`);\n }\n\n const documentClone = cloneWindow.document;\n\n cloneWindow.onload = iframe.onload = () => {\n cloneWindow.onload = iframe.onload = null;\n const interval = setInterval(() => {\n if (documentClone.body.childNodes.length > 0 && documentClone.readyState === 'complete') {\n clearInterval(interval);\n resolve(iframe);\n }\n }, 50);\n };\n });\n};\n\nconst ignoredStyleProperties = [\n 'all', // #2476\n 'd', // #2483\n 'content' // Safari shows pseudoelements if content is set\n];\n\nexport const copyCSSStyles = <T extends HTMLElement | SVGElement>(style: CSSStyleDeclaration, target: T): T => {\n // Edge does not provide value for cssText\n for (let i = style.length - 1; i >= 0; i--) {\n const property = style.item(i);\n if (ignoredStyleProperties.indexOf(property) === -1) {\n target.style.setProperty(property, style.getPropertyValue(property));\n }\n }\n return target;\n};\n\nconst serializeDoctype = (doctype?: DocumentType | null): string => {\n let str = '';\n if (doctype) {\n str += '<!DOCTYPE ';\n if (doctype.name) {\n str += doctype.name;\n }\n\n if (doctype.internalSubset) {\n str += doctype.internalSubset;\n }\n\n if (doctype.publicId) {\n str += `\"${doctype.publicId}\"`;\n }\n\n if (doctype.systemId) {\n str += `\"${doctype.systemId}\"`;\n }\n\n str += '>';\n }\n\n return str;\n};\n\nconst restoreOwnerScroll = (ownerDocument: Document | null, x: number, y: number) => {\n if (\n ownerDocument &&\n ownerDocument.defaultView &&\n (x !== ownerDocument.defaultView.pageXOffset || y !== ownerDocument.defaultView.pageYOffset)\n ) {\n ownerDocument.defaultView.scrollTo(x, y);\n }\n};\n\nconst restoreNodeScroll = ([element, x, y]: [HTMLElement, number, number]) => {\n element.scrollLeft = x;\n element.scrollTop = y;\n};\n\nconst PSEUDO_BEFORE = ':before';\nconst PSEUDO_AFTER = ':after';\nconst PSEUDO_HIDE_ELEMENT_CLASS_BEFORE = '___html2canvas___pseudoelement_before';\nconst PSEUDO_HIDE_ELEMENT_CLASS_AFTER = '___html2canvas___pseudoelement_after';\n\nconst PSEUDO_HIDE_ELEMENT_STYLE = `{\n content: \"\" !important;\n display: none !important;\n}`;\n\nconst createPseudoHideStyles = (body: HTMLElement) => {\n createStyles(\n body,\n `.${PSEUDO_HIDE_ELEMENT_CLASS_BEFORE}${PSEUDO_BEFORE}${PSEUDO_HIDE_ELEMENT_STYLE}\n .${PSEUDO_HIDE_ELEMENT_CLASS_AFTER}${PSEUDO_AFTER}${PSEUDO_HIDE_ELEMENT_STYLE}`\n );\n};\n\nconst createStyles = (body: HTMLElement, styles: string) => {\n const document = body.ownerDocument;\n if (document) {\n const style = document.createElement('style');\n style.textContent = styles;\n body.appendChild(style);\n }\n};\n", "import {FEATURES} from './features';\nimport {Context} from './context';\n\nexport class CacheStorage {\n private static _link?: HTMLAnchorElement;\n private static _origin = 'about:blank';\n\n static getOrigin(url: string): string {\n const link = CacheStorage._link;\n if (!link) {\n return 'about:blank';\n }\n\n link.href = url;\n link.href = link.href; // IE9, LOL! - http://jsfiddle.net/niklasvh/2e48b/\n return link.protocol + link.hostname + link.port;\n }\n\n static isSameOrigin(src: string): boolean {\n return CacheStorage.getOrigin(src) === CacheStorage._origin;\n }\n\n static setContext(window: Window): void {\n CacheStorage._link = window.document.createElement('a');\n CacheStorage._origin = CacheStorage.getOrigin(window.location.href);\n }\n}\n\nexport interface ResourceOptions {\n imageTimeout: number;\n useCORS: boolean;\n allowTaint: boolean;\n proxy?: string;\n}\n\nexport class Cache {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private readonly _cache: {[key: string]: Promise<any>} = {};\n\n constructor(private readonly context: Context, private readonly _options: ResourceOptions) {}\n\n addImage(src: string): Promise<void> {\n const result = Promise.resolve();\n if (this.has(src)) {\n return result;\n }\n\n if (isBlobImage(src) || isRenderable(src)) {\n (this._cache[src] = this.loadImage(src)).catch(() => {\n // prevent unhandled rejection\n });\n return result;\n }\n\n return result;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n match(src: string): Promise<any> {\n return this._cache[src];\n }\n\n private async loadImage(key: string) {\n const isSameOrigin = CacheStorage.isSameOrigin(key);\n const useCORS =\n !isInlineImage(key) && this._options.useCORS === true && FEATURES.SUPPORT_CORS_IMAGES && !isSameOrigin;\n const useProxy =\n !isInlineImage(key) &&\n !isSameOrigin &&\n !isBlobImage(key) &&\n typeof this._options.proxy === 'string' &&\n FEATURES.SUPPORT_CORS_XHR &&\n !useCORS;\n if (\n !isSameOrigin &&\n this._options.allowTaint === false &&\n !isInlineImage(key) &&\n !isBlobImage(key) &&\n !useProxy &&\n !useCORS\n ) {\n return;\n }\n\n let src = key;\n if (useProxy) {\n src = await this.proxy(src);\n }\n\n this.context.logger.debug(`Added image ${key.substring(0, 256)}`);\n\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img);\n img.onerror = reject;\n //ios safari 10.3 taints canvas with data urls unless crossOrigin is set to anonymous\n if (isInlineBase64Image(src) || useCORS) {\n img.crossOrigin = 'anonymous';\n }\n img.src = src;\n if (img.complete === true) {\n // Inline XML images may fail to parse, throwing an Error later on\n setTimeout(() => resolve(img), 500);\n }\n if (this._options.imageTimeout > 0) {\n setTimeout(\n () => reject(`Timed out (${this._options.imageTimeout}ms) loading image`),\n this._options.imageTimeout\n );\n }\n });\n }\n\n private has(key: string): boolean {\n return typeof this._cache[key] !== 'undefined';\n }\n\n keys(): Promise<string[]> {\n return Promise.resolve(Object.keys(this._cache));\n }\n\n private proxy(src: string): Promise<string> {\n const proxy = this._options.proxy;\n\n if (!proxy) {\n throw new Error('No proxy defined');\n }\n\n const key = src.substring(0, 256);\n\n return new Promise((resolve, reject) => {\n const responseType = FEATURES.SUPPORT_RESPONSE_TYPE ? 'blob' : 'text';\n const xhr = new XMLHttpRequest();\n xhr.onload = () => {\n if (xhr.status === 200) {\n if (responseType === 'text') {\n resolve(xhr.response);\n } else {\n const reader = new FileReader();\n reader.addEventListener('load', () => resolve(reader.result as string), false);\n reader.addEventListener('error', (e) => reject(e), false);\n reader.readAsDataURL(xhr.response);\n }\n } else {\n reject(`Failed to proxy resource ${key} with status code ${xhr.status}`);\n }\n };\n\n xhr.onerror = reject;\n const queryString = proxy.indexOf('?') > -1 ? '&' : '?';\n xhr.open('GET', `${proxy}${queryString}url=${encodeURIComponent(src)}&responseType=${responseType}`);\n\n if (responseType !== 'text' && xhr instanceof XMLHttpRequest) {\n xhr.responseType = responseType;\n }\n\n if (this._options.imageTimeout) {\n const timeout = this._options.imageTimeout;\n xhr.timeout = timeout;\n xhr.ontimeout = () => reject(`Timed out (${timeout}ms) proxying ${key}`);\n }\n\n xhr.send();\n });\n }\n}\n\nconst INLINE_SVG = /^data:image\\/svg\\+xml/i;\nconst INLINE_BASE64 = /^data:image\\/.*;base64,/i;\nconst INLINE_IMG = /^data:image\\/.*/i;\n\nconst isRenderable = (src: string): boolean => FEATURES.SUPPORT_SVG_DRAWING || !isSVG(src);\nconst isInlineImage = (src: string): boolean => INLINE_IMG.test(src);\nconst isInlineBase64Image = (src: string): boolean => INLINE_BASE64.test(src);\nconst isBlobImage = (src: string): boolean => src.substr(0, 4) === 'blob';\n\nconst isSVG = (src: string): boolean => src.substr(-3).toLowerCase() === 'svg' || INLINE_SVG.test(src);\n", "import {IPath, Path, PathType} from './path';\n\nexport class Vector implements IPath {\n type: PathType;\n x: number;\n y: number;\n\n constructor(x: number, y: number) {\n this.type = PathType.VECTOR;\n this.x = x;\n this.y = y;\n }\n\n add(deltaX: number, deltaY: number): Vector {\n return new Vector(this.x + deltaX, this.y + deltaY);\n }\n}\n\nexport const isVector = (path: Path): path is Vector => path.type === PathType.VECTOR;\n", "import {Vector} from './vector';\nimport {IPath, PathType, Path} from './path';\n\nconst lerp = (a: Vector, b: Vector, t: number): Vector => {\n return new Vector(a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t);\n};\n\nexport class BezierCurve implements IPath {\n type: PathType;\n start: Vector;\n startControl: Vector;\n endControl: Vector;\n end: Vector;\n\n constructor(start: Vector, startControl: Vector, endControl: Vector, end: Vector) {\n this.type = PathType.BEZIER_CURVE;\n this.start = start;\n this.startControl = startControl;\n this.endControl = endControl;\n this.end = end;\n }\n\n subdivide(t: number, firstHalf: boolean): BezierCurve {\n const ab = lerp(this.start, this.startControl, t);\n const bc = lerp(this.startControl, this.endControl, t);\n const cd = lerp(this.endControl, this.end, t);\n const abbc = lerp(ab, bc, t);\n const bccd = lerp(bc, cd, t);\n const dest = lerp(abbc, bccd, t);\n return firstHalf ? new BezierCurve(this.start, ab, abbc, dest) : new BezierCurve(dest, bccd, cd, this.end);\n }\n\n add(deltaX: number, deltaY: number): BezierCurve {\n return new BezierCurve(\n this.start.add(deltaX, deltaY),\n this.startControl.add(deltaX, deltaY),\n this.endControl.add(deltaX, deltaY),\n this.end.add(deltaX, deltaY)\n );\n }\n\n reverse(): BezierCurve {\n return new BezierCurve(this.end, this.endControl, this.startControl, this.start);\n }\n}\n\nexport const isBezierCurve = (path: Path): path is BezierCurve => path.type === PathType.BEZIER_CURVE;\n", "import {ElementContainer} from '../dom/element-container';\nimport {getAbsoluteValue, getAbsoluteValueForTuple} from '../css/types/length-percentage';\nimport {Vector} from './vector';\nimport {BezierCurve} from './bezier-curve';\nimport {Path} from './path';\n\nexport class BoundCurves {\n readonly topLeftBorderDoubleOuterBox: Path;\n readonly topRightBorderDoubleOuterBox: Path;\n readonly bottomRightBorderDoubleOuterBox: Path;\n readonly bottomLeftBorderDoubleOuterBox: Path;\n readonly topLeftBorderDoubleInnerBox: Path;\n readonly topRightBorderDoubleInnerBox: Path;\n readonly bottomRightBorderDoubleInnerBox: Path;\n readonly bottomLeftBorderDoubleInnerBox: Path;\n readonly topLeftBorderStroke: Path;\n readonly topRightBorderStroke: Path;\n readonly bottomRightBorderStroke: Path;\n readonly bottomLeftBorderStroke: Path;\n readonly topLeftBorderBox: Path;\n readonly topRightBorderBox: Path;\n readonly bottomRightBorderBox: Path;\n readonly bottomLeftBorderBox: Path;\n readonly topLeftPaddingBox: Path;\n readonly topRightPaddingBox: Path;\n readonly bottomRightPaddingBox: Path;\n readonly bottomLeftPaddingBox: Path;\n readonly topLeftContentBox: Path;\n readonly topRightContentBox: Path;\n readonly bottomRightContentBox: Path;\n readonly bottomLeftContentBox: Path;\n\n constructor(element: ElementContainer) {\n const styles = element.styles;\n const bounds = element.bounds;\n\n let [tlh, tlv] = getAbsoluteValueForTuple(styles.borderTopLeftRadius, bounds.width, bounds.height);\n let [trh, trv] = getAbsoluteValueForTuple(styles.borderTopRightRadius, bounds.width, bounds.height);\n let [brh, brv] = getAbsoluteValueForTuple(styles.borderBottomRightRadius, bounds.width, bounds.height);\n let [blh, blv] = getAbsoluteValueForTuple(styles.borderBottomLeftRadius, bounds.width, bounds.height);\n\n const factors = [];\n factors.push((tlh + trh) / bounds.width);\n factors.push((blh + brh) / bounds.width);\n factors.push((tlv + blv) / bounds.height);\n factors.push((trv + brv) / bounds.height);\n const maxFactor = Math.max(...factors);\n\n if (maxFactor > 1) {\n tlh /= maxFactor;\n tlv /= maxFactor;\n trh /= maxFactor;\n trv /= maxFactor;\n brh /= maxFactor;\n brv /= maxFactor;\n blh /= maxFactor;\n blv /= maxFactor;\n }\n\n const topWidth = bounds.width - trh;\n const rightHeight = bounds.height - brv;\n const bottomWidth = bounds.width - brh;\n const leftHeight = bounds.height - blv;\n\n const borderTopWidth = styles.borderTopWidth;\n const borderRightWidth = styles.borderRightWidth;\n const borderBottomWidth = styles.borderBottomWidth;\n const borderLeftWidth = styles.borderLeftWidth;\n\n const paddingTop = getAbsoluteValue(styles.paddingTop, element.bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, element.bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, element.bounds.width);\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, element.bounds.width);\n\n this.topLeftBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + borderTopWidth / 3,\n tlh - borderLeftWidth / 3,\n tlv - borderTopWidth / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + borderTopWidth / 3);\n this.topRightBorderDoubleOuterBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 3,\n trh - borderRightWidth / 3,\n trv - borderTopWidth / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 3, bounds.top + borderTopWidth / 3);\n this.bottomRightBorderDoubleOuterBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 3,\n brv - borderBottomWidth / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 3,\n bounds.top + bounds.height - borderBottomWidth / 3\n );\n this.bottomLeftBorderDoubleOuterBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 3,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 3,\n blv - borderBottomWidth / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 3, bounds.top + bounds.height - borderBottomWidth / 3);\n this.topLeftBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3,\n tlh - (borderLeftWidth * 2) / 3,\n tlv - (borderTopWidth * 2) / 3,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + (borderLeftWidth * 2) / 3, bounds.top + (borderTopWidth * 2) / 3);\n this.topRightBorderDoubleInnerBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + (borderTopWidth * 2) / 3,\n trh - (borderRightWidth * 2) / 3,\n trv - (borderTopWidth * 2) / 3,\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + (borderTopWidth * 2) / 3\n );\n this.bottomRightBorderDoubleInnerBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - (borderRightWidth * 2) / 3,\n brv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.bottomLeftBorderDoubleInnerBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + leftHeight,\n blh - (borderLeftWidth * 2) / 3,\n blv - (borderBottomWidth * 2) / 3,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + (borderLeftWidth * 2) / 3,\n bounds.top + bounds.height - (borderBottomWidth * 2) / 3\n );\n this.topLeftBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + borderTopWidth / 2,\n tlh - borderLeftWidth / 2,\n tlv - borderTopWidth / 2,\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + borderTopWidth / 2);\n this.topRightBorderStroke =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + topWidth,\n bounds.top + borderTopWidth / 2,\n trh - borderRightWidth / 2,\n trv - borderTopWidth / 2,\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth / 2, bounds.top + borderTopWidth / 2);\n this.bottomRightBorderStroke =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + bottomWidth,\n bounds.top + rightHeight,\n brh - borderRightWidth / 2,\n brv - borderBottomWidth / 2,\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth / 2,\n bounds.top + bounds.height - borderBottomWidth / 2\n );\n this.bottomLeftBorderStroke =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth / 2,\n bounds.top + leftHeight,\n blh - borderLeftWidth / 2,\n blv - borderBottomWidth / 2,\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth / 2, bounds.top + bounds.height - borderBottomWidth / 2);\n this.topLeftBorderBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(bounds.left, bounds.top, tlh, tlv, CORNER.TOP_LEFT)\n : new Vector(bounds.left, bounds.top);\n this.topRightBorderBox =\n trh > 0 || trv > 0\n ? getCurvePoints(bounds.left + topWidth, bounds.top, trh, trv, CORNER.TOP_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top);\n this.bottomRightBorderBox =\n brh > 0 || brv > 0\n ? getCurvePoints(bounds.left + bottomWidth, bounds.top + rightHeight, brh, brv, CORNER.BOTTOM_RIGHT)\n : new Vector(bounds.left + bounds.width, bounds.top + bounds.height);\n this.bottomLeftBorderBox =\n blh > 0 || blv > 0\n ? getCurvePoints(bounds.left, bounds.top + leftHeight, blh, blv, CORNER.BOTTOM_LEFT)\n : new Vector(bounds.left, bounds.top + bounds.height);\n this.topLeftPaddingBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + borderTopWidth,\n Math.max(0, tlh - borderLeftWidth),\n Math.max(0, tlv - borderTopWidth),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + borderTopWidth);\n this.topRightPaddingBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width - borderRightWidth),\n bounds.top + borderTopWidth,\n topWidth > bounds.width + borderRightWidth ? 0 : Math.max(0, trh - borderRightWidth),\n Math.max(0, trv - borderTopWidth),\n CORNER.TOP_RIGHT\n )\n : new Vector(bounds.left + bounds.width - borderRightWidth, bounds.top + borderTopWidth);\n this.bottomRightPaddingBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - borderLeftWidth),\n bounds.top + Math.min(rightHeight, bounds.height - borderBottomWidth),\n Math.max(0, brh - borderRightWidth),\n Math.max(0, brv - borderBottomWidth),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - borderRightWidth,\n bounds.top + bounds.height - borderBottomWidth\n );\n this.bottomLeftPaddingBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth,\n bounds.top + Math.min(leftHeight, bounds.height - borderBottomWidth),\n Math.max(0, blh - borderLeftWidth),\n Math.max(0, blv - borderBottomWidth),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth, bounds.top + bounds.height - borderBottomWidth);\n this.topLeftContentBox =\n tlh > 0 || tlv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + borderTopWidth + paddingTop,\n Math.max(0, tlh - (borderLeftWidth + paddingLeft)),\n Math.max(0, tlv - (borderTopWidth + paddingTop)),\n CORNER.TOP_LEFT\n )\n : new Vector(bounds.left + borderLeftWidth + paddingLeft, bounds.top + borderTopWidth + paddingTop);\n this.topRightContentBox =\n trh > 0 || trv > 0\n ? getCurvePoints(\n bounds.left + Math.min(topWidth, bounds.width + borderLeftWidth + paddingLeft),\n bounds.top + borderTopWidth + paddingTop,\n topWidth > bounds.width + borderLeftWidth + paddingLeft ? 0 : trh - borderLeftWidth + paddingLeft,\n trv - (borderTopWidth + paddingTop),\n CORNER.TOP_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + borderTopWidth + paddingTop\n );\n this.bottomRightContentBox =\n brh > 0 || brv > 0\n ? getCurvePoints(\n bounds.left + Math.min(bottomWidth, bounds.width - (borderLeftWidth + paddingLeft)),\n bounds.top + Math.min(rightHeight, bounds.height + borderTopWidth + paddingTop),\n Math.max(0, brh - (borderRightWidth + paddingRight)),\n brv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_RIGHT\n )\n : new Vector(\n bounds.left + bounds.width - (borderRightWidth + paddingRight),\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n this.bottomLeftContentBox =\n blh > 0 || blv > 0\n ? getCurvePoints(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + leftHeight,\n Math.max(0, blh - (borderLeftWidth + paddingLeft)),\n blv - (borderBottomWidth + paddingBottom),\n CORNER.BOTTOM_LEFT\n )\n : new Vector(\n bounds.left + borderLeftWidth + paddingLeft,\n bounds.top + bounds.height - (borderBottomWidth + paddingBottom)\n );\n }\n}\n\nenum CORNER {\n TOP_LEFT = 0,\n TOP_RIGHT = 1,\n BOTTOM_RIGHT = 2,\n BOTTOM_LEFT = 3\n}\n\nconst getCurvePoints = (x: number, y: number, r1: number, r2: number, position: CORNER): BezierCurve => {\n const kappa = 4 * ((Math.sqrt(2) - 1) / 3);\n const ox = r1 * kappa; // control point offset horizontal\n const oy = r2 * kappa; // control point offset vertical\n const xm = x + r1; // x-middle\n const ym = y + r2; // y-middle\n\n switch (position) {\n case CORNER.TOP_LEFT:\n return new BezierCurve(\n new Vector(x, ym),\n new Vector(x, ym - oy),\n new Vector(xm - ox, y),\n new Vector(xm, y)\n );\n case CORNER.TOP_RIGHT:\n return new BezierCurve(\n new Vector(x, y),\n new Vector(x + ox, y),\n new Vector(xm, ym - oy),\n new Vector(xm, ym)\n );\n case CORNER.BOTTOM_RIGHT:\n return new BezierCurve(\n new Vector(xm, y),\n new Vector(xm, y + oy),\n new Vector(x + ox, ym),\n new Vector(x, ym)\n );\n case CORNER.BOTTOM_LEFT:\n default:\n return new BezierCurve(\n new Vector(xm, ym),\n new Vector(xm - ox, ym),\n new Vector(x, y + oy),\n new Vector(x, y)\n );\n }\n};\n\nexport const calculateBorderBoxPath = (curves: BoundCurves): Path[] => {\n return [curves.topLeftBorderBox, curves.topRightBorderBox, curves.bottomRightBorderBox, curves.bottomLeftBorderBox];\n};\n\nexport const calculateContentBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftContentBox,\n curves.topRightContentBox,\n curves.bottomRightContentBox,\n curves.bottomLeftContentBox\n ];\n};\n\nexport const calculatePaddingBoxPath = (curves: BoundCurves): Path[] => {\n return [\n curves.topLeftPaddingBox,\n curves.topRightPaddingBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftPaddingBox\n ];\n};\n", "import {Matrix} from '../css/property-descriptors/transform';\nimport {Path} from './path';\n\nexport const enum EffectType {\n TRANSFORM = 0,\n CLIP = 1,\n OPACITY = 2\n}\n\nexport const enum EffectTarget {\n BACKGROUND_BORDERS = 1 << 1,\n CONTENT = 1 << 2\n}\n\nexport interface IElementEffect {\n readonly type: EffectType;\n readonly target: number;\n}\n\nexport class TransformEffect implements IElementEffect {\n readonly type: EffectType = EffectType.TRANSFORM;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly offsetX: number, readonly offsetY: number, readonly matrix: Matrix) {}\n}\n\nexport class ClipEffect implements IElementEffect {\n readonly type: EffectType = EffectType.CLIP;\n\n constructor(readonly path: Path[], readonly target: EffectTarget) {}\n}\n\nexport class OpacityEffect implements IElementEffect {\n readonly type: EffectType = EffectType.OPACITY;\n readonly target: number = EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT;\n\n constructor(readonly opacity: number) {}\n}\n\nexport const isTransformEffect = (effect: IElementEffect): effect is TransformEffect =>\n effect.type === EffectType.TRANSFORM;\nexport const isClipEffect = (effect: IElementEffect): effect is ClipEffect => effect.type === EffectType.CLIP;\nexport const isOpacityEffect = (effect: IElementEffect): effect is OpacityEffect => effect.type === EffectType.OPACITY;\n", "import {BezierCurve} from './bezier-curve';\nimport {Vector} from './vector';\nexport const enum PathType {\n VECTOR = 0,\n BEZIER_CURVE = 1\n}\n\nexport interface IPath {\n type: PathType;\n add(deltaX: number, deltaY: number): IPath;\n}\n\nexport const equalPath = (a: Path[], b: Path[]): boolean => {\n if (a.length === b.length) {\n return a.some((v, i) => v === b[i]);\n }\n\n return false;\n};\n\nexport const transformPath = (path: Path[], deltaX: number, deltaY: number, deltaW: number, deltaH: number): Path[] => {\n return path.map((point, index) => {\n switch (index) {\n case 0:\n return point.add(deltaX, deltaY);\n case 1:\n return point.add(deltaX + deltaW, deltaY);\n case 2:\n return point.add(deltaX + deltaW, deltaY + deltaH);\n case 3:\n return point.add(deltaX, deltaY + deltaH);\n }\n return point;\n });\n};\n\nexport type Path = Vector | BezierCurve;\n", "import {ElementContainer, FLAGS} from '../dom/element-container';\nimport {contains} from '../core/bitwise';\nimport {BoundCurves, calculateBorderBoxPath, calculatePaddingBoxPath} from './bound-curves';\nimport {ClipEffect, EffectTarget, IElementEffect, isClipEffect, OpacityEffect, TransformEffect} from './effects';\nimport {OVERFLOW} from '../css/property-descriptors/overflow';\nimport {equalPath} from './path';\nimport {DISPLAY} from '../css/property-descriptors/display';\nimport {OLElementContainer} from '../dom/elements/ol-element-container';\nimport {LIElementContainer} from '../dom/elements/li-element-container';\nimport {createCounterText} from '../css/types/functions/counter';\nimport {POSITION} from '../css/property-descriptors/position';\n\nexport class StackingContext {\n element: ElementPaint;\n negativeZIndex: StackingContext[];\n zeroOrAutoZIndexOrTransformedOrOpacity: StackingContext[];\n positiveZIndex: StackingContext[];\n nonPositionedFloats: StackingContext[];\n nonPositionedInlineLevel: StackingContext[];\n inlineLevel: ElementPaint[];\n nonInlineLevel: ElementPaint[];\n\n constructor(container: ElementPaint) {\n this.element = container;\n this.inlineLevel = [];\n this.nonInlineLevel = [];\n this.negativeZIndex = [];\n this.zeroOrAutoZIndexOrTransformedOrOpacity = [];\n this.positiveZIndex = [];\n this.nonPositionedFloats = [];\n this.nonPositionedInlineLevel = [];\n }\n}\n\nexport class ElementPaint {\n readonly effects: IElementEffect[] = [];\n readonly curves: BoundCurves;\n listValue?: string;\n\n constructor(readonly container: ElementContainer, readonly parent: ElementPaint | null) {\n this.curves = new BoundCurves(this.container);\n if (this.container.styles.opacity < 1) {\n this.effects.push(new OpacityEffect(this.container.styles.opacity));\n }\n\n if (this.container.styles.transform !== null) {\n const offsetX = this.container.bounds.left + this.container.styles.transformOrigin[0].number;\n const offsetY = this.container.bounds.top + this.container.styles.transformOrigin[1].number;\n const matrix = this.container.styles.transform;\n this.effects.push(new TransformEffect(offsetX, offsetY, matrix));\n }\n\n if (this.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(this.curves);\n const paddingBox = calculatePaddingBoxPath(this.curves);\n\n if (equalPath(borderBox, paddingBox)) {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT));\n } else {\n this.effects.push(new ClipEffect(borderBox, EffectTarget.BACKGROUND_BORDERS));\n this.effects.push(new ClipEffect(paddingBox, EffectTarget.CONTENT));\n }\n }\n }\n\n getEffects(target: EffectTarget): IElementEffect[] {\n let inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(this.container.styles.position) === -1;\n let parent = this.parent;\n const effects = this.effects.slice(0);\n while (parent) {\n const croplessEffects = parent.effects.filter((effect) => !isClipEffect(effect));\n if (inFlow || parent.container.styles.position !== POSITION.STATIC || !parent.parent) {\n effects.unshift(...croplessEffects);\n inFlow = [POSITION.ABSOLUTE, POSITION.FIXED].indexOf(parent.container.styles.position) === -1;\n if (parent.container.styles.overflowX !== OVERFLOW.VISIBLE) {\n const borderBox = calculateBorderBoxPath(parent.curves);\n const paddingBox = calculatePaddingBoxPath(parent.curves);\n if (!equalPath(borderBox, paddingBox)) {\n effects.unshift(\n new ClipEffect(paddingBox, EffectTarget.BACKGROUND_BORDERS | EffectTarget.CONTENT)\n );\n }\n }\n } else {\n effects.unshift(...croplessEffects);\n }\n\n parent = parent.parent;\n }\n\n return effects.filter((effect) => contains(effect.target, target));\n }\n}\n\nconst parseStackTree = (\n parent: ElementPaint,\n stackingContext: StackingContext,\n realStackingContext: StackingContext,\n listItems: ElementPaint[]\n) => {\n parent.container.elements.forEach((child) => {\n const treatAsRealStackingContext = contains(child.flags, FLAGS.CREATES_REAL_STACKING_CONTEXT);\n const createsStackingContext = contains(child.flags, FLAGS.CREATES_STACKING_CONTEXT);\n const paintContainer = new ElementPaint(child, parent);\n if (contains(child.styles.display, DISPLAY.LIST_ITEM)) {\n listItems.push(paintContainer);\n }\n\n const listOwnerItems = contains(child.flags, FLAGS.IS_LIST_OWNER) ? [] : listItems;\n\n if (treatAsRealStackingContext || createsStackingContext) {\n const parentStack =\n treatAsRealStackingContext || child.styles.isPositioned() ? realStackingContext : stackingContext;\n\n const stack = new StackingContext(paintContainer);\n\n if (child.styles.isPositioned() || child.styles.opacity < 1 || child.styles.isTransformed()) {\n const order = child.styles.zIndex.order;\n if (order < 0) {\n let index = 0;\n\n parentStack.negativeZIndex.some((current, i) => {\n if (order > current.element.container.styles.zIndex.order) {\n index = i;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.negativeZIndex.splice(index, 0, stack);\n } else if (order > 0) {\n let index = 0;\n parentStack.positiveZIndex.some((current, i) => {\n if (order >= current.element.container.styles.zIndex.order) {\n index = i + 1;\n return false;\n } else if (index > 0) {\n return true;\n }\n\n return false;\n });\n parentStack.positiveZIndex.splice(index, 0, stack);\n } else {\n parentStack.zeroOrAutoZIndexOrTransformedOrOpacity.push(stack);\n }\n } else {\n if (child.styles.isFloating()) {\n parentStack.nonPositionedFloats.push(stack);\n } else {\n parentStack.nonPositionedInlineLevel.push(stack);\n }\n }\n\n parseStackTree(\n paintContainer,\n stack,\n treatAsRealStackingContext ? stack : realStackingContext,\n listOwnerItems\n );\n } else {\n if (child.styles.isInlineLevel()) {\n stackingContext.inlineLevel.push(paintContainer);\n } else {\n stackingContext.nonInlineLevel.push(paintContainer);\n }\n\n parseStackTree(paintContainer, stackingContext, realStackingContext, listOwnerItems);\n }\n\n if (contains(child.flags, FLAGS.IS_LIST_OWNER)) {\n processListItems(child, listOwnerItems);\n }\n });\n};\n\nconst processListItems = (owner: ElementContainer, elements: ElementPaint[]) => {\n let numbering = owner instanceof OLElementContainer ? owner.start : 1;\n const reversed = owner instanceof OLElementContainer ? owner.reversed : false;\n for (let i = 0; i < elements.length; i++) {\n const item = elements[i];\n if (\n item.container instanceof LIElementContainer &&\n typeof item.container.value === 'number' &&\n item.container.value !== 0\n ) {\n numbering = item.container.value;\n }\n\n item.listValue = createCounterText(numbering, item.container.styles.listStyleType, true);\n\n numbering += reversed ? -1 : 1;\n }\n};\n\nexport const parseStackingContexts = (container: ElementContainer): StackingContext => {\n const paintContainer = new ElementPaint(container, null);\n const root = new StackingContext(paintContainer);\n const listItems: ElementPaint[] = [];\n parseStackTree(paintContainer, root, root, listItems);\n processListItems(paintContainer.container, listItems);\n return root;\n};\n", "import {Path} from './path';\nimport {BoundCurves} from './bound-curves';\nimport {isBezierCurve} from './bezier-curve';\n\nexport const parsePathForBorder = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleOuter = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox,\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderBox,\n curves.topRightBorderDoubleOuterBox,\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderBox,\n curves.bottomRightBorderDoubleOuterBox,\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderBox,\n curves.bottomLeftBorderDoubleOuterBox,\n curves.topLeftBorderBox,\n curves.topLeftBorderDoubleOuterBox\n );\n }\n};\n\nexport const parsePathForBorderDoubleInner = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createPathFromCurves(\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox,\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox\n );\n case 1:\n return createPathFromCurves(\n curves.topRightBorderDoubleInnerBox,\n curves.topRightPaddingBox,\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox\n );\n case 2:\n return createPathFromCurves(\n curves.bottomRightBorderDoubleInnerBox,\n curves.bottomRightPaddingBox,\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox\n );\n case 3:\n default:\n return createPathFromCurves(\n curves.bottomLeftBorderDoubleInnerBox,\n curves.bottomLeftPaddingBox,\n curves.topLeftBorderDoubleInnerBox,\n curves.topLeftPaddingBox\n );\n }\n};\n\nexport const parsePathForBorderStroke = (curves: BoundCurves, borderSide: number): Path[] => {\n switch (borderSide) {\n case 0:\n return createStrokePathFromCurves(curves.topLeftBorderStroke, curves.topRightBorderStroke);\n case 1:\n return createStrokePathFromCurves(curves.topRightBorderStroke, curves.bottomRightBorderStroke);\n case 2:\n return createStrokePathFromCurves(curves.bottomRightBorderStroke, curves.bottomLeftBorderStroke);\n case 3:\n default:\n return createStrokePathFromCurves(curves.bottomLeftBorderStroke, curves.topLeftBorderStroke);\n }\n};\n\nconst createStrokePathFromCurves = (outer1: Path, outer2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n return path;\n};\n\nconst createPathFromCurves = (outer1: Path, inner1: Path, outer2: Path, inner2: Path): Path[] => {\n const path = [];\n if (isBezierCurve(outer1)) {\n path.push(outer1.subdivide(0.5, false));\n } else {\n path.push(outer1);\n }\n\n if (isBezierCurve(outer2)) {\n path.push(outer2.subdivide(0.5, true));\n } else {\n path.push(outer2);\n }\n\n if (isBezierCurve(inner2)) {\n path.push(inner2.subdivide(0.5, true).reverse());\n } else {\n path.push(inner2);\n }\n\n if (isBezierCurve(inner1)) {\n path.push(inner1.subdivide(0.5, false).reverse());\n } else {\n path.push(inner1);\n }\n\n return path;\n};\n", "import {getAbsoluteValue} from '../css/types/length-percentage';\nimport {Bounds} from '../css/layout/bounds';\nimport {ElementContainer} from '../dom/element-container';\n\nexport const paddingBox = (element: ElementContainer): Bounds => {\n const bounds = element.bounds;\n const styles = element.styles;\n return bounds.add(\n styles.borderLeftWidth,\n styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth),\n -(styles.borderTopWidth + styles.borderBottomWidth)\n );\n};\n\nexport const contentBox = (element: ElementContainer): Bounds => {\n const styles = element.styles;\n const bounds = element.bounds;\n\n const paddingLeft = getAbsoluteValue(styles.paddingLeft, bounds.width);\n const paddingRight = getAbsoluteValue(styles.paddingRight, bounds.width);\n const paddingTop = getAbsoluteValue(styles.paddingTop, bounds.width);\n const paddingBottom = getAbsoluteValue(styles.paddingBottom, bounds.width);\n\n return bounds.add(\n paddingLeft + styles.borderLeftWidth,\n paddingTop + styles.borderTopWidth,\n -(styles.borderRightWidth + styles.borderLeftWidth + paddingLeft + paddingRight),\n -(styles.borderTopWidth + styles.borderBottomWidth + paddingTop + paddingBottom)\n );\n};\n", "import {Bounds} from '../css/layout/bounds';\nimport {BACKGROUND_ORIGIN} from '../css/property-descriptors/background-origin';\nimport {ElementContainer} from '../dom/element-container';\nimport {BACKGROUND_SIZE, BackgroundSizeInfo} from '../css/property-descriptors/background-size';\nimport {Vector} from './vector';\nimport {BACKGROUND_REPEAT} from '../css/property-descriptors/background-repeat';\nimport {getAbsoluteValue, getAbsoluteValueForTuple, isLengthPercentage} from '../css/types/length-percentage';\nimport {CSSValue, isIdentToken} from '../css/syntax/parser';\nimport {contentBox, paddingBox} from './box-sizing';\nimport {Path} from './path';\nimport {BACKGROUND_CLIP} from '../css/property-descriptors/background-clip';\n\nexport const calculateBackgroundPositioningArea = (\n backgroundOrigin: BACKGROUND_ORIGIN,\n element: ElementContainer\n): Bounds => {\n if (backgroundOrigin === BACKGROUND_ORIGIN.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundOrigin === BACKGROUND_ORIGIN.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundPaintingArea = (backgroundClip: BACKGROUND_CLIP, element: ElementContainer): Bounds => {\n if (backgroundClip === BACKGROUND_CLIP.BORDER_BOX) {\n return element.bounds;\n }\n\n if (backgroundClip === BACKGROUND_CLIP.CONTENT_BOX) {\n return contentBox(element);\n }\n\n return paddingBox(element);\n};\n\nexport const calculateBackgroundRendering = (\n container: ElementContainer,\n index: number,\n intrinsicSize: [number | null, number | null, number | null]\n): [Path[], number, number, number, number] => {\n const backgroundPositioningArea = calculateBackgroundPositioningArea(\n getBackgroundValueForIndex(container.styles.backgroundOrigin, index),\n container\n );\n\n const backgroundPaintingArea = calculateBackgroundPaintingArea(\n getBackgroundValueForIndex(container.styles.backgroundClip, index),\n container\n );\n\n const backgroundImageSize = calculateBackgroundSize(\n getBackgroundValueForIndex(container.styles.backgroundSize, index),\n intrinsicSize,\n backgroundPositioningArea\n );\n\n const [sizeWidth, sizeHeight] = backgroundImageSize;\n\n const position = getAbsoluteValueForTuple(\n getBackgroundValueForIndex(container.styles.backgroundPosition, index),\n backgroundPositioningArea.width - sizeWidth,\n backgroundPositioningArea.height - sizeHeight\n );\n\n const path = calculateBackgroundRepeatPath(\n getBackgroundValueForIndex(container.styles.backgroundRepeat, index),\n position,\n backgroundImageSize,\n backgroundPositioningArea,\n backgroundPaintingArea\n );\n\n const offsetX = Math.round(backgroundPositioningArea.left + position[0]);\n const offsetY = Math.round(backgroundPositioningArea.top + position[1]);\n\n return [path, offsetX, offsetY, sizeWidth, sizeHeight];\n};\n\nexport const isAuto = (token: CSSValue): boolean => isIdentToken(token) && token.value === BACKGROUND_SIZE.AUTO;\n\nconst hasIntrinsicValue = (value: number | null): value is number => typeof value === 'number';\n\nexport const calculateBackgroundSize = (\n size: BackgroundSizeInfo[],\n [intrinsicWidth, intrinsicHeight, intrinsicProportion]: [number | null, number | null, number | null],\n bounds: Bounds\n): [number, number] => {\n const [first, second] = size;\n\n if (!first) {\n return [0, 0];\n }\n\n if (isLengthPercentage(first) && second && isLengthPercentage(second)) {\n return [getAbsoluteValue(first, bounds.width), getAbsoluteValue(second, bounds.height)];\n }\n\n const hasIntrinsicProportion = hasIntrinsicValue(intrinsicProportion);\n\n if (isIdentToken(first) && (first.value === BACKGROUND_SIZE.CONTAIN || first.value === BACKGROUND_SIZE.COVER)) {\n if (hasIntrinsicValue(intrinsicProportion)) {\n const targetRatio = bounds.width / bounds.height;\n\n return targetRatio < intrinsicProportion !== (first.value === BACKGROUND_SIZE.COVER)\n ? [bounds.width, bounds.width / intrinsicProportion]\n : [bounds.height * intrinsicProportion, bounds.height];\n }\n\n return [bounds.width, bounds.height];\n }\n\n const hasIntrinsicWidth = hasIntrinsicValue(intrinsicWidth);\n const hasIntrinsicHeight = hasIntrinsicValue(intrinsicHeight);\n const hasIntrinsicDimensions = hasIntrinsicWidth || hasIntrinsicHeight;\n\n // If the background-size is auto or auto auto:\n if (isAuto(first) && (!second || isAuto(second))) {\n // If the image has both horizontal and vertical intrinsic dimensions, it's rendered at that size.\n if (hasIntrinsicWidth && hasIntrinsicHeight) {\n return [intrinsicWidth as number, intrinsicHeight as number];\n }\n\n // If the image has no intrinsic dimensions and has no intrinsic proportions,\n // it's rendered at the size of the background positioning area.\n\n if (!hasIntrinsicProportion && !hasIntrinsicDimensions) {\n return [bounds.width, bounds.height];\n }\n\n // TODO If the image has no intrinsic dimensions but has intrinsic proportions, it's rendered as if contain had been specified instead.\n\n // If the image has only one intrinsic dimension and has intrinsic proportions, it's rendered at the size corresponding to that one dimension.\n // The other dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicDimensions && hasIntrinsicProportion) {\n const width = hasIntrinsicWidth\n ? (intrinsicWidth as number)\n : (intrinsicHeight as number) * (intrinsicProportion as number);\n const height = hasIntrinsicHeight\n ? (intrinsicHeight as number)\n : (intrinsicWidth as number) / (intrinsicProportion as number);\n return [width, height];\n }\n\n // If the image has only one intrinsic dimension but has no intrinsic proportions,\n // it's rendered using the specified dimension and the other dimension of the background positioning area.\n const width = hasIntrinsicWidth ? (intrinsicWidth as number) : bounds.width;\n const height = hasIntrinsicHeight ? (intrinsicHeight as number) : bounds.height;\n return [width, height];\n }\n\n // If the image has intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the specified dimension and the intrinsic proportions.\n if (hasIntrinsicProportion) {\n let width = 0;\n let height = 0;\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (isAuto(first)) {\n width = height * (intrinsicProportion as number);\n } else if (!second || isAuto(second)) {\n height = width / (intrinsicProportion as number);\n }\n\n return [width, height];\n }\n\n // If the image has no intrinsic proportions, it's stretched to the specified dimension.\n // The unspecified dimension is computed using the image's corresponding intrinsic dimension,\n // if there is one. If there is no such intrinsic dimension,\n // it becomes the corresponding dimension of the background positioning area.\n\n let width = null;\n let height = null;\n\n if (isLengthPercentage(first)) {\n width = getAbsoluteValue(first, bounds.width);\n } else if (second && isLengthPercentage(second)) {\n height = getAbsoluteValue(second, bounds.height);\n }\n\n if (width !== null && (!second || isAuto(second))) {\n height =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (width / (intrinsicWidth as number)) * (intrinsicHeight as number)\n : bounds.height;\n }\n\n if (height !== null && isAuto(first)) {\n width =\n hasIntrinsicWidth && hasIntrinsicHeight\n ? (height / (intrinsicHeight as number)) * (intrinsicWidth as number)\n : bounds.width;\n }\n\n if (width !== null && height !== null) {\n return [width, height];\n }\n\n throw new Error(`Unable to calculate background-size for element`);\n};\n\nexport const getBackgroundValueForIndex = <T>(values: T[], index: number): T => {\n const value = values[index];\n if (typeof value === 'undefined') {\n return values[0];\n }\n\n return value;\n};\n\nexport const calculateBackgroundRepeatPath = (\n repeat: BACKGROUND_REPEAT,\n [x, y]: [number, number],\n [width, height]: [number, number],\n backgroundPositioningArea: Bounds,\n backgroundPaintingArea: Bounds\n): [Vector, Vector, Vector, Vector] => {\n switch (repeat) {\n case BACKGROUND_REPEAT.REPEAT_X:\n return [\n new Vector(Math.round(backgroundPositioningArea.left), Math.round(backgroundPositioningArea.top + y)),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + backgroundPositioningArea.width),\n Math.round(height + backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left),\n Math.round(height + backgroundPositioningArea.top + y)\n )\n ];\n case BACKGROUND_REPEAT.REPEAT_Y:\n return [\n new Vector(Math.round(backgroundPositioningArea.left + x), Math.round(backgroundPositioningArea.top)),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.height + backgroundPositioningArea.top)\n )\n ];\n case BACKGROUND_REPEAT.NO_REPEAT:\n return [\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x + width),\n Math.round(backgroundPositioningArea.top + y + height)\n ),\n new Vector(\n Math.round(backgroundPositioningArea.left + x),\n Math.round(backgroundPositioningArea.top + y + height)\n )\n ];\n default:\n return [\n new Vector(Math.round(backgroundPaintingArea.left), Math.round(backgroundPaintingArea.top)),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left + backgroundPaintingArea.width),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n ),\n new Vector(\n Math.round(backgroundPaintingArea.left),\n Math.round(backgroundPaintingArea.height + backgroundPaintingArea.top)\n )\n ];\n }\n};\n", "export const SMALL_IMAGE = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n", "import {SMALL_IMAGE} from '../core/util';\nexport interface FontMetric {\n baseline: number;\n middle: number;\n}\n\nconst SAMPLE_TEXT = 'Hidden Text';\n\nexport class FontMetrics {\n private readonly _data: {[key: string]: FontMetric};\n private readonly _document: Document;\n\n constructor(document: Document) {\n this._data = {};\n this._document = document;\n }\n\n private parseMetrics(fontFamily: string, fontSize: string): FontMetric {\n const container = this._document.createElement('div');\n const img = this._document.createElement('img');\n const span = this._document.createElement('span');\n\n const body = this._document.body as HTMLBodyElement;\n\n container.style.visibility = 'hidden';\n container.style.fontFamily = fontFamily;\n container.style.fontSize = fontSize;\n container.style.margin = '0';\n container.style.padding = '0';\n container.style.whiteSpace = 'nowrap';\n\n body.appendChild(container);\n\n img.src = SMALL_IMAGE;\n img.width = 1;\n img.height = 1;\n\n img.style.margin = '0';\n img.style.padding = '0';\n img.style.verticalAlign = 'baseline';\n\n span.style.fontFamily = fontFamily;\n span.style.fontSize = fontSize;\n span.style.margin = '0';\n span.style.padding = '0';\n\n span.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n container.appendChild(span);\n container.appendChild(img);\n const baseline = img.offsetTop - span.offsetTop + 2;\n\n container.removeChild(span);\n container.appendChild(this._document.createTextNode(SAMPLE_TEXT));\n\n container.style.lineHeight = 'normal';\n img.style.verticalAlign = 'super';\n\n const middle = img.offsetTop - container.offsetTop + 2;\n\n body.removeChild(container);\n\n return {baseline, middle};\n }\n getMetrics(fontFamily: string, fontSize: string): FontMetric {\n const key = `${fontFamily} ${fontSize}`;\n if (typeof this._data[key] === 'undefined') {\n this._data[key] = this.parseMetrics(fontFamily, fontSize);\n }\n\n return this._data[key];\n }\n}\n", "import {Context} from '../core/context';\nimport {RenderConfigurations} from './canvas/canvas-renderer';\n\nexport class Renderer {\n constructor(protected readonly context: Context, protected readonly options: RenderConfigurations) {}\n}\n", "import {ElementPaint, parseStackingContexts, StackingContext} from '../stacking-context';\nimport {asString, Color, isTransparent} from '../../css/types/color';\nimport {ElementContainer, FLAGS} from '../../dom/element-container';\nimport {BORDER_STYLE} from '../../css/property-descriptors/border-style';\nimport {CSSParsedDeclaration} from '../../css';\nimport {TextContainer} from '../../dom/text-container';\nimport {Path, transformPath} from '../path';\nimport {BACKGROUND_CLIP} from '../../css/property-descriptors/background-clip';\nimport {BoundCurves, calculateBorderBoxPath, calculateContentBoxPath, calculatePaddingBoxPath} from '../bound-curves';\nimport {BezierCurve, isBezierCurve} from '../bezier-curve';\nimport {Vector} from '../vector';\nimport {CSSImageType, CSSURLImage, isLinearGradient, isRadialGradient} from '../../css/types/image';\nimport {\n parsePathForBorder,\n parsePathForBorderDoubleInner,\n parsePathForBorderDoubleOuter,\n parsePathForBorderStroke\n} from '../border';\nimport {calculateBackgroundRendering, getBackgroundValueForIndex} from '../background';\nimport {isDimensionToken} from '../../css/syntax/parser';\nimport {segmentGraphemes, TextBounds} from '../../css/layout/text';\nimport {ImageElementContainer} from '../../dom/replaced-elements/image-element-container';\nimport {contentBox} from '../box-sizing';\nimport {CanvasElementContainer} from '../../dom/replaced-elements/canvas-element-container';\nimport {SVGElementContainer} from '../../dom/replaced-elements/svg-element-container';\nimport {ReplacedElementContainer} from '../../dom/replaced-elements';\nimport {EffectTarget, IElementEffect, isClipEffect, isOpacityEffect, isTransformEffect} from '../effects';\nimport {contains} from '../../core/bitwise';\nimport {calculateGradientDirection, calculateRadius, processColorStops} from '../../css/types/functions/gradient';\nimport {FIFTY_PERCENT, getAbsoluteValue} from '../../css/types/length-percentage';\nimport {TEXT_DECORATION_LINE} from '../../css/property-descriptors/text-decoration-line';\nimport {FontMetrics} from '../font-metrics';\nimport {DISPLAY} from '../../css/property-descriptors/display';\nimport {Bounds} from '../../css/layout/bounds';\nimport {LIST_STYLE_TYPE} from '../../css/property-descriptors/list-style-type';\nimport {computeLineHeight} from '../../css/property-descriptors/line-height';\nimport {CHECKBOX, INPUT_COLOR, InputElementContainer, RADIO} from '../../dom/replaced-elements/input-element-container';\nimport {TEXT_ALIGN} from '../../css/property-descriptors/text-align';\nimport {TextareaElementContainer} from '../../dom/elements/textarea-element-container';\nimport {SelectElementContainer} from '../../dom/elements/select-element-container';\nimport {IFrameElementContainer} from '../../dom/replaced-elements/iframe-element-container';\nimport {TextShadow} from '../../css/property-descriptors/text-shadow';\nimport {PAINT_ORDER_LAYER} from '../../css/property-descriptors/paint-order';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\nimport {DIRECTION} from '../../css/property-descriptors/direction';\n\nexport type RenderConfigurations = RenderOptions & {\n backgroundColor: Color | null;\n};\n\nexport interface RenderOptions {\n scale: number;\n canvas?: HTMLCanvasElement;\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nconst MASK_OFFSET = 10000;\n\nexport class CanvasRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n private readonly _activeEffects: IElementEffect[] = [];\n private readonly fontMetrics: FontMetrics;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n if (!options.canvas) {\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n }\n this.fontMetrics = new FontMetrics(document);\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.ctx.textBaseline = 'bottom';\n this._activeEffects = [];\n this.context.logger.debug(\n `Canvas renderer initialized (${options.width}x${options.height}) with scale ${options.scale}`\n );\n }\n\n applyEffects(effects: IElementEffect[]): void {\n while (this._activeEffects.length) {\n this.popEffect();\n }\n\n effects.forEach((effect) => this.applyEffect(effect));\n }\n\n applyEffect(effect: IElementEffect): void {\n this.ctx.save();\n if (isOpacityEffect(effect)) {\n this.ctx.globalAlpha = effect.opacity;\n }\n\n if (isTransformEffect(effect)) {\n this.ctx.translate(effect.offsetX, effect.offsetY);\n this.ctx.transform(\n effect.matrix[0],\n effect.matrix[1],\n effect.matrix[2],\n effect.matrix[3],\n effect.matrix[4],\n effect.matrix[5]\n );\n this.ctx.translate(-effect.offsetX, -effect.offsetY);\n }\n\n if (isClipEffect(effect)) {\n this.path(effect.path);\n this.ctx.clip();\n }\n\n this._activeEffects.push(effect);\n }\n\n popEffect(): void {\n this._activeEffects.pop();\n this.ctx.restore();\n }\n\n async renderStack(stack: StackingContext): Promise<void> {\n const styles = stack.element.container.styles;\n if (styles.isVisible()) {\n await this.renderStackContent(stack);\n }\n }\n\n async renderNode(paint: ElementPaint): Promise<void> {\n if (contains(paint.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n\n if (paint.container.styles.isVisible()) {\n await this.renderNodeBackgroundAndBorders(paint);\n await this.renderNodeContent(paint);\n }\n }\n\n renderTextWithLetterSpacing(text: TextBounds, letterSpacing: number, baseline: number): void {\n if (letterSpacing === 0) {\n this.ctx.fillText(text.text, text.bounds.left, text.bounds.top + baseline);\n } else {\n const letters = segmentGraphemes(text.text);\n letters.reduce((left, letter) => {\n this.ctx.fillText(letter, left, text.bounds.top + baseline);\n\n return left + this.ctx.measureText(letter).width;\n }, text.bounds.left);\n }\n }\n\n private createFontStyle(styles: CSSParsedDeclaration): string[] {\n const fontVariant = styles.fontVariant\n .filter((variant) => variant === 'normal' || variant === 'small-caps')\n .join('');\n const fontFamily = fixIOSSystemFonts(styles.fontFamily).join(', ');\n const fontSize = isDimensionToken(styles.fontSize)\n ? `${styles.fontSize.number}${styles.fontSize.unit}`\n : `${styles.fontSize.number}px`;\n\n return [\n [styles.fontStyle, fontVariant, styles.fontWeight, fontSize, fontFamily].join(' '),\n fontFamily,\n fontSize\n ];\n }\n\n async renderTextNode(text: TextContainer, styles: CSSParsedDeclaration): Promise<void> {\n const [font, fontFamily, fontSize] = this.createFontStyle(styles);\n\n this.ctx.font = font;\n\n this.ctx.direction = styles.direction === DIRECTION.RTL ? 'rtl' : 'ltr';\n this.ctx.textAlign = 'left';\n this.ctx.textBaseline = 'alphabetic';\n const {baseline, middle} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n const paintOrder = styles.paintOrder;\n\n text.textBounds.forEach((text) => {\n paintOrder.forEach((paintOrderLayer) => {\n switch (paintOrderLayer) {\n case PAINT_ORDER_LAYER.FILL:\n this.ctx.fillStyle = asString(styles.color);\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n const textShadows: TextShadow = styles.textShadow;\n\n if (textShadows.length && text.text.trim().length) {\n textShadows\n .slice(0)\n .reverse()\n .forEach((textShadow) => {\n this.ctx.shadowColor = asString(textShadow.color);\n this.ctx.shadowOffsetX = textShadow.offsetX.number * this.options.scale;\n this.ctx.shadowOffsetY = textShadow.offsetY.number * this.options.scale;\n this.ctx.shadowBlur = textShadow.blur.number;\n\n this.renderTextWithLetterSpacing(text, styles.letterSpacing, baseline);\n });\n\n this.ctx.shadowColor = '';\n this.ctx.shadowOffsetX = 0;\n this.ctx.shadowOffsetY = 0;\n this.ctx.shadowBlur = 0;\n }\n\n if (styles.textDecorationLine.length) {\n this.ctx.fillStyle = asString(styles.textDecorationColor || styles.color);\n styles.textDecorationLine.forEach((textDecorationLine) => {\n switch (textDecorationLine) {\n case TEXT_DECORATION_LINE.UNDERLINE:\n // Draws a line at the baseline of the font\n // TODO As some browsers display the line as more than 1px if the font-size is big,\n // need to take that into account both in position and size\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top + baseline),\n text.bounds.width,\n 1\n );\n\n break;\n case TEXT_DECORATION_LINE.OVERLINE:\n this.ctx.fillRect(\n text.bounds.left,\n Math.round(text.bounds.top),\n text.bounds.width,\n 1\n );\n break;\n case TEXT_DECORATION_LINE.LINE_THROUGH:\n // TODO try and find exact position for line-through\n this.ctx.fillRect(\n text.bounds.left,\n Math.ceil(text.bounds.top + middle),\n text.bounds.width,\n 1\n );\n break;\n }\n });\n }\n break;\n case PAINT_ORDER_LAYER.STROKE:\n if (styles.webkitTextStrokeWidth && text.text.trim().length) {\n this.ctx.strokeStyle = asString(styles.webkitTextStrokeColor);\n this.ctx.lineWidth = styles.webkitTextStrokeWidth;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.ctx.lineJoin = !!(window as any).chrome ? 'miter' : 'round';\n this.ctx.strokeText(text.text, text.bounds.left, text.bounds.top + baseline);\n }\n this.ctx.strokeStyle = '';\n this.ctx.lineWidth = 0;\n this.ctx.lineJoin = 'miter';\n break;\n }\n });\n });\n }\n\n renderReplacedElement(\n container: ReplacedElementContainer,\n curves: BoundCurves,\n image: HTMLImageElement | HTMLCanvasElement\n ): void {\n if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {\n const box = contentBox(container);\n const path = calculatePaddingBoxPath(curves);\n this.path(path);\n this.ctx.save();\n this.ctx.clip();\n this.ctx.drawImage(\n image,\n 0,\n 0,\n container.intrinsicWidth,\n container.intrinsicHeight,\n box.left,\n box.top,\n box.width,\n box.height\n );\n this.ctx.restore();\n }\n }\n\n async renderNodeContent(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.CONTENT));\n const container = paint.container;\n const curves = paint.curves;\n const styles = container.styles;\n for (const child of container.textNodes) {\n await this.renderTextNode(child, styles);\n }\n\n if (container instanceof ImageElementContainer) {\n try {\n const image = await this.context.cache.match(container.src);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading image ${container.src}`);\n }\n }\n\n if (container instanceof CanvasElementContainer) {\n this.renderReplacedElement(container, curves, container.canvas);\n }\n\n if (container instanceof SVGElementContainer) {\n try {\n const image = await this.context.cache.match(container.svg);\n this.renderReplacedElement(container, curves, image);\n } catch (e) {\n this.context.logger.error(`Error loading svg ${container.svg.substring(0, 255)}`);\n }\n }\n\n if (container instanceof IFrameElementContainer && container.tree) {\n const iframeRenderer = new CanvasRenderer(this.context, {\n scale: this.options.scale,\n backgroundColor: container.backgroundColor,\n x: 0,\n y: 0,\n width: container.width,\n height: container.height\n });\n\n const canvas = await iframeRenderer.render(container.tree);\n if (container.width && container.height) {\n this.ctx.drawImage(\n canvas,\n 0,\n 0,\n container.width,\n container.height,\n container.bounds.left,\n container.bounds.top,\n container.bounds.width,\n container.bounds.height\n );\n }\n }\n\n if (container instanceof InputElementContainer) {\n const size = Math.min(container.bounds.width, container.bounds.height);\n\n if (container.type === CHECKBOX) {\n if (container.checked) {\n this.ctx.save();\n this.path([\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79),\n new Vector(container.bounds.left + size * 0.16, container.bounds.top + size * 0.5549),\n new Vector(container.bounds.left + size * 0.27347, container.bounds.top + size * 0.44071),\n new Vector(container.bounds.left + size * 0.39694, container.bounds.top + size * 0.5649),\n new Vector(container.bounds.left + size * 0.72983, container.bounds.top + size * 0.23),\n new Vector(container.bounds.left + size * 0.84, container.bounds.top + size * 0.34085),\n new Vector(container.bounds.left + size * 0.39363, container.bounds.top + size * 0.79)\n ]);\n\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n } else if (container.type === RADIO) {\n if (container.checked) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(\n container.bounds.left + size / 2,\n container.bounds.top + size / 2,\n size / 4,\n 0,\n Math.PI * 2,\n true\n );\n this.ctx.fillStyle = asString(INPUT_COLOR);\n this.ctx.fill();\n this.ctx.restore();\n }\n }\n }\n\n if (isTextInputElement(container) && container.value.length) {\n const [fontFamily, fontSize] = this.createFontStyle(styles);\n const {baseline} = this.fontMetrics.getMetrics(fontFamily, fontSize);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = canvasTextAlign(container.styles.textAlign);\n\n const bounds = contentBox(container);\n\n let x = 0;\n\n switch (container.styles.textAlign) {\n case TEXT_ALIGN.CENTER:\n x += bounds.width / 2;\n break;\n case TEXT_ALIGN.RIGHT:\n x += bounds.width;\n break;\n }\n\n const textBounds = bounds.add(x, 0, 0, -bounds.height / 2 + 1);\n\n this.ctx.save();\n this.path([\n new Vector(bounds.left, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top),\n new Vector(bounds.left + bounds.width, bounds.top + bounds.height),\n new Vector(bounds.left, bounds.top + bounds.height)\n ]);\n\n this.ctx.clip();\n this.renderTextWithLetterSpacing(\n new TextBounds(container.value, textBounds),\n styles.letterSpacing,\n baseline\n );\n this.ctx.restore();\n this.ctx.textBaseline = 'alphabetic';\n this.ctx.textAlign = 'left';\n }\n\n if (contains(container.styles.display, DISPLAY.LIST_ITEM)) {\n if (container.styles.listStyleImage !== null) {\n const img = container.styles.listStyleImage;\n if (img.type === CSSImageType.URL) {\n let image;\n const url = (img as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n this.ctx.drawImage(image, container.bounds.left - (image.width + 10), container.bounds.top);\n } catch (e) {\n this.context.logger.error(`Error loading list-style-image ${url}`);\n }\n }\n } else if (paint.listValue && container.styles.listStyleType !== LIST_STYLE_TYPE.NONE) {\n const [fontFamily] = this.createFontStyle(styles);\n\n this.ctx.font = fontFamily;\n this.ctx.fillStyle = asString(styles.color);\n\n this.ctx.textBaseline = 'middle';\n this.ctx.textAlign = 'right';\n const bounds = new Bounds(\n container.bounds.left,\n container.bounds.top + getAbsoluteValue(container.styles.paddingTop, container.bounds.width),\n container.bounds.width,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 1\n );\n\n this.renderTextWithLetterSpacing(\n new TextBounds(paint.listValue, bounds),\n styles.letterSpacing,\n computeLineHeight(styles.lineHeight, styles.fontSize.number) / 2 + 2\n );\n this.ctx.textBaseline = 'bottom';\n this.ctx.textAlign = 'left';\n }\n }\n }\n\n async renderStackContent(stack: StackingContext): Promise<void> {\n if (contains(stack.element.container.flags, FLAGS.DEBUG_RENDER)) {\n debugger;\n }\n // https://www.w3.org/TR/css-position-3/#painting-order\n // 1. the background and borders of the element forming the stacking context.\n await this.renderNodeBackgroundAndBorders(stack.element);\n // 2. the child stacking contexts with negative stack levels (most negative first).\n for (const child of stack.negativeZIndex) {\n await this.renderStack(child);\n }\n // 3. For all its in-flow, non-positioned, block-level descendants in tree order:\n await this.renderNodeContent(stack.element);\n\n for (const child of stack.nonInlineLevel) {\n await this.renderNode(child);\n }\n // 4. All non-positioned floating descendants, in tree order. For each one of these,\n // treat the element as if it created a new stacking context, but any positioned descendants and descendants\n // which actually create a new stacking context should be considered part of the parent stacking context,\n // not this new one.\n for (const child of stack.nonPositionedFloats) {\n await this.renderStack(child);\n }\n // 5. the in-flow, inline-level, non-positioned descendants, including inline tables and inline blocks.\n for (const child of stack.nonPositionedInlineLevel) {\n await this.renderStack(child);\n }\n for (const child of stack.inlineLevel) {\n await this.renderNode(child);\n }\n // 6. All positioned, opacity or transform descendants, in tree order that fall into the following categories:\n // All positioned descendants with 'z-index: auto' or 'z-index: 0', in tree order.\n // For those with 'z-index: auto', treat the element as if it created a new stacking context,\n // but any positioned descendants and descendants which actually create a new stacking context should be\n // considered part of the parent stacking context, not this new one. For those with 'z-index: 0',\n // treat the stacking context generated atomically.\n //\n // All opacity descendants with opacity less than 1\n //\n // All transform descendants with transform other than none\n for (const child of stack.zeroOrAutoZIndexOrTransformedOrOpacity) {\n await this.renderStack(child);\n }\n // 7. Stacking contexts formed by positioned descendants with z-indices greater than or equal to 1 in z-index\n // order (smallest first) then tree order.\n for (const child of stack.positiveZIndex) {\n await this.renderStack(child);\n }\n }\n\n mask(paths: Path[]): void {\n this.ctx.beginPath();\n this.ctx.moveTo(0, 0);\n this.ctx.lineTo(this.canvas.width, 0);\n this.ctx.lineTo(this.canvas.width, this.canvas.height);\n this.ctx.lineTo(0, this.canvas.height);\n this.ctx.lineTo(0, 0);\n this.formatPath(paths.slice(0).reverse());\n this.ctx.closePath();\n }\n\n path(paths: Path[]): void {\n this.ctx.beginPath();\n this.formatPath(paths);\n this.ctx.closePath();\n }\n\n formatPath(paths: Path[]): void {\n paths.forEach((point, index) => {\n const start: Vector = isBezierCurve(point) ? point.start : point;\n if (index === 0) {\n this.ctx.moveTo(start.x, start.y);\n } else {\n this.ctx.lineTo(start.x, start.y);\n }\n\n if (isBezierCurve(point)) {\n this.ctx.bezierCurveTo(\n point.startControl.x,\n point.startControl.y,\n point.endControl.x,\n point.endControl.y,\n point.end.x,\n point.end.y\n );\n }\n });\n }\n\n renderRepeat(path: Path[], pattern: CanvasPattern | CanvasGradient, offsetX: number, offsetY: number): void {\n this.path(path);\n this.ctx.fillStyle = pattern;\n this.ctx.translate(offsetX, offsetY);\n this.ctx.fill();\n this.ctx.translate(-offsetX, -offsetY);\n }\n\n resizeImage(image: HTMLImageElement, width: number, height: number): HTMLCanvasElement | HTMLImageElement {\n if (image.width === width && image.height === height) {\n return image;\n }\n\n const ownerDocument = this.canvas.ownerDocument ?? document;\n const canvas = ownerDocument.createElement('canvas');\n canvas.width = Math.max(1, width);\n canvas.height = Math.max(1, height);\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n ctx.drawImage(image, 0, 0, image.width, image.height, 0, 0, width, height);\n return canvas;\n }\n\n async renderBackgroundImage(container: ElementContainer): Promise<void> {\n let index = container.styles.backgroundImage.length - 1;\n for (const backgroundImage of container.styles.backgroundImage.slice(0).reverse()) {\n if (backgroundImage.type === CSSImageType.URL) {\n let image;\n const url = (backgroundImage as CSSURLImage).url;\n try {\n image = await this.context.cache.match(url);\n } catch (e) {\n this.context.logger.error(`Error loading background-image ${url}`);\n }\n\n if (image) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [\n image.width,\n image.height,\n image.width / image.height\n ]);\n const pattern = this.ctx.createPattern(\n this.resizeImage(image, width, height),\n 'repeat'\n ) as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isLinearGradient(backgroundImage)) {\n const [path, x, y, width, height] = calculateBackgroundRendering(container, index, [null, null, null]);\n const [lineLength, x0, x1, y0, y1] = calculateGradientDirection(backgroundImage.angle, width, height);\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d') as CanvasRenderingContext2D;\n const gradient = ctx.createLinearGradient(x0, y0, x1, y1);\n\n processColorStops(backgroundImage.stops, lineLength).forEach((colorStop) =>\n gradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, width, height);\n if (width > 0 && height > 0) {\n const pattern = this.ctx.createPattern(canvas, 'repeat') as CanvasPattern;\n this.renderRepeat(path, pattern, x, y);\n }\n } else if (isRadialGradient(backgroundImage)) {\n const [path, left, top, width, height] = calculateBackgroundRendering(container, index, [\n null,\n null,\n null\n ]);\n const position = backgroundImage.position.length === 0 ? [FIFTY_PERCENT] : backgroundImage.position;\n const x = getAbsoluteValue(position[0], width);\n const y = getAbsoluteValue(position[position.length - 1], height);\n\n const [rx, ry] = calculateRadius(backgroundImage, x, y, width, height);\n if (rx > 0 && ry > 0) {\n const radialGradient = this.ctx.createRadialGradient(left + x, top + y, 0, left + x, top + y, rx);\n\n processColorStops(backgroundImage.stops, rx * 2).forEach((colorStop) =>\n radialGradient.addColorStop(colorStop.stop, asString(colorStop.color))\n );\n\n this.path(path);\n this.ctx.fillStyle = radialGradient;\n if (rx !== ry) {\n // transforms for elliptical radial gradient\n const midX = container.bounds.left + 0.5 * container.bounds.width;\n const midY = container.bounds.top + 0.5 * container.bounds.height;\n const f = ry / rx;\n const invF = 1 / f;\n\n this.ctx.save();\n this.ctx.translate(midX, midY);\n this.ctx.transform(1, 0, 0, f, 0, 0);\n this.ctx.translate(-midX, -midY);\n\n this.ctx.fillRect(left, invF * (top - midY) + midY, width, height * invF);\n this.ctx.restore();\n } else {\n this.ctx.fill();\n }\n }\n }\n index--;\n }\n }\n\n async renderSolidBorder(color: Color, side: number, curvePoints: BoundCurves): Promise<void> {\n this.path(parsePathForBorder(curvePoints, side));\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n }\n\n async renderDoubleBorder(color: Color, width: number, side: number, curvePoints: BoundCurves): Promise<void> {\n if (width < 3) {\n await this.renderSolidBorder(color, side, curvePoints);\n return;\n }\n\n const outerPaths = parsePathForBorderDoubleOuter(curvePoints, side);\n this.path(outerPaths);\n this.ctx.fillStyle = asString(color);\n this.ctx.fill();\n const innerPaths = parsePathForBorderDoubleInner(curvePoints, side);\n this.path(innerPaths);\n this.ctx.fill();\n }\n\n async renderNodeBackgroundAndBorders(paint: ElementPaint): Promise<void> {\n this.applyEffects(paint.getEffects(EffectTarget.BACKGROUND_BORDERS));\n const styles = paint.container.styles;\n const hasBackground = !isTransparent(styles.backgroundColor) || styles.backgroundImage.length;\n\n const borders = [\n {style: styles.borderTopStyle, color: styles.borderTopColor, width: styles.borderTopWidth},\n {style: styles.borderRightStyle, color: styles.borderRightColor, width: styles.borderRightWidth},\n {style: styles.borderBottomStyle, color: styles.borderBottomColor, width: styles.borderBottomWidth},\n {style: styles.borderLeftStyle, color: styles.borderLeftColor, width: styles.borderLeftWidth}\n ];\n\n const backgroundPaintingArea = calculateBackgroundCurvedPaintingArea(\n getBackgroundValueForIndex(styles.backgroundClip, 0),\n paint.curves\n );\n\n if (hasBackground || styles.boxShadow.length) {\n this.ctx.save();\n this.path(backgroundPaintingArea);\n this.ctx.clip();\n\n if (!isTransparent(styles.backgroundColor)) {\n this.ctx.fillStyle = asString(styles.backgroundColor);\n this.ctx.fill();\n }\n\n await this.renderBackgroundImage(paint.container);\n\n this.ctx.restore();\n\n styles.boxShadow\n .slice(0)\n .reverse()\n .forEach((shadow) => {\n this.ctx.save();\n const borderBoxArea = calculateBorderBoxPath(paint.curves);\n const maskOffset = shadow.inset ? 0 : MASK_OFFSET;\n const shadowPaintingArea = transformPath(\n borderBoxArea,\n -maskOffset + (shadow.inset ? 1 : -1) * shadow.spread.number,\n (shadow.inset ? 1 : -1) * shadow.spread.number,\n shadow.spread.number * (shadow.inset ? -2 : 2),\n shadow.spread.number * (shadow.inset ? -2 : 2)\n );\n\n if (shadow.inset) {\n this.path(borderBoxArea);\n this.ctx.clip();\n this.mask(shadowPaintingArea);\n } else {\n this.mask(borderBoxArea);\n this.ctx.clip();\n this.path(shadowPaintingArea);\n }\n\n this.ctx.shadowOffsetX = shadow.offsetX.number + maskOffset;\n this.ctx.shadowOffsetY = shadow.offsetY.number;\n this.ctx.shadowColor = asString(shadow.color);\n this.ctx.shadowBlur = shadow.blur.number;\n this.ctx.fillStyle = shadow.inset ? asString(shadow.color) : 'rgba(0,0,0,1)';\n\n this.ctx.fill();\n this.ctx.restore();\n });\n }\n\n let side = 0;\n for (const border of borders) {\n if (border.style !== BORDER_STYLE.NONE && !isTransparent(border.color) && border.width > 0) {\n if (border.style === BORDER_STYLE.DASHED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DASHED\n );\n } else if (border.style === BORDER_STYLE.DOTTED) {\n await this.renderDashedDottedBorder(\n border.color,\n border.width,\n side,\n paint.curves,\n BORDER_STYLE.DOTTED\n );\n } else if (border.style === BORDER_STYLE.DOUBLE) {\n await this.renderDoubleBorder(border.color, border.width, side, paint.curves);\n } else {\n await this.renderSolidBorder(border.color, side, paint.curves);\n }\n }\n side++;\n }\n }\n\n async renderDashedDottedBorder(\n color: Color,\n width: number,\n side: number,\n curvePoints: BoundCurves,\n style: BORDER_STYLE\n ): Promise<void> {\n this.ctx.save();\n\n const strokePaths = parsePathForBorderStroke(curvePoints, side);\n const boxPaths = parsePathForBorder(curvePoints, side);\n\n if (style === BORDER_STYLE.DASHED) {\n this.path(boxPaths);\n this.ctx.clip();\n }\n\n let startX, startY, endX, endY;\n if (isBezierCurve(boxPaths[0])) {\n startX = (boxPaths[0] as BezierCurve).start.x;\n startY = (boxPaths[0] as BezierCurve).start.y;\n } else {\n startX = (boxPaths[0] as Vector).x;\n startY = (boxPaths[0] as Vector).y;\n }\n if (isBezierCurve(boxPaths[1])) {\n endX = (boxPaths[1] as BezierCurve).end.x;\n endY = (boxPaths[1] as BezierCurve).end.y;\n } else {\n endX = (boxPaths[1] as Vector).x;\n endY = (boxPaths[1] as Vector).y;\n }\n\n let length;\n if (side === 0 || side === 2) {\n length = Math.abs(startX - endX);\n } else {\n length = Math.abs(startY - endY);\n }\n\n this.ctx.beginPath();\n if (style === BORDER_STYLE.DOTTED) {\n this.formatPath(strokePaths);\n } else {\n this.formatPath(boxPaths.slice(0, 2));\n }\n\n let dashLength = width < 3 ? width * 3 : width * 2;\n let spaceLength = width < 3 ? width * 2 : width;\n if (style === BORDER_STYLE.DOTTED) {\n dashLength = width;\n spaceLength = width;\n }\n\n let useLineDash = true;\n if (length <= dashLength * 2) {\n useLineDash = false;\n } else if (length <= dashLength * 2 + spaceLength) {\n const multiplier = length / (2 * dashLength + spaceLength);\n dashLength *= multiplier;\n spaceLength *= multiplier;\n } else {\n const numberOfDashes = Math.floor((length + spaceLength) / (dashLength + spaceLength));\n const minSpace = (length - numberOfDashes * dashLength) / (numberOfDashes - 1);\n const maxSpace = (length - (numberOfDashes + 1) * dashLength) / numberOfDashes;\n spaceLength =\n maxSpace <= 0 || Math.abs(spaceLength - minSpace) < Math.abs(spaceLength - maxSpace)\n ? minSpace\n : maxSpace;\n }\n\n if (useLineDash) {\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.setLineDash([0, dashLength + spaceLength]);\n } else {\n this.ctx.setLineDash([dashLength, spaceLength]);\n }\n }\n\n if (style === BORDER_STYLE.DOTTED) {\n this.ctx.lineCap = 'round';\n this.ctx.lineWidth = width;\n } else {\n this.ctx.lineWidth = width * 2 + 1.1;\n }\n this.ctx.strokeStyle = asString(color);\n this.ctx.stroke();\n this.ctx.setLineDash([]);\n\n // dashed round edge gap\n if (style === BORDER_STYLE.DASHED) {\n if (isBezierCurve(boxPaths[0])) {\n const path1 = boxPaths[3] as BezierCurve;\n const path2 = boxPaths[0] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n if (isBezierCurve(boxPaths[1])) {\n const path1 = boxPaths[1] as BezierCurve;\n const path2 = boxPaths[2] as BezierCurve;\n this.ctx.beginPath();\n this.formatPath([new Vector(path1.end.x, path1.end.y), new Vector(path2.start.x, path2.start.y)]);\n this.ctx.stroke();\n }\n }\n\n this.ctx.restore();\n }\n\n async render(element: ElementContainer): Promise<HTMLCanvasElement> {\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(this.options.x, this.options.y, this.options.width, this.options.height);\n }\n\n const stack = parseStackingContexts(element);\n\n await this.renderStack(stack);\n this.applyEffects([]);\n return this.canvas;\n }\n}\n\nconst isTextInputElement = (\n container: ElementContainer\n): container is InputElementContainer | TextareaElementContainer | SelectElementContainer => {\n if (container instanceof TextareaElementContainer) {\n return true;\n } else if (container instanceof SelectElementContainer) {\n return true;\n } else if (container instanceof InputElementContainer && container.type !== RADIO && container.type !== CHECKBOX) {\n return true;\n }\n return false;\n};\n\nconst calculateBackgroundCurvedPaintingArea = (clip: BACKGROUND_CLIP, curves: BoundCurves): Path[] => {\n switch (clip) {\n case BACKGROUND_CLIP.BORDER_BOX:\n return calculateBorderBoxPath(curves);\n case BACKGROUND_CLIP.CONTENT_BOX:\n return calculateContentBoxPath(curves);\n case BACKGROUND_CLIP.PADDING_BOX:\n default:\n return calculatePaddingBoxPath(curves);\n }\n};\n\nconst canvasTextAlign = (textAlign: TEXT_ALIGN): CanvasTextAlign => {\n switch (textAlign) {\n case TEXT_ALIGN.CENTER:\n return 'center';\n case TEXT_ALIGN.RIGHT:\n return 'right';\n case TEXT_ALIGN.LEFT:\n default:\n return 'left';\n }\n};\n\n// see https://github.com/niklasvh/html2canvas/pull/2645\nconst iOSBrokenFonts = ['-apple-system', 'system-ui'];\n\nconst fixIOSSystemFonts = (fontFamilies: string[]): string[] => {\n return /iPhone OS 15_(0|1)/.test(window.navigator.userAgent)\n ? fontFamilies.filter((fontFamily) => iOSBrokenFonts.indexOf(fontFamily) === -1)\n : fontFamilies;\n};\n", "import {RenderConfigurations} from './canvas-renderer';\nimport {createForeignObjectSVG} from '../../core/features';\nimport {asString} from '../../css/types/color';\nimport {Renderer} from '../renderer';\nimport {Context} from '../../core/context';\n\nexport class ForeignObjectRenderer extends Renderer {\n canvas: HTMLCanvasElement;\n ctx: CanvasRenderingContext2D;\n options: RenderConfigurations;\n\n constructor(context: Context, options: RenderConfigurations) {\n super(context, options);\n this.canvas = options.canvas ? options.canvas : document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d') as CanvasRenderingContext2D;\n this.options = options;\n this.canvas.width = Math.floor(options.width * options.scale);\n this.canvas.height = Math.floor(options.height * options.scale);\n this.canvas.style.width = `${options.width}px`;\n this.canvas.style.height = `${options.height}px`;\n\n this.ctx.scale(this.options.scale, this.options.scale);\n this.ctx.translate(-options.x, -options.y);\n this.context.logger.debug(\n `EXPERIMENTAL ForeignObject renderer initialized (${options.width}x${options.height} at ${options.x},${options.y}) with scale ${options.scale}`\n );\n }\n\n async render(element: HTMLElement): Promise<HTMLCanvasElement> {\n const svg = createForeignObjectSVG(\n this.options.width * this.options.scale,\n this.options.height * this.options.scale,\n this.options.scale,\n this.options.scale,\n element\n );\n\n const img = await loadSerializedSVG(svg);\n\n if (this.options.backgroundColor) {\n this.ctx.fillStyle = asString(this.options.backgroundColor);\n this.ctx.fillRect(0, 0, this.options.width * this.options.scale, this.options.height * this.options.scale);\n }\n\n this.ctx.drawImage(img, -this.options.x * this.options.scale, -this.options.y * this.options.scale);\n\n return this.canvas;\n }\n}\n\nexport const loadSerializedSVG = (svg: Node): Promise<HTMLImageElement> =>\n new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n resolve(img);\n };\n img.onerror = reject;\n\n img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(new XMLSerializer().serializeToString(svg))}`;\n });\n", "export interface LoggerOptions {\n id: string;\n enabled: boolean;\n}\n\nexport class Logger {\n static instances: {[key: string]: Logger} = {};\n\n private readonly id: string;\n private readonly enabled: boolean;\n private readonly start: number;\n\n constructor({id, enabled}: LoggerOptions) {\n this.id = id;\n this.enabled = enabled;\n this.start = Date.now();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n debug(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.debug === 'function') {\n // eslint-disable-next-line no-console\n console.debug(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n getTime(): number {\n return Date.now() - this.start;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n info(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.info === 'function') {\n // eslint-disable-next-line no-console\n console.info(this.id, `${this.getTime()}ms`, ...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n warn(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.warn === 'function') {\n // eslint-disable-next-line no-console\n console.warn(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n error(...args: unknown[]): void {\n if (this.enabled) {\n // eslint-disable-next-line no-console\n if (typeof window !== 'undefined' && window.console && typeof console.error === 'function') {\n // eslint-disable-next-line no-console\n console.error(this.id, `${this.getTime()}ms`, ...args);\n } else {\n this.info(...args);\n }\n }\n }\n}\n", "import {Logger} from './logger';\nimport {Cache, ResourceOptions} from './cache-storage';\nimport {Bounds} from '../css/layout/bounds';\n\nexport type ContextOptions = {\n logging: boolean;\n cache?: Cache;\n} & ResourceOptions;\n\nexport class Context {\n private readonly instanceName = `#${Context.instanceCount++}`;\n readonly logger: Logger;\n readonly cache: Cache;\n\n private static instanceCount = 1;\n\n constructor(options: ContextOptions, public windowBounds: Bounds) {\n this.logger = new Logger({id: this.instanceName, enabled: options.logging});\n this.cache = options.cache ?? new Cache(this, options);\n }\n}\n", "import {Bounds, parseBounds, parseDocumentSize} from './css/layout/bounds';\nimport {COLORS, isTransparent, parseColor} from './css/types/color';\nimport {CloneConfigurations, CloneOptions, DocumentCloner, WindowOptions} from './dom/document-cloner';\nimport {isBodyElement, isHTMLElement, parseTree} from './dom/node-parser';\nimport {CacheStorage} from './core/cache-storage';\nimport {CanvasRenderer, RenderConfigurations, RenderOptions} from './render/canvas/canvas-renderer';\nimport {ForeignObjectRenderer} from './render/canvas/foreignobject-renderer';\nimport {Context, ContextOptions} from './core/context';\n\nexport type Options = CloneOptions &\n WindowOptions &\n RenderOptions &\n ContextOptions & {\n backgroundColor: string | null;\n foreignObjectRendering: boolean;\n removeContainer?: boolean;\n };\n\nconst html2canvas = (element: HTMLElement, options: Partial<Options> = {}): Promise<HTMLCanvasElement> => {\n return renderElement(element, options);\n};\n\nexport default html2canvas;\n\nif (typeof window !== 'undefined') {\n CacheStorage.setContext(window);\n}\n\nconst renderElement = async (element: HTMLElement, opts: Partial<Options>): Promise<HTMLCanvasElement> => {\n if (!element || typeof element !== 'object') {\n return Promise.reject('Invalid element provided as first argument');\n }\n const ownerDocument = element.ownerDocument;\n\n if (!ownerDocument) {\n throw new Error(`Element is not attached to a Document`);\n }\n\n const defaultView = ownerDocument.defaultView;\n\n if (!defaultView) {\n throw new Error(`Document is not attached to a Window`);\n }\n\n const resourceOptions = {\n allowTaint: opts.allowTaint ?? false,\n imageTimeout: opts.imageTimeout ?? 15000,\n proxy: opts.proxy,\n useCORS: opts.useCORS ?? false\n };\n\n const contextOptions = {\n logging: opts.logging ?? true,\n cache: opts.cache,\n ...resourceOptions\n };\n\n const windowOptions = {\n windowWidth: opts.windowWidth ?? defaultView.innerWidth,\n windowHeight: opts.windowHeight ?? defaultView.innerHeight,\n scrollX: opts.scrollX ?? defaultView.pageXOffset,\n scrollY: opts.scrollY ?? defaultView.pageYOffset\n };\n\n const windowBounds = new Bounds(\n windowOptions.scrollX,\n windowOptions.scrollY,\n windowOptions.windowWidth,\n windowOptions.windowHeight\n );\n\n const context = new Context(contextOptions, windowBounds);\n\n const foreignObjectRendering = opts.foreignObjectRendering ?? false;\n\n const cloneOptions: CloneConfigurations = {\n allowTaint: opts.allowTaint ?? false,\n onclone: opts.onclone,\n ignoreElements: opts.ignoreElements,\n inlineImages: foreignObjectRendering,\n copyStyles: foreignObjectRendering\n };\n\n context.logger.debug(\n `Starting document clone with size ${windowBounds.width}x${\n windowBounds.height\n } scrolled to ${-windowBounds.left},${-windowBounds.top}`\n );\n\n const documentCloner = new DocumentCloner(context, element, cloneOptions);\n const clonedElement = documentCloner.clonedReferenceElement;\n if (!clonedElement) {\n return Promise.reject(`Unable to find element in cloned iframe`);\n }\n\n const container = await documentCloner.toIFrame(ownerDocument, windowBounds);\n\n const {width, height, left, top} =\n isBodyElement(clonedElement) || isHTMLElement(clonedElement)\n ? parseDocumentSize(clonedElement.ownerDocument)\n : parseBounds(context, clonedElement);\n\n const backgroundColor = parseBackgroundColor(context, clonedElement, opts.backgroundColor);\n\n const renderOptions: RenderConfigurations = {\n canvas: opts.canvas,\n backgroundColor,\n scale: opts.scale ?? defaultView.devicePixelRatio ?? 1,\n x: (opts.x ?? 0) + left,\n y: (opts.y ?? 0) + top,\n width: opts.width ?? Math.ceil(width),\n height: opts.height ?? Math.ceil(height)\n };\n\n let canvas;\n\n if (foreignObjectRendering) {\n context.logger.debug(`Document cloned, using foreign object rendering`);\n const renderer = new ForeignObjectRenderer(context, renderOptions);\n canvas = await renderer.render(clonedElement);\n } else {\n context.logger.debug(\n `Document cloned, element located at ${left},${top} with size ${width}x${height} using computed rendering`\n );\n\n context.logger.debug(`Starting DOM parsing`);\n const root = parseTree(context, clonedElement);\n\n if (backgroundColor === root.styles.backgroundColor) {\n root.styles.backgroundColor = COLORS.TRANSPARENT;\n }\n\n context.logger.debug(\n `Starting renderer for element at ${renderOptions.x},${renderOptions.y} with size ${renderOptions.width}x${renderOptions.height}`\n );\n\n const renderer = new CanvasRenderer(context, renderOptions);\n canvas = await renderer.render(root);\n }\n\n if (opts.removeContainer ?? true) {\n if (!DocumentCloner.destroy(container)) {\n context.logger.error(`Cannot detach cloned iframe as it is not in the DOM anymore`);\n }\n }\n\n context.logger.debug(`Finished rendering`);\n return canvas;\n};\n\nconst parseBackgroundColor = (context: Context, element: HTMLElement, backgroundColorOverride?: string | null) => {\n const ownerDocument = element.ownerDocument;\n // http://www.w3.org/TR/css3-background/#special-backgrounds\n const documentBackgroundColor = ownerDocument.documentElement\n ? parseColor(context, getComputedStyle(ownerDocument.documentElement).backgroundColor as string)\n : COLORS.TRANSPARENT;\n const bodyBackgroundColor = ownerDocument.body\n ? parseColor(context, getComputedStyle(ownerDocument.body).backgroundColor as string)\n : COLORS.TRANSPARENT;\n\n const defaultBackgroundColor =\n typeof backgroundColorOverride === 'string'\n ? parseColor(context, backgroundColorOverride)\n : backgroundColorOverride === null\n ? COLORS.TRANSPARENT\n : 0xffffffff;\n\n return element === ownerDocument.documentElement\n ? isTransparent(documentBackgroundColor)\n ? isTransparent(bodyBackgroundColor)\n ? defaultBackgroundColor\n : bodyBackgroundColor\n : documentBackgroundColor\n : defaultBackgroundColor;\n};\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["d", "b", "__assign", "e", "f", "pack", "Bounds", "document", "toCodePoints", "fromCodePoint", "chars", "lookup", "i", "decode", "base64", "polyUint16Array", "polyUint32Array", "UTRIE2_SHIFT_2", "UTRIE2_SHIFT_1", "UTRIE2_INDEX_SHIFT", "UTRIE2_SHIFT_1_2", "UTRIE2_LSCP_INDEX_2_OFFSET", "UTRIE2_DATA_BLOCK_LENGTH", "UTRIE2_DATA_MASK", "UTRIE2_LSCP_INDEX_2_LENGTH", "UTRIE2_INDEX_2_BMP_LENGTH", "UTRIE2_UTF8_2B_INDEX_2_OFFSET", "UTRIE2_UTF8_2B_INDEX_2_LENGTH", "UTRIE2_INDEX_1_OFFSET", "UTRIE2_OMITTED_BMP_INDEX_1_LENGTH", "UTRIE2_INDEX_2_BLOCK_LENGTH", "UTRIE2_INDEX_2_MASK", "slice16", "slice32", "createTrieFromBase64", "Trie", "CR", "LF", "ZWJ", "RI", "BREAK_NOT_ALLOWED", "BREAK_ALLOWED", "UnicodeTrie", "SPACE", "lineBreak", "a", "Break", "Tokenizer", "Parser", "deg", "color", "colorType", "angle", "angleType", "position", "BACKGROUND_SIZE", "direction", "display", "float", "LINE_BREAK", "fontSize", "overflow", "textAlign", "textTransform", "transform", "visibility", "WORD_BREAK", "wordBreak", "quotes", "DEFAULT_VALUE", "CSSParsedDeclaration", "CSSParsedPseudoDeclaration", "CSSParsedCounterDeclaration", "ElementContainer", "duration", "loadSerializedSVG", "img", "TextBounds", "TextContainer", "ImageElementContainer", "CanvasElementContainer", "SVGElementContainer", "LIElementContainer", "OLElementContainer", "InputElementContainer", "SelectElementContainer", "TextareaElementContainer", "IFrameElementContainer", "childNode", "CounterState", "counterIncrement", "counterReset", "DocumentCloner", "css", "window", "value", "PseudoElementType", "CacheStorage", "Cache", "Vector", "BezierCurve", "BoundCurves", "borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth", "paddingTop", "paddingRight", "paddingBottom", "paddingLeft", "CORNER", "TransformEffect", "matrix", "ClipEffect", "OpacityEffect", "opacity", "StackingContext", "ElementPaint", "paddingBox", "createsStackingContext", "backgroundOrigin", "backgroundClip", "FontMetrics", "fontFamily", "Renderer", "CanvasRenderer", "letterSpacing", "fontVariant", "paintOrder", "text", "textShadow", "textDecorationLine", "image", "backgroundImage", "ForeignObjectRenderer", "Logger", "Context", "backgroundColor"]
7
7
  }