var t = function () {
  return (
    (t =
      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
      }),
    t.apply(this, arguments)
  )
}
function e(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 i(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 n = {
    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'
  },
  r = ['Top', 'Right', 'Bottom', 'Left'],
  o = 'right',
  s = 'bottom',
  a = ['contentSize', 'clientSize', 'borderSize', 'offsetSize'],
  h = 'row',
  c = 'column',
  f = { TOP: 'top', MIDDLE: 'middle', BOTTOM: s },
  l = { LEFT: 'left', CENTER: 'center', RIGHT: o },
  d = 'view',
  u = 'text',
  p = 'image',
  g = 'qrcode',
  v = 'block',
  y = 'inline-block',
  x = 'none',
  b = 'flex',
  w = 'absolute',
  m = 'fixed',
  S = {
    display: v,
    color: '#000000',
    lineHeight: '1.4em',
    fontSize: 14,
    fontWeight: 400,
    fontFamily: 'sans-serif',
    lineCap: 'butt',
    flexDirection: h,
    flexWrap: 'nowrap',
    textAlign: 'left',
    alignItems: 'flex-start',
    justifyContent: 'flex-start',
    position: 'static',
    transformOrigin: ''.concat('center', ' ').concat('center')
  },
  z = {
    upx2px: function (t) {
      return (window.innerWidth / 750) * t
    },
    getSystemInfoSync: function () {
      return { screenWidth: window.innerWidth, screenHeight: window.innerHeight }
    },
    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)
    }
  },
  I =
    'object' == typeof window
      ? 'undefined' == typeof uni || ('undefined' != typeof uni && !uni.addInterceptor)
        ? n.WEB
        : n.H5
      : 'object' == typeof swan
      ? n.MP_BAIDU
      : 'object' == typeof tt
      ? n.MP_TOUTIAO
      : 'object' == typeof plus
      ? n.PLUS
      : 'object' == typeof wx
      ? n.MP_WEIXIN
      : void 0,
  M =
    I == n.MP_WEIXIN
      ? wx
      : 'undefined' != typeof uni
      ? 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, z)
      : 'undefined' != typeof window
      ? z
      : uni
if (!M.upx2px) {
  var k = ((M.getSystemInfoSync && M.getSystemInfoSync()).screenWidth || 375) / 750
  M.upx2px = function (t) {
    return k * t
  }
}
function B(t) {
  return /^-?\d+(\.\d+)?$/.test(t)
}
function W(t, e, i) {
  if (B(t)) return 1 * t
  if ('string' == typeof t) {
    var n = /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(em|rpx|vw|vh|px|%)$/g.exec(t)
    if (!t || !n) return 0
    var r = n[3]
    t = parseFloat(t)
    var o = 0
    if ('rpx' === r) o = M.upx2px(t)
    else if ('px' === r) o = 1 * t
    else if ('%' === r && e) o = (t * W(e)) / 100
    else if ('em' === r && e) o = t * W(e || 14)
    else if (['vw', 'vh'].includes(r)) {
      var s = M.getSystemInfoSync(),
        a = s.screenWidth,
        h = s.screenHeight
      o = (t * ('vw' == r ? a : h)) / 100
    }
    return 1 * o.toFixed(2)
  }
  return 0
}
function P(t) {
  return /%$/.test(t)
}
function O(t) {
  return /^-?([0-9]+)?([.]{1}[0-9]+){0,1}(rpx|px)$/.test(t)
}
var T = function (t) {
    return !(!t || (!t.startsWith('linear') && !t.startsWith('radial')))
  },
  L = 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,
                  c = 0,
                  f = 0,
                  l = 0
                if (s < a || (s > 180 - a && s < 180) || (s > 180 && s < 180 + a) || s > 360 - a) {
                  var d = (s * Math.PI) / 180,
                    u = s < a || s > 360 - a ? i / 2 : -i / 2,
                    p = Math.tan(d) * u,
                    g = s < a || (s > 180 - a && s < 180) ? e / 2 - p : -e / 2 - p
                  ;(h = -(f = p + (v = Math.pow(Math.sin(d), 2) * g))), (c = -(l = u + v / Math.tan(d)))
                }
                if (
                  (s > a && s < 90) ||
                  (s > 90 && s < 90 + a) ||
                  (s > 180 + a && s < 270) ||
                  (s > 270 && s < 360 - a)
                ) {
                  var v
                  ;(d = ((90 - s) * Math.PI) / 180),
                    (p = (s > a && s < 90) || (s > 90 && s < 90 + a) ? e / 2 : -e / 2),
                    (u = Math.tan(d) * p),
                    (g = (s > a && s < 90) || (s > 270 && s < 360 - a) ? i / 2 - u : -i / 2 - u)
                  ;(h = -(f = p + (v = Math.pow(Math.sin(d), 2) * g) / Math.tan(d))), (c = -(l = u + v))
                }
                return (
                  (h = Math.round(h + e / 2) + n),
                  (c = Math.round(i / 2 - c) + r),
                  (f = Math.round(f + e / 2) + n),
                  (l = Math.round(i / 2 - l) + r),
                  { x0: h, y0: c, x1: f, y1: l }
                )
              })(r, t, e, i, n),
              a = s.x0,
              h = s.y0,
              c = s.x1,
              f = s.y1,
              l = o.createLinearGradient(a, h, c, f),
              d = r.match(/linear-gradient\((.+)\)/)[1],
              u = R(d.substring(d.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 = R(r.match(/radial-gradient\((.+)\)/)[1]),
              a = Math.round(t / 2) + i,
              h = Math.round(e / 2) + n,
              c = o.createRadialGradient(a, h, 0, a, h, Math.max(t, e) / 2),
              f = 0;
            f < s.colors.length;
            f++
          )
            c.addColorStop(s.percents[f], s.colors[f])
          o.setFillStyle(c)
        })(e, i, n, r, t, o)
  }
function R(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 F(t, e, i) {
  return (
    e in t ? Object.defineProperty(t, e, { value: i, enumerable: !0, configurable: !0, writable: !0 }) : (t[e] = i), t
  )
}
function A() {
  return (
    (A = 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
        }),
    A.apply(this, arguments)
  )
}
function j(t, e) {
  return (
    (j = Object.setPrototypeOf
      ? Object.setPrototypeOf.bind()
      : function (t, e) {
          return (t.__proto__ = e), t
        }),
    j(t, e)
  )
}
function E(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 C(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 E(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)
            ? E(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 H(t) {
  return 'number' == typeof t
}
function D(t) {
  return 'auto' === t || null === t
}
function $(t) {
  return /%$/.test(t)
}
var Y = p,
  U = u,
  N = d,
  X = g,
  _ = y,
  q = w,
  G = m
function V(t) {
  return t.replace(/-([a-z])/g, function (t, e) {
    return e.toUpperCase()
  })
}
function J(t, e) {
  var i,
    n,
    o = (function (t) {
      var e = t.match(/([a-z]+)/)[1]
      return [e, V(t.split(e)[1])]
    })(t),
    s = o[0],
    a = o[1],
    h = e.split(' ')
  if (a) return ((i = {})[s + a] = e), i
  if (h.length && !a) {
    var c = h[0],
      f = h[1],
      l = h[2],
      d = h[3]
    return ((n = {})[s + r[0]] = c), (n[s + r[1]] = f || c), (n[s + r[2]] = l || c), (n[s + r[3]] = d || f || c), n
  }
}
function Q(t) {
  t = t.trim()
  for (var e = new Array(), i = '+', n = '', r = t.length, o = 0; o < r; ++o) {
    if ('.' === t[o] || (!isNaN(Number(t[o])) && ' ' !== t[o])) n += t[o]
    else if ('(' === t[o]) {
      for (var s = 1, a = o; s > 0; ) '(' === t[(a += 1)] && (s += 1), ')' === t[a] && (s -= 1)
      ;(n = ''.concat(Q(t.slice(o + 1, a)))), (o = a)
    }
    if ((isNaN(Number(t[o])) && '.' !== t[o]) || o === r - 1) {
      var h = parseFloat(n)
      switch (i) {
        case '+':
          e.push(h)
          break
        case '-':
          e.push(-h)
          break
        case '*':
          e.push(e.pop() * h)
          break
        case '/':
          e.push(e.pop() / h)
      }
      ;(i = t[o]), (n = '')
    }
  }
  for (var c = 0; e.length; ) c += e.pop()
  return c
}
var Z,
  K = 0,
  et = (function () {
    function t() {
      F(this, 'elements', []),
        F(this, 'afterElements', []),
        F(this, 'beforeElements', []),
        F(this, 'ids', []),
        F(this, 'width', 0),
        F(this, 'height', 0),
        F(this, 'top', 0),
        F(this, 'left', 0),
        F(this, 'pre', null),
        F(this, 'offsetX', 0),
        F(this, 'offsetY', 0),
        K++,
        (this.id = K)
    }
    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) {
        if (!this.ids.includes(t.id)) {
          this.ids.push(t.id), 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 !((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 e === s
          ? this.height - t.contentSize.height
          : 'middle' === e
          ? (this.height - t.contentSize.height) / 2
          : 0
      }),
      (e.setIndent = function (t) {
        var e = t.style.textIndent
        if (e && /^calc/.test(e)) {
          var i = /^calc\((.+)\)$/.exec(e)
          if (i && i[1]) {
            var n = i[1].replace(/([^\s\(\+\-\*\/]+)\.(left|right|bottom|top|width|height)/g, function (e) {
                var i = e.split('.'),
                  n = i[0],
                  r = i[1],
                  o = t.parent.querySelector(n)
                if (o && o.offsetSize) {
                  var s = {
                    right: o.offsetSize.left + o.offsetSize.width,
                    bottom: o.offsetSize.top + o.offsetSize.height
                  }
                  return o.offsetSize[r] || s[r] || 0
                }
              }),
              r = Q(n.replace(new RegExp(/-?[0-9]+(\.[0-9]+)?(rpx|px|%)/, 'g'), W))
            t.style.textIndent = r
          }
        }
      }),
      (e.layout = function (t, e) {
        var i = this
        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.forEach(function (t, e) {
            i.setIndent(t)
            var n = i.elements[e - 1],
              r = i.getOffsetY(t)
            ;(t.style.top = i.top + r),
              (t.style.left = n ? n.offsetSize.left + n.offsetSize.width : i.left),
              t.getBoxPosition()
          })
      }),
      (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
    )
  })(),
  it =
    (((Z = {})[h] = {
      width: 'width',
      contentWidth: 'width',
      lineMaxWidth: 'lineMaxWidth',
      left: 'left',
      top: 'top',
      height: 'height',
      lineMaxHeight: 'lineMaxHeight',
      marginLeft: 'marginLeft'
    }),
    (Z[c] = {
      width: 'height',
      contentWidth: 'height',
      lineMaxWidth: 'lineMaxWidth',
      left: 'top',
      top: 'left',
      height: 'width',
      lineMaxHeight: 'lineMaxHeight',
      marginLeft: 'marginTop'
    }),
    Z),
  nt = (function (t) {
    var e, i
    function n() {
      var e
      return (
        F(
          (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.width = 0),
        (e.key = null),
        (e.flexDirection = 'row'),
        e
      )
    }
    ;(i = t), ((e = n).prototype = Object.create(i.prototype)), (e.prototype.constructor = e), j(e, i)
    var r = n.prototype
    return (
      (r.bind = function (t) {
        ;(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.flexDirection = t.parent.style.flexDirection), (this.key = it[this.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)
        var e = t.style.flex
        H(e) ? (this.flexTotal += e) : H(this.getWidth(t.style)) && (this.exactValue += this.getWidth(t.offsetSize)),
          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.getWidth = function (t) {
        return t[this.key.width] || 0
      }),
      (r.getHeight = function (t) {
        return t[this.key.height] || 0
      }),
      (r.setWidth = function (t, e) {
        t[this.key.width] = e
      }),
      (r.setHeight = function (t, e) {
        t[this.key.height] = e
      }),
      (r.calcFlex = function () {
        var t = this,
          e = this.container.contentSize[this.key.contentWidth],
          i = 0
        this.elements.forEach(function (n) {
          var r = n.style,
            o = n.contentSize,
            s = t.getWidth(r) || t.getWidth(o)
          H(r.flex) && (s = (r.flex / t.flexTotal) * (e - t.exactValue)),
            t.setWidth(n.computedStyle, s),
            (n.isFlexCalc = !0),
            delete n.line,
            delete n.lines,
            delete n.lineMaxWidth,
            n.getBoxWidthHeight(),
            (i = Math.max(i, t.getHeight(n.offsetSize)))
        }),
          this.setHeight(this, i)
      }),
      (r.refreshWidthHeight = function (t) {
        var e = this.container.style.alignItems
        e && !t.style.alignSelf && (t.style.alignSelf = e)
        var i = this.getHeight(t.offsetSize)
        i > this[this.key.height] && (this.container[this.key.lineMaxHeight] = this[this.key.height] = i),
          (this[this.key.width] += this.getWidth(t.offsetSize))
        var n = Math.min(this.getWidth(this), !this.getWidth(this.container.contentSize) && 1 / 0)
        ;(this.container[this.key.lineMaxWidth] || 0) < n && (this.container[this.key.lineMaxWidth] = n)
      }),
      (r.refreshXAlign = function () {
        var t = this,
          e = this.elements.reduce(function (e, i) {
            return e + t.getWidth(i.offsetSize)
          }, 0),
          i = (this.outerWidth == 1 / 0 ? 0 : this.outerWidth - e) || 0,
          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)),
                    n.getBoxPosition())
                }),
                (i = 0)
            })('space-between' == n, i),
            (i = 0)),
          (this.offsetX = i || 0),
          this.refreshYAlign()
      }),
      (r.refreshYAlign = function () {
        var t = this
        if (1 == this.container.lines.length) return 0
        var e = this.container.lines.reduce(function (e, i) {
            return e + t.getHeight(i)
          }, 0),
          i = this.container.style.alignItems,
          n = this.getHeight(this.container.contentSize)
        if ('center' === i) {
          var r = (n - e) / (this.container.lines.length + 1)
          this.container.lines.forEach(function (t) {
            t.offsetY = r
          })
        }
        if ('flex-end' === i) {
          var o = n - e
          this.container.lines[0].offsetY = o
        }
      }),
      (r.getOffsetY = function (t) {
        if (this.container.lines.length > 1) return 0
        var e = t.style.alignSelf,
          i = this.getHeight(this.container.contentSize),
          n = i - this.getHeight(t.offsetSize)
        return 'flex-end' === e
          ? n
          : 'center' === e
          ? n / 2
          : 'stretch' === e
          ? (n &&
              t.name == d &&
              ((t.style[this.key.width] = this.getWidth(t.offsetSize)),
              (t.style[this.key.height] = i),
              delete t.line,
              delete t.lines,
              t.getBoxWidthHeight()),
            0)
          : 0
      }),
      (r.layout = function (t, e) {
        var i = this
        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.forEach(function (t, e) {
            i.setIndent(t)
            var n = i.elements[e - 1],
              r = i.getOffsetY(t)
            ;(t.style[i.key.top] = i[i.key.top] + r),
              (t.style[i.key.left] = n ? n.offsetSize[i.key.left] + i.getWidth(n.offsetSize) : i[i.key.left]),
              t.getBoxPosition()
          })
      }),
      n
    )
  })(et),
  rt = p,
  ot = u,
  st = d,
  at = v,
  ht = y,
  ct = b,
  ft = w,
  lt = m,
  dt = 0,
  ut = { left: null, top: null, width: null, height: null },
  pt = new Map(),
  gt = (function () {
    function t(t, e, i, n) {
      var o = this
      F(this, 'id', dt++),
        F(this, 'style', { left: null, top: null, width: null, height: null }),
        F(this, 'computedStyle', {}),
        F(this, 'originStyle', {}),
        F(this, 'children', {}),
        F(this, 'layoutBox', A({}, ut)),
        F(this, 'contentSize', A({}, ut)),
        F(this, 'clientSize', A({}, ut)),
        F(this, 'borderSize', A({}, ut)),
        F(this, 'offsetSize', A({}, ut)),
        (this.ctx = n),
        (this.root = i),
        e && (this.parent = e),
        (this.name = t.type || t.name),
        (this.attributes = this.getAttributes(t))
      var s = (function (t, e) {
        var i,
          n = ['color', 'fontSize', 'lineHeight', 'verticalAlign', 'fontWeight', 'textAlign'],
          o = t.type,
          s = void 0 === o ? N : o,
          a = t.styles,
          h = void 0 === a ? {} : a,
          c = (e || {}).computedStyle,
          f = Object.assign({}, S)
        if (([U, Y, X].includes(s) && !h.display && (f.display = _), c))
          for (var l = 0; l < n.length; l++) {
            var d = n[l]
            ;(h[d] || c[d]) && (h[d] = h[((i = d), i.replace(/([A-Z])/g, '-$1').toLowerCase())] || h[d] || c[d])
          }
        for (
          var u = function (t) {
              var e,
                i,
                n,
                o,
                a = h[t]
              if ((/-/.test(t) && ((t = V(t)), (f[t] = a)), /^(box|text)?shadow$/i.test(t))) {
                var c = []
                return (
                  a.replace(/((-?\d+(rpx|px|vw|vh)?\s+?){3})(.+)/, function () {
                    for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e]
                    c = t[1]
                      .match(/-?\d+(rpx|px|vw|vh)?/g)
                      .map(function (t) {
                        return W(t)
                      })
                      .concat(t[4])
                  }),
                  /^text/.test(t) ? (f.textShadow = c) : (f.boxShadow = c),
                  'continue'
                )
              }
              if (/^border/i.test(t) && !/radius$/i.test(t)) {
                var l = t.match(/^border([BTRLa-z]+)?/)[0],
                  d = t.match(/[W|S|C][a-z]+/),
                  u = a
                    .replace(/([\(,])\s+|\s+([\),])/g, '$1$2')
                    .split(' ')
                    .map(function (t) {
                      return /^\d/.test(t) ? W(t, '') : t
                    })
                return (
                  f[l] || (f[l] = {}),
                  1 == u.length && d
                    ? (f[l][l + d[0]] = u[0])
                    : (f[l] =
                        (((e = {})[l + 'Width'] = B(u[0]) ? u[0] : 0),
                        (e[l + 'Style'] = u[1] || 'solid'),
                        (e[l + 'Color'] = u[2] || 'black'),
                        e)),
                  'continue'
                )
              }
              if (/^background(color)?$/i.test(t)) return (f.backgroundColor = a), 'continue'
              if (/^objectPosition$/i.test(t)) return (f[t] = a.split(' ')), 'continue'
              if (/^backgroundPosition$/i.test(t)) return (f[t] = a.split(' ')), 'continue'
              if (/padding|margin|radius/i.test(t)) {
                var p = /radius$/i.test(t),
                  g = 'borderRadius',
                  v = p ? g : t.match(/[a-z]+/)[0],
                  y = function (t, e) {
                    return 'border'.concat(t).concat(e, 'Radius')
                  },
                  x = [0, 0, 0, 0].map(function (t, e) {
                    return p ? [y(r[0], r[3]), y(r[0], r[1]), y(r[2], r[1]), y(r[2], r[3])][e] : v + r[e]
                  })
                if ('padding' === t || 'margin' === t || /^(border)?radius$/i.test(t)) {
                  u = ''
                    .concat(a)
                    .split(' ')
                    .map(function (e) {
                      return /^-?\d+(rpx|px|vh|vw)?$/.test(e) ? W(e) : 'margin' != t && /auto/.test(e) ? 0 : e
                    }, []) || [0]
                  var b = p ? g : t,
                    w = u[0],
                    m = u[1],
                    S = u[2],
                    z = u[3]
                  f[b] =
                    (((i = {})[x[0]] = D(w) ? 0 : w),
                    (i[x[1]] = B(m) || D(m) ? m : w),
                    (i[x[2]] = D(B(S) ? S : w) ? 0 : B(S) ? S : w),
                    (i[x[3]] = B(z) ? z : null != m ? m : w),
                    i)
                } else
                  'object' == typeof f[v] ||
                    (f[v] =
                      (((n = {})[x[0]] = f[v] || 0),
                      (n[x[1]] = f[v] || 0),
                      (n[x[2]] = f[v] || 0),
                      (n[x[3]] = f[v] || 0),
                      n)),
                    (f[v][t] = ('margin' == v && D(a)) || $(a) ? a : W(a))
                return 'continue'
              }
              if (/^transform$/i.test(t))
                return (
                  (f[t] = {}),
                  a.replace(/([a-zA-Z]+)\(([0-9,-\.%rpxdeg\s]+)\)/g, function (e, i, n) {
                    var r = n.split(',').map(function (t) {
                        return t.replace(/(^\s*)|(\s*$)/g, '')
                      }),
                      o = function (t, e) {
                        return t.includes('deg') ? 1 * t : e && !$(e) ? W(t, e) : t
                      }
                    i.includes('matrix')
                      ? (f[t][i] = r.map(function (t) {
                          return 1 * t
                        }))
                      : i.includes('rotate')
                      ? (f[t][i] = 1 * n.match(/^-?\d+(\.\d+)?/)[0])
                      : /[X, Y]/.test(i)
                      ? (f[t][i] = /[X]/.test(i) ? o(r[0], h.width) : o(r[0], h.height))
                      : ((f[t][i + 'X'] = o(r[0], h.width)), (f[t][i + 'Y'] = o(r[1] || r[0], h.height)))
                  }),
                  'continue'
                )
              if (
                (/^font$/i.test(t) && console.warn('font 不支持简写'),
                /^textindent/i.test(t) && (f[t] = /^calc/.test(a) ? a : W(a)),
                /^textstroke/i.test(t))
              ) {
                var I = t.match(/color|width|type$/i),
                  M =
                    ((l = 'textStroke'),
                    a.split(' ').map(function (t) {
                      return /^\d+(rpx|px|vh|vw)?$/.test(t) ? W(t) : t
                    }))
                return (
                  I
                    ? f[l]
                      ? (f[l][I[0]] = M[0])
                      : (f[l] = (((o = {})[I[0]] = M[0]), o))
                    : (f[l] = { width: M[0], color: M[1], type: M[2] }),
                  'continue'
                )
              }
              ;/^left|top$/i.test(t) && ![q, G].includes(h.position)
                ? (f[t] = 0)
                : (f[t] = /^-?[\d\.]+(px|rpx|vw|vh)?$/.test(a) ? W(a) : /em$/.test(a) && s == U ? W(a, h.fontSize) : a)
            },
            p = 0,
            g = Object.keys(h);
          p < g.length;
          p++
        )
          u(g[p])
        return f
      })(t, e)
      ;(this.isAbsolute = s.position == ft),
        (this.isFixed = s.position == lt),
        (this.originStyle = s),
        (this.styles = t.styles),
        Object.keys(s).forEach(function (t) {
          Object.defineProperty(o.style, t, {
            configurable: !0,
            enumerable: !0,
            get: function () {
              return s[t]
            },
            set: function (e) {
              s[t] = e
            }
          })
        })
      var a = {
        contentSize: A({}, this.contentSize),
        clientSize: A({}, this.clientSize),
        borderSize: A({}, this.borderSize),
        offsetSize: A({}, this.offsetSize)
      }
      Object.keys(a).forEach(function (t) {
        Object.keys(o[t]).forEach(function (e) {
          Object.defineProperty(o[t], e, {
            configurable: !0,
            enumerable: !0,
            get: function () {
              return a[t][e]
            },
            set: function (i) {
              a[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.prev = function (t) {
        void 0 === t && (t = this)
        var e = t.parent.getChildren()
        return e[
          e.findIndex(function (e) {
            return e.id == t.id
          }) - 1
        ]
      }),
      (e.querySelector = function (t) {
        var e = this.getChildren()
        if ('string' != typeof t) return null
        var i = e.find(function (e) {
          var i = e.id,
            n = e.attributes
          return i == t || (n && n.uid == t)
        })
        return i || (this.parent && this.parent.querySelector && this.parent.querySelector(t)) || null
      }),
      (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.setPosition = function (t, e) {
        var i = { left: 'width', top: 'height', right: 'width', bottom: 'height' }
        Object.keys(i).forEach(function (n) {
          var r = n == o ? 'left' : 'top'
          ;[o, s].includes(n) && void 0 !== t.style[n] && !B(t.originStyle[r])
            ? (t.style[r] = e[i[n]] - t.offsetSize[i[n]] - W(t.style[n], e[i[n]]))
            : (t.style[n] = W(t.style[n], e[i[n]]))
        })
      }),
      (e.getAttributes = function (t) {
        var e = t.attributes,
          i = void 0 === e ? {} : e,
          n = t.uid,
          r = t.url,
          o = t.src,
          s = t.replace,
          a = t.text
        return n && (i.uid = n), (r || o) && (i.src = i.src || r || o), s && (i.replace = s), a && (i.text = a), i
      }),
      (e.getOffsetSize = function (t, e, i) {
        void 0 === i && (i = a[3])
        var n = e || {},
          r = n.margin,
          o = (r = void 0 === r ? {} : r).marginLeft,
          s = void 0 === o ? 0 : o,
          h = r.marginTop,
          c = void 0 === h ? 0 : h,
          f = r.marginRight,
          l = void 0 === f ? 0 : f,
          d = r.marginBottom,
          u = void 0 === d ? 0 : d,
          p = n.padding,
          g = (p = void 0 === p ? {} : p).paddingLeft,
          v = void 0 === g ? 0 : g,
          y = p.paddingTop,
          x = void 0 === y ? 0 : y,
          b = p.paddingRight,
          w = void 0 === b ? 0 : b,
          m = p.paddingBottom,
          S = void 0 === m ? 0 : m,
          z = n.border,
          I = (z = void 0 === z ? {} : z).borderWidth,
          M = void 0 === I ? 0 : I,
          k = n.borderTop,
          B = (k = void 0 === k ? {} : k).borderTopWidth,
          W = void 0 === B ? M : B,
          P = n.borderBottom,
          O = (P = void 0 === P ? {} : P).borderBottomWidth,
          T = void 0 === O ? M : O,
          L = n.borderRight,
          R = (L = void 0 === L ? {} : L).borderRightWidth,
          F = void 0 === R ? M : R,
          A = n.borderLeft,
          j = (A = void 0 === A ? {} : A).borderLeftWidth,
          E = void 0 === j ? M : j,
          C = s < 0 && l < 0 ? Math.abs(s + l) : 0,
          H = c < 0 && u < 0 ? Math.abs(c + u) : 0,
          D = s >= 0 && l < 0,
          $ = c >= 0 && u < 0
        return (
          i == a[0] &&
            ((this[i].left = t.left + s + v + E + (D ? 2 * -l : 0)),
            (this[i].top = t.top + c + x + W + ($ ? 2 * -u : 0)),
            (this[i].width = t.width + (this[i].widthAdd ? 0 : C)),
            (this[i].height = t.height + (this[i].heightAdd ? 0 : H)),
            (this[i].widthAdd = C),
            (this[i].heightAdd = H)),
          i == a[1] &&
            ((this[i].left = t.left + s + E + (D < 0 ? -l : 0)),
            (this[i].top = t.top + c + W + ($ ? -u : 0)),
            (this[i].width = t.width + v + w),
            (this[i].height = t.height + x + S)),
          i == a[2] &&
            ((this[i].left = t.left + s + E / 2 + (D < 0 ? -l : 0)),
            (this[i].top = t.top + c + W / 2 + ($ ? -u : 0)),
            (this[i].width = t.width + v + w + E / 2 + F / 2),
            (this[i].height = t.height + x + S + T / 2 + W / 2)),
          i == a[3] &&
            ((this[i].left = t.left + (D < 0 ? -l : 0)),
            (this[i].top = t.top + ($ ? -u : 0)),
            (this[i].width = t.width + v + w + E + F + s + l),
            (this[i].height = t.height + x + S + T + W + u + c)),
          this[i]
        )
      }),
      (e.layoutBoxUpdate = function (t, e, i, n) {
        var r = this
        if ((void 0 === i && (i = -1), 'border-box' == e.boxSizing)) {
          var o = e || {},
            s = o.border,
            h = (s = void 0 === s ? {} : s).borderWidth,
            c = void 0 === h ? 0 : h,
            f = o.borderTop,
            l = (f = void 0 === f ? {} : f).borderTopWidth,
            d = void 0 === l ? c : l,
            u = o.borderBottom,
            p = (u = void 0 === u ? {} : u).borderBottomWidth,
            g = void 0 === p ? c : p,
            v = o.borderRight,
            y = (v = void 0 === v ? {} : v).borderRightWidth,
            x = void 0 === y ? c : y,
            b = o.borderLeft,
            w = (b = void 0 === b ? {} : b).borderLeftWidth,
            m = void 0 === w ? c : w,
            S = o.padding,
            z = (S = void 0 === S ? {} : S).paddingTop,
            I = void 0 === z ? 0 : z,
            M = S.paddingRight,
            k = void 0 === M ? 0 : M,
            B = S.paddingBottom,
            W = void 0 === B ? 0 : B,
            P = S.paddingLeft,
            O = void 0 === P ? 0 : P
          i || (t.width -= O + k + x + m), 1 !== i || n || (t.height -= I + W + d + g)
        }
        this.layoutBox &&
          (a.forEach(function (i) {
            return (r.layoutBox[i] = r.getOffsetSize(t, e, i))
          }),
          (this.layoutBox = Object.assign({}, this.layoutBox, this.layoutBox.borderSize)))
      }),
      (e.getBoxPosition = 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 = A({}, this.contentSize, { left: r, top: s }),
          h = this.contentSize.top - this.offsetSize.top,
          c = this.contentSize.left - this.offsetSize.left
        if (this.root.fixedLine && !this.root.isDone) {
          this.root.isDone = !0
          for (var f, l = C(this.root.fixedLine.elements); !(f = l()).done; ) {
            var d = f.value
            d.setPosition(d, this.root.offsetSize), d.getBoxPosition()
          }
        }
        if (e)
          for (var u, p = C(e.elements); !(u = p()).done; ) {
            var g = u.value,
              v = A({}, this.borderSize, { left: r, top: s })
            g.setPosition(g, v)
            var y = this.borderSize.top - this.offsetSize.top,
              x = this.borderSize.left - this.offsetSize.left
            ;(g.style.left += r + x), (g.style.top += s + y), g.getBoxPosition()
          }
        if (i)
          for (var b, w = C(i); !(b = w()).done; ) {
            b.value.layout(a.top + h, a.left + c)
          }
        return this.layoutBoxUpdate(a, 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 == at
      }),
      (e.isFlex = function (t) {
        return void 0 === t && (t = this), t && t.style.display == ct
      }),
      (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 !== ct) || void 0)
        )
      }),
      (e.isInline = function (t) {
        return void 0 === t && (t = this), t && t.style.display == ht
      }),
      (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 || 0.7 * e + 1 }
      }),
      (e.getParentSize = function (t, e) {
        if ((void 0 === t && (t = this), void 0 === e && (e = !1), t && t.parent)) {
          if (t.parent.contentSize.width) return t.parent.contentSize
          if (e) return this.getParentSize(t.parent, e)
        }
        return null
      }),
      (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,
          c = void 0 === h ? 0 : h,
          f = i.top,
          l = void 0 === f ? 0 : f,
          d = i.bottom,
          u = i.right,
          p = i.width,
          g = void 0 === p ? 0 : p,
          v = i.minWidth,
          y = i.maxWidth,
          x = i.minHeight,
          b = i.maxHeight,
          w = i.height,
          m = void 0 === w ? 0 : w,
          S = i.fontSize,
          z = i.fontWeight,
          I = i.fontFamily,
          M = i.fontStyle,
          k = i.position
        i.textIndent
        var B = i.lineClamp,
          P = i.lineHeight,
          O = i.padding,
          T = void 0 === O ? {} : O,
          L = i.margin,
          R = void 0 === L ? {} : L,
          F = i.border,
          A = (F = void 0 === F ? {} : F).borderWidth,
          j = void 0 === A ? 0 : A,
          E = i.borderRight,
          C = (E = void 0 === E ? {} : E).borderRightWidth,
          H = void 0 === C ? j : C,
          Y = i.borderLeft,
          U = (Y = void 0 === Y ? {} : Y).borderLeftWidth,
          N = void 0 === U ? j : U,
          X = o.contentSize && o.contentSize.width,
          _ = o.contentSize && o.contentSize.height
        if (
          ($(g) && X && (g = W(g, X)),
          $(g) && !X && (g = null),
          $(m) && _ && (m = W(m, _)),
          $(m) && !_ && (m = null),
          $(v) && X && (v = W(v, X)),
          $(y) && X && (y = W(y, X)),
          $(x) && _ && (x = W(x, _)),
          $(b) && _ && (b = W(b, _)),
          i.padding && X)
        )
          for (var q in i.padding) Object.hasOwnProperty.call(T, q) && (T[q] = W(T[q], X))
        var G = T.paddingRight,
          V = void 0 === G ? 0 : G,
          J = T.paddingLeft,
          Q = void 0 === J ? 0 : J
        if (i.margin && [R.marginLeft, R.marginRight].includes('auto'))
          if (g) {
            var Z = (X && X - g - V - Q - N - H) || 0
            R.marginLeft == R.marginRight
              ? (R.marginLeft = R.marginRight = Z / 2)
              : D(R.marginLeft)
              ? (R.marginLeft = Z)
              : (R.marginRight = Z)
          } else R.marginLeft = R.marginRight = 0
        var K = R.marginRight,
          tt = void 0 === K ? 0 : K,
          it = R.marginLeft,
          at = { width: g, height: m, left: 0, top: 0 },
          ht = Q + V + N + H + (void 0 === it ? 0 : it) + tt
        if (((this.offsetWidth = ht), e == ot && !this.attributes.widths)) {
          var ct = n.text || ''
          s.save(),
            s.setFonts({ fontFamily: I, fontSize: S, fontWeight: z, fontStyle: M }),
            ct.length,
            '\n' == ct && ((ct = ''), (this.isBr = !0)),
            ('' + ct).split('\n').map(function (e) {
              var i = Array.from(e).map(function (e) {
                  var i = '' + (/^[\u4e00-\u9fa5]+$/.test(e) ? 'cn' : e) + I + S + z + M,
                    n = pt.get(i)
                  if (n) return { width: n, text: e }
                  var r = t.measureText(e, S).width
                  return pt.set(i, r), { width: r, text: e }
                }),
                n = t.measureText(e, S),
                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.width
                  }, 0)
                })
            }),
            s.restore()
        }
        if (e == rt && null == g) {
          var lt = n.width,
            dt = n.height
          ;(at.width = this.contrastSize(Math.round((lt * m) / dt) || 0, v, y)), this.layoutBoxUpdate(at, i, 0)
        }
        if (e == ot && null == g) {
          var ut = this.attributes.widths,
            gt = Math.max.apply(
              Math,
              ut.map(function (t) {
                return t.total
              })
            )
          if (o && X > 0 && (gt > X || this.isBlock(this)) && !this.isAbsolute && !this.isFixed) gt = X
          ;(at.width = this.contrastSize(gt, v, y)), this.layoutBoxUpdate(at, i, 0)
        }
        if (e == ot && (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.width > at.width ? (vt++, e.width) : t + e.width
            }, 0)
          }),
            (vt = B && vt > B ? B : vt),
            (this.attributes.lines = vt)
        }
        if (e == rt && null == m) {
          var yt = n.width,
            xt = n.height
          n.text, (at.height = this.contrastSize(W((at.width * xt) / yt) || 0, x, b)), this.layoutBoxUpdate(at, i, 1)
        }
        e == ot &&
          null == m &&
          ((P = W(P, S)),
          (at.height = this.contrastSize(W(this.attributes.lines * P), x, b)),
          this.layoutBoxUpdate(at, i, 1, !0)),
          !g &&
            o &&
            o.children &&
            X &&
            (!this.isFlex(o) || o.isFlexCalc) &&
            (([st, ot].includes(e) && this.isFlex()) || (e == st && this.isBlock(this) && this.isInFlow())) &&
            ((at.width = this.contrastSize(X - (o.isFlexCalc ? 0 : ht), v, y)), this.layoutBoxUpdate(at, i)),
          g && !$(g) && ((at.width = this.contrastSize(g, v, y)), this.layoutBoxUpdate(at, i, 0)),
          m && !$(m) && ((at.height = this.contrastSize(at.height, x, b)), this.layoutBoxUpdate(at, i, 1))
        var bt = 0
        if (a.length) {
          var wt = null,
            mt = !1
          a.forEach(function (e, n) {
            e.getBoxWidthHeight()
            var r = a[n + 1]
            if ((r && r.isInFlow() && (e.next = r), !t.line || !t.line.ids.includes(e.id)))
              if (e.isInFlow() && !e.inFlexBox()) {
                var o = t.getBoxState(wt, e)
                if (e.isBr) return (mt = !0)
                t.line && t.line.canIEnter(e) && !o && !mt ? t.line.add(e) : ((mt = !1), new et().bind(e)), (wt = e)
              } else
                e.inFlexBox()
                  ? t.line && (t.line.canIEnter(e) || 'nowrap' == i.flexWrap)
                    ? t.line.add(e)
                    : new nt().bind(e)
                  : e.isFixed
                  ? t.root.fixedLine
                    ? t.root.fixedLine.fixedAdd(e)
                    : new et().fixedBind(e)
                  : t.fixedLine
                  ? t.fixedLine.fixedAdd(e)
                  : new et().fixedBind(e, 1)
          }),
            this.lines &&
              (bt = this.lines.reduce(function (t, e) {
                return t + e.height
              }, 0))
        }
        var St = 0,
          zt = 0
        if (!g && (this.isAbsolute || this.isFixed) && X) {
          var It = k == ft ? X : this.root.width,
            Mt = It - ($(c) ? W(c, It) : c) - ($(u) ? W(u, It) : u)
          St = i.left ? Mt : this.lineMaxWidth
        }
        if (!m && (null != l ? l : this.isAbsolute || (this.isFixed && _))) {
          var kt = k == ft ? _ : this.root.height,
            Bt = kt - ($(l) ? W(l, kt) : l) - ($(d) ? W(d, kt) : d)
          zt = i.top ? Bt : 0
        }
        if (
          ((g && !$(g)) ||
            at.width ||
            ((at.width =
              St ||
              this.contrastSize(
                (this.isBlock(this) && !this.isInFlow() ? X || o.lineMaxWidth : this.lineMaxWidth) || this.lineMaxWidth,
                v,
                y
              )),
            this.layoutBoxUpdate(at, i, 0)),
          m || (!bt && !zt) || ((at.height = zt || this.contrastSize(bt, x, b)), this.layoutBoxUpdate(at, i)),
          i.borderRadius && this.borderSize && this.borderSize.width)
        )
          for (var q in i.borderRadius)
            Object.hasOwnProperty.call(i.borderRadius, q) &&
              (i.borderRadius[q] = W(i.borderRadius[q], this.borderSize.width))
        return this.layoutBox
      }),
      (e.layout = function () {
        return (
          this.getBoxWidthHeight(),
          (this.root.offsetSize = this.offsetSize),
          (this.root.contentSize = this.contentSize),
          this.getBoxPosition(),
          this.offsetSize
        )
      }),
      t
    )
  })(),
  vt = (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
      ],
      c = [
        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
      ],
      f = [
        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
      ],
      d = [],
      u = [],
      p = [],
      g = [],
      v = [],
      y = 2
    function x(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 b(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++) x(t - 1, i + n), x(t + 1, i - n), x(t - n, i - 1), x(t + n, i + 1)
    }
    function w(t) {
      for (; t >= 255; ) t = ((t -= 255) >> 8) + (255 & t)
      return t
    }
    var m = []
    function S(t, e, i, n) {
      var r, o, s
      for (r = 0; r < n; r++) d[i + r] = 0
      for (r = 0; r < e; r++) {
        if (255 != (s = f[d[t + r] ^ d[i]])) for (o = 1; o < n; o++) d[i + o - 1] = d[i + o] ^ l[w(s + m[n - o])]
        else for (o = i; o < i + n; o++) d[o] = d[o + 1]
        d[i + n - 1] = 255 == s ? 0 : l[w(s + m[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 I(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 M(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 += M(n)
      }
      a < 0 && (a = -a)
      var h = a,
        c = 0
      for (h += h << 2, h <<= 1; h > e * e; ) (h -= e * e), c++
      for (s += 10 * c, 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 += M(n)
      }
      return s
    }
    var B = null
    return {
      api: {
        get ecclevel() {
          return y
        },
        set ecclevel(t) {
          y = t
        },
        get size() {
          return _size
        },
        set size(t) {
          _size = t
        },
        get canvas() {
          return B
        },
        set canvas(t) {
          B = t
        },
        getFrame: function (v) {
          return (function (v) {
            var M, B, W, P, O, T, L, R
            ;(P = v.length), (t = 0)
            do {
              if (
                (t++,
                (W = 4 * (y - 1) + 16 * (t - 1)),
                (i = c[W++]),
                (n = c[W++]),
                (r = c[W++]),
                (o = c[W]),
                P <= (W = r * (i + n) + n - 3 + (t <= 9)))
              )
                break
            } while (t < 40)
            for (e = 17 + 4 * t, O = r + (r + o) * (i + n) + n, P = 0; P < O; P++) u[P] = 0
            for (d = v.slice(0), P = 0; P < e * e; P++) p[P] = 0
            for (P = 0; P < (e * (e + 1) + 1) / 2; P++) g[P] = 0
            for (P = 0; P < 3; P++) {
              for (
                W = 0, B = 0, 1 == P && (W = e - 7), 2 == P && (B = e - 7), p[B + 3 + e * (W + 3)] = 1, M = 0;
                M < 6;
                M++
              )
                (p[B + M + e * W] = 1),
                  (p[B + e * (W + M + 1)] = 1),
                  (p[B + 6 + e * (W + M)] = 1),
                  (p[B + M + 1 + e * (W + 6)] = 1)
              for (M = 1; M < 5; M++) x(B + M, W + 1), x(B + 1, W + M + 1), x(B + 5, W + M), x(B + M + 1, W + 5)
              for (M = 2; M < 4; M++)
                (p[B + M + e * (W + 2)] = 1),
                  (p[B + 2 + e * (W + M + 1)] = 1),
                  (p[B + 4 + e * (W + M)] = 1),
                  (p[B + M + 1 + e * (W + 4)] = 1)
            }
            if (t > 1)
              for (P = s[t], B = e - 7; ; ) {
                for (M = e - 7; M > P - 3 && (b(M, B), !(M < P)); ) M -= P
                if (B <= P + 9) break
                b(6, (B -= P)), b(B, 6)
              }
            for (p[8 + e * (e - 8)] = 1, B = 0; B < 7; B++) x(7, B), x(e - 8, B), x(7, B + e - 7)
            for (M = 0; M < 8; M++) x(M, 7), x(M + e - 8, 7), x(M, e - 8)
            for (M = 0; M < 9; M++) x(M, 8)
            for (M = 0; M < 8; M++) x(M + e - 8, 8), x(8, M)
            for (B = 0; B < 7; B++) x(8, B + e - 7)
            for (M = 0; M < e - 14; M++)
              1 & M ? (x(8 + M, 6), x(6, 8 + M)) : ((p[8 + M + 6 * e] = 1), (p[6 + e * (8 + M)] = 1))
            if (t > 6)
              for (P = a[t - 7], W = 17, M = 0; M < 6; M++)
                for (B = 0; B < 3; B++, W--)
                  1 & (W > 11 ? t >> (W - 12) : P >> W)
                    ? ((p[5 - M + e * (2 - B + e - 11)] = 1), (p[2 - B + e - 11 + e * (5 - M)] = 1))
                    : (x(5 - M, 2 - B + e - 11), x(2 - B + e - 11, 5 - M))
            for (B = 0; B < e; B++) for (M = 0; M <= B; M++) p[M + e * B] && x(M, B)
            for (O = d.length, T = 0; T < O; T++) u[T] = d.charCodeAt(T)
            if (((d = u.slice(0)), O >= (M = r * (i + n) + n) - 2 && ((O = M - 2), t > 9 && O--), (T = O), t > 9)) {
              for (d[T + 2] = 0, d[T + 3] = 0; T--; ) (P = d[T]), (d[T + 3] |= 255 & (P << 4)), (d[T + 2] = P >> 4)
              ;(d[2] |= 255 & (O << 4)), (d[1] = O >> 4), (d[0] = 64 | (O >> 12))
            } else {
              for (d[T + 1] = 0, d[T + 2] = 0; T--; ) (P = d[T]), (d[T + 2] |= 255 & (P << 4)), (d[T + 1] = P >> 4)
              ;(d[1] |= 255 & (O << 4)), (d[0] = 64 | (O >> 4))
            }
            for (T = O + 3 - (t < 10); T < M; ) (d[T++] = 236), (d[T++] = 17)
            for (m[0] = 1, T = 0; T < o; T++) {
              for (m[T + 1] = 1, L = T; L > 0; L--) m[L] = m[L] ? m[L - 1] ^ l[w(f[m[L]] + T)] : m[L - 1]
              m[0] = l[w(f[m[0]] + T)]
            }
            for (T = 0; T <= o; T++) m[T] = f[m[T]]
            for (W = M, B = 0, T = 0; T < i; T++) S(B, r, W, o), (B += r), (W += o)
            for (T = 0; T < n; T++) S(B, r + 1, W, o), (B += r + 1), (W += o)
            for (B = 0, T = 0; T < r; T++) {
              for (L = 0; L < i; L++) u[B++] = d[T + L * r]
              for (L = 0; L < n; L++) u[B++] = d[i * r + T + L * (r + 1)]
            }
            for (L = 0; L < n; L++) u[B++] = d[i * r + T + L * (r + 1)]
            for (T = 0; T < o; T++) for (L = 0; L < i + n; L++) u[B++] = d[M + T + L * o]
            for (d = u, M = B = e - 1, W = O = 1, R = (r + o) * (i + n) + n, T = 0; T < R; T++)
              for (P = d[T], L = 0; L < 8; L++, P <<= 1) {
                128 & P && (p[M + e * B] = 1)
                do {
                  O
                    ? M--
                    : (M++,
                      W
                        ? 0 != B
                          ? B--
                          : ((W = !W), 6 == (M -= 2) && (M--, (B = 9)))
                        : B != e - 1
                        ? B++
                        : ((W = !W), 6 == (M -= 2) && (M--, (B -= 8)))),
                    (O = !O)
                } while (z(M, B))
              }
            for (
              d = p.slice(0), P = 0, B = 3e4, W = 0;
              W < 8 && (I(W), (M = k()) < B && ((B = M), (P = W)), 7 != P);
              W++
            )
              p = d.slice(0)
            for (P != W && I(P), B = h[P + ((y - 1) << 3)], W = 0; W < 8; W++, B >>= 1)
              1 & B && ((p[e - 1 - W + 8 * e] = 1), W < 6 ? (p[8 + e * W] = 1) : (p[8 + e * (W + 1)] = 1))
            for (W = 0; W < 7; W++, B >>= 1)
              1 & B && ((p[8 + e * (e - 7 + W)] = 1), W ? (p[6 - W + 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,
            c = a.height,
            f = a.left,
            l = a.top
          r.borderRadius, r.backgroundColor
          var d = r.color,
            u = void 0 === d ? '#000000' : d
          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, c)
            t = this.utf16to8(t)
            var g = this.getFrame(t),
              v = p / e
            s.setFillStyle(u)
            for (var x = 0; x < e; x++)
              for (var b = 0; b < e; b++) g[b * e + x] && s.fillRect(f + v * x, l + v * b, v, v)
            s.restore(), i.setBorder(n, r)
          } else console.warn('No canvas provided to draw QR code in!')
        }
      }
    }
  })(),
  yt = p,
  xt = u,
  bt = g,
  wt = d,
  mt = f.TOP,
  St = f.MIDDLE,
  zt = f.BOTTOM,
  It = l.LEFT,
  Mt = l.CENTER,
  kt = l.RIGHT,
  Bt = (function () {
    function r(t) {
      var e,
        i,
        r = this
      ;(this.v = '1.9.5.1'),
        (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.performance = !1),
        (this.imageBus = []),
        (this.createImage = function (t, e) {
          return new Promise(function (i, n) {
            var o = null
            window || r.canvas.createImage
              ? ((o = r.canvas && r.canvas.createImage ? r.canvas.createImage() : new Image()),
                e && o.setAttribute('crossOrigin', 'Anonymous'),
                (o.src = t),
                (o.onload = function () {
                  i({ width: o.naturalWidth || o.width, height: o.naturalHeight || o.height, path: o, src: this.src })
                }),
                (o.onerror = function (t) {
                  n(t)
                }))
              : n({ fail: 'getImageInfo fail', src: t })
          })
        }),
        (this.options = t),
        Object.assign(this, t),
        (this.ctx =
          ((e = t.context),
          (i = {
            get: function (t, i) {
              if ('setFonts' === i)
                return function (t) {
                  var i = t.fontFamily,
                    r = void 0 === i ? 'sans-serif' : i,
                    o = t.fontSize,
                    s = void 0 === o ? 14 : o,
                    a = t.fontWeight,
                    h = void 0 === a ? 'normal' : a,
                    c = t.fontStyle,
                    f = void 0 === c ? 'normal' : c
                  I == n.MP_TOUTIAO && ((h = 'bold' == h ? 'bold' : ''), (f = 'italic' == f ? 'italic' : '')),
                    (e.font = ''.concat(f, ' ').concat(h, ' ').concat(Math.round(s), 'px ').concat(r))
                }
              if (!e.draw || !e.setFillStyle) {
                if ('setFillStyle' === i)
                  return function (t) {
                    e.fillStyle = t
                  }
                if ('setStrokeStyle' === i)
                  return function (t) {
                    e.strokeStyle = t
                  }
                if ('setLineWidth' === i)
                  return function (t) {
                    e.lineWidth = t
                  }
                if ('setLineCap' === i)
                  return function (t) {
                    e.lineCap = t
                  }
                if ('setFontSize' === i)
                  return function (t) {
                    e.font = ''.concat(String(t), 'px sans-serif')
                  }
                if ('setGlobalAlpha' === i)
                  return function (t) {
                    e.globalAlpha = t
                  }
                if ('setLineJoin' === i)
                  return function (t) {
                    e.lineJoin = t
                  }
                if ('setTextAlign' === i)
                  return function (t) {
                    e.textAlign = t
                  }
                if ('setMiterLimit' === i)
                  return function (t) {
                    e.miterLimit = t
                  }
                if ('setShadow' === i)
                  return function (t, i, n, r) {
                    ;(e.shadowOffsetX = t), (e.shadowOffsetY = i), (e.shadowBlur = n), (e.shadowColor = r)
                  }
                if ('setTextBaseline' === i)
                  return function (t) {
                    e.textBaseline = t
                  }
                if ('createCircularGradient' === i) return function () {}
                if ('draw' === i) return function () {}
                if ('function' == typeof e[i])
                  return function () {
                    for (var t = [], n = 0; n < arguments.length; n++) t[n] = arguments[n]
                    return e[i].apply(e, t)
                  }
              }
              return t[i]
            },
            set: function (t, i, n) {
              return (e[i] = n), !0
            }
          }),
          new Proxy(e, i))),
        (this.progress = 0),
        (this.root = { width: t.width, height: t.height, fontSizeRate: 1, fixedLine: null }),
        (this.size = this.root)
      var o = 0
      Object.defineProperty(this, 'progress', {
        configurable: !0,
        set: function (t) {
          ;(o = t), r.lifecycle('onProgress', t / r.count)
        },
        get: function () {
          return o || 0
        }
      })
    }
    return (
      (r.prototype.lifecycle = function (t, e) {
        this.options.listen && this.options.listen[t] && this.options.listen[t](e)
      }),
      (r.prototype.setContext = function (t) {
        t && (this.ctx = t)
      }),
      (r.prototype.init = function () {
        if (this.canvas.height || n.WEB == I) {
          this.ctx.setTransform(1, 0, 0, 1, 0, 0)
          var t = this.size.height * this.pixelRatio,
            e = this.size.width * this.pixelRatio
          ;(this.canvas.height = t), (this.canvas.width = e), this.ctx.scale(this.pixelRatio, this.pixelRatio)
        }
      }),
      (r.prototype.clear = function () {
        this.ctx.clearRect(0, 0, this.size.width, this.size.height)
      }),
      (r.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 [W(s, i) + t, W(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()
        }
      }),
      (r.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 || {},
              c = h.borderTopLeftRadius,
              f = void 0 === c ? r || 0 : c,
              l = h.borderTopRightRadius,
              d = 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, 0.5 * Math.PI),
              a.lineTo(t + v, e + n),
              a.arc(t + v, e + n - v, v, 0.5 * Math.PI, Math.PI),
              a.lineTo(t, e + f),
              a.arc(t + f, e + f, f, Math.PI, 1.5 * Math.PI),
              a.lineTo(t + i - d, e),
              a.arc(t + i - d, e + d, d, 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()
        }
      }),
      (r.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,
          c = void 0 === h ? 1 : h,
          f = o.translateX,
          l = void 0 === f ? 0 : f,
          d = o.translateY,
          u = void 0 === d ? 0 : d,
          p = o.rotate,
          g = void 0 === p ? 0 : p,
          v = o.skewX,
          y = void 0 === v ? 0 : v,
          x = o.skewY,
          b = void 0 === x ? 0 : x,
          w = t.left,
          m = t.top,
          S = t.width,
          z = t.height
        ;(l = W(l, S) || 0), (u = W(u, z) || 0)
        var I = W('0%', 1),
          M = W('50%', 1),
          k = W('100%', 1),
          P = { top: I, center: M, bottom: k },
          O = { left: I, center: M, right: k }
        if (
          ((n = n
            .split(' ')
            .filter(function (t, e) {
              return e < 2
            })
            .reduce(function (t, e) {
              if (/\d+/.test(e)) {
                var i = W(e, 1) / (/px|rpx$/.test(e) ? (B(t.x) ? z : S) : 1)
                return B(t.x) ? Object.assign(t, { y: i }) : Object.assign(t, { x: i })
              }
              return B(O[e]) && !B(t.x) ? Object.assign(t, { x: O[e] }) : Object.assign(t, { y: P[e] || 0.5 })
            }, {})),
          (l || u) && r.translate(l, u),
          (a || c) && r.scale(a, c),
          g)
        ) {
          var T = w + S * n.x,
            L = m + z * n.y
          r.translate(T, L), r.rotate((g * Math.PI) / 180), r.translate(-T, -L)
        }
        ;(y || b) && r.transform(1, Math.tan((b * Math.PI) / 180), Math.tan((y * Math.PI) / 180), 1, 0, 0)
      }),
      (r.prototype.setBackground = function (t, e, i, r, o) {
        var s = this.ctx
        t && 'transparent' != t
          ? T(t)
            ? L(t, e, i, r, o, s)
            : s.setFillStyle(t)
          : [n.MP_TOUTIAO, n.MP_BAIDU].includes(I)
          ? s.setFillStyle('rgba(0,0,0,0)')
          : s.setFillStyle('transparent')
      }),
      (r.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)
        }
      }),
      (r.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,
          c = e.borderTop,
          f = e.borderRight,
          l = e.borderLeft,
          d = e.borderRadius,
          u = e.lineCap,
          p = a || {},
          g = p.borderWidth,
          v = void 0 === g ? 0 : g,
          y = p.borderStyle,
          x = p.borderColor,
          b = h || {},
          w = b.borderBottomWidth,
          m = void 0 === w ? v : w,
          S = b.borderBottomStyle,
          z = void 0 === S ? y : S,
          M = b.borderBottomColor,
          k = void 0 === M ? x : M,
          B = c || {},
          W = B.borderTopWidth,
          P = void 0 === W ? v : W,
          O = B.borderTopStyle,
          T = void 0 === O ? y : O,
          L = B.borderTopColor,
          R = void 0 === L ? x : L,
          F = f || {},
          A = F.borderRightWidth,
          j = void 0 === A ? v : A,
          E = F.borderRightStyle,
          C = void 0 === E ? y : E,
          H = F.borderRightColor,
          D = void 0 === H ? x : H,
          $ = l || {},
          Y = $.borderLeftWidth,
          U = void 0 === Y ? v : Y,
          N = $.borderLeftStyle,
          X = void 0 === N ? y : N,
          _ = $.borderLeftColor,
          q = void 0 === _ ? x : _,
          G = d || {},
          V = G.borderTopLeftRadius,
          J = void 0 === V ? d || 0 : V,
          Q = G.borderTopRightRadius,
          Z = void 0 === Q ? d || 0 : Q,
          K = G.borderBottomRightRadius,
          tt = void 0 === K ? d || 0 : K,
          et = G.borderBottomLeftRadius,
          it = void 0 === et ? d || 0 : et
        if (h || l || c || f || a) {
          var nt = function (t, e, n) {
              'dashed' == e
                ? /mp/.test(I)
                  ? 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, c, f, l, d, p, g, v) {
              i.save(),
                i.setLineCap(v ? 'square' : u),
                i.setLineWidth(d),
                nt(d, p, g),
                i.beginPath(),
                i.arc(t, e, a, Math.PI * c, Math.PI * f),
                i.lineTo(n, r),
                i.arc(o, s, h, Math.PI * f, Math.PI * l),
                i.stroke(),
                i.restore()
            }
          if ((i.save(), a && !h && !l && !c && !f))
            return i.setLineWidth(v), nt(v, y, x), this.roundRect(o, s, n, r, d, !1, !!x), void i.restore()
          m && rt(o + n - tt, s + r - tt, o + it, s + r, o + it, s + r - it, tt, it, 0.25, 0.5, 0.75, m, z, k, U && j),
            U && rt(o + it, s + r - it, o, s + J, o + J, s + J, it, J, 0.75, 1, 1.25, U, X, q, P && m),
            P && rt(o + J, s + J, o + n - Z, s, o + n - Z, s + Z, J, Z, 1.25, 1.5, 1.75, P, T, R, U && j),
            j && rt(o + n - Z, s + Z, o + n, s + r - tt, o + n - tt, s + r - tt, Z, tt, 1.75, 2, 0.25, j, C, D, P && m)
        }
      }),
      (r.prototype.setOpacity = function (t) {
        var e = t.opacity,
          i = void 0 === e ? 1 : e
        this.ctx.setGlobalAlpha(i)
      }),
      (r.prototype.drawPattern = function (t, n, r) {
        return e(this, void 0, void 0, function () {
          var e = this
          return i(this, function (i) {
            return [
              2,
              new Promise(function (i, o) {
                e.drawView(n, r, !0, !1, !0)
                var s = e,
                  a = s.ctx
                s.canvas
                var h = n.width,
                  c = n.height,
                  f = n.left,
                  l = n.top,
                  d = r || {},
                  u = d.borderRadius,
                  p = void 0 === u ? 0 : u,
                  g = d.backgroundImage,
                  v = d.backgroundRepeat,
                  y = void 0 === v ? 'repeat' : v
                g &&
                  (function (t) {
                    var o = a.createPattern(t.src, y)
                    a.setFillStyle(o), e.roundRect(f, l, h, c, p, !0, !1), e.setBorder(n, r), i()
                  })(t)
              })
            ]
          })
        })
      }),
      (r.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,
          c = t.top,
          f = e || {},
          l = f.borderRadius,
          d = void 0 === l ? 0 : l,
          u = f.backgroundColor,
          p = void 0 === u ? 'transparent' : u,
          g = f.overflow
        e.opacity && this.setOpacity(e),
          this.setTransform(t, e),
          r && (o.save(), this.setShadow(e)),
          i && this.setBackground(p, s, a, h, c),
          e.clipPath ? this.clipPath(h, c, s, a, e.clipPath, i, !1) : this.roundRect(h, c, s, a, d, i, !1),
          r && o.restore(),
          n && this.setBorder(t, e),
          'hidden' == g && o.clip()
      }),
      (r.prototype.drawImage = function (t, r, o, s) {
        return (
          void 0 === r && (r = {}),
          void 0 === o && (o = {}),
          void 0 === s && (s = !0),
          e(this, void 0, void 0, function () {
            var a = this
            return i(this, function (h) {
              switch (h.label) {
                case 0:
                  return [
                    4,
                    new Promise(function (h, c) {
                      return e(a, void 0, void 0, function () {
                        var e,
                          a,
                          c,
                          f,
                          l,
                          d,
                          u,
                          p,
                          g,
                          v,
                          y,
                          x,
                          b,
                          w,
                          m,
                          S,
                          z,
                          M,
                          k,
                          B,
                          T,
                          L = this
                        return i(this, function (i) {
                          return (
                            (e = this.ctx),
                            (a = o.borderRadius),
                            (c = void 0 === a ? 0 : a),
                            (f = o.backgroundColor),
                            (l = void 0 === f ? 'transparent' : f),
                            (d = o.objectFit),
                            (u = void 0 === d ? 'fill' : d),
                            (p = o.backgroundSize),
                            (g = void 0 === p ? 'fill' : p),
                            (v = o.objectPosition),
                            (y = o.backgroundPosition),
                            (x = o.boxShadow),
                            o.backgroundImage && ((u = g), (v = y)),
                            x &&
                              this.drawView(
                                r,
                                Object.assign(o, { backgroundColor: l || (x && (l || '#ffffff')) }),
                                !0,
                                !1,
                                !0
                              ),
                            (b = r.width),
                            (w = r.height),
                            (m = r.left),
                            (S = r.top),
                            e.save(),
                            (z = r.contentSize.left - r.borderSize.left),
                            (M = r.contentSize.top - r.borderSize.top),
                            s ||
                              (this.setOpacity(o),
                              this.setTransform(r, o),
                              this.setBackground(l, b, w, m, S),
                              this.roundRect(m, S, b, w, c, !!(c || (!x && l)), !1)),
                            (m += z),
                            (S += M),
                            e.clip(),
                            (k = function (t) {
                              if ('fill' !== u) {
                                var i = (function (t, e, i) {
                                    var n = t.objectFit,
                                      r = t.objectPosition,
                                      o = e.width / e.height,
                                      s = i.width / i.height,
                                      a = 1,
                                      h = 'contain',
                                      c = 'cover'
                                    ;(n == h && o >= s) || (n == c && o < s)
                                      ? (a = e.height / i.height)
                                      : ((n == h && o < s) || (n == c && o >= s)) && (a = e.width / i.width)
                                    var f = i.width * a,
                                      l = i.height * a,
                                      d = r || [],
                                      u = d[0],
                                      p = d[1],
                                      g = O(u)
                                        ? W(u, e.width)
                                        : (e.width - f) *
                                          (P(u) ? W(u, 1) : { left: 0, center: 0.5, right: 1 }[u || 'center']),
                                      v = O(p)
                                        ? W(p, e.height)
                                        : (e.height - l) *
                                          (P(p) ? W(p, 1) : { top: 0, center: 0.5, bottom: 1 }[p || 'center']),
                                      y = function (t, e) {
                                        return [(t - g) / a, (e - v) / a]
                                      },
                                      x = y(0, 0),
                                      b = x[0],
                                      w = x[1],
                                      m = y(e.width, e.height),
                                      S = m[0],
                                      z = m[1],
                                      I = Math.max,
                                      M = Math.min
                                    return {
                                      sx: I(b, 0),
                                      sy: I(w, 0),
                                      sw: M(S - b, i.width),
                                      sh: M(z - w, i.height),
                                      dx: I(g, 0),
                                      dy: I(v, 0),
                                      dw: M(f, e.width),
                                      dh: M(l, e.height)
                                    }
                                  })({ objectFit: u, objectPosition: v }, r.contentSize, t),
                                  o = i.sx,
                                  s = i.sy,
                                  a = i.sh,
                                  h = i.sw,
                                  c = i.dx,
                                  f = i.dy,
                                  l = i.dh,
                                  d = i.dw
                                I == n.MP_BAIDU
                                  ? e.drawImage(t.src, c + m, f + S, d, l, o, s, h, a)
                                  : e.drawImage(t.src, o, s, h, a, c + m, f + S, d, l)
                              } else e.drawImage(t.src, m, S, b, w)
                            }),
                            (B = function () {
                              e.restore(), L.drawView(r, o, !1, !0, !1), h(1)
                            }),
                            (T = function (t) {
                              k(t), B()
                            }),
                            T(t),
                            [2]
                          )
                        })
                      })
                    })
                  ]
                case 1:
                  return h.sent(), [2]
              }
            })
          })
        )
      }),
      (r.prototype.drawText = function (t, e, i, n) {
        var r = this,
          o = this.ctx,
          s = e.borderSize,
          a = e.contentSize,
          h = e.left,
          c = e.top,
          f = a.width,
          l = a.height,
          d = a.left - s.left || 0,
          u = a.top - s.top || 0,
          p = i.color,
          g = i.lineHeight,
          v = i.fontSize,
          y = i.fontWeight,
          x = i.fontFamily,
          b = i.fontStyle,
          w = i.textIndent,
          m = void 0 === w ? 0 : w,
          S = i.textAlign,
          z = i.textStroke,
          I = i.verticalAlign,
          M = void 0 === I ? St : I,
          k = i.backgroundColor,
          P = i.lineClamp,
          O = i.backgroundClip,
          T = i.textShadow,
          L = i.textDecoration
        if (((m = B(m) ? m : 0), this.drawView(e, i, O != xt), (g = W(g, v)), t)) {
          o.save(), (h += d), (c += u)
          var R = n.fontHeight,
            F = n.descent,
            A = void 0 === F ? 0 : F,
            j = n.ascent,
            E = A + (void 0 === j ? 0 : j)
          switch (
            (o.setFonts({ fontFamily: x, fontSize: v, fontWeight: y, fontStyle: b }),
            o.setTextBaseline(St),
            o.setTextAlign(S),
            O ? this.setBackground(k, f, l, h, c) : o.setFillStyle(p),
            S)
          ) {
            case It:
              break
            case Mt:
              h += 0.5 * f
              break
            case kt:
              h += f
          }
          var C = n.lines * g,
            H = Math.ceil((l - C) / 2)
          switch ((H < 0 && (H = 0), M)) {
            case mt:
              break
            case St:
              c += H
              break
            case zt:
              c += 2 * H
          }
          var D = (g - R) / 2,
            $ = g / 2,
            Y = function (t) {
              var e = o.measureText(t),
                i = e.actualBoundingBoxDescent,
                n = void 0 === i ? 0 : i,
                r = e.actualBoundingBoxAscent
              return M == mt
                ? { fix: E ? (void 0 === r ? 0 : r) : $ - D / 2, lineY: E ? 0 : D - D / 2 }
                : M == St
                ? { fix: E ? $ + n / 4 : $, lineY: E ? 0 : D }
                : M == zt
                ? { fix: E ? g - n : $ + D / 2, lineY: E ? 2 * D : D + D / 2 }
                : { fix: 0, height: 0, lineY: 0 }
            },
            U = function (t, e, i) {
              var r = t
              switch (S) {
                case It:
                  r += i
                  break
                case Mt:
                  r = (t -= i / 2) + i
                  break
                case kt:
                  ;(r = t), (t -= i)
              }
              if (L) {
                o.setLineWidth(v / 13), o.beginPath()
                var s = 0.1 * n.fontHeight
                ;/\bunderline\b/.test(L) && (o.moveTo(t, e + n.fontHeight + s), o.lineTo(r, e + n.fontHeight + s)),
                  /\boverline\b/.test(L) && (o.moveTo(t, e - s), o.lineTo(r, e - s)),
                  /\bline-through\b/.test(L) &&
                    (o.moveTo(t, e + 0.5 * n.fontHeight), o.lineTo(r, e + 0.5 * n.fontHeight)),
                  o.closePath(),
                  o.setStrokeStyle(p),
                  o.stroke()
              }
            },
            N = function (t, e, i) {
              var n = function () {
                  o.setLineWidth(z.width), o.setStrokeStyle(z.color), o.strokeText(t, e, i)
                },
                s = 'outset'
              z && z.type !== s
                ? (o.save(), r.setShadow({ boxShadow: T }), o.fillText(t, e, i), o.restore(), n())
                : z && z.type == s
                ? (o.save(),
                  r.setShadow({ boxShadow: T }),
                  n(),
                  o.restore(),
                  o.save(),
                  o.fillText(t, e, i),
                  o.restore())
                : (r.setShadow({ boxShadow: T }), o.fillText(t, e, i))
            }
          if (!n.widths || (1 == n.widths.length && n.widths[0].total + m <= a.width)) {
            var X = Y(t),
              _ = X.fix,
              q = void 0 === _ ? 0 : _,
              G = X.lineY
            return (
              N(t, h + m, c + q),
              U(h + m, c + G, (n && n.widths && n.widths[0].total) || n.text),
              (c += g),
              o.restore(),
              void this.setBorder(e, i)
            )
          }
          for (
            var V = c, J = h, Q = '', Z = 0, K = o.measureText('...').width, tt = n.widths, et = 0;
            et < tt.length;
            et++
          ) {
            var it = tt[et].widths,
              nt = 0
            ;(Q = ''), (c += 1 == (Z += 1) ? 0 : g), 1 == Z && m && ((nt = m), (J = h + m))
            for (var rt = 0; rt < it.length; rt++) {
              1 !== Z && m && (J = h)
              var ot = it[rt],
                st = ot.width,
                at = ot.text,
                ht = (it[rt + 1] || {}).width
              if (((Q += at), (nt += st) + (void 0 === ht ? 0 : ht) + (0 == Z ? m : 0) + (Z == P ? K : 0) > a.width)) {
                Z >= P && (Q += '…'), Z++, (nt = 0)
                var ct = Y(Q)
                ;(q = ct.fix), (G = ct.lineY)
                N(Q, J, c + q), U(J, c + G, nt), (c += g), (Q = '')
              } else if (rt == it.length - 1) {
                et != tt.length - 1 && Z == P && K + nt < a.width && (Q += '…')
                var ft = Y(Q)
                ;(q = ft.fix), (G = ft.lineY)
                N(Q, J, c + q), U(J, c + G, nt)
              }
              if (c > V + l || Z > P) break
            }
          }
          o.restore()
        }
      }),
      (r.prototype.source = function (t) {
        return e(this, void 0, void 0, function () {
          var e,
            n,
            r,
            o,
            s = this
          return i(this, function (i) {
            switch (i.label) {
              case 0:
                if (((this.node = null), (e = +new Date()), '{}' == JSON.stringify(t))) return [2]
                if (((t.styles = t.styles || t.css || {}), !t.type))
                  for (n in ((t.type = wt), t))
                    ['views', 'children', 'type', 'css', 'styles'].includes(n) || ((t.styles[n] = t[n]), delete t[n])
                return t.styles.boxSizing || (t.styles.boxSizing = 'border-box'), [4, this.create(t)]
              case 1:
                return (r = i.sent())
                  ? ((o = r.layout() || {}),
                    (this.size = o),
                    (this.node = r),
                    this.onEffectFinished()
                      .then(function (t) {
                        return s.lifecycle('onEffectSuccess', t)
                      })
                      .catch(function (t) {
                        return s.lifecycle('onEffectFail', t)
                      }),
                    this.performance && console.log('布局用时：' + (+new Date() - e) + 'ms'),
                    [2, this.size])
                  : [2, console.warn('no node')]
            }
          })
        })
      }),
      (r.prototype.getImageInfo = function (t) {
        return this.imageBus[t] || (this.imageBus[t] = this.createImage(t, this.useCORS)), this.imageBus[t]
      }),
      (r.prototype.create = function (n, r) {
        return e(this, void 0, void 0, function () {
          function e(i, n, r) {
            void 0 === n && (n = {}), void 0 === r && (r = !0)
            var o = []
            return (
              i.forEach(function (i) {
                var s = i.styles,
                  a = void 0 === s ? {} : s,
                  h = i.css,
                  c = void 0 === h ? {} : h,
                  f = i.children,
                  l = void 0 === f ? [] : f,
                  d = i.views,
                  u = void 0 === d ? [] : d,
                  p = i.text,
                  g = void 0 === p ? '' : p,
                  v = i.type,
                  y = void 0 === v ? '' : v
                !l && u && (i.children = l = u)
                var x = {}
                x = t(t(r ? t({}, n) : {}, a), c)
                var b = {},
                  w = {},
                  m = {}
                Object.keys(x).map(function (t) {
                  if (t.includes('padding') || t.includes('margin')) {
                    var e = J(t, x[t])
                    Object.keys(e).map(function (t) {
                      t.includes('Left') ? (w[t] = e[t]) : t.includes('Right') ? (m[t] = e[t]) : (b[t] = e[t])
                    })
                  }
                })
                if ((x.textIndent && ((w.textIndent = x.textIndent), delete n.textIndent), '' !== g)) {
                  var S = Array.from(g)
                  S.forEach(function (t, e) {
                    var i = Object.assign({}, x, b)
                    0 === e ? Object.assign(i, w) : e == S.length - 1 && Object.assign(i, m),
                      delete i.padding,
                      delete i.margin,
                      o.push({ type: 'text', text: t, styles: i })
                  })
                }
                if (y == yt || y == bt) o.push(i)
                else if ('block' === a.display && l.length > 0) {
                  var z = e(l, x, !1)
                  ;(i.children = z), (i.flattened = !0), o.push(i)
                } else if (l.length > 0) {
                  z = e(l, x, r)
                  o = o.concat(z)
                }
              }),
              o
            )
          }
          var o, s, a, h, c, f, l, d, u, p, g, v, y, b, w, m, S, z, I, M, k, B, W, P
          return i(this, function (i) {
            switch (i.label) {
              case 0:
                if (!n) return [2]
                if (
                  (n.styles || (n.styles = n.css || {}),
                  (o = n.type),
                  (s = n.show),
                  (a = void 0 === s || s),
                  (h = o == yt),
                  (c = [xt, bt].includes(o)),
                  (f = 'textBox' == o),
                  (l = n.styles || {}),
                  (d = l.backgroundImage),
                  (u = l.display),
                  h && !n.src && !n.url)
                )
                  return [2]
                if (u == x || !a) return [2]
                if (c || f) {
                  if (
                    ((p = n.children),
                    (g = n.views),
                    !p && g && (n.children = p = g),
                    !n.text && (!p || (p && !p.length)))
                  )
                    return [2]
                  p && p.length && !n.flattened && ((v = e(n.children || n.views)), (n.type = 'view'), (n.children = v))
                }
                if (!(h || (n.type == wt && d))) return [3, 4]
                ;(y = h ? n.src : ''),
                  (b = /url\(['"]?(.*?)['"]?\)/.exec(d)),
                  d && b && b[1] && (y = b[1] || ''),
                  (i.label = 1)
              case 1:
                return i.trys.push([1, 3, , 4]), [4, this.getImageInfo(y)]
              case 2:
                return (
                  (w = i.sent()),
                  (m = w.width),
                  (S = w.height),
                  !(z = w.path) && h
                    ? [2]
                    : (z &&
                        (n.attributes = Object.assign(n.attributes || {}, {
                          width: m,
                          height: S,
                          path: z,
                          src: z,
                          naturalSrc: y
                        })),
                      [3, 4])
                )
              case 3:
                return (
                  (I = i.sent()), n.type != wt ? [2] : (this.lifecycle('onEffectFail', t(t({}, I), { src: y })), [3, 4])
                )
              case 4:
                if (((this.count += 1), (M = new gt(n, r, this.root, this.ctx)), !(k = n.children || n.views)))
                  return [3, 8]
                ;(B = 0), (i.label = 5)
              case 5:
                return B < k.length ? ((W = k[B]), [4, this.create(W, M)]) : [3, 8]
              case 6:
                ;(P = i.sent()) && M.add(P), (i.label = 7)
              case 7:
                return B++, [3, 5]
              case 8:
                return [2, M]
            }
          })
        })
      }),
      (r.prototype.drawNode = function (t, n) {
        return (
          void 0 === n && (n = !1),
          e(this, void 0, void 0, function () {
            var e, r, o, s, a, h, c, f, l, d, u, p, g, v, y, x, b, w, m, S, z, I, M
            return i(this, function (i) {
              switch (i.label) {
                case 0:
                  return (
                    (e = t.layoutBox),
                    (r = t.computedStyle),
                    (o = t.attributes),
                    (s = t.name),
                    (a = t.children),
                    (h = t.fixedLine),
                    (c = t.attributes),
                    (f = c.src),
                    (l = c.text),
                    (d = r.position),
                    (u = r.backgroundImage),
                    (p = r.backgroundRepeat),
                    ['fixed'].includes(d) && !n
                      ? [2]
                      : (this.ctx.save(),
                        s !== wt ? [3, 7] : f && u ? (p ? [4, this.drawPattern(o, e, r)] : [3, 2]) : [3, 5])
                  )
                case 1:
                  return i.sent(), [3, 4]
                case 2:
                  return [4, this.drawImage(o, e, r, !1)]
                case 3:
                  i.sent(), (i.label = 4)
                case 4:
                  return [3, 6]
                case 5:
                  this.drawView(e, r), (i.label = 6)
                case 6:
                  return [3, 10]
                case 7:
                  return s === yt && f ? [4, this.drawImage(o, e, r, !1)] : [3, 9]
                case 8:
                  return i.sent(), [3, 10]
                case 9:
                  s === xt ? this.drawText(l, e, r, o) : s === bt && vt.api && vt.api.draw(l, this, e, r),
                    (i.label = 10)
                case 10:
                  if (((this.progress += 1), (v = (g = h || {}).beforeElements), (y = g.afterElements), !v))
                    return [3, 14]
                  ;(x = 0), (b = v), (i.label = 11)
                case 11:
                  return x < b.length ? ((M = b[x]), [4, this.drawNode(M)]) : [3, 14]
                case 12:
                  i.sent(), (i.label = 13)
                case 13:
                  return x++, [3, 11]
                case 14:
                  if (!a) return [3, 18]
                  ;(w = Object.values
                    ? Object.values(a)
                    : Object.keys(a).map(function (t) {
                        return a[t]
                      })),
                    (m = 0),
                    (S = w),
                    (i.label = 15)
                case 15:
                  return m < S.length
                    ? 'absolute' === (M = S[m]).computedStyle.position
                      ? [3, 17]
                      : [4, this.drawNode(M)]
                    : [3, 18]
                case 16:
                  i.sent(), (i.label = 17)
                case 17:
                  return m++, [3, 15]
                case 18:
                  if (!y) return [3, 22]
                  ;(z = 0), (I = y), (i.label = 19)
                case 19:
                  return z < I.length ? ((M = I[z]), [4, this.drawNode(M)]) : [3, 22]
                case 20:
                  i.sent(), (i.label = 21)
                case 21:
                  return z++, [3, 19]
                case 22:
                  return this.ctx.restore(), [2]
              }
            })
          })
        )
      }),
      (r.prototype.render = function (t) {
        var n = this
        return (
          void 0 === t && (t = 30),
          new Promise(function (r, o) {
            return e(n, void 0, void 0, function () {
              var e, n, s, a, h, c, f, l, d, u
              return i(this, function (i) {
                switch (i.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:
                    i.sent(), (i.label = 2)
                  case 2:
                    if ((i.trys.push([2, 14, , 15]), !this.node)) return [3, 12]
                    if (((n = this.root.fixedLine || {}), (s = n.beforeElements), (a = n.afterElements), !s))
                      return [3, 6]
                    ;(h = 0), (c = s), (i.label = 3)
                  case 3:
                    return h < c.length ? ((d = c[h]), [4, this.drawNode(d, !0)]) : [3, 6]
                  case 4:
                    i.sent(), (i.label = 5)
                  case 5:
                    return h++, [3, 3]
                  case 6:
                    return [4, this.drawNode(this.node)]
                  case 7:
                    if ((i.sent(), !a)) return [3, 11]
                    ;(f = 0), (l = a), (i.label = 8)
                  case 8:
                    return f < l.length ? ((d = l[f]), [4, this.drawNode(d, !0)]) : [3, 11]
                  case 9:
                    i.sent(), (i.label = 10)
                  case 10:
                    return f++, [3, 8]
                  case 11:
                    return r(this.node), [3, 13]
                  case 12:
                    this.lifecycle('onEffectFail', 'node is empty'), (i.label = 13)
                  case 13:
                    return [3, 15]
                  case 14:
                    return (u = i.sent()), this.lifecycle('onEffectFail', u), o(u), [3, 15]
                  case 15:
                    return this.performance && console.log('渲染用时：' + (+new Date() - e - 30) + 'ms'), [2]
                }
                var p
              })
            })
          })
        )
      }),
      (r.prototype.onEffectFinished = function () {
        var t = this,
          e = Object.keys(this.imageBus).map(function (e) {
            return t.imageBus[e]
          })
        return Promise.all(e)
      }),
      (r.prototype.destroy = function () {
        this.node = []
      }),
      (r.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
        }
      }),
      r
    )
  })()
n.WEB == I && (window.Painter = Bt)
export { Bt as Painter, Bt as default }
