! function(t, e) {
	"object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define
		.amd ? define(["exports"], e) : e((t = "undefined" != typeof globalThis ? globalThis : t || self).Painter = {})
}(this, (function(t) {
	"use strict";
	var e = function() {
		return e = Object.assign || function(t) {
			for (var e, i = 1, n = arguments.length; i < n; i++)
				for (var r in e = arguments[i]) Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[
					r]);
			return t
		}, e.apply(this, arguments)
	};

	function i(t, e, i, n) {
		return new(i || (i = Promise))((function(r, o) {
			function s(t) {
				try {
					h(n.next(t))
				} catch (t) {
					o(t)
				}
			}

			function a(t) {
				try {
					h(n.throw(t))
				} catch (t) {
					o(t)
				}
			}

			function h(t) {
				var e;
				t.done ? r(t.value) : (e = t.value, e instanceof i ? e : new i((function(t) {
					t(e)
				}))).then(s, a)
			}
			h((n = n.apply(t, e || [])).next())
		}))
	}

	function n(t, e) {
		var i, n, r, o, s = {
			label: 0,
			sent: function() {
				if (1 & r[0]) throw r[1];
				return r[1]
			},
			trys: [],
			ops: []
		};
		return o = {
			next: a(0),
			throw: a(1),
			return: a(2)
		}, "function" == typeof Symbol && (o[Symbol.iterator] = function() {
			return this
		}), o;

		function a(o) {
			return function(a) {
				return function(o) {
					if (i) throw new TypeError("Generator is already executing.");
					for (; s;) try {
						if (i = 1, n && (r = 2 & o[0] ? n.return : o[0] ? n.throw || ((r = n
								.return) && r.call(n), 0) : n.next) && !(r = r.call(n, o[1])).done)
							return r;
						switch (n = 0, r && (o = [2 & o[0], r.value]), o[0]) {
							case 0:
							case 1:
								r = o;
								break;
							case 4:
								return s.label++, {
									value: o[1],
									done: !1
								};
							case 5:
								s.label++, n = o[1], o = [0];
								continue;
							case 7:
								o = s.ops.pop(), s.trys.pop();
								continue;
							default:
								if (!(r = s.trys, (r = r.length > 0 && r[r.length - 1]) || 6 !== o[
										0] && 2 !== o[0])) {
									s = 0;
									continue
								}
								if (3 === o[0] && (!r || o[1] > r[0] && o[1] < r[3])) {
									s.label = o[1];
									break
								}
								if (6 === o[0] && s.label < r[1]) {
									s.label = r[1], r = o;
									break
								}
								if (r && s.label < r[2]) {
									s.label = r[2], s.ops.push(o);
									break
								}
								r[2] && s.ops.pop(), s.trys.pop();
								continue
						}
						o = e.call(t, s)
					} catch (t) {
						o = [6, t], n = 0
					} finally {
						i = r = 0
					}
					if (5 & o[0]) throw o[1];
					return {
						value: o[0] ? o[1] : void 0,
						done: !0
					}
				}([o, a])
			}
		}
	}
	var r = {
			MP_WEIXIN: "mp-weixin",
			MP_QQ: "mp-qq",
			MP_ALIPAY: "mp-alipay",
			MP_BAIDU: "mp-baidu",
			MP_TOUTIAO: "mp-toutiao",
			MP_DINGDING: "mp-dingding",
			H5: "h5",
			WEB: "web",
			PLUS: "plus"
		},
		o = ["contentSize", "clientSize", "borderSize", "offsetSize"],
		s = "row",
		a = "column",
		h = "top",
		d = "middle",
		c = "bottom",
		l = "left",
		f = "center",
		u = "right",
		p = "view",
		g = "text",
		v = "image",
		y = "qrcode",
		b = "block",
		x = "inline-block",
		m = "none",
		w = "flex",
		S = "absolute",
		z = "fixed",
		M = "transparent",
		B = "fill",
		k = {
			display: b,
			color: "#000000",
			lineHeight: "1.4em",
			fontSize: 14,
			fontWeight: 400,
			fontFamily: "sans-serif",
			lineCap: "butt",
			flexDirection: s,
			flexWrap: "nowrap",
			textAlign: "left",
			alignItems: "flex-start",
			justifyContent: "flex-start",
			position: "static",
			transformOrigin: "center center"
		},
		I = {
			upx2px: function(t) {
				return window.innerWidth / 750 * t
			},
			getSystemInfoSync: function() {
				return {
					screenWidth: window.innerWidth
				}
			},
			getImageInfo: function(t) {
				var e = t.src,
					i = t.success,
					n = t.fail,
					r = new Image;
				r.onload = function() {
					i({
						width: r.naturalWidth,
						height: r.naturalHeight,
						path: r.src,
						src: e
					})
				}, r.onerror = n, r.src = e
			}
		},
		P = "object",
		W = "undefined",
		R = typeof window == P ? typeof uni == W || typeof uni !== W && !uni.addInterceptor ? r.WEB : r.H5 :
		typeof swan == P ? r.MP_BAIDU : typeof tt == P ? r.MP_TOUTIAO : typeof plus === P ? r.PLUS :
		typeof wx == P ? r.MP_WEIXIN : void 0,
		L = R == r.MP_WEIXIN ? wx : typeof uni != W ? uni.getImageInfo ? {
			upx2px: function(t) {
				return uni.upx2px(t)
			},
			getSystemInfoSync: function() {
				return uni.getSystemInfoSync()
			},
			getImageInfo: function(t) {
				return uni.getImageInfo(t)
			},
			downloadFile: function(t) {
				return uni.downloadFile(t)
			}
		} : Object.assign(uni, I) : typeof window != W ? I : uni;
	if (!L.upx2px) {
		var O = ((L.getSystemInfoSync && uni.getSystemInfoSync()).screenWidth || 375) / 750;
		L.upx2px = function(t) {
			return O * t
		}
	}

	function T(t) {
		return /^-?\d+(\.\d+)?$/.test(t)
	}

	function A(t, e, i) {
		if ("number" == typeof t) return t;
		if (T(t)) return 1 * t;
		if ("string" == typeof t) {
			var n = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|px|%)$/g.exec(t);
			if (!t || !n) return 0;
			var r = n[3];
			t = parseFloat(t);
			var o = 0;
			return "rpx" === r ? o = L.upx2px(t) : "px" === r ? o = 1 * t : "%" === r && e ? o = t * A(e) /
				100 : "em" === r && e && (o = t * A(e || 14)), 1 * o.toFixed(2)
		}
		return 0
	}

	function F(t) {
		return /%$/.test(t)
	}
	var j = function(t) {
			return !(!t || !t.startsWith("linear") && !t.startsWith("radial"))
		},
		C = function(t, e, i, n, r, o) {
			t.startsWith("linear") ? function(t, e, i, n, r, o) {
				for (var s = function(t, e, i, n, r) {
							void 0 === n && (n = 0);
							void 0 === r && (r = 0);
							var o = t.match(/([-]?\d{1,3})deg/),
								s = o && o[1] ? parseFloat(o[1]) : 0;
							s >= 360 && (s -= 360);
							s < 0 && (s += 360);
							if (0 === (s = Math.round(s))) return {
								x0: Math.round(e / 2) + n,
								y0: i + r,
								x1: Math.round(e / 2) + n,
								y1: r
							};
							if (180 === s) return {
								x0: Math.round(e / 2) + n,
								y0: r,
								x1: Math.round(e / 2) + n,
								y1: i + r
							};
							if (90 === s) return {
								x0: n,
								y0: Math.round(i / 2) + r,
								x1: e + n,
								y1: Math.round(i / 2) + r
							};
							if (270 === s) return {
								x0: e + n,
								y0: Math.round(i / 2) + r,
								x1: n,
								y1: Math.round(i / 2) + r
							};
							var a = Math.round(180 * Math.asin(e / Math.sqrt(Math.pow(e, 2) + Math.pow(i,
								2))) / Math.PI);
							if (s === a) return {
								x0: n,
								y0: i + r,
								x1: e + n,
								y1: r
							};
							if (s === 180 - a) return {
								x0: n,
								y0: r,
								x1: e + n,
								y1: i + r
							};
							if (s === 180 + a) return {
								x0: e + n,
								y0: r,
								x1: n,
								y1: i + r
							};
							if (s === 360 - a) return {
								x0: e + n,
								y0: i + r,
								x1: n,
								y1: r
							};
							var h = 0,
								d = 0,
								c = 0,
								l = 0;
							if (s < a || s > 180 - a && s < 180 || s > 180 && s < 180 + a || s > 360 - a) {
								var f = s * Math.PI / 180,
									u = s < a || s > 360 - a ? i / 2 : -i / 2,
									p = Math.tan(f) * u,
									g = s < a || s > 180 - a && s < 180 ? e / 2 - p : -e / 2 - p;
								h = -(c = p + (v = Math.pow(Math.sin(f), 2) * g)), d = -(l = u + v / Math
									.tan(f))
							}
							if (s > a && s < 90 || s > 90 && s < 90 + a || s > 180 + a && s < 270 || s >
								270 && s < 360 - a) {
								var v;
								f = (90 - s) * Math.PI / 180, p = s > a && s < 90 || s > 90 && s < 90 + a ?
									e / 2 : -e / 2, u = Math.tan(f) * p, g = s > a && s < 90 || s > 270 &&
									s < 360 - a ? i / 2 - u : -i / 2 - u;
								h = -(c = p + (v = Math.pow(Math.sin(f), 2) * g) / Math.tan(f)), d = -(l =
									u + v)
							}
							return h = Math.round(h + e / 2) + n, d = Math.round(i / 2 - d) + r, c = Math
								.round(c + e / 2) + n, l = Math.round(i / 2 - l) + r, {
									x0: h,
									y0: d,
									x1: c,
									y1: l
								}
						}(r, t, e, i, n), a = s.x0, h = s.y0, d = s.x1, c = s.y1, l = o
						.createLinearGradient(a, h, d, c), f = r.match(/linear-gradient\((.+)\)/)[1], u = E(
							f.substring(f.indexOf(",") + 1)), p = 0; p < u.colors.length; p++) l
					.addColorStop(u.percents[p], u.colors[p]);
				o.setFillStyle(l)
			}(e, i, n, r, t, o) : t.startsWith("radial") && function(t, e, i, n, r, o) {
				for (var s = E(r.match(/radial-gradient\((.+)\)/)[1]), a = Math.round(t / 2) + i, h = Math
						.round(e / 2) + n, d = o.createRadialGradient(a, h, 0, a, h, Math.max(t, e) / 2),
						c = 0; c < s.colors.length; c++) d.addColorStop(s.percents[c], s.colors[c]);
				o.setFillStyle(d)
			}(e, i, n, r, t, o)
		};

	function E(t) {
		for (var e = [], i = [], n = 0, r = t.substring(0, t.length - 1).split("%,"); n < r.length; n++) {
			var o = r[n];
			e.push(o.substring(0, o.lastIndexOf(" ")).trim()), i.push(o.substring(o.lastIndexOf(" "), o
				.length) / 100)
		}
		return {
			colors: e,
			percents: i
		}
	}

	function H(t, e, i) {
		return e in t ? Object.defineProperty(t, e, {
			value: i,
			enumerable: !0,
			configurable: !0,
			writable: !0
		}) : t[e] = i, t
	}

	function U() {
		return U = Object.assign ? Object.assign.bind() : function(t) {
			for (var e = 1; e < arguments.length; e++) {
				var i = arguments[e];
				for (var n in i) Object.prototype.hasOwnProperty.call(i, n) && (t[n] = i[n])
			}
			return t
		}, U.apply(this, arguments)
	}

	function Y(t, e) {
		return Y = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function(t, e) {
			return t.__proto__ = e, t
		}, Y(t, e)
	}

	function $(t, e) {
		(null == e || e > t.length) && (e = t.length);
		for (var i = 0, n = new Array(e); i < e; i++) n[i] = t[i];
		return n
	}

	function D(t, e) {
		var i = "undefined" != typeof Symbol && t[Symbol.iterator] || t["@@iterator"];
		if (i) return (i = i.call(t)).next.bind(i);
		if (Array.isArray(t) || (i = function(t, e) {
				if (t) {
					if ("string" == typeof t) return $(t, e);
					var i = Object.prototype.toString.call(t).slice(8, -1);
					return "Object" === i && t.constructor && (i = t.constructor.name), "Map" === i ||
						"Set" === i ? Array.from(t) : "Arguments" === i ||
						/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(i) ? $(t, e) : void 0
				}
			}(t)) || e && t && "number" == typeof t.length) {
			i && (t = i);
			var n = 0;
			return function() {
				return n >= t.length ? {
					done: !0
				} : {
					done: !1,
					value: t[n++]
				}
			}
		}
		throw new TypeError(
			"Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."
			)
	}

	function _(t) {
		return "number" == typeof t
	}

	function X(t) {
		return "auto" === t || null === t
	}

	function N(t) {
		return /%$/.test(t)
	}
	var V, G = 0,
		q = function() {
			function t() {
				H(this, "elements", []), H(this, "afterElements", []), H(this, "beforeElements", []), H(this,
						"ids", []), H(this, "width", 0), H(this, "height", 0), H(this, "top", 0), H(this,
						"left", 0), H(this, "pre", null), H(this, "offsetX", 0), H(this, "offsetY", 0), G++,
					this.id = G
			}
			var e = t.prototype;
			return e.fixedBind = function(t, e) {
				void 0 === e && (e = 0), this.container = e ? t.parent : t.root, this.container.fixedLine =
					this, this.fixedAdd(t)
			}, e.fixedAdd = function(t) {
				this.elements.push(t);
				var e = t.computedStyle.zIndex;
				(void 0 === e ? 0 : e) >= 0 ? this.afterElements.push(t) : this.beforeElements.push(t), this
					.refreshLayout()
			}, e.bind = function(t) {
				this.container = t.parent, this.container.line = null, this.container.lines ? (this
						.container.lines.push(this), this.pre = this.getPreLine(), this.top = this.pre.top +
						this.pre.height, this.left = this.container.contentSize.left) : (this.top = this
						.container.contentSize.top, this.left = this.container.contentSize.left, this
						.container.lines = [this]), this.isInline = t.isInline(), this.container.line =
					this, this.outerWidth = t.parent && t.parent.contentSize.width ? t.parent.contentSize
					.width : 1 / 0, this.add(t)
			}, e.getPreLine = function() {
				return this.container.lines[this.container.lines.length - 2]
			}, e.canIEnter = function(t) {
				return this.outerWidth || t.parent && t.parent.contentSize.width, !((100 * t.offsetSize
					.width + 100 * this.width) / 100 > this.outerWidth) || (this.closeLine(), !1)
			}, e.closeLine = function() {
				delete this.container.line
			}, e.add = function(t) {
				this.ids.includes(t.id) || (this.ids.push(t.id), this.elements.push(t), this
					.refreshWidthHeight(t))
			}, e.refreshWidthHeight = function(t) {
				t.offsetSize.height > this.height && (this.height = t.offsetSize.height), this.width += t
					.offsetSize.width || 0, (this.container.lineMaxWidth || 0) < this.width && (this
						.container.lineMaxWidth = this.width)
			}, e.refreshXAlign = function() {
				if (this.isInline) {
					var t = this.container.contentSize.width - this.width,
						e = this.container.style.textAlign;
					"center" === e ? t /= 2 : "left" === e && (t = 0), this.offsetX = t
				}
			}, e.getOffsetY = function(t) {
				if (!t || !t.style) return 0;
				var e = (t.style || {}).verticalAlign;
				return "bottom" === e ? this.height - t.contentSize.height : "middle" === e ? (this.height -
					t.contentSize.height) / 2 : 0
			}, e.layout = function(t, e) {
				for (var i in this.refreshXAlign(), this.pre ? (this.top = this.pre.top + this.pre.height +
						this.offsetY, this.left = e + this.offsetX) : (this.top = Math.max(this.top,
						this.container.contentSize.top, t) + this.offsetY, this.left = Math.max(this
						.left, this.container.contentSize.left, e) + this.offsetX), this.elements) {
					var n = this.elements[i],
						r = this.elements[i - 1],
						o = this.getOffsetY(n);
					n.style.top = this.top + o, n.style.left = r ? r.offsetSize.left + r.offsetSize.width :
						this.left, n.getBoxPosition2()
				}
			}, e.refreshLayout = function() {
				this.afterElements = this.afterElements.sort((function(t, e) {
					return t.computedStyle.zIndex - e.computedStyle.zIndex
				})), this.beforeElements = this.beforeElements.sort((function(t, e) {
					return t.computedStyle.zIndex - e.computedStyle.zIndex
				}))
			}, t
		}(),
		J = ((V = {})[s] = {
			width: "width",
			contentWidth: "width",
			x: "x",
			y: "y",
			contentX: "left",
			height: "height",
			contentHeight: "height",
			marginLeft: "marginLeft"
		}, V[a] = {
			width: "height",
			contentWidth: "height",
			x: "y",
			y: "x",
			contentX: "top",
			height: "width",
			contentHeight: "width",
			marginLeft: "marginTop"
		}, V),
		Q = function(t) {
			var e, i;

			function n() {
				var e;
				return H(function(t) {
						if (void 0 === t) throw new ReferenceError(
							"this hasn't been initialised - super() hasn't been called");
						return t
					}(e = t.call(this) || this), "outerWidth", 0), e.exactValue = 0, e.flexTotal = 0, e.key =
					null, e
			}
			i = t, (e = n).prototype = Object.create(i.prototype), e.prototype.constructor = e, Y(e, i);
			var r = n.prototype;
			return r.bind = function(t) {
				console.warn("[painter] flex-box 功能未完善谨慎使用"), this.container = t.parent, this.container
					.line = this, this.container.lines ? (this.container.lines.push(this), this.pre = this
						.getPreLine(), this.top = this.pre.top + this.pre.height, this.left = this.container
						.contentSize.left) : (this.top = this.container.contentSize.top, this.left = this
						.container.contentSize.left, this.container.lines = [this]), t.parent && (this.key =
						J[t.parent.style.flexDirection]), this.initHeight(t), this.outerWidth = t.parent &&
					t.parent.contentSize[this.key.contentWidth] ? t.parent.contentSize[this.key
						.contentWidth] : 1 / 0, this.add(t)
			}, r.add = function(t) {
				this.ids.push(t.id), _(t.style.flex) ? this.flexTotal += t.style.flex : _(t.style[this.key
					.width]) && (this.exactValue += t.contentSize[this.key.width]), this.elements.push(
					t), this.refreshWidthHeight(t), t.next || this.closeLine()
			}, r.closeLine = function() {
				this.calcFlex()
			}, r.initHeight = function(t) {
				this[this.key.height] = 0
			}, r.calcFlex = function() {
				var t = this,
					e = this.container.contentSize[this.key.contentWidth];
				this.elements.forEach((function(i) {
					var n = i.style.width || 0;
					_(i.style.flex) && (n = i.style.flex / t.flexTotal * (e - t.exactValue)), i
						.computedStyle[t.key.width] = n, delete i.line, delete i.lines, delete i
						.lineMaxWidth, i.getBoxWidthHeight()
				}))
			}, r.refreshWidthHeight = function(t) {
				this.container.style.alignItems && !t.style.alignSelf && (t.style.alignSelf = this.container
						.style.alignItems), t.contentSize[this.key.height] > this[this.key.height] && (this[
						this.key.height] = t.offsetSize[this.key.height]), this[this.key.width] += t
					.offsetSize[this.key.width];
				var e = Math.min(this[this.key.width], this.container.contentSize[this.key.width]);
				(this.container.lineMaxWidth || 0) < e && (this.container.lineMaxWidth = e)
			}, r.refreshXAlign = function() {
				var t = this,
					e = this.elements.reduce((function(e, i) {
						return e + i.offsetSize[t.key.width]
					}), 0),
					i = this.outerWidth == 1 / 0 ? 0 : this.outerWidth - Math.max(this[this.key.width], e),
					n = this.container.style.justifyContent;
				"center" === n ? i /= 2 : "flex-start" === n ? i = 0 : ["space-between", "space-around"]
					.includes(n) && (! function(e, i) {
						void 0 === i && (i = 0), i /= t.elements.length + (e ? -1 : 1), t.elements
							.forEach((function(n, r) {
								var o;
								e && !r || (n.style.margin ? n.style.margin[t.key.marginLeft] +=
									i : n.style.margin = ((o = {})[t.key.marginLeft] = i, o)
									)
							})), i = 0
					}("space-between" == n, i), i = 0), this.offsetX = i || 0, this.refreshYAlign()
			}, r.refreshYAlign = function() {
				if (1 == this.container.lines.length) return 0;
				var t = this.container.lines.reduce((function(t, e) {
					return t + e.height
				}), 0);
				if ("center" === this.container.style.alignItems) {
					var e = (this.container.contentSize[this.key.contentHeight] - t) / (this.container.lines
						.length + 1);
					this.container.lines.forEach((function(t) {
						t.offsetY = e
					}))
				}
				if ("flex-end" === this.container.style.alignItems) {
					var i = this.container.contentSize[this.key.contentHeight] - t;
					this.container.lines[0].offsetY = i
				}
			}, r.getOffsetY = function(t) {
				return this.container.lines.length > 1 ? 0 : "flex-end" === t.style.alignSelf ? this
					.container.contentSize[this.key.contentHeight] - t.contentSize[this.key.height] :
					"center" === t.style.alignSelf ? (this.container.contentSize[this.key.contentHeight] - t
						.contentSize[this.key.height]) / 2 : 0
			}, n
		}(q),
		Z = v,
		K = g,
		et = p,
		it = y,
		nt = b,
		rt = x,
		ot = w,
		st = S,
		at = z,
		ht = 0,
		dt = {
			left: null,
			top: null,
			width: null,
			height: null
		},
		ct = function() {
			function t(t, e, i, n) {
				var r = this;
				H(this, "id", ht++), H(this, "style", {
						left: null,
						top: null,
						width: null,
						height: null
					}), H(this, "computedStyle", {}), H(this, "originStyle", {}), H(this, "children", {}), H(
						this, "layoutBox", U({}, dt)), H(this, "contentSize", U({}, dt)), H(this, "clientSize",
						U({}, dt)), H(this, "borderSize", U({}, dt)), H(this, "offsetSize", U({}, dt)), this
					.ctx = n, this.root = i, e && (this.parent = e), this.name = t.name || t.type, this
					.attributes = this.getAttributes(t);
				var o = this.getComputedStyle(t, e && e.computedStyle);
				this.isAbsolute = o.position == st, this.isFixed = o.position == at, this.originStyle = o,
					Object.keys(o).forEach((function(t) {
						Object.defineProperty(r.style, t, {
							configurable: !0,
							enumerable: !0,
							get: function() {
								return o[t]
							},
							set: function(e) {
								o[t] = e
							}
						})
					}));
				var s = {
					contentSize: U({}, this.contentSize),
					clientSize: U({}, this.clientSize),
					borderSize: U({}, this.borderSize),
					offsetSize: U({}, this.offsetSize)
				};
				Object.keys(s).forEach((function(t) {
					Object.keys(r[t]).forEach((function(e) {
						Object.defineProperty(r[t], e, {
							configurable: !0,
							enumerable: !0,
							get: function() {
								return s[t][e]
							},
							set: function(i) {
								s[t][e] = i
							}
						})
					}))
				})), this.computedStyle = this.style
			}
			var e = t.prototype;
			return e.add = function(t) {
				t.parent = this, this.children[t.id] = t
			}, e.getChildren = function() {
				var t = this;
				return Object.keys(this.children).map((function(e) {
					return t.children[e]
				}))
			}, e.getLineRect = function(t, e) {
				var i = {
						width: 0,
						height: 0
					},
					n = e ? e.lines : this.parent && this.parent.lines;
				return n && n.find((function(e) {
					return e.ids.includes(t)
				})) || i
			}, e.getComputedStyle = function(t, e) {
				var i = ["color", "fontSize", "lineHeight", "verticalAlign", "fontWeight", "textAlign"],
					n = t.css,
					r = void 0 === n ? {} : n,
					o = t.type,
					s = void 0 === o ? et : o,
					a = U({}, k);
				if ([K, Z, it].includes(s) && !r.display && (a.display = rt), e)
					for (var h = 0; h < i.length; h++) {
						var d = i[h];
						(r[d] || e[d]) && (r[d] = r[d] || e[d])
					}
				for (var c = function() {
						var t = f[l],
							e = r[t];
						if (/-/.test(t) && (t = t.replace(/-([a-z])/g, (function(t, e) {
								return e.toUpperCase()
							})), a.key = e), /^(box|text)?shadow$/i.test(t)) {
							var i = [];
							return e.replace(/((\d+(rpx|px)?\s+?){3})(.+)/, (function() {
								for (var t = arguments.length, e = new Array(t), n = 0; n <
									t; n++) e[n] = arguments[n];
								i = e[1].match(/\d+(rpx|px)?/g).map((function(t) {
									return A(t)
								})).concat(e[4])
							})), /^text/.test(t) ? a.textShadow = i : a.boxShadow = i, "continue"
						}
						if (/^border/i.test(t) && !/radius$/i.test(t)) {
							var n, o = t.match(/^border([BTRLa-z]+)?/)[0],
								h = t.match(/[W|S|C][a-z]+/),
								d = e.replace(/([\(,])\s+|\s+([\),])/g, "$1$2").split(" ").map((
									function(t) {
										return /^\d/.test(t) ? A(t, "") : t
									}));
							return a[o] = ((n = {})[o + "Width"] = T(d[0]) ? d[0] : 0, n[o + "Style"] =
									d[1] || "solid", n[o + "Color"] = d[2] || "black", n), 1 == d
								.length && h && (a[o][o + h[0]] = d[0]), "continue"
						}
						if (/^background(color)?$/i.test(t)) return a.backgroundColor = e, "continue";
						if (/^objectPosition$/i.test(t)) return a[t] = e.split(" "), "continue";
						if (/padding|margin|radius/i.test(t)) {
							var c = /radius$/i.test(t),
								u = c ? "borderRadius" : t.match(/[a-z]+/)[0],
								p = [0, 0, 0, 0].map((function(t, e) {
									return c ? ["borderTopLeftRadius", "borderTopRightRadius",
										"borderBottomRightRadius", "borderBottomLeftRadius"
									][e] : [u + "Top", u + "Right", u + "Bottom", u +
										"Left"][e]
								})),
								g = "margin";
							if ("padding" === t || t === g || /^(border)?radius$/i.test(t)) {
								var v, y = ("" + e).split(" ").map((function(e) {
										return /^\d+(rpx|px)?$/.test(e) ? A(e) : t != g &&
											/auto/.test(e) ? 0 : e
									}), []) || [0],
									b = c ? "borderRadius" : t,
									x = y[0],
									m = y[1],
									w = y[2],
									S = y[3];
								a[b] = ((v = {})[p[0]] = X(x) ? 0 : x, v[p[1]] = T(m) || X(m) ? m : x,
									v[p[2]] = X(T(w) ? w : x) ? 0 : T(w) ? w : x, v[p[3]] = T(S) ?
									S : m || x, v)
							} else {
								var z;
								if ("object" == typeof a[u]) a[u][t] = u == g && X(e) || N(e) ? e : A(
								e);
								else a[u] = ((z = {})[p[0]] = a[u] || 0, z[p[1]] = a[u] || 0, z[p[2]] =
										a[u] || 0, z[p[3]] = a[u] || 0, z), a[u][t] = u == g && X(e) ||
									N(e) ? e : A(e)
							}
							return "continue"
						}
						if (/^transform$/i.test(t)) return a[t] = {}, e.replace(
							/([a-zA-Z]+)\(([0-9,-\.%rpxdeg\s]+)\)/g, (function(e, i, n) {
								var o = n.split(",").map((function(t) {
										return t.replace(/(^\s*)|(\s*$)/g, "")
									})),
									s = function(t, e) {
										return t.includes("deg") ? 1 * t : e && !N(e) ? A(t,
											e) : t
									};
								i.includes("matrix") ? a[t][i] = o.map((function(t) {
										return 1 * t
									})) : i.includes("rotate") ? a[t][i] = 1 * n.match(
										/^-?\d+(\.\d+)?/)[0] : /[X, Y]/.test(i) ? a[t][i] =
									/[X]/.test(i) ? s(o[0], r.width) : s(o[0], r.height) : (
										a[t][i + "X"] = s(o[0], r.width), a[t][i + "Y"] = s(
											o[1] || o[0], r.height))
							})), "continue";
						/^font$/i.test(t) && console.warn("font 不支持简写"), /^left|top$/i.test(t) && ![st,
							at
						].includes(r.position) ? a[t] = 0 : a[t] = /^[\d\.]+(px|rpx)?$/.test(e) ? A(
							e) : /em$/.test(e) && s == K ? A(e, r.fontSize) : e
					}, l = 0, f = Object.keys(r); l < f.length; l++) c();
				return a
			}, e.setPosition = function(t, e) {
				var i = {
					left: "width",
					top: "height",
					right: "width",
					bottom: "height"
				};
				Object.keys(i).forEach((function(n) {
					var r = "right" == n ? "left" : "top";
					["right", "bottom"].includes(n) && void 0 !== t.style[n] && "number" !=
						typeof t.originStyle[r] ? t.style[r] = e[i[n]] - t.offsetSize[i[n]] - A(
							t.style[n], e[i[n]]) : t.style[n] = A(t.style[n], e[i[n]])
				}))
			}, e.getAttributes = function(t) {
				var e = t.attributes || {};
				return (t.url || t.src) && (e.src = e.src || t.url || t.src), t.replace && (e.replace = t
					.replace), t.text && (e.text = t.text), e
			}, e.getOffsetSize = function(t, e, i) {
				void 0 === i && (i = o[3]);
				var n = e || {},
					r = n.margin,
					s = (r = void 0 === r ? {} : r).marginLeft,
					a = void 0 === s ? 0 : s,
					h = r.marginTop,
					d = void 0 === h ? 0 : h,
					c = r.marginRight,
					l = void 0 === c ? 0 : c,
					f = r.marginBottom,
					u = void 0 === f ? 0 : f,
					p = n.padding,
					g = (p = void 0 === p ? {} : p).paddingLeft,
					v = void 0 === g ? 0 : g,
					y = p.paddingTop,
					b = void 0 === y ? 0 : y,
					x = p.paddingRight,
					m = void 0 === x ? 0 : x,
					w = p.paddingBottom,
					S = void 0 === w ? 0 : w,
					z = n.border,
					M = (z = void 0 === z ? {} : z).borderWidth,
					B = void 0 === M ? 0 : M,
					k = n.borderTop,
					I = (k = void 0 === k ? {} : k).borderTopWidth,
					P = void 0 === I ? B : I,
					W = n.borderBottom,
					R = (W = void 0 === W ? {} : W).borderBottomWidth,
					L = void 0 === R ? B : R,
					O = n.borderRight,
					T = (O = void 0 === O ? {} : O).borderRightWidth,
					A = void 0 === T ? B : T,
					F = n.borderLeft,
					j = (F = void 0 === F ? {} : F).borderLeftWidth,
					C = void 0 === j ? B : j,
					E = a < 0 && l < 0 ? Math.abs(a + l) : 0,
					H = d < 0 && u < 0 ? Math.abs(d + u) : 0,
					U = a >= 0 && l < 0,
					Y = d >= 0 && u < 0;
				return i == o[0] && (this[i].left = t.left + a + v + C + (U ? 2 * -l : 0), this[i].top = t
					.top + d + b + P + (Y ? 2 * -u : 0), this[i].width = t.width + (this[i].widthAdd ?
						0 : E), this[i].height = t.height + (this[i].heightAdd ? 0 : H), this[i]
					.widthAdd = E, this[i].heightAdd = H), i == o[1] && (this[i].left = t.left + a + C +
					(U < 0 ? -l : 0), this[i].top = t.top + d + P + (Y ? -u : 0), this[i].width = t
					.width + v + m, this[i].height = t.height + b + S), i == o[2] && (this[i].left = t
					.left + a + C / 2 + (U < 0 ? -l : 0), this[i].top = t.top + d + P / 2 + (Y ? -u :
					0), this[i].width = t.width + v + m + C / 2 + A / 2, this[i].height = t.height + b +
					S + L / 2 + P / 2), i == o[3] && (this[i].left = t.left + (U < 0 ? -l : 0), this[i]
					.top = t.top + (Y ? -u : 0), this[i].width = t.width + v + m + C + A + a + l, this[
						i].height = t.height + b + S + L + P + u + d), this[i]
			}, e.layoutBoxUpdate = function(t, e, i, n) {
				var r = this;
				if (void 0 === i && (i = -1), "border-box" == e.boxSizing) {
					var s = e || {},
						a = s.border,
						h = (a = void 0 === a ? {} : a).borderWidth,
						d = void 0 === h ? 0 : h,
						c = s.borderTop,
						l = (c = void 0 === c ? {} : c).borderTopWidth,
						f = void 0 === l ? d : l,
						u = s.borderBottom,
						p = (u = void 0 === u ? {} : u).borderBottomWidth,
						g = void 0 === p ? d : p,
						v = s.borderRight,
						y = (v = void 0 === v ? {} : v).borderRightWidth,
						b = void 0 === y ? d : y,
						x = s.borderLeft,
						m = (x = void 0 === x ? {} : x).borderLeftWidth,
						w = void 0 === m ? d : m,
						S = s.padding,
						z = (S = void 0 === S ? {} : S).paddingTop,
						M = void 0 === z ? 0 : z,
						B = S.paddingRight,
						k = void 0 === B ? 0 : B,
						I = S.paddingBottom,
						P = void 0 === I ? 0 : I,
						W = S.paddingLeft,
						R = void 0 === W ? 0 : W;
					i || (t.width -= R + k + b + w), 1 !== i || n || (t.height -= M + P + f + g)
				}
				this.layoutBox && (o.forEach((function(i) {
					return r.layoutBox[i] = r.getOffsetSize(t, e, i)
				})), this.layoutBox = Object.assign({}, this.layoutBox, this.layoutBox.borderSize))
			}, e.getBoxPosition2 = function() {
				var t = this.computedStyle,
					e = this.fixedLine,
					i = this.lines,
					n = t.left,
					r = void 0 === n ? 0 : n,
					o = t.top,
					s = void 0 === o ? 0 : o,
					a = t.padding || {},
					h = a.paddingBottom,
					d = void 0 === h ? 0 : h,
					c = a.paddingRight,
					l = void 0 === c ? 0 : c,
					f = U({}, this.contentSize, {
						left: r,
						top: s
					}),
					u = this.contentSize.top - this.offsetSize.top,
					p = this.contentSize.left - this.offsetSize.left;
				if (this.root.fixedLine && !this.root.isDone) {
					this.root.isDone = !0;
					for (var g, v = D(this.root.fixedLine.elements); !(g = v()).done;) {
						var y = g.value;
						y.setPosition(y, this.root.offsetSize), y.getBoxPosition2()
					}
				}
				if (e)
					for (var b, x = D(e.elements); !(b = x()).done;) {
						var m = b.value;
						m.setPosition(m, f), m.style.left += r + p + l, m.style.top += s + u + d, m
							.getBoxPosition2()
					}
				if (i)
					for (var w, S = D(i); !(w = S()).done;) {
						w.value.layout(f.top + u, f.left + p)
					}
				return this.layoutBoxUpdate(f, t), this.layoutBox
			}, e.getBoxState = function(t, e) {
				return this.isBlock(t) || this.isBlock(e)
			}, e.isBlock = function(t) {
				return void 0 === t && (t = this), t && t.style.display == nt
			}, e.isFlex = function(t) {
				return void 0 === t && (t = this), t && t.style.display == ot
			}, e.isInFlow = function() {
				return !(this.isAbsolute || this.isFixed)
			}, e.inFlexBox = function(t) {
				return void 0 === t && (t = this), !!t.isInFlow() && (!!t.parent && (!(!t.parent || t.parent
					.style.display !== ot) || void 0))
			}, e.isInline = function(t) {
				return void 0 === t && (t = this), t && t.style.display == rt
			}, e.contrastSize = function(t, e, i) {
				var n = t;
				return i && (n = Math.min(n, i)), e && (n = Math.max(n, e)), n
			}, e.measureText = function(t, e) {
				var i = this.ctx.measureText(t),
					n = i.width,
					r = i.actualBoundingBoxAscent,
					o = i.actualBoundingBoxDescent;
				return {
					ascent: r,
					descent: o,
					width: n,
					fontHeight: r + o || .7 * e + 1
				}
			}, e.getBoxWidthHeight = function() {
				var t = this,
					e = this.name,
					i = this.computedStyle,
					n = this.attributes,
					r = this.parent,
					o = void 0 === r ? {} : r,
					s = this.ctx,
					a = this.getChildren(),
					h = i.left,
					d = void 0 === h ? 0 : h,
					c = i.top,
					l = void 0 === c ? 0 : c,
					f = i.bottom,
					u = i.right,
					p = i.width,
					g = void 0 === p ? 0 : p,
					v = i.minWidth,
					y = i.maxWidth,
					b = i.minHeight,
					x = i.maxHeight,
					m = i.height,
					w = void 0 === m ? 0 : m,
					S = i.fontSize,
					z = void 0 === S ? 14 : S,
					M = i.fontWeight,
					B = i.fontFamily,
					k = i.fontStyle,
					I = i.position,
					P = i.lineClamp,
					W = i.lineHeight,
					R = i.padding,
					L = void 0 === R ? {} : R,
					O = i.margin,
					T = void 0 === O ? {} : O,
					F = i.border,
					j = (F = void 0 === F ? {} : F).borderWidth,
					C = void 0 === j ? 0 : j,
					E = i.borderRight,
					H = (E = void 0 === E ? {} : E).borderRightWidth,
					U = void 0 === H ? C : H,
					Y = i.borderLeft,
					$ = (Y = void 0 === Y ? {} : Y).borderLeftWidth,
					D = void 0 === $ ? C : $,
					_ = o.contentSize && o.contentSize.width,
					X = o.contentSize && o.contentSize.height;
				if (N(g) && _ && (g = A(g, _)), N(g) && !_ && (g = null), N(w) && X && (w = A(w, X)), N(
					w) && !X && (w = null), N(v) && _ && (v = A(v, _)), N(y) && _ && (y = A(y, _)), N(b) &&
					X && (b = A(b, X)), N(x) && X && (x = A(x, X)), i.padding && _)
					for (var V in i.padding) Object.hasOwnProperty.call(i.padding, V) && (i.padding[V] = A(i
						.padding[V], _));
				var G = L.paddingRight,
					J = void 0 === G ? 0 : G,
					tt = L.paddingLeft,
					it = void 0 === tt ? 0 : tt;
				if (i.margin && [i.margin.marginLeft, i.margin.marginRight].includes("auto"))
					if (g) {
						var nt = _ && _ - g - J - it - D - U || 0;
						i.margin.marginLeft == i.margin.marginRight ? i.margin.marginLeft = i.margin
							.marginRight = nt / 2 : "auto" == i.margin.marginLeft ? i.margin.marginLeft =
							nt : i.margin.marginRight = nt
					} else i.margin.marginLeft = i.margin.marginRight = 0;
				var rt = T.marginRight,
					ot = void 0 === rt ? 0 : rt,
					at = T.marginLeft,
					ht = {
						width: g,
						height: w,
						left: 0,
						top: 0
					},
					dt = it + J + D + U + (void 0 === at ? 0 : at) + ot;
				if (e == K && !this.attributes.widths) {
					var ct = n.text || "";
					s.save(), s.setFonts({
						fontFamily: B,
						fontSize: z,
						fontWeight: M,
						fontStyle: k
					});
					var lt = new Map;
					ct.split("\n").map((function(e) {
						var i = e.split("").map((function(e) {
								var i = lt.get(e);
								if (i) return i;
								var n = t.measureText(e, z).width;
								return lt.set(e, n), n
							})),
							n = t.measureText(e, z),
							r = n.fontHeight,
							o = n.ascent,
							s = n.descent;
						t.attributes.fontHeight = r, t.attributes.ascent = o, t.attributes
							.descent = s, t.attributes.widths || (t.attributes.widths = []), t
							.attributes.widths.push({
								widths: i,
								total: i.reduce((function(t, e) {
									return t + e
								}), 0)
							})
					})), s.restore()
				}
				if (e == Z && null == g) {
					var ft = n.width,
						ut = n.height;
					ht.width = this.contrastSize(Math.round(ft * w / ut) || 0, v, y), this.layoutBoxUpdate(
						ht, i, 0)
				}
				if (e == K && null == g) {
					var pt = this.attributes.widths,
						gt = Math.max.apply(Math, pt.map((function(t) {
							return t.total
						})));
					if (o && _ > 0 && (gt > _ || this.isBlock(this)) && !this.isAbsolute && !this.isFixed)
						gt = _ - dt;
					ht.width = this.contrastSize(gt, v, y), this.layoutBoxUpdate(ht, i, 0)
				}
				if (e == K && (o.style.flex || !this.attributes.lines)) {
					var vt = this.attributes.widths.length;
					this.attributes.widths.forEach((function(t) {
						return t.widths.reduce((function(t, e, i) {
							return t + e > ht.width ? (vt++, e) : t + e
						}), 0)
					})), vt = P && vt > P ? P : vt, this.attributes.lines = vt
				}
				if (e == Z && null == w) {
					var yt = n.width,
						bt = n.height;
					ht.height = this.contrastSize(A(ht.width * bt / yt) || 0, b, x), this.layoutBoxUpdate(
						ht, i, 1)
				}
				e == K && null == w && (W = A(W, z), ht.height = this.contrastSize(A(this.attributes.lines *
						W), b, x), this.layoutBoxUpdate(ht, i, 1, !0)), o && o.children && _ && ([et, K]
						.includes(e) && this.isFlex() || e == et && this.isBlock(this) && this.isInFlow()
						) && (ht.width = this.contrastSize(_ - dt, v, y), this.layoutBoxUpdate(ht, i)), g &&
					!N(g) && (ht.width = this.contrastSize(g, v, y), this.layoutBoxUpdate(ht, i, 0)), w && !
					N(w) && (ht.height = this.contrastSize(ht.height, b, x), this.layoutBoxUpdate(ht, i,
					1));
				var xt = 0;
				if (a.length) {
					var mt = null;
					a.forEach((function(e, n) {
						e.getBoxWidthHeight();
						var r = a[n + 1];
						if (r && r.isInFlow() && (e.next = r), e.isInFlow() && !e.inFlexBox()) {
							var o = t.getBoxState(mt, e);
							t.line && t.line.canIEnter(e) && !o ? t.line.add(e) : (new q).bind(
								e), mt = e
						} else e.inFlexBox() ? t.line && (t.line.canIEnter(e) || "nowrap" == i
								.flexWrap) ? t.line.add(e) : (new Q).bind(e) : e.isFixed ? t
							.root.fixedLine ? t.root.fixedLine.fixedAdd(e) : (new q).fixedBind(
								e) : t.fixedLine ? t.fixedLine.fixedAdd(e) : (new q).fixedBind(
								e, 1)
					})), this.lines && (xt = this.lines.reduce((function(t, e) {
						return t + e.height
					}), 0))
				}
				var wt = 0,
					St = 0;
				if (!g && (this.isAbsolute || this.isFixed) && _) {
					var zt = I == st ? _ : this.root.width,
						Mt = zt - (N(d) ? A(d, zt) : d) - (N(u) ? A(u, zt) : u);
					wt = i.left ? Mt : this.lineMaxWidth
				}
				if (!w && (null != l ? l : this.isAbsolute || this.isFixed && X)) {
					var Bt = I == st ? X : this.root.height,
						kt = Bt - (N(l) ? A(l, Bt) : l) - (N(f) ? A(f, Bt) : f);
					St = i.top ? kt : 0
				}
				if (g && !N(g) || ht.width || (ht.width = wt || this.contrastSize((this.isBlock(this) && !
							this.isInFlow() ? _ || o.lineMaxWidth : this.lineMaxWidth) || this
						.lineMaxWidth, v, y), this.layoutBoxUpdate(ht, i, 0)), w || !xt && !St || (ht
						.height = St || this.contrastSize(xt, b, x), this.layoutBoxUpdate(ht, i)), i
					.borderRadius && this.borderSize && this.borderSize.width)
					for (var V in i.borderRadius) Object.hasOwnProperty.call(i.borderRadius, V) && (i
						.borderRadius[V] = A(i.borderRadius[V], this.borderSize.width));
				return this.layoutBox
			}, e.layout = function() {
				return this.getBoxWidthHeight(), this.root.offsetSize = this.offsetSize, this
					.getBoxPosition2(), this.offsetSize
			}, t
		}(),
		lt = function() {
			var t, e, i, n, r, o, s = [0, 11, 15, 19, 23, 27, 31, 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24,
					26, 28, 28, 22, 24, 24, 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28
				],
				a = [3220, 1468, 2713, 1235, 3062, 1890, 2119, 1549, 2344, 2936, 1117, 2583, 1330, 2470, 1667,
					2249, 2028, 3780, 481, 4011, 142, 3098, 831, 3445, 592, 2517, 1776, 2234, 1951, 2827, 1070,
					2660, 1345, 3177
				],
				h = [30660, 29427, 32170, 30877, 26159, 25368, 27713, 26998, 21522, 20773, 24188, 23371, 17913,
					16590, 20375, 19104, 13663, 12392, 16177, 14854, 9396, 8579, 11994, 11245, 5769, 5054, 7399,
					6608, 1890, 597, 3340, 2107
				],
				d = [1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17, 1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22,
					22, 1, 0, 16, 28, 1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22, 1, 0, 80, 20, 2,
					0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16, 1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11,
					22, 2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28, 2, 0, 78, 20, 4, 0, 31, 18, 2,
					4, 14, 18, 4, 1, 13, 26, 2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26, 2, 0, 116,
					30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24, 2, 2, 68, 18, 4, 1, 43, 26, 6, 2, 19, 24, 6,
					2, 15, 28, 4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24, 2, 2, 92, 24, 6, 2, 36,
					22, 4, 6, 20, 26, 7, 4, 14, 28, 4, 0, 107, 26, 8, 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22, 3,
					1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24, 5, 1, 87, 22, 5, 5, 41, 24, 5, 7,
					24, 30, 11, 7, 12, 24, 5, 1, 98, 24, 7, 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30, 1, 5, 107,
					28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28, 5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28,
					2, 19, 14, 28, 3, 4, 113, 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26, 3, 5, 107, 28, 3,
					13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28, 4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19,
					6, 16, 30, 2, 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24, 4, 5, 121, 30, 4, 14,
					47, 28, 11, 14, 24, 30, 16, 14, 15, 30, 6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2,
					16, 30, 8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30, 10, 2, 114, 28, 19, 4,
					46, 28, 28, 6, 22, 28, 33, 4, 16, 30, 8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23, 30, 12, 28,
					15, 30, 3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30, 7, 7, 116, 30, 21, 7,
					45, 28, 1, 37, 23, 30, 19, 26, 15, 30, 5, 10, 115, 30, 19, 10, 47, 28, 15, 25, 24, 30, 23,
					25, 15, 30, 13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30, 17, 0, 115, 30,
					10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30, 17, 1, 115, 30, 14, 21, 46, 28, 29, 19, 24,
					30, 11, 46, 15, 30, 13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30, 12, 7,
					121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22, 41, 15, 30, 6, 14, 121, 30, 6, 34, 47, 28, 46,
					10, 24, 30, 2, 64, 15, 30, 17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30,
					4, 18, 122, 30, 13, 32, 46, 28, 48, 14, 24, 30, 42, 32, 15, 30, 20, 4, 117, 30, 40, 7, 47,
					28, 43, 22, 24, 30, 10, 67, 15, 30, 19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61,
					15, 30
				],
				c = [255, 0, 1, 25, 2, 50, 26, 198, 3, 223, 51, 238, 27, 104, 199, 75, 4, 100, 224, 14, 52, 141,
					239, 129, 28, 193, 105, 248, 200, 8, 76, 113, 5, 138, 101, 47, 225, 36, 15, 33, 53, 147,
					142, 218, 240, 18, 130, 69, 29, 181, 194, 125, 106, 39, 249, 185, 201, 154, 9, 120, 77, 228,
					114, 166, 6, 191, 139, 98, 102, 221, 48, 253, 226, 152, 37, 179, 16, 145, 34, 136, 54, 208,
					148, 206, 143, 150, 219, 189, 241, 210, 19, 92, 131, 56, 70, 64, 30, 66, 182, 163, 195, 72,
					126, 110, 107, 58, 40, 84, 250, 133, 186, 61, 202, 94, 155, 159, 10, 21, 121, 43, 78, 212,
					229, 172, 115, 243, 167, 87, 7, 112, 192, 247, 140, 128, 99, 13, 103, 74, 222, 237, 49, 197,
					254, 24, 227, 165, 153, 119, 38, 184, 180, 124, 17, 68, 146, 217, 35, 32, 137, 46, 55, 63,
					209, 91, 149, 188, 207, 205, 144, 135, 151, 178, 220, 252, 190, 97, 242, 86, 211, 171, 20,
					42, 93, 158, 132, 60, 57, 83, 71, 109, 65, 162, 31, 45, 67, 216, 183, 123, 164, 118, 196,
					23, 73, 236, 127, 12, 111, 246, 108, 161, 59, 82, 41, 157, 85, 170, 251, 96, 134, 177, 187,
					204, 62, 90, 203, 89, 95, 176, 156, 169, 160, 81, 11, 245, 22, 235, 122, 117, 44, 215, 79,
					174, 213, 233, 230, 231, 173, 232, 116, 214, 244, 234, 168, 80, 88, 175
				],
				l = [1, 2, 4, 8, 16, 32, 64, 128, 29, 58, 116, 232, 205, 135, 19, 38, 76, 152, 45, 90, 180, 117,
					234, 201, 143, 3, 6, 12, 24, 48, 96, 192, 157, 39, 78, 156, 37, 74, 148, 53, 106, 212, 181,
					119, 238, 193, 159, 35, 70, 140, 5, 10, 20, 40, 80, 160, 93, 186, 105, 210, 185, 111, 222,
					161, 95, 190, 97, 194, 153, 47, 94, 188, 101, 202, 137, 15, 30, 60, 120, 240, 253, 231, 211,
					187, 107, 214, 177, 127, 254, 225, 223, 163, 91, 182, 113, 226, 217, 175, 67, 134, 17, 34,
					68, 136, 13, 26, 52, 104, 208, 189, 103, 206, 129, 31, 62, 124, 248, 237, 199, 147, 59, 118,
					236, 197, 151, 51, 102, 204, 133, 23, 46, 92, 184, 109, 218, 169, 79, 158, 33, 66, 132, 21,
					42, 84, 168, 77, 154, 41, 82, 164, 85, 170, 73, 146, 57, 114, 228, 213, 183, 115, 230, 209,
					191, 99, 198, 145, 63, 126, 252, 229, 215, 179, 123, 246, 241, 255, 227, 219, 171, 75, 150,
					49, 98, 196, 149, 55, 110, 220, 165, 87, 174, 65, 130, 25, 50, 100, 200, 141, 7, 14, 28, 56,
					112, 224, 221, 167, 83, 166, 81, 162, 89, 178, 121, 242, 249, 239, 195, 155, 43, 86, 172,
					69, 138, 9, 18, 36, 72, 144, 61, 122, 244, 245, 247, 243, 251, 235, 203, 139, 11, 22, 44,
					88, 176, 125, 250, 233, 207, 131, 27, 54, 108, 216, 173, 71, 142, 0
				],
				f = [],
				u = [],
				p = [],
				g = [],
				v = [],
				y = 2;

			function b(t, e) {
				var i;
				t > e && (i = t, t = e, e = i), i = e, i *= e, i += e, i >>= 1, g[i += t] = 1
			}

			function x(t, i) {
				var n;
				for (p[t + e * i] = 1, n = -2; n < 2; n++) p[t + n + e * (i - 2)] = 1, p[t - 2 + e * (i + n +
					1)] = 1, p[t + 2 + e * (i + n)] = 1, p[t + n + 1 + e * (i + 2)] = 1;
				for (n = 0; n < 2; n++) b(t - 1, i + n), b(t + 1, i - n), b(t - n, i - 1), b(t + n, i + 1)
			}

			function m(t) {
				for (; t >= 255;) t = ((t -= 255) >> 8) + (255 & t);
				return t
			}
			var w = [];

			function S(t, e, i, n) {
				var r, o, s;
				for (r = 0; r < n; r++) f[i + r] = 0;
				for (r = 0; r < e; r++) {
					if (255 != (s = c[f[t + r] ^ f[i]]))
						for (o = 1; o < n; o++) f[i + o - 1] = f[i + o] ^ l[m(s + w[n - o])];
					else
						for (o = i; o < i + n; o++) f[o] = f[o + 1];
					f[i + n - 1] = 255 == s ? 0 : l[m(s + w[0])]
				}
			}

			function z(t, e) {
				var i;
				return t > e && (i = t, t = e, e = i), i = e, i += e * e, i >>= 1, g[i += t]
			}

			function M(t) {
				var i, n, r, o;
				switch (t) {
					case 0:
						for (n = 0; n < e; n++)
							for (i = 0; i < e; i++) i + n & 1 || z(i, n) || (p[i + n * e] ^= 1);
						break;
					case 1:
						for (n = 0; n < e; n++)
							for (i = 0; i < e; i++) 1 & n || z(i, n) || (p[i + n * e] ^= 1);
						break;
					case 2:
						for (n = 0; n < e; n++)
							for (r = 0, i = 0; i < e; i++, r++) 3 == r && (r = 0), r || z(i, n) || (p[i + n *
								e] ^= 1);
						break;
					case 3:
						for (o = 0, n = 0; n < e; n++, o++)
							for (3 == o && (o = 0), r = o, i = 0; i < e; i++, r++) 3 == r && (r = 0), r || z(i,
								n) || (p[i + n * e] ^= 1);
						break;
					case 4:
						for (n = 0; n < e; n++)
							for (r = 0, o = n >> 1 & 1, i = 0; i < e; i++, r++) 3 == r && (r = 0, o = !o), o ||
								z(i, n) || (p[i + n * e] ^= 1);
						break;
					case 5:
						for (o = 0, n = 0; n < e; n++, o++)
							for (3 == o && (o = 0), r = 0, i = 0; i < e; i++, r++) 3 == r && (r = 0), (i & n &
								1) + !(!r | !o) || z(i, n) || (p[i + n * e] ^= 1);
						break;
					case 6:
						for (o = 0, n = 0; n < e; n++, o++)
							for (3 == o && (o = 0), r = 0, i = 0; i < e; i++, r++) 3 == r && (r = 0), (i & n &
								1) + (r && r == o) & 1 || z(i, n) || (p[i + n * e] ^= 1);
						break;
					case 7:
						for (o = 0, n = 0; n < e; n++, o++)
							for (3 == o && (o = 0), r = 0, i = 0; i < e; i++, r++) 3 == r && (r = 0), (r && r ==
								o) + (i + n & 1) & 1 || z(i, n) || (p[i + n * e] ^= 1)
				}
			}

			function B(t) {
				var e, i = 0;
				for (e = 0; e <= t; e++) v[e] >= 5 && (i += 3 + v[e] - 5);
				for (e = 3; e < t - 1; e += 2) v[e - 2] == v[e + 2] && v[e + 2] == v[e - 1] && v[e - 1] == v[e +
					1] && 3 * v[e - 1] == v[e] && (0 == v[e - 3] || e + 3 > t || 3 * v[e - 3] >= 4 * v[e] ||
					3 * v[e + 3] >= 4 * v[e]) && (i += 40);
				return i
			}

			function k() {
				var t, i, n, r, o, s = 0,
					a = 0;
				for (i = 0; i < e - 1; i++)
					for (t = 0; t < e - 1; t++)(p[t + e * i] && p[t + 1 + e * i] && p[t + e * (i + 1)] && p[t +
						1 + e * (i + 1)] || !(p[t + e * i] || p[t + 1 + e * i] || p[t + e * (i + 1)] ||
						p[t + 1 + e * (i + 1)])) && (s += 3);
				for (i = 0; i < e; i++) {
					for (v[0] = 0, n = r = t = 0; t < e; t++)(o = p[t + e * i]) == r ? v[n]++ : v[++n] = 1, a +=
						(r = o) ? 1 : -1;
					s += B(n)
				}
				a < 0 && (a = -a);
				var h = a,
					d = 0;
				for (h += h << 2, h <<= 1; h > e * e;) h -= e * e, d++;
				for (s += 10 * d, t = 0; t < e; t++) {
					for (v[0] = 0, n = r = i = 0; i < e; i++)(o = p[t + e * i]) == r ? v[n]++ : v[++n] = 1, r =
						o;
					s += B(n)
				}
				return s
			}
			var I = null;
			return {
				api: {
					get ecclevel() {
						return y
					},
					set ecclevel(t) {
						y = t
					},
					get size() {
						return _size
					},
					set size(t) {
						_size = t
					},
					get canvas() {
						return I
					},
					set canvas(t) {
						I = t
					},
					getFrame: function(v) {
						return function(v) {
							var B, I, P, W, R, L, O, T;
							W = v.length, t = 0;
							do {
								if (t++, P = 4 * (y - 1) + 16 * (t - 1), i = d[P++], n = d[P++], r = d[
										P++], o = d[P], W <= (P = r * (i + n) + n - 3 + (t <= 9))) break
							} while (t < 40);
							for (e = 17 + 4 * t, R = r + (r + o) * (i + n) + n, W = 0; W < R; W++) u[
								W] = 0;
							for (f = v.slice(0), W = 0; W < e * e; W++) p[W] = 0;
							for (W = 0; W < (e * (e + 1) + 1) / 2; W++) g[W] = 0;
							for (W = 0; W < 3; W++) {
								for (P = 0, I = 0, 1 == W && (P = e - 7), 2 == W && (I = e - 7), p[I +
										3 + e * (P + 3)] = 1, B = 0; B < 6; B++) p[I + B + e * P] = 1,
									p[I + e * (P + B + 1)] = 1, p[I + 6 + e * (P + B)] = 1, p[I + B +
										1 + e * (P + 6)] = 1;
								for (B = 1; B < 5; B++) b(I + B, P + 1), b(I + 1, P + B + 1), b(I + 5,
									P + B), b(I + B + 1, P + 5);
								for (B = 2; B < 4; B++) p[I + B + e * (P + 2)] = 1, p[I + 2 + e * (P +
									B + 1)] = 1, p[I + 4 + e * (P + B)] = 1, p[I + B + 1 + e * (P +
									4)] = 1
							}
							if (t > 1)
								for (W = s[t], I = e - 7;;) {
									for (B = e - 7; B > W - 3 && (x(B, I), !(B < W));) B -= W;
									if (I <= W + 9) break;
									x(6, I -= W), x(I, 6)
								}
							for (p[8 + e * (e - 8)] = 1, I = 0; I < 7; I++) b(7, I), b(e - 8, I), b(7,
								I + e - 7);
							for (B = 0; B < 8; B++) b(B, 7), b(B + e - 8, 7), b(B, e - 8);
							for (B = 0; B < 9; B++) b(B, 8);
							for (B = 0; B < 8; B++) b(B + e - 8, 8), b(8, B);
							for (I = 0; I < 7; I++) b(8, I + e - 7);
							for (B = 0; B < e - 14; B++) 1 & B ? (b(8 + B, 6), b(6, 8 + B)) : (p[8 + B +
								6 * e] = 1, p[6 + e * (8 + B)] = 1);
							if (t > 6)
								for (W = a[t - 7], P = 17, B = 0; B < 6; B++)
									for (I = 0; I < 3; I++, P--) 1 & (P > 11 ? t >> P - 12 : W >> P) ? (
										p[5 - B + e * (2 - I + e - 11)] = 1, p[2 - I + e - 11 + e *
											(5 - B)] = 1) : (b(5 - B, 2 - I + e - 11), b(2 - I + e -
										11, 5 - B));
							for (I = 0; I < e; I++)
								for (B = 0; B <= I; B++) p[B + e * I] && b(B, I);
							for (R = f.length, L = 0; L < R; L++) u[L] = f.charCodeAt(L);
							if (f = u.slice(0), R >= (B = r * (i + n) + n) - 2 && (R = B - 2, t > 9 &&
									R--), L = R, t > 9) {
								for (f[L + 2] = 0, f[L + 3] = 0; L--;) W = f[L], f[L + 3] |= 255 & W <<
									4, f[L + 2] = W >> 4;
								f[2] |= 255 & R << 4, f[1] = R >> 4, f[0] = 64 | R >> 12
							} else {
								for (f[L + 1] = 0, f[L + 2] = 0; L--;) W = f[L], f[L + 2] |= 255 & W <<
									4, f[L + 1] = W >> 4;
								f[1] |= 255 & R << 4, f[0] = 64 | R >> 4
							}
							for (L = R + 3 - (t < 10); L < B;) f[L++] = 236, f[L++] = 17;
							for (w[0] = 1, L = 0; L < o; L++) {
								for (w[L + 1] = 1, O = L; O > 0; O--) w[O] = w[O] ? w[O - 1] ^ l[m(c[w[
									O]] + L)] : w[O - 1];
								w[0] = l[m(c[w[0]] + L)]
							}
							for (L = 0; L <= o; L++) w[L] = c[w[L]];
							for (P = B, I = 0, L = 0; L < i; L++) S(I, r, P, o), I += r, P += o;
							for (L = 0; L < n; L++) S(I, r + 1, P, o), I += r + 1, P += o;
							for (I = 0, L = 0; L < r; L++) {
								for (O = 0; O < i; O++) u[I++] = f[L + O * r];
								for (O = 0; O < n; O++) u[I++] = f[i * r + L + O * (r + 1)]
							}
							for (O = 0; O < n; O++) u[I++] = f[i * r + L + O * (r + 1)];
							for (L = 0; L < o; L++)
								for (O = 0; O < i + n; O++) u[I++] = f[B + L + O * o];
							for (f = u, B = I = e - 1, P = R = 1, T = (r + o) * (i + n) + n, L = 0; L <
								T; L++)
								for (W = f[L], O = 0; O < 8; O++, W <<= 1) {
									128 & W && (p[B + e * I] = 1);
									do {
										R ? B-- : (B++, P ? 0 != I ? I-- : (P = !P, 6 == (B -= 2) && (
											B--, I = 9)) : I != e - 1 ? I++ : (P = !P, 6 == (
											B -= 2) && (B--, I -= 8))), R = !R
									} while (z(B, I))
								}
							for (f = p.slice(0), W = 0, I = 3e4, P = 0; P < 8 && (M(P), (B = k()) < I &&
									(I = B, W = P), 7 != W); P++) p = f.slice(0);
							for (W != P && M(W), I = h[W + (y - 1 << 3)], P = 0; P < 8; P++, I >>= 1)
								1 & I && (p[e - 1 - P + 8 * e] = 1, P < 6 ? p[8 + e * P] = 1 : p[8 + e *
									(P + 1)] = 1);
							for (P = 0; P < 7; P++, I >>= 1) 1 & I && (p[8 + e * (e - 7 + P)] = 1, P ?
								p[6 - P + 8 * e] = 1 : p[7 + 8 * e] = 1);
							return p
						}(v)
					},
					utf16to8: function(t) {
						var e, i, n, r;
						for (e = "", n = t.length, i = 0; i < n; i++)(r = t.charCodeAt(i)) >= 1 && r <=
							127 ? e += t.charAt(i) : r > 2047 ? (e += String.fromCharCode(224 | r >> 12 &
									15), e += String.fromCharCode(128 | r >> 6 & 63), e += String
								.fromCharCode(128 | r >> 0 & 63)) : (e += String.fromCharCode(192 | r >> 6 &
								31), e += String.fromCharCode(128 | r >> 0 & 63));
						return e
					},
					draw: function(t, i, n, r, o) {
						i.drawView(n, r);
						var s = i.ctx,
							a = n.contentSize,
							h = a.width,
							d = a.height,
							c = a.left,
							l = a.top;
						r.borderRadius, r.backgroundColor;
						var f = r.color,
							u = void 0 === f ? "#000000" : f;
						r.border, n.contentSize.left, n.borderSize.left, n.contentSize.top, n.borderSize
						.top;
						if (y = o || y, s) {
							s.save(), i.setOpacity(r), i.setTransform(n, r);
							var p = Math.min(h, d);
							t = this.utf16to8(t);
							var g = this.getFrame(t),
								v = p / e;
							s.setFillStyle(u);
							for (var b = 0; b < e; b++)
								for (var x = 0; x < e; x++) g[x * e + b] && s.fillRect(c + v * b, l + v * x,
									v, v);
							s.restore(), i.setBorder(n, r)
						} else console.warn("No canvas provided to draw QR code in!")
					}
				}
			}
		}(),
		ft = v,
		ut = g,
		pt = y,
		gt = p,
		vt = h,
		yt = d,
		bt = c,
		xt = l,
		mt = f,
		wt = u,
		St = function() {
			function t(t) {
				var e, i = this;
				this.v = "1.9.3.5", this.id = null, this.pixelRatio = 1, this.width = 0, this.height = 0, this
					.sleep = 1e3 / 30, this.count = 0, this.isRate = !1, this.isDraw = !0, this.isCache = !0,
					this.fixed = "", this.useCORS = !1, this.imageBus = [], this.createImage = function(t, e) {
						return new Promise((function(i, n) {
							if (window) {
								var r = new Image;
								e && r.setAttribute("crossOrigin", "Anonymous"), r.src = t, r
									.onload = function() {
										i({
											width: r.naturalWidth || r.width,
											height: r.naturalHeight || r.height,
											path: r,
											src: this.src
										})
									}, r.onerror = function(t) {
										n(t)
									}
							} else n({
								fail: "getImageInfo fail",
								src: t
							})
						}))
					}, this.options = t, Object.assign(this, t), this.ctx = ((e = t.context).setFonts =
						function(t) {
							var i = t.fontFamily,
								n = void 0 === i ? "sans-serif" : i,
								o = t.fontSize,
								s = void 0 === o ? 14 : o,
								a = t.fontWeight,
								h = void 0 === a ? "normal" : a,
								d = t.fontStyle,
								c = void 0 === d ? "normal" : d;
							R == r.MP_TOUTIAO && (h = "bold" == h ? "bold" : "", c = "italic" == c ? "italic" :
									""), e.font = "".concat(c, " ").concat(h, " ").concat(Math.round(s), "px ")
								.concat(n)
						}, e.draw && e.setFillStyle ? e : Object.assign(e, {
							setStrokeStyle: function(t) {
								e.strokeStyle = t
							},
							setLineWidth: function(t) {
								e.lineWidth = t
							},
							setLineCap: function(t) {
								e.lineCap = t
							},
							setFillStyle: function(t) {
								e.fillStyle = t
							},
							setFontSize: function(t) {
								e.font = "".concat(String(t), "px sans-serif")
							},
							setGlobalAlpha: function(t) {
								e.globalAlpha = t
							},
							setLineJoin: function(t) {
								e.lineJoin = t
							},
							setTextAlign: function(t) {
								e.textAlign = t
							},
							setMiterLimit: function(t) {
								e.miterLimit = t
							},
							setShadow: function(t, i, n, r) {
								e.shadowOffsetX = t, e.shadowOffsetY = i, e.shadowBlur = n, e
									.shadowColor = r
							},
							setTextBaseline: function(t) {
								e.textBaseline = t
							},
							createCircularGradient: function() {},
							draw: function() {}
						})), this.progress = 0, this.root = {
						width: t.width,
						height: t.height,
						fontSizeRate: 1,
						fixedLine: null
					}, this.size = this.root;
				var n = 0;
				Object.defineProperty(this, "progress", {
					configurable: !0,
					set: function(t) {
						n = t, i.lifecycle("onProgress", t / i.count)
					},
					get: function() {
						return n || 0
					}
				})
			}
			return t.prototype.lifecycle = function(t, e) {
				this.options.listen && this.options.listen[t] && this.options.listen[t](e)
			}, t.prototype.setContext = function(t) {
				t && (this.ctx = t)
			}, t.prototype.init = function() {
				(this.canvas.height || r.WEB == R) && (this.canvas.height = this.size.height * this
					.pixelRatio, this.canvas.width = this.size.width * this.pixelRatio, this.ctx.scale(this
						.pixelRatio, this.pixelRatio))
			}, t.prototype.clear = function() {
				this.ctx.clearRect(0, 0, this.size.width, this.size.height)
			}, t.prototype.clipPath = function(t, e, i, n, r, o, s) {
				void 0 === o && (o = !1), void 0 === s && (s = !1);
				var a = this.ctx;
				if (/polygon/.test(r)) {
					var h = r.match(/-?\d+(rpx|px|%)?\s+-?\d+(rpx|px|%)?/g) || [];
					a.beginPath(), h.map((function(r) {
						var o = r.split(" "),
							s = o[0],
							a = o[1];
						return [A(s, i) + t, A(a, n) + e]
					})).forEach((function(t, e) {
						0 == e ? a.moveTo(t[0], t[1]) : a.lineTo(t[0], t[1])
					})), a.closePath(), s && a.stroke(), o && a.fill()
				}
			}, t.prototype.roundRect = function(t, e, i, n, r, o, s) {
				if (void 0 === o && (o = !1), void 0 === s && (s = !1), !(r < 0)) {
					var a = this.ctx;
					if (a.beginPath(), r) {
						var h = r || {},
							d = h.borderTopLeftRadius,
							c = void 0 === d ? r || 0 : d,
							l = h.borderTopRightRadius,
							f = void 0 === l ? r || 0 : l,
							u = h.borderBottomRightRadius,
							p = void 0 === u ? r || 0 : u,
							g = h.borderBottomLeftRadius,
							v = void 0 === g ? r || 0 : g;
						a.arc(t + i - p, e + n - p, p, 0, .5 * Math.PI), a.lineTo(t + v, e + n), a.arc(t +
							v, e + n - v, v, .5 * Math.PI, Math.PI), a.lineTo(t, e + c), a.arc(t + c,
							e + c, c, Math.PI, 1.5 * Math.PI), a.lineTo(t + i - f, e), a.arc(t + i - f,
							e + f, f, 1.5 * Math.PI, 2 * Math.PI), a.lineTo(t + i, e + n - p)
					} else a.rect(t, e, i, n);
					a.closePath(), s && a.stroke(), o && a.fill()
				}
			}, t.prototype.setTransform = function(t, e) {
				var i = e.transform,
					n = e.transformOrigin,
					r = this.ctx,
					o = i || {},
					s = o.scaleX,
					a = void 0 === s ? 1 : s,
					h = o.scaleY,
					d = void 0 === h ? 1 : h,
					c = o.translateX,
					l = void 0 === c ? 0 : c,
					f = o.translateY,
					u = void 0 === f ? 0 : f,
					p = o.rotate,
					g = void 0 === p ? 0 : p,
					v = o.skewX,
					y = void 0 === v ? 0 : v,
					b = o.skewY,
					x = void 0 === b ? 0 : b,
					m = t.left,
					w = t.top,
					S = t.width,
					z = t.height;
				l = A(l, S) || 0, u = A(u, z) || 0;
				var M = {
						top: A("0%", 1),
						center: A("50%", 1),
						bottom: A("100%", 1)
					},
					B = {
						left: A("0%", 1),
						center: A("50%", 1),
						right: A("100%", 1)
					};
				if (n = n.split(" ").filter((function(t, e) {
						return e < 2
					})).reduce((function(t, e) {
						if (/\d+/.test(e)) {
							var i = A(e, 1) / (/px|rpx$/.test(e) ? T(t.x) ? z : S : 1);
							return T(t.x) ? Object.assign(t, {
								y: i
							}) : Object.assign(t, {
								x: i
							})
						}
						return T(B[e]) && !T(t.x) ? Object.assign(t, {
							x: B[e]
						}) : Object.assign(t, {
							y: M[e] || .5
						})
					}), {}), (l || u) && r.translate(l, u), (a || d) && r.scale(a, d), g) {
					var k = m + S * n.x,
						I = w + z * n.y;
					r.translate(k, I), r.rotate(g * Math.PI / 180), r.translate(-k, -I)
				}(y || x) && r.transform(1, Math.tan(x * Math.PI / 180), Math.tan(y * Math.PI / 180), 1, 0,
					0)
			}, t.prototype.setBackground = function(t, e, i, n, o) {
				var s = this.ctx;
				t && t != M ? j(t) ? C(t, e, i, n, o, s) : s.setFillStyle(t) : [r.MP_TOUTIAO, r.MP_BAIDU]
					.includes(R) ? s.setFillStyle("rgba(0,0,0,0)") : s.setFillStyle(M)
			}, t.prototype.setShadow = function(t) {
				var e = t.boxShadow,
					i = void 0 === e ? [] : e,
					n = this.ctx;
				if (i.length) {
					var r = i[0],
						o = i[1],
						s = i[2],
						a = i[3];
					n.setShadow(r, o, s, a)
				}
			}, t.prototype.setBorder = function(t, e) {
				var i = this.ctx,
					n = t.width,
					r = t.height,
					o = t.left,
					s = t.top,
					a = e.border,
					h = e.borderBottom,
					d = e.borderTop,
					c = e.borderRight,
					l = e.borderLeft,
					f = e.borderRadius,
					u = e.lineCap,
					p = a || {},
					g = p.borderWidth,
					v = void 0 === g ? 0 : g,
					y = p.borderStyle,
					b = p.borderColor,
					x = h || {},
					m = x.borderBottomWidth,
					w = void 0 === m ? v : m,
					S = x.borderBottomStyle,
					z = void 0 === S ? y : S,
					M = x.borderBottomColor,
					B = void 0 === M ? b : M,
					k = d || {},
					I = k.borderTopWidth,
					P = void 0 === I ? v : I,
					W = k.borderTopStyle,
					L = void 0 === W ? y : W,
					O = k.borderTopColor,
					T = void 0 === O ? b : O,
					A = c || {},
					F = A.borderRightWidth,
					j = void 0 === F ? v : F,
					C = A.borderRightStyle,
					E = void 0 === C ? y : C,
					H = A.borderRightColor,
					U = void 0 === H ? b : H,
					Y = l || {},
					$ = Y.borderLeftWidth,
					D = void 0 === $ ? v : $,
					_ = Y.borderLeftStyle,
					X = void 0 === _ ? y : _,
					N = Y.borderLeftColor,
					V = void 0 === N ? b : N,
					G = f || {},
					q = G.borderTopLeftRadius,
					J = void 0 === q ? f || 0 : q,
					Q = G.borderTopRightRadius,
					Z = void 0 === Q ? f || 0 : Q,
					K = G.borderBottomRightRadius,
					tt = void 0 === K ? f || 0 : K,
					et = G.borderBottomLeftRadius,
					it = void 0 === et ? f || 0 : et;
				if (h || l || d || c || a) {
					var nt = function(t, e, n) {
							"dashed" == e ? /mp/.test(R) ? i.setLineDash([Math.ceil(4 * t / 3), Math.ceil(
									4 * t / 3)]) : i.setLineDash([Math.ceil(6 * t), Math.ceil(6 * t)]) :
								"dotted" == e && i.setLineDash([t, t]), i.setStrokeStyle(n)
						},
						rt = function(t, e, n, r, o, s, a, h, d, c, l, f, p, g, v) {
							i.save(), i.setLineCap(v ? "square" : u), i.setLineWidth(f), nt(f, p, g), i
								.beginPath(), i.arc(t, e, a, Math.PI * d, Math.PI * c), i.lineTo(n, r), i
								.arc(o, s, h, Math.PI * c, Math.PI * l), i.stroke(), i.restore()
						};
					if (i.save(), a && !h && !l && !d && !c) return i.setLineWidth(v), nt(v, y, b), this
						.roundRect(o, s, n, r, f, !1, !!b), void i.restore();
					w && rt(o + n - tt, s + r - tt, o + it, s + r, o + it, s + r - it, tt, it, .25, .5, .75,
						w, z, B, D && j), D && rt(o + it, s + r - it, o, s + J, o + J, s + J, it, J,
						.75, 1, 1.25, D, X, V, P && w), P && rt(o + J, s + J, o + n - Z, s, o + n - Z,
						s + Z, J, Z, 1.25, 1.5, 1.75, P, L, T, D && j), j && rt(o + n - Z, s + Z, o + n,
						s + r - tt, o + n - tt, s + r - tt, Z, tt, 1.75, 2, .25, j, E, U, P && w)
				}
			}, t.prototype.setOpacity = function(t) {
				var e = t.opacity,
					i = void 0 === e ? 1 : e;
				this.ctx.setGlobalAlpha(i)
			}, t.prototype.drawPattern = function(t, e, r) {
				return i(this, void 0, void 0, (function() {
					var i = this;
					return n(this, (function(n) {
						return [2, new Promise((function(n, o) {
							i.drawView(e, r, !0, !1, !0);
							var s = i,
								a = s.ctx;
							s.canvas;
							var h = e.width,
								d = e.height,
								c = e.left,
								l = e.top,
								f = r || {},
								u = f.borderRadius,
								p = void 0 === u ? 0 : u,
								g = f.backgroundImage,
								v = f.backgroundRepeat,
								y = void 0 === v ? "repeat" : v;
							g && function(t) {
								var o = a.createPattern(t.src,
									y);
								a.setFillStyle(o), i.roundRect(
										c, l, h, d, p, !0, !1),
									i.setBorder(e, r), n()
							}(t)
						}))]
					}))
				}))
			}, t.prototype.drawView = function(t, e, i, n, r) {
				void 0 === i && (i = !0), void 0 === n && (n = !0), void 0 === r && (r = !0);
				var o = this.ctx,
					s = t.width,
					a = t.height,
					h = t.left,
					d = t.top,
					c = e || {},
					l = c.borderRadius,
					f = void 0 === l ? 0 : l,
					u = c.backgroundColor,
					p = void 0 === u ? M : u,
					g = c.overflow;
				e.opacity && this.setOpacity(e), this.setTransform(t, e), r && (o.save(), this.setShadow(
					e)), i && this.setBackground(p, s, a, h, d), e.clipPath ? this.clipPath(h, d, s, a, e
						.clipPath, i, !1) : this.roundRect(h, d, s, a, f, i, !1), r && o.restore(), n &&
					this.setBorder(t, e), "hidden" == g && o.clip()
			}, t.prototype.drawImage = function(t, e, o, s) {
				return void 0 === e && (e = {}), void 0 === o && (o = {}), void 0 === s && (s = !0), i(this,
					void 0, void 0, (function() {
						var a = this;
						return n(this, (function(h) {
							switch (h.label) {
								case 0:
									return [4, new Promise((function(h, d) {
										return i(a, void 0, void 0, (
											function() {
												var i, a, d, c,
													l, f, u, p,
													g, v, y, b,
													x, m, w, S,
													z, k, I, P,
													W, L = this;
												return n(this, (
													function(
														n
														) {
														return i =
															this
															.ctx,
															a =
															o
															.borderRadius,
															d =
															void 0 ===
															a ?
															0 :
															a,
															c =
															o
															.backgroundColor,
															l =
															void 0 ===
															c ?
															M :
															c,
															f =
															o
															.objectFit,
															u =
															void 0 ===
															f ?
															B :
															f,
															p =
															o
															.backgroundSize,
															g =
															void 0 ===
															p ?
															B :
															p,
															v =
															o
															.objectPosition,
															y =
															o
															.backgroundPosition,
															b =
															o
															.boxShadow,
															o
															.backgroundImage &&
															(u = g,
																v =
																y
																),
															b &&
															this
															.drawView(
																e,
																Object
																.assign(
																	o, {
																		backgroundColor: l ||
																			b &&
																			(l ||
																				"#ffffff"
																				)
																	}
																	),
																!
																0,
																!
																1,
																!
																0
																),
															x =
															e
															.width,
															m =
															e
															.height,
															w =
															e
															.left,
															S =
															e
															.top,
															i
															.save(),
															z =
															e
															.contentSize
															.left -
															e
															.borderSize
															.left,
															k =
															e
															.contentSize
															.top -
															e
															.borderSize
															.top,
															s ||
															(this
																.setOpacity(
																	o
																	),
																this
																.setTransform(
																	e,
																	o
																	),
																this
																.setBackground(
																	l,
																	x,
																	m,
																	w,
																	S
																	),
																this
																.roundRect(
																	w,
																	S,
																	x,
																	m,
																	d,
																	!
																	!
																	(d ||
																		!
																		b &&
																		l
																		),
																	!
																	1
																	)
																),
															w +=
															z,
															S +=
															k,
															i
															.clip(),
															I =
															function(
																t
																) {
																if (u !==
																	B
																	) {
																	var n =
																		function(
																			t,
																			e,
																			i
																			) {
																			var n =
																				t
																				.objectFit,
																				r =
																				t
																				.objectPosition,
																				o =
																				e
																				.width /
																				e
																				.height,
																				s =
																				i
																				.width /
																				i
																				.height,
																				a =
																				1;
																			"contain" ==
																			n && o >=
																				s ||
																				"cover" ==
																				n &&
																				o <
																				s ?
																				a =
																				e
																				.height /
																				i
																				.height :
																				("contain" ==
																					n &&
																					o <
																					s ||
																					"cover" ==
																					n &&
																					o >=
																					s
																					) &&
																				(a = e
																					.width /
																					i
																					.width
																					);
																			var h =
																				i
																				.width *
																				a,
																				d =
																				i
																				.height *
																				a,
																				c =
																				r ||
																				[],
																				l =
																				c[
																					0],
																				f =
																				c[
																					1],
																				u =
																				/^\d+px|rpx$/
																				.test(
																					l
																					) ?
																				A(l, e
																					.width
																					) :
																				(e.width -
																					h
																					) *
																				(F(l) ?
																					A(l,
																						1) :
																					{
																						left: 0,
																						center: .5,
																						right: 1
																					}
																					[l ||
																						"center"
																					]
																					),
																				p =
																				/^\d+px|rpx$/
																				.test(
																					f
																					) ?
																				A(f, e
																					.height
																					) :
																				(e.height -
																					d
																					) *
																				(F(f) ?
																					A(f,
																						1) :
																					{
																						top: 0,
																						center: .5,
																						bottom: 1
																					}
																					[f ||
																						"center"
																					]
																					),
																				g =
																				function(
																					t,
																					e
																					) {
																					return [(t -
																							u) /
																						a,
																						(e -
																							p) /
																						a
																					]
																				},
																				v =
																				g(0,
																					0),
																				y =
																				v[
																					0],
																				b =
																				v[
																					1],
																				x =
																				g(e.width,
																					e
																					.height
																					),
																				m =
																				x[
																					0],
																				w =
																				x[
																					1];
																			return {
																				sx: Math
																					.max(
																						y,
																						0
																						),
																				sy: Math
																					.max(
																						b,
																						0
																						),
																				sw: Math
																					.min(
																						m -
																						y,
																						i
																						.width
																						),
																				sh: Math
																					.min(
																						w -
																						b,
																						i
																						.height
																						),
																				dx: Math
																					.max(
																						u,
																						0
																						),
																				dy: Math
																					.max(
																						p,
																						0
																						),
																				dw: Math
																					.min(
																						h,
																						e
																						.width
																						),
																				dh: Math
																					.min(
																						d,
																						e
																						.height
																						)
																			}
																		}
																		({
																				objectFit: u,
																				objectPosition: v
																			},
																			e
																			.contentSize,
																			t
																			),
																		o =
																		n
																		.sx,
																		s =
																		n
																		.sy,
																		a =
																		n
																		.sh,
																		h =
																		n
																		.sw,
																		d =
																		n
																		.dx,
																		c =
																		n
																		.dy,
																		l =
																		n
																		.dh,
																		f =
																		n
																		.dw;
																	R == r
																		.MP_BAIDU ?
																		i
																		.drawImage(
																			t
																			.src,
																			d +
																			w,
																			c +
																			S,
																			f,
																			l,
																			o,
																			s,
																			h,
																			a
																			) :
																		i
																		.drawImage(
																			t
																			.src,
																			o,
																			s,
																			h,
																			a,
																			d +
																			w,
																			c +
																			S,
																			f,
																			l
																			)
																} else
																	i
																	.drawImage(
																		t
																		.src,
																		w,
																		S,
																		x,
																		m
																		)
															},
															P =
															function() {
																i.restore(),
																	L
																	.drawView(
																		e,
																		o,
																		!
																		1,
																		!
																		0,
																		!
																		1
																		),
																	h(
																		1)
															},
															W =
															function(
																t
																) {
																I(t),
																	P()
															},
															W(
																t),
															[
																2]
													}))
											}))
									}))];
								case 1:
									return h.sent(), [2]
							}
						}))
					}))
			}, t.prototype.drawText = function(t, e, i, n) {
				var r = this.ctx,
					o = e.borderSize,
					s = e.contentSize,
					a = e.left,
					h = e.top,
					d = s.width,
					c = s.height,
					l = s.left - o.left,
					f = s.top - o.top,
					u = i.color,
					p = void 0 === u ? "#000000" : u,
					g = i.lineHeight,
					v = void 0 === g ? "1.4em" : g,
					y = i.fontSize,
					b = void 0 === y ? 14 : y,
					x = i.fontWeight,
					m = i.fontFamily,
					w = i.fontStyle,
					S = i.textAlign,
					z = void 0 === S ? "left" : S,
					M = i.verticalAlign,
					B = void 0 === M ? yt : M,
					k = i.backgroundColor,
					I = i.lineClamp,
					P = i.backgroundClip,
					W = i.textShadow,
					R = i.textDecoration;
				if (this.drawView(e, i, P != ut), v = A(v, b), t) {
					r.save(), this.setShadow({
						boxShadow: W
					}), a += l, h += f;
					var L = n.fontHeight,
						O = n.descent + n.ascent;
					switch (r.setFonts({
						fontFamily: m,
						fontSize: b,
						fontWeight: x,
						fontStyle: w
					}), r.setTextBaseline(O ? yt : B), r.setTextAlign(z), P ? this.setBackground(k, d,
						c, a, h) : r.setFillStyle(p), z) {
						case xt:
							break;
						case mt:
							a += .5 * d;
							break;
						case wt:
							a += d
					}
					var T = n.lines * v,
						F = Math.ceil((c - T) / 2);
					switch (F < 0 && (F = 0), B) {
						case vt:
							break;
						case yt:
							h += F;
							break;
						case bt:
							h += 2 * F
					}
					var j = (v - L) / 2,
						C = function(t) {
							var e = r.measureText(t),
								i = e.actualBoundingBoxDescent,
								n = void 0 === i ? 0 : i,
								o = e.actualBoundingBoxAscent;
							return B == vt ? {
								fix: O ? void 0 === o ? 0 : o : 0,
								lineY: O ? 2 * j : j
							} : B == yt ? {
								fix: O ? v / 2 + n / 4 : v / 2,
								lineY: (v - L) / 2
							} : B == bt ? {
								fix: O ? v - n : v + j,
								lineY: 0
							} : {
								fix: 0,
								height: 0,
								lineY: 0
							}
						},
						E = function(t, e, i) {
							var o = t;
							switch (z) {
								case xt:
									o += i;
									break;
								case mt:
									o = (t -= i / 2) + i;
									break;
								case wt:
									o = t, t -= i
							}
							if (R) {
								r.setLineWidth(b / 13), r.beginPath();
								var s = .1 * n.fontHeight;
								/\bunderline\b/.test(R) && (r.moveTo(t, e + s), r.lineTo(o, e + s)),
									/\boverline\b/.test(R) && (O || (e -= j), r.moveTo(t, e - n.fontHeight -
										s), r.lineTo(o, e - n.fontHeight - s)), /\bline-through\b/.test(
									R) && (r.moveTo(t, e - .5 * n.fontHeight), r.lineTo(o, e - .5 * n
										.fontHeight)), r.closePath(), r.setStrokeStyle(p), r.stroke()
							}
						};
					if (!n.widths || 1 == n.widths.length && n.widths[0].total <= s.width) {
						var H = C(t),
							U = H.fix,
							Y = H.lineY;
						return r.fillText(t, a, h + U), E(a, (h += v) - Y, n && n.widths && n.widths[0]
							.total || n.text), r.restore(), void this.setBorder(e, i)
					}
					for (var $ = t.split(""), D = h, _ = a, X = "", N = 0, V = 0; V <= $.length; V++) {
						var G = $[V] || "",
							q = "\n" === G,
							J = "" == G,
							Q = X + (G = q ? "" : G),
							Z = r.measureText(Q).width;
						if (N >= I) break;
						if (_ = a, Z > s.width || q || J) {
							if (N++, X = J && Z <= s.width ? Q : X, N === I && Z > d) {
								for (; r.measureText("".concat(X, "...")).width > s.width && !(X.length <=
										1);) X = X.substring(0, X.length - 1);
								X += "..."
							}
							var K = C(X);
							U = K.fix, Y = K.lineY;
							if (r.fillText(X, _, h + U), E(_, (h += v) - Y, Z), X = G, h > D + c) break
						} else X = Q
					}
					r.restore()
				}
			}, t.prototype.source = function(t) {
				return i(this, void 0, void 0, (function() {
					var e, i, r, o = this;
					return n(this, (function(n) {
						switch (n.label) {
							case 0:
								if (this.node = null, e = +new Date, "{}" == JSON
									.stringify(t)) return [2];
								if (!t.type)
									for (i in t.type = gt, t.css = t.css || {}, t)[
											"views", "children", "type", "css"]
										.includes(i) || (t.css[i] = t[i], delete t[
											i]);
								return t.css && !t.css.width && (t.css || (t
									.css = {})), [4, this.create(t)];
							case 1:
								return (r = n.sent()) ? (this.size = r.layout() ||
									{}, this.node = r, this.onEffectFinished()
									.then((function(t) {
										return o.lifecycle(
											"onEffectSuccess", t)
									})).catch((function(t) {
										return o.lifecycle(
											"onEffectFail", t)
									})), console.log("布局用时：" + (+new Date - e) +
										"ms"), [2, this.size]) : [2, console
									.warn("no node")
								]
						}
					}))
				}))
			}, t.prototype.getImageInfo = function(t) {
				return this.imageBus[t] || (this.imageBus[t] = this.createImage(t, this.useCORS)), this
					.imageBus[t]
			}, t.prototype.create = function(t, r) {
				return i(this, void 0, void 0, (function() {
					var i, o, s, a, h, d, c, l, f, u, p, g, v, y, b, x, w;
					return n(this, (function(n) {
						switch (n.label) {
							case 0:
								if (i = t.type == ft, o = [ut, pt].includes(t.type),
									s = t.css || {}, a = s.backgroundImage, h = s
									.display, i && !t.src && !t.url || o && !t.text)
									return [2];
								if (h == m) return [2];
								if (o && (t.text = String(t.text)), !(i || t.type ==
										gt && a)) return [3, 4];
								d = i ? t.src : "", c = /url\((.+)\)/.exec(a), a &&
									c && c[1] && (d = c[1] || ""), n.label = 1;
							case 1:
								return n.trys.push([1, 3, , 4]), [4, this
									.getImageInfo(d)
								];
							case 2:
								return l = n.sent(), f = l.width, u = l.height, !(
									p = l.path) && i ? [2] : (p && (t
									.attributes = Object.assign(t
										.attributes || {}, {
											width: f,
											height: u,
											path: p,
											src: p,
											naturalSrc: d
										})), [3, 4]);
							case 3:
								return g = n.sent(), t.type != gt ? [2] : (this
									.lifecycle("onEffectFail", e(e({}, g), {
										src: d
									})), [3, 4]);
							case 4:
								if (this.count += 1, v = new ct(t, r, this.root,
										this.ctx), !(y = t.views || t.children))
									return [3, 8];
								b = 0, n.label = 5;
							case 5:
								return b < y.length ? (x = y[b], [4, this.create(x,
									v)]) : [3, 8];
							case 6:
								(w = n.sent()) && v.add(w), n.label = 7;
							case 7:
								return b++, [3, 5];
							case 8:
								return [2, v]
						}
					}))
				}))
			}, t.prototype.drawNode = function(t, e) {
				return void 0 === e && (e = !1), i(this, void 0, void 0, (function() {
					var i, r, o, s, a, h, d, c, l, f, u, p, g, v, y, b, x, m, w, S;
					return n(this, (function(n) {
						switch (n.label) {
							case 0:
								return i = t.layoutBox, r = t.computedStyle, o = t
									.attributes, s = t.name, a = t.children, h = t
									.fixedLine, d = t.attributes, c = d.src, l = d
									.text, ["fixed"].includes(r.position) && !e ? [
										2] : (this.ctx.save(), s !== gt ? [3, 7] :
										c ? r.backgroundRepeat ? [4, this
											.drawPattern(o, i, r)
										] : [3, 2] : [3, 5]);
							case 1:
								return n.sent(), [3, 4];
							case 2:
								return [4, this.drawImage(o, i, r, !1)];
							case 3:
								n.sent(), n.label = 4;
							case 4:
								return [3, 6];
							case 5:
								this.drawView(i, r), n.label = 6;
							case 6:
								return [3, 10];
							case 7:
								return s === ft && c ? [4, this.drawImage(o, i, r, !
									1)] : [3, 9];
							case 8:
								return n.sent(), [3, 10];
							case 9:
								s === ut ? this.drawText(l, i, r, o) : s === pt &&
									lt.api && lt.api.draw(l, this, i, r), n.label =
									10;
							case 10:
								if (this.progress += 1, u = (f = h || {})
									.beforeElements, p = f.afterElements, !u)
								return [3, 14];
								g = 0, v = u, n.label = 11;
							case 11:
								return g < v.length ? (S = v[g], [4, this.drawNode(
									S)]) : [3, 14];
							case 12:
								n.sent(), n.label = 13;
							case 13:
								return g++, [3, 11];
							case 14:
								if (!a) return [3, 18];
								y = Object.values ? Object.values(a) : Object.keys(
									a).map((function(t) {
									return a[t]
								})), b = 0, x = y, n.label = 15;
							case 15:
								return b < x.length ? "absolute" === (S = x[b])
									.computedStyle.position ? [3, 17] : [4, this
										.drawNode(S)
									] : [3, 18];
							case 16:
								n.sent(), n.label = 17;
							case 17:
								return b++, [3, 15];
							case 18:
								if (!p) return [3, 22];
								m = 0, w = p, n.label = 19;
							case 19:
								return m < w.length ? (S = w[m], [4, this.drawNode(
									S)]) : [3, 22];
							case 20:
								n.sent(), n.label = 21;
							case 21:
								return m++, [3, 19];
							case 22:
								return this.ctx.restore(), [2]
						}
					}))
				}))
			}, t.prototype.render = function(t) {
				var e = this;
				return void 0 === t && (t = 30), new Promise((function(r, o) {
					return i(e, void 0, void 0, (function() {
						var e, i, s, a, h, d, c, l, f, u;
						return n(this, (function(n) {
							switch (n.label) {
								case 0:
									return e = +new Date, this.init(), [
										4, (p = t, void 0 === p && (
											p = 0), new Promise(
											(function(t) {
												return setTimeout(
													t, p
													)
											})))
									];
								case 1:
									n.sent(), n.label = 2;
								case 2:
									if (n.trys.push([2, 14, , 15]), !
										this.node) return [3, 12];
									if (i = this.root.fixedLine || {},
										s = i.beforeElements, a = i
										.afterElements, !s) return [3,
										6];
									h = 0, d = s, n.label = 3;
								case 3:
									return h < d.length ? (f = d[h], [4,
										this.drawNode(f, !0)
									]) : [3, 6];
								case 4:
									n.sent(), n.label = 5;
								case 5:
									return h++, [3, 3];
								case 6:
									return [4, this.drawNode(this
									.node)];
								case 7:
									if (n.sent(), !a) return [3, 11];
									c = 0, l = a, n.label = 8;
								case 8:
									return c < l.length ? (f = l[c], [4,
										this.drawNode(f, !0)
									]) : [3, 11];
								case 9:
									n.sent(), n.label = 10;
								case 10:
									return c++, [3, 8];
								case 11:
									return r(this.node), [3, 13];
								case 12:
									this.lifecycle("onEffectFail",
											"node is empty"), n.label =
										13;
								case 13:
									return [3, 15];
								case 14:
									return u = n.sent(), this.lifecycle(
										"onEffectFail", u), o(u), [
										3, 15
									];
								case 15:
									return console.log("渲染用时：" + (+
											new Date - e - 30) +
										"ms"), [2]
							}
							var p
						}))
					}))
				}))
			}, t.prototype.onEffectFinished = function() {
				var t = this,
					e = Object.keys(this.imageBus).map((function(e) {
						return t.imageBus[e]
					}));
				return Promise.all(e)
			}, t.prototype.destroy = function() {
				this.node = []
			}, t.prototype.save = function(t) {
				try {
					var e = t || {},
						i = e.fileType,
						n = void 0 === i ? "png" : i,
						r = e.quality,
						o = void 0 === r ? 1 : r;
					return this.canvas.toDataURL("image/".concat(n), o)
				} catch (t) {
					return this.lifecycle("onEffectFail", "image cross domain"), t
				}
			}, t
		}();
	r.WEB == R && (window.Painter = St), t.Painter = St, t.default = St, Object.defineProperty(t,
	"__esModule", {
		value: !0
	})
}));
