-
-
Save wsy5555621/e5afa57212a898de1bfd4bffa29dbd04 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /*! | |
| * | |
| * ap/v1.13.0 | |
| * Wed Dec 12 2018 15:41:56 GMT+0800 (GMT+08:00) | |
| * | |
| */ | |
| var global = self | |
| , __appxStartTime = (global = self, | |
| Date.now()) | |
| , AFAppX = function(e) { | |
| var t = {}; | |
| function n(r) { | |
| if (t[r]) | |
| return t[r].exports; | |
| var a = t[r] = { | |
| i: r, | |
| l: !1, | |
| exports: {} | |
| }; | |
| return e[r].call(a.exports, a, a.exports, n), | |
| a.l = !0, | |
| a.exports | |
| } | |
| return n.m = e, | |
| n.c = t, | |
| n.d = function(e, t, r) { | |
| n.o(e, t) || Object.defineProperty(e, t, { | |
| enumerable: !0, | |
| get: r | |
| }) | |
| } | |
| , | |
| n.r = function(e) { | |
| "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { | |
| value: "Module" | |
| }), | |
| Object.defineProperty(e, "__esModule", { | |
| value: !0 | |
| }) | |
| } | |
| , | |
| n.t = function(e, t) { | |
| if (1 & t && (e = n(e)), | |
| 8 & t) | |
| return e; | |
| if (4 & t && "object" == typeof e && e && e.__esModule) | |
| return e; | |
| var r = Object.create(null); | |
| if (n.r(r), | |
| Object.defineProperty(r, "default", { | |
| enumerable: !0, | |
| value: e | |
| }), | |
| 2 & t && "string" != typeof e) | |
| for (var a in e) | |
| n.d(r, a, function(t) { | |
| return e[t] | |
| } | |
| .bind(null, a)); | |
| return r | |
| } | |
| , | |
| n.n = function(e) { | |
| var t = e && e.__esModule ? function() { | |
| return e.default | |
| } | |
| : function() { | |
| return e | |
| } | |
| ; | |
| return n.d(t, "a", t), | |
| t | |
| } | |
| , | |
| n.o = function(e, t) { | |
| return Object.prototype.hasOwnProperty.call(e, t) | |
| } | |
| , | |
| n.p = "", | |
| n(n.s = 3) | |
| }([function(e, t) { | |
| function n() { | |
| return e.exports = n = Object.assign || function(e) { | |
| for (var t = 1; t < arguments.length; t++) { | |
| var n = arguments[t]; | |
| for (var r in n) | |
| Object.prototype.hasOwnProperty.call(n, r) && (e[r] = n[r]) | |
| } | |
| return e | |
| } | |
| , | |
| n.apply(this, arguments) | |
| } | |
| e.exports = n | |
| } | |
| , function(e, t, n) { | |
| "use strict"; | |
| var r = n(4) | |
| , a = n(2); | |
| function o(e, t) { | |
| return t.encode ? t.strict ? r(e) : encodeURIComponent(e) : e | |
| } | |
| t.extract = function(e) { | |
| return e.split("?")[1] || "" | |
| } | |
| , | |
| t.parse = function(e, t) { | |
| var n = function(e) { | |
| var t; | |
| switch (e.arrayFormat) { | |
| case "index": | |
| return function(e, n, r) { | |
| t = /\[(\d*)\]$/.exec(e), | |
| e = e.replace(/\[\d*\]$/, ""), | |
| t ? (void 0 === r[e] && (r[e] = {}), | |
| r[e][t[1]] = n) : r[e] = n | |
| } | |
| ; | |
| case "bracket": | |
| return function(e, n, r) { | |
| t = /(\[\])$/.exec(e), | |
| e = e.replace(/\[\]$/, ""), | |
| t ? void 0 !== r[e] ? r[e] = [].concat(r[e], n) : r[e] = [n] : r[e] = n | |
| } | |
| ; | |
| default: | |
| return function(e, t, n) { | |
| void 0 !== n[e] ? n[e] = [].concat(n[e], t) : n[e] = t | |
| } | |
| } | |
| }(t = a({ | |
| arrayFormat: "none" | |
| }, t)) | |
| , r = Object.create(null); | |
| return "string" != typeof e ? r : (e = e.trim().replace(/^(\?|#|&)/, "")) ? (e.split("&").forEach(function(e) { | |
| var t = e.replace(/\+/g, " ").split("=") | |
| , a = t.shift() | |
| , o = t.length > 0 ? t.join("=") : void 0; | |
| o = void 0 === o ? null : decodeURIComponent(o), | |
| n(decodeURIComponent(a), o, r) | |
| }), | |
| Object.keys(r).sort().reduce(function(e, t) { | |
| var n = r[t]; | |
| return Boolean(n) && "object" == typeof n && !Array.isArray(n) ? e[t] = function e(t) { | |
| return Array.isArray(t) ? t.sort() : "object" == typeof t ? e(Object.keys(t)).sort(function(e, t) { | |
| return Number(e) - Number(t) | |
| }).map(function(e) { | |
| return t[e] | |
| }) : t | |
| }(n) : e[t] = n, | |
| e | |
| }, Object.create(null))) : r | |
| } | |
| , | |
| t.stringify = function(e, t) { | |
| var n = function(e) { | |
| switch (e.arrayFormat) { | |
| case "index": | |
| return function(t, n, r) { | |
| return null === n ? [o(t, e), "[", r, "]"].join("") : [o(t, e), "[", o(r, e), "]=", o(n, e)].join("") | |
| } | |
| ; | |
| case "bracket": | |
| return function(t, n) { | |
| return null === n ? o(t, e) : [o(t, e), "[]=", o(n, e)].join("") | |
| } | |
| ; | |
| default: | |
| return function(t, n) { | |
| return null === n ? o(t, e) : [o(t, e), "=", o(n, e)].join("") | |
| } | |
| } | |
| }(t = a({ | |
| encode: !0, | |
| strict: !0, | |
| arrayFormat: "none" | |
| }, t)); | |
| return e ? Object.keys(e).sort().map(function(r) { | |
| var a = e[r]; | |
| if (void 0 === a) | |
| return ""; | |
| if (null === a) | |
| return o(r, t); | |
| if (Array.isArray(a)) { | |
| var i = []; | |
| return a.slice().forEach(function(e) { | |
| void 0 !== e && i.push(n(r, e, i.length)) | |
| }), | |
| i.join("&") | |
| } | |
| return o(r, t) + "=" + o(a, t) | |
| }).filter(function(e) { | |
| return e.length > 0 | |
| }).join("&") : "" | |
| } | |
| } | |
| , function(e, t) { | |
| var n = Array.prototype.slice; | |
| e.exports = function(e) { | |
| return n.call(arguments, 1).forEach(function(t) { | |
| t && "object" == typeof t && Object.keys(t).forEach(function(n) { | |
| e[n] = t[n] | |
| }) | |
| }), | |
| e | |
| } | |
| } | |
| , function(e, t, n) { | |
| e.exports = n(5) | |
| } | |
| , function(e, t, n) { | |
| "use strict"; | |
| e.exports = function(e) { | |
| return encodeURIComponent(e).replace(/[!'()*]/g, function(e) { | |
| return "%" + e.charCodeAt(0).toString(16).toUpperCase() | |
| }) | |
| } | |
| } | |
| , function(e, t, n) { | |
| "use strict"; | |
| n.r(t); | |
| var r = n(0) | |
| , a = n.n(r) | |
| , o = n(2) | |
| , i = n.n(o); | |
| if (!global.Symbol) { | |
| var c = 0 | |
| , s = function(e) { | |
| return "$$_appx_symbol_" + e + "_" + ++c + "_$$" | |
| }; | |
| s.iterator = s("Symbol.iterator"), | |
| global.Symbol = s | |
| } | |
| Object.assign = i.a; | |
| var l, u = n(1), f = n.n(u); | |
| function p(e) { | |
| return e && "object" == typeof e ? Object.keys(e) : [] | |
| } | |
| function d() { | |
| return l | |
| } | |
| self.__getStartupParams = d; | |
| var h = self; | |
| function g() { | |
| if (h.__appxStartupParams) | |
| return h.__appxStartupParams; | |
| var e = d(); | |
| if (e) | |
| return e; | |
| var t = location.href | |
| , n = t.indexOf("?"); | |
| if (e = {}, | |
| -1 !== n) { | |
| var r = t.slice(n + 1); | |
| v(e = f.a.parse(r)) | |
| } | |
| return e | |
| } | |
| function v(e) { | |
| h.__appxStartupParams = e, | |
| function(e) { | |
| p(e).length && (l = e) | |
| }(e) | |
| } | |
| var m = navigator.swuserAgent || navigator.userAgent | |
| , y = { | |
| OS: "web", | |
| ide: m.indexOf("AlipayIDE") > -1, | |
| browser: m.indexOf("Android") > -1 ? "android" : m.match(/iPhone|iPad/i) ? "ios" : "unknown" | |
| } | |
| , b = {} | |
| , w = function() { | |
| return !!g().debug || "DEBUG" === g().nbsn || y.ide | |
| }; | |
| function I(e) { | |
| var t = b[e]; | |
| if (void 0 === t) { | |
| var n = g().debug; | |
| n && (b[e] = t = !!n.match(new RegExp("\\b" + e + "\\b"))) | |
| } | |
| return t | |
| } | |
| function P(e) { | |
| console.log.apply(console, e) | |
| } | |
| function k() { | |
| if (w()) { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| P(t) | |
| } | |
| } | |
| function C(e) { | |
| if (I(e)) { | |
| for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) | |
| n[r - 1] = arguments[r]; | |
| P(["[" + e + "]"].concat(n)) | |
| } | |
| } | |
| var A = self; | |
| function T(e) { | |
| e.message || (e = new Error(e)), | |
| A.onerror ? A.onerror(e.message, e.sourceURL, e.line, e.column, e) : console.error(e) | |
| } | |
| self; | |
| function S() { | |
| this.allListeners = {} | |
| } | |
| var O = S.prototype = { | |
| _addListener: function(e, t, n) { | |
| var r = this; | |
| void 0 === n && (n = {}); | |
| var a = e; | |
| Array.isArray(a) || (a = [a]); | |
| var o = this.allListeners; | |
| return a.forEach(function(e) { | |
| var r = o[e] = o[e] || []; | |
| -1 === r.indexOf(t) && (n.prepend ? r.unshift(t) : r.push(t)) | |
| }), | |
| { | |
| remove: function() { | |
| r.removeListener(a, t) | |
| } | |
| } | |
| }, | |
| addListener: function(e, t) { | |
| return this._addListener(e, t) | |
| }, | |
| prependListener: function(e, t) { | |
| return this._addListener(e, t, { | |
| prepend: !0 | |
| }) | |
| }, | |
| listeners: function(e) { | |
| return e ? this.allListeners[e] || [] : this.allListeners | |
| }, | |
| listenerCount: function(e) { | |
| if (e) | |
| return this.listeners(e).length; | |
| for (var t = this.allListeners, n = Object.keys(t), r = 0, a = 0, o = n.length; a < o; a++) { | |
| var i = n[a]; | |
| r += t[i] && t[i].length || 0 | |
| } | |
| return r | |
| }, | |
| emit: function(e) { | |
| for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) | |
| n[r - 1] = arguments[r]; | |
| var o = e; | |
| Array.isArray(o) || (o = [o]); | |
| var i = a()({}, this.allListeners); | |
| o.forEach(function(e) { | |
| var t = i[e]; | |
| t && t.concat().forEach(function(e) { | |
| try { | |
| e.apply(void 0, n) | |
| } catch (e) { | |
| T(e) | |
| } | |
| }) | |
| }) | |
| }, | |
| removeListener: function(e, t) { | |
| var n = e; | |
| Array.isArray(n) || (n = [n]); | |
| var r = this.allListeners; | |
| n.forEach(function(e) { | |
| var n = r[e]; | |
| if (n) | |
| if (t) { | |
| var a = n.indexOf(t); | |
| -1 !== a && n.splice(a, 1) | |
| } else | |
| delete r[e] | |
| }) | |
| } | |
| }; | |
| O.on = O.addListener, | |
| O.off = O.removeListener; | |
| var E = S | |
| , x = new E | |
| , M = {} | |
| , _ = { | |
| registerComponent: function(e, t) { | |
| M[e] && console.warn("Page " + e + " is already declared!"), | |
| M[e] = t | |
| }, | |
| getComponent: function(e) { | |
| return M[e] && M[e]() | |
| }, | |
| getRunnable: function(e) { | |
| return _.getComponent(e) | |
| } | |
| } | |
| , B = _ | |
| , D = { | |
| tabsConfig: {}, | |
| pagesConfig: {}, | |
| currentPageConfig: null, | |
| currentComponentConfig: null | |
| } | |
| , j = "__appxPageId" | |
| , R = new RegExp("[&?]" + j + "=(\\d+)(?:&|$)"); | |
| function L(e) { | |
| var t, n = new URL(e), r = n.hash.slice(1), a = n.search, o = a.match(R); | |
| return o && (t = parseInt(o[1], 10), | |
| a = a.replace(R, "")), | |
| "?" === a.charAt(0) && (a = a.slice(1)), | |
| { | |
| id: t = t || D.tabsConfig[r] || 0, | |
| pagePath: r, | |
| queryString: a | |
| } | |
| } | |
| var U = 10 | |
| , N = 100 | |
| , F = N; | |
| function $(e, t) { | |
| return t ? D.tabsConfig[e] : ++F | |
| } | |
| function V(e) { | |
| var t = e.getId(); | |
| return t >= U && t <= N | |
| } | |
| function W(e, t) { | |
| return !(!e || !t) && e.slice(0, t.length) === t | |
| } | |
| var q = function(e, t) { | |
| var n = e | |
| , r = "" | |
| , a = n.indexOf("?"); | |
| if (-1 !== a && (r = n.slice(a + 1), | |
| n = n.slice(0, a)), | |
| "/" === n.charAt(0)) | |
| n = n.slice(1); | |
| else if (t) { | |
| n = function(e, t) { | |
| if (W(e, "/")) | |
| return e; | |
| W(e, "./") || W(e, "../") || (e = "./" + e); | |
| var n = t.split("/"); | |
| n[n.length - 1] && n.pop(); | |
| var r = []; | |
| return n.concat(e.split("/")).forEach(function(e) { | |
| e && "." !== e && (".." === e ? r.pop() : r.push(e)) | |
| }), | |
| r.join("/") | |
| }(n, t.getPagePath()) | |
| } | |
| return "" + n + (r = r ? "?" + r : r) | |
| }; | |
| function z(e) { | |
| var t = e; | |
| "/" === t.charAt(0) && (t = e.slice(1)); | |
| var n = t.indexOf("?"); | |
| if (-1 !== n && (t = t.slice(0, n)), | |
| !B.getRunnable(t)) | |
| return console.error("framework error: can not find page: " + e), | |
| !0 | |
| } | |
| var X, J, G = self, K = G.importScripts, H = G.AlipayJSBridge, Y = G.fetch; | |
| function Z() {} | |
| H && (X = H.call, | |
| J = H.callSync); | |
| var Q = {} | |
| , ee = {}; | |
| self.bootstrapSubPackage = function(e, t) { | |
| var n = t.success; | |
| Q[e] = 1, | |
| n(), | |
| ee[e] && (ee[e](), | |
| delete ee[e]) | |
| } | |
| ; | |
| var te = void 0 !== K; | |
| function ne(e, t) { | |
| var n = g().appxCli | |
| , r = function(e) { | |
| var t = self.appXAppJson; | |
| if (!t || !t.app.subPackages) | |
| return !1; | |
| for (var n = t.app.subPackages, r = 0; r < n.length; r++) { | |
| var a = n[r] | |
| , o = a.root + "/"; | |
| if (W(e, o)) | |
| for (var i = a.pages, c = void 0 === i ? [] : i, s = 0, l = c.length; s < l; s++) | |
| if (o + c[s] === e) | |
| return a.root | |
| } | |
| return !1 | |
| }(e); | |
| if (r) { | |
| var a = D.bridge.call; | |
| if (Q[r]) | |
| t(); | |
| else { | |
| te && a("showLoading"); | |
| var o = function() { | |
| !function(e, t) { | |
| var n = "/" + e; | |
| if (te) | |
| K(n + "/index.worker.js"), | |
| t(); | |
| else { | |
| var r = document.createElement("script"); | |
| r.src = n + "/index.js", | |
| document.head.appendChild(r), | |
| ee[e] = t | |
| } | |
| }(r, function() { | |
| te && D.bridge.call("hideLoading"), | |
| t() | |
| }) | |
| }; | |
| n ? o() : a("loadSubPackage", { | |
| packages: [r] | |
| }, o) | |
| } | |
| } else | |
| t() | |
| } | |
| var re = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , ae = f.a; | |
| function oe(e) { | |
| var t = e.pagePath | |
| , n = e.pageId | |
| , r = e.queryString | |
| , a = this.getPageById(n); | |
| if (a) | |
| return a; | |
| var o = B.getComponent(t); | |
| if (!o) | |
| throw new Error("[WORKER] page '" + t + "' not found!"); | |
| var i = {}; | |
| return r && (i = ae.parse(r)), | |
| a = o({ | |
| id: n, | |
| query: i, | |
| pagePath: t | |
| }), | |
| this.pushPage(a), | |
| a | |
| } | |
| function ie(e, t) { | |
| var n = t.pageUrl | |
| , r = t.viewId | |
| , a = this.getPageObject(n) | |
| , o = a.pagePath | |
| , i = a.queryString | |
| , c = $() | |
| , s = oe.call(this, { | |
| pagePath: o, | |
| pageId: c, | |
| queryString: i | |
| }); | |
| return e({ | |
| url: function(e) { | |
| var t = e.pagePath | |
| , n = e.pageId | |
| , r = e.queryString; | |
| return "#" + t + "?" + j + "=" + n + (r ? "&" + r : "") | |
| }({ | |
| pagePath: o, | |
| pageId: c, | |
| queryString: ae.stringify(s.query) | |
| }), | |
| viewId: r, | |
| pagePath: o | |
| }), | |
| s | |
| } | |
| var ce, se = { | |
| newPage: oe, | |
| reLaunch: function(e, t) { | |
| var n = this | |
| , r = e.url | |
| , a = t.pushWindow | |
| , o = t.switchTab | |
| , i = this.getCurrentPageImpl() | |
| , c = q(r, i); | |
| ne(c, function() { | |
| z(c) || (n.clearAllPages(), | |
| $(n.getPageObject(c).pagePath, 1) ? n.switchTab({ | |
| url: "/" + c | |
| }, { | |
| doSwitch: o, | |
| currentPage: i | |
| }) : ie.call(n, a, { | |
| pageUrl: c | |
| }).fromPage = i) | |
| }) | |
| }, | |
| navigateTo: function(e, t) { | |
| var n = this | |
| , r = e.url | |
| , a = e.viewId | |
| , o = t.pushWindow | |
| , i = this.getCurrentPageImpl() | |
| , c = q(r, i); | |
| ne(c, function() { | |
| z(c) || (i.hide(), | |
| ie.call(n, o, { | |
| pageUrl: c, | |
| viewId: a | |
| }).fromPage = i) | |
| }) | |
| }, | |
| redirectTo: function(e, t) { | |
| var n = this | |
| , r = e.url | |
| , a = t.pushWindow | |
| , o = this.getCurrentPageImpl() | |
| , i = q(r, o); | |
| ne(i, function() { | |
| z(i) || (V(o) ? n.clearAllPages() : o.unload(), | |
| ie.call(n, a, { | |
| pageUrl: i | |
| }).fromPage = o) | |
| }) | |
| }, | |
| switchTab: function(e, t) { | |
| var n = this | |
| , r = void 0 === t ? {} : t | |
| , a = r.doSwitch | |
| , o = r.currentPage | |
| , i = e.url | |
| , c = re(e, ["url"]) | |
| , s = q(i, this.getCurrentPageImpl()); | |
| ne(s, function() { | |
| if (!z(s)) { | |
| var e = n.getPageObject(s).pagePath; | |
| if (function(e) { | |
| var t = this | |
| , n = e.url | |
| , r = e.currentPage || this.getCurrentPageImpl() | |
| , a = this.getPageObject(n) | |
| , o = a.pagePath | |
| , i = a.queryString | |
| , c = function() { | |
| oe.call(t, { | |
| pagePath: o, | |
| pageId: $(o, 1), | |
| queryString: i | |
| }).fromPage = r | |
| }; | |
| if (!this.isTabShow()) | |
| return this.clearAllPages(), | |
| x.emit("switchTab", { | |
| page: r | |
| }), | |
| void c(); | |
| var s = this.getCurrentPagesImpl() | |
| , l = this.getPagesByTabPath(o); | |
| if ((s.length || l.length) && (s !== l || 1 !== s.length)) { | |
| x.emit("switchTab", { | |
| page: r | |
| }); | |
| for (var u = s.concat(), f = u.length - 1; f >= 1; f--) | |
| u[f].unload(); | |
| if (s === l) | |
| u[0].show(); | |
| else { | |
| 1 === u.length && u[0].hide(), | |
| this.setCurrentPagesImpl(l, o); | |
| var p = l[0]; | |
| p ? (p.fromPage = r, | |
| p.show()) : c() | |
| } | |
| } | |
| } | |
| .call(n, { | |
| url: s, | |
| currentPage: o | |
| }), | |
| a) | |
| a({ | |
| pagePath: e | |
| }); | |
| else { | |
| var t = n.getCurrentPageImpl(); | |
| t && (t.isLoaded() ? t.onTabItemTap(c) : (t.tabProps = c, | |
| t._fromTabItemTap = 1)) | |
| } | |
| } | |
| }) | |
| }, | |
| destroyPageByUrl: function(e) { | |
| var t = L(e).id | |
| , n = this.getAllPages(); | |
| if (1 !== n.length || n[0].getId() !== t) { | |
| var r = this.getPageById(t); | |
| r && r.unload() | |
| } | |
| }, | |
| getPageByUrl: function(e) { | |
| var t = L(e).id; | |
| return this.getPageById(t) | |
| }, | |
| pausePageByUrl: function(e) { | |
| var t = this.getPageByUrl(e); | |
| t && t.hide() | |
| }, | |
| resumePageByUrl: function(e) { | |
| var t = this.getPageByUrl(e); | |
| t && t.show() | |
| } | |
| }, le = self; | |
| var ue, fe; | |
| self; | |
| function pe(e, t) { | |
| if (void 0 === t && (t = null), | |
| e) | |
| try { | |
| for (var n = arguments.length, r = new Array(n > 2 ? n - 2 : 0), a = 2; a < n; a++) | |
| r[a - 2] = arguments[a]; | |
| return e.apply(t, r) | |
| } catch (e) { | |
| T(e) | |
| } | |
| } | |
| function de(e) { | |
| var t = ue._tabCaches; | |
| p(t).forEach(function(n) { | |
| var r = t[n]; | |
| if (r) | |
| for (var a = r.length - 1; a >= 0; a -= 1) | |
| if (r[a] === e) | |
| return void r.splice(a, 1) | |
| }) | |
| } | |
| function he() { | |
| return fe | |
| } | |
| function ge(e) { | |
| if (void 0 === e && (e = {}), | |
| ue) | |
| throw new Error("App() can only be called once"); | |
| return fe = e, | |
| function(e) { | |
| ce = e, | |
| le.__appImpl = ce | |
| }(ue = new ve(e)), | |
| x.emit("appCreated", ue), | |
| fe | |
| } | |
| function ve(e) { | |
| this._tabCaches = {}, | |
| this._currentTabPath = "", | |
| this.publicInstance = e, | |
| this.shown = !0 | |
| } | |
| ve.prototype = a()({}, se, { | |
| pushPage: function(e) { | |
| var t = ye(); | |
| if (!t.length) { | |
| var n = ue._currentTabPath = e.getPagePath(); | |
| t = ue._tabCaches[n] = [] | |
| } | |
| t.push(e) | |
| }, | |
| popPage: de, | |
| getAllPages: function() { | |
| var e = [] | |
| , t = this._tabCaches; | |
| return p(t).forEach(function(n) { | |
| var r = t[n]; | |
| r && (e = e.concat(r)) | |
| }), | |
| e | |
| }, | |
| isTabShow: function() { | |
| var e = ue._tabCaches | |
| , t = p(e).filter(function(t) { | |
| return !!e[t].length | |
| }); | |
| return !!t.length && t.every(function(t) { | |
| return V(e[t][0]) | |
| }) | |
| }, | |
| clearAllPages: function() { | |
| var e = this._tabCaches; | |
| this._tabCaches = {}, | |
| p(e).forEach(function(t) { | |
| var n = e[t]; | |
| n && n.concat().reverse().forEach(function(e) { | |
| return e.unload() | |
| }) | |
| }), | |
| this._currentTabPath = "" | |
| }, | |
| getPagesByTabPath: function(e) { | |
| return this._tabCaches[e] || [] | |
| }, | |
| getPageById: function(e) { | |
| return this.getPageBy(function(t) { | |
| return t.getId() === e | |
| }) | |
| }, | |
| getPageObject: function(e) { | |
| var t = e.indexOf("?") | |
| , n = "" | |
| , r = e; | |
| return -1 !== t && (n = e.slice(t + 1), | |
| r = r.slice(0, t)), | |
| "/" === r.charAt(0) && (r = r.slice(1)), | |
| { | |
| queryString: n, | |
| pagePath: r | |
| } | |
| }, | |
| getPageBy: function(e) { | |
| var t = ue._tabCaches; | |
| for (var n in t) | |
| if (t.hasOwnProperty(n)) { | |
| var r = t[n]; | |
| if (r) | |
| for (var a = r.length - 1; a >= 0; a -= 1) | |
| if (e(r[a])) | |
| return r[a] | |
| } | |
| return null | |
| }, | |
| launch: function(e) { | |
| void 0 === e && (e = {}), | |
| this.$launchTime = Date.now(), | |
| this.launchOptions = e, | |
| x.emit("launch", e), | |
| k("framework: App onLaunch"); | |
| var t = this.publicInstance | |
| , n = t.onLaunch | |
| , r = t.onShow; | |
| pe(n, t, e), | |
| pe(r, t, e), | |
| this.shown = !0 | |
| }, | |
| hide: function(e) { | |
| if (void 0 === e && (e = !0), | |
| this.shown = !1, | |
| x.emit("background"), | |
| k("framework: App onHide"), | |
| e) { | |
| var t = be(); | |
| t && t.hide() | |
| } | |
| pe(this.publicInstance.onHide, this.publicInstance) | |
| }, | |
| show: function(e, t) { | |
| void 0 === t && (t = !0), | |
| this.shown = !0; | |
| var n = e || {}; | |
| k("framework: App onShow"), | |
| x.emit("foreground", n); | |
| var r = be(); | |
| if (pe(this.publicInstance.onShow, this.publicInstance, n), | |
| t && !n.path) { | |
| var a = be(); | |
| a && a === r && a.show() | |
| } | |
| }, | |
| error: function(e) { | |
| pe(this.publicInstance.onError, this.publicInstance, e) | |
| }, | |
| navigateBack: function(e, t) { | |
| void 0 === e && (e = {}); | |
| var n = e.delta | |
| , r = void 0 === n ? 1 : n; | |
| if ("number" != typeof r) | |
| return "delta must be number!"; | |
| var a = this.getCurrentPagesImpl().length; | |
| if (1 === a) | |
| return "already top of navigation"; | |
| r >= a && (r = a - 1), | |
| t({ | |
| delta: r | |
| }) | |
| }, | |
| setCurrentPagesImpl: function(e, t) { | |
| var n = t || this._currentTabPath; | |
| e.length && (n = e[0].getPagePath()), | |
| this._currentTabPath = n, | |
| this._tabCaches[n] = e | |
| }, | |
| getCurrentPagesImpl: ye, | |
| getCurrentPageImpl: be | |
| }), | |
| x.addListener("pageUnload", function(e) { | |
| de(e.page) | |
| }); | |
| var me = []; | |
| function ye() { | |
| if (!ue) | |
| return []; | |
| var e = ue._tabCaches | |
| , t = ue._currentTabPath; | |
| return t ? (e[t] = e[t] || [], | |
| e[t]) : me | |
| } | |
| function be() { | |
| var e = ye(); | |
| return e[e.length - 1] | |
| } | |
| function we() { | |
| return ye().map(function(e) { | |
| return e.publicInstance | |
| }) | |
| } | |
| function Ie() { | |
| return ue | |
| } | |
| var Pe, ke = function(e) { | |
| return e.ap_framework_sceneId | |
| }, Ce = self; | |
| Ce.addEventListener("install", function() { | |
| Ce.skipWaiting && "function" == typeof Ce.skipWaiting && Ce.skipWaiting() | |
| }); | |
| var Ae = !0 | |
| , Te = []; | |
| function Se(e) { | |
| C("framework", "[WORKER] App Received Message:", e.data); | |
| var t = e.data | |
| , n = t.pagePath | |
| , r = t.viewId; | |
| n && ne(n, function() { | |
| var t = Ie() | |
| , a = e.data | |
| , o = a.queryString | |
| , i = a.id | |
| , c = t.newPage({ | |
| pagePath: n, | |
| queryString: o, | |
| pageId: i | |
| }); | |
| if (c.setViewId(r), | |
| c.setPort(e.ports[0]), | |
| c.$loadTime) | |
| c.refresh(); | |
| else { | |
| if (!Pe) { | |
| var s = { | |
| path: n | |
| } | |
| , l = g() | |
| , u = l.query | |
| , p = l.referrerInfo; | |
| u && (s.query = f.a.parse(u)), | |
| s.scene = ke(g()), | |
| p && (s.referrerInfo = JSON.parse(p)), | |
| Pe = !0, | |
| t.launch(s) | |
| } | |
| var d = ye(); | |
| d && d[d.length - 1] === c && c.load() | |
| } | |
| }) | |
| } | |
| Ce.addEventListener("message", function(e) { | |
| Ae ? Se(e) : Te.push(e) | |
| }); | |
| var Oe = {} | |
| , Ee = { | |
| registerComponent: function(e, t) { | |
| Oe[e] || (Oe[e] = t) | |
| }, | |
| getComponent: function(e) { | |
| return Oe[e] && Oe[e]() | |
| } | |
| }; | |
| function xe(e) { | |
| return Ee.getComponent(e) | |
| } | |
| function Me(e, t) { | |
| return t.forEach(function(t) { | |
| -1 === e.indexOf(t) && e.push(t) | |
| }), | |
| e | |
| } | |
| var _e = /^\./ | |
| , Be = /[^.[\]]+|\[(?:(-?\d+)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g | |
| , De = /\\(\\)?/g | |
| , je = {}; | |
| function Re(e) { | |
| if (je[e]) | |
| return je[e]; | |
| var t = []; | |
| return _e.test(e) && t.push(""), | |
| e.replace(Be, function(e, n, r, a) { | |
| var o = e; | |
| r ? o = a.replace(De, "$1") : n && (o = parseInt(n, 10)), | |
| t.push(o) | |
| }), | |
| je[e] = t, | |
| t | |
| } | |
| function Le(e, t) { | |
| if (e === t) | |
| return !0; | |
| if ("object" != typeof e || null === e || "object" != typeof t || null === t) | |
| return !1; | |
| var n = p(e) | |
| , r = p(t) | |
| , a = n.length; | |
| if (a !== r.length) | |
| return !1; | |
| for (var o = 0; o < a; o++) { | |
| var i = n[o]; | |
| if (!t.hasOwnProperty(i)) | |
| return !1; | |
| if (e[i] !== t[i]) | |
| return !1 | |
| } | |
| return !0 | |
| } | |
| var Ue = "t" | |
| , Ne = "i" | |
| , Fe = "d" | |
| , $e = "o" | |
| , Ve = 2 | |
| , We = 1 | |
| , qe = 2 | |
| , ze = "d" | |
| , Xe = "o" | |
| , Je = "u" | |
| , Ge = "e"; | |
| function Ke(e, t) { | |
| return e ? function(e) { | |
| return Array.isArray(e) | |
| }(e) ? e.slice() : a()({}, e) : t ? [] : {} | |
| } | |
| function He(e, t, n, r, a) { | |
| var o = n[0]; | |
| return (a && e === t || !e) && (e = Ke(t, function(e) { | |
| return "number" == typeof e | |
| }(o))), | |
| 1 === n.length ? r(e, o) : (t && (t = t[o]), | |
| e[o] = He(e[o], t, n.slice(1), r, !0), | |
| e) | |
| } | |
| function Ye(e, t) { | |
| var n = a()({}, e); | |
| return p(t).forEach(function(e) { | |
| var r = Re(e); | |
| He(n, n, r, function(n, r) { | |
| return n[r] = t[e], | |
| n | |
| }) | |
| }), | |
| Le(n, e) ? e : n | |
| } | |
| function Ze(e, t) { | |
| var n = a()({}, e); | |
| return p(t).forEach(function(e) { | |
| var r = Re(e); | |
| He(n, n, r, function(n, r) { | |
| var a = n[r]; | |
| return Array.isArray(a) && ((a = a.concat()).splice.apply(a, t[e]), | |
| n[r] = a), | |
| n | |
| }) | |
| }), | |
| Le(n, e) ? e : n | |
| } | |
| function Qe(e) { | |
| return e === Ye ? We : qe | |
| } | |
| function et(e, t, n) { | |
| t && p(t).forEach(function(r) { | |
| if (r in e) | |
| throw new Error("Tried to merge two objects with the same key: `" + r + "`. This conflict is due to `" + n + "` of a component mixin."); | |
| e[r] = t[r] | |
| }) | |
| } | |
| function tt(e, t, n, r) { | |
| void 0 === r && (r = []); | |
| var a = e.mixins; | |
| (void 0 === a ? [] : a).forEach(function(e) { | |
| e[n] && pe.apply(void 0, [e[n], t].concat(r)) | |
| }), | |
| e[n] && pe.apply(void 0, [e[n], t].concat(r)) | |
| } | |
| var nt = /^on[A-Z]/; | |
| function rt(e, t) { | |
| var n, r = t.is, o = t.usingComponents; | |
| Ee.registerComponent(r, function() { | |
| if (n) | |
| return n; | |
| var t, c = {}, s = function(t, n) { | |
| return void 0 === n && (n = !0), | |
| function(e, t, n, r) { | |
| var a = this; | |
| if (void 0 === n && (n = !1), | |
| void 0 === r && (r = []), | |
| n && n[t]) | |
| return n[t]; | |
| var o = e.mixins | |
| , i = {}; | |
| (void 0 === o ? [] : o).forEach(function(e) { | |
| var n = e[t]; | |
| "function" == typeof n && (n = n.apply(a, r)), | |
| et(i, n, t) | |
| }); | |
| var c = e[t]; | |
| return "function" == typeof c && (c = c.apply(this, r)), | |
| et(i, c, t), | |
| n && (n[t] = i), | |
| i | |
| }(e, t, n ? c : n) | |
| }; | |
| return (n = function(e, t, o) { | |
| this.is = r, | |
| this.id = t, | |
| this.page = e, | |
| this.triggerEventHandlers = {}; | |
| var i = this | |
| , c = this.publicInstance = Object.create(s("methods"), { | |
| setData: { | |
| value: function(e, t) { | |
| return i.setData(Ye, e, t) | |
| } | |
| }, | |
| $spliceData: { | |
| value: function(e, t) { | |
| return i.setData(Ze, e, t) | |
| } | |
| } | |
| }); | |
| c.is = r, | |
| c.$id = t, | |
| c.$page = e.publicInstance, | |
| c.data = s("data", !1), | |
| this.computedDeps = a()({}, n.computedDeps), | |
| this.prevData = c.data, | |
| c.props = s("props"), | |
| this.setComponentConfig(o, !0) | |
| } | |
| ).data = s("data"), | |
| n.props = s("props"), | |
| n.getAllComponents = function() { | |
| return t || (t = [r], | |
| p(o).forEach(function(e) { | |
| var n = xe(o[e]).getAllComponents(); | |
| Me(t, n) | |
| }), | |
| t) | |
| } | |
| , | |
| n.prototype = { | |
| setData: function(e, t, n) { | |
| var r, a = this.id, o = this.publicInstance; | |
| if (this.unloaded) | |
| console.log('setData(...) can only update a mounted component. This usually means you called setData() on a unmounted component. Please check the code for the "' + this.is + '" component of "' + this.page.getPagePath() + '" page.'); | |
| else { | |
| this.prevData = o.data, | |
| o.data = e(o.data, t); | |
| var i = ((r = {})[Ue] = Ve, | |
| r[Ne] = a, | |
| r[$e] = Qe(e), | |
| r[Fe] = t, | |
| r) | |
| , c = n || {}; | |
| "function" == typeof n && (c = { | |
| complete: n | |
| }), | |
| this.page.setRemoteData(i, c) | |
| } | |
| }, | |
| setComponentConfig: function(e, t) { | |
| var n = e[Xe] | |
| , r = e[ze]; | |
| n && (this.ownerId = n); | |
| var o = this.publicInstance | |
| , c = o.props; | |
| if (r) { | |
| var s = r[Ge] | |
| , l = r[Je]; | |
| (s && s.length || l && p(l).length) && (o.props = a()({}, o.props)), | |
| s && s.forEach(function(e) { | |
| delete o.props[e] | |
| }), | |
| l && i()(o.props, this.normalizeProps(l)) | |
| } | |
| t || c === o.props && this.prevData === o.data || (this.update(c, this.prevData), | |
| this.prevData = o.data) | |
| }, | |
| normalizeProps: function(e) { | |
| var t = this | |
| , n = a()({}, e); | |
| return p(e).forEach(function(r) { | |
| r.match(nt) && (n[r] = t.getTriggerEventHandler(r, e[r])) | |
| }), | |
| n | |
| }, | |
| getTriggerEventHandler: function(e, t) { | |
| var n = this; | |
| if (!t) | |
| return t; | |
| var r = this.triggerEventHandlers | |
| , a = r[e]; | |
| return a || (a = r[e] = function() { | |
| for (var e = arguments.length, t = new Array(e), r = 0; r < e; r++) | |
| t[r] = arguments[r]; | |
| return n.triggerEvent.apply(n, [a.method].concat(t)) | |
| } | |
| ), | |
| a.method = t, | |
| a | |
| }, | |
| triggerEvent: function(e) { | |
| var t = this.page.getComponentInstance(this.ownerId); | |
| if (t) { | |
| var n = t.publicInstance; | |
| n[e] || console.warn(t.is + ": can not find event handle method: " + e); | |
| for (var r = arguments.length, a = new Array(r > 1 ? r - 1 : 0), o = 1; o < r; o++) | |
| a[o - 1] = arguments[o]; | |
| return pe.apply(void 0, [n[e], n].concat(a)) | |
| } | |
| }, | |
| ready: function() { | |
| tt(e, this.publicInstance, "didMount") | |
| }, | |
| update: function() { | |
| for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++) | |
| n[r] = arguments[r]; | |
| tt(e, this.publicInstance, "didUpdate", n) | |
| }, | |
| unload: function() { | |
| this.unloaded = !0, | |
| tt(e, this.publicInstance, "didUnmount") | |
| } | |
| }, | |
| n | |
| }) | |
| } | |
| function at(e) { | |
| var t = D.currentComponentConfig; | |
| if (t) | |
| return rt(e, t); | |
| console.warn("invalid Component usage!") | |
| } | |
| function ot() {} | |
| var it = { | |
| getCallbackId: function() { | |
| return this.callbackSeq = this.callbackSeq || 0, | |
| this.callbackSeq += 2, | |
| this.callbackSeq | |
| }, | |
| setId: function(e) { | |
| this.id = e | |
| }, | |
| getId: function() { | |
| return this.id | |
| }, | |
| getPagePath: function() { | |
| return this.pagePath | |
| }, | |
| onMessage: function(e) { | |
| var t = this; | |
| if (!this.unloaded) { | |
| var n = e.data; | |
| "string" == typeof n && (n = JSON.parse(n).data); | |
| var r = function(n) { | |
| var r = n.method | |
| , a = n.args | |
| , o = n.caller | |
| , i = n.successCallback | |
| , c = n.errorCallback; | |
| "console" !== r && C("framework", "[" + t.pageType + "] Page " + t.pagePath + " onMessage", n); | |
| var s = o && o.split(".") || [] | |
| , l = t; | |
| if (s.forEach(function(e) { | |
| l = l && l[e] | |
| }), | |
| l) { | |
| var u, f = a.concat(); | |
| if (i ? f.push(function() { | |
| for (var e = arguments.length, n = new Array(e), r = 0; r < e; r++) | |
| n[r] = arguments[r]; | |
| t.callRemote.apply(t, ["self", "invokeCallback", i].concat(n)) | |
| }) : f.push(ot), | |
| c ? f.push(function() { | |
| for (var e = arguments.length, n = new Array(e), r = 0; r < e; r++) | |
| n[r] = arguments[r]; | |
| t.callRemote.apply(t, ["self", "invokeCallback", c].concat(n)) | |
| }) : f.push(ot), | |
| l[r]) | |
| return void (u = l)[r].apply(u, f) | |
| } | |
| C("framework", "[" + t.pageType + "] Page " + t.pagePath + " unhandled message", e.data) | |
| }; | |
| Array.isArray(n) ? n.forEach(r) : r(n) | |
| } | |
| }, | |
| invokeCallback: function(e) { | |
| if (!this.unloaded) { | |
| var t = this.callbacks; | |
| if (t) { | |
| if (e && t[e]) { | |
| for (var n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), a = 1; a < n; a++) | |
| r[a - 1] = arguments[a]; | |
| t[e].apply(t, r) | |
| } | |
| e % 2 == 0 && (e -= 1), | |
| delete t[e], | |
| delete t[e + 1] | |
| } | |
| } | |
| }, | |
| getRemoteObj: function(e, t) { | |
| for (var n = arguments.length, r = new Array(n > 2 ? n - 2 : 0), a = 2; a < n; a++) | |
| r[a - 2] = arguments[a]; | |
| var o, i; | |
| if (!this.unloaded) | |
| return "function" == typeof r[r.length - 2] ? (this.callbacks = this.callbacks || {}, | |
| o = this.getCallbackId() - 1, | |
| this.callbacks[o] = r[r.length - 2], | |
| i = o + 1, | |
| this.callbacks[i] = r[r.length - 1], | |
| r.pop(), | |
| r.pop()) : "function" == typeof r[r.length - 1] && (this.callbacks = this.callbacks || {}, | |
| o = this.getCallbackId() - 1, | |
| this.callbacks[o] = r[r.length - 1], | |
| i = o + 1, | |
| r.pop()), | |
| { | |
| caller: e, | |
| method: t, | |
| id: this.getId(), | |
| successCallback: o, | |
| errorCallback: i, | |
| args: r | |
| } | |
| }, | |
| callRemote: function() { | |
| var e = this.getRemoteObj.apply(this, arguments); | |
| this.isBatching ? this.pendingMessage.push(e) : this.postMessage(e) | |
| } | |
| } | |
| , ct = { | |
| updateNativeComponents: function(e) { | |
| var t = e.nativeComponents; | |
| if (t) { | |
| var n = this.getNativeComponents(); | |
| Object.keys(t).forEach(function(e) { | |
| var r = t[e]; | |
| if (r) { | |
| var o = n[e] = n[e] || {}; | |
| a()(o, r) | |
| } else | |
| n[e] && delete n[e] | |
| }) | |
| } | |
| }, | |
| getNativeComponents: function() { | |
| return this._nativeComponents = this._nativeComponents || {} | |
| }, | |
| fireNativeComponentEvent: function(e, t, n) { | |
| var r = this.getNativeComponents()[e]; | |
| if (r) { | |
| var o = r.events | |
| , i = void 0 === o ? {} : o | |
| , c = r.dataset | |
| , s = r.tagName | |
| , l = r.offsetLeft | |
| , u = r.offsetTop; | |
| if (i[t]) { | |
| var f, p, d = i[t], h = d[0], g = d[1], v = d[2]; | |
| if (1 === g ? p = this.publicInstance : 2 === g && (p = this.getComponentInstance(v)) && (p = p.publicInstance), | |
| p && (f = p[h]), | |
| f) { | |
| var m = { | |
| id: e, | |
| tagName: s, | |
| offsetLeft: l, | |
| offsetTop: u, | |
| dataset: c | |
| }; | |
| this.batchedUpdates(function() { | |
| f.call(p, a()({ | |
| type: t, | |
| timeStamp: Date.now(), | |
| target: a()({}, m, { | |
| targetDataset: c | |
| }), | |
| currentTarget: m | |
| }, n)) | |
| }) | |
| } else | |
| console.warn("can not find native component method", r, p, v, g, n) | |
| } | |
| } else | |
| console.warn("can not find native component", e, t, n) | |
| } | |
| } | |
| , st = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , lt = ["onShareAppMessage", "onReachBottom", "onPageScroll"]; | |
| function ut(e) { | |
| var t = e.port | |
| , n = e.id | |
| , r = e.query | |
| , o = e.pagePath; | |
| if (!(this instanceof ut)) | |
| return new ut({ | |
| port: t, | |
| id: n, | |
| query: r, | |
| pagePath: o | |
| }); | |
| this.$startTime = Date.now(), | |
| this.onMessage = this.onMessage.bind(this), | |
| this.componentInstances = {}, | |
| t && this.setPort(t); | |
| var c = D.pagesConfig[o].user || {} | |
| , s = c.events | |
| , l = void 0 === s ? {} : s | |
| , u = st(c, ["events"]); | |
| i()(this, { | |
| pagePath: o, | |
| id: n, | |
| events: l, | |
| bridge: D.bridge, | |
| pendingData: [], | |
| pendingMessage: [], | |
| pendingCallbacks: [], | |
| initialCallbacks: [], | |
| self: this, | |
| query: r, | |
| pageType: "WORKER" | |
| }); | |
| var f = this | |
| , p = this.publicInstance = Object.create(a()({ | |
| route: o | |
| }, u), { | |
| setData: { | |
| value: function(e, t) { | |
| return f.setData(Ye, e, t) | |
| } | |
| }, | |
| $spliceData: { | |
| value: function(e, t) { | |
| return f.setData(Ze, e, t) | |
| } | |
| }, | |
| $getComponentBy: { | |
| value: this.getComponentBy.bind(this) | |
| } | |
| }); | |
| "function" == typeof p.data && (p.data = p.data() || {}) | |
| } | |
| var ft = {}; | |
| ut.prototype = a()({}, it, ct, { | |
| load: function() { | |
| this.port && (this.$loadTime || (this.$loadTime = Date.now(), | |
| this._disableRemoteData = !0, | |
| k("framework: page onLoad", this.pagePath), | |
| x.emit("pageLoad", { | |
| page: this | |
| }), | |
| pe(this.publicInstance.onLoad, this.publicInstance, this.query), | |
| Ie().shown && this.show(), | |
| this._fromTabItemTap && this.onTabItemTap(this.tabProps), | |
| this._disableRemoteData = !1), | |
| this.startRender()) | |
| }, | |
| fireEvent: function(e) { | |
| var t = this.getEventHandle(e); | |
| if (t) { | |
| for (var n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), a = 1; a < n; a++) | |
| r[a - 1] = arguments[a]; | |
| return t.apply(this.publicInstance, r) | |
| } | |
| }, | |
| getEventHandle: function(e) { | |
| var t = this.events; | |
| if ("object" == typeof t && "function" == typeof t[e]) | |
| return t[e] | |
| }, | |
| refresh: function() { | |
| this.unmountAllComponents(), | |
| this.startRender(!0) | |
| }, | |
| show: function() { | |
| this.unloaded || (this.$loadTime ? this.shown || (this.shown = !0, | |
| x.emit("enterPage", { | |
| page: this | |
| }), | |
| this.executeUserMethod("onShow"), | |
| k("framework: page onShow", this.pagePath)) : this.load()) | |
| }, | |
| pullDownRefresh: function(e) { | |
| x.emit("pullDownRefresh", { | |
| page: this | |
| }), | |
| this.executeUserMethod("onPullDownRefresh", [e]) | |
| }, | |
| hide: function() { | |
| this.unloaded || this.$loadTime && this.shown && (this.shown = !1, | |
| x.emit("leavePage", { | |
| page: this | |
| }), | |
| x.emit("pageHide", { | |
| page: this | |
| }), | |
| this.executeUserMethod("onHide"), | |
| k("framework: page onHide", this.pagePath)) | |
| }, | |
| unload: function() { | |
| k("framework: page onUnload", this.pagePath), | |
| !this.unloaded && this.$loadTime ? (this.unloaded = !0, | |
| this.clearPort(), | |
| this.unmountAllComponents(), | |
| pe(this.publicInstance.onUnload, this.publicInstance), | |
| x.emit("leavePage", { | |
| page: this | |
| }), | |
| x.emit("pageUnload", { | |
| page: this | |
| })) : x.emit("pageUnload", { | |
| page: this | |
| }) | |
| }, | |
| unmountAllComponents: function() { | |
| var e = this.componentInstances; | |
| this.componentInstances = {}, | |
| p(e).forEach(function(t) { | |
| e[t].unload() | |
| }) | |
| }, | |
| isLoaded: function() { | |
| return !!this.$loadTime && !this.unloaded | |
| }, | |
| startRender: function(e) { | |
| var t = this.publicInstance | |
| , n = this.id | |
| , r = {}; | |
| lt.forEach(function(e) { | |
| var n = t[e]; | |
| "function" == typeof n && n !== function() {} | |
| && (r[e] = !0) | |
| }); | |
| var o = {}; | |
| (function(e) { | |
| if (e in ft) | |
| return ft[e]; | |
| var t = [] | |
| , n = D.pagesConfig[e].system.usingComponents; | |
| return n && (p(n).forEach(function(e) { | |
| var r = xe(n[e]).getAllComponents(); | |
| Me(t, r) | |
| }), | |
| ft[e] = t), | |
| t | |
| } | |
| )(this.pagePath).forEach(function(e) { | |
| var t = xe(e); | |
| o[e] = { | |
| props: t.props, | |
| data: a()({}, t.data) | |
| } | |
| }), | |
| this.callRemote("self", "startRender", { | |
| id: n, | |
| isRefresh: e, | |
| publicInstance: r, | |
| componentsConfig: o, | |
| data: a()({}, t.data) | |
| }) | |
| }, | |
| getViewId: function() { | |
| return this.publicInstance.$viewId | |
| }, | |
| setViewId: function(e) { | |
| this.publicInstance.$viewId = e | |
| }, | |
| getComponentInstance: function(e) { | |
| return "1" === String(e) ? this : this.componentInstances[e] | |
| }, | |
| getComponentBy: function(e, t) { | |
| void 0 === t && (t = {}); | |
| var n = [] | |
| , r = this.componentInstances; | |
| if (r) | |
| for (var a = p(r), o = 0; o < a.length; o++) { | |
| var i = r[a[o]].publicInstance; | |
| if (e(i) && (n.push(i), | |
| t.returnOnFirstMatch)) | |
| return n | |
| } | |
| return n | |
| }, | |
| triggerComponentEvent: function(e, t, n) { | |
| var r = this.getComponentInstance(e); | |
| r && this.batchedUpdates(function() { | |
| pe(r.publicInstance[t], r.publicInstance, n) | |
| }) | |
| }, | |
| onTabItemTap: function(e) { | |
| this.executeUserMethod("onTabItemTap", [e]) | |
| }, | |
| unmountComponents: function(e) { | |
| var t = this.componentInstances; | |
| e.forEach(function(e) { | |
| t[e] && (t[e].unload(), | |
| delete t[e]) | |
| }) | |
| }, | |
| updateComponents: function(e) { | |
| var t = this | |
| , n = this.componentInstances | |
| , r = e.m || [] | |
| , a = e.u || []; | |
| r.forEach(function(e) { | |
| var r = e.i; | |
| if (n[r]) | |
| n[r].setComponentConfig(e); | |
| else if (e.s) { | |
| var a = xe(e.s); | |
| n[r] = new a(t,r,e), | |
| n[r].ready() | |
| } | |
| }); | |
| var o = a.concat().reverse(); | |
| this.unmountComponents(o) | |
| }, | |
| ready: function(e) { | |
| var t = this; | |
| this.unloaded || this.readied || this.batchedUpdates(function() { | |
| t.readied = !0, | |
| t.update(e), | |
| x.emit("pageReady", { | |
| page: t | |
| }), | |
| t.initialCallbacks.forEach(function(e) { | |
| return e() | |
| }), | |
| t.executeUserMethod("onReady"), | |
| k("framework: page onReady", t.pagePath) | |
| }) | |
| }, | |
| update: function(e) { | |
| var t = this; | |
| e && this.batchedUpdates(function() { | |
| t.updateComponents(e), | |
| t.updateNativeComponents(e) | |
| }) | |
| }, | |
| postMessage: function(e) { | |
| !this.unloaded && this.port && (C("framework", "[WORKER] Page " + this.pagePath + " postMessage", e), | |
| this.port.postMessage(JSON.stringify({ | |
| data: e | |
| }))) | |
| }, | |
| console: function(e) { | |
| function t(t) { | |
| return e.apply(this, arguments) | |
| } | |
| return t.toString = function() { | |
| return e.toString() | |
| } | |
| , | |
| t | |
| }(function(e) { | |
| console[e].apply(console, [].slice.call(arguments, 1, -2)) | |
| }), | |
| clearPort: function() { | |
| this.port && (this.port.onmessage = null, | |
| this.port = null) | |
| }, | |
| setPort: function(e) { | |
| this.port !== e && (this.clearPort(), | |
| this.port = e, | |
| e.onmessage = this.onMessage) | |
| }, | |
| setData: function(e, t, n) { | |
| if (this.unloaded) | |
| console.log('setData(...) can only update a loaded page. This usually means you called setData() on a unloaded page. Please check the code for the "' + this.pagePath + '" page.'); | |
| else if (t) { | |
| this.publicInstance.data = e(this.publicInstance.data, t); | |
| var r, a = n || {}; | |
| if ("function" == typeof n && (a = { | |
| complete: r = n | |
| }), | |
| this._disableRemoteData) | |
| r && this.initialCallbacks.push(r); | |
| else { | |
| var o, i = ((o = {})[Ue] = 1, | |
| o[Fe] = t, | |
| o[$e] = Qe(e), | |
| o); | |
| this.setRemoteData(i, a) | |
| } | |
| } | |
| }, | |
| executeUserMethod: function(e, t) { | |
| var n = this; | |
| void 0 === t && (t = []), | |
| this.batchedUpdates(function() { | |
| pe.apply(void 0, [n.publicInstance[e], n.publicInstance].concat(t)) | |
| }) | |
| }, | |
| onPageScroll: function() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| this.executeUserMethod("onPageScroll", t) | |
| }, | |
| onReachBottom: function() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| this.executeUserMethod("onReachBottom", t) | |
| }, | |
| batchedUpdates: function(e) { | |
| if (this.isBatching) | |
| return e(); | |
| this.isBatching = !0; | |
| try { | |
| e() | |
| } finally { | |
| this.isBatching = !1 | |
| } | |
| this.flushToRender() | |
| }, | |
| onRenderEvent: function(e) { | |
| if (this.publicInstance[e]) { | |
| for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) | |
| n[r - 1] = arguments[r]; | |
| this.executeUserMethod(e, n) | |
| } else | |
| console.warn(this.getPagePath() + ": can not find event handle method: " + e) | |
| }, | |
| setRemoteData: function(e, t) { | |
| var n = (void 0 === t ? {} : t).complete; | |
| this.pendingData.push(e), | |
| n && this.pendingCallbacks.push(n), | |
| this.isBatching || this.flushToRender() | |
| }, | |
| flushToRender: function() { | |
| if (!this.unloaded && (this.pendingData.length || this.pendingMessage.length)) { | |
| var e, t = this.pendingData, n = this.pendingCallbacks, r = this.pendingMessage; | |
| if (t.length) | |
| this.pendingData = [], | |
| this.pendingCallbacks = [], | |
| n.length && (e = function() { | |
| n.forEach(function(e) { | |
| return e() | |
| }) | |
| } | |
| ), | |
| r.unshift(this.getRemoteObj("self", "receiveData", t, e)); | |
| this.pendingMessage = [], | |
| this.postMessage(r) | |
| } | |
| } | |
| }); | |
| var pt = function(e) { | |
| void 0 === e && (e = {}); | |
| var t = D.tabsConfig | |
| , n = D.currentPageConfig | |
| , r = D.pagesConfig; | |
| if (n) { | |
| var a = n.pagePath | |
| , o = n.tabIndex; | |
| o && (t[a] = o), | |
| r[a] = { | |
| system: n, | |
| user: e | |
| }, | |
| B.registerComponent(a, function() { | |
| return ut | |
| }) | |
| } else | |
| console.warn("invalid Page usage!") | |
| }; | |
| function dt(e) { | |
| this.config = a()({}, e), | |
| this.config.duration = this.config.duration || 400, | |
| this.config.timeFunction = this.config.timeFunction || "linear", | |
| this.config.transformOrigin = this.config.transformOrigin || "50% 50% 0", | |
| this.animations = [], | |
| this.currentAnimation = [] | |
| } | |
| var ht = dt.prototype = { | |
| step: function(e) { | |
| return this.animations.push({ | |
| config: a()({}, this.config, e), | |
| animation: this.currentAnimation | |
| }), | |
| this.currentAnimation = [], | |
| this | |
| }, | |
| export: function() { | |
| var e = this.animations; | |
| return this.animations = [], | |
| e | |
| } | |
| }; | |
| ["opacity", "backgroundColor", "width", "height", "top", "left", "bottom", "right", "rotate", "rotateX", "rotateY", "rotateZ", "rotate3d", "skew", "skewX", "skewY", "scale", "scaleX", "scaleY", "scaleZ", "scale3d", "translate", "translateX", "translateY", "translateZ", "translate3d"].forEach(function(e) { | |
| ht[e] = function() { | |
| for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++) | |
| n[r] = arguments[r]; | |
| return this.currentAnimation.push([e, n]), | |
| this | |
| } | |
| }); | |
| var gt = dt; | |
| function vt(e, t) { | |
| void 0 === t && (t = {}); | |
| var n = t | |
| , r = n.homepage | |
| , o = void 0 !== r && r | |
| , i = n.args | |
| , c = void 0 === i ? [] : i | |
| , s = n.caller | |
| , l = void 0 === s ? "bridge" : s | |
| , u = ye() | |
| , f = t.page || (o ? u && u[0] : be()); | |
| if (f) { | |
| var p = [l, e].concat(c) | |
| , d = p[p.length - 1]; | |
| if (d) | |
| if ("object" == typeof d) { | |
| var h = d | |
| , g = h.success | |
| , v = h.fail | |
| , m = h.complete; | |
| (g || v || m) && (p[p.length - 1] = d = a()({}, d), | |
| delete d.success, | |
| delete d.fail, | |
| delete d.complete, | |
| p.push(function() { | |
| g && g.apply(void 0, arguments), | |
| m && m.apply(void 0, arguments) | |
| }), | |
| p.push(function() { | |
| v && v.apply(void 0, arguments), | |
| m && m.apply(void 0, arguments) | |
| })) | |
| } else | |
| "function" == typeof d && p.push(d); | |
| f.callRemote.apply(f, p) | |
| } else | |
| console.warn("Can not getCurrentPage for callBridge.worker!", e, t) | |
| } | |
| function mt(e) { | |
| var t = e.indexOf("#"); | |
| return -1 !== t && (e = e.slice(0, t)), | |
| -1 !== (t = e.indexOf("?")) && (e = e.slice(0, t)), | |
| e | |
| } | |
| function yt(e) { | |
| var t = g().url; | |
| return !e || !t || mt(t) === mt(e) | |
| } | |
| self; | |
| function bt(e, t) { | |
| void 0 === e && (e = {}); | |
| var n = e | |
| , r = n.complete | |
| , a = n.success | |
| , o = n.fail; | |
| t && t.error ? o && o(t) : a && a(t), | |
| r && r(t) | |
| } | |
| var wt, It = self; | |
| function Pt(e) { | |
| if (wt || g().enablePolyfillWorker) | |
| return e(wt); | |
| It.registration.pushManager.getSubscription().then(function(t) { | |
| t && t.applicationId ? (wt = t.applicationId, | |
| e(wt)) : setTimeout(function() { | |
| Pt(e) | |
| }, 150) | |
| }).catch(function(e) { | |
| T(e) | |
| }) | |
| } | |
| function kt(e) { | |
| return null == e ? "^" + String(e) : "string" == typeof e ? "$" + e : "number" == typeof e ? "n" + e : "boolean" == typeof e ? "b" + e : null | |
| } | |
| function Ct() { | |
| this.clear() | |
| } | |
| Ct.prototype = { | |
| constructor: Ct, | |
| _getEntry: function(e) { | |
| for (var t = this._entries, n = 0, r = t.length; n < r; n++) | |
| if (t[n][0] === e) | |
| return { | |
| index: n, | |
| value: t[n] | |
| } | |
| }, | |
| get: function(e) { | |
| var t = kt(e); | |
| if (null !== t) | |
| return this._store[t]; | |
| var n = this._getEntry(e); | |
| return n && n.value[1] | |
| }, | |
| entries: function() { | |
| var e = this | |
| , t = []; | |
| return Object.keys(this._store).forEach(function(n) { | |
| t.push([n, e._store[n]]) | |
| }), | |
| t.concat(this._entries) | |
| }, | |
| forEach: function(e, t) { | |
| var n = this; | |
| this.entries().forEach(function(r) { | |
| e.call(t, r[1], r[0], n) | |
| }) | |
| }, | |
| set: function(e, t) { | |
| var n = kt(e); | |
| if (null === n) { | |
| var r = this._getEntry(e); | |
| r ? r.value[1] = t : this._entries.push([e, t]) | |
| } else | |
| this._store[n] = t | |
| }, | |
| delete: function(e) { | |
| var t = kt(e); | |
| if (null === t) { | |
| var n = this._getEntry(e); | |
| n && this._entries.splice(n.index, 1) | |
| } else | |
| delete this._store[t] | |
| }, | |
| clear: function() { | |
| this._store = {}, | |
| this._entries = [] | |
| } | |
| }; | |
| var At = Ct | |
| , Tt = self | |
| , St = !!y.ide | |
| , Ot = "ios" === y.browser | |
| , Et = !Ot | |
| , xt = new E; | |
| function Mt() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| C.apply(void 0, ["framework"].concat(t)) | |
| } | |
| function _t() {} | |
| function Bt(e) { | |
| try { | |
| e = JSON.parse(e) | |
| } catch (e) {} | |
| return e | |
| } | |
| function Dt(e) { | |
| return void 0 === e | |
| } | |
| function jt(e) { | |
| return e && "object" == typeof e | |
| } | |
| function Rt(e) { | |
| return "function" == typeof e | |
| } | |
| var Lt = 0 | |
| , Ut = {}; | |
| var Nt = { | |
| error: 1, | |
| errorMessage: "malformed uri arguments" | |
| }; | |
| function Ft(e, t) { | |
| Mt("receive push data", e); | |
| var n = { | |
| param: e.param, | |
| viewId: e.viewId, | |
| preventDefault: t | |
| } | |
| , r = e && e.requestId; | |
| e && e.func ? (n.eventName = e.func, | |
| qt(n)) : e && e.beforeunload ? (n.eventName = "beforeunload", | |
| n.param = {}, | |
| qt(n)) : null != r ? Rt(Ut[r += ""]) ? (Ut[r](e.param), | |
| delete Ut[r]) : Mt("unknown requestId", e) : console.error("unknown push data", e) | |
| } | |
| function $t(e) { | |
| return "_$" + e | |
| } | |
| function Vt(e) { | |
| return "_data_$" + e | |
| } | |
| function Wt(e) { | |
| return e && "object" == typeof e && "NBPageUrl"in e && delete (e = a()({}, e)).NBPageUrl, | |
| e | |
| } | |
| function qt(e) { | |
| var t = e.eventName | |
| , n = e.preventDefault | |
| , r = $t(t) | |
| , o = Vt(t) | |
| , i = xt.listenerCount(t) | |
| , c = xt.listenerCount(r) | |
| , s = xt.listenerCount(o); | |
| if (c || i || s) { | |
| var l = { | |
| name: t, | |
| type: t, | |
| preventDefault: n | |
| }; | |
| if (jt(e.param) && Et ? a()(l, e.param) : l.data = e.param, | |
| l.viewId = e.viewId, | |
| xt.emit(t, l), | |
| c) { | |
| var u = a()({}, l); | |
| delete u.viewId, | |
| u.data = Wt(u.data), | |
| xt.emit(r, u) | |
| } | |
| if (s) { | |
| var f = Wt(l.data); | |
| xt.emit(o, f) | |
| } | |
| } | |
| } | |
| var zt = { | |
| call: X || function(e, t, n) { | |
| var r = "console" === g().apiMessageChannel; | |
| !function(e, t, n) { | |
| Pt(function(r) { | |
| var o = ++Lt | |
| , i = { | |
| data: e.options, | |
| requestId: o, | |
| applicationId: r | |
| }; | |
| e.apiName && (i.action = e.apiName); | |
| var c, s = JSON.stringify(i); | |
| if (n) | |
| try { | |
| var l = encodeURIComponent(s); | |
| c = "https://alipay.kylinBridge/?data=" + l | |
| } catch (n) { | |
| return e.callback && e.callback(a()({}, Nt)), | |
| T(n), | |
| t("", "") | |
| } | |
| e.callback && (Ut[o + ""] = e.callback), | |
| t(c, s) | |
| }) | |
| }({ | |
| apiName: e, | |
| options: t, | |
| callback: n | |
| }, function(e, t) { | |
| r ? console.log("kylinBridge://" + t) : e && Y(e) | |
| }, !r) | |
| } | |
| , | |
| callSync: J || function(e, t) { | |
| var n = null | |
| , r = function(e) { | |
| var t = "_sw_jsonp_" + ++Lt | |
| , n = { | |
| action: e.apiName, | |
| data: e.options, | |
| applicationId: wt, | |
| callback: t | |
| } | |
| , r = e.callback; | |
| Tt[t] = function(e) { | |
| delete Tt[t], | |
| Rt(r) && r(e) | |
| } | |
| ; | |
| try { | |
| var o = encodeURIComponent(JSON.stringify(n)); | |
| return "https://alipay.kylinbridge/?data=" + o | |
| } catch (e) { | |
| Tt[t](a()({}, Nt)), | |
| T(e) | |
| } | |
| return "" | |
| }({ | |
| apiName: e, | |
| options: t, | |
| callback: function(e) { | |
| n = e | |
| } | |
| }); | |
| return r && function(e) { | |
| try { | |
| K(e) | |
| } catch (t) { | |
| console.error(t, e) | |
| } | |
| }(r), | |
| "string" == typeof n ? Bt(n) : n | |
| } | |
| }; | |
| St && (window.callRender = vt), | |
| St || (Ot || g().enablePolyfillWorker) && Tt.document ? Tt.document.addEventListener("push", function(e) { | |
| Ft(e.data, e.preventDefault ? function() { | |
| e.preventDefault() | |
| } | |
| : _t) | |
| }) : Tt.addEventListener("push", function(e) { | |
| var t = Bt(e.data.text()) || {} | |
| , n = _t | |
| , r = !1 | |
| , a = (t.param || {}).clientId; | |
| a && (n = function() { | |
| r = !0 | |
| } | |
| ), | |
| Ft(t, n), | |
| a && !r && Gt.callBridge("internalAPI", { | |
| method: "executeDefaultBehavior", | |
| param: { | |
| clientId: a | |
| } | |
| }) | |
| }); | |
| var Xt = {} | |
| , Jt = { | |
| popTo: 1, | |
| switchTab: 1, | |
| onAppPerfEvent: 1, | |
| pushWindow: 1, | |
| remoteLog: 1, | |
| reportData: 1 | |
| } | |
| , Gt = { | |
| injectAPI: function(e) { | |
| Xt = e | |
| }, | |
| getAPI: function() { | |
| return Xt | |
| }, | |
| emitUserEvent: function(e) { | |
| for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) | |
| n[r - 1] = arguments[r]; | |
| return xt.emit.apply(xt, [$t(e)].concat(n)) | |
| }, | |
| emitUserEventData: function(e) { | |
| for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) | |
| n[r - 1] = arguments[r]; | |
| return xt.emit.apply(xt, [Vt(e)].concat(n)) | |
| }, | |
| onUserEvent: function(e, t) { | |
| return xt.on($t(e), t) | |
| }, | |
| offUserEvent: function(e, t) { | |
| return xt.off($t(e), t) | |
| }, | |
| onUserEventData: function(e, t) { | |
| return xt.on(Vt(e), t) | |
| }, | |
| offUserEventData: function(e, t) { | |
| return xt.off(Vt(e), t) | |
| }, | |
| on: function() { | |
| return xt.on.apply(xt, arguments) | |
| }, | |
| off: function() { | |
| return xt.off.apply(xt, arguments) | |
| }, | |
| emit: function() { | |
| return xt.emit.apply(xt, arguments) | |
| }, | |
| callBridge: function(e, t, n) { | |
| Mt("callBridge", e, t); | |
| var r = Jt[e] ? void 0 : n; | |
| I("framework") && !Jt[e] && (r = function(r) { | |
| r && r.error ? Mt("callBridge error", e, t, r) : Mt("callBridge success", e, t, r), | |
| n && n(r) | |
| } | |
| ), | |
| zt.call(e, t, r) | |
| }, | |
| callBridgeSync: function(e, t) { | |
| Mt("callBridgeSync", e, t); | |
| var n = zt.callSync(e, t); | |
| return Mt("callBridgeSync return", e, t, n), | |
| n && n.error && Mt("callBridgeSync error:", e, t, n), | |
| n | |
| }, | |
| call: function() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| var r, a = t[0] + "", o = function(e) { | |
| var t = Xt[e]; | |
| return !t || !1 !== t.callback | |
| }(a), i = function(e) { | |
| return Ht("on", e) | |
| }(a), c = function(e) { | |
| return Ht("off", e) | |
| }(a); | |
| function s(e, n) { | |
| var s, l, u, f; | |
| s = t[1], | |
| Dt(l = t[2]) && Rt(s) && (l = s, | |
| s = {}), | |
| !jt(s) && t.length >= 2 && (s = {}), | |
| Dt(s) && (s = {}); | |
| var p = function(t) { | |
| "error"in t || "errorMessage"in t ? (n && n(t), | |
| u.fail && u.fail(t)) : (e && e(t), | |
| u.success && u.success(t)), | |
| u.complete && u.complete(t), | |
| l && l(t) | |
| } | |
| , d = Qt(a, s); | |
| if (d) | |
| return Mt("api call validate return", a, s, d), | |
| u = en(s), | |
| void p(d); | |
| var h = Zt(a, s, l) || {}; | |
| if (Mt("api call", a, s, h), | |
| r = function(e) { | |
| var t = e || {}; | |
| i && (t = function(e) { | |
| var t = {}; | |
| Dt(e.data) || (t = jt(t = e.data) ? t : { | |
| data: t | |
| }); | |
| return t | |
| }(t)), | |
| Mt("api call return" + ((t = an(t = nn(a, t, h, s))) && t.error ? " error" : ""), a, s, h, e, t), | |
| p(t) | |
| } | |
| , | |
| u = en(h), | |
| Rt(f = tn(a))) | |
| f(h, r, s, l); | |
| else if (i) | |
| on(i, rn(a, "start")), | |
| function(e, t, n) { | |
| var r = Kt[e]; | |
| r || (r = Kt[e] = new At); | |
| r.get(t) || r.set(t, n) | |
| }(i, l, r), | |
| Gt.onUserEvent(i, r); | |
| else if (c) | |
| !function(e, t) { | |
| var n = Kt[e]; | |
| if (n) | |
| if (t) { | |
| var r = n.get(t); | |
| r && (Gt.offUserEvent(e, r), | |
| n.delete(t)) | |
| } else | |
| n.forEach(function(t) { | |
| Gt.offUserEvent(e, t) | |
| }), | |
| n.clear() | |
| }(c, l), | |
| on(c, rn(a, "end")); | |
| else { | |
| var g = Yt(a); | |
| o ? zt.call(g, h, r) : zt.call(g, h) | |
| } | |
| } | |
| return !o || (i || c) ? s() : new Promise(s) | |
| }, | |
| callSync: function() { | |
| var e, t, n; | |
| e = (arguments.length <= 0 ? void 0 : arguments[0]) + "", | |
| !jt(t = arguments.length <= 1 ? void 0 : arguments[1]) && arguments.length >= 2 && (t = {}), | |
| Dt(t) && (t = {}); | |
| var r = Qt(e, t); | |
| if (r) | |
| return Mt("api callSync validate return", e, t, r), | |
| r; | |
| var a, o, i = Zt(e, t) || {}; | |
| return Rt(n = tn(e)) ? a = n(i, t) : jt(a = zt.callSync(Yt(e), i)) && (o = an(o = nn(e, a, i, t))), | |
| Mt("api callSync return" + ((o = o || a) && o.error ? " error" : ""), e, t, i, a, o), | |
| o | |
| } | |
| } | |
| , Kt = {}; | |
| function Ht(e, t) { | |
| var n = Xt[t] | |
| , r = "" | |
| , a = "off" === e ? /^off([A-Z])(\w+)/ : /^on([A-Z])(\w+)/; | |
| return n && a.test(t) && (t = t.match(a), | |
| !(r = n.m) && t[1] && t[2] && (r = t[1].toLowerCase() + t[2])), | |
| r | |
| } | |
| function Yt(e) { | |
| var t = Xt[e]; | |
| return t && t.m ? t.m : e | |
| } | |
| function Zt(e, t, n) { | |
| var r, o = Xt[e], i = t; | |
| return i && i.page && (r = (i = a()({}, i)).viewId = i.page.$viewId, | |
| delete i.page), | |
| o && o.b && (i = a()({}, i), | |
| i = o.b(i, n) || i), | |
| !r || !i || "viewId"in i || (i.viewId = r), | |
| i | |
| } | |
| function Qt(e, t) { | |
| var n = Xt[e]; | |
| return !(!n || !n.v) && n.v(t) | |
| } | |
| function en(e) { | |
| var t = {}; | |
| return Rt((e = e || {}).success) && (t.success = e.success, | |
| delete e.success), | |
| Rt(e.fail) && (t.fail = e.fail, | |
| delete e.fail), | |
| Rt(e.complete) && (t.complete = e.complete, | |
| delete e.complete), | |
| t | |
| } | |
| function tn(e) { | |
| var t = Xt[e]; | |
| return !(!t || !t.d) && t.d | |
| } | |
| function nn(e, t, n, r) { | |
| var o = Xt[e]; | |
| if (o && o.a) { | |
| var i = a()({}, t); | |
| return o.a(i, n, r) || i | |
| } | |
| return t | |
| } | |
| function rn(e, t) { | |
| var n = Xt[e]; | |
| return !(!n || !n[t]) && n[t] | |
| } | |
| function an(e) { | |
| return "string" == typeof e.error && (e.error = parseInt(e.error, 10)), | |
| 0 === e.error && (delete e.error, | |
| delete e.errorMessage), | |
| e | |
| } | |
| function on(e, t) { | |
| (Kt[e] || []).length || Rt(t) && t() | |
| } | |
| var cn = Gt; | |
| var sn = function(e) { | |
| var t = e.callBridge; | |
| function n(e, n) { | |
| var r = e.pagePath; | |
| t("switchTab", { | |
| tag: r, | |
| recreate: n | |
| }) | |
| } | |
| function r(e, n) { | |
| var r = e.url | |
| , a = e.pagePath | |
| , o = e.viewId; | |
| t("pushWindow", { | |
| url: r, | |
| viewId: o, | |
| launchParamsTag: a, | |
| param: n | |
| }) | |
| } | |
| return { | |
| reLaunch: function(e) { | |
| Ie().reLaunch({ | |
| url: e.url | |
| }, { | |
| pushWindow: function(e) { | |
| return r(e, { | |
| closeAllWindow: !0, | |
| animationType: "none" | |
| }) | |
| }, | |
| switchTab: function(e) { | |
| return n(e, !0) | |
| } | |
| }), | |
| bt(e) | |
| }, | |
| navigateTo: function(e) { | |
| Ie().navigateTo({ | |
| url: e.url, | |
| viewId: e.viewId | |
| }, { | |
| pushWindow: r | |
| }), | |
| bt(e) | |
| }, | |
| switchTab: function(e) { | |
| Ie().switchTab({ | |
| url: e.url | |
| }, { | |
| doSwitch: n | |
| }), | |
| bt(e) | |
| }, | |
| redirectTo: function(e) { | |
| Ie().redirectTo({ | |
| url: e.url | |
| }, { | |
| pushWindow: function(e) { | |
| r(e, { | |
| closeCurrentWindow: !0, | |
| animationType: "none" | |
| }) | |
| } | |
| }), | |
| bt(e) | |
| }, | |
| navigateBack: function(e) { | |
| void 0 === e && (e = {}); | |
| var n = Ie().navigateBack({ | |
| delta: e.delta | |
| }, function(e) { | |
| var n = e.delta; | |
| t("popTo", { | |
| index: -n | |
| }) | |
| }); | |
| n ? bt(e, { | |
| error: n | |
| }) : bt(e) | |
| } | |
| } | |
| }(cn) | |
| , ln = a()({ | |
| renderTarget: "web", | |
| on: function(e, t) { | |
| return cn.onUserEvent(e, t), | |
| { | |
| remove: function() { | |
| cn.offUserEvent(e, t) | |
| } | |
| } | |
| }, | |
| emit: function() { | |
| cn.emitUserEvent.apply(cn, arguments) | |
| }, | |
| call: function() { | |
| cn.callBridge.apply(cn, arguments) | |
| } | |
| }, sn, { | |
| postMessage: function(e) { | |
| vt("fireMessage", { | |
| args: [e] | |
| }) | |
| }, | |
| createAnimation: function(e) { | |
| return void 0 === e && (e = {}), | |
| new gt(e) | |
| }, | |
| pageScrollTo: function() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| vt("pageScrollTo", { | |
| args: t | |
| }) | |
| } | |
| }); | |
| !function(e, t) { | |
| if (!g().appxCli) { | |
| var n = self.appXAppJson | |
| , r = n && n.app.preloadRule; | |
| r && x.addListener("pageLoad", function(e) { | |
| var n = e.page.getPagePath() | |
| , a = r[n]; | |
| a && t.call("loadSubPackage", a) | |
| }) | |
| } | |
| function o(e, t) { | |
| var n = Ie(); | |
| if (n) | |
| return n; | |
| console.error("Can not find app when " + e + "!", t) | |
| } | |
| e.on("appResume", function(n) { | |
| var r = o("appResume", n); | |
| if (r) { | |
| var a, i = n.data, c = i.query, s = i.page, l = i.referrerInfo, u = i.shouldNotReLaunch, p = i.NBPageUrl, d = {}; | |
| if (s) { | |
| "/" === s.charAt(0) && (s = s.slice(1)), | |
| a = s; | |
| var h = s.indexOf("?"); | |
| -1 !== h && (a = s.slice(0, h)), | |
| d.path = a, | |
| D.pagesConfig[a] || (e.call("toast", { | |
| content: "页面已失效!", | |
| type: "exception" | |
| }), | |
| T(new Error("Page " + a + " Not Found when appResume")), | |
| c = null, | |
| s = null, | |
| d = {}) | |
| } | |
| c && (c = f.a.parse(c), | |
| d.query = c), | |
| l && (d.referrerInfo = JSON.parse(l)), | |
| d.scene = ke(n.data), | |
| r.show(d, yt(p)), | |
| u ? r.clearAllPages() : d.path && ("/" !== s.charAt(0) && (s = "/" + s), | |
| t.reLaunch({ | |
| url: s | |
| })) | |
| } | |
| }), | |
| e.on("appPause", function(e) { | |
| var t = yt(e.data.NBPageUrl) | |
| , n = o("appPause", e); | |
| n && n.hide(t) | |
| }), | |
| e.on("beforeDestroy", function(e) { | |
| var t = e.data.NBPageUrl; | |
| if (yt(t)) { | |
| var n = o("beforeDestroy", e); | |
| n && n.destroyPageByUrl(t) | |
| } | |
| }), | |
| e.on("pagePause", function(e) { | |
| var t = e.data.NBPageUrl; | |
| if (yt(t)) { | |
| var n = o("pagePause", e); | |
| n && n.pausePageByUrl(t) | |
| } | |
| }), | |
| e.on("pageResume", function(e) { | |
| var t = e.data.NBPageUrl; | |
| if (yt(t)) { | |
| var n = o("pageResume", e); | |
| n && n.resumePageByUrl(t) | |
| } | |
| }), | |
| e.on("tabClick", function(e) { | |
| var t = e.data | |
| , n = t.tag | |
| , r = t.from | |
| , i = void 0 === r ? "user" : r | |
| , c = t.text | |
| , s = t.index | |
| , l = o("tabClick", e); | |
| if (l) { | |
| var u, f = { | |
| from: i, | |
| pagePath: n, | |
| text: c, | |
| index: s | |
| }, p = l.getCurrentPageImpl(); | |
| e.preventDefault && p && p.getEventHandle("beforeTabItemTap") && p.fireEvent("beforeTabItemTap", a()({}, f, { | |
| preventDefault: function() { | |
| u = !0, | |
| e.preventDefault() | |
| } | |
| })), | |
| u || l.switchTab(a()({ | |
| url: "/" + n | |
| }, f)) | |
| } | |
| }) | |
| }(cn, ln), | |
| D.bridge = ln; | |
| var un = ln; | |
| var fn = navigator.userAgent || navigator.swuserAgent | |
| , pn = fn.match(/AlipayClient\/(\d+\.\d+\.\d+)/) | |
| , dn = fn.match(/UCBS\/(\d+\.\d+)/) | |
| , hn = pn && pn[1] || "100.0.0" | |
| , gn = (dn && dn[1], | |
| fn.indexOf("Android") > -1) | |
| , vn = !!fn.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) | |
| , mn = fn.indexOf("AlipayIDE") > -1 | |
| , yn = "1.13.0" | |
| , bn = {} | |
| , wn = {} | |
| , In = !(!dn || !dn[1]) || vn; | |
| function Pn(e) { | |
| if (wn[e]) | |
| return wn[e]; | |
| for (var t = [], n = e.split("."), r = 0; r < n.length; r++) | |
| t.push(parseInt(n[r], 10)); | |
| return wn[e] = t, | |
| t | |
| } | |
| function kn(e, t) { | |
| if (e && t) { | |
| var n = e + "__" + t; | |
| if (n in bn) | |
| return bn[n]; | |
| e = Pn(e), | |
| t = Pn(t); | |
| for (var r, a, o = 0; o < e.length; o++) { | |
| if ((r = t[o] || 0) > (a = e[o] || 0)) { | |
| bn[n] = -1; | |
| break | |
| } | |
| if (r < a) { | |
| bn[n] = 1; | |
| break | |
| } | |
| } | |
| return bn[n] = bn[n] || 0, | |
| bn[n] | |
| } | |
| return 0 | |
| } | |
| function Cn(e) { | |
| return kn(hn, e) | |
| } | |
| cn.callInternalAPI = function(e, t, n) { | |
| if (void 0 === t && (t = {}), | |
| g().isInternalApp) | |
| cn.callBridge(e, t, n); | |
| else { | |
| var r = { | |
| method: e, | |
| param: t | |
| }; | |
| "viewId"in t && (r.viewId = t.viewId), | |
| cn.callBridge("internalAPI", r, n) | |
| } | |
| } | |
| , | |
| cn.callInternalAPISync = function(e, t) { | |
| if (void 0 === t && (t = {}), | |
| g().isInternalApp) | |
| return cn.callBridgeSync(e, t); | |
| var n = { | |
| method: e, | |
| param: t | |
| }; | |
| return "viewId"in t && (n.viewId = t.viewId), | |
| cn.callBridgeSync("internalAPI", n) | |
| } | |
| ; | |
| var An = cn | |
| , Tn = self | |
| , Sn = !1; | |
| Tn.onerror = function(e, t, n, r, a) { | |
| void 0 === e && (e = ""), | |
| void 0 === t && (t = ""), | |
| void 0 === n && (n = 0), | |
| void 0 === r && (r = 0); | |
| var o = a || {} | |
| , i = [e, t, n, r, o]; | |
| try { | |
| var c = Ie(); | |
| c && c.error(e); | |
| try { | |
| (o.stack || "").split("\n").splice(0, 3) | |
| } catch (e) {} | |
| o.column, | |
| o.line, | |
| o.message, | |
| o.sourceURL | |
| } catch (e) { | |
| console.error("[WORKER] report catch error", e) | |
| } | |
| console.error("[WORKER] onerror", i) | |
| } | |
| , | |
| mn && (Tn.onerror = Tn.ideOnError), | |
| Tn.bootstrapApp = function(e) { | |
| var t = e.success; | |
| function n() { | |
| if (function() { | |
| var e = global; | |
| if ("undefined" != typeof Function) { | |
| var t = function() { | |
| if (arguments.length > 0 && "return this" === arguments[arguments.length - 1]) | |
| return function() { | |
| return n | |
| } | |
| } | |
| , n = {}; | |
| (t.prototype = Function.prototype).constructor = t, | |
| e.Function = t | |
| } | |
| var r = setTimeout | |
| , a = setInterval; | |
| e.setTimeout = function(e, t) { | |
| if ("function" == typeof e) | |
| return r(e, t) | |
| } | |
| , | |
| e.setInterval = function(e, t) { | |
| if ("function" == typeof e) | |
| return a(e, t) | |
| } | |
| }(), | |
| !mn && !vn && !g().enablePolyfillWorker) { | |
| var e = An.callInternalAPISync("getStartupParams") || {}; | |
| e.appId ? v(e) : console.error("callInternalAPISync getStartupParams error", e) | |
| } | |
| "DEBUG" !== g().nbsn && (G.importScripts = Z, | |
| H && (H.call = function(e) { | |
| if ("internalAPI" !== e) { | |
| for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) | |
| n[r - 1] = arguments[r]; | |
| return X.apply(void 0, [e].concat(n)) | |
| } | |
| } | |
| , | |
| J && (H.callSync = function(e) { | |
| if ("internalAPI" !== e) { | |
| for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), r = 1; r < t; r++) | |
| n[r - 1] = arguments[r]; | |
| return J.apply(void 0, [e].concat(n)) | |
| } | |
| } | |
| ))), | |
| t() | |
| } | |
| function r() { | |
| vn && Sn || (Sn = !0, | |
| n()) | |
| } | |
| if (vn || !g().isNotTinyProcess || g().enablePolyfillWorker) | |
| return r(); | |
| Ae = !1, | |
| Pt(function() { | |
| r(), | |
| Ae = !0, | |
| Te.forEach(Se), | |
| Te = [] | |
| }) | |
| } | |
| ; | |
| var On = p | |
| , En = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| }; | |
| var xn = {}; | |
| Cn("10.1.35") >= 0 && (An.onUserEventData("customPopMenuClicked", function(e) { | |
| void 0 === e && (e = {}); | |
| var t = e.index | |
| , n = En(e, ["index"]) | |
| , r = be(); | |
| r && r.publicInstance.onPopMenuClick && r.publicInstance.onPopMenuClick(a()({ | |
| index: Number(t) | |
| }, n)) | |
| }), | |
| xn = { | |
| setCustomPopMenu: { | |
| b: function(e) { | |
| var t = be(); | |
| e.viewId = t.getViewId() | |
| } | |
| } | |
| }); | |
| var Mn = window.ideMockAP | |
| , _n = a()({}, Mn) | |
| , Bn = a()({}, a()({ | |
| hideAddToDesktopMenu: { | |
| m: "hideOptionMenuItem", | |
| b: function(e) { | |
| e.scope = "single", | |
| e.name = "add2Desktop" | |
| } | |
| }, | |
| hideAllAddToDesktopMenu: { | |
| m: "hideOptionMenuItem", | |
| b: function(e) { | |
| e.scope = "all", | |
| e.name = "add2Desktop" | |
| } | |
| }, | |
| hideFavoriteMenu: { | |
| m: "hideOptionMenuItem", | |
| b: function(e) { | |
| e.scope = "single", | |
| e.name = "favorite" | |
| } | |
| }, | |
| hideAllFavoriteMenu: { | |
| m: "hideOptionMenuItem", | |
| b: function(e) { | |
| e.scope = "all", | |
| e.name = "favorite" | |
| } | |
| } | |
| }, xn)); | |
| An.injectAPI(Bn), | |
| On(Bn).forEach(function(e) { | |
| var t = Bn[e] | |
| , n = _n | |
| , r = t.ns | |
| , a = t.topNS | |
| , o = function(e) { | |
| return /\w+Sync$/.test(e) | |
| }(e) ? function() { | |
| for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++) | |
| n[r] = arguments[r]; | |
| return An.callSync.apply(null, [e].concat(n)) | |
| } | |
| : function() { | |
| for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++) | |
| n[r] = arguments[r]; | |
| return An.call.apply(null, [e].concat(n)) | |
| } | |
| ; | |
| r ? (n = n[r] = n[r] || {}, | |
| a && (_n[e] = o), | |
| n[e] = o) : _n[e] = o | |
| }); | |
| var Dn = _n; | |
| var jn = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| }; | |
| function Rn(e) { | |
| var t = this; | |
| a()(this, e), | |
| this.cameraRecordTimer = null, | |
| this.doTimeoutCallback = function() { | |
| t.cameraRecordTimer && (clearTimeout(t.cameraRecordTimer), | |
| t.cameraRecordTimer = null), | |
| t.timeoutCallback && t.timeoutCallback() | |
| } | |
| } | |
| function Ln() {} | |
| function Un(e, t) { | |
| var n, r = ["refComponents." + this.element, e]; | |
| if (t) { | |
| var a = t.success | |
| , o = t.fail | |
| , i = t.complete | |
| , c = jn(t, ["success", "fail", "complete"]); | |
| r.push(c), | |
| r.push(function(e) { | |
| a && a(e), | |
| i && i(e) | |
| }, function(e) { | |
| o && o(e), | |
| i && i(e) | |
| }) | |
| } | |
| (n = this.page).callRemote.apply(n, r) | |
| } | |
| var Nn = Rn.prototype = { | |
| startRecord: function(e) { | |
| var t = this | |
| , n = e || {} | |
| , r = n.success | |
| , o = void 0 === r ? Ln : r | |
| , i = n.fail | |
| , c = void 0 === i ? Ln : i | |
| , s = n.complete | |
| , l = void 0 === s ? Ln : s | |
| , u = n.timeoutCallback | |
| , f = void 0 === u ? Ln : u | |
| , p = jn(n, ["success", "fail", "complete", "timeoutCallback"]); | |
| this.timeoutCallback = f, | |
| clearTimeout(this.cameraRecordTimer), | |
| this.cameraRecordTimer = setTimeout(function() { | |
| t.doTimeoutCallback && t.doTimeoutCallback() | |
| }, 3e4), | |
| Un.call(this, "startRecord", a()({}, p || {}, { | |
| success: o, | |
| fail: c, | |
| complete: function() { | |
| t.cameraRecordTimer && (clearTimeout(t.cameraRecordTimer), | |
| t.cameraRecordTimer = null), | |
| l && l() | |
| } | |
| })) | |
| } | |
| }; | |
| ["takePhoto", "stopRecord"].forEach(function(e) { | |
| Nn[e] = function(t) { | |
| Un.call(this, e, t) | |
| } | |
| }); | |
| var Fn = Rn; | |
| function $n(e) { | |
| a()(this, e) | |
| } | |
| var Vn = $n.prototype = { | |
| getCenterLocation: function(e) { | |
| (function(e, t) { | |
| var n, r = ["refComponents." + this.element, e]; | |
| if (t) { | |
| var a = t.success | |
| , o = t.fail | |
| , i = t.complete; | |
| r.push(function(e) { | |
| a && a(e), | |
| i && i(e) | |
| }, function(e) { | |
| o && o(e), | |
| i && i(e) | |
| }) | |
| } | |
| (n = this.page).callRemote.apply(n, r) | |
| } | |
| ).call(this, "getCenterLocation", e) | |
| } | |
| }; | |
| ["setProps", "moveToLocation", "gestureEnable", "showsScale", "showsCompass", "showRoute", "clearRoute", "updateComponents"].forEach(function(e) { | |
| Vn[e] = function(t) { | |
| this.page.callRemote("refComponents." + this.element, e, t) | |
| } | |
| }); | |
| var Wn = $n | |
| , qn = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| }; | |
| function zn(e) { | |
| a()(this, e) | |
| } | |
| var Xn = zn.prototype = {}; | |
| function Jn() {} | |
| ["play", "stop", "mute", "pause", "resume", "requestFullScreen", "exitFullScreen"].forEach(function(e) { | |
| Xn[e] = function(t) { | |
| var n = t || {} | |
| , r = n.success | |
| , o = void 0 === r ? Jn : r | |
| , i = n.fail | |
| , c = void 0 === i ? Jn : i | |
| , s = n.complete | |
| , l = void 0 === s ? Jn : s | |
| , u = qn(n, ["success", "fail", "complete"]); | |
| (function(e, t) { | |
| An.call("NBComponent.sendMessage", a()({}, t, { | |
| element: this.element, | |
| actionType: e, | |
| viewId: this.page.getViewId() | |
| })) | |
| } | |
| ).call(this, e, { | |
| data: u, | |
| success: o, | |
| fail: c, | |
| complete: l | |
| }) | |
| } | |
| }); | |
| var Gn = zn | |
| , Kn = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| }; | |
| function Hn(e) { | |
| a()(this, e) | |
| } | |
| var Yn = Hn.prototype = {}; | |
| function Zn() {} | |
| ["start", "stop", "pause", "resume", "switchCamera", "snapshot", "toggleTorch"].forEach(function(e) { | |
| Yn[e] = function(t) { | |
| var n = t || {} | |
| , r = n.success | |
| , o = void 0 === r ? Zn : r | |
| , i = n.fail | |
| , c = void 0 === i ? Zn : i | |
| , s = n.complete | |
| , l = void 0 === s ? Zn : s | |
| , u = Kn(n, ["success", "fail", "complete"]); | |
| (function(e, t) { | |
| An.call("NBComponent.sendMessage", a()({}, t, { | |
| element: this.element, | |
| actionType: e, | |
| viewId: this.page.getViewId() | |
| })) | |
| } | |
| ).call(this, e, { | |
| data: u, | |
| success: o, | |
| fail: c, | |
| complete: l | |
| }) | |
| } | |
| }); | |
| var Qn = Hn | |
| , er = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| }; | |
| function tr(e) { | |
| a()(this, e) | |
| } | |
| var nr = tr.prototype = {}; | |
| function rr() {} | |
| ["play", "stop", "pause", "setSpeed", "goToAndStop", "goToAndPlay", "playFromMinToMaxProgress", "playFromMinToMaxFrame", "getDuration"].forEach(function(e) { | |
| nr[e] = function(t) { | |
| var n = t || {} | |
| , r = n.success | |
| , o = void 0 === r ? rr : r | |
| , i = n.fail | |
| , c = void 0 === i ? rr : i | |
| , s = n.complete | |
| , l = void 0 === s ? rr : s | |
| , u = er(n, ["success", "fail", "complete"]); | |
| (function(e, t) { | |
| An.call("NBComponent.sendMessage", a()({}, t, { | |
| element: this.element, | |
| actionType: e, | |
| viewId: this.page.getViewId() | |
| })) | |
| } | |
| ).call(this, e, { | |
| data: u, | |
| success: o, | |
| fail: c, | |
| complete: l | |
| }) | |
| } | |
| }); | |
| var ar = tr | |
| , or = {}; | |
| function ir(e, t) { | |
| if (e) { | |
| var n = {}; | |
| return On(t).forEach(function(r) { | |
| n[r] = function(e, t) { | |
| if (e) { | |
| for (var n = 0, r = (t = Re(t)).length; e && n < r; ) | |
| e = e[t[n++]]; | |
| return n && n === r ? e : void 0 | |
| } | |
| return e | |
| }(e, t[r]) | |
| }), | |
| n | |
| } | |
| } | |
| function cr(e, t) { | |
| return e && e.slice(0, t.length) === t | |
| } | |
| function sr(e) { | |
| return e ? "string" == typeof e ? e : On(e).map(function(t) { | |
| var n = t + "="; | |
| return n += String(e[t]).replace(/,/g, ";").replace(/\^/g, "@").replace(/\=/g, "~") | |
| }).join("^") : "" | |
| } | |
| var lr, ur = "TAC", fr = function() { | |
| return "TinyAppBiz-" + g().appId | |
| }, pr = An.callBridge, dr = or.trackerDataBuffer = {}; | |
| function hr(e) { | |
| return sr(a()({}, e, { | |
| SDKVersion: yn, | |
| appId: g().appId | |
| })) | |
| } | |
| function gr(e) { | |
| var t = e.page; | |
| if (t) { | |
| var n = t.getPagePath() | |
| , r = function(e) { | |
| var t = or.trackerConfig | |
| , n = or.trackerEnabled; | |
| if (!t || !n) | |
| return; | |
| if (e in br) | |
| return br[e]; | |
| var r = void 0; | |
| return t.forEach(function(t) { | |
| var n, a = { | |
| eventCode: t.eventCode, | |
| eventTarget: [] | |
| }; | |
| t.eventTarget.forEach(function(t) { | |
| var r = t.page || ""; | |
| "/" === r.charAt(0) && (r = r.slice(1)), | |
| r !== e && "ANY_PAGE" !== r || "click" !== t.trigger || (n = a).eventTarget.push(t) | |
| }), | |
| n && (r = r || []).push(n) | |
| }), | |
| br[e] = r, | |
| r | |
| }(n); | |
| t.trackerConfig !== r && (t.trackerConfig = r, | |
| C("framework", "[WORKER] push trackerConfig to page:", n, r), | |
| t.callRemote("bridge", "setTrackerConfig", r)) | |
| } | |
| } | |
| or.trackerEnabled = !0, | |
| x.prependListener("launch", function() { | |
| !function(e) { | |
| var t = g().appId; | |
| pr("trackerConfig", { | |
| requestType: "isTrackerEnable", | |
| params: { | |
| appId: t | |
| } | |
| }, function(n) { | |
| void 0 === n && (n = {}), | |
| C("framework", "[WORKER] isTrackerEnable", n), | |
| n.error ? or.trackerEnabled = !0 : or.trackerEnabled = n.enable || !1, | |
| pr("trackerConfig", { | |
| requestType: "queryTrackerConfig", | |
| params: { | |
| appId: t | |
| } | |
| }, function(t) { | |
| if (void 0 === t && (t = {}), | |
| t && !t.error) { | |
| k("framework: getTrackerConfig", t); | |
| var n = t | |
| , r = n.config | |
| , a = void 0 === r ? [] : r | |
| , o = n.env | |
| , i = void 0 === o ? "release" : o; | |
| or.trackerConfig = a, | |
| or.trackerEnv = i, | |
| e(or.trackerEnabled ? a : []) | |
| } | |
| }) | |
| }) | |
| }(function(e) { | |
| yr(e) | |
| }) | |
| }), | |
| An.on("afterShare", function(e) { | |
| x.emit("afterShare", { | |
| page: be(), | |
| event: e | |
| }) | |
| }), | |
| An.on("onShare", function() { | |
| x.emit("share", { | |
| page: be() | |
| }) | |
| }); | |
| var vr = {} | |
| , mr = !1; | |
| function yr(e) { | |
| gr({ | |
| page: be() | |
| }); | |
| var t = {}; | |
| (e || []).forEach(function(e) { | |
| e.eventTarget.forEach(function(n) { | |
| var r = n.trigger; | |
| "click" !== r && (t[r] = t[r] || [], | |
| t[r].push({ | |
| eventCode: e.eventCode, | |
| eventTarget: n | |
| })) | |
| }) | |
| }), | |
| On(vr).forEach(function(e) { | |
| vr[e].remove(), | |
| delete vr[e] | |
| }), | |
| On(t).forEach(function(e) { | |
| var n = t[e]; | |
| if (n && n.length) { | |
| var r = function(t) { | |
| var r = void 0 === t ? {} : t | |
| , o = r.page | |
| , i = r.params; | |
| n.forEach(function(t) { | |
| var n = t.eventCode | |
| , r = t.eventTarget | |
| , c = r.page; | |
| if ("ANY_PAGE" === c || !c || !o || o.getPagePath() === c) { | |
| var s, l = [o, n, { | |
| dataConfig: r.data, | |
| params: a()({}, i, { | |
| $appTrigger: e | |
| }) | |
| }]; | |
| if ("collect" === r.action) | |
| (s = lr).collectTrackerData.apply(s, l); | |
| else if ("report" === r.action) { | |
| var u; | |
| (u = lr).reportTrackerData.apply(u, l) | |
| } | |
| } | |
| }) | |
| } | |
| , o = function(e) { | |
| var t = (void 0 === e ? {} : e).page; | |
| r({ | |
| page: t | |
| }) | |
| }; | |
| "launch" === e ? mr || (o(), | |
| mr = !0) : vr[e] = "afterShare" === e ? x.prependListener(e, function(e) { | |
| var t = void 0 === e ? {} : e | |
| , n = t.page | |
| , a = t.event; | |
| r({ | |
| page: n, | |
| params: { | |
| shareResult: a.data.shareResult | |
| } | |
| }) | |
| }) : x.prependListener(e, o) | |
| } | |
| }) | |
| } | |
| An.on("onTrackerConfigChange", function(e) { | |
| var t = e && e.data && e.data.config || []; | |
| or.trackerConfig = t, | |
| br = {}, | |
| k("framework: onTrackerConfigChange", e), | |
| yr(or.trackerEnabled ? t : []) | |
| }), | |
| An.on("onTrackerEnableChange", function(e) { | |
| void 0 === e && (e = {}); | |
| var t = e.enable; | |
| void 0 === t && e.data && (t = e.data.enable), | |
| void 0 !== t && (or.trackerEnabled = t), | |
| k("framework: onTrackerEnableChange", e), | |
| yr(t ? or.trackerConfig : []) | |
| }); | |
| var br = {}; | |
| x.prependListener("enterPage", gr); | |
| var wr = { | |
| reportAnalytics: function(e, t) { | |
| or.trackerEnabled && pr("remoteLog", { | |
| spmId: e, | |
| param4: hr(t), | |
| type: "behavior", | |
| bizType: fr(), | |
| actionId: "event", | |
| logLevel: 1 | |
| }) | |
| }, | |
| $trackerAPI: lr = { | |
| collectTrackerData: function(e, t, n) { | |
| var r = n.dataConfig | |
| , o = n.params | |
| , i = void 0 === o ? {} : o; | |
| if (or.trackerEnabled) { | |
| var c = Ie() | |
| , s = e && e.getId ? e : c.getPageById(e) || be(); | |
| if (s) { | |
| var l = {} | |
| , u = {} | |
| , f = Date.now(); | |
| On(r).forEach(function(e) { | |
| var t = r[e]; | |
| "$PAGE_TIME" !== t ? "$APP_TIME" !== t ? "$CURRENT_PAGE" !== t ? "$LAST_PAGE" !== t ? cr(t, "$APP.") ? u[e] = t.slice("$APP.".length) : l[e] = t : i[e] = s.fromPage && s.fromPage.getPagePath() : i[e] = s.getPagePath() : i[e] = f - c.$launchTime : i[e] = f - s.$loadTime | |
| }); | |
| var p = ir(s.publicInstance.data, l) | |
| , d = ir(c.publicInstance.globalData, u); | |
| dr[t] = a()({}, dr[t], p, i, d) | |
| } | |
| } | |
| }, | |
| reportTrackerData: function(e, t, n) { | |
| var r = n.dataConfig | |
| , a = n.params; | |
| if (or.trackerEnabled) { | |
| lr.collectTrackerData(e, t, { | |
| dataConfig: r, | |
| params: a | |
| }); | |
| var o = dr[t] | |
| , i = g().appId; | |
| pr("remoteLog", { | |
| bizType: fr(), | |
| seedId: t, | |
| actionId: "event", | |
| param4: hr(o) | |
| }), | |
| pr("trackerConfig", { | |
| requestType: "triggerUpload", | |
| params: { | |
| appId: i, | |
| env: or.trackerEnv | |
| } | |
| }), | |
| C("framework", "[WORKER] reportTrackerData", t, o, i), | |
| dr[t] = {} | |
| } | |
| } | |
| } | |
| } | |
| , Ir = global; | |
| function Pr() { | |
| var e = Ir.appXAppJson; | |
| return (e && e.app || {}).$homepage | |
| } | |
| var kr = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| }; | |
| function Cr(e) { | |
| var t = e || ""; | |
| return !t && be() && (t = be().getPagePath()), | |
| { | |
| spmId: "MiniApp_" + g().appId + "." + function(e) { | |
| return e.replace(/\./g, "_DOT_") | |
| }(t), | |
| bizType: fr() | |
| } | |
| } | |
| var Ar = function() {} | |
| , Tr = function(e, t, n) { | |
| var r = e.success | |
| , o = void 0 === r ? Ar : r | |
| , i = e.fail | |
| , c = void 0 === i ? Ar : i | |
| , s = e.complete | |
| , l = void 0 === s ? Ar : s | |
| , u = kr(e, ["success", "fail", "complete"]); | |
| return a()({ | |
| success: function(e) { | |
| o(e), | |
| t && t(e), | |
| l(e) | |
| }, | |
| fail: function(e) { | |
| c(e), | |
| n && n(e), | |
| l(e) | |
| } | |
| }, u) | |
| }; | |
| function Sr(e) { | |
| return e.charAt(0).toUpperCase() + e.slice(1) | |
| } | |
| var Or = An.callBridge | |
| , Er = An.callBridgeSync | |
| , xr = self; | |
| function Mr(e, t, n) { | |
| Or(e, t, n) | |
| } | |
| function _r(e, t, n, r, a) { | |
| void 0 === r && (r = {}); | |
| var o = ["NBComponent.sendMessage", { | |
| actionType: t, | |
| element: e.id, | |
| viewId: e._getPage().getViewId(), | |
| data: n | |
| }]; | |
| return a ? function(e, t) { | |
| return xr.callAppXCanvasBridgeSync ? xr.callAppXCanvasBridgeSync(t) : Er(e, t) | |
| } | |
| .apply(void 0, o) : new Promise(function(e, t) { | |
| o.push(function(n) { | |
| n.error ? (t(n), | |
| r.fail && r.fail(n)) : (e(n), | |
| r.success && r.success(n)), | |
| r.complete && r.complete(n) | |
| }), | |
| Mr.apply(void 0, o) | |
| } | |
| ) | |
| } | |
| An.callBridge; | |
| var Br = { | |
| textMaxWidth: "100000000", | |
| gcanvasCommandMap: { | |
| clip: "p", | |
| fill: "L", | |
| rect: "w", | |
| fillRect: "n", | |
| strokeRect: "s", | |
| clearRect: "c", | |
| stroke: "x", | |
| scale: "k", | |
| rotate: "r", | |
| translate: "l", | |
| save: "v", | |
| restore: "e", | |
| fillText: "T", | |
| moveTo: "g", | |
| lineTo: "i", | |
| arcTo: "h", | |
| arc: "y", | |
| transform: "f", | |
| setTransform: "t", | |
| beginPath: "b", | |
| closePath: "o", | |
| quadraticCurveTo: "u", | |
| bezierCurveTo: "z", | |
| setLineDash: "I", | |
| strokeText: "U", | |
| drawImage: "d", | |
| drawCanvas: "R", | |
| strokeStyle: "S", | |
| shadowBlur: "Z", | |
| shadowColor: "K", | |
| shadowOffsetX: "X", | |
| shadowOffsetY: "Y", | |
| lineCap: "C", | |
| lineWidth: "W", | |
| lineJoin: "J", | |
| miterLimit: "M", | |
| font: "j", | |
| textAlign: "A", | |
| textBaseline: "E", | |
| lineDashOffset: "N", | |
| globalAlpha: "a", | |
| globalCompositeOperation: "V", | |
| pattern: "G", | |
| fillStyle: "F", | |
| linearGradient: "D", | |
| radialGradient: "H" | |
| }, | |
| replaceToken: function(e) { | |
| return "string" == typeof e && (e = (e = (e = e.replace(/!/g, "!!")).replace(/,/g, "!,")).replace(/;/g, "!;")), | |
| e | |
| }, | |
| reverseReplaceToken: function(e) { | |
| return "string" == typeof e && (e = (e = (e = e.replace(/!!/g, "!")).replace(/!,/g, ",")).replace(/!;/g, ";")), | |
| e | |
| }, | |
| valueToStr: function(e) { | |
| return "boolean" == typeof e && (e = e ? "1" : "0"), | |
| e | |
| }, | |
| formatValue: function(e) { | |
| if (!e) | |
| return ""; | |
| if (Array.isArray(e)) | |
| for (var t = 0; t < e.length; t++) { | |
| var n = e[t]; | |
| "number" == typeof n || (e[t] = this.valueToStr(n)) | |
| } | |
| else | |
| "string" == typeof e ? "null" !== e && e || (e = "") : "boolean" == typeof e && (e = this.valueToStr(e)); | |
| return e | |
| }, | |
| isArgsValidArray: function(e) { | |
| return e && Array.isArray(e) | |
| }, | |
| formatDrawImageArgs: function(e, t) { | |
| var n = e.width | |
| , r = e.height; | |
| return 2 === t.length ? t = [n, r, 0, 0, n, r, t[0], t[1], n, r] : 4 === t.length ? t = [n, r, 0, 0, n, r, t[0], t[1], t[2], t[3]] : 8 === t.length && (t = [n, r].concat(t)), | |
| [e.id].concat(t) | |
| }, | |
| _encodeDrawActions: function(e) { | |
| for (var t = "", n = 0; n < e.length; n++) | |
| "string" == typeof e[n] && (t += e[n]); | |
| return t | |
| }, | |
| _encodeDrawApi: function(e) { | |
| e.args = this.formatValue(e.args), | |
| "fillText" === e.action ? this.isArgsValidArray(e.args) && (e.args[0] = this.replaceToken(e.args[0]), | |
| 3 === e.args.length && e.args.push(this.textMaxWidth)) : "strokeText" === e.action ? this.isArgsValidArray(e.args) && (e.args[0] = this.replaceToken(e.args[0]), | |
| 3 === e.args.length && e.args.push(this.textMaxWidth)) : "setLineDash" === e.action && e.args && Array.isArray(e.args[0]) && (e.args = [e.args[0].length].concat(e.args[0])); | |
| var t = this.gcanvasCommandMap[e.action]; | |
| if (t) { | |
| return t + (Array.isArray(e.args) ? e.args.join(",") : e.args) + ";" | |
| } | |
| return "" | |
| }, | |
| _encodeProperty: function(e) { | |
| if (e.value = this.formatValue(e.value), | |
| "fillStyle" === e.property || "strokeStyle" === e.property) | |
| if (e.value && "object" == typeof e.value) { | |
| var t = e.value | |
| , n = []; | |
| if (t && t.class) { | |
| var r = "strokeStyle" === e.property; | |
| if (e.property = t.class, | |
| "pattern" === t.class || "linearGradient" === t.class || "radialGradient" === t.class) { | |
| for (var a = 0; a < t.args.length; a++) | |
| n[a] = t.args[a]; | |
| if ("pattern" === t.class) | |
| ; | |
| else if ("linearGradient" === t.class) { | |
| if (t.positions && t.positions.length > 0) { | |
| for (var o in n.push(t.positions.length), | |
| t.positions) | |
| n.push(t.positions[o]); | |
| for (var o in t.colors) | |
| n.push(t.colors[o]) | |
| } | |
| } else if ("radialGradient" === t.class && t.positions && t.positions.length > 0) { | |
| for (var o in n.push(t.positions.length), | |
| t.positions) | |
| n.push(t.positions[o]); | |
| for (var o in t.colors) | |
| n.push(t.colors[o]) | |
| } | |
| r && n.push("1") | |
| } | |
| } | |
| e.value = n | |
| } else | |
| e.value && "string" == typeof e.value && e.value.length > 64 && (e.value = ""); | |
| else | |
| "textAlign" === e.property ? e.value = this._encodeTextAlignValue(e.value) : "textBaseline" === e.property && (e.value = this._encodeTextBaseline(e.value)); | |
| var i = this.gcanvasCommandMap[e.property]; | |
| if (i) { | |
| return i + (Array.isArray(e.value) ? e.value.join(",") : e.value) + ";" | |
| } | |
| return "" | |
| }, | |
| _encodeTextAlignValue: function(e) { | |
| var t = 0; | |
| switch (e) { | |
| case "start": | |
| t = 0; | |
| break; | |
| case "end": | |
| t = 1; | |
| break; | |
| case "left": | |
| t = 2; | |
| break; | |
| case "center": | |
| t = 3; | |
| break; | |
| case "right": | |
| t = 4; | |
| break; | |
| default: | |
| t = 0 | |
| } | |
| return t | |
| }, | |
| _encodeTextBaseline: function(e) { | |
| var t = 0; | |
| switch (e) { | |
| case "alphabetic": | |
| t = 0; | |
| break; | |
| case "middle": | |
| t = 1; | |
| break; | |
| case "top": | |
| t = 2; | |
| break; | |
| case "hanging": | |
| t = 3; | |
| break; | |
| case "bottom": | |
| t = 4; | |
| break; | |
| case "ideographic": | |
| t = 5; | |
| break; | |
| default: | |
| t = 0 | |
| } | |
| return t | |
| }, | |
| encodeDrawActions: function(e, t) { | |
| return this.checkUseCompactProtocal(e) ? this._encodeDrawActions(t) : t | |
| }, | |
| encodeDrawApi: function(e, t) { | |
| return this.checkUseCompactProtocal(e) ? this._encodeDrawApi(t) : t | |
| }, | |
| encodeProperty: function(e, t) { | |
| return this.checkUseCompactProtocal(e) ? this._encodeProperty(t) : t | |
| }, | |
| encodeProperties: function(e, t) { | |
| if (this.checkUseCompactProtocal(e)) { | |
| var n = []; | |
| for (var r in t) | |
| n.push(this._encodeProperty(t[r])); | |
| return n | |
| } | |
| return t | |
| }, | |
| putLoadedImage: function(e, t, n) { | |
| e.localImageBuffer[t] = n | |
| }, | |
| getLoadedImage: function(e, t) { | |
| return e.localImageBuffer[t] ? e.localImageBuffer[t] : null | |
| }, | |
| putLoadingImage: function(e, t) { | |
| e.localImageLoadingBuffer[t] = 1 | |
| }, | |
| getLoadingImage: function(e, t) { | |
| return e.localImageLoadingBuffer[t] ? e.localImageLoadingBuffer[t] : null | |
| }, | |
| isValidImageInfo: function(e) { | |
| return null != e && "" !== e.id && e.id >= 0 && e.width > 0 && e.height > 0 | |
| }, | |
| removeLoadingImage: function(e, t) { | |
| delete e.localImageLoadingBuffer[t] | |
| }, | |
| performLoadImage: function(e, t, n) { | |
| for (var r = 0; r < t.length; r++) | |
| this.putLoadingImage(e, t[r]); | |
| var a = this | |
| , o = function(t) { | |
| if (t.data) | |
| for (var n = t.data, r = 0; r < n.length; r++) { | |
| var o = n[r]; | |
| a.putLoadedImage(e, o.url, o), | |
| a.removeLoadingImage(e, o.url) | |
| } | |
| }; | |
| _r(e, "loadImage", { | |
| urls: t | |
| }, { | |
| success: function(e) { | |
| o(e) | |
| }, | |
| fail: function(e) { | |
| o(e) | |
| }, | |
| complete: function() { | |
| n() | |
| } | |
| }, !1) | |
| }, | |
| isWaitImageLoadAction: function(e) { | |
| return !("object" != typeof e || !e || "drawImage" !== e.action && (!e.property || "fillStyle" !== e.property && "strokeStyle" !== e.property || null == e.value || "object" != typeof e.value || "pattern" !== e.value.class)) | |
| }, | |
| parseImageUrlFromActionUrl: function(e) { | |
| return e ? (e.args ? e.args : e.value.args)[0] : "" | |
| }, | |
| getNotLoadingImageUrlFromAction: function(e, t) { | |
| if (this.isWaitImageLoadAction(t)) { | |
| var n = this.parseImageUrlFromActionUrl(t); | |
| if (n && isNaN(n) && !this.getLoadingImage(e, n)) | |
| return n | |
| } | |
| return "" | |
| }, | |
| replaceImageLoadActions: function(e, t) { | |
| var n = "" | |
| , r = e.action ? e.action : e.property; | |
| if ("drawImage" === r) | |
| n = this._encodeDrawApi({ | |
| action: r, | |
| args: this.formatDrawImageArgs(t, e.args.slice(1)) | |
| }); | |
| else if ("fillStyle" === r || "strokeStyle" === r) { | |
| var a = { | |
| class: "pattern", | |
| args: [t.id, t.width, t.height].concat(e.value.args.slice(1)) | |
| }; | |
| n = this._encodeProperty({ | |
| property: r, | |
| value: a | |
| }) | |
| } | |
| return n | |
| }, | |
| onImageLoadComplete: function(e, t) { | |
| for (var n = 0; n < t.actions.length; n++) { | |
| var r = t.actions[n] | |
| , a = this.getNotLoadingImageUrlFromAction(e, r); | |
| if (a) { | |
| var o = this.getLoadedImage(e, a); | |
| if (!this.isValidImageInfo(o)) { | |
| t.actions[n] = ""; | |
| continue | |
| } | |
| t.actions[n] = this.replaceImageLoadActions(r, o) | |
| } | |
| } | |
| this.flushDrawFrame(e, t) | |
| }, | |
| flushDrawFrame: function(e, t) { | |
| e.actionsShouldLoadImage = !1, | |
| e._commitDrawFrame(t.reserve, t.actions, t.callback) | |
| }, | |
| checkUseCompactProtocal: function(e) { | |
| return e.enableCompactProtocol | |
| } | |
| } | |
| , Dr = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , jr = ["fillStyle", "strokeStyle", "globalAlpha", "lineWidth", "lineCap", "lineJoin", "miterLimit", "textBaseline", "lineDashOffset", "textAlign", "globalCompositeOperation"]; | |
| function Rr(e) { | |
| return "set" + Sr(e) | |
| } | |
| var Lr = jr.concat(["shadow", "fontSize", "font"]); | |
| function Ur(e, t) { | |
| var n = t.page | |
| , r = t.enableNative; | |
| this.callBackMap = {}, | |
| this.actions = [], | |
| this.callId = 0, | |
| this.id = e, | |
| this.emitter = new E, | |
| this.page = n, | |
| this.enableNative = !1 !== r && In && g().hasNativeCanvas, | |
| this.state = { | |
| font: "10px Arial", | |
| fontSize: 10, | |
| fontWeight: "normal", | |
| fontStyle: "normal", | |
| fontFamily: "Arial" | |
| }, | |
| this.enableNative && (this.enableCompactProtocol = g().nativeCanvasCompactProtocol, | |
| this.protocolVersion = "1", | |
| this.localImageBuffer = {}, | |
| this.localImageLoadingBuffer = {}, | |
| this.actionsShouldLoadImage = !1); | |
| var a = this; | |
| Lr.forEach(function(e) { | |
| Object.defineProperty(a, e, { | |
| configurable: !0, | |
| set: function(t) { | |
| a[Rr(e)](t) | |
| } | |
| }) | |
| }) | |
| } | |
| var Nr = { | |
| getImageData: { | |
| v: function(e) { | |
| return 0 === (Number(e.width) || 0) ? { | |
| message: "the source width is 0" | |
| } : 0 === (Number(e.height) || 0) ? { | |
| message: "the source height is 0" | |
| } : void 0 | |
| }, | |
| b: function(e) { | |
| e.x = Number(e.x) || 0, | |
| e.y = Number(e.y) || 0, | |
| e.width = Number(e.width) || 0, | |
| e.height = Number(e.height) || 0 | |
| }, | |
| a: function(e) { | |
| e.data = new Uint8ClampedArray(e.data) | |
| } | |
| }, | |
| putImageData: { | |
| v: function(e) { | |
| return "number" != typeof e.width ? { | |
| message: "width argument must be an Number" | |
| } : "[object Uint8ClampedArray]" !== Object.prototype.toString.call(e.data) ? { | |
| message: "data argument must be an Uint8ClampedArray" | |
| } : void 0 | |
| }, | |
| b: function(e) { | |
| e.x = Number(e.x) || 0, | |
| e.y = Number(e.y) || 0, | |
| e.height = "number" == typeof e.height ? e.height : e.data.length / e.width / 4 | 0, | |
| e.data = Array.prototype.slice.call(e.data) | |
| } | |
| } | |
| } | |
| , Fr = Ur.prototype = { | |
| _getPage: function() { | |
| return this.page || be() | |
| }, | |
| _commitDrawFrame: function(e, t, n) { | |
| var r = Br.encodeDrawActions(this, t); | |
| if (this.enableNative) { | |
| var a = { | |
| timeStamp: Date.now(), | |
| actions: r, | |
| reserve: e | |
| }; | |
| this.enableCompactProtocol && (a.protocolVersion = this.protocolVersion), | |
| Mr("NBComponent.sendMessage", { | |
| actionType: "draw", | |
| element: this.id, | |
| viewId: this._getPage().getViewId(), | |
| data: a | |
| }, n) | |
| } else | |
| this._getPage().callRemote("refComponents." + this.id, "draw", r, e, function(e) { | |
| "function" == typeof n && n(e) | |
| }) | |
| }, | |
| draw: function(e, t) { | |
| var n = this | |
| , r = Br; | |
| if (this.enableCompactProtocol) { | |
| var a = []; | |
| if (this.actionsShouldLoadImage) | |
| for (var o = 0; o < this.actions.length; o++) { | |
| var i = this.actions[o] | |
| , c = r.getNotLoadingImageUrlFromAction(this, i); | |
| c && a.indexOf(c) < 0 && a.push(c) | |
| } | |
| if (a.length > 0) { | |
| var s = { | |
| reserve: e, | |
| actions: this.actions, | |
| callback: t | |
| }; | |
| r.performLoadImage(this, a, function() { | |
| r.onImageLoadComplete(n, s) | |
| }) | |
| } | |
| if (null != a && a.length > 0 || this.localImageLoadingBuffer.length > 0) | |
| return this.actionsShouldLoadImage = !1, | |
| void (this.actions = []) | |
| } | |
| this.actionsShouldLoadImage = !1, | |
| this._commitDrawFrame(e, this.actions, t), | |
| this.actions = [] | |
| }, | |
| toDataURL: function(e) { | |
| var t = this; | |
| if (!this.enableNative) | |
| return new Promise(function(n, r) { | |
| vt("toDataURL", { | |
| page: t._getPage(), | |
| caller: "refComponents." + t.id, | |
| args: [a()({}, e, { | |
| success: function(t) { | |
| n(t), | |
| e.success && e.success(t) | |
| }, | |
| fail: function(t) { | |
| r(t), | |
| e.fail && e.fail(t) | |
| }, | |
| complete: function(t) { | |
| e.complete && e.complete(t) | |
| } | |
| })] | |
| }) | |
| } | |
| ) | |
| }, | |
| toTempFilePath: function(e) { | |
| var t = this; | |
| return this.enableNative ? _r(this, "toTempFilePath", function(e) { | |
| var t = a()({}, e); | |
| return delete t.success, | |
| delete t.error, | |
| delete t.complete, | |
| t | |
| }(e), e) : new Promise(function(n, r) { | |
| vt("toTempFilePath", { | |
| page: t._getPage(), | |
| caller: "refComponents." + t.id, | |
| args: [a()({}, e, { | |
| success: function(t) { | |
| n(t), | |
| e.success && e.success(t) | |
| }, | |
| fail: function(t) { | |
| r(t), | |
| e.fail && e.fail(t) | |
| }, | |
| complete: function(t) { | |
| e.complete && e.complete(t) | |
| } | |
| })] | |
| }) | |
| } | |
| ) | |
| }, | |
| setShadow: function(e, t, n, r) { | |
| void 0 === e && (e = 0), | |
| void 0 === t && (t = 0), | |
| void 0 === n && (n = 0), | |
| void 0 === r && (r = "black"), | |
| this.actions = this.actions.concat(Br.encodeProperties(this, [{ | |
| property: "shadowOffsetX", | |
| value: e | |
| }, { | |
| property: "shadowOffsetY", | |
| value: t | |
| }, { | |
| property: "shadowBlur", | |
| value: n | |
| }, { | |
| property: "shadowColor", | |
| value: r | |
| }])) | |
| }, | |
| setFontSize: function(e) { | |
| this.state.font = this.state.font.replace(/\d+\.?\d*px/, e + "px"), | |
| this.state.fontSize = e, | |
| this.actions.push(Br.encodeProperty(this, { | |
| property: "font", | |
| value: this.state.font | |
| })) | |
| }, | |
| setFont: function(e) { | |
| var t = this; | |
| this.state.font = e; | |
| var n = e.match(/^(([\w\-]+\s)*)(\d+px)(\/(\d+\.?\d*(px)?))?\s+(.*)/); | |
| if (n) { | |
| var r = n[1].trim().split(/\s/); | |
| this.state.fontSize = parseFloat(n[3]), | |
| this.state.fontFamily = n[7], | |
| r.forEach(function(e) { | |
| ["italic", "oblique", "normal"].indexOf(e) > -1 ? t.state.fontStyle = e : ["bold", "normal"].indexOf(e) > -1 && (t.state.fontWeight = e) | |
| }) | |
| } | |
| this.actions.push(Br.encodeProperty(this, { | |
| property: "font", | |
| value: e | |
| })) | |
| }, | |
| createPattern: function() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| return this.enableCompactProtocol ? { | |
| class: "pattern", | |
| action: "createPattern", | |
| args: t | |
| } : (this.actions.push({ | |
| action: "createPattern", | |
| callId: ++this.callId, | |
| args: t | |
| }), | |
| { | |
| $callId: this.callId | |
| }) | |
| } | |
| }; | |
| On(Nr).forEach(function(e) { | |
| var t = Nr[e] || {}; | |
| Fr[e] = function(n) { | |
| var r = this | |
| , a = Tr(n) | |
| , o = a.success | |
| , i = a.fail | |
| , c = Dr(a, ["success", "fail"]); | |
| if (t && t.v) { | |
| var s = t.v(c); | |
| if (s) | |
| return void i({ | |
| errorMessage: s.message, | |
| error: s.message | |
| }) | |
| } | |
| return t && t.b && t.b(c), | |
| this.enableNative ? _r(this, e, c, n) : new Promise(function(n, a) { | |
| var s, l = ["refComponents." + r.id, e]; | |
| l.push(c, function(e) { | |
| var r = e; | |
| t.a && t.a(r), | |
| n(r), | |
| o && o(r) | |
| }, function(e) { | |
| a(e), | |
| i && i(e) | |
| }), | |
| (s = r._getPage()).callRemote.apply(s, l) | |
| } | |
| ) | |
| } | |
| }), | |
| jr.forEach(function(e) { | |
| Fr[Rr(e)] = function(t) { | |
| if (this.enableCompactProtocol && ("fillStyle" === e || "strokeStyle" === e) && null != t && "object" == typeof t && "pattern" === t.class) { | |
| var n = t.args[0]; | |
| if ("number" == typeof n) | |
| ; | |
| else if ("string" == typeof n && n) { | |
| var r = Br.getLoadedImage(this, n); | |
| if (!r) | |
| return this.actionsShouldLoadImage = !0, | |
| void this.actions.push({ | |
| property: e, | |
| value: t | |
| }); | |
| if (!Br.isValidImageInfo(r)) | |
| return; | |
| t.args = [r.id, r.width, r.height, t.args[1]] | |
| } else | |
| "object" == typeof n && Br.isValidImageInfo(n) && (t.args = [n.id, n.width, n.height, t.args[1]]) | |
| } | |
| this.actions.push(Br.encodeProperty(this, { | |
| property: e, | |
| value: t | |
| })) | |
| } | |
| }), | |
| ["createLinearGradient", "createRadialGradient", "createCircularGradient"].forEach(function(e) { | |
| Fr[e] = function() { | |
| for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++) | |
| n[r] = arguments[r]; | |
| var a = n | |
| , o = e; | |
| "createCircularGradient" === o && (o = "createRadialGradient", | |
| a = [a[0], a[1], 0, a[0], a[1], a[2]]); | |
| var i = ""; | |
| if (i = "createLinearGradient" === o ? "linearGradient" : "radialGradient", | |
| this.enableCompactProtocol) | |
| return { | |
| class: i, | |
| positions: [], | |
| colors: [], | |
| args: a, | |
| addColorStop: function(e, t) { | |
| this.positions.push(e), | |
| this.colors.push(t) | |
| } | |
| }; | |
| var c = []; | |
| return this.actions.push({ | |
| action: o, | |
| nested: c, | |
| callId: ++this.callId, | |
| args: a | |
| }), | |
| { | |
| $callId: this.callId, | |
| addColorStop: function() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| c.push({ | |
| action: "addColorStop", | |
| args: t | |
| }) | |
| } | |
| } | |
| } | |
| }), | |
| ["clip", "fill", "rect", "fillRect", "strokeRect", "stroke", "scale", "rotate", "translate", "save", "restore", "clearRect", "fillText", "moveTo", "lineTo", "arcTo", "arc", "transform", "setTransform", "stroke", "beginPath", "closePath", "quadraticCurveTo", "bezierCurveTo", "setLineDash", "strokeText"].forEach(function(e) { | |
| Fr[e] = function() { | |
| for (var t = arguments.length, n = new Array(t), r = 0; r < t; r++) | |
| n[r] = arguments[r]; | |
| this.actions.push(Br.encodeDrawApi(this, { | |
| action: e, | |
| args: n | |
| })) | |
| } | |
| }), | |
| Fr.isCanvasContext = 1, | |
| Fr.drawImage = function(e) { | |
| for (var t = e, n = arguments.length, r = new Array(n > 1 ? n - 1 : 0), a = 1; a < n; a++) | |
| r[a - 1] = arguments[a]; | |
| if ("number" == typeof t) | |
| this.actions.push(Br.encodeDrawApi(this, { | |
| action: "drawImage", | |
| args: [t].concat(r) | |
| })); | |
| else if ("string" == typeof t) { | |
| if (this._getPage() && (t = function(e, t) { | |
| if (!cr(e, "./") && !cr(e, "../")) | |
| return e; | |
| var n = t.split("/"); | |
| n[n.length - 1] && n.pop(); | |
| var r = []; | |
| n.concat(e.split("/")).forEach(function(e) { | |
| e && "." !== e && (".." === e ? r.pop() : r.push(e)) | |
| }); | |
| var a = r.join("/"); | |
| return cr(t, "/") && !cr(a, "/") && (a = "/" + a), | |
| a | |
| }(e, "/" + this._getPage().getPagePath())), | |
| this.enableCompactProtocol) { | |
| var o, i = Br.getLoadedImage(this, t); | |
| if (!i) | |
| return this.actionsShouldLoadImage = !0, | |
| o = [t].concat(r), | |
| void this.actions.push({ | |
| action: "drawImage", | |
| args: o | |
| }); | |
| if (!Br.isValidImageInfo(i)) | |
| return; | |
| o = Br.formatDrawImageArgs(i, r) | |
| } else | |
| o = [t].concat(r); | |
| this.actions.push(Br.encodeDrawApi(this, { | |
| action: "drawImage", | |
| args: o | |
| })) | |
| } else if (t && "object" == typeof t && Br.isValidImageInfo(t)) { | |
| if (this.enableCompactProtocol) { | |
| var c = Br.formatDrawImageArgs(t, r); | |
| this.actions.push(Br.encodeDrawApi(this, { | |
| action: "drawImage", | |
| args: c | |
| })) | |
| } | |
| } else | |
| t && t.isCanvasContext && this.actions.push(Br.encodeDrawApi(this, { | |
| action: "drawCanvas", | |
| args: [t.id].concat(r) | |
| })) | |
| } | |
| , | |
| Fr.measureText = function(e) { | |
| if (this.enableNative) { | |
| var t = _r(this, "measureText", { | |
| text: e, | |
| font: this.state.font | |
| }, void 0, !0); | |
| return t || (t = {}), | |
| t | |
| } | |
| var n = this.state | |
| , r = n.fontSize | |
| , a = n.fontFamily | |
| , o = n.fontWeight | |
| , i = n.fontStyle; | |
| return An.callSync("measureText", { | |
| text: e, | |
| fontSize: r, | |
| fontFamily: a, | |
| fontWeight: o, | |
| fontStyle: i | |
| }) | |
| } | |
| , | |
| ["tap", "longTap", "touchStart", "touchMove", "touchEnd", "touchCancel"].forEach(function(e) { | |
| var t = e.charAt(0).toUpperCase() + e.slice(1); | |
| An.on("nbcomponent.canvas.on" + t, function(t) { | |
| var n = t.data | |
| , r = (n.NBPageUrl, | |
| n.element, | |
| n.eventType, | |
| n.callbackId, | |
| n.type, | |
| Dr(n, ["NBPageUrl", "element", "eventType", "callbackId", "type"])); | |
| !function(e, t, n) { | |
| var r = e.data | |
| , a = r.NBPageUrl | |
| , o = r.element | |
| , i = Ie().getPageByUrl(a); | |
| i ? i.fireNativeComponentEvent(o, t, n) : console.warn("page not exists", e) | |
| }(t, e, r) | |
| }) | |
| }); | |
| var $r = { | |
| canvasToTempFilePath: function() { | |
| for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++) | |
| t[n] = arguments[n]; | |
| vt("toTempFilePath", { | |
| caller: "refComponents." + t[0].canvasId, | |
| args: t | |
| }) | |
| }, | |
| createCanvasContext: function(e, t) { | |
| return new Ur(e,a()({}, t, { | |
| page: be() | |
| })) | |
| } | |
| }; | |
| function Vr(e, t) { | |
| this.id = e, | |
| this.page = t | |
| } | |
| var Wr = Vr.prototype; | |
| ["play", "pause", "seek", "stop", "mute", "playbackRate", "requestFullScreen", "exitFullScreen", "showStatusBar", "hideStatusBar"].forEach(function(e) { | |
| Wr[e] = function() { | |
| for (var t, n = arguments.length, r = new Array(n), a = 0; a < n; a++) | |
| r[a] = arguments[a]; | |
| (t = this.page).callRemote.apply(t, ["refComponents." + this.id, e].concat(r)) | |
| } | |
| }); | |
| var qr = { | |
| createVideoContext: function(e) { | |
| return new Vr(e,be()) | |
| } | |
| } | |
| , zr = An.callBridge | |
| , Xr = An.callBridgeSync | |
| , Jr = 0; | |
| function Gr(e) { | |
| var t = this | |
| , n = e.writes | |
| , r = e.reads | |
| , o = e.type; | |
| this.id = String(++Jr), | |
| this.callBackMap = {}, | |
| this.writes = n, | |
| this.reads = r, | |
| this.type = o, | |
| this.emitter = new E, | |
| On(this.writes).forEach(function(e) { | |
| Object.defineProperty(t, e, { | |
| set: function(t) { | |
| var n; | |
| this.writes[e].v && this.writes[e].v(t) || (this["_" + e] = t, | |
| zr("set" + this.type + "Option", a()({}, this._getParams(), { | |
| option: (n = {}, | |
| n[e] = t, | |
| n) | |
| }))) | |
| }, | |
| get: function() { | |
| return "_" + e in this ? this["_" + e] : Xr("get" + this.type + "Option", a()({}, this._getParams(), { | |
| optionName: e | |
| }))[e] | |
| } | |
| }) | |
| }), | |
| this.reads.forEach(function(e) { | |
| Object.defineProperty(t, e, { | |
| get: function() { | |
| return Xr("get" + this.type + "Option", a()({}, this._getParams(), { | |
| optionName: e | |
| }))[e] | |
| } | |
| }) | |
| }) | |
| } | |
| var Kr = Gr.prototype = { | |
| _getParams: function() { | |
| return { | |
| bizIdentifier: g().appId, | |
| audioPlayerID: this.id | |
| } | |
| }, | |
| _listen: function(e, t) { | |
| var n = this | |
| , r = this.emitter; | |
| if (r.on(e, t), | |
| 1 === r.listenerCount() && zr("startMonitor" + this.type, this._getParams()), | |
| 1 === r.listenerCount(e) && !this.callBackMap[e]) { | |
| var a = this.callBackMap[e] = function(t) { | |
| var a = t.data | |
| , o = void 0 === a ? {} : a; | |
| o.audioPlayerID && o.audioPlayerID !== n.id || r.emit(e, t) | |
| } | |
| ; | |
| An.onUserEvent(e, a) | |
| } | |
| }, | |
| _unListen: function(e, t) { | |
| var n = this.emitter; | |
| if (n.off(e, t), | |
| 0 === n.listenerCount(e)) { | |
| var r = this.callBackMap[e]; | |
| r && (An.offUserEvent(e, r), | |
| delete this.callBackMap[e]) | |
| } | |
| 0 === n.listenerCount() && zr("stopMonitor" + this.type, this._getParams()) | |
| } | |
| }; | |
| ["Canplay", "Play", "Pause", "Stop", "Ended", "TimeUpdate", "Prev", "Next", "Error", "Waiting", "Seeking", "Seeked"].forEach(function(e) { | |
| Kr["on" + e] = function(t) { | |
| this._listen("on" + this.type + e, t) | |
| } | |
| , | |
| Kr["off" + e] = function(t) { | |
| this._unListen("on" + this.type + e, t) | |
| } | |
| }), | |
| ["play", "pause", "stop", "destroy"].forEach(function(e) { | |
| Kr[e] = function() { | |
| zr("" + e + this.type, a()({ | |
| playWithNoParam: !0 | |
| }, this._getParams())) | |
| } | |
| }); | |
| var Hr = Kr.destroy; | |
| Kr.destroy = function() { | |
| var e = this; | |
| Hr.call(this), | |
| zr("stopMonitor" + this.type, this._getParams()), | |
| Object.keys(this.callBackMap).forEach(function(t) { | |
| An.offUserEvent(t, e.callBackMap[t]) | |
| }) | |
| } | |
| , | |
| Kr.seek = function(e) { | |
| zr("seek" + this.type, a()({}, this._getParams(), { | |
| position: e | |
| })) | |
| } | |
| ; | |
| var Yr = Gr; | |
| function Zr(e, t) { | |
| this.id = e, | |
| this.page = t | |
| } | |
| var Qr, ea = Zr.prototype; | |
| ["play", "pause", "seek", "setSrc"].forEach(function(e) { | |
| ea[e] = function() { | |
| for (var t, n = arguments.length, r = new Array(n), a = 0; a < n; a++) | |
| r[a] = arguments[a]; | |
| (t = this.page).callRemote.apply(t, ["refComponents." + this.id, e].concat(r)) | |
| } | |
| }); | |
| var ta = { | |
| createInnerAudioContext: function() { | |
| return new Yr({ | |
| writes: { | |
| src: { | |
| v: function(e) { | |
| return "string" != typeof e || 0 === e.length | |
| } | |
| }, | |
| startTime: { | |
| v: function(e) { | |
| return "number" != typeof e | |
| } | |
| }, | |
| autoplay: { | |
| v: function(e) { | |
| return "boolean" != typeof e | |
| } | |
| }, | |
| loop: { | |
| v: function(e) { | |
| return "boolean" != typeof e | |
| } | |
| }, | |
| obeyMuteSwitch: { | |
| v: function(e) { | |
| return "boolean" != typeof e | |
| } | |
| }, | |
| volume: { | |
| v: function(e) { | |
| return "number" != typeof e || e < 0 || e > 1 | |
| } | |
| } | |
| }, | |
| reads: ["duration", "currentTime", "paused", "buffered"], | |
| type: "ForegroundAudio" | |
| }) | |
| }, | |
| getBackgroundAudioManager: function() { | |
| return Qr || (Qr = new Yr({ | |
| writes: { | |
| src: { | |
| v: function(e) { | |
| return "string" != typeof e || 0 === e.length | |
| } | |
| }, | |
| startTime: { | |
| v: function(e) { | |
| return "number" != typeof e | |
| } | |
| }, | |
| title: {}, | |
| epname: {}, | |
| singer: {}, | |
| coverImgUrl: {}, | |
| webUrl: {} | |
| }, | |
| reads: ["duration", "currentTime", "paused", "buffered"], | |
| type: "BackgroundAudio" | |
| })) | |
| }, | |
| createAudioContext: function(e) { | |
| return new Zr(e,be()) | |
| } | |
| }; | |
| function na(e) { | |
| for (var t = "", n = new Uint8Array(e), r = n.byteLength, a = 0; a < r; a++) | |
| t += String.fromCharCode(n[a]); | |
| return function(e) { | |
| for (var t, n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", r = String(e), a = "", o = 0; r.charAt(0 | o) || (n = "=", | |
| o % 1); ) { | |
| o += .75; | |
| var i = r.charCodeAt(o); | |
| if (i > 255) | |
| throw new Error('"btoa" failed'); | |
| var c = 63 & (t = t << 8 | i) >> 8 - o % 1 * 8; | |
| a += n.charAt(c) | |
| } | |
| return a | |
| }(t) | |
| } | |
| function ra(e) { | |
| for (var t = function(e) { | |
| var t = "" | |
| , n = String(e).replace(/=+$/, ""); | |
| if (n.length % 4 == 1) | |
| throw new Error('"atob" failed'); | |
| for (var r, a, o = 0, i = 0; a = n.charAt(i); ) | |
| i += 1, | |
| ~(a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a)) && (r = o % 4 ? 64 * r + a : a, | |
| o++ % 4 && (t += String.fromCharCode(255 & r >> (-2 * o & 6)))); | |
| return t | |
| }(e), n = t.length, r = new Uint8Array(n), a = 0; a < n; a++) | |
| r[a] = t.charCodeAt(a); | |
| return r.buffer | |
| } | |
| var aa, oa = Cn("10.1.35") >= 0, ia = Cn("10.1.38") >= 0, ca = Cn("10.1.50") >= 0, sa = An.callBridge; | |
| function la() { | |
| ia && (this.callBackMap = {}, | |
| this.emitter = new E) | |
| } | |
| var ua = la.prototype = ia ? { | |
| _listen: function(e, t) { | |
| var n = this.emitter; | |
| if (n.on(e, t), | |
| 1 === n.listenerCount(e) && !this.callBackMap[e]) { | |
| var r = this.callBackMap[e] = function(t) { | |
| t.frameBuffer && "string" == typeof t.frameBuffer && (t.frameBuffer = ra(t.frameBuffer)), | |
| n.emit(e, t) | |
| } | |
| ; | |
| An.onUserEventData(e, r) | |
| } | |
| }, | |
| _unListen: function(e, t) { | |
| var n = this.emitter; | |
| if (n.off(e, t), | |
| 0 === n.listenerCount(e)) { | |
| var r = this.callBackMap[e]; | |
| r && (An.offUserEventData(e, r), | |
| delete this.callBackMap[e]) | |
| } | |
| } | |
| } : {} | |
| , fa = ["Start", "Stop", "Error"]; | |
| ca && (fa = fa.concat(["Pause", "Resume"])), | |
| fa.forEach(function(e) { | |
| var t = "record" + e; | |
| ua["on" + e] = function(e) { | |
| An.onUserEventData(t, e) | |
| } | |
| , | |
| ua["off" + e] = function(e) { | |
| An.offUserEventData(t, e) | |
| } | |
| }), | |
| ia && ["FrameRecorded"].forEach(function(e) { | |
| ua["on" + e] = function(t) { | |
| this._listen("record" + e, t) | |
| } | |
| , | |
| ua["off" + e] = function(t) { | |
| this._unListen("record" + e, t) | |
| } | |
| }), | |
| ua.start = function(e) { | |
| if (void 0 === e && (e = {}), | |
| e = a()({}, { | |
| format: "aac" | |
| }, e), | |
| -1 === ["aac", "mp3"].indexOf(e.format)) | |
| throw new Error("format格式非法"); | |
| gn && 0 == Cn("10.1.35") ? sa("startAudioRecord", e, function(e) { | |
| 2001 == e.error && An.emitUserEventData("recordError", e) | |
| }) : sa("startAudioRecord", e) | |
| } | |
| ; | |
| var pa = ["stop"]; | |
| ca && (pa = pa.concat(["pause", "resume"])), | |
| pa.forEach(function(e) { | |
| ua[e] = function(t) { | |
| void 0 === t && (t = {}), | |
| sa(e + "AudioRecord", t) | |
| } | |
| }); | |
| var da, ha = oa ? { | |
| getRecorderManager: function() { | |
| return aa || (aa = new la) | |
| } | |
| } : {}, ga = Cn("10.1.35") >= 0, va = An.callBridge; | |
| function ma() { | |
| va("registerUpdateManager") | |
| } | |
| var ya = ma.prototype = {}; | |
| ["checkForUpdate", "updateReady", "updateFailed"].forEach(function(e) { | |
| var t = Sr(e); | |
| ya["on" + t] = function(t) { | |
| An.onUserEventData(e, t) | |
| } | |
| , | |
| ya["off" + t] = function(t) { | |
| An.offUserEventData(e, t) | |
| } | |
| }), | |
| ["applyUpdate"].forEach(function(e) { | |
| ya[e] = function() { | |
| va(e) | |
| } | |
| }); | |
| var ba = ga ? { | |
| getUpdateManager: function() { | |
| return da || (da = new ma) | |
| } | |
| } : {} | |
| , wa = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , Ia = An.callInternalAPI | |
| , Pa = Cn("10.1.35") >= 0 | |
| , ka = g().appId | |
| , Ca = function() {} | |
| , Aa = {}; | |
| Pa && ["getOpenUserInfo", "getPhoneNumber", "getIDNumber"].forEach(function(e) { | |
| Aa[e] = function(t) { | |
| var n = t.success | |
| , r = void 0 === n ? Ca : n | |
| , o = t.fail | |
| , i = void 0 === o ? Ca : o | |
| , c = t.complete | |
| , s = void 0 === c ? Ca : c | |
| , l = wa(t, ["success", "fail", "complete"]); | |
| !function(e, t) { | |
| Ia("appxrpc", { | |
| operationType: "com.alipay.openapi.jsapi.invoke", | |
| requestData: [a()({ | |
| appId: ka | |
| }, e)] | |
| }, t) | |
| }(a()({ | |
| method: e | |
| }, l), function(e) { | |
| void 0 !== e.error ? i && i(e) : r && r(e), | |
| s && s(e) | |
| }) | |
| } | |
| }); | |
| var Ta = Aa; | |
| function Sa(e, t, n) { | |
| var r, a, o, i, c, s, l = 0, u = !1, f = !1, p = !0, d = !t && 0 !== t && "function" == typeof requestAnimationFrame; | |
| function h(t) { | |
| var n = r | |
| , o = a; | |
| return r = a = void 0, | |
| l = t, | |
| i = e.apply(o, n) | |
| } | |
| function g(e, t) { | |
| return d ? requestAnimationFrame(e) : setTimeout(e, t) | |
| } | |
| function v(e) { | |
| var n = e - s; | |
| return void 0 === s || n >= t || n < 0 || f && e - l >= o | |
| } | |
| function m() { | |
| var e = Date.now(); | |
| if (v(e)) | |
| return y(e); | |
| c = g(m, function(e) { | |
| var n = e - l | |
| , r = t - (e - s); | |
| return f ? Math.min(r, o - n) : r | |
| }(e)) | |
| } | |
| function y(e) { | |
| return c = void 0, | |
| p && r ? h(e) : (r = a = void 0, | |
| i) | |
| } | |
| t = +t || 0, | |
| n && (u = n.leading, | |
| o = (f = "maxWait"in n) ? Math.max(+n.maxWait || 0, t) : o, | |
| p = "trailing"in n ? n.trailing : p); | |
| var b = function() { | |
| for (var e = Date.now(), n = v(e), o = arguments.length, p = new Array(o), d = 0; d < o; d++) | |
| p[d] = arguments[d]; | |
| if (r = p, | |
| a = this, | |
| s = e, | |
| n) { | |
| if (void 0 === c) | |
| return function(e) { | |
| return l = e, | |
| c = g(m, t), | |
| u ? h(e) : i | |
| }(s); | |
| if (f) | |
| return c = g(m, t), | |
| h(s) | |
| } | |
| return void 0 === c && (c = g(m, t)), | |
| i | |
| }; | |
| return b.cancel = function() { | |
| void 0 !== c && function(e) { | |
| if (d) | |
| return cancelAnimationFrame(e); | |
| clearTimeout(e) | |
| }(c), | |
| l = 0, | |
| r = s = a = c = void 0 | |
| } | |
| , | |
| b.flush = function() { | |
| return void 0 === c ? i : y(Date.now()) | |
| } | |
| , | |
| b.pending = function() { | |
| return void 0 !== c | |
| } | |
| , | |
| b | |
| } | |
| var Oa = An.callBridge | |
| , Ea = An.callInternalAPI | |
| , xa = "SDKVersion=" + yn | |
| , Ma = self | |
| , _a = "digest" | |
| , Ba = "all" | |
| , Da = {}; | |
| function ja(e, t) { | |
| var n = "my." + e + ".call"; | |
| Da[n] = Da[n] || { | |
| call: 0, | |
| success: 0 | |
| }, | |
| Da[n][t] = Da[n][t] + 1 | |
| } | |
| function Ra(e) { | |
| Oa("remoteLog", e) | |
| } | |
| function La(e) { | |
| ja(e, "success"), | |
| Na() | |
| } | |
| function Ua(e, t, n) { | |
| var r = "my." + e + ".fail"; | |
| switch (Ba) { | |
| case "digest": | |
| Ra({ | |
| bizType: ur, | |
| type: "behavior", | |
| actionId: "event", | |
| seedId: r, | |
| param4: xa | |
| }); | |
| break; | |
| case "all": | |
| Ra({ | |
| bizType: ur, | |
| type: "behavior", | |
| actionId: "event", | |
| seedId: r, | |
| param2: sr(t), | |
| param3: sr(n), | |
| param4: xa | |
| }); | |
| default: | |
| return | |
| } | |
| } | |
| Ea("getConfig4Appx", { | |
| key: "tinyApLogLevel" | |
| }, function(e) { | |
| if (void 0 === e && (e = {}), | |
| e.configKey) { | |
| var t; | |
| try { | |
| t = JSON.parse(e.configKey) | |
| } catch (e) { | |
| console.error(e) | |
| } | |
| t && (_a = t.apicall || _a, | |
| Ba = t.exception || Ba) | |
| } | |
| }); | |
| var Na = function() { | |
| var e = On(Da).map(function(e) { | |
| var t = Da[e]; | |
| return e + "(" + t.call + "$" + t.success + ")" | |
| }).join("|"); | |
| Da = {}, | |
| Ra({ | |
| bizType: ur, | |
| type: "behavior", | |
| actionId: "event", | |
| seedId: "jsapi_call_result", | |
| param2: e, | |
| param4: xa | |
| }) | |
| }; | |
| function Fa(e) { | |
| return e.error && e.error < 0 | |
| } | |
| function $a(e, t) { | |
| Ma.__appxRemoteDebug && Cn("10.1.35") >= 0 && Ea("tinyAppStandardLog", { | |
| category: "error", | |
| message: t.errorMessage || t.errorMsg || t.error, | |
| description: t.errorMessage || t.errorMsg || t.error, | |
| logId: "JSAPI_" + e + "_" + t.error, | |
| output: "ide" | |
| }) | |
| } | |
| Na = function(e, t, n) { | |
| var r = !0 | |
| , a = !0; | |
| return n && (r = "leading"in n ? n.leading : r, | |
| a = "trailing"in n ? n.trailing : a), | |
| Sa(e, t, { | |
| leading: r, | |
| maxWait: t, | |
| trailing: a | |
| }) | |
| }(Na, 500); | |
| var Va = Cn("10.1.38") | |
| , Wa = {} | |
| , qa = function(e) { | |
| var t = !1 | |
| , n = { | |
| 63300044: "https://gw.alipayobjects.com/as/g/appx-extra-component/mini-favorite/1.2.0/index.worker.js", | |
| 63300045: "https://gw.alipayobjects.com/as/g/zm-mini-app/creditCounter/0.0.43/index.worker.js", | |
| 63300062: "https://gw.alipayobjects.com/as/g/appx-extra-component/add2home/1.0.0/index.worker.js" | |
| }; | |
| if (0 === Va && gn && n[e]) | |
| K(n[e]); | |
| else if (Va < 0 && "63300044" === e) | |
| K(n[e]); | |
| else { | |
| var r = An.callInternalAPISync("addPkgRes", { | |
| resAppId: e | |
| }); | |
| r && r.urls && r.urls.forEach(function(e) { | |
| t || !function(e, t) { | |
| return e && e.slice(0 - t.length) === t | |
| }(e, "index.worker.js") || Wa[e] || (K(e), | |
| t = !0, | |
| Wa[e] = !0) | |
| }) | |
| } | |
| } | |
| , za = { | |
| "zm-evaluation": "63300045", | |
| favorite: "63300044", | |
| "favorite-modal": "63300055", | |
| "add-to-home": "63300062" | |
| } | |
| , Xa = { | |
| "ap.faceVerify": { | |
| appId: "63300057", | |
| minVersion: "10.1.50" | |
| }, | |
| "ap.zimIdentity": { | |
| appId: "63300057", | |
| minVersion: "10.1.50" | |
| } | |
| } | |
| , Ja = Cn("10.1.35") >= 0 | |
| , Ga = Cn("10.1.38") >= 0 | |
| , Ka = Cn("10.1.50") >= 0 | |
| , Ha = { | |
| alert: { | |
| object: { | |
| confirmColor: Ga | |
| } | |
| }, | |
| confirm: { | |
| object: { | |
| cancelColor: Ga, | |
| confirmColor: Ga | |
| } | |
| }, | |
| prompt: { | |
| object: { | |
| cancelColor: Ga, | |
| confirmColor: Ga | |
| } | |
| }, | |
| navigateToMiniProgram: { | |
| object: { | |
| envVersion: 1, | |
| version: Ja | |
| } | |
| }, | |
| navigateToMiniService: { | |
| object: { | |
| servicePage: 1 | |
| } | |
| }, | |
| showActionSheet: { | |
| object: { | |
| badges: 1 | |
| } | |
| }, | |
| camera: Ja && In, | |
| createCanvasContext: { | |
| return: { | |
| measureText: 1, | |
| getImageData: 1, | |
| putImageData: 1, | |
| globalCompositeOperation: 1, | |
| draw: { | |
| callback: 1 | |
| }, | |
| toDataURL: 1 | |
| } | |
| }, | |
| createVideoContext: { | |
| return: { | |
| mute: 1, | |
| stop: 1, | |
| playbackRate: 1, | |
| requestFullScreen: 1, | |
| exitFullScreen: 1, | |
| showStatusBar: 1, | |
| hideStatusBar: 1 | |
| } | |
| }, | |
| chooseImage: { | |
| object: { | |
| sizeType: 1 | |
| }, | |
| return: { | |
| tempFiles: 1 | |
| } | |
| }, | |
| previewImage: { | |
| object: { | |
| enableSavePhoto: 1, | |
| enableShowPhotoDownload: Ja | |
| } | |
| }, | |
| component: 1, | |
| cdp: In, | |
| page: { | |
| onOptionMenuClick: 1, | |
| setData: { | |
| callback: 1 | |
| }, | |
| $spliceData: 1, | |
| onPopMenuClick: Ja, | |
| onTabItemTap: Ja, | |
| onPullIntercept: Ja, | |
| onPullDownRefresh: { | |
| object: { | |
| from: 1 | |
| } | |
| } | |
| }, | |
| getLocation: { | |
| object: { | |
| type: 1 | |
| } | |
| }, | |
| button: { | |
| "open-type": { | |
| share: 1, | |
| lifestyle: Ja, | |
| launchApp: Ja, | |
| getAuthorize: Ja, | |
| contactShare: Ja | |
| } | |
| }, | |
| datePicker: { | |
| object: { | |
| format: { | |
| yyyy: 1, | |
| "yyyy-MM": 1 | |
| } | |
| } | |
| }, | |
| getImageInfo: { | |
| return: { | |
| orientation: 1, | |
| type: 1 | |
| } | |
| }, | |
| getSystemInfo: { | |
| return: { | |
| storage: 1, | |
| currentBattery: 1, | |
| brand: 1, | |
| fontSizeSetting: 1 | |
| } | |
| }, | |
| getRecorderManager: { | |
| return: { | |
| onFrameRecorded: Ga, | |
| offFrameRecorded: Ga, | |
| pause: Ka, | |
| resume: Ka, | |
| onPause: Ka, | |
| offPause: Ka, | |
| onResume: Ka, | |
| offResume: Ka | |
| } | |
| }, | |
| favorite: 1, | |
| form: { | |
| "report-submit": 1 | |
| }, | |
| lifestyle: { | |
| onFollow: 1 | |
| }, | |
| "live-player": Ka && In, | |
| "live-pusher": Ka && In, | |
| lottie: Ja && In ? { | |
| assetsPath: Ka | |
| } : 0, | |
| connectSocket: { | |
| object: { | |
| protocols: 1, | |
| multiple: Ja | |
| }, | |
| return: { | |
| send: Ja, | |
| close: Ja, | |
| onMessage: Ja, | |
| onOpen: Ja, | |
| onClose: Ja, | |
| onError: Ja, | |
| offMessage: Ja, | |
| offOpen: Ja, | |
| offClose: Ja, | |
| offError: Ja | |
| } | |
| }, | |
| closeSocket: { | |
| object: { | |
| code: 1, | |
| reason: 1 | |
| } | |
| }, | |
| scan: { | |
| object: { | |
| hideAlbum: 1, | |
| actionType: Ga | |
| } | |
| }, | |
| "contact-button": { | |
| "ext-info": 1, | |
| size: 1, | |
| color: 1, | |
| icon: 1 | |
| }, | |
| "web-view": { | |
| "app-id": 1 | |
| }, | |
| input: { | |
| controlled: 1, | |
| "random-number": 1, | |
| "confirm-type": In, | |
| "confirm-hold": In, | |
| cursor: In, | |
| "selection-start": In, | |
| "selection-end": In, | |
| type: { | |
| numberpad: In && Ka, | |
| digitpad: In && Ka, | |
| idcardpad: In && Ka | |
| } | |
| }, | |
| switch: { | |
| controlled: 1, | |
| color: 1 | |
| }, | |
| textarea: { | |
| controlled: 1, | |
| fixed: Ja && In, | |
| cursorSpacing: Ja && In, | |
| cursor: Ja && In, | |
| showConfirmBar: Ja && In, | |
| selectionStart: Ja && In, | |
| selectionEnd: Ja && In, | |
| adjustPosition: Ja && In | |
| }, | |
| checkbox: { | |
| controlled: 1, | |
| color: 1 | |
| }, | |
| radio: { | |
| color: 1 | |
| }, | |
| video: { | |
| "initial-time": In, | |
| loop: In, | |
| muted: In, | |
| "show-fullscreen-btn": In, | |
| "show-center-play-btn": In, | |
| onLoading: In, | |
| onStop: In, | |
| direction: Ga && In, | |
| onFullScreenChange: Ga && In, | |
| "mobilenet-hint-type": Ka && In, | |
| "poster-size": In | |
| }, | |
| view: { | |
| onTransitionEnd: 1, | |
| onAnimationStart: 1, | |
| onAnimationIteration: 1, | |
| onAnimationEnd: 1, | |
| onAppear: 1, | |
| onDisappear: 1, | |
| onFirstAppear: 1 | |
| }, | |
| "scroll-view": { | |
| "enable-back-to-top": Ja | |
| }, | |
| "cover-view": In, | |
| "cover-image": In, | |
| "movable-area": 1, | |
| "movable-view": { | |
| onTouchStart: 1, | |
| onTouchMove: 1, | |
| onTouchEnd: 1, | |
| onTouchCancel: 1 | |
| }, | |
| "picker-view": { | |
| "indicator-class": 1, | |
| "mask-style": 1, | |
| "mask-class": 1 | |
| }, | |
| map: { | |
| onMarkerTap: { | |
| return: { | |
| latitude: 1, | |
| longitude: 1 | |
| } | |
| }, | |
| onTap: { | |
| return: { | |
| latitude: 1, | |
| longitude: 1 | |
| } | |
| }, | |
| onCalloutTap: { | |
| return: { | |
| latitude: 1, | |
| longitude: 1 | |
| } | |
| }, | |
| "include-padding": Ja, | |
| "ground-overlays": Ja, | |
| "tile-overlay": Ja, | |
| setting: Ka | |
| }, | |
| createMapContext: { | |
| return: { | |
| gestureEnable: 1, | |
| showsScale: 1, | |
| showsCompass: 1, | |
| showRoute: 1, | |
| clearRoute: 1, | |
| updateComponents: Ja, | |
| translateMarker: Ka | |
| } | |
| }, | |
| createWorker: Ja, | |
| downloadFile: { | |
| return: { | |
| abort: Ja, | |
| onProgressUpdate: Ja | |
| } | |
| }, | |
| uploadFile: { | |
| return: { | |
| abort: Ja, | |
| onProgressUpdate: Ja | |
| } | |
| }, | |
| "rich-text": 1, | |
| chooseVideo: { | |
| return: { | |
| tempFilePath: 1 | |
| } | |
| } | |
| }; | |
| var Ya = function() { | |
| function e(e) { | |
| this.actions = [], | |
| this.page = e | |
| } | |
| var t = e.prototype; | |
| return t.select = function(e) { | |
| return this.selector = { | |
| value: e | |
| }, | |
| this | |
| } | |
| , | |
| t.selectAll = function(e) { | |
| return this.selector = { | |
| value: e, | |
| type: "all" | |
| }, | |
| this | |
| } | |
| , | |
| t.selectViewport = function() { | |
| return this.selector = { | |
| value: "viewport" | |
| }, | |
| this | |
| } | |
| , | |
| t.boundingClientRect = function() { | |
| return this.selector && (this.actions.push({ | |
| selector: this.selector, | |
| type: "rect" | |
| }), | |
| this.selector = null), | |
| this | |
| } | |
| , | |
| t.scrollOffset = function() { | |
| return this.selector && (this.actions.push({ | |
| selector: this.selector, | |
| type: "scroll" | |
| }), | |
| this.selector = null), | |
| this | |
| } | |
| , | |
| t.exec = function(e) { | |
| var t = this.page || be(); | |
| t && t.callRemote("bridge", "createSelectorQuery", this.actions, e) | |
| } | |
| , | |
| e | |
| }(); | |
| var Za = Cn("10.1.35") >= 0 | |
| , Qa = function() {} | |
| , eo = {}; | |
| function to() { | |
| return "miniService" === Ie().launchOptions.scene | |
| } | |
| function no() { | |
| var e = g(); | |
| return to() ? e.parentAppId : e.appId | |
| } | |
| function ro() { | |
| var e = g(); | |
| return to() ? e.appId : void 0 | |
| } | |
| function ao(e, t, n) { | |
| void 0 === n && (n = {}); | |
| var r = e.serviceId | |
| , o = e.servicePage; | |
| return a()({ | |
| serviceId: r, | |
| servicePage: o | |
| }, n, { | |
| params: { | |
| referrerInfo: JSON.stringify(t) | |
| } | |
| }) | |
| } | |
| function oo(e, t) { | |
| t(e), | |
| function(e) { | |
| eo[e.serviceId] = { | |
| success: e.success || Qa, | |
| fail: e.fail || Qa, | |
| complete: e.complete || Qa | |
| } | |
| }(e) | |
| } | |
| var io = { | |
| navigateToMiniService: function(e) { | |
| if (!(!to() || to() && Za)) | |
| throw new Error("miniService can't navigateTo miniService " + e.serviceId); | |
| oo(e, function(e) { | |
| var t = { | |
| appId: no(), | |
| sourceServiceId: ro(), | |
| data: e.extraData | |
| }; | |
| An.callBridge("navigateToMiniService", ao(e, t)) | |
| }) | |
| }, | |
| navigateBackFromMiniService: function(e) { | |
| void 0 === e && (e = {}), | |
| An.callBridge("navigateBackFromMiniService", { | |
| data: e | |
| }) | |
| } | |
| }; | |
| Cn("10.1.38") >= 0 && (io.startMiniService = function(e) { | |
| void 0 === e && (e = {}), | |
| oo(e, function(e) { | |
| var t = e.parentAppId | |
| , n = e.sourceId | |
| , r = e.extraData | |
| , a = { | |
| appId: t || no(), | |
| sourceServiceId: n || ro(), | |
| data: r | |
| }; | |
| An.callInternalAPI("startMiniService", ao(e, a, { | |
| parentAppId: t, | |
| sourceId: n | |
| })) | |
| }) | |
| } | |
| ), | |
| An.on("onMiniServiceMessage", function(e) { | |
| var t = e.data | |
| , n = eo[t.serviceId]; | |
| if (!n) | |
| throw new Error("not find callback for " + t.serviceId); | |
| var r = { | |
| action: t.action, | |
| data: t.data | |
| }; | |
| t.error ? (r.error = t.error, | |
| r.errorMessage = t.errorMessage || "", | |
| n.fail(r)) : n.success(r), | |
| n.complete(r), | |
| delete eo[t.serviceId] | |
| }); | |
| var co = io | |
| , so = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , lo = An.callBridge | |
| , uo = 0; | |
| function fo() { | |
| this.id = String(++uo), | |
| this.callBackMap = {}, | |
| this.type = "SocketTask", | |
| this.emitter = new E | |
| } | |
| var po = fo.prototype = { | |
| _getParams: function() { | |
| return { | |
| bizIdentifier: g().appId, | |
| socketTaskID: this.id | |
| } | |
| }, | |
| _listen: function(e, t) { | |
| var n = this | |
| , r = this.emitter; | |
| if (r.on(e, t), | |
| 1 === r.listenerCount(e) && !this.callBackMap[e]) { | |
| var a = this.callBackMap[e] = function(t) { | |
| var a = t.data; | |
| (void 0 === a ? {} : a).socketTaskID === n.id && r.emit(e, t) | |
| } | |
| ; | |
| An.onUserEvent(e, a) | |
| } | |
| }, | |
| _unListen: function(e, t) { | |
| var n = this.emitter; | |
| if (n.off(e, t), | |
| 0 === n.listenerCount(e)) { | |
| var r = this.callBackMap[e]; | |
| r && (An.offUserEvent(e, r), | |
| delete this.callBackMap[e]) | |
| } | |
| }, | |
| __doAction: function(e, t) { | |
| var n = go(e) | |
| , r = n.success | |
| , o = n.fail | |
| , i = so(n, ["success", "fail"]); | |
| lo(t, a()({}, i, this._getParams()), function(e) { | |
| (e = vo(e)) && e.error ? o(e) : r(e) | |
| }) | |
| }, | |
| send: function(e) { | |
| this.__doAction(e, "sendSocketMessage") | |
| }, | |
| close: function(e) { | |
| this.__doAction(e, "closeSocket") | |
| } | |
| }; | |
| function ho() {} | |
| ["Close", "Error", "Message", "Open"].forEach(function(e) { | |
| po["on" + e] = function(t) { | |
| this._listen("on" + this.type + e, t) | |
| } | |
| , | |
| po["off" + e] = function(t) { | |
| this._unListen("on" + this.type + e, t) | |
| } | |
| }); | |
| var go = function(e) { | |
| var t = e.success | |
| , n = void 0 === t ? ho : t | |
| , r = e.fail | |
| , o = void 0 === r ? ho : r | |
| , i = e.complete | |
| , c = void 0 === i ? ho : i | |
| , s = so(e, ["success", "fail", "complete"]); | |
| return a()({ | |
| success: function(e) { | |
| n(e), | |
| c(e) | |
| }, | |
| fail: function(e) { | |
| o(e), | |
| c(e) | |
| } | |
| }, s) | |
| }; | |
| function vo(e) { | |
| return "string" == typeof e.error && (e.error = parseInt(e.error, 10)), | |
| 0 === e.error && (delete e.error, | |
| delete e.errorMessage), | |
| e | |
| } | |
| var mo = { | |
| connectSocket: function(e) { | |
| var t = go(e) | |
| , n = t.success | |
| , r = t.fail | |
| , o = so(t, ["success", "fail"]) | |
| , i = function(e) { | |
| (e = vo(e)) && e.error ? r(e) : n(e) | |
| }; | |
| if (e.multiple) { | |
| var c = new fo; | |
| return lo("connectSocket", a()({}, o, c._getParams()), i), | |
| c | |
| } | |
| lo("connectSocket", o, i) | |
| } | |
| } | |
| , yo = { | |
| env: { | |
| USER_DATA_PATH: "https://usr" | |
| } | |
| } | |
| , bo = Cn("10.1.35") >= 0 | |
| , wo = An.callBridge; | |
| var Io = 0; | |
| function Po() { | |
| this.id = String(++Io), | |
| this.callBackMap = {}, | |
| this.emitter = new E | |
| } | |
| Po.prototype = { | |
| _getParams: function() { | |
| return { | |
| bizIdentifier: g().appId, | |
| workerId: this.id | |
| } | |
| }, | |
| _unListen: function(e, t) { | |
| var n = this.emitter; | |
| if (n.off(e, t), | |
| 0 === n.listenerCount(e)) { | |
| var r = this.callBackMap[e]; | |
| r && (An.offUserEventData(e, r), | |
| delete this.callBackMap[e]) | |
| } | |
| }, | |
| _listen: function(e, t) { | |
| var n = this | |
| , r = this.emitter; | |
| if (r.on(e, t), | |
| 1 === r.listenerCount(e) && !this.callBackMap[e]) { | |
| var a = this.callBackMap[e] = function(t) { | |
| void 0 === t && (t = {}), | |
| t.workerId === n.id && r.emit(e, t.message) | |
| } | |
| ; | |
| An.onUserEventData(e, a) | |
| } | |
| }, | |
| postMessage: function(e) { | |
| wo("multiWorkerPostMessage", a()({ | |
| message: e | |
| }, this._getParams())) | |
| }, | |
| onMessage: function(e) { | |
| this._listen("multiWorkerMessage", e) | |
| }, | |
| offMessage: function(e) { | |
| this._unListen("multiWorkerMessage", e) | |
| }, | |
| terminate: function() { | |
| var e = this; | |
| wo("multiWorkerTerminate", a()({}, this._getParams())), | |
| Object.keys(this.callBackMap).forEach(function(t) { | |
| An.offUserEvent(t, e.callBackMap[t]) | |
| }) | |
| } | |
| }; | |
| var ko = bo ? { | |
| createWorker: function(e) { | |
| var t = new Po; | |
| return wo("createWorker", a()({ | |
| scriptPath: e | |
| }, t._getParams())), | |
| t | |
| } | |
| } : {} | |
| , Co = a()({}, ko) | |
| , Ao = An.callInternalAPI | |
| , To = "setOptionMenu" | |
| , So = "showOptionMenu"; | |
| !gn && (To = "setTAOptionMenu", | |
| So = "showTAOptionMenu"); | |
| var Oo = { | |
| setOptionMenu: function(e, t) { | |
| Ao(To, a()({}, e, { | |
| viewId: t, | |
| bizType: "tiny" | |
| })), | |
| Ao(So, { | |
| viewId: t | |
| }) | |
| } | |
| }; | |
| function Eo() { | |
| var e = be(); | |
| return e && e.getViewId() | |
| } | |
| var xo = An.callBridge; | |
| var Mo = 0 | |
| , _o = {}; | |
| function Bo(e, t) { | |
| this.intersectionObserverId = "pageMonitor-" + Mo++, | |
| this.options = a()({ | |
| thresholds: [0], | |
| initialRatio: 0, | |
| selectAll: !1 | |
| }, e), | |
| this.relativeInfo = [], | |
| this.disconnected = !1, | |
| this.page = t | |
| } | |
| Bo.prototype = { | |
| relativeToViewport: function(e) { | |
| return this.relativeInfo.push({ | |
| selector: null, | |
| margins: e | |
| }), | |
| this | |
| }, | |
| relativeTo: function(e, t) { | |
| return this.relativeInfo.push({ | |
| selector: e, | |
| margins: t | |
| }), | |
| this | |
| }, | |
| observe: function(e, t) { | |
| this.disconnected ? console.warn("已经取消监听") : (_o[this.intersectionObserverId] = t, | |
| this.page.callRemote("bridge", "addIntersectionObserver", { | |
| intersectionObserverId: this.intersectionObserverId, | |
| options: this.options, | |
| relativeInfo: this.relativeInfo, | |
| targetSelector: e | |
| })) | |
| }, | |
| disconnect: function() { | |
| this.disconnected || (this.page.callRemote("bridge", "removeIntersectionObserver", this.intersectionObserverId), | |
| delete _o[this.intersectionObserverId], | |
| this.disconnected = !0) | |
| } | |
| }; | |
| var Do = { | |
| createIntersectionObserver: function(e) { | |
| return new Bo(e,be()) | |
| }, | |
| _fireIntersectionObserver: function(e) { | |
| e && "function" == typeof _o[e.intersectionObserverId] && _o[e.intersectionObserverId](e.info) | |
| } | |
| }; | |
| function jo(e, t) { | |
| return "%s" === e ? t = function(e) { | |
| return "object" == typeof e ? JSON.stringify(e) : e + "" | |
| }(t) : "%c" === e ? t = function(e) { | |
| var t = "" + e; | |
| return 0 === t.indexOf("#") && (t = t.substr(1)), | |
| 3 === t.length && (t = t.replace(/(.)/g, "$1$1")), | |
| t = parseInt(t, 16), | |
| isNaN(t) && console.error(e + " is invalid hex color."), | |
| t | |
| }(t) : "%b" === e ? t = function(e) { | |
| return "string" == typeof e && (e = e.replace(/^data:(\/|\w|\-|\.)+;base64,/i, "")), | |
| e | |
| }(t) : "%d" === e ? t = parseInt(t, 10) : "%f" === e && (t = parseFloat(t)), | |
| t | |
| } | |
| function Ro(e, t, n) { | |
| var r; | |
| return n = n || {}, | |
| On(t).forEach(function(a) { | |
| var o = t[a]; | |
| void 0 !== (o = (r = function(e) { | |
| var t = (e || "").match(/(\w+)(%\w)$/i) | |
| , n = { | |
| k: e | |
| }; | |
| return t && (n.k = t[1], | |
| n.t = t[2]), | |
| n | |
| }(o)).k) && (a in e || a in n) && void 0 === e[o] && (e[o] = jo(r.t, void 0 === n[a] ? e[a] : n[a]), | |
| o !== a && delete e[a]) | |
| }), | |
| e | |
| } | |
| var Lo = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , Uo = Cn("10.1.35") >= 0 | |
| , No = An.callBridge | |
| , Fo = new E; | |
| function $o(e) { | |
| return f.a.stringify(e) | |
| } | |
| var Vo = { | |
| downloadFile: { | |
| b: function(e, t) { | |
| e.downloadTaskId = t.taskId, | |
| Ro(e, { | |
| headers: "header" | |
| }) | |
| }, | |
| a: function(e) { | |
| Ro(e, { | |
| tempFilePath: "apFilePath", | |
| errorCode: "error" | |
| }), | |
| delete e.tempFilePath | |
| }, | |
| c: function(e) { | |
| No("operateDownloadTask", { | |
| downloadTaskId: e.taskId, | |
| operationType: "abort" | |
| }) | |
| }, | |
| p: "downloadTask" | |
| }, | |
| uploadFile: { | |
| b: function(e, t) { | |
| e.uploadTaskId = t.taskId, | |
| Ro(e, { | |
| headers: "header", | |
| fileName: "name", | |
| fileType: "type" | |
| }), | |
| function(e) { | |
| return /^[a-z0-9|]+$/i.test(e) | |
| }(e.filePath) && (e.localId = e.filePath, | |
| delete e.filePath) | |
| }, | |
| a: function(e) { | |
| 2 === e.error && (e.error = 11) | |
| }, | |
| c: function(e) { | |
| No("operateUploadTask", { | |
| uploadTaskId: e.taskId, | |
| operationType: "abort" | |
| }) | |
| }, | |
| p: "uploadTask" | |
| } | |
| }; | |
| Uo && a()(Vo, { | |
| request: { | |
| b: function(e, t) { | |
| e.requestTaskId = t.taskId; | |
| e.method = (e.method || "GET").toUpperCase(), | |
| e.dataType = (e.dataType || "json").toLowerCase(), | |
| e.responseType = e.dataType, | |
| e.responseType = "base64" !== e.responseType ? "text" : "base64"; | |
| var n, r = e.headers = e.headers || {}, a = r["content-type"] = r["content-type"] || "application/json"; | |
| if (n = void 0 === e.data ? "" : "string" != typeof e.data ? a.indexOf("application/x-www-form-urlencoded") > -1 ? $o(e.data) : a.indexOf("application/json") > -1 ? JSON.stringify(e.data) : "object" == typeof e.data ? JSON.stringify(e.data) : e.data.toString() : e.data, | |
| "GET" === e.method && (e.url = function(e, t) { | |
| var n = t; | |
| return "object" == typeof t && (n = $o(t)), | |
| /\?/.test(e) ? /&$/.test(e) || /\?$/.test(e) || (n = "&" + n) : n = "?" + n, | |
| e + n | |
| }(e.url, e.data)), | |
| e.data = n, | |
| gn) { | |
| var o = []; | |
| On(e.headers).forEach(function(t) { | |
| var n = {}; | |
| n[t] = e.headers[t], | |
| o.push(n) | |
| }), | |
| e.headers = o | |
| } | |
| }, | |
| a: function(e, t) { | |
| if ("json" === t.dataType && e.data) | |
| try { | |
| e.data = JSON.parse(e.data) | |
| } catch (t) { | |
| return e.error = 14, | |
| void (e.errorMessage = "JSON parse data error") | |
| } | |
| if ("base64" === t.dataType && e.data && e.headers && (e.data = function(e, t) { | |
| return e && t && (e = "data:" + t + ";base64," + e), | |
| e | |
| }(e.data, e.headers["Content-Type"])), | |
| "status"in e) { | |
| var n = e.status + ""; | |
| /^[45]/.test(n) && (e.error = 19, | |
| e.errorMessage = "http status error") | |
| } | |
| }, | |
| c: function(e) { | |
| No("operateRequestTask", { | |
| requestTaskId: e.taskId, | |
| operationType: "abort" | |
| }) | |
| } | |
| } | |
| }), | |
| ["downloadTask", "uploadTask"].forEach(function(e) { | |
| An.onUserEvent(e + "StateChange", function(t) { | |
| var n = t.data | |
| , r = n.downloadTaskId | |
| , a = n.uploadTaskId | |
| , o = Lo(n, ["downloadTaskId", "uploadTaskId"]) | |
| , i = "downloadTask" === e ? r : a; | |
| Fo.emit("" + e + i + "progressUpdate", o) | |
| }) | |
| }); | |
| var Wo = {}; | |
| On(Vo).forEach(function(e) { | |
| var t = Vo[e] || {} | |
| , n = 0; | |
| Wo[e] = function(r) { | |
| void 0 === r && (r = {}), | |
| n += 1; | |
| var o, i, c = r, s = c.success, l = c.fail, u = c.complete, f = Lo(r, ["success", "fail", "complete"]); | |
| t && t.b && t.b(f, { | |
| taskId: n | |
| }); | |
| var p = function(e, r) { | |
| return function(a) { | |
| if (!i) { | |
| i = !0; | |
| var o = Tr({ | |
| success: s, | |
| fail: l, | |
| complete: u | |
| }, e, r) | |
| , c = o.success | |
| , p = o.fail | |
| , d = a || {}; | |
| t.a && t.a(d, f), | |
| d = function(e) { | |
| return "string" == typeof e.error && (e.error = parseInt(e.error, 10)), | |
| 0 === e.error && (delete e.error, | |
| delete e.errorMessage), | |
| e | |
| }(d), | |
| t.p && Fo.off("" + t.p + n + "progressUpdate"), | |
| d && d.error ? p(d) : c(d) | |
| } | |
| } | |
| } | |
| , d = new Promise(function(e, t) { | |
| o = p(e, t) | |
| } | |
| ); | |
| No(e, f, o); | |
| var h = { | |
| abort: function() { | |
| t.c && t.c({ | |
| taskId: n | |
| }), | |
| o({ | |
| error: 9, | |
| errorMessage: e + ":fail abort" | |
| }) | |
| } | |
| }; | |
| return t.p && (h = a()({}, h, { | |
| onProgressUpdate: function(e) { | |
| Fo.on("" + t.p + n + "progressUpdate", e) | |
| } | |
| })), | |
| a()(d, h) | |
| } | |
| }); | |
| var qo = Wo | |
| , zo = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , Xo = An.callBridge | |
| , Jo = An.callBridgeSync | |
| , Go = Cn("10.1.38") >= 0 | |
| , Ko = function(e) { | |
| this.mode = e.mode, | |
| this.size = e.size, | |
| this.lastAccessedTime = e.lastAccessedTime, | |
| this.lastModifiedTime = e.lastModifiedTime, | |
| Object.defineProperty(this, "isDirectory", { | |
| value: function() { | |
| return e.is_directory | |
| } | |
| }), | |
| Object.defineProperty(this, "isFile", { | |
| value: function() { | |
| return e.is_file | |
| } | |
| }) | |
| }; | |
| function Ho(e, t) { | |
| return ["appendFile", "writeFile"].indexOf(e) > -1 && t.data instanceof ArrayBuffer && void 0 !== t.data.byteLength && (t.dataType = "ArrayBuffer", | |
| t.data = na(t.data)), | |
| t | |
| } | |
| function Yo(e, t) { | |
| return "readFile" === e && "ArrayBuffer" === t.dataType && (t = ra(t.data)), | |
| "stat" === e && (t = function(e) { | |
| if (e.error) | |
| return e; | |
| var t = {}; | |
| return Array.isArray(e.stats) ? e.stats.forEach(function(e) { | |
| t[e.path] = { | |
| path: e.path, | |
| stats: new Ko(e.stats) | |
| } | |
| }) : t = new Ko(e.stats), | |
| { | |
| stats: t | |
| } | |
| }(t)), | |
| t | |
| } | |
| function Zo() {} | |
| var Qo = Zo.prototype = {}; | |
| ["mkdir", "rmdir", "readdir", "writeFile", "copyFile", "readFile", "saveFile", "appendFile", "removeSavedFile", "getSavedFileList", "getFileInfo", "access", "rename", "unlink", "unzip", "stat"].forEach(function(e) { | |
| Qo[e] = function(t) { | |
| void 0 === t && (t = {}); | |
| var n = t | |
| , r = n.success | |
| , o = n.fail | |
| , i = n.complete | |
| , c = zo(t, ["success", "fail", "complete"]); | |
| Xo("fsManage", a()({ | |
| action: e | |
| }, Ho(e, c)), function(t) { | |
| (t = Yo(e, t)).error ? o && o(t) : r && r(t), | |
| i && i(t) | |
| }) | |
| } | |
| , | |
| "unzip" !== e && (Qo[e + "Sync"] = function(t) { | |
| void 0 === t && (t = {}); | |
| var n = Jo("fsManage", a()({ | |
| action: e | |
| }, Ho(e, t))); | |
| return Yo(e, n) | |
| } | |
| ) | |
| }); | |
| var ei = Go ? { | |
| getFileSystemManager: function() { | |
| return new Zo | |
| } | |
| } : {} | |
| , ti = 0 | |
| , ni = 0; | |
| An.on("titleClick", function() { | |
| var e = Date.now(); | |
| e - ni < 250 ? 5 === ++ti && (ti = 0, | |
| An.callBridge("alert", { | |
| title: yn + " 12-12 15:41:56", | |
| message: "" + (g().version || g().appVersion || "-") | |
| })) : ti = 0, | |
| ni = e | |
| }); | |
| var ri = An.callInternalAPI; | |
| function ai(e) { | |
| var t = be(); | |
| t && t.publicInstance.onOptionMenuClick && t.publicInstance.onOptionMenuClick(e) | |
| } | |
| x.addListener("pageLoad", function(e) { | |
| var t = e.page; | |
| (function() { | |
| var e = Pr() | |
| , t = On(D.tabsConfig) | |
| , n = ye()[0].getPagePath(); | |
| return e && n !== e && -1 === t.indexOf(n) | |
| } | |
| )() && ri("showBackHome", { | |
| viewId: t.getViewId() | |
| }) | |
| }), | |
| An.on("onBackHomeClick", function() { | |
| var e = Pr(); | |
| e && ("/" !== e.charAt(0) && (e = "/" + e), | |
| D.bridge.reLaunch({ | |
| url: e | |
| })) | |
| }), | |
| x.addListener("pageLoad", function(e) { | |
| var t = e.page; | |
| if (Oo.setOptionMenu) { | |
| var n = function(e) { | |
| var t = self.appXAppJson | |
| , n = void 0 === t ? {} : t | |
| , r = n[e.getPagePath()] | |
| , a = n.app; | |
| return r && r.optionMenu || a && a.window && a.window.optionMenu | |
| }(t); | |
| n && Oo.setOptionMenu(n, t.getViewId()) | |
| } | |
| }), | |
| An.onUserEvent("tinyOptionMenu", ai), | |
| An.onUserEvent("optionMenu", ai); | |
| var oi = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| } | |
| , ii = An.callBridge | |
| , ci = An.callInternalAPI; | |
| function si(e) { | |
| if (this && this.publicInstance.onShareAppMessage) { | |
| var t = {}; | |
| e && e.target && "button" === e.target.tagName && (t.from = "button", | |
| t.target = e.target); | |
| var n = this.publicInstance.onShareAppMessage(t); | |
| if ("object" != typeof n) | |
| return console.error("请检查onShareAppMessage代码,需要返回一个对象,并包含必填参数"), | |
| null; | |
| li.call(this, "shareToAlipayContact", n) | |
| } | |
| } | |
| function li(e, t) { | |
| void 0 === t && (t = {}); | |
| var n = t | |
| , r = n.fail | |
| , o = n.success | |
| , i = n.complete | |
| , c = n.path | |
| , s = oi(t, ["fail", "success", "complete", "path"]); | |
| ci(e, a()({}, s, { | |
| page: c || this.getPagePath() | |
| }), function(e) { | |
| fi(e), | |
| !e.shareResult && r && r(e), | |
| e.shareResult && o && o(e), | |
| i && i(e) | |
| }) | |
| } | |
| function ui(e) { | |
| var t, n = this && this.publicInstance.onShareAppMessage, r = Ie().publicInstance.onShareAppMessage; | |
| if ("function" == typeof n || "function" == typeof r) { | |
| var a = { | |
| from: "menu" | |
| }; | |
| if (e && e.data && e.data.webViewUrl && (a.webViewUrl = e.data.webViewUrl), | |
| e && e.target && "button" === e.target.tagName && (a.from = "button", | |
| a.target = e.target), | |
| "object" != typeof (t = n ? n.call(this.publicInstance, a) : r.call(Ie().publicInstance, a))) | |
| return console.error("请检查onShareAppMessage代码,需要返回一个对象,并包含必填参数"), | |
| null; | |
| li.call(this, "shareTinyAppMsg", t) | |
| } else | |
| ci("shareTinyAppMsg", { | |
| page: this.getPagePath() | |
| }, function(e) { | |
| fi(e) | |
| }) | |
| } | |
| function fi(e) { | |
| or.trackerEnabled && ii("remoteLog", a()({}, Cr(), { | |
| actionId: "auto_share", | |
| param4: sr({ | |
| SDKVersion: yn, | |
| channel: e.channelName, | |
| shareResult: e.shareResult | |
| }) | |
| })) | |
| } | |
| x.addListener("pageLoad", function(e) { | |
| var t = e.page; | |
| "miniService" !== Ie().launchOptions.scene ? (t.startShare = ui, | |
| t.shareToAlipayContact = si) : t.publicInstance.onShareAppMessage && ii("setShowShareMenu", { | |
| showShareMenu: !0 | |
| }) | |
| }), | |
| An.on("afterShare", function(e) { | |
| fi(e.data) | |
| }), | |
| An.on("onShare", function(e) { | |
| var t = be(); | |
| ui.call(t, e) | |
| }); | |
| var pi = An.callBridge | |
| , di = An.callInternalAPI | |
| , hi = "SDKVersion=" + yn; | |
| x.addListener("pageLoad", function(e) { | |
| var t = e.page | |
| , n = g() | |
| , r = n.chInfo | |
| , o = n.app_startup_type | |
| , i = n.appId; | |
| or.trackerEnabled && pi("reportData", { | |
| spm: a()({ | |
| chInfo: r | |
| }, Cr(t.getPagePath())), | |
| spmDetail: { | |
| appId: i, | |
| app_startup_type: o | |
| } | |
| }) | |
| }), | |
| x.addListener("launch", function() { | |
| pi("setTabBar", { | |
| actionType: "enable" | |
| }), | |
| di("onAppPerfEvent", { | |
| state: "appLoaded" | |
| }), | |
| di("setAppxVersion", { | |
| appxVersion: yn | |
| }), | |
| pi("remoteLog", { | |
| bizType: ur, | |
| type: "behavior", | |
| actionId: "event", | |
| seedId: "app.launch", | |
| param4: hi | |
| }) | |
| }), | |
| x.addListener("foreground", function(e) { | |
| e && (e._scene || e.scene) && di("onAppPerfEvent", { | |
| state: "appResume" | |
| }) | |
| }); | |
| var gi = !1; | |
| x.addListener("pageReady", function(e) { | |
| var t = e.page | |
| , n = { | |
| state: "pageLoaded", | |
| page: t.getPagePath() | |
| }; | |
| gi ? n.loadTime = Date.now() - t.$startTime : gi = !0, | |
| di("onAppPerfEvent", n) | |
| }), | |
| An.on("titleClick", function() { | |
| var e = be(); | |
| e && e.publicInstance.onTitleClick && e.publicInstance.onTitleClick() | |
| }), | |
| An.on("firePullToRefresh", function(e) { | |
| var t = be(); | |
| if (t) { | |
| var n = (e.data || {}).from || "manual"; | |
| t.pullDownRefresh({ | |
| from: n | |
| }) | |
| } | |
| return !1 | |
| }), | |
| An.on("pullIntercept", function() { | |
| var e = be(); | |
| e && e.publicInstance.onPullIntercept && e.publicInstance.onPullIntercept() | |
| }); | |
| var vi, mi = function(e, t) { | |
| var n = {}; | |
| for (var r in e) | |
| Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]); | |
| if (null != e && "function" == typeof Object.getOwnPropertySymbols) { | |
| var a = 0; | |
| for (r = Object.getOwnPropertySymbols(e); a < r.length; a++) | |
| t.indexOf(r[a]) < 0 && (n[r[a]] = e[r[a]]) | |
| } | |
| return n | |
| }, yi = An.callBridge, bi = An.callBridgeSync, wi = An.callInternalAPI, Ii = An.callInternalAPISync, Pi = Cn("10.1.35") >= 0, ki = Cn("10.1.50") >= 0, Ci = function() {}, Ai = Pi ? { | |
| createCameraContext: function(e) { | |
| return new Fn({ | |
| element: e, | |
| page: be() | |
| }) | |
| }, | |
| createLottieContext: function(e) { | |
| return new ar({ | |
| element: e, | |
| page: be() | |
| }) | |
| } | |
| } : {}, Ti = ki ? { | |
| createLivePlayerContext: function(e) { | |
| return new Gn({ | |
| element: e, | |
| page: be() | |
| }) | |
| }, | |
| createLivePusherContext: function(e) { | |
| return new Qn({ | |
| element: e, | |
| page: be() | |
| }) | |
| } | |
| } : {}, Si = self, Oi = Si.appXRuntimeConfig, Ei = void 0 === Oi ? {} : Oi, xi = ["openInBrowser", "internalAPI"]; | |
| function Mi() { | |
| return Si.appXAppJson && Si.appXAppJson.app && Si.appXAppJson.app.ext | |
| } | |
| var _i = a()({}, un, { | |
| SDKVersion: yn, | |
| getExtConfigSync: function() { | |
| if (g().templateApp) { | |
| if (vi) | |
| return vi; | |
| var e = Ii("getExtConfig", {}); | |
| return vi = e.error ? null : e.data | |
| } | |
| return Mi() | |
| }, | |
| getExtConfig: function(e) { | |
| var t = e.success | |
| , n = void 0 === t ? Ci : t | |
| , r = e.complete | |
| , a = void 0 === r ? Ci : r | |
| , o = e.fail | |
| , i = void 0 === o ? Ci : o; | |
| if (g().templateApp) { | |
| if (vi) | |
| return n({ | |
| data: vi | |
| }), | |
| a({ | |
| data: vi | |
| }), | |
| vi; | |
| wi("getExtConfig", {}, function(e) { | |
| e.error ? i(e) : (vi = e.data, | |
| n(e)), | |
| a(e) | |
| }) | |
| } else { | |
| var c = Mi(); | |
| n({ | |
| data: c | |
| }), | |
| a({ | |
| data: c | |
| }) | |
| } | |
| }, | |
| navigateTo: function(e) { | |
| (function(e) { | |
| void 0 === e && (e = {}); | |
| var t = self.appXRuntimeConfig | |
| , n = t && t.navigationStackLimits || 10; | |
| if (ye().length >= n) { | |
| var r = e | |
| , a = r.fail | |
| , o = r.complete | |
| , i = { | |
| error: 1, | |
| errorMessage: "depth can not be more than " + n | |
| }; | |
| return a && a(i), | |
| o && o(i), | |
| !0 | |
| } | |
| return !1 | |
| } | |
| )(e) || un.navigateTo(a()({}, e, { | |
| viewId: Eo() | |
| })) | |
| }, | |
| canIUse: function(e) { | |
| return function(e, t) { | |
| var n = t.split("."); | |
| if (function(t) { | |
| for (var r = e, a = 0; a < t; a++) | |
| r = 0 === a ? e && e[n[a]] : r && r[n[a]]; | |
| return r | |
| }(n.length)) | |
| return !0; | |
| var r = Ha; | |
| if (!Ha[n[0]] && On(za).indexOf(n[0]) > -1) { | |
| qa(za[n[0]]); | |
| var a = n[0].split("-").map(function(e) { | |
| return Sr(e) | |
| }).join(""); | |
| if (global["AppX" + a]) { | |
| var o = global["AppX" + a].canIUse; | |
| Ha[n[0]] = "function" == typeof o ? o({ | |
| compareSystemVersion: Cn | |
| }) : o | |
| } else | |
| console.error("component " + n[0] + "'s canIUse is invalid") | |
| } | |
| var i = n[0] | |
| , c = !1; | |
| if (["ap"].indexOf(n[0]) > -1 && n.length > 1 ? (Ha[n[0]] = Ha[n[0]] || {}, | |
| i = n[0] + "." + n[1], | |
| c = !Ha[n[0]][n[1]]) : c = !Ha[n[0]], | |
| c && On(Xa).indexOf(i) > -1) { | |
| var s = Xa[i]; | |
| if (Cn(s.minVersion) < 0) | |
| n.length > 1 ? Ha[n[0]][n[1]] = !1 : Ha[n[0]] = !1; | |
| else { | |
| qa(s.appId); | |
| var l = i.split(".")[i.split(".").length - 1] | |
| , u = global["AppX" + Sr(l)]; | |
| if (u) { | |
| var f = u.canIUse; | |
| "function" == typeof f && (f = f({ | |
| compareSystemVersion: Cn | |
| })), | |
| n.length > 1 ? Ha[n[0]][n[1]] = f : Ha[n[0]] = f | |
| } else | |
| console.error("API " + i + "'s canIUse is invalid") | |
| } | |
| } | |
| for (var p = 0; p < n.length; p++) | |
| if (!(r = r[n[p]])) | |
| return !1; | |
| return !0 | |
| }(_i, e) | |
| } | |
| }, yo, Co, mo, qo, $r, ta, qr, wr, { | |
| createSelectorQuery: function(e) { | |
| var t = (void 0 === e ? {} : e).page; | |
| return new Ya(t) | |
| } | |
| }, co, Oo, Ta, ha, ba, ei, Do, { | |
| loadFontFace: function(e) { | |
| var t = e.page; | |
| t && t.$viewId; | |
| var n = e.success | |
| , r = e.fail | |
| , a = e.complete | |
| , o = mi(e, ["success", "fail", "complete"]); | |
| (t || be()).callRemote("bridge", "loadFontFace", o, function(e) { | |
| n && n(e), | |
| a && a(e) | |
| }, function(e) { | |
| r && r(e), | |
| a && a(e) | |
| }) | |
| }, | |
| createMapContext: function(e) { | |
| return new Wn({ | |
| element: e, | |
| page: be() | |
| }) | |
| }, | |
| stopPullDownRefresh: function(e) { | |
| var t; | |
| void 0 === e && (e = {}); | |
| var n = e.page; | |
| n && (t = { | |
| viewId: n.$viewId | |
| }), | |
| yi("restorePullToRefresh", t), | |
| function(e, t) { | |
| void 0 === e && (e = {}); | |
| var n = e | |
| , r = n.complete | |
| , a = n.success | |
| , o = n.fail; | |
| t && t.error ? o && o(t) : a && a(t), | |
| r && r(t) | |
| }(e) | |
| }, | |
| hideKeyboard: function(e) { | |
| var t; | |
| void 0 === e && (e = {}); | |
| var n = e.page; | |
| n && (t = { | |
| viewId: n.$viewId | |
| }), | |
| wi("hideCustomKeyBoard", t), | |
| (n || be()).callRemote("bridge", "hideKeyboard") | |
| } | |
| }, Dn, Ai, Ti, { | |
| __reportFrameworkPerf: function(e) { | |
| wi("onAppPerfEvent", { | |
| state: "workerFrameworkLoaded", | |
| loadTime: e | |
| }) | |
| }, | |
| reportCustomError: function(e) { | |
| e.column, | |
| e.line, | |
| e.message, | |
| e.sourceURL, | |
| e.column, | |
| e.line, | |
| e.message, | |
| e.sourceURL | |
| }, | |
| call: function(e, t, n) { | |
| if (void 0 === t && (t = {}), | |
| "reportData" == e && t && t.spm && "object" == typeof t.spm && yi("pageMonitor", { | |
| actionType: "end" | |
| }), | |
| !1 === Ei.blacklistAPI || -1 === xi.indexOf(e)) { | |
| var r = t | |
| , o = n; | |
| "function" == typeof r && (o = r, | |
| r = {}); | |
| var i = a()({}, r); | |
| i.page && (i.viewId = i.page.$viewId, | |
| delete i.page), | |
| i.success && delete i.success, | |
| i.fail && delete i.fail, | |
| i.complete && delete i.complete, | |
| yi(e, i, function(e) { | |
| e && e.error ? r.fail && r.fail(e) : r.success && r.success(e), | |
| r.complete && r.complete(e), | |
| o && o(e) | |
| }) | |
| } | |
| } | |
| }); | |
| !function(e) { | |
| An.on("nbcomponent.webview.onFromMessage", function(t) { | |
| var n = t.viewId | |
| , r = t.data | |
| , o = r.callback | |
| , i = r.type | |
| , c = r.param | |
| , s = r.element; | |
| if (["navigateTo", "navigateBack", "switchTab", "reLaunch", "redirectTo", "getLocation"].indexOf(i) > -1) { | |
| var l = a()({}, c, { | |
| complete: function(e) { | |
| An.callBridge("NBComponent.sendMessage", { | |
| actionType: "postMessage", | |
| viewId: n, | |
| element: s, | |
| data: { | |
| callback: o, | |
| res: { | |
| type: "response", | |
| res: e | |
| } | |
| } | |
| }) | |
| } | |
| }); | |
| e[i](l) | |
| } | |
| "webViewShare" === i && xo("startShare", { | |
| bizType: "H5App_DD", | |
| sendEvent: !0 | |
| }) | |
| }), | |
| e.createWebViewContext = function(e) { | |
| var t = Eo(); | |
| return { | |
| postMessage: function(n) { | |
| An.callBridge("NBComponent.sendMessage", { | |
| actionType: "postMessage", | |
| viewId: t, | |
| element: e, | |
| data: { | |
| res: { | |
| type: "message", | |
| data: JSON.stringify(n) | |
| } | |
| } | |
| }) | |
| } | |
| } | |
| } | |
| }(_i), | |
| p(Xa).forEach(function(e) { | |
| var t = Xa[e]; | |
| if (!(Cn(t.minVersion) < 0)) { | |
| var n = e.split(".") | |
| , r = 2 === n.length ? n[0] : void 0 | |
| , a = 2 === n.length ? n[1] : n[0] | |
| , o = _i; | |
| r && (o = _i[r] || {}), | |
| Object.defineProperty(o, a, { | |
| enumerable: !0, | |
| value: function(n) { | |
| var r = Sr(a); | |
| Si["AppX" + r] ? Si["AppX" + r](n, { | |
| callBridge: yi, | |
| callBridgeSync: bi | |
| }) : (qa(t.appId || ""), | |
| Si["AppX" + r] ? Si["AppX" + r](n, { | |
| callBridge: yi, | |
| callBridgeSync: bi | |
| }) : console.error("API my." + e + " not found")) | |
| } | |
| }) | |
| } | |
| }), | |
| _i = function(e) { | |
| var t = ["canIUse", "postMessage", "call", "createAnimation", "createMapContext", "pageScrollTo", "createCanvasContext", "createAudioContext", "createVideoContext", "reportAnalytics", "on", "emit"]; | |
| return On(e).reduce(function(n, r) { | |
| return -1 === t.indexOf(r) && "function" == typeof e[r] ? n[r] = function() { | |
| var t = arguments.length <= 0 ? void 0 : arguments[0]; | |
| if ("object" != typeof t) | |
| return e[r].apply(e, arguments); | |
| var n = a()({}, t); | |
| if (delete n.fail, | |
| delete n.success, | |
| function(e) { | |
| ja(e, "call"), | |
| Na() | |
| }(r), | |
| /^.+Sync$/.test(r)) { | |
| var o = e[r].call(e, t) || {}; | |
| if (o.error || o.errorMessage) { | |
| if (Fa(o)) | |
| return o; | |
| Ua(r, n, o), | |
| $a(r, o) | |
| } else | |
| La(r); | |
| return o | |
| } | |
| var i = (t = t || {}).success; | |
| t.success = function(e) { | |
| void 0 === e && (e = {}), | |
| La(r), | |
| "function" == typeof i && i(e) | |
| } | |
| ; | |
| var c = t.fail; | |
| return t.fail = function(e) { | |
| void 0 === e && (e = {}), | |
| Fa(e) || (Ua(r, n, e), | |
| $a(r, e)), | |
| "function" == typeof c && c(e) | |
| } | |
| , | |
| e[r](t) | |
| } | |
| : n[r] = e[r], | |
| n | |
| }, {}) | |
| }(_i), | |
| console.log("ap/SDKVersion: " + yn), | |
| D.bridge = _i; | |
| var Bi = _i | |
| , Di = Bi; | |
| n.d(t, "bridge", function() { | |
| return Bi | |
| }), | |
| n.d(t, "abridge", function() { | |
| return Di | |
| }), | |
| n.d(t, "EventHub", function() { | |
| return x | |
| }), | |
| n.d(t, "getApp", function() { | |
| return he | |
| }), | |
| n.d(t, "App", function() { | |
| return ge | |
| }), | |
| n.d(t, "getCurrentPagesImpl", function() { | |
| return ye | |
| }), | |
| n.d(t, "getCurrentPageImpl", function() { | |
| return be | |
| }), | |
| n.d(t, "getCurrentPages", function() { | |
| return we | |
| }), | |
| n.d(t, "getAppImpl", function() { | |
| return Ie | |
| }), | |
| n.d(t, "getStartupParams", function() { | |
| return g | |
| }), | |
| n.d(t, "setStartupParams", function() { | |
| return v | |
| }), | |
| n.d(t, "WorkerComponent", function() { | |
| return at | |
| }), | |
| n.d(t, "Page", function() { | |
| return pt | |
| }), | |
| n.d(t, "$global", function() { | |
| return D | |
| }) | |
| } | |
| ]) | |
| , __appxCosts = Date.now() - __appxStartTime; | |
| AFAppX.bridge.__reportFrameworkPerf(__appxCosts), | |
| console.log("framework: worker bundle costs " + __appxCosts + " ms"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /******/ (function(modules) { // webpackBootstrap | |
| /******/ // The module cache | |
| /******/ var installedModules = {}; | |
| /******/ | |
| /******/ // The require function | |
| /******/ function __webpack_require__(moduleId) { | |
| /******/ | |
| /******/ // Check if module is in cache | |
| /******/ if(installedModules[moduleId]) { | |
| /******/ return installedModules[moduleId].exports; | |
| /******/ } | |
| /******/ // Create a new module (and put it into the cache) | |
| /******/ var module = installedModules[moduleId] = { | |
| /******/ i: moduleId, | |
| /******/ l: false, | |
| /******/ exports: {} | |
| /******/ }; | |
| /******/ | |
| /******/ // Execute the module function | |
| /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); | |
| /******/ | |
| /******/ // Flag the module as loaded | |
| /******/ module.l = true; | |
| /******/ | |
| /******/ // Return the exports of the module | |
| /******/ return module.exports; | |
| /******/ } | |
| /******/ | |
| /******/ | |
| /******/ // expose the modules object (__webpack_modules__) | |
| /******/ __webpack_require__.m = modules; | |
| /******/ | |
| /******/ // expose the module cache | |
| /******/ __webpack_require__.c = installedModules; | |
| /******/ | |
| /******/ // define getter function for harmony exports | |
| /******/ __webpack_require__.d = function(exports, name, getter) { | |
| /******/ if(!__webpack_require__.o(exports, name)) { | |
| /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); | |
| /******/ } | |
| /******/ }; | |
| /******/ | |
| /******/ // define __esModule on exports | |
| /******/ __webpack_require__.r = function(exports) { | |
| /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { | |
| /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); | |
| /******/ } | |
| /******/ Object.defineProperty(exports, '__esModule', { value: true }); | |
| /******/ }; | |
| /******/ | |
| /******/ // create a fake namespace object | |
| /******/ // mode & 1: value is a module id, require it | |
| /******/ // mode & 2: merge all properties of value into the ns | |
| /******/ // mode & 4: return value when already ns object | |
| /******/ // mode & 8|1: behave like require | |
| /******/ __webpack_require__.t = function(value, mode) { | |
| /******/ if(mode & 1) value = __webpack_require__(value); | |
| /******/ if(mode & 8) return value; | |
| /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; | |
| /******/ var ns = Object.create(null); | |
| /******/ __webpack_require__.r(ns); | |
| /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); | |
| /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); | |
| /******/ return ns; | |
| /******/ }; | |
| /******/ | |
| /******/ // getDefaultExport function for compatibility with non-harmony modules | |
| /******/ __webpack_require__.n = function(module) { | |
| /******/ var getter = module && module.__esModule ? | |
| /******/ function getDefault() { return module['default']; } : | |
| /******/ function getModuleExports() { return module; }; | |
| /******/ __webpack_require__.d(getter, 'a', getter); | |
| /******/ return getter; | |
| /******/ }; | |
| /******/ | |
| /******/ // Object.prototype.hasOwnProperty.call | |
| /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; | |
| /******/ | |
| /******/ // __webpack_public_path__ | |
| /******/ __webpack_require__.p = "/"; | |
| /******/ | |
| /******/ | |
| /******/ // Load entry module and return exports | |
| /******/ return __webpack_require__(__webpack_require__.s = 0); | |
| /******/ }) | |
| /************************************************************************/ | |
| /******/ ({ | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/object/assign.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/object/assign.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| module.exports = { "default": __webpack_require__(/*! core-js/library/fn/object/assign */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/object/assign.js"), __esModule: true }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/symbol.js": | |
| /*!************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/symbol.js ***! | |
| \************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| module.exports = { "default": __webpack_require__(/*! core-js/library/fn/symbol */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/symbol/index.js"), __esModule: true }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/symbol/iterator.js": | |
| /*!*********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/symbol/iterator.js ***! | |
| \*********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| module.exports = { "default": __webpack_require__(/*! core-js/library/fn/symbol/iterator */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/symbol/iterator.js"), __esModule: true }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/extends.js": | |
| /*!*************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/extends.js ***! | |
| \*************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| exports.__esModule = true; | |
| var _assign = __webpack_require__(/*! ../core-js/object/assign */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/object/assign.js"); | |
| var _assign2 = _interopRequireDefault(_assign); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| exports.default = _assign2.default || function (target) { | |
| for (var i = 1; i < arguments.length; i++) { | |
| var source = arguments[i]; | |
| for (var key in source) { | |
| if (Object.prototype.hasOwnProperty.call(source, key)) { | |
| target[key] = source[key]; | |
| } | |
| } | |
| } | |
| return target; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/typeof.js": | |
| /*!************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/typeof.js ***! | |
| \************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| exports.__esModule = true; | |
| var _iterator = __webpack_require__(/*! ../core-js/symbol/iterator */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/symbol/iterator.js"); | |
| var _iterator2 = _interopRequireDefault(_iterator); | |
| var _symbol = __webpack_require__(/*! ../core-js/symbol */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/core-js/symbol.js"); | |
| var _symbol2 = _interopRequireDefault(_symbol); | |
| var _typeof = typeof _symbol2.default === "function" && typeof _iterator2.default === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj; }; | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| exports.default = typeof _symbol2.default === "function" && _typeof(_iterator2.default) === "symbol" ? function (obj) { | |
| return typeof obj === "undefined" ? "undefined" : _typeof(obj); | |
| } : function (obj) { | |
| return obj && typeof _symbol2.default === "function" && obj.constructor === _symbol2.default && obj !== _symbol2.default.prototype ? "symbol" : typeof obj === "undefined" ? "undefined" : _typeof(obj); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/object/assign.js": | |
| /*!****************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/object/assign.js ***! | |
| \****************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| __webpack_require__(/*! ../../modules/es6.object.assign */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.object.assign.js"); | |
| module.exports = __webpack_require__(/*! ../../modules/$.core */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.core.js").Object.assign; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/symbol/index.js": | |
| /*!***************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/symbol/index.js ***! | |
| \***************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| __webpack_require__(/*! ../../modules/es6.symbol */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.symbol.js"); | |
| __webpack_require__(/*! ../../modules/es6.object.to-string */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.object.to-string.js"); | |
| module.exports = __webpack_require__(/*! ../../modules/$.core */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.core.js").Symbol; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/symbol/iterator.js": | |
| /*!******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/fn/symbol/iterator.js ***! | |
| \******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| __webpack_require__(/*! ../../modules/es6.string.iterator */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.string.iterator.js"); | |
| __webpack_require__(/*! ../../modules/web.dom.iterable */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/web.dom.iterable.js"); | |
| module.exports = __webpack_require__(/*! ../../modules/$.wks */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.wks.js")('iterator'); | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.a-function.js": | |
| /*!********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.a-function.js ***! | |
| \********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = function(it){ | |
| if(typeof it != 'function')throw TypeError(it + ' is not a function!'); | |
| return it; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.add-to-unscopables.js": | |
| /*!****************************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.add-to-unscopables.js ***! | |
| \****************************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = function(){ /* empty */ }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.an-object.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.an-object.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var isObject = __webpack_require__(/*! ./$.is-object */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.is-object.js"); | |
| module.exports = function(it){ | |
| if(!isObject(it))throw TypeError(it + ' is not an object!'); | |
| return it; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.cof.js": | |
| /*!*************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.cof.js ***! | |
| \*************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| var toString = {}.toString; | |
| module.exports = function(it){ | |
| return toString.call(it).slice(8, -1); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.core.js": | |
| /*!**************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.core.js ***! | |
| \**************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| var core = module.exports = {version: '1.2.6'}; | |
| if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.ctx.js": | |
| /*!*************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.ctx.js ***! | |
| \*************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // optional / simple context binding | |
| var aFunction = __webpack_require__(/*! ./$.a-function */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.a-function.js"); | |
| module.exports = function(fn, that, length){ | |
| aFunction(fn); | |
| if(that === undefined)return fn; | |
| switch(length){ | |
| case 1: return function(a){ | |
| return fn.call(that, a); | |
| }; | |
| case 2: return function(a, b){ | |
| return fn.call(that, a, b); | |
| }; | |
| case 3: return function(a, b, c){ | |
| return fn.call(that, a, b, c); | |
| }; | |
| } | |
| return function(/* ...args */){ | |
| return fn.apply(that, arguments); | |
| }; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.defined.js": | |
| /*!*****************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.defined.js ***! | |
| \*****************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| // 7.2.1 RequireObjectCoercible(argument) | |
| module.exports = function(it){ | |
| if(it == undefined)throw TypeError("Can't call method on " + it); | |
| return it; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.descriptors.js": | |
| /*!*********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.descriptors.js ***! | |
| \*********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // Thank's IE8 for his funny defineProperty | |
| module.exports = !__webpack_require__(/*! ./$.fails */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.fails.js")(function(){ | |
| return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7; | |
| }); | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.enum-keys.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.enum-keys.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // all enumerable object keys, includes symbols | |
| var $ = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js"); | |
| module.exports = function(it){ | |
| var keys = $.getKeys(it) | |
| , getSymbols = $.getSymbols; | |
| if(getSymbols){ | |
| var symbols = getSymbols(it) | |
| , isEnum = $.isEnum | |
| , i = 0 | |
| , key; | |
| while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))keys.push(key); | |
| } | |
| return keys; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.export.js": | |
| /*!****************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.export.js ***! | |
| \****************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var global = __webpack_require__(/*! ./$.global */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.global.js") | |
| , core = __webpack_require__(/*! ./$.core */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.core.js") | |
| , ctx = __webpack_require__(/*! ./$.ctx */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.ctx.js") | |
| , PROTOTYPE = 'prototype'; | |
| var $export = function(type, name, source){ | |
| var IS_FORCED = type & $export.F | |
| , IS_GLOBAL = type & $export.G | |
| , IS_STATIC = type & $export.S | |
| , IS_PROTO = type & $export.P | |
| , IS_BIND = type & $export.B | |
| , IS_WRAP = type & $export.W | |
| , exports = IS_GLOBAL ? core : core[name] || (core[name] = {}) | |
| , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE] | |
| , key, own, out; | |
| if(IS_GLOBAL)source = name; | |
| for(key in source){ | |
| // contains in native | |
| own = !IS_FORCED && target && key in target; | |
| if(own && key in exports)continue; | |
| // export native or passed | |
| out = own ? target[key] : source[key]; | |
| // prevent global pollution for namespaces | |
| exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key] | |
| // bind timers to global for call from export context | |
| : IS_BIND && own ? ctx(out, global) | |
| // wrap global constructors for prevent change them in library | |
| : IS_WRAP && target[key] == out ? (function(C){ | |
| var F = function(param){ | |
| return this instanceof C ? new C(param) : C(param); | |
| }; | |
| F[PROTOTYPE] = C[PROTOTYPE]; | |
| return F; | |
| // make static versions for prototype methods | |
| })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out; | |
| if(IS_PROTO)(exports[PROTOTYPE] || (exports[PROTOTYPE] = {}))[key] = out; | |
| } | |
| }; | |
| // type bitmap | |
| $export.F = 1; // forced | |
| $export.G = 2; // global | |
| $export.S = 4; // static | |
| $export.P = 8; // proto | |
| $export.B = 16; // bind | |
| $export.W = 32; // wrap | |
| module.exports = $export; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.fails.js": | |
| /*!***************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.fails.js ***! | |
| \***************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = function(exec){ | |
| try { | |
| return !!exec(); | |
| } catch(e){ | |
| return true; | |
| } | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.get-names.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.get-names.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window | |
| var toIObject = __webpack_require__(/*! ./$.to-iobject */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-iobject.js") | |
| , getNames = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js").getNames | |
| , toString = {}.toString; | |
| var windowNames = typeof window == 'object' && Object.getOwnPropertyNames | |
| ? Object.getOwnPropertyNames(window) : []; | |
| var getWindowNames = function(it){ | |
| try { | |
| return getNames(it); | |
| } catch(e){ | |
| return windowNames.slice(); | |
| } | |
| }; | |
| module.exports.get = function getOwnPropertyNames(it){ | |
| if(windowNames && toString.call(it) == '[object Window]')return getWindowNames(it); | |
| return getNames(toIObject(it)); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.global.js": | |
| /*!****************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.global.js ***! | |
| \****************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 | |
| var global = module.exports = typeof window != 'undefined' && window.Math == Math | |
| ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')(); | |
| if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.has.js": | |
| /*!*************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.has.js ***! | |
| \*************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| var hasOwnProperty = {}.hasOwnProperty; | |
| module.exports = function(it, key){ | |
| return hasOwnProperty.call(it, key); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.hide.js": | |
| /*!**************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.hide.js ***! | |
| \**************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var $ = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js") | |
| , createDesc = __webpack_require__(/*! ./$.property-desc */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.property-desc.js"); | |
| module.exports = __webpack_require__(/*! ./$.descriptors */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.descriptors.js") ? function(object, key, value){ | |
| return $.setDesc(object, key, createDesc(1, value)); | |
| } : function(object, key, value){ | |
| object[key] = value; | |
| return object; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iobject.js": | |
| /*!*****************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iobject.js ***! | |
| \*****************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // fallback for non-array-like ES3 and non-enumerable old V8 strings | |
| var cof = __webpack_require__(/*! ./$.cof */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.cof.js"); | |
| module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){ | |
| return cof(it) == 'String' ? it.split('') : Object(it); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.is-array.js": | |
| /*!******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.is-array.js ***! | |
| \******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // 7.2.2 IsArray(argument) | |
| var cof = __webpack_require__(/*! ./$.cof */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.cof.js"); | |
| module.exports = Array.isArray || function(arg){ | |
| return cof(arg) == 'Array'; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.is-object.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.is-object.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = function(it){ | |
| return typeof it === 'object' ? it !== null : typeof it === 'function'; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-create.js": | |
| /*!*********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-create.js ***! | |
| \*********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var $ = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js") | |
| , descriptor = __webpack_require__(/*! ./$.property-desc */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.property-desc.js") | |
| , setToStringTag = __webpack_require__(/*! ./$.set-to-string-tag */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.set-to-string-tag.js") | |
| , IteratorPrototype = {}; | |
| // 25.1.2.1.1 %IteratorPrototype%[@@iterator]() | |
| __webpack_require__(/*! ./$.hide */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.hide.js")(IteratorPrototype, __webpack_require__(/*! ./$.wks */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.wks.js")('iterator'), function(){ return this; }); | |
| module.exports = function(Constructor, NAME, next){ | |
| Constructor.prototype = $.create(IteratorPrototype, {next: descriptor(1, next)}); | |
| setToStringTag(Constructor, NAME + ' Iterator'); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-define.js": | |
| /*!*********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-define.js ***! | |
| \*********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var LIBRARY = __webpack_require__(/*! ./$.library */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.library.js") | |
| , $export = __webpack_require__(/*! ./$.export */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.export.js") | |
| , redefine = __webpack_require__(/*! ./$.redefine */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.redefine.js") | |
| , hide = __webpack_require__(/*! ./$.hide */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.hide.js") | |
| , has = __webpack_require__(/*! ./$.has */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.has.js") | |
| , Iterators = __webpack_require__(/*! ./$.iterators */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iterators.js") | |
| , $iterCreate = __webpack_require__(/*! ./$.iter-create */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-create.js") | |
| , setToStringTag = __webpack_require__(/*! ./$.set-to-string-tag */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.set-to-string-tag.js") | |
| , getProto = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js").getProto | |
| , ITERATOR = __webpack_require__(/*! ./$.wks */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.wks.js")('iterator') | |
| , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next` | |
| , FF_ITERATOR = '@@iterator' | |
| , KEYS = 'keys' | |
| , VALUES = 'values'; | |
| var returnThis = function(){ return this; }; | |
| module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){ | |
| $iterCreate(Constructor, NAME, next); | |
| var getMethod = function(kind){ | |
| if(!BUGGY && kind in proto)return proto[kind]; | |
| switch(kind){ | |
| case KEYS: return function keys(){ return new Constructor(this, kind); }; | |
| case VALUES: return function values(){ return new Constructor(this, kind); }; | |
| } return function entries(){ return new Constructor(this, kind); }; | |
| }; | |
| var TAG = NAME + ' Iterator' | |
| , DEF_VALUES = DEFAULT == VALUES | |
| , VALUES_BUG = false | |
| , proto = Base.prototype | |
| , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT] | |
| , $default = $native || getMethod(DEFAULT) | |
| , methods, key; | |
| // Fix native | |
| if($native){ | |
| var IteratorPrototype = getProto($default.call(new Base)); | |
| // Set @@toStringTag to native iterators | |
| setToStringTag(IteratorPrototype, TAG, true); | |
| // FF fix | |
| if(!LIBRARY && has(proto, FF_ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis); | |
| // fix Array#{values, @@iterator}.name in V8 / FF | |
| if(DEF_VALUES && $native.name !== VALUES){ | |
| VALUES_BUG = true; | |
| $default = function values(){ return $native.call(this); }; | |
| } | |
| } | |
| // Define iterator | |
| if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){ | |
| hide(proto, ITERATOR, $default); | |
| } | |
| // Plug for library | |
| Iterators[NAME] = $default; | |
| Iterators[TAG] = returnThis; | |
| if(DEFAULT){ | |
| methods = { | |
| values: DEF_VALUES ? $default : getMethod(VALUES), | |
| keys: IS_SET ? $default : getMethod(KEYS), | |
| entries: !DEF_VALUES ? $default : getMethod('entries') | |
| }; | |
| if(FORCED)for(key in methods){ | |
| if(!(key in proto))redefine(proto, key, methods[key]); | |
| } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods); | |
| } | |
| return methods; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-step.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-step.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = function(done, value){ | |
| return {value: value, done: !!done}; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iterators.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iterators.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = {}; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js": | |
| /*!*********************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js ***! | |
| \*********************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| var $Object = Object; | |
| module.exports = { | |
| create: $Object.create, | |
| getProto: $Object.getPrototypeOf, | |
| isEnum: {}.propertyIsEnumerable, | |
| getDesc: $Object.getOwnPropertyDescriptor, | |
| setDesc: $Object.defineProperty, | |
| setDescs: $Object.defineProperties, | |
| getKeys: $Object.keys, | |
| getNames: $Object.getOwnPropertyNames, | |
| getSymbols: $Object.getOwnPropertySymbols, | |
| each: [].forEach | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.keyof.js": | |
| /*!***************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.keyof.js ***! | |
| \***************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var $ = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js") | |
| , toIObject = __webpack_require__(/*! ./$.to-iobject */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-iobject.js"); | |
| module.exports = function(object, el){ | |
| var O = toIObject(object) | |
| , keys = $.getKeys(O) | |
| , length = keys.length | |
| , index = 0 | |
| , key; | |
| while(length > index)if(O[key = keys[index++]] === el)return key; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.library.js": | |
| /*!*****************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.library.js ***! | |
| \*****************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = true; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.object-assign.js": | |
| /*!***********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.object-assign.js ***! | |
| \***********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // 19.1.2.1 Object.assign(target, source, ...) | |
| var $ = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js") | |
| , toObject = __webpack_require__(/*! ./$.to-object */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-object.js") | |
| , IObject = __webpack_require__(/*! ./$.iobject */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iobject.js"); | |
| // should work with symbols and should have deterministic property order (V8 bug) | |
| module.exports = __webpack_require__(/*! ./$.fails */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.fails.js")(function(){ | |
| var a = Object.assign | |
| , A = {} | |
| , B = {} | |
| , S = Symbol() | |
| , K = 'abcdefghijklmnopqrst'; | |
| A[S] = 7; | |
| K.split('').forEach(function(k){ B[k] = k; }); | |
| return a({}, A)[S] != 7 || Object.keys(a({}, B)).join('') != K; | |
| }) ? function assign(target, source){ // eslint-disable-line no-unused-vars | |
| var T = toObject(target) | |
| , $$ = arguments | |
| , $$len = $$.length | |
| , index = 1 | |
| , getKeys = $.getKeys | |
| , getSymbols = $.getSymbols | |
| , isEnum = $.isEnum; | |
| while($$len > index){ | |
| var S = IObject($$[index++]) | |
| , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S) | |
| , length = keys.length | |
| , j = 0 | |
| , key; | |
| while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key]; | |
| } | |
| return T; | |
| } : Object.assign; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.property-desc.js": | |
| /*!***********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.property-desc.js ***! | |
| \***********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = function(bitmap, value){ | |
| return { | |
| enumerable : !(bitmap & 1), | |
| configurable: !(bitmap & 2), | |
| writable : !(bitmap & 4), | |
| value : value | |
| }; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.redefine.js": | |
| /*!******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.redefine.js ***! | |
| \******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| module.exports = __webpack_require__(/*! ./$.hide */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.hide.js"); | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.set-to-string-tag.js": | |
| /*!***************************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.set-to-string-tag.js ***! | |
| \***************************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var def = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js").setDesc | |
| , has = __webpack_require__(/*! ./$.has */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.has.js") | |
| , TAG = __webpack_require__(/*! ./$.wks */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.wks.js")('toStringTag'); | |
| module.exports = function(it, tag, stat){ | |
| if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag}); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.shared.js": | |
| /*!****************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.shared.js ***! | |
| \****************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var global = __webpack_require__(/*! ./$.global */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.global.js") | |
| , SHARED = '__core-js_shared__' | |
| , store = global[SHARED] || (global[SHARED] = {}); | |
| module.exports = function(key){ | |
| return store[key] || (store[key] = {}); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.string-at.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.string-at.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var toInteger = __webpack_require__(/*! ./$.to-integer */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-integer.js") | |
| , defined = __webpack_require__(/*! ./$.defined */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.defined.js"); | |
| // true -> String#at | |
| // false -> String#codePointAt | |
| module.exports = function(TO_STRING){ | |
| return function(that, pos){ | |
| var s = String(defined(that)) | |
| , i = toInteger(pos) | |
| , l = s.length | |
| , a, b; | |
| if(i < 0 || i >= l)return TO_STRING ? '' : undefined; | |
| a = s.charCodeAt(i); | |
| return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff | |
| ? TO_STRING ? s.charAt(i) : a | |
| : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000; | |
| }; | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-integer.js": | |
| /*!********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-integer.js ***! | |
| \********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| // 7.1.4 ToInteger | |
| var ceil = Math.ceil | |
| , floor = Math.floor; | |
| module.exports = function(it){ | |
| return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-iobject.js": | |
| /*!********************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-iobject.js ***! | |
| \********************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // to indexed object, toObject with fallback for non-array-like ES3 strings | |
| var IObject = __webpack_require__(/*! ./$.iobject */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iobject.js") | |
| , defined = __webpack_require__(/*! ./$.defined */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.defined.js"); | |
| module.exports = function(it){ | |
| return IObject(defined(it)); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-object.js": | |
| /*!*******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-object.js ***! | |
| \*******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // 7.1.13 ToObject(argument) | |
| var defined = __webpack_require__(/*! ./$.defined */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.defined.js"); | |
| module.exports = function(it){ | |
| return Object(defined(it)); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.uid.js": | |
| /*!*************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.uid.js ***! | |
| \*************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| var id = 0 | |
| , px = Math.random(); | |
| module.exports = function(key){ | |
| return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36)); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.wks.js": | |
| /*!*************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.wks.js ***! | |
| \*************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| var store = __webpack_require__(/*! ./$.shared */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.shared.js")('wks') | |
| , uid = __webpack_require__(/*! ./$.uid */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.uid.js") | |
| , Symbol = __webpack_require__(/*! ./$.global */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.global.js").Symbol; | |
| module.exports = function(name){ | |
| return store[name] || (store[name] = | |
| Symbol && Symbol[name] || (Symbol || uid)('Symbol.' + name)); | |
| }; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.array.iterator.js": | |
| /*!**************************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.array.iterator.js ***! | |
| \**************************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var addToUnscopables = __webpack_require__(/*! ./$.add-to-unscopables */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.add-to-unscopables.js") | |
| , step = __webpack_require__(/*! ./$.iter-step */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-step.js") | |
| , Iterators = __webpack_require__(/*! ./$.iterators */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iterators.js") | |
| , toIObject = __webpack_require__(/*! ./$.to-iobject */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-iobject.js"); | |
| // 22.1.3.4 Array.prototype.entries() | |
| // 22.1.3.13 Array.prototype.keys() | |
| // 22.1.3.29 Array.prototype.values() | |
| // 22.1.3.30 Array.prototype[@@iterator]() | |
| module.exports = __webpack_require__(/*! ./$.iter-define */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-define.js")(Array, 'Array', function(iterated, kind){ | |
| this._t = toIObject(iterated); // target | |
| this._i = 0; // next index | |
| this._k = kind; // kind | |
| // 22.1.5.2.1 %ArrayIteratorPrototype%.next() | |
| }, function(){ | |
| var O = this._t | |
| , kind = this._k | |
| , index = this._i++; | |
| if(!O || index >= O.length){ | |
| this._t = undefined; | |
| return step(1); | |
| } | |
| if(kind == 'keys' )return step(0, index); | |
| if(kind == 'values')return step(0, O[index]); | |
| return step(0, [index, O[index]]); | |
| }, 'values'); | |
| // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7) | |
| Iterators.Arguments = Iterators.Array; | |
| addToUnscopables('keys'); | |
| addToUnscopables('values'); | |
| addToUnscopables('entries'); | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.object.assign.js": | |
| /*!*************************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.object.assign.js ***! | |
| \*************************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| // 19.1.3.1 Object.assign(target, source) | |
| var $export = __webpack_require__(/*! ./$.export */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.export.js"); | |
| $export($export.S + $export.F, 'Object', {assign: __webpack_require__(/*! ./$.object-assign */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.object-assign.js")}); | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.object.to-string.js": | |
| /*!****************************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.object.to-string.js ***! | |
| \****************************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.string.iterator.js": | |
| /*!***************************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.string.iterator.js ***! | |
| \***************************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var $at = __webpack_require__(/*! ./$.string-at */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.string-at.js")(true); | |
| // 21.1.3.27 String.prototype[@@iterator]() | |
| __webpack_require__(/*! ./$.iter-define */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iter-define.js")(String, 'String', function(iterated){ | |
| this._t = String(iterated); // target | |
| this._i = 0; // next index | |
| // 21.1.5.2.1 %StringIteratorPrototype%.next() | |
| }, function(){ | |
| var O = this._t | |
| , index = this._i | |
| , point; | |
| if(index >= O.length)return {value: undefined, done: true}; | |
| point = $at(O, index); | |
| this._i += point.length; | |
| return {value: point, done: false}; | |
| }); | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.symbol.js": | |
| /*!******************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.symbol.js ***! | |
| \******************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| // ECMAScript 6 symbols shim | |
| var $ = __webpack_require__(/*! ./$ */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.js") | |
| , global = __webpack_require__(/*! ./$.global */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.global.js") | |
| , has = __webpack_require__(/*! ./$.has */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.has.js") | |
| , DESCRIPTORS = __webpack_require__(/*! ./$.descriptors */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.descriptors.js") | |
| , $export = __webpack_require__(/*! ./$.export */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.export.js") | |
| , redefine = __webpack_require__(/*! ./$.redefine */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.redefine.js") | |
| , $fails = __webpack_require__(/*! ./$.fails */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.fails.js") | |
| , shared = __webpack_require__(/*! ./$.shared */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.shared.js") | |
| , setToStringTag = __webpack_require__(/*! ./$.set-to-string-tag */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.set-to-string-tag.js") | |
| , uid = __webpack_require__(/*! ./$.uid */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.uid.js") | |
| , wks = __webpack_require__(/*! ./$.wks */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.wks.js") | |
| , keyOf = __webpack_require__(/*! ./$.keyof */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.keyof.js") | |
| , $names = __webpack_require__(/*! ./$.get-names */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.get-names.js") | |
| , enumKeys = __webpack_require__(/*! ./$.enum-keys */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.enum-keys.js") | |
| , isArray = __webpack_require__(/*! ./$.is-array */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.is-array.js") | |
| , anObject = __webpack_require__(/*! ./$.an-object */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.an-object.js") | |
| , toIObject = __webpack_require__(/*! ./$.to-iobject */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.to-iobject.js") | |
| , createDesc = __webpack_require__(/*! ./$.property-desc */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.property-desc.js") | |
| , getDesc = $.getDesc | |
| , setDesc = $.setDesc | |
| , _create = $.create | |
| , getNames = $names.get | |
| , $Symbol = global.Symbol | |
| , $JSON = global.JSON | |
| , _stringify = $JSON && $JSON.stringify | |
| , setter = false | |
| , HIDDEN = wks('_hidden') | |
| , isEnum = $.isEnum | |
| , SymbolRegistry = shared('symbol-registry') | |
| , AllSymbols = shared('symbols') | |
| , useNative = typeof $Symbol == 'function' | |
| , ObjectProto = Object.prototype; | |
| // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687 | |
| var setSymbolDesc = DESCRIPTORS && $fails(function(){ | |
| return _create(setDesc({}, 'a', { | |
| get: function(){ return setDesc(this, 'a', {value: 7}).a; } | |
| })).a != 7; | |
| }) ? function(it, key, D){ | |
| var protoDesc = getDesc(ObjectProto, key); | |
| if(protoDesc)delete ObjectProto[key]; | |
| setDesc(it, key, D); | |
| if(protoDesc && it !== ObjectProto)setDesc(ObjectProto, key, protoDesc); | |
| } : setDesc; | |
| var wrap = function(tag){ | |
| var sym = AllSymbols[tag] = _create($Symbol.prototype); | |
| sym._k = tag; | |
| DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, { | |
| configurable: true, | |
| set: function(value){ | |
| if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false; | |
| setSymbolDesc(this, tag, createDesc(1, value)); | |
| } | |
| }); | |
| return sym; | |
| }; | |
| var isSymbol = function(it){ | |
| return typeof it == 'symbol'; | |
| }; | |
| var $defineProperty = function defineProperty(it, key, D){ | |
| if(D && has(AllSymbols, key)){ | |
| if(!D.enumerable){ | |
| if(!has(it, HIDDEN))setDesc(it, HIDDEN, createDesc(1, {})); | |
| it[HIDDEN][key] = true; | |
| } else { | |
| if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false; | |
| D = _create(D, {enumerable: createDesc(0, false)}); | |
| } return setSymbolDesc(it, key, D); | |
| } return setDesc(it, key, D); | |
| }; | |
| var $defineProperties = function defineProperties(it, P){ | |
| anObject(it); | |
| var keys = enumKeys(P = toIObject(P)) | |
| , i = 0 | |
| , l = keys.length | |
| , key; | |
| while(l > i)$defineProperty(it, key = keys[i++], P[key]); | |
| return it; | |
| }; | |
| var $create = function create(it, P){ | |
| return P === undefined ? _create(it) : $defineProperties(_create(it), P); | |
| }; | |
| var $propertyIsEnumerable = function propertyIsEnumerable(key){ | |
| var E = isEnum.call(this, key); | |
| return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] | |
| ? E : true; | |
| }; | |
| var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){ | |
| var D = getDesc(it = toIObject(it), key); | |
| if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true; | |
| return D; | |
| }; | |
| var $getOwnPropertyNames = function getOwnPropertyNames(it){ | |
| var names = getNames(toIObject(it)) | |
| , result = [] | |
| , i = 0 | |
| , key; | |
| while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN)result.push(key); | |
| return result; | |
| }; | |
| var $getOwnPropertySymbols = function getOwnPropertySymbols(it){ | |
| var names = getNames(toIObject(it)) | |
| , result = [] | |
| , i = 0 | |
| , key; | |
| while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]); | |
| return result; | |
| }; | |
| var $stringify = function stringify(it){ | |
| if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined | |
| var args = [it] | |
| , i = 1 | |
| , $$ = arguments | |
| , replacer, $replacer; | |
| while($$.length > i)args.push($$[i++]); | |
| replacer = args[1]; | |
| if(typeof replacer == 'function')$replacer = replacer; | |
| if($replacer || !isArray(replacer))replacer = function(key, value){ | |
| if($replacer)value = $replacer.call(this, key, value); | |
| if(!isSymbol(value))return value; | |
| }; | |
| args[1] = replacer; | |
| return _stringify.apply($JSON, args); | |
| }; | |
| var buggyJSON = $fails(function(){ | |
| var S = $Symbol(); | |
| // MS Edge converts symbol values to JSON as {} | |
| // WebKit converts symbol values to JSON as null | |
| // V8 throws on boxed symbols | |
| return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}'; | |
| }); | |
| // 19.4.1.1 Symbol([description]) | |
| if(!useNative){ | |
| $Symbol = function Symbol(){ | |
| if(isSymbol(this))throw TypeError('Symbol is not a constructor'); | |
| return wrap(uid(arguments.length > 0 ? arguments[0] : undefined)); | |
| }; | |
| redefine($Symbol.prototype, 'toString', function toString(){ | |
| return this._k; | |
| }); | |
| isSymbol = function(it){ | |
| return it instanceof $Symbol; | |
| }; | |
| $.create = $create; | |
| $.isEnum = $propertyIsEnumerable; | |
| $.getDesc = $getOwnPropertyDescriptor; | |
| $.setDesc = $defineProperty; | |
| $.setDescs = $defineProperties; | |
| $.getNames = $names.get = $getOwnPropertyNames; | |
| $.getSymbols = $getOwnPropertySymbols; | |
| if(DESCRIPTORS && !__webpack_require__(/*! ./$.library */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.library.js")){ | |
| redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true); | |
| } | |
| } | |
| var symbolStatics = { | |
| // 19.4.2.1 Symbol.for(key) | |
| 'for': function(key){ | |
| return has(SymbolRegistry, key += '') | |
| ? SymbolRegistry[key] | |
| : SymbolRegistry[key] = $Symbol(key); | |
| }, | |
| // 19.4.2.5 Symbol.keyFor(sym) | |
| keyFor: function keyFor(key){ | |
| return keyOf(SymbolRegistry, key); | |
| }, | |
| useSetter: function(){ setter = true; }, | |
| useSimple: function(){ setter = false; } | |
| }; | |
| // 19.4.2.2 Symbol.hasInstance | |
| // 19.4.2.3 Symbol.isConcatSpreadable | |
| // 19.4.2.4 Symbol.iterator | |
| // 19.4.2.6 Symbol.match | |
| // 19.4.2.8 Symbol.replace | |
| // 19.4.2.9 Symbol.search | |
| // 19.4.2.10 Symbol.species | |
| // 19.4.2.11 Symbol.split | |
| // 19.4.2.12 Symbol.toPrimitive | |
| // 19.4.2.13 Symbol.toStringTag | |
| // 19.4.2.14 Symbol.unscopables | |
| $.each.call(( | |
| 'hasInstance,isConcatSpreadable,iterator,match,replace,search,' + | |
| 'species,split,toPrimitive,toStringTag,unscopables' | |
| ).split(','), function(it){ | |
| var sym = wks(it); | |
| symbolStatics[it] = useNative ? sym : wrap(sym); | |
| }); | |
| setter = true; | |
| $export($export.G + $export.W, {Symbol: $Symbol}); | |
| $export($export.S, 'Symbol', symbolStatics); | |
| $export($export.S + $export.F * !useNative, 'Object', { | |
| // 19.1.2.2 Object.create(O [, Properties]) | |
| create: $create, | |
| // 19.1.2.4 Object.defineProperty(O, P, Attributes) | |
| defineProperty: $defineProperty, | |
| // 19.1.2.3 Object.defineProperties(O, Properties) | |
| defineProperties: $defineProperties, | |
| // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P) | |
| getOwnPropertyDescriptor: $getOwnPropertyDescriptor, | |
| // 19.1.2.7 Object.getOwnPropertyNames(O) | |
| getOwnPropertyNames: $getOwnPropertyNames, | |
| // 19.1.2.8 Object.getOwnPropertySymbols(O) | |
| getOwnPropertySymbols: $getOwnPropertySymbols | |
| }); | |
| // 24.3.2 JSON.stringify(value [, replacer [, space]]) | |
| $JSON && $export($export.S + $export.F * (!useNative || buggyJSON), 'JSON', {stringify: $stringify}); | |
| // 19.4.3.5 Symbol.prototype[@@toStringTag] | |
| setToStringTag($Symbol, 'Symbol'); | |
| // 20.2.1.9 Math[@@toStringTag] | |
| setToStringTag(Math, 'Math', true); | |
| // 24.3.3 JSON[@@toStringTag] | |
| setToStringTag(global.JSON, 'JSON', true); | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/web.dom.iterable.js": | |
| /*!************************************************************************************************************************************************!*\ | |
| !*** c:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/web.dom.iterable.js ***! | |
| \************************************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| __webpack_require__(/*! ./es6.array.iterator */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/es6.array.iterator.js"); | |
| var Iterators = __webpack_require__(/*! ./$.iterators */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/core-js/library/modules/$.iterators.js"); | |
| Iterators.NodeList = Iterators.HTMLCollection = Iterators.Array; | |
| /***/ }), | |
| /***/ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/webpack/buildin/global.js": | |
| /*!******************************************************************************************************************************!*\ | |
| !*** C:/Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/webpack/buildin/global.js ***! | |
| \******************************************************************************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| var g; | |
| // This works in non-strict mode | |
| g = (function() { | |
| return this; | |
| })(); | |
| try { | |
| // This works if eval is allowed (see CSP) | |
| g = g || new Function("return this")(); | |
| } catch (e) { | |
| // This works if the window reference is available | |
| if (typeof window === "object") g = window; | |
| } | |
| // g can still be undefined, but nothing to do about it... | |
| // We return undefined, instead of nothing here, so it's | |
| // easier to handle this case. if(!global) { ...} | |
| module.exports = g; | |
| /***/ }), | |
| /***/ "./.tea/entryFiles-development/config$.js": | |
| /*!************************************************!*\ | |
| !*** ./.tea/entryFiles-development/config$.js ***! | |
| \************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| /* WEBPACK VAR INJECTION */(function(global) { | |
| var g = typeof global !== 'undefined' ? global : self; | |
| g.appXRuntimeConfig = {}; | |
| g.appXAppJson = { | |
| "app": { | |
| "$homepage": "pages/todos/todos" | |
| } | |
| }; | |
| /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/webpack/buildin/global.js */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/webpack/buildin/global.js"))) | |
| /***/ }), | |
| /***/ "./.tea/entryFiles-development/index$.worker.js": | |
| /*!******************************************************!*\ | |
| !*** ./.tea/entryFiles-development/index$.worker.js ***! | |
| \******************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/extends.js"); | |
| var _extends3 = _interopRequireDefault(_extends2); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| var IDE_HACK_CODE = { X: 1 };var IDE_HACK_CODE_BACK = (0, _extends3.default)({}, IDE_HACK_CODE); | |
| __webpack_require__(/*! ./config$ */ "./.tea/entryFiles-development/config$.js"); | |
| function success() { | |
| __webpack_require__(/*! ../..//app */ "./app.js"); | |
| __webpack_require__(/*! ../../components/add-button/add-button */ "./components/add-button/add-button.js"); | |
| __webpack_require__(/*! ../../pages/plugin-comzbadge/index */ "./pages/plugin-comzbadge/index.js"); | |
| __webpack_require__(/*! ../../pages/plugin-comzloading/index */ "./pages/plugin-comzloading/index.js"); | |
| __webpack_require__(/*! ../../pages/todos/todos */ "./pages/todos/todos.js"); | |
| __webpack_require__(/*! ../../pages/add-todo/add-todo */ "./pages/add-todo/add-todo.js"); | |
| __webpack_require__(/*! ../../pages/account-login/index */ "./pages/account-login/index.js"); | |
| __webpack_require__(/*! ../../pages/plugin-debug/index */ "./pages/plugin-debug/index.js"); | |
| } | |
| self.bootstrapApp ? self.bootstrapApp({ success: success }) : success(); | |
| /***/ }), | |
| /***/ "./app.js": | |
| /*!****************!*\ | |
| !*** ./app.js ***! | |
| \****************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge;(0, _afAppx.App)({ | |
| todos: [{ text: 'Learning Javascript', completed: true }, { text: 'Learning ES2016', completed: true }, { text: 'Learning 支付宝小程序', completed: false }], | |
| userInfo: null, | |
| getUserInfo: function getUserInfo() { | |
| var _this = this; | |
| return new Promise(function (resolve, reject) { | |
| if (_this.userInfo) resolve(_this.userInfo); | |
| my.getAuthCode({ | |
| scopes: ['auth_user'], | |
| success: function success(authcode) { | |
| console.info(authcode); | |
| my.getAuthUserInfo({ | |
| success: function success(res) { | |
| _this.userInfo = res; | |
| resolve(_this.userInfo); | |
| }, | |
| fail: function fail() { | |
| reject({}); | |
| } | |
| }); | |
| }, | |
| fail: function fail() { | |
| reject({}); | |
| } | |
| }); | |
| }); | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./components/add-button/add-button.js": | |
| /*!*********************************************!*\ | |
| !*** ./components/add-button/add-button.js ***! | |
| \*********************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var Component = _afAppx.WorkerComponent || function () {}; | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| _afAppx.$global.currentComponentConfig = { "is": "/components/add-button/add-button", "usingComponents": {} }; | |
| Component({ | |
| props: { | |
| text: 'Button', | |
| onClickMe: function onClickMe() {} | |
| }, | |
| methods: { | |
| onClickMe: function onClickMe() { | |
| this.props.onClickMe(); | |
| } | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./components/shared/wacomponent.js": | |
| /*!******************************************!*\ | |
| !*** ./components/shared/wacomponent.js ***! | |
| \******************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _typeof2 = __webpack_require__(/*! babel-runtime/helpers/typeof */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/typeof.js"); | |
| var _typeof3 = _interopRequireDefault(_typeof2); | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| 'use strict'; | |
| module.exports = function WAComponent(factory) { | |
| var optionMap = { | |
| hehaviors: 'mixins', | |
| data: 'data', | |
| properties: 'props', | |
| methods: 'methods', | |
| attached: 'didMount', | |
| moved: 'didUpdate', | |
| detached: 'didUnmount', | |
| relations: 'relations', // *这个要特殊处理 | |
| externalClasses: false // 这个支持不了 aliapp用不了动态 class | |
| // 这些 vant 没有用到 | |
| // observers | |
| // created | |
| // ready | |
| // lifetimes | |
| // pageLifetimes | |
| // definitionFilter | |
| }; | |
| var transformerMap = { | |
| properties: transformProps, | |
| relations: transformRelations, | |
| fallback: function fallback(x) { | |
| return x; | |
| } | |
| }; | |
| function transformProps(properties) { | |
| var props = {}; | |
| var candidate = undefined; | |
| Object.keys(properties).forEach(function itor(key) { | |
| candidate = properties[key]; | |
| if ((typeof candidate === 'undefined' ? 'undefined' : (0, _typeof3.default)(candidate)) === 'object') { | |
| props[key] = candidate.value; | |
| } else { | |
| props[key] = candidate; | |
| } | |
| }); | |
| return props; | |
| } | |
| function transformRelations() { | |
| // TODO: @sy | |
| // 基本上所有组件都用到了,见 | |
| // https://gist.github.com/somarlyonks/94b7696604a52553cf1976f4ad15ac45 | |
| // 所以最好还是能实现 relations | |
| // getRelationNodes TODO: @sy 注册 child 和data | |
| } | |
| function mapOptions(options, _map) { | |
| var ret = {}; | |
| var transformer = transformerMap.fallback; | |
| Object.keys(options).forEach(function itor(key) { | |
| var targetKey = _map[key] || key; | |
| var transformer = transformerMap[key] || transformerMap.fallback; | |
| ret[targetKey] = transformer(options[key]); | |
| }); | |
| console.log('options', ret); | |
| return ret; | |
| } | |
| return function Component(options) { | |
| var component = factory(mapOptions(options, optionMap)); | |
| console.log('factory', factory); | |
| return component; | |
| }; | |
| }; | |
| /***/ }), | |
| /***/ "./pages/account-login/index.js": | |
| /*!**************************************!*\ | |
| !*** ./pages/account-login/index.js ***! | |
| \**************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| _afAppx.$global.currentPageConfig = { "pagePath": "pages/account-login/index", "usingComponents": {} }; | |
| /* global getApp,Page,my */ | |
| /* eslint-disable camelcase */ | |
| /* | |
| 注意 | |
| - 这个插件是从微信小程序重构到百度小程序再重构到支付宝小程序 | |
| - 目前以 swan 作为宿主对象 | |
| */ | |
| var swan = my; | |
| var DwUtils = __webpack_require__(/*! ../../utils/dw */ "./utils/dw.js").DwUtils; | |
| var appConfig = __webpack_require__(/*! ../../utils/config */ "./utils/config.js"); | |
| // var WxParse = require('../../wxParse/wxParse.js'); | |
| var app = (0, _afAppx.getApp)(); | |
| (0, _afAppx.Page)({ | |
| data: { | |
| userInfo: {}, | |
| invitationUserInfo: {}, | |
| isLogin: false, | |
| usernamePlaceholder: '用户名/邮箱/手机号', | |
| siteuserData: null, | |
| term: {}, | |
| showTerm: false, | |
| getUserInfoSuccess: false, | |
| loginResponse: {}, | |
| tabs: [ | |
| // { index: 0, name: '授权登录', key: 'allow_auth_dwapp' }, | |
| { index: 1, name: '用户名登录', key: 'allow_username_dwapp' }, { index: 2, name: '手机登录', key: 'allow_mobile_dwapp' }], | |
| activeIndex: 1, | |
| sliderOffset: 0, | |
| sliderLeft: 0, | |
| mobile: '', | |
| lock: false, | |
| timer: 60, | |
| timerStart: false, | |
| currentView: 'usernameLogin', | |
| invitation_code: '' | |
| }, | |
| onLoad: function onLoad(options) { | |
| var that = this; | |
| if (options.invitation_code) { | |
| that.setData({ | |
| invitation_code: options.invitation_code | |
| }); | |
| } | |
| this.resetSlider(); | |
| }, | |
| resetSlider: function resetSlider() { | |
| var that = this; | |
| swan.getSystemInfo({ | |
| success: function success(res) { | |
| var sliderWidth = that.data.tabs.length === 3 ? 112 : 100; | |
| that.setData({ | |
| sliderLeft: (res.windowWidth / that.data.tabs.length - sliderWidth) / 2, | |
| sliderOffset: res.windowWidth / that.data.tabs.length * (that.data.activeIndex - 1) | |
| }); | |
| } | |
| }); | |
| }, | |
| loginWithOpenid: function loginWithOpenid() { | |
| // | |
| }, | |
| onShow: function onShow() { | |
| var vm = this; | |
| var installation = swan.getStorageSync('dwapp:installation') || {}; | |
| if (installation.siteuser_token) { | |
| vm.setData({ | |
| isLogin: true, | |
| getUserInfoSuccess: true | |
| }); | |
| app.getCachedUserInfo(function (userInfo) { | |
| vm.setData({ | |
| userInfo: userInfo | |
| }); | |
| }); | |
| } else { | |
| vm.setData({ | |
| getUserInfoSuccess: true | |
| }); | |
| if (my) { | |
| // TODO | |
| return; | |
| } | |
| swan.showLoading({ | |
| title: '登录中...', | |
| mask: true | |
| }); | |
| app.getUserInfo(function (userInfo, login_data, user_data) { | |
| vm.setData({ | |
| getUserInfoSuccess: true, | |
| userInfo: userInfo | |
| }); | |
| if (!installation.siteuser_token) { | |
| vm.afterLoginAndGetUserInfo(login_data, user_data); | |
| } else { | |
| swan.hideLoading(); | |
| } | |
| }, function () { | |
| console.log('app.getUserInfo fail'); | |
| swan.login({ | |
| withCredentials: true, | |
| success: function success(loginResponse) { | |
| swan.hideLoading(); | |
| vm.setData({ loginResponse: loginResponse }); | |
| } | |
| }); | |
| }); | |
| } | |
| var data = { | |
| invitation_code: vm.data.invitation_code, | |
| page_id: appConfig.page.id | |
| }; | |
| DwUtils.request('get/company_account/get_dwapp_login_data', data).then(function (response) { | |
| var dshareconfig = response.data.dshareconfig; | |
| var tabs = vm.data.tabs.filter(function (i) { | |
| return dshareconfig[i.key]; | |
| }); | |
| var activeIndex = tabs.length ? tabs[0].index : 0; | |
| vm.setData({ | |
| term: response.data.term, | |
| invitationUserInfo: response.data.invitation_user, | |
| siteuserData: response.data.profile.id ? response.data.profile : null, | |
| // tabs: tabs, | |
| activeIndex: tabs.length ? tabs[0].index : 0, | |
| currentView: activeIndex === 1 ? 'usernameLogin' : 'mobileLogin', | |
| usernamePlaceholder: dshareconfig.allow_mobile_dwapp ? '用户名/邮箱/手机号' : '用户名/邮箱' | |
| }); | |
| // WxParse.wxParse('term.description', 'html', response.data.term.description, vm, 5); | |
| vm.resetSlider(); | |
| }); | |
| }, | |
| clickGetUserInfo: function clickGetUserInfo(event) { | |
| if (event.detail.errMsg === 'getUserInfo:ok') { | |
| this.afterLoginAndGetUserInfo(this.data.loginResponse, event.detail); | |
| this.setData({ getUserInfoSuccess: true }); | |
| } | |
| }, | |
| afterLoginAndGetUserInfo: function afterLoginAndGetUserInfo(loginResponse, userInfo) { | |
| var vm = this; | |
| DwUtils.request('post/company_account/dwapp_login', { login_data: loginResponse, user_data: userInfo }).then(function (response) { | |
| swan.hideLoading(); | |
| if (response.data.siteuser_token) { | |
| vm.setSiteuserToken(response.data.siteuser_token); | |
| swan.showToast({ | |
| title: '授权登录成功!', | |
| icon: 'success', | |
| duration: 3000 | |
| }); | |
| } | |
| }); | |
| }, | |
| getPhoneNumber: function getPhoneNumber(e) { | |
| var vm = this; | |
| swan.showLoading({ | |
| title: '登录中...', | |
| mask: true | |
| }); | |
| var afterResolve = function afterResolve(response) { | |
| swan.hideLoading(); | |
| if (response.data.siteuser_token) { | |
| vm.setSiteuserToken(response.data.siteuser_token); | |
| swan.showToast({ | |
| title: '登录成功!', | |
| icon: 'success', | |
| duration: 3000 | |
| }); | |
| swan.navigateBack(); | |
| } | |
| }; | |
| var afterReject = function afterReject() { | |
| swan.hideLoading(); | |
| swan.showModal({ | |
| title: '提示', | |
| content: '获取手机号失败!请选择使用用户名或者手机号自动登录', | |
| showCancel: false | |
| }); | |
| }; | |
| if (appConfig.debug) { | |
| app.getUserInfo(function (userInfo, login_data, user_data) { | |
| var data = { login_data: login_data, user_data: user_data, phone_data: {} }; | |
| DwUtils.request('post/company_account/dwapp_login_with_mobile', data).then(function (response) { | |
| afterResolve(response); | |
| }); | |
| }, function () { | |
| afterReject(); | |
| }); | |
| } else { | |
| if (e.detail.encryptedData) { | |
| var phone_data = e.detail; | |
| app.getUserInfo(function (userInfo, login_data, user_data) { | |
| var data = { login_data: login_data, user_data: user_data, phone_data: phone_data }; | |
| DwUtils.request('post/company_account/dwapp_login_with_mobile', data).then(function (response) { | |
| afterResolve(response); | |
| }); | |
| }, function () { | |
| afterReject(); | |
| }); | |
| } else { | |
| afterReject(); | |
| } | |
| } | |
| }, | |
| setUserinfo: function setUserinfo() { | |
| if (this.data.userInfo && this.data.userInfo.nickName && this.data.userInfo.avatarUrl) { | |
| var data = { | |
| nickname: this.data.userInfo.nickName, | |
| avatar: this.data.userInfo.avatarUrl | |
| }; | |
| DwUtils.request('post/dmhome/set_userinfo', data).then(function (response) { | |
| // | |
| }); | |
| } | |
| }, | |
| updateTimer: function updateTimer() { | |
| var vm = this; | |
| setTimeout(function () { | |
| var timer = vm.data.timer - 1; | |
| vm.setData({ timer: timer }); | |
| timer > 1 ? vm.updateTimer() : vm.stopTimer(); | |
| }, 1000); | |
| }, | |
| stopTimer: function stopTimer() { | |
| this.setData({ | |
| timer: 60, | |
| timerStart: false | |
| }); | |
| }, | |
| startTimer: function startTimer() { | |
| this.setData({ | |
| timer: 60, | |
| timerStart: true | |
| }); | |
| this.updateTimer(); | |
| }, | |
| sendToken: function sendToken(event) { | |
| var vm = this; | |
| var tokenType = event.currentTarget.dataset.tokenType; | |
| var requestUrl; | |
| if (tokenType === 'login') { | |
| requestUrl = 'post/company_account/send_siteuser_login_token'; | |
| } else if (tokenType === 'signup') { | |
| requestUrl = 'post/company_account/send_siteuser_signup_token'; | |
| } else { | |
| requestUrl = 'post/company_account/send_siteuser_reset_token'; | |
| } | |
| if (this.data.timerStart || this.data.lock) return; | |
| if (!this.validateMobile(this.data.mobile)) { | |
| return vm.showModal('错误', '请填写正确的手机号'); | |
| } | |
| this.setData({ lock: true }); | |
| swan.showLoading({ title: '发送中...' }); | |
| DwUtils.request(requestUrl, { mobile: this.data.mobile }).then(function (response) { | |
| vm.setData({ lock: false }); | |
| swan.hideLoading(); | |
| if (response.data.status === 'success') { | |
| vm.showModal('成功', response.data.message); | |
| vm.startTimer(); | |
| } else { | |
| vm.showModal('错误', response.data.message); | |
| } | |
| }); | |
| }, | |
| handleMobileInput: function handleMobileInput(event) { | |
| this.setData({ mobile: event.detail.value }); | |
| }, | |
| validateMobile: function validateMobile(mobile) { | |
| return mobile && /^1[\d]{10}$/.test(mobile); | |
| }, | |
| tabClick: function tabClick(e) { | |
| if (parseInt(e.currentTarget.id) === 1) { | |
| this.setData({ | |
| currentView: 'usernameLogin' | |
| }); | |
| } else if (parseInt(e.currentTarget.id) === 2) { | |
| this.setData({ | |
| currentView: 'mobileLogin' | |
| }); | |
| } | |
| this.setData({ | |
| sliderOffset: e.currentTarget.offsetLeft, | |
| activeIndex: e.currentTarget.id | |
| }); | |
| }, | |
| getInstallation: function getInstallation() { | |
| return swan.getStorageSync('dwapp:installation') || {}; | |
| }, | |
| setSiteuserToken: function setSiteuserToken(siteuser_token) { | |
| var installation = swan.getStorageSync('dwapp:installation') || {}; | |
| installation.siteuser_token = siteuser_token; | |
| swan.setStorageSync('dwapp:installation', installation); | |
| this.setData({ | |
| isLogin: true | |
| }); | |
| this.afterLogin(); | |
| }, | |
| handleLogout: function handleLogout() { | |
| var vm = this; | |
| swan.showModal({ | |
| title: '提示', | |
| content: '你确定退出帐号?', | |
| confirmText: '确认退出', | |
| success: function success(response) { | |
| if (response.confirm) { | |
| var installation = swan.getStorageSync('dwapp:installation') || {}; | |
| delete installation.siteuser_token; | |
| swan.setStorageSync('dwapp:installation', installation); | |
| swan.removeStorageSync('siteuser_id'); | |
| vm.setData({ | |
| isLogin: false | |
| }); | |
| } | |
| } | |
| }); | |
| }, | |
| showModal: function showModal(title, content) { | |
| swan.showModal({ title: title, content: content, showCancel: false }); | |
| }, | |
| usernameLoginSubmit: function usernameLoginSubmit(data) { | |
| if (this.getInstallation().siteuser_token) return; | |
| var vm = this; | |
| var formData = data.detail.value; | |
| if (!formData.username || !formData.password) { | |
| return swan.showModal({ title: '登录错误', content: '请填写完整账号和密码', showCancel: false }); | |
| } | |
| swan.showLoading({ title: '登录中...' }); | |
| DwUtils.request('post/company_account/login', formData).then(function (response) { | |
| swan.hideLoading(); | |
| if (response.data.status === 'success') { | |
| vm.setSiteuserToken(response.data.siteuser_token); | |
| swan.showToast({ | |
| title: '登录成功!', | |
| icon: 'success', | |
| duration: 3000 | |
| }); | |
| swan.navigateBack(); | |
| } else { | |
| return swan.showModal({ title: '登录错误', content: response.data.message, showCancel: false }); | |
| } | |
| }); | |
| }, | |
| usernameResetSubmit: function usernameResetSubmit(data) { | |
| var vm = this; | |
| var formData = data.detail.value; | |
| if (!formData.email || !/@/.test(formData.email)) { | |
| return vm.showModal('错误', '请填写正确的邮箱'); | |
| } | |
| swan.showLoading({ title: '发送中...' }); | |
| DwUtils.request('post/dmhome/password_reset_email', formData).then(function (response) { | |
| swan.hideLoading(); | |
| if (response.data.status === 'success') { | |
| vm.showModal('成功', response.data.message); | |
| } else { | |
| vm.showModal('错误', response.data.message); | |
| } | |
| }); | |
| }, | |
| usernameSignupSubmit: function usernameSignupSubmit(data) { | |
| var vm = this; | |
| var formData = data.detail.value; | |
| formData.invitation_code = vm.data.invitation_code; | |
| if (!formData.email || !/@/.test(formData.email)) { | |
| return vm.showModal('错误', '请填写正确的邮箱'); | |
| } | |
| if (!formData.username || !formData.password1) { | |
| return vm.showModal('错误', '请填写正确的用户名和密码'); | |
| } | |
| if (!/^[a-z][a-z0-9_-]{3,}/.test(formData.username)) { | |
| return vm.showModal('错误', '用户名为大于四位的字母和数字,必须以字母开头'); | |
| } | |
| if (formData.password1 !== formData.password2) { | |
| return vm.showModal('错误', '两次输入的密码不一致'); | |
| } | |
| swan.showLoading({ title: '发送中...' }); | |
| DwUtils.request('post/company_account/signup', formData).then(function (response) { | |
| swan.hideLoading(); | |
| if (response.data.status === 'success') { | |
| vm.setSiteuserToken(response.data.siteuser_token); | |
| swan.showToast({ | |
| title: '注册成功!', | |
| icon: 'success', | |
| duration: 3000 | |
| }); | |
| vm.goBack(); | |
| } else { | |
| vm.showModal('错误', response.data.message); | |
| } | |
| }); | |
| }, | |
| mobileLoginSubmit: function mobileLoginSubmit(data) { | |
| var vm = this; | |
| var formData = data.detail.value; | |
| if (!vm.validateMobile(formData.mobile) || !formData.code) { | |
| return vm.showModal('错误', '请填写正确的手机号和验证码'); | |
| } | |
| swan.showLoading({ title: '登录中...' }); | |
| DwUtils.request('post/company_account/login_with_mobile', formData).then(function (response) { | |
| swan.hideLoading(); | |
| if (response.data.status === 'success') { | |
| vm.setSiteuserToken(response.data.siteuser_token); | |
| vm.showModal('成功', response.data.message); | |
| vm.goBack(); | |
| } else { | |
| vm.showModal('错误', response.data.message); | |
| } | |
| }); | |
| }, | |
| mobileSignupSubmit: function mobileSignupSubmit(data) { | |
| var vm = this; | |
| var formData = data.detail.value; | |
| formData.invitation_code = vm.data.invitation_code; | |
| if (!vm.validateMobile(formData.mobile) || !formData.code) { | |
| return vm.showModal('错误', '请填写正确的手机号和验证码'); | |
| } | |
| if (!formData.password1) { | |
| return vm.showModal('错误', '请填写密码'); | |
| } | |
| if (formData.password1 !== formData.password2) { | |
| return vm.showModal('错误', '两次输入的密码不一致'); | |
| } | |
| swan.showLoading({ title: '注册中...' }); | |
| DwUtils.request('post/company_account/signup_with_mobile', formData).then(function (response) { | |
| swan.hideLoading(); | |
| if (response.data.status === 'success') { | |
| vm.setSiteuserToken(response.data.siteuser_token); | |
| vm.showModal('成功', response.data.message); | |
| vm.goBack(); | |
| } else { | |
| vm.showModal('错误', response.data.message); | |
| } | |
| }); | |
| }, | |
| mobileResetSubmit: function mobileResetSubmit(data) { | |
| var vm = this; | |
| var formData = data.detail.value; | |
| if (!vm.validateMobile(formData.mobile) || !formData.code) { | |
| return vm.showModal('错误', '请填写正确的手机号和验证码'); | |
| } | |
| if (!formData.password1) { | |
| return vm.showModal('错误', '请填写密码'); | |
| } | |
| if (formData.password1 !== formData.password2) { | |
| return vm.showModal('错误', '两次输入的密码不一致'); | |
| } | |
| swan.showLoading({ title: '密码重置中...' }); | |
| DwUtils.request('post/company_account/reset_password_by_mobile', formData).then(function (response) { | |
| swan.hideLoading(); | |
| if (response.data.status === 'success') { | |
| vm.setSiteuserToken(response.data.siteuser_token); | |
| vm.showModal('成功', response.data.message); | |
| vm.goBack(); | |
| } else { | |
| vm.showModal('错误', response.data.message); | |
| } | |
| }); | |
| }, | |
| handleUpdateView: function handleUpdateView(e) { | |
| this.setData({ | |
| currentView: e.currentTarget.dataset.view | |
| }); | |
| }, | |
| goBack: function goBack() { | |
| swan.navigateBack(); | |
| }, | |
| goBackHome: function goBackHome() { | |
| swan.switchTab({ url: '../default-home/index' }); | |
| }, | |
| afterLogin: function afterLogin() { | |
| var vm = this; | |
| // 所有登录之后要做的事统一放到一个请求处理 | |
| app.getUserInfo(function (userInfo, login_data, user_data) { | |
| var data = { login_data: login_data, user_data: user_data }; | |
| DwUtils.request('post/company_account/after_dwapp_login', data).then(function (response) { | |
| vm.setData({ | |
| siteuserData: response.data.siteuser ? response.data.siteuser : null | |
| }); | |
| }); | |
| }); | |
| var pshop_id = swan.getStorageSync('pshop_id'); | |
| DwUtils.request('post/company_account/after_dwapp_login_with_pshop_id', { pshop_id: pshop_id }).then(function (response) { | |
| console.log('post/company_account/after_dwapp_login_with_pshop_id', pshop_id, response); | |
| if (response.data.siteuser) { | |
| swan.setStorageSync('siteuser_id', response.data.siteuser.id); | |
| } | |
| }); | |
| }, | |
| openTerm: function openTerm() { | |
| this.setData({ | |
| showTerm: true | |
| }); | |
| }, | |
| closeTerm: function closeTerm() { | |
| this.setData({ | |
| showTerm: false | |
| }); | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./pages/add-todo/add-todo.js": | |
| /*!************************************!*\ | |
| !*** ./pages/add-todo/add-todo.js ***! | |
| \************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| _afAppx.$global.currentPageConfig = { "pagePath": "pages/add-todo/add-todo", "usingComponents": { "add-button": "/components/add-button/add-button" } }; | |
| var app = (0, _afAppx.getApp)(); | |
| (0, _afAppx.Page)({ | |
| data: { | |
| inputValue: '' | |
| }, | |
| onBlur: function onBlur(e) { | |
| this.setData({ | |
| inputValue: e.detail.value | |
| }); | |
| }, | |
| add: function add() { | |
| app.todos = app.todos.concat([{ | |
| text: this.data.inputValue, | |
| compeleted: false | |
| }]); | |
| my.navigateBack(); | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./pages/plugin-comzbadge/index.js": | |
| /*!*****************************************!*\ | |
| !*** ./pages/plugin-comzbadge/index.js ***! | |
| \*****************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var Component = _afAppx.WorkerComponent || function () {}; | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| _afAppx.$global.currentComponentConfig = { "is": "/pages/plugin-comzbadge/index", "usingComponents": {} }; | |
| 'use strict'; | |
| var WAComponent = __webpack_require__(/*! ../../components/shared/wacomponent.js */ "./components/shared/wacomponent.js"); | |
| Component = WAComponent(Component); | |
| var DEFAULT_COLOR = '#fff'; | |
| var DEFAULT_BACKGROUND_COLOR = '#f44'; | |
| var DEFAULT_FONT_SIZE = 10; | |
| var DEFAULT_BOX_SHADOW = '0 0 0 2px #fff'; | |
| Component({ | |
| methods: { | |
| tN: function tN(e) { | |
| console.log('123'); | |
| this.props.onTN('456'); | |
| } | |
| }, | |
| attached: function attached() { | |
| my.$wa = 1; | |
| console.log('xxxxxxxxxx', this); | |
| }, | |
| properties: { | |
| color: { | |
| type: String, | |
| value: DEFAULT_COLOR | |
| }, | |
| backgroundColor: { | |
| type: String, | |
| value: DEFAULT_BACKGROUND_COLOR | |
| }, | |
| fontSize: { | |
| type: Number, | |
| value: DEFAULT_FONT_SIZE | |
| }, | |
| boxShadow: { | |
| type: String, | |
| value: DEFAULT_BOX_SHADOW | |
| }, | |
| onTN: function onTN(x) { | |
| console.log(x, this, this.triggerEvent); | |
| } | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./pages/plugin-comzloading/index.js": | |
| /*!*******************************************!*\ | |
| !*** ./pages/plugin-comzloading/index.js ***! | |
| \*******************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var Component = _afAppx.WorkerComponent || function () {}; | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| _afAppx.$global.currentComponentConfig = { "is": "/pages/plugin-comzloading/index", "usingComponents": { "plugin-comzbadge": "/pages/plugin-comzbadge/index" } }; | |
| 'use strict'; | |
| var WAComponent = __webpack_require__(/*! ../../components/shared/wacomponent.js */ "./components/shared/wacomponent.js"); | |
| Component = WAComponent(Component); | |
| Component({ | |
| properties: { | |
| type: { | |
| type: String, | |
| value: 'circle' | |
| }, | |
| color: { | |
| type: String | |
| }, | |
| $waChildDidMound: { | |
| value: function value() {} | |
| } | |
| }, | |
| methods: { | |
| _didMount: function _didMount() { | |
| console.log(2); | |
| } | |
| }, | |
| attached: function attached() { | |
| console.log('xxxx', this, my.$wa); | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./pages/plugin-debug/index.js": | |
| /*!*************************************!*\ | |
| !*** ./pages/plugin-debug/index.js ***! | |
| \*************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| _afAppx.$global.currentPageConfig = { "pagePath": "pages/plugin-debug/index", "usingComponents": {} }; | |
| /* global getCurrentPages,Page,my */ | |
| /* eslint-disable camelcase */ | |
| var wx = my; | |
| var DwUtils = __webpack_require__(/*! ../../utils/dw */ "./utils/dw.js").DwUtils; | |
| // var appConfig = require('../../utils/config') | |
| var debugCounter = 0; | |
| (0, _afAppx.Page)({ | |
| data: { | |
| isLogin: false, | |
| previousDwHref: null, | |
| previousQrcode: null | |
| }, | |
| onLoad: function onLoad(options) { | |
| // | |
| }, | |
| onShow: function onShow() { | |
| this.getPreviousQrcode(); | |
| }, | |
| getPreviousQrcode: function getPreviousQrcode() { | |
| var _this = this; | |
| var pages = (0, _afAppx.getCurrentPages)(); | |
| if (pages.length >= 2) { | |
| var page = pages.slice(-2, -1)[0]; | |
| var path = page.route; | |
| var params = page.data.query || {}; | |
| var dwhrefPath = path.split('/').slice(-2, -1)[0]; | |
| var query = Object.keys(params).map(function (i) { | |
| return i + '=' + params[i]; | |
| }).join('&'); | |
| var search = query ? '?' + query : ''; | |
| var dwhref = dwhrefPath + search; | |
| this.setData({ | |
| previousDwHref: dwhref | |
| }); | |
| DwUtils.fetch('get/dwapp/create_dwapp_qrcode', { dwhref: dwhref }).then(function (response) { | |
| console.log('response', response); | |
| var _response$data = response.data, | |
| status = _response$data.status, | |
| object = _response$data.object; | |
| if (status === 'success') { | |
| var qrcode = object.qrcode; | |
| _this.setData({ | |
| previousQrcode: DwUtils.filters.qiniu(qrcode) | |
| }); | |
| } | |
| }); | |
| } | |
| }, | |
| previewQrcode: function previewQrcode() { | |
| wx.previewImage({ | |
| current: this.data.previousQrcode, | |
| urls: [this.data.previousQrcode] | |
| }); | |
| }, | |
| setEnableDebug: function setEnableDebug() { | |
| wx.setEnableDebug({ | |
| enableDebug: Boolean(++debugCounter % 2) | |
| }); | |
| }, | |
| goBack: function goBack() { | |
| wx.navigateBack(); | |
| }, | |
| goBackHome: function goBackHome() { | |
| wx.switchTab({ url: '../default-home/index' }); | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./pages/todos/todos.js": | |
| /*!******************************!*\ | |
| !*** ./pages/todos/todos.js ***! | |
| \******************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/extends.js"); | |
| var _extends3 = _interopRequireDefault(_extends2); | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| _afAppx.$global.currentPageConfig = { "pagePath": "pages/todos/todos", "usingComponents": { "add-button": "/components/add-button/add-button", "plugin-comzloading": "/pages/plugin-comzloading/index", "plugin-comzbadge": "/pages/plugin-comzbadge/index" } }; | |
| var app = (0, _afAppx.getApp)(); | |
| (0, _afAppx.Page)({ | |
| data: {}, | |
| onLoad: function onLoad() { | |
| var _this = this; | |
| app.getUserInfo().then(function (user) { | |
| _this.setData({ | |
| user: user | |
| }); | |
| }, function () { | |
| // 获取用户信息失败 | |
| }); | |
| }, | |
| onShow: function onShow() { | |
| this.setData({ todos: app.todos }); | |
| }, | |
| onTodoChanged: function onTodoChanged(e) { | |
| var checkedTodos = e.detail.value; | |
| app.todos = app.todos.map(function (todo) { | |
| return (0, _extends3.default)({}, todo, { | |
| completed: checkedTodos.indexOf(todo.text) > -1 | |
| }); | |
| }); | |
| this.setData({ todos: app.todos }); | |
| }, | |
| onTN: function onTN(x) { | |
| console.log(x, x); | |
| }, | |
| addTodo: function addTodo() { | |
| my.navigateTo({ url: '../add-todo/add-todo' }); | |
| } | |
| }); | |
| /***/ }), | |
| /***/ "./utils/config.js": | |
| /*!*************************!*\ | |
| !*** ./utils/config.js ***! | |
| \*************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| module.exports = { | |
| "apiUrl": "http://testapi.demlution.com", | |
| "app": { | |
| "pages": ["pages/app_dwstore-card/index", "pages/default-home/index", "pages/account-login/index", "pages/charge/index", "pages/plugin-fxfont/index", "pages/plugin-redirect/index", "pages/default-id_59ff09f2e49d40b4d0faacca/index", "pages/feature-about/index", "pages/feature-contact/index", "pages/feature-search/index", "pages/list-product/index", "pages/detail-product/index", "pages/mall-cart/index", "pages/mall-checkout/index", "pages/list-news/index", "pages/detail-news/index", "pages/list-service/index", "pages/detail-service/index", "pages/list-activity/index", "pages/detail-activity/index", "pages/list-event/index", "pages/detail-event/index", "pages/list-post/index", "pages/detail-post/index", "pages/list-imageset/index", "pages/detail-imageset/index", "pages/forum-index/index", "pages/forum-list/index", "pages/forum-detail/index", "pages/forum-form/index", "pages/forum-profile/index", "pages/feature-home/index", "pages/feature-account/index", "pages/feature-notice/index", "pages/feature-invitation/index", "pages/feature-member/index", "pages/feature-credits/index", "pages/feature-gift/index", "pages/feature-form/index", "pages/feature-couponcard/index", "pages/feature-coupon/index", "pages/feature-gameinfo/index", "pages/feature-order/index", "pages/feature-favorites/index", "pages/feature-review/index", "pages/feature-addressbook/index", "pages/feature-pshop/index", "pages/feature-section_post/index", "pages/feature-section_favorites/index", "pages/feature-section_reply/index", "pages/feature-forum_topic/index", "pages/feature-forum_post/index", "pages/feature-forum_favorites/index", "pages/feature-forum_credits/index", "pages/app_dwstore-group/index", "pages/app_dwstore-pipeline/index", "pages/app_dwstore-my/index"], | |
| "tabBar": { | |
| "backgroundColor": "#fff", | |
| "borderStyle": "black", | |
| "color": "#616161", | |
| "list": [{ | |
| "iconPath": "images/icon-0.png", | |
| "pagePath": "pages/app_dwstore-card/index", | |
| "selectedIconPath": "images/icon-selected-0.png", | |
| "text": "名片" | |
| }, { | |
| "iconPath": "images/icon-1.png", | |
| "pagePath": "pages/app_dwstore-group/index", | |
| "selectedIconPath": "images/icon-selected-1.png", | |
| "text": "群推广" | |
| }, { | |
| "iconPath": "images/icon-2.png", | |
| "pagePath": "pages/app_dwstore-pipeline/index", | |
| "selectedIconPath": "images/icon-selected-2.png", | |
| "text": "人脉" | |
| }, { | |
| "iconPath": "images/icon-3.png", | |
| "pagePath": "pages/app_dwstore-my/index", | |
| "selectedIconPath": "images/icon-selected-3.png", | |
| "text": "我" | |
| }], | |
| "position": "bottom", | |
| "selectedColor": "#2b2b2b" | |
| }, | |
| "window": { | |
| "backgroundTextStyle": "light", | |
| "navigationBarBackgroundColor": "#fff", | |
| "navigationBarTextStyle": "black", | |
| "navigationBarTitleText": "WeChat" | |
| } | |
| }, | |
| "buildDate": null, | |
| "company": { | |
| "agent_name": "上海一当网络科技有限公司", | |
| "app_version": "2018-07-10 13:19", | |
| "id": 500, | |
| "name": "上海求真专修学校", | |
| "nickname": "qiuzhen" | |
| }, | |
| "debug": true, | |
| "page": { | |
| "id": 2678, | |
| "name": "dwstore" | |
| } | |
| }; | |
| /***/ }), | |
| /***/ "./utils/dw.js": | |
| /*!*********************!*\ | |
| !*** ./utils/dw.js ***! | |
| \*********************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _typeof2 = __webpack_require__(/*! babel-runtime/helpers/typeof */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/typeof.js"); | |
| var _typeof3 = _interopRequireDefault(_typeof2); | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| /* global my,getCurrentPages,swan */ | |
| var wx = my; | |
| var WxParse = {}; | |
| var config = __webpack_require__(/*! ./config */ "./utils/config.js"); | |
| var shared = __webpack_require__(/*! ./dw_shared */ "./utils/dw_shared.js"); | |
| // var WxParse = require('../wxParse/wxParse.js') | |
| var isSwan = (typeof swan === 'undefined' ? 'undefined' : (0, _typeof3.default)(swan)) === 'object'; | |
| var isMy = (typeof my === 'undefined' ? 'undefined' : (0, _typeof3.default)(my)) === 'object'; | |
| module.exports = shared.default.buildDw({ | |
| config: config, | |
| WxParse: WxParse, | |
| wx: isSwan ? swan : wx, | |
| isSwan: isSwan, | |
| isMy: isMy, | |
| getCurrentPages: _afAppx.getCurrentPages | |
| }); | |
| /***/ }), | |
| /***/ "./utils/dw_shared.js": | |
| /*!****************************!*\ | |
| !*** ./utils/dw_shared.js ***! | |
| \****************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| "use strict"; | |
| var _typeof2 = __webpack_require__(/*! babel-runtime/helpers/typeof */ "../../../../Program Files/ali/mini/resources/app/extensions/volans-ide-tiny-project.asar/node_modules/babel-runtime/helpers/typeof.js"); | |
| var _typeof3 = _interopRequireDefault(_typeof2); | |
| var _afAppx = __webpack_require__(/*! @alipay/af-appx */ "@alipay/af-appx"); | |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | |
| var globalThis = undefined; | |
| var global = undefined; | |
| var appXRuntimeConfig = undefined; | |
| var self = undefined; | |
| var window = undefined; | |
| var document = undefined; | |
| var location = undefined; | |
| var XMLHttpRequest = undefined; | |
| var AlipayJSBridge = undefined; | |
| var AFAppX = undefined; | |
| var importScripts = undefined; | |
| var fetch = undefined; | |
| var abridge = _afAppx.bridge; | |
| var my = _afAppx.bridge; | |
| /* eslint-disable */ | |
| var window = { | |
| Array: Array, | |
| Set: Set, | |
| Promise: Promise, | |
| Date: Date, | |
| Error: Error, | |
| Function: Function, | |
| Math: Math, | |
| Object: Object, | |
| RegExp: RegExp, | |
| String: String, | |
| TypeError: TypeError, | |
| setTimeout: setTimeout, | |
| clearTimeout: clearTimeout, | |
| setInterval: setInterval, | |
| clearInterval: clearInterval, | |
| parseInt: parseInt, | |
| parseFloat: parseFloat, | |
| Number: Number | |
| }; | |
| module.exports = function (t) { | |
| function n(r) { | |
| if (e[r]) return e[r].exports;var i = e[r] = { i: r, l: !1, exports: {} };return t[r].call(i.exports, i, i.exports, n), i.l = !0, i.exports; | |
| }var e = {};return n.m = t, n.c = e, n.d = function (t, e, r) { | |
| n.o(t, e) || Object.defineProperty(t, e, { configurable: !1, enumerable: !0, get: r }); | |
| }, n.n = function (t) { | |
| var e = t && t.__esModule ? function () { | |
| return t.default; | |
| } : function () { | |
| return t; | |
| };return n.d(e, "a", e), e; | |
| }, n.o = function (t, n) { | |
| return Object.prototype.hasOwnProperty.call(t, n); | |
| }, n.p = "/Users/risent/Project/bazaar4/dstore/dist", n(n.s = 213); | |
| }([function (t, n, e) { | |
| var r = e(2), | |
| i = e(34), | |
| o = e(16), | |
| u = e(17), | |
| a = e(22), | |
| c = "prototype", | |
| s = function s(t, n, e) { | |
| var f, | |
| l, | |
| h, | |
| p, | |
| v = t & s.F, | |
| d = t & s.G, | |
| y = t & s.S, | |
| g = t & s.P, | |
| m = t & s.B, | |
| _ = d ? r : y ? r[n] || (r[n] = {}) : (r[n] || {})[c], | |
| w = d ? i : i[n] || (i[n] = {}), | |
| b = w[c] || (w[c] = {});d && (e = n);for (f in e) { | |
| l = !v && _ && void 0 !== _[f], h = (l ? _ : e)[f], p = m && l ? a(h, r) : g && "function" == typeof h ? a(Function.call, h) : h, _ && u(_, f, h, t & s.U), w[f] != h && o(w, f, p), g && b[f] != h && (b[f] = h); | |
| } | |
| };r.core = i, s.F = 1, s.G = 2, s.S = 4, s.P = 8, s.B = 16, s.W = 32, s.U = 64, s.R = 128, t.exports = s; | |
| }, function (t, n, e) { | |
| var r = e(4);t.exports = function (t) { | |
| if (!r(t)) throw TypeError(t + " is not an object!");return t; | |
| }; | |
| }, function (t, n) { | |
| var e = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();"number" == typeof __g && (__g = e); | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| try { | |
| return !!t(); | |
| } catch (t) { | |
| return !0; | |
| } | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| return "object" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)) ? null !== t : "function" == typeof t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(75)("wks"), | |
| i = e(42), | |
| o = e(2).Symbol, | |
| u = "function" == typeof o;(t.exports = function (t) { | |
| return r[t] || (r[t] = u && o[t] || (u ? o : i)("Symbol." + t)); | |
| }).store = r; | |
| }, function (t, n) { | |
| var e = t.exports = { version: "2.5.3" };"number" == typeof __e && (__e = e); | |
| }, function (t, n, e) { | |
| t.exports = !e(3)(function () { | |
| return 7 != Object.defineProperty({}, "a", { get: function get() { | |
| return 7; | |
| } }).a; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(1), | |
| i = e(154), | |
| o = e(27), | |
| u = Object.defineProperty;n.f = e(7) ? Object.defineProperty : function (t, n, e) { | |
| if (r(t), n = o(n, !0), r(e), i) try { | |
| return u(t, n, e); | |
| } catch (t) {}if ("get" in e || "set" in e) throw TypeError("Accessors not supported!");return "value" in e && (t[n] = e.value), t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(29), | |
| i = Math.min;t.exports = function (t) { | |
| return t > 0 ? i(r(t), 9007199254740991) : 0; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(28);t.exports = function (t) { | |
| return Object(r(t)); | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| if ("function" != typeof t) throw TypeError(t + " is not a function!");return t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(14), | |
| i = e(6), | |
| o = e(37), | |
| u = e(40), | |
| a = "prototype", | |
| c = function c(t, n, e) { | |
| var s, | |
| f, | |
| l, | |
| h = t & c.F, | |
| p = t & c.G, | |
| v = t & c.S, | |
| d = t & c.P, | |
| y = t & c.B, | |
| g = t & c.W, | |
| m = p ? i : i[n] || (i[n] = {}), | |
| _ = m[a], | |
| w = p ? r : v ? r[n] : (r[n] || {})[a];p && (e = n);for (s in e) { | |
| (f = !h && w && void 0 !== w[s]) && s in m || (l = f ? w[s] : e[s], m[s] = p && "function" != typeof w[s] ? e[s] : y && f ? o(l, r) : g && w[s] == l ? function (t) { | |
| var n = function n(_n, e, r) { | |
| if (this instanceof t) { | |
| switch (arguments.length) {case 0: | |
| return new t();case 1: | |
| return new t(_n);case 2: | |
| return new t(_n, e);}return new t(_n, e, r); | |
| }return t.apply(this, arguments); | |
| };return n[a] = t[a], n; | |
| }(l) : d && "function" == typeof l ? o(Function.call, l) : l, d && ((m.virtual || (m.virtual = {}))[s] = l, t & c.R && _ && !_[s] && u(_, s, l))); | |
| } | |
| };c.F = 1, c.G = 2, c.S = 4, c.P = 8, c.B = 16, c.W = 32, c.U = 64, c.R = 128, t.exports = c; | |
| }, function (t, n, e) { | |
| var r = e(135)("wks"), | |
| i = e(93), | |
| o = e(14).Symbol, | |
| u = "function" == typeof o;(t.exports = function (t) { | |
| return r[t] || (r[t] = u && o[t] || (u ? o : i)("Symbol." + t)); | |
| }).store = r; | |
| }, function (t, n) { | |
| var e = t.exports = "undefined" != typeof window && window.Math == Math ? window : "undefined" != typeof self && self.Math == Math ? self : Function("return this")();"number" == typeof __g && (__g = e); | |
| }, function (t, n) { | |
| var e = {}.hasOwnProperty;t.exports = function (t, n) { | |
| return e.call(t, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(8), | |
| i = e(41);t.exports = e(7) ? function (t, n, e) { | |
| return r.f(t, n, i(1, e)); | |
| } : function (t, n, e) { | |
| return t[n] = e, t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(2), | |
| i = e(16), | |
| o = e(15), | |
| u = e(42)("src"), | |
| a = "toString", | |
| c = Function[a], | |
| s = ("" + c).split(a);e(34).inspectSource = function (t) { | |
| return c.call(t); | |
| }, (t.exports = function (t, n, e, a) { | |
| var c = "function" == typeof e;c && (o(e, "name") || i(e, "name", n)), t[n] !== e && (c && (o(e, u) || i(e, u, t[n] ? "" + t[n] : s.join(String(n)))), t === r ? t[n] = e : a ? t[n] ? t[n] = e : i(t, n, e) : (delete t[n], i(t, n, e))); | |
| })(Function.prototype, a, function () { | |
| return "function" == typeof this && this[u] || c.call(this); | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(3), | |
| o = e(28), | |
| u = /"/g, | |
| a = function a(t, n, e, r) { | |
| var i = String(o(t)), | |
| a = "<" + n;return "" !== e && (a += " " + e + '="' + String(r).replace(u, """) + '"'), a + ">" + i + "</" + n + ">"; | |
| };t.exports = function (t, n) { | |
| var e = {};e[t] = n(a), r(r.P + r.F * i(function () { | |
| var n = ""[t]('"');return n !== n.toLowerCase() || n.split('"').length > 3; | |
| }), "String", e); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(63), | |
| i = e(28);t.exports = function (t) { | |
| return r(i(t)); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(64), | |
| i = e(41), | |
| o = e(19), | |
| u = e(27), | |
| a = e(15), | |
| c = e(154), | |
| s = Object.getOwnPropertyDescriptor;n.f = e(7) ? s : function (t, n) { | |
| if (t = o(t), n = u(n, !0), c) try { | |
| return s(t, n); | |
| } catch (t) {}if (a(t, n)) return i(!r.f.call(t, n), t[n]); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(15), | |
| i = e(10), | |
| o = e(103)("IE_PROTO"), | |
| u = Object.prototype;t.exports = Object.getPrototypeOf || function (t) { | |
| return t = i(t), r(t, o) ? t[o] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? u : null; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(11);t.exports = function (t, n, e) { | |
| if (r(t), void 0 === n) return t;switch (e) {case 1: | |
| return function (e) { | |
| return t.call(n, e); | |
| };case 2: | |
| return function (e, r) { | |
| return t.call(n, e, r); | |
| };case 3: | |
| return function (e, r, i) { | |
| return t.call(n, e, r, i); | |
| };}return function () { | |
| return t.apply(n, arguments); | |
| }; | |
| }; | |
| }, function (t, n) { | |
| var e = {}.toString;t.exports = function (t) { | |
| return e.call(t).slice(8, -1); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(3);t.exports = function (t, n) { | |
| return !!t && r(function () { | |
| n ? t.call(null, function () {}, 1) : t.call(null); | |
| }); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(32), | |
| i = e(189), | |
| o = e(132), | |
| u = Object.defineProperty;n.f = e(33) ? Object.defineProperty : function (t, n, e) { | |
| if (r(t), n = o(n, !0), r(e), i) try { | |
| return u(t, n, e); | |
| } catch (t) {}if ("get" in e || "set" in e) throw TypeError("Accessors not supported!");return "value" in e && (t[n] = e.value), t; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| return "object" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)) ? null !== t : "function" == typeof t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(4);t.exports = function (t, n) { | |
| if (!r(t)) return t;var e, i;if (n && "function" == typeof (e = t.toString) && !r(i = e.call(t))) return i;if ("function" == typeof (e = t.valueOf) && !r(i = e.call(t))) return i;if (!n && "function" == typeof (e = t.toString) && !r(i = e.call(t))) return i;throw TypeError("Can't convert object to primitive value"); | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| if (void 0 == t) throw TypeError("Can't call method on " + t);return t; | |
| }; | |
| }, function (t, n) { | |
| var e = Math.ceil, | |
| r = Math.floor;t.exports = function (t) { | |
| return isNaN(t = +t) ? 0 : (t > 0 ? r : e)(t); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(34), | |
| o = e(3);t.exports = function (t, n) { | |
| var e = (i.Object || {})[t] || Object[t], | |
| u = {};u[t] = n(e), r(r.S + r.F * o(function () { | |
| e(1); | |
| }), "Object", u); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(22), | |
| i = e(63), | |
| o = e(10), | |
| u = e(9), | |
| a = e(120);t.exports = function (t, n) { | |
| var e = 1 == t, | |
| c = 2 == t, | |
| s = 3 == t, | |
| f = 4 == t, | |
| l = 6 == t, | |
| h = 5 == t || l, | |
| p = n || a;return function (n, a, v) { | |
| for (var d, y, g = o(n), m = i(g), _ = r(a, v, 3), w = u(m.length), b = 0, x = e ? p(n, w) : c ? p(n, 0) : void 0; w > b; b++) { | |
| if ((h || b in m) && (d = m[b], y = _(d, b, g), t)) if (e) x[b] = y;else if (y) switch (t) {case 3: | |
| return !0;case 5: | |
| return d;case 6: | |
| return b;case 2: | |
| x.push(d);} else if (f) return !1; | |
| }return l ? -1 : s || f ? f : x; | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(26);t.exports = function (t) { | |
| if (!r(t)) throw TypeError(t + " is not an object!");return t; | |
| }; | |
| }, function (t, n, e) { | |
| t.exports = !e(52)(function () { | |
| return 7 != Object.defineProperty({}, "a", { get: function get() { | |
| return 7; | |
| } }).a; | |
| }); | |
| }, function (t, n) { | |
| var e = t.exports = { version: "2.5.3" };"number" == typeof __e && (__e = e); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| if (e(7)) { | |
| var r = e(43), | |
| i = e(2), | |
| o = e(3), | |
| u = e(0), | |
| a = e(85), | |
| c = e(126), | |
| s = e(22), | |
| f = e(49), | |
| l = e(41), | |
| h = e(16), | |
| p = e(51), | |
| v = e(29), | |
| d = e(9), | |
| y = e(180), | |
| g = e(45), | |
| m = e(27), | |
| _ = e(15), | |
| w = e(65), | |
| b = e(4), | |
| x = e(10), | |
| S = e(117), | |
| O = e(46), | |
| P = e(21), | |
| k = e(47).f, | |
| E = e(119), | |
| j = e(42), | |
| A = e(5), | |
| M = e(31), | |
| T = e(76), | |
| F = e(83), | |
| L = e(122), | |
| I = e(57), | |
| N = e(80), | |
| D = e(48), | |
| R = e(121), | |
| C = e(170), | |
| U = e(8), | |
| G = e(20), | |
| W = U.f, | |
| V = G.f, | |
| B = i.RangeError, | |
| q = i.TypeError, | |
| z = i.Uint8Array, | |
| H = "ArrayBuffer", | |
| J = "Shared" + H, | |
| K = "BYTES_PER_ELEMENT", | |
| Y = "prototype", | |
| $ = Array[Y], | |
| Q = c.ArrayBuffer, | |
| X = c.DataView, | |
| Z = M(0), | |
| tt = M(2), | |
| nt = M(3), | |
| et = M(4), | |
| rt = M(5), | |
| it = M(6), | |
| ot = T(!0), | |
| ut = T(!1), | |
| at = L.values, | |
| ct = L.keys, | |
| st = L.entries, | |
| ft = $.lastIndexOf, | |
| lt = $.reduce, | |
| ht = $.reduceRight, | |
| pt = $.join, | |
| vt = $.sort, | |
| dt = $.slice, | |
| yt = $.toString, | |
| gt = $.toLocaleString, | |
| mt = A("iterator"), | |
| _t = A("toStringTag"), | |
| wt = j("typed_constructor"), | |
| bt = j("def_constructor"), | |
| xt = a.CONSTR, | |
| St = a.TYPED, | |
| Ot = a.VIEW, | |
| Pt = "Wrong length!", | |
| kt = M(1, function (t, n) { | |
| return Tt(F(t, t[bt]), n); | |
| }), | |
| Et = o(function () { | |
| return 1 === new z(new Uint16Array([1]).buffer)[0]; | |
| }), | |
| jt = !!z && !!z[Y].set && o(function () { | |
| new z(1).set({}); | |
| }), | |
| At = function At(t, n) { | |
| var e = v(t);if (e < 0 || e % n) throw B("Wrong offset!");return e; | |
| }, | |
| Mt = function Mt(t) { | |
| if (b(t) && St in t) return t;throw q(t + " is not a typed array!"); | |
| }, | |
| Tt = function Tt(t, n) { | |
| if (!(b(t) && wt in t)) throw q("It is not a typed array constructor!");return new t(n); | |
| }, | |
| Ft = function Ft(t, n) { | |
| return Lt(F(t, t[bt]), n); | |
| }, | |
| Lt = function Lt(t, n) { | |
| for (var e = 0, r = n.length, i = Tt(t, r); r > e;) { | |
| i[e] = n[e++]; | |
| }return i; | |
| }, | |
| It = function It(t, n, e) { | |
| W(t, n, { get: function get() { | |
| return this._d[e]; | |
| } }); | |
| }, | |
| Nt = function Nt(t) { | |
| var n, | |
| e, | |
| r, | |
| i, | |
| o, | |
| u, | |
| a = x(t), | |
| c = arguments.length, | |
| f = c > 1 ? arguments[1] : void 0, | |
| l = void 0 !== f, | |
| h = E(a);if (void 0 != h && !S(h)) { | |
| for (u = h.call(a), r = [], n = 0; !(o = u.next()).done; n++) { | |
| r.push(o.value); | |
| }a = r; | |
| }for (l && c > 2 && (f = s(f, arguments[2], 2)), n = 0, e = d(a.length), i = Tt(this, e); e > n; n++) { | |
| i[n] = l ? f(a[n], n) : a[n]; | |
| }return i; | |
| }, | |
| Dt = function Dt() { | |
| for (var t = 0, n = arguments.length, e = Tt(this, n); n > t;) { | |
| e[t] = arguments[t++]; | |
| }return e; | |
| }, | |
| Rt = !!z && o(function () { | |
| gt.call(new z(1)); | |
| }), | |
| Ct = function Ct() { | |
| return gt.apply(Rt ? dt.call(Mt(this)) : Mt(this), arguments); | |
| }, | |
| Ut = { copyWithin: function copyWithin(t, n) { | |
| return C.call(Mt(this), t, n, arguments.length > 2 ? arguments[2] : void 0); | |
| }, every: function every(t) { | |
| return et(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, fill: function fill(t) { | |
| return R.apply(Mt(this), arguments); | |
| }, filter: function filter(t) { | |
| return Ft(this, tt(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0)); | |
| }, find: function find(t) { | |
| return rt(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, findIndex: function findIndex(t) { | |
| return it(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, forEach: function forEach(t) { | |
| Z(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, indexOf: function indexOf(t) { | |
| return ut(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, includes: function includes(t) { | |
| return ot(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, join: function join(t) { | |
| return pt.apply(Mt(this), arguments); | |
| }, lastIndexOf: function lastIndexOf(t) { | |
| return ft.apply(Mt(this), arguments); | |
| }, map: function map(t) { | |
| return kt(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, reduce: function reduce(t) { | |
| return lt.apply(Mt(this), arguments); | |
| }, reduceRight: function reduceRight(t) { | |
| return ht.apply(Mt(this), arguments); | |
| }, reverse: function reverse() { | |
| for (var t, n = this, e = Mt(n).length, r = Math.floor(e / 2), i = 0; i < r;) { | |
| t = n[i], n[i++] = n[--e], n[e] = t; | |
| }return n; | |
| }, some: function some(t) { | |
| return nt(Mt(this), t, arguments.length > 1 ? arguments[1] : void 0); | |
| }, sort: function sort(t) { | |
| return vt.call(Mt(this), t); | |
| }, subarray: function subarray(t, n) { | |
| var e = Mt(this), | |
| r = e.length, | |
| i = g(t, r);return new (F(e, e[bt]))(e.buffer, e.byteOffset + i * e.BYTES_PER_ELEMENT, d((void 0 === n ? r : g(n, r)) - i)); | |
| } }, | |
| Gt = function Gt(t, n) { | |
| return Ft(this, dt.call(Mt(this), t, n)); | |
| }, | |
| Wt = function Wt(t) { | |
| Mt(this);var n = At(arguments[1], 1), | |
| e = this.length, | |
| r = x(t), | |
| i = d(r.length), | |
| o = 0;if (i + n > e) throw B(Pt);for (; o < i;) { | |
| this[n + o] = r[o++]; | |
| } | |
| }, | |
| Vt = { entries: function entries() { | |
| return st.call(Mt(this)); | |
| }, keys: function keys() { | |
| return ct.call(Mt(this)); | |
| }, values: function values() { | |
| return at.call(Mt(this)); | |
| } }, | |
| Bt = function Bt(t, n) { | |
| return b(t) && t[St] && "symbol" != (typeof n === "undefined" ? "undefined" : (0, _typeof3.default)(n)) && n in t && String(+n) == String(n); | |
| }, | |
| qt = function qt(t, n) { | |
| return Bt(t, n = m(n, !0)) ? l(2, t[n]) : V(t, n); | |
| }, | |
| zt = function zt(t, n, e) { | |
| return !(Bt(t, n = m(n, !0)) && b(e) && _(e, "value")) || _(e, "get") || _(e, "set") || e.configurable || _(e, "writable") && !e.writable || _(e, "enumerable") && !e.enumerable ? W(t, n, e) : (t[n] = e.value, t); | |
| };xt || (G.f = qt, U.f = zt), u(u.S + u.F * !xt, "Object", { getOwnPropertyDescriptor: qt, defineProperty: zt }), o(function () { | |
| yt.call({}); | |
| }) && (yt = gt = function gt() { | |
| return pt.call(this); | |
| });var Ht = p({}, Ut);p(Ht, Vt), h(Ht, mt, Vt.values), p(Ht, { slice: Gt, set: Wt, constructor: function constructor() {}, toString: yt, toLocaleString: Ct }), It(Ht, "buffer", "b"), It(Ht, "byteOffset", "o"), It(Ht, "byteLength", "l"), It(Ht, "length", "e"), W(Ht, _t, { get: function get() { | |
| return this[St]; | |
| } }), t.exports = function (t, n, e, c) { | |
| c = !!c;var s = t + (c ? "Clamped" : "") + "Array", | |
| l = "get" + t, | |
| p = "set" + t, | |
| v = i[s], | |
| g = v || {}, | |
| m = v && P(v), | |
| _ = !v || !a.ABV, | |
| x = {}, | |
| S = v && v[Y], | |
| E = function E(t, e) { | |
| var r = t._d;return r.v[l](e * n + r.o, Et); | |
| }, | |
| j = function j(t, e, r) { | |
| var i = t._d;c && (r = (r = Math.round(r)) < 0 ? 0 : r > 255 ? 255 : 255 & r), i.v[p](e * n + i.o, r, Et); | |
| }, | |
| A = function A(t, n) { | |
| W(t, n, { get: function get() { | |
| return E(this, n); | |
| }, set: function set(t) { | |
| return j(this, n, t); | |
| }, enumerable: !0 }); | |
| };_ ? (v = e(function (t, e, r, i) { | |
| f(t, v, s, "_d");var o, | |
| u, | |
| a, | |
| c, | |
| l = 0, | |
| p = 0;if (b(e)) { | |
| if (!(e instanceof Q || (c = w(e)) == H || c == J)) return St in e ? Lt(v, e) : Nt.call(v, e);o = e, p = At(r, n);var g = e.byteLength;if (void 0 === i) { | |
| if (g % n) throw B(Pt);if ((u = g - p) < 0) throw B(Pt); | |
| } else if ((u = d(i) * n) + p > g) throw B(Pt);a = u / n; | |
| } else a = y(e), u = a * n, o = new Q(u);for (h(t, "_d", { b: o, o: p, l: u, e: a, v: new X(o) }); l < a;) { | |
| A(t, l++); | |
| } | |
| }), S = v[Y] = O(Ht), h(S, "constructor", v)) : o(function () { | |
| v(1); | |
| }) && o(function () { | |
| new v(-1); | |
| }) && N(function (t) { | |
| new v(), new v(null), new v(1.5), new v(t); | |
| }, !0) || (v = e(function (t, e, r, i) { | |
| f(t, v, s);var o;return b(e) ? e instanceof Q || (o = w(e)) == H || o == J ? void 0 !== i ? new g(e, At(r, n), i) : void 0 !== r ? new g(e, At(r, n)) : new g(e) : St in e ? Lt(v, e) : Nt.call(v, e) : new g(y(e)); | |
| }), Z(m !== Function.prototype ? k(g).concat(k(m)) : k(g), function (t) { | |
| t in v || h(v, t, g[t]); | |
| }), v[Y] = S, r || (S.constructor = v));var M = S[mt], | |
| T = !!M && ("values" == M.name || void 0 == M.name), | |
| F = Vt.values;h(v, wt, !0), h(S, St, s), h(S, Ot, !0), h(S, bt, v), (c ? new v(1)[_t] == s : _t in S) || W(S, _t, { get: function get() { | |
| return s; | |
| } }), x[s] = v, u(u.G + u.W + u.F * (v != g), x), u(u.S, s, { BYTES_PER_ELEMENT: n }), u(u.S + u.F * o(function () { | |
| g.of.call(v, 1); | |
| }), s, { from: Nt, of: Dt }), K in S || h(S, K, n), u(u.P, s, Ut), D(s), u(u.P + u.F * jt, s, { set: Wt }), u(u.P + u.F * !T, s, Vt), r || S.toString == yt || (S.toString = yt), u(u.P + u.F * o(function () { | |
| new v(1).slice(); | |
| }), s, { slice: Gt }), u(u.P + u.F * (o(function () { | |
| return [1, 2].toLocaleString() != new v([1, 2]).toLocaleString(); | |
| }) || !o(function () { | |
| S.toLocaleString.call([1, 2]); | |
| })), s, { toLocaleString: Ct }), I[s] = T ? M : F, r || T || h(S, mt, F); | |
| }; | |
| } else t.exports = function () {}; | |
| }, function (t, n, e) { | |
| var r = e(175), | |
| i = e(0), | |
| o = e(75)("metadata"), | |
| u = o.store || (o.store = new (e(178))()), | |
| a = function a(t, n, e) { | |
| var i = u.get(t);if (!i) { | |
| if (!e) return;u.set(t, i = new r()); | |
| }var o = i.get(n);if (!o) { | |
| if (!e) return;i.set(n, o = new r()); | |
| }return o; | |
| }, | |
| c = function c(t, n, e) { | |
| var r = a(n, e, !1);return void 0 !== r && r.has(t); | |
| }, | |
| s = function s(t, n, e) { | |
| var r = a(n, e, !1);return void 0 === r ? void 0 : r.get(t); | |
| }, | |
| f = function f(t, n, e, r) { | |
| a(e, r, !0).set(t, n); | |
| }, | |
| l = function l(t, n) { | |
| var e = a(t, n, !1), | |
| r = [];return e && e.forEach(function (t, n) { | |
| r.push(n); | |
| }), r; | |
| }, | |
| h = function h(t) { | |
| return void 0 === t || "symbol" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)) ? t : String(t); | |
| }, | |
| p = function p(t) { | |
| i(i.S, "Reflect", t); | |
| };t.exports = { store: u, map: a, has: c, get: s, set: f, keys: l, key: h, exp: p }; | |
| }, function (t, n, e) { | |
| var r = e(66);t.exports = function (t, n, e) { | |
| if (r(t), void 0 === n) return t;switch (e) {case 1: | |
| return function (e) { | |
| return t.call(n, e); | |
| };case 2: | |
| return function (e, r) { | |
| return t.call(n, e, r); | |
| };case 3: | |
| return function (e, r, i) { | |
| return t.call(n, e, r, i); | |
| };}return function () { | |
| return t.apply(n, arguments); | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(42)("meta"), | |
| i = e(4), | |
| o = e(15), | |
| u = e(8).f, | |
| a = 0, | |
| c = Object.isExtensible || function () { | |
| return !0; | |
| }, | |
| s = !e(3)(function () { | |
| return c(Object.preventExtensions({})); | |
| }), | |
| f = function f(t) { | |
| u(t, r, { value: { i: "O" + ++a, w: {} } }); | |
| }, | |
| l = function l(t, n) { | |
| if (!i(t)) return "symbol" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)) ? t : ("string" == typeof t ? "S" : "P") + t;if (!o(t, r)) { | |
| if (!c(t)) return "F";if (!n) return "E";f(t); | |
| }return t[r].i; | |
| }, | |
| h = function h(t, n) { | |
| if (!o(t, r)) { | |
| if (!c(t)) return !0;if (!n) return !1;f(t); | |
| }return t[r].w; | |
| }, | |
| p = function p(t) { | |
| return s && v.NEED && c(t) && !o(t, r) && f(t), t; | |
| }, | |
| v = t.exports = { KEY: r, NEED: !1, fastKey: l, getWeak: h, onFreeze: p }; | |
| }, function (t, n, e) { | |
| var r = e(5)("unscopables"), | |
| i = Array.prototype;void 0 == i[r] && e(16)(i, r, {}), t.exports = function (t) { | |
| i[r][t] = !0; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(25), | |
| i = e(67);t.exports = e(33) ? function (t, n, e) { | |
| return r.f(t, n, i(1, e)); | |
| } : function (t, n, e) { | |
| return t[n] = e, t; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t, n) { | |
| return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: n }; | |
| }; | |
| }, function (t, n) { | |
| var e = 0, | |
| r = Math.random();t.exports = function (t) { | |
| return "Symbol(".concat(void 0 === t ? "" : t, ")_", (++e + r).toString(36)); | |
| }; | |
| }, function (t, n) { | |
| t.exports = !1; | |
| }, function (t, n, e) { | |
| var r = e(156), | |
| i = e(104);t.exports = Object.keys || function (t) { | |
| return r(t, i); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(29), | |
| i = Math.max, | |
| o = Math.min;t.exports = function (t, n) { | |
| return t = r(t), t < 0 ? i(t + n, 0) : o(t, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(1), | |
| i = e(157), | |
| o = e(104), | |
| u = e(103)("IE_PROTO"), | |
| a = function a() {}, | |
| c = "prototype", | |
| _s = function s() { | |
| var t, | |
| n = e(101)("iframe"), | |
| r = o.length, | |
| i = "<", | |
| u = ">";for (n.style.display = "none", e(105).appendChild(n), n.src = "javascript:", t = n.contentWindow.document, t.open(), t.write(i + "script" + u + "document.F=Object" + i + "/script" + u), t.close(), _s = t.F; r--;) { | |
| delete _s[c][o[r]]; | |
| }return _s(); | |
| };t.exports = Object.create || function (t, n) { | |
| var e;return null !== t ? (a[c] = r(t), e = new a(), a[c] = null, e[u] = t) : e = _s(), void 0 === n ? e : i(e, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(156), | |
| i = e(104).concat("length", "prototype");n.f = Object.getOwnPropertyNames || function (t) { | |
| return r(t, i); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(2), | |
| i = e(8), | |
| o = e(7), | |
| u = e(5)("species");t.exports = function (t) { | |
| var n = r[t];o && n && !n[u] && i.f(n, u, { configurable: !0, get: function get() { | |
| return this; | |
| } }); | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t, n, e, r) { | |
| if (!(t instanceof n) || void 0 !== r && r in t) throw TypeError(e + ": incorrect invocation!");return t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(22), | |
| i = e(168), | |
| o = e(117), | |
| u = e(1), | |
| a = e(9), | |
| c = e(119), | |
| s = {}, | |
| f = {}, | |
| n = t.exports = function (t, n, e, l, h) { | |
| var p, | |
| v, | |
| d, | |
| y, | |
| g = h ? function () { | |
| return t; | |
| } : c(t), | |
| m = r(e, l, n ? 2 : 1), | |
| _ = 0;if ("function" != typeof g) throw TypeError(t + " is not iterable!");if (o(g)) { | |
| for (p = a(t.length); p > _; _++) { | |
| if ((y = n ? m(u(v = t[_])[0], v[1]) : m(t[_])) === s || y === f) return y; | |
| } | |
| } else for (d = g.call(t); !(v = d.next()).done;) { | |
| if ((y = i(d, m, v.value, n)) === s || y === f) return y; | |
| } | |
| };n.BREAK = s, n.RETURN = f; | |
| }, function (t, n, e) { | |
| var r = e(17);t.exports = function (t, n, e) { | |
| for (var i in n) { | |
| r(t, i, n[i], e); | |
| }return t; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| try { | |
| return !!t(); | |
| } catch (t) { | |
| return !0; | |
| } | |
| }; | |
| }, function (t, n) { | |
| var e = {}.hasOwnProperty;t.exports = function (t, n) { | |
| return e.call(t, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(133), | |
| i = e(129);t.exports = function (t) { | |
| return r(i(t)); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(8).f, | |
| i = e(15), | |
| o = e(5)("toStringTag");t.exports = function (t, n, e) { | |
| t && !i(t = e ? t : t.prototype, o) && r(t, o, { configurable: !0, value: n }); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(28), | |
| o = e(3), | |
| u = e(107), | |
| a = "[" + u + "]", | |
| c = " ", | |
| s = RegExp("^" + a + a + "*"), | |
| f = RegExp(a + a + "*$"), | |
| l = function l(t, n, e) { | |
| var i = {}, | |
| a = o(function () { | |
| return !!u[t]() || c[t]() != c; | |
| }), | |
| s = i[t] = a ? n(h) : u[t];e && (i[e] = s), r(r.P + r.F * a, "String", i); | |
| }, | |
| h = l.trim = function (t, n) { | |
| return t = String(i(t)), 1 & n && (t = t.replace(s, "")), 2 & n && (t = t.replace(f, "")), t; | |
| };t.exports = l; | |
| }, function (t, n) { | |
| t.exports = {}; | |
| }, function (t, n, e) { | |
| var r = e(4);t.exports = function (t, n) { | |
| if (!r(t) || t._t !== n) throw TypeError("Incompatible receiver, " + n + " required!");return t; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(415)(!0);e(130)(String, "String", function (t) { | |
| this._t = String(t), this._i = 0; | |
| }, function () { | |
| var t, | |
| n = this._t, | |
| e = this._i;return e >= n.length ? { value: void 0, done: !0 } : (t = r(n, e), this._i += t.length, { value: t, done: !1 }); | |
| }); | |
| }, function (t, n) { | |
| t.exports = {}; | |
| }, function (t, n, e) { | |
| var r = e(129);t.exports = function (t) { | |
| return Object(r(t)); | |
| }; | |
| }, function (t, n, e) { | |
| function r(t) { | |
| return (r = "function" == typeof u && "symbol" == (typeof o === "undefined" ? "undefined" : (0, _typeof3.default)(o)) ? function (t) { | |
| return typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t); | |
| } : function (t) { | |
| return t && "function" == typeof u && t.constructor === u && t !== u.prototype ? "symbol" : typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t); | |
| })(t); | |
| }function i(n) { | |
| return "function" == typeof u && "symbol" === r(o) ? t.exports = i = function i(t) { | |
| return r(t); | |
| } : t.exports = i = function i(t) { | |
| return t && "function" == typeof u && t.constructor === u && t !== u.prototype ? "symbol" : r(t); | |
| }, i(n); | |
| }var o = e(444), | |
| u = e(446);t.exports = i; | |
| }, function (t, n, e) { | |
| var r = e(23);t.exports = Object("z").propertyIsEnumerable(0) ? Object : function (t) { | |
| return "String" == r(t) ? t.split("") : Object(t); | |
| }; | |
| }, function (t, n) { | |
| n.f = {}.propertyIsEnumerable; | |
| }, function (t, n, e) { | |
| var r = e(23), | |
| i = e(5)("toStringTag"), | |
| o = "Arguments" == r(function () { | |
| return arguments; | |
| }()), | |
| u = function u(t, n) { | |
| try { | |
| return t[n]; | |
| } catch (t) {} | |
| };t.exports = function (t) { | |
| var n, e, a;return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (e = u(n = Object(t), i)) ? e : o ? r(n) : "Object" == (a = r(n)) && "function" == typeof n.callee ? "Arguments" : a; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| if ("function" != typeof t) throw TypeError(t + " is not a function!");return t; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t, n) { | |
| return { enumerable: !(1 & t), configurable: !(2 & t), writable: !(4 & t), value: n }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(191), | |
| i = e(136);t.exports = Object.keys || function (t) { | |
| return r(t, i); | |
| }; | |
| }, function (t, n) { | |
| var e = {}.toString;t.exports = function (t) { | |
| return e.call(t).slice(8, -1); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(25).f, | |
| i = e(53), | |
| o = e(13)("toStringTag");t.exports = function (t, n, e) { | |
| t && !i(t = e ? t : t.prototype, o) && r(t, o, { configurable: !0, value: n }); | |
| }; | |
| }, function (t, n, e) { | |
| e(424);for (var r = e(14), i = e(40), o = e(60), u = e(13)("toStringTag"), a = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), c = 0; c < a.length; c++) { | |
| var s = a[c], | |
| f = r[s], | |
| l = f && f.prototype;l && !l[u] && i(l, u, s), o[s] = o.Array; | |
| } | |
| }, function (t, n, e) { | |
| var r = e(37), | |
| i = e(194), | |
| o = e(195), | |
| u = e(32), | |
| a = e(92), | |
| c = e(137), | |
| s = {}, | |
| f = {}, | |
| n = t.exports = function (t, n, e, l, h) { | |
| var p, | |
| v, | |
| d, | |
| y, | |
| g = h ? function () { | |
| return t; | |
| } : c(t), | |
| m = r(e, l, n ? 2 : 1), | |
| _ = 0;if ("function" != typeof g) throw TypeError(t + " is not iterable!");if (o(g)) { | |
| for (p = a(t.length); p > _; _++) { | |
| if ((y = n ? m(u(v = t[_])[0], v[1]) : m(t[_])) === s || y === f) return y; | |
| } | |
| } else for (d = g.call(t); !(v = d.next()).done;) { | |
| if ((y = i(d, m, v.value, n)) === s || y === f) return y; | |
| } | |
| };n.BREAK = s, n.RETURN = f; | |
| }, function (t, n, e) { | |
| t.exports = e(438); | |
| }, function (t, n, e) { | |
| t.exports = e(153); | |
| }, function (t, n, e) { | |
| var r = e(2), | |
| i = "__core-js_shared__", | |
| o = r[i] || (r[i] = {});t.exports = function (t) { | |
| return o[t] || (o[t] = {}); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(19), | |
| i = e(9), | |
| o = e(45);t.exports = function (t) { | |
| return function (n, e, u) { | |
| var a, | |
| c = r(n), | |
| s = i(c.length), | |
| f = o(u, s);if (t && e != e) { | |
| for (; s > f;) { | |
| if ((a = c[f++]) != a) return !0; | |
| } | |
| } else for (; s > f; f++) { | |
| if ((t || f in c) && c[f] === e) return t || f || 0; | |
| }return !t && -1; | |
| }; | |
| }; | |
| }, function (t, n) { | |
| n.f = Object.getOwnPropertySymbols; | |
| }, function (t, n, e) { | |
| var r = e(23);t.exports = Array.isArray || function (t) { | |
| return "Array" == r(t); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(23), | |
| o = e(5)("match");t.exports = function (t) { | |
| var n;return r(t) && (void 0 !== (n = t[o]) ? !!n : "RegExp" == i(t)); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(5)("iterator"), | |
| i = !1;try { | |
| var o = [7][r]();o.return = function () { | |
| i = !0; | |
| }, Array.from(o, function () { | |
| throw 2; | |
| }); | |
| } catch (t) {}t.exports = function (t, n) { | |
| if (!n && !i) return !1;var e = !1;try { | |
| var o = [7], | |
| u = o[r]();u.next = function () { | |
| return { done: e = !0 }; | |
| }, o[r] = function () { | |
| return u; | |
| }, t(o); | |
| } catch (t) {}return e; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(1);t.exports = function () { | |
| var t = r(this), | |
| n = "";return t.global && (n += "g"), t.ignoreCase && (n += "i"), t.multiline && (n += "m"), t.unicode && (n += "u"), t.sticky && (n += "y"), n; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(16), | |
| i = e(17), | |
| o = e(3), | |
| u = e(28), | |
| a = e(5);t.exports = function (t, n, e) { | |
| var c = a(t), | |
| s = e(u, c, ""[t]), | |
| f = s[0], | |
| l = s[1];o(function () { | |
| var n = {};return n[c] = function () { | |
| return 7; | |
| }, 7 != ""[t](n); | |
| }) && (i(String.prototype, t, f), r(RegExp.prototype, c, 2 == n ? function (t, n) { | |
| return l.call(t, this, n); | |
| } : function (t) { | |
| return l.call(t, this); | |
| })); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(1), | |
| i = e(11), | |
| o = e(5)("species");t.exports = function (t, n) { | |
| var e, | |
| u = r(t).constructor;return void 0 === u || void 0 == (e = r(u)[o]) ? n : i(e); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(2), | |
| i = e(0), | |
| o = e(17), | |
| u = e(51), | |
| a = e(38), | |
| c = e(50), | |
| s = e(49), | |
| f = e(4), | |
| l = e(3), | |
| h = e(80), | |
| p = e(55), | |
| v = e(108);t.exports = function (t, n, e, d, y, g) { | |
| var m = r[t], | |
| _ = m, | |
| w = y ? "set" : "add", | |
| b = _ && _.prototype, | |
| x = {}, | |
| S = function S(t) { | |
| var n = b[t];o(b, t, "delete" == t ? function (t) { | |
| return !(g && !f(t)) && n.call(this, 0 === t ? 0 : t); | |
| } : "has" == t ? function (t) { | |
| return !(g && !f(t)) && n.call(this, 0 === t ? 0 : t); | |
| } : "get" == t ? function (t) { | |
| return g && !f(t) ? void 0 : n.call(this, 0 === t ? 0 : t); | |
| } : "add" == t ? function (t) { | |
| return n.call(this, 0 === t ? 0 : t), this; | |
| } : function (t, e) { | |
| return n.call(this, 0 === t ? 0 : t, e), this; | |
| }); | |
| };if ("function" == typeof _ && (g || b.forEach && !l(function () { | |
| new _().entries().next(); | |
| }))) { | |
| var O = new _(), | |
| P = O[w](g ? {} : -0, 1) != O, | |
| k = l(function () { | |
| O.has(1); | |
| }), | |
| E = h(function (t) { | |
| new _(t); | |
| }), | |
| j = !g && l(function () { | |
| for (var t = new _(), n = 5; n--;) { | |
| t[w](n, n); | |
| }return !t.has(-0); | |
| });E || (_ = n(function (n, e) { | |
| s(n, _, t);var r = v(new m(), n, _);return void 0 != e && c(e, y, r[w], r), r; | |
| }), _.prototype = b, b.constructor = _), (k || j) && (S("delete"), S("has"), y && S("get")), (j || P) && S(w), g && b.clear && delete b.clear; | |
| } else _ = d.getConstructor(n, t, y, w), u(_.prototype, e), a.NEED = !0;return p(_, t), x[t] = _, i(i.G + i.W + i.F * (_ != m), x), g || d.setStrong(_, t, y), _; | |
| }; | |
| }, function (t, n, e) { | |
| for (var r, i = e(2), o = e(16), u = e(42), a = u("typed_array"), c = u("view"), s = !(!i.ArrayBuffer || !i.DataView), f = s, l = 0, h = 9, p = "Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(","); l < h;) { | |
| (r = i[p[l++]]) ? (o(r.prototype, a, !0), o(r.prototype, c, !0)) : f = !1; | |
| }t.exports = { ABV: s, CONSTR: f, TYPED: a, VIEW: c }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| t.exports = e(43) || !e(3)(function () { | |
| var t = Math.random();__defineSetter__.call(null, t, function () {}), delete e(2)[t]; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0);t.exports = function (t) { | |
| r(r.S, t, { of: function of() { | |
| for (var t = arguments.length, n = new Array(t); t--;) { | |
| n[t] = arguments[t]; | |
| }return new this(n); | |
| } }); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(11), | |
| o = e(22), | |
| u = e(50);t.exports = function (t) { | |
| r(r.S, t, { from: function from(t) { | |
| var n, | |
| e, | |
| r, | |
| a, | |
| c = arguments[1];return i(this), n = void 0 !== c, n && i(c), void 0 == t ? new this() : (e = [], n ? (r = 0, a = o(c, arguments[2], 2), u(t, !1, function (t) { | |
| e.push(a(t, r++)); | |
| })) : u(t, !1, e.push, e), new this(e)); | |
| } }); | |
| }; | |
| }, function (t, n) { | |
| function e() { | |
| this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0; | |
| }function r(t) { | |
| return "function" == typeof t; | |
| }function i(t) { | |
| return "number" == typeof t; | |
| }function o(t) { | |
| return "object" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)) && null !== t; | |
| }function u(t) { | |
| return void 0 === t; | |
| }t.exports = e, e.EventEmitter = e, e.prototype._events = void 0, e.prototype._maxListeners = void 0, e.defaultMaxListeners = 10, e.prototype.setMaxListeners = function (t) { | |
| if (!i(t) || t < 0 || isNaN(t)) throw TypeError("n must be a positive number");return this._maxListeners = t, this; | |
| }, e.prototype.emit = function (t) { | |
| var n, e, i, a, c, s;if (this._events || (this._events = {}), "error" === t && (!this._events.error || o(this._events.error) && !this._events.error.length)) { | |
| if ((n = arguments[1]) instanceof Error) throw n;var f = new Error('Uncaught, unspecified "error" event. (' + n + ")");throw f.context = n, f; | |
| }if (e = this._events[t], u(e)) return !1;if (r(e)) switch (arguments.length) {case 1: | |
| e.call(this);break;case 2: | |
| e.call(this, arguments[1]);break;case 3: | |
| e.call(this, arguments[1], arguments[2]);break;default: | |
| a = Array.prototype.slice.call(arguments, 1), e.apply(this, a);} else if (o(e)) for (a = Array.prototype.slice.call(arguments, 1), s = e.slice(), i = s.length, c = 0; c < i; c++) { | |
| s[c].apply(this, a); | |
| }return !0; | |
| }, e.prototype.addListener = function (t, n) { | |
| var i;if (!r(n)) throw TypeError("listener must be a function");return this._events || (this._events = {}), this._events.newListener && this.emit("newListener", t, r(n.listener) ? n.listener : n), this._events[t] ? o(this._events[t]) ? this._events[t].push(n) : this._events[t] = [this._events[t], n] : this._events[t] = n, o(this._events[t]) && !this._events[t].warned && (i = u(this._maxListeners) ? e.defaultMaxListeners : this._maxListeners) && i > 0 && this._events[t].length > i && (this._events[t].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[t].length), "function" == typeof console.trace && console.trace()), this; | |
| }, e.prototype.on = e.prototype.addListener, e.prototype.once = function (t, n) { | |
| function e() { | |
| this.removeListener(t, e), i || (i = !0, n.apply(this, arguments)); | |
| }if (!r(n)) throw TypeError("listener must be a function");var i = !1;return e.listener = n, this.on(t, e), this; | |
| }, e.prototype.removeListener = function (t, n) { | |
| var e, i, u, a;if (!r(n)) throw TypeError("listener must be a function");if (!this._events || !this._events[t]) return this;if (e = this._events[t], u = e.length, i = -1, e === n || r(e.listener) && e.listener === n) delete this._events[t], this._events.removeListener && this.emit("removeListener", t, n);else if (o(e)) { | |
| for (a = u; a-- > 0;) { | |
| if (e[a] === n || e[a].listener && e[a].listener === n) { | |
| i = a;break; | |
| } | |
| }if (i < 0) return this;1 === e.length ? (e.length = 0, delete this._events[t]) : e.splice(i, 1), this._events.removeListener && this.emit("removeListener", t, n); | |
| }return this; | |
| }, e.prototype.removeAllListeners = function (t) { | |
| var n, e;if (!this._events) return this;if (!this._events.removeListener) return 0 === arguments.length ? this._events = {} : this._events[t] && delete this._events[t], this;if (0 === arguments.length) { | |
| for (n in this._events) { | |
| "removeListener" !== n && this.removeAllListeners(n); | |
| }return this.removeAllListeners("removeListener"), this._events = {}, this; | |
| }if (e = this._events[t], r(e)) this.removeListener(t, e);else if (e) for (; e.length;) { | |
| this.removeListener(t, e[e.length - 1]); | |
| }return delete this._events[t], this; | |
| }, e.prototype.listeners = function (t) { | |
| return this._events && this._events[t] ? r(this._events[t]) ? [this._events[t]] : this._events[t].slice() : []; | |
| }, e.prototype.listenerCount = function (t) { | |
| if (this._events) { | |
| var n = this._events[t];if (r(n)) return 1;if (n) return n.length; | |
| }return 0; | |
| }, e.listenerCount = function (t, n) { | |
| return t.listenerCount(n); | |
| }; | |
| }, function (t, n) { | |
| t.exports = !0; | |
| }, function (t, n, e) { | |
| var r = e(32), | |
| i = e(417), | |
| o = e(136), | |
| u = e(134)("IE_PROTO"), | |
| a = function a() {}, | |
| c = "prototype", | |
| _s2 = function s() { | |
| var t, | |
| n = e(131)("iframe"), | |
| r = o.length, | |
| i = "<", | |
| u = ">";for (n.style.display = "none", e(192).appendChild(n), n.src = "javascript:", t = n.contentWindow.document, t.open(), t.write(i + "script" + u + "document.F=Object" + i + "/script" + u), t.close(), _s2 = t.F; r--;) { | |
| delete _s2[c][o[r]]; | |
| }return _s2(); | |
| };t.exports = Object.create || function (t, n) { | |
| var e;return null !== t ? (a[c] = r(t), e = new a(), a[c] = null, e[u] = t) : e = _s2(), void 0 === n ? e : i(e, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(128), | |
| i = Math.min;t.exports = function (t) { | |
| return t > 0 ? i(r(t), 9007199254740991) : 0; | |
| }; | |
| }, function (t, n) { | |
| var e = 0, | |
| r = Math.random();t.exports = function (t) { | |
| return "Symbol(".concat(void 0 === t ? "" : t, ")_", (++e + r).toString(36)); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(69), | |
| i = e(13)("toStringTag"), | |
| o = "Arguments" == r(function () { | |
| return arguments; | |
| }()), | |
| u = function u(t, n) { | |
| try { | |
| return t[n]; | |
| } catch (t) {} | |
| };t.exports = function (t) { | |
| var n, e, a;return void 0 === t ? "Undefined" : null === t ? "Null" : "string" == typeof (e = u(n = Object(t), i)) ? e : o ? r(n) : "Object" == (a = r(n)) && "function" == typeof n.callee ? "Arguments" : a; | |
| }; | |
| }, function (t, n, e) { | |
| t.exports = e(427); | |
| }, function (t, n, e) { | |
| t.exports = e(429); | |
| }, function (t, n) { | |
| n.f = {}.propertyIsEnumerable; | |
| }, function (t, n, e) { | |
| t.exports = e(432); | |
| }, function (t, n, e) { | |
| var r = e(12), | |
| i = e(6), | |
| o = e(52);t.exports = function (t, n) { | |
| var e = (i.Object || {})[t] || Object[t], | |
| u = {};u[t] = n(e), r(r.S + r.F * o(function () { | |
| e(1); | |
| }), "Object", u); | |
| }; | |
| }, function (t, n, e) { | |
| t.exports = e(440); | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(2).document, | |
| o = r(i) && r(i.createElement);t.exports = function (t) { | |
| return o ? i.createElement(t) : {}; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(2), | |
| i = e(34), | |
| o = e(43), | |
| u = e(155), | |
| a = e(8).f;t.exports = function (t) { | |
| var n = i.Symbol || (i.Symbol = o ? {} : r.Symbol || {});"_" == t.charAt(0) || t in n || a(n, t, { value: u.f(t) }); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(75)("keys"), | |
| i = e(42);t.exports = function (t) { | |
| return r[t] || (r[t] = i(t)); | |
| }; | |
| }, function (t, n) { | |
| t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","); | |
| }, function (t, n, e) { | |
| var r = e(2).document;t.exports = r && r.documentElement; | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(1), | |
| o = function o(t, n) { | |
| if (i(t), !r(n) && null !== n) throw TypeError(n + ": can't set as prototype!"); | |
| };t.exports = { set: Object.setPrototypeOf || ("__proto__" in {} ? function (t, n, r) { | |
| try { | |
| r = e(22)(Function.call, e(20).f(Object.prototype, "__proto__").set, 2), r(t, []), n = !(t instanceof Array); | |
| } catch (t) { | |
| n = !0; | |
| }return function (t, e) { | |
| return o(t, e), n ? t.__proto__ = e : r(t, e), t; | |
| }; | |
| }({}, !1) : void 0), check: o }; | |
| }, function (t, n) { | |
| t.exports = "\t\n\x0B\f\r \xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF"; | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(106).set;t.exports = function (t, n, e) { | |
| var o, | |
| u = n.constructor;return u !== e && "function" == typeof u && (o = u.prototype) !== e.prototype && r(o) && i && i(t, o), t; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(29), | |
| i = e(28);t.exports = function (t) { | |
| var n = String(i(this)), | |
| e = "", | |
| o = r(t);if (o < 0 || o == 1 / 0) throw RangeError("Count can't be negative");for (; o > 0; (o >>>= 1) && (n += n)) { | |
| 1 & o && (e += n); | |
| }return e; | |
| }; | |
| }, function (t, n) { | |
| t.exports = Math.sign || function (t) { | |
| return 0 == (t = +t) || t != t ? t : t < 0 ? -1 : 1; | |
| }; | |
| }, function (t, n) { | |
| var e = Math.expm1;t.exports = !e || e(10) > 22025.465794806718 || e(10) < 22025.465794806718 || -2e-17 != e(-2e-17) ? function (t) { | |
| return 0 == (t = +t) ? t : t > -1e-6 && t < 1e-6 ? t + t * t / 2 : Math.exp(t) - 1; | |
| } : e; | |
| }, function (t, n, e) { | |
| var r = e(29), | |
| i = e(28);t.exports = function (t) { | |
| return function (n, e) { | |
| var o, | |
| u, | |
| a = String(i(n)), | |
| c = r(e), | |
| s = a.length;return c < 0 || c >= s ? t ? "" : void 0 : (o = a.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === s || (u = a.charCodeAt(c + 1)) < 56320 || u > 57343 ? t ? a.charAt(c) : o : t ? a.slice(c, c + 2) : u - 56320 + (o - 55296 << 10) + 65536); | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(43), | |
| i = e(0), | |
| o = e(17), | |
| u = e(16), | |
| a = e(15), | |
| c = e(57), | |
| s = e(114), | |
| f = e(55), | |
| l = e(21), | |
| h = e(5)("iterator"), | |
| p = !([].keys && "next" in [].keys()), | |
| v = "keys", | |
| d = "values", | |
| y = function y() { | |
| return this; | |
| };t.exports = function (t, n, e, g, m, _, w) { | |
| s(e, n, g);var b, | |
| x, | |
| S, | |
| O = function O(t) { | |
| if (!p && t in j) return j[t];switch (t) {case v:case d: | |
| return function () { | |
| return new e(this, t); | |
| };}return function () { | |
| return new e(this, t); | |
| }; | |
| }, | |
| P = n + " Iterator", | |
| k = m == d, | |
| E = !1, | |
| j = t.prototype, | |
| A = j[h] || j["@@iterator"] || m && j[m], | |
| M = !p && A || O(m), | |
| T = m ? k ? O("entries") : M : void 0, | |
| F = "Array" == n ? j.entries || A : A;if (F && (S = l(F.call(new t()))) !== Object.prototype && S.next && (f(S, P, !0), r || a(S, h) || u(S, h, y)), k && A && A.name !== d && (E = !0, M = function M() { | |
| return A.call(this); | |
| }), r && !w || !p && !E && j[h] || u(j, h, M), c[n] = M, c[P] = y, m) if (b = { values: k ? M : O(d), keys: _ ? M : O(v), entries: T }, w) for (x in b) { | |
| x in j || o(j, x, b[x]); | |
| } else i(i.P + i.F * (p || E), n, b);return b; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(46), | |
| i = e(41), | |
| o = e(55), | |
| u = {};e(16)(u, e(5)("iterator"), function () { | |
| return this; | |
| }), t.exports = function (t, n, e) { | |
| t.prototype = r(u, { next: i(1, e) }), o(t, n + " Iterator"); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(79), | |
| i = e(28);t.exports = function (t, n, e) { | |
| if (r(n)) throw TypeError("String#" + e + " doesn't accept regex!");return String(i(t)); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(5)("match");t.exports = function (t) { | |
| var n = /./;try { | |
| "/./"[t](n); | |
| } catch (e) { | |
| try { | |
| return n[r] = !1, !"/./"[t](n); | |
| } catch (t) {} | |
| }return !0; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(57), | |
| i = e(5)("iterator"), | |
| o = Array.prototype;t.exports = function (t) { | |
| return void 0 !== t && (r.Array === t || o[i] === t); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(8), | |
| i = e(41);t.exports = function (t, n, e) { | |
| n in t ? r.f(t, n, i(0, e)) : t[n] = e; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(65), | |
| i = e(5)("iterator"), | |
| o = e(57);t.exports = e(34).getIteratorMethod = function (t) { | |
| if (void 0 != t) return t[i] || t["@@iterator"] || o[r(t)]; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(307);t.exports = function (t, n) { | |
| return new (r(t))(n); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(10), | |
| i = e(45), | |
| o = e(9);t.exports = function (t) { | |
| for (var n = r(this), e = o(n.length), u = arguments.length, a = i(u > 1 ? arguments[1] : void 0, e), c = u > 2 ? arguments[2] : void 0, s = void 0 === c ? e : i(c, e); s > a;) { | |
| n[a++] = t; | |
| }return n; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(39), | |
| i = e(171), | |
| o = e(57), | |
| u = e(19);t.exports = e(113)(Array, "Array", function (t, n) { | |
| this._t = u(t), this._i = 0, this._k = n; | |
| }, function () { | |
| var t = this._t, | |
| n = this._k, | |
| e = this._i++;return !t || e >= t.length ? (this._t = void 0, i(1)) : "keys" == n ? i(0, e) : "values" == n ? i(0, t[e]) : i(0, [e, t[e]]); | |
| }, "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries"); | |
| }, function (t, n, e) { | |
| var r, | |
| i, | |
| o, | |
| u = e(22), | |
| a = e(161), | |
| c = e(105), | |
| s = e(101), | |
| f = e(2), | |
| l = f.process, | |
| h = f.setImmediate, | |
| p = f.clearImmediate, | |
| v = f.MessageChannel, | |
| d = f.Dispatch, | |
| y = 0, | |
| g = {}, | |
| m = "onreadystatechange", | |
| _ = function _() { | |
| var t = +this;if (g.hasOwnProperty(t)) { | |
| var n = g[t];delete g[t], n(); | |
| } | |
| }, | |
| w = function w(t) { | |
| _.call(t.data); | |
| };h && p || (h = function h(t) { | |
| for (var n = [], e = 1; arguments.length > e;) { | |
| n.push(arguments[e++]); | |
| }return g[++y] = function () { | |
| a("function" == typeof t ? t : Function(t), n); | |
| }, r(y), y; | |
| }, p = function p(t) { | |
| delete g[t]; | |
| }, "process" == e(23)(l) ? r = function r(t) { | |
| l.nextTick(u(_, t, 1)); | |
| } : d && d.now ? r = function r(t) { | |
| d.now(u(_, t, 1)); | |
| } : v ? (i = new v(), o = i.port2, i.port1.onmessage = w, r = u(o.postMessage, o, 1)) : f.addEventListener && "function" == typeof postMessage && !f.importScripts ? (r = function r(t) { | |
| f.postMessage(t + "", "*"); | |
| }, f.addEventListener("message", w, !1)) : r = m in s("script") ? function (t) { | |
| c.appendChild(s("script"))[m] = function () { | |
| c.removeChild(this), _.call(t); | |
| }; | |
| } : function (t) { | |
| setTimeout(u(_, t, 1), 0); | |
| }), t.exports = { set: h, clear: p }; | |
| }, function (t, n, e) { | |
| var r = e(2), | |
| i = e(123).set, | |
| o = r.MutationObserver || r.WebKitMutationObserver, | |
| u = r.process, | |
| a = r.Promise, | |
| c = "process" == e(23)(u);t.exports = function () { | |
| var t, | |
| n, | |
| e, | |
| s = function s() { | |
| var r, i;for (c && (r = u.domain) && r.exit(); t;) { | |
| i = t.fn, t = t.next;try { | |
| i(); | |
| } catch (r) { | |
| throw t ? e() : n = void 0, r; | |
| } | |
| }n = void 0, r && r.enter(); | |
| };if (c) e = function e() { | |
| u.nextTick(s); | |
| };else if (!o || r.navigator && r.navigator.standalone) { | |
| if (a && a.resolve) { | |
| var f = a.resolve();e = function e() { | |
| f.then(s); | |
| }; | |
| } else e = function e() { | |
| i.call(r, s); | |
| }; | |
| } else { | |
| var l = !0, | |
| h = document.createTextNode("");new o(s).observe(h, { characterData: !0 }), e = function e() { | |
| h.data = l = !l; | |
| }; | |
| }return function (r) { | |
| var i = { fn: r, next: void 0 };n && (n.next = i), t || (t = i, e()), n = i; | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| function r(t) { | |
| var n, e;this.promise = new t(function (t, r) { | |
| if (void 0 !== n || void 0 !== e) throw TypeError("Bad Promise constructor");n = t, e = r; | |
| }), this.resolve = i(n), this.reject = i(e); | |
| }var i = e(11);t.exports.f = function (t) { | |
| return new r(t); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| function r(t, n, e) { | |
| var r, | |
| i, | |
| o, | |
| u = new Array(e), | |
| a = 8 * e - n - 1, | |
| c = (1 << a) - 1, | |
| s = c >> 1, | |
| f = 23 === n ? G(2, -24) - G(2, -77) : 0, | |
| l = 0, | |
| h = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;for (t = U(t), t != t || t === R ? (i = t != t ? 1 : 0, r = c) : (r = W(V(t) / B), t * (o = G(2, -r)) < 1 && (r--, o *= 2), t += r + s >= 1 ? f / o : f * G(2, 1 - s), t * o >= 2 && (r++, o /= 2), r + s >= c ? (i = 0, r = c) : r + s >= 1 ? (i = (t * o - 1) * G(2, n), r += s) : (i = t * G(2, s - 1) * G(2, n), r = 0)); n >= 8; u[l++] = 255 & i, i /= 256, n -= 8) {}for (r = r << n | i, a += n; a > 0; u[l++] = 255 & r, r /= 256, a -= 8) {}return u[--l] |= 128 * h, u; | |
| }function i(t, n, e) { | |
| var r, | |
| i = 8 * e - n - 1, | |
| o = (1 << i) - 1, | |
| u = o >> 1, | |
| a = i - 7, | |
| c = e - 1, | |
| s = t[c--], | |
| f = 127 & s;for (s >>= 7; a > 0; f = 256 * f + t[c], c--, a -= 8) {}for (r = f & (1 << -a) - 1, f >>= -a, a += n; a > 0; r = 256 * r + t[c], c--, a -= 8) {}if (0 === f) f = 1 - u;else { | |
| if (f === o) return r ? NaN : s ? -R : R;r += G(2, n), f -= u; | |
| }return (s ? -1 : 1) * r * G(2, f - n); | |
| }function o(t) { | |
| return t[3] << 24 | t[2] << 16 | t[1] << 8 | t[0]; | |
| }function u(t) { | |
| return [255 & t]; | |
| }function a(t) { | |
| return [255 & t, t >> 8 & 255]; | |
| }function c(t) { | |
| return [255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255]; | |
| }function s(t) { | |
| return r(t, 52, 8); | |
| }function f(t) { | |
| return r(t, 23, 4); | |
| }function l(t, n, e) { | |
| k(t[T], n, { get: function get() { | |
| return this[e]; | |
| } }); | |
| }function h(t, n, e, r) { | |
| var i = +e, | |
| o = O(i);if (o + n > t[K]) throw D(F);var u = t[J]._b, | |
| a = o + t[Y], | |
| c = u.slice(a, a + n);return r ? c : c.reverse(); | |
| }function p(t, n, e, r, i, o) { | |
| var u = +e, | |
| a = O(u);if (a + n > t[K]) throw D(F);for (var c = t[J]._b, s = a + t[Y], f = r(+i), l = 0; l < n; l++) { | |
| c[s + l] = f[o ? l : n - l - 1]; | |
| } | |
| }var v = e(2), | |
| d = e(7), | |
| y = e(43), | |
| g = e(85), | |
| m = e(16), | |
| _ = e(51), | |
| w = e(3), | |
| b = e(49), | |
| x = e(29), | |
| S = e(9), | |
| O = e(180), | |
| P = e(47).f, | |
| k = e(8).f, | |
| E = e(121), | |
| j = e(55), | |
| A = "ArrayBuffer", | |
| M = "DataView", | |
| T = "prototype", | |
| F = "Wrong index!", | |
| _L2 = v[A], | |
| _I = v[M], | |
| N = v.Math, | |
| D = v.RangeError, | |
| R = v.Infinity, | |
| C = _L2, | |
| U = N.abs, | |
| G = N.pow, | |
| W = N.floor, | |
| V = N.log, | |
| B = N.LN2, | |
| q = "buffer", | |
| z = "byteLength", | |
| H = "byteOffset", | |
| J = d ? "_b" : q, | |
| K = d ? "_l" : z, | |
| Y = d ? "_o" : H;if (g.ABV) { | |
| if (!w(function () { | |
| _L2(1); | |
| }) || !w(function () { | |
| new _L2(-1); | |
| }) || w(function () { | |
| return new _L2(), new _L2(1.5), new _L2(NaN), _L2.name != A; | |
| })) { | |
| _L2 = function L(t) { | |
| return b(this, _L2), new C(O(t)); | |
| };for (var $, Q = _L2[T] = C[T], X = P(C), Z = 0; X.length > Z;) { | |
| ($ = X[Z++]) in _L2 || m(_L2, $, C[$]); | |
| }y || (Q.constructor = _L2); | |
| }var tt = new _I(new _L2(2)), | |
| nt = _I[T].setInt8;tt.setInt8(0, 2147483648), tt.setInt8(1, 2147483649), !tt.getInt8(0) && tt.getInt8(1) || _(_I[T], { setInt8: function setInt8(t, n) { | |
| nt.call(this, t, n << 24 >> 24); | |
| }, setUint8: function setUint8(t, n) { | |
| nt.call(this, t, n << 24 >> 24); | |
| } }, !0); | |
| } else _L2 = function _L(t) { | |
| b(this, _L2, A);var n = O(t);this._b = E.call(new Array(n), 0), this[K] = n; | |
| }, _I = function I(t, n, e) { | |
| b(this, _I, M), b(t, _L2, M);var r = t[K], | |
| i = x(n);if (i < 0 || i > r) throw D("Wrong offset!");if (e = void 0 === e ? r - i : S(e), i + e > r) throw D("Wrong length!");this[J] = t, this[Y] = i, this[K] = e; | |
| }, d && (l(_L2, z, "_l"), l(_I, q, "_b"), l(_I, z, "_l"), l(_I, H, "_o")), _(_I[T], { getInt8: function getInt8(t) { | |
| return h(this, 1, t)[0] << 24 >> 24; | |
| }, getUint8: function getUint8(t) { | |
| return h(this, 1, t)[0]; | |
| }, getInt16: function getInt16(t) { | |
| var n = h(this, 2, t, arguments[1]);return (n[1] << 8 | n[0]) << 16 >> 16; | |
| }, getUint16: function getUint16(t) { | |
| var n = h(this, 2, t, arguments[1]);return n[1] << 8 | n[0]; | |
| }, getInt32: function getInt32(t) { | |
| return o(h(this, 4, t, arguments[1])); | |
| }, getUint32: function getUint32(t) { | |
| return o(h(this, 4, t, arguments[1])) >>> 0; | |
| }, getFloat32: function getFloat32(t) { | |
| return i(h(this, 4, t, arguments[1]), 23, 4); | |
| }, getFloat64: function getFloat64(t) { | |
| return i(h(this, 8, t, arguments[1]), 52, 8); | |
| }, setInt8: function setInt8(t, n) { | |
| p(this, 1, t, u, n); | |
| }, setUint8: function setUint8(t, n) { | |
| p(this, 1, t, u, n); | |
| }, setInt16: function setInt16(t, n) { | |
| p(this, 2, t, a, n, arguments[2]); | |
| }, setUint16: function setUint16(t, n) { | |
| p(this, 2, t, a, n, arguments[2]); | |
| }, setInt32: function setInt32(t, n) { | |
| p(this, 4, t, c, n, arguments[2]); | |
| }, setUint32: function setUint32(t, n) { | |
| p(this, 4, t, c, n, arguments[2]); | |
| }, setFloat32: function setFloat32(t, n) { | |
| p(this, 4, t, f, n, arguments[2]); | |
| }, setFloat64: function setFloat64(t, n) { | |
| p(this, 8, t, s, n, arguments[2]); | |
| } });j(_L2, A), j(_I, M), m(_I[T], g.VIEW, !0), n[A] = _L2, n[M] = _I; | |
| }, function (t, n, e) { | |
| var r = e(2), | |
| i = r.navigator;t.exports = i && i.userAgent || ""; | |
| }, function (t, n) { | |
| var e = Math.ceil, | |
| r = Math.floor;t.exports = function (t) { | |
| return isNaN(t = +t) ? 0 : (t > 0 ? r : e)(t); | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| if (void 0 == t) throw TypeError("Can't call method on " + t);return t; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(90), | |
| i = e(12), | |
| o = e(190), | |
| u = e(40), | |
| a = e(53), | |
| c = e(60), | |
| s = e(416), | |
| f = e(70), | |
| l = e(193), | |
| h = e(13)("iterator"), | |
| p = !([].keys && "next" in [].keys()), | |
| v = "keys", | |
| d = "values", | |
| y = function y() { | |
| return this; | |
| };t.exports = function (t, n, e, g, m, _, w) { | |
| s(e, n, g);var b, | |
| x, | |
| S, | |
| O = function O(t) { | |
| if (!p && t in j) return j[t];switch (t) {case v:case d: | |
| return function () { | |
| return new e(this, t); | |
| };}return function () { | |
| return new e(this, t); | |
| }; | |
| }, | |
| P = n + " Iterator", | |
| k = m == d, | |
| E = !1, | |
| j = t.prototype, | |
| A = j[h] || j["@@iterator"] || m && j[m], | |
| M = !p && A || O(m), | |
| T = m ? k ? O("entries") : M : void 0, | |
| F = "Array" == n ? j.entries || A : A;if (F && (S = l(F.call(new t()))) !== Object.prototype && S.next && (f(S, P, !0), r || a(S, h) || u(S, h, y)), k && A && A.name !== d && (E = !0, M = function M() { | |
| return A.call(this); | |
| }), r && !w || !p && !E && j[h] || u(j, h, M), c[n] = M, c[P] = y, m) if (b = { values: k ? M : O(d), keys: _ ? M : O(v), entries: T }, w) for (x in b) { | |
| x in j || o(j, x, b[x]); | |
| } else i(i.P + i.F * (p || E), n, b);return b; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(26), | |
| i = e(14).document, | |
| o = r(i) && r(i.createElement);t.exports = function (t) { | |
| return o ? i.createElement(t) : {}; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(26);t.exports = function (t, n) { | |
| if (!r(t)) return t;var e, i;if (n && "function" == typeof (e = t.toString) && !r(i = e.call(t))) return i;if ("function" == typeof (e = t.valueOf) && !r(i = e.call(t))) return i;if (!n && "function" == typeof (e = t.toString) && !r(i = e.call(t))) return i;throw TypeError("Can't convert object to primitive value"); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(69);t.exports = Object("z").propertyIsEnumerable(0) ? Object : function (t) { | |
| return "String" == r(t) ? t.split("") : Object(t); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(135)("keys"), | |
| i = e(93);t.exports = function (t) { | |
| return r[t] || (r[t] = i(t)); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(14), | |
| i = "__core-js_shared__", | |
| o = r[i] || (r[i] = {});t.exports = function (t) { | |
| return o[t] || (o[t] = {}); | |
| }; | |
| }, function (t, n) { | |
| t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","); | |
| }, function (t, n, e) { | |
| var r = e(94), | |
| i = e(13)("iterator"), | |
| o = e(60);t.exports = e(6).getIteratorMethod = function (t) { | |
| if (void 0 != t) return t[i] || t["@@iterator"] || o[r(t)]; | |
| }; | |
| }, function (t, n, e) { | |
| function r(t, n) { | |
| var e = [], | |
| r = !0, | |
| i = !1, | |
| o = void 0;try { | |
| for (var a, c = u(t); !(r = (a = c.next()).done) && (e.push(a.value), !n || e.length !== n); r = !0) {} | |
| } catch (t) { | |
| i = !0, o = t; | |
| } finally { | |
| try { | |
| r || null == c.return || c.return(); | |
| } finally { | |
| if (i) throw o; | |
| } | |
| }return e; | |
| }function i(t, n) { | |
| if (Array.isArray(t)) return t;if (o(Object(t))) return r(t, n);throw new TypeError("Invalid attempt to destructure non-iterable instance"); | |
| }var o = e(422), | |
| u = e(95);t.exports = i; | |
| }, function (t, n) { | |
| n.f = Object.getOwnPropertySymbols; | |
| }, function (t, n, e) { | |
| function r(t) { | |
| return function () { | |
| var n = this, | |
| e = arguments;return new i(function (r, o) { | |
| function u(t, n) { | |
| try { | |
| var e = s[t](n), | |
| u = e.value; | |
| } catch (t) { | |
| return void o(t); | |
| }e.done ? r(u) : i.resolve(u).then(a, c); | |
| }function a(t) { | |
| u("next", t); | |
| }function c(t) { | |
| u("throw", t); | |
| }var s = t.apply(n, e);a(); | |
| }); | |
| }; | |
| }var i = e(98);t.exports = r; | |
| }, function (t, n) {}, function (t, n) { | |
| t.exports = function (t, n, e, r) { | |
| if (!(t instanceof n) || void 0 !== r && r in t) throw TypeError(e + ": incorrect invocation!");return t; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| function r(t) { | |
| var n, e;this.promise = new t(function (t, r) { | |
| if (void 0 !== n || void 0 !== e) throw TypeError("Bad Promise constructor");n = t, e = r; | |
| }), this.resolve = i(n), this.reject = i(e); | |
| }var i = e(66);t.exports.f = function (t) { | |
| return new r(t); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(40);t.exports = function (t, n, e) { | |
| for (var i in n) { | |
| e && t[i] ? t[i] = n[i] : r(t, i, n[i]); | |
| }return t; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| function r(t) { | |
| return function () { | |
| var n = t.apply(this, arguments);return new o.a(function (t, e) { | |
| function r(i, u) { | |
| try { | |
| var a = n[i](u), | |
| c = a.value; | |
| } catch (t) { | |
| return void e(t); | |
| }if (!a.done) return o.a.resolve(c).then(function (t) { | |
| r("next", t); | |
| }, function (t) { | |
| r("throw", t); | |
| });t(c); | |
| }return r("next"); | |
| }); | |
| }; | |
| }Object.defineProperty(n, "__esModule", { value: !0 }), e.d(n, "throttle", function () { | |
| return c; | |
| }), e.d(n, "getDataByPath", function () { | |
| return s; | |
| }), e.d(n, "mixin", function () { | |
| return f; | |
| }), n._asyncToGenerator = r;var i = e(98), | |
| o = e.n(i), | |
| u = e(96), | |
| a = e.n(u), | |
| c = function c(t, n) { | |
| var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, | |
| r = function r() { | |
| for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) { | |
| i[o] = arguments[o]; | |
| }t._timeout && clearTimeout(t._timeout), t._timeout = setTimeout(function () { | |
| return t.apply(e, i); | |
| }, n); | |
| };return r._real = t, r; | |
| }, | |
| s = function s(t, n) { | |
| for (var e = n.replace(/(\[|\])/g, ".").replace(/\.+/g, ".").split(".").filter(function (t) { | |
| return !!t; | |
| }), r = e.pop(); e.length;) { | |
| t = t[e.shift()]; | |
| }return { lastObj: t, lastKey: r }; | |
| }, | |
| f = function f() { | |
| for (var t = function t() {}, n = arguments.length, e = new Array(n), r = 0; r < n; r++) { | |
| e[r] = arguments[r]; | |
| }return a.a.apply(Object, [t.prototype].concat(e)), t; | |
| }; | |
| }, function (t, n) { | |
| function e(t, n) { | |
| if (!(t instanceof n)) throw new TypeError("Cannot call a class as a function"); | |
| }t.exports = e; | |
| }, function (t, n, e) { | |
| function r(t, n) { | |
| for (var e = 0; e < n.length; e++) { | |
| var r = n[e];r.enumerable = r.enumerable || !1, r.configurable = !0, "value" in r && (r.writable = !0), o(t, r.key, r); | |
| } | |
| }function i(t, n, e) { | |
| return n && r(t.prototype, n), e && r(t, e), t; | |
| }var o = e(100);t.exports = i; | |
| }, function (t, n, e) { | |
| n.f = e(13); | |
| }, function (t, n, e) { | |
| var r = e(93)("meta"), | |
| i = e(26), | |
| o = e(53), | |
| u = e(25).f, | |
| a = 0, | |
| c = Object.isExtensible || function () { | |
| return !0; | |
| }, | |
| s = !e(52)(function () { | |
| return c(Object.preventExtensions({})); | |
| }), | |
| f = function f(t) { | |
| u(t, r, { value: { i: "O" + ++a, w: {} } }); | |
| }, | |
| l = function l(t, n) { | |
| if (!i(t)) return "symbol" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)) ? t : ("string" == typeof t ? "S" : "P") + t;if (!o(t, r)) { | |
| if (!c(t)) return "F";if (!n) return "E";f(t); | |
| }return t[r].i; | |
| }, | |
| h = function h(t, n) { | |
| if (!o(t, r)) { | |
| if (!c(t)) return !0;if (!n) return !1;f(t); | |
| }return t[r].w; | |
| }, | |
| p = function p(t) { | |
| return s && v.NEED && c(t) && !o(t, r) && f(t), t; | |
| }, | |
| v = t.exports = { KEY: r, NEED: !1, fastKey: l, getWeak: h, onFreeze: p }; | |
| }, function (t, n, e) { | |
| var r = e(14), | |
| i = e(6), | |
| o = e(90), | |
| u = e(148), | |
| a = e(25).f;t.exports = function (t) { | |
| var n = i.Symbol || (i.Symbol = o ? {} : r.Symbol || {});"_" == t.charAt(0) || t in n || a(n, t, { value: u.f(t) }); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(97), | |
| i = e(67), | |
| o = e(54), | |
| u = e(132), | |
| a = e(53), | |
| c = e(189), | |
| s = Object.getOwnPropertyDescriptor;n.f = e(33) ? s : function (t, n) { | |
| if (t = o(t), n = u(n, !0), c) try { | |
| return s(t, n); | |
| } catch (t) {}if (a(t, n)) return i(!r.f.call(t, n), t[n]); | |
| }; | |
| }, function (t, n, e) { | |
| t.exports = e(463); | |
| }, function (t, n, e) { | |
| var r = function () { | |
| return this; | |
| }() || Function("return this")(), | |
| i = r.regeneratorRuntime && Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime") >= 0, | |
| o = i && r.regeneratorRuntime;if (r.regeneratorRuntime = void 0, t.exports = e(215), i) r.regeneratorRuntime = o;else try { | |
| delete r.regeneratorRuntime; | |
| } catch (t) { | |
| r.regeneratorRuntime = void 0; | |
| } | |
| }, function (t, n, e) { | |
| t.exports = !e(7) && !e(3)(function () { | |
| return 7 != Object.defineProperty(e(101)("div"), "a", { get: function get() { | |
| return 7; | |
| } }).a; | |
| }); | |
| }, function (t, n, e) { | |
| n.f = e(5); | |
| }, function (t, n, e) { | |
| var r = e(15), | |
| i = e(19), | |
| o = e(76)(!1), | |
| u = e(103)("IE_PROTO");t.exports = function (t, n) { | |
| var e, | |
| a = i(t), | |
| c = 0, | |
| s = [];for (e in a) { | |
| e != u && r(a, e) && s.push(e); | |
| }for (; n.length > c;) { | |
| r(a, e = n[c++]) && (~o(s, e) || s.push(e)); | |
| }return s; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(8), | |
| i = e(1), | |
| o = e(44);t.exports = e(7) ? Object.defineProperties : function (t, n) { | |
| i(t);for (var e, u = o(n), a = u.length, c = 0; a > c;) { | |
| r.f(t, e = u[c++], n[e]); | |
| }return t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(19), | |
| i = e(47).f, | |
| o = {}.toString, | |
| u = "object" == (typeof window === "undefined" ? "undefined" : (0, _typeof3.default)(window)) && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], | |
| a = function a(t) { | |
| try { | |
| return i(t); | |
| } catch (t) { | |
| return u.slice(); | |
| } | |
| };t.exports.f = function (t) { | |
| return u && "[object Window]" == o.call(t) ? a(t) : i(r(t)); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(44), | |
| i = e(77), | |
| o = e(64), | |
| u = e(10), | |
| a = e(63), | |
| c = Object.assign;t.exports = !c || e(3)(function () { | |
| var t = {}, | |
| n = {}, | |
| e = Symbol(), | |
| r = "abcdefghijklmnopqrst";return t[e] = 7, r.split("").forEach(function (t) { | |
| n[t] = t; | |
| }), 7 != c({}, t)[e] || Object.keys(c({}, n)).join("") != r; | |
| }) ? function (t, n) { | |
| for (var e = u(t), c = arguments.length, s = 1, f = i.f, l = o.f; c > s;) { | |
| for (var h, p = a(arguments[s++]), v = f ? r(p).concat(f(p)) : r(p), d = v.length, y = 0; d > y;) { | |
| l.call(p, h = v[y++]) && (e[h] = p[h]); | |
| } | |
| }return e; | |
| } : c; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(11), | |
| i = e(4), | |
| o = e(161), | |
| u = [].slice, | |
| a = {}, | |
| c = function c(t, n, e) { | |
| if (!(n in a)) { | |
| for (var r = [], i = 0; i < n; i++) { | |
| r[i] = "a[" + i + "]"; | |
| }a[n] = Function("F,a", "return new F(" + r.join(",") + ")"); | |
| }return a[n](t, e); | |
| };t.exports = Function.bind || function (t) { | |
| var n = r(this), | |
| e = u.call(arguments, 1), | |
| a = function a() { | |
| var r = e.concat(u.call(arguments));return this instanceof a ? c(n, r.length, r) : o(n, r, t); | |
| };return i(n.prototype) && (a.prototype = n.prototype), a; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t, n, e) { | |
| var r = void 0 === e;switch (n.length) {case 0: | |
| return r ? t() : t.call(e);case 1: | |
| return r ? t(n[0]) : t.call(e, n[0]);case 2: | |
| return r ? t(n[0], n[1]) : t.call(e, n[0], n[1]);case 3: | |
| return r ? t(n[0], n[1], n[2]) : t.call(e, n[0], n[1], n[2]);case 4: | |
| return r ? t(n[0], n[1], n[2], n[3]) : t.call(e, n[0], n[1], n[2], n[3]);}return t.apply(e, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(2).parseInt, | |
| i = e(56).trim, | |
| o = e(107), | |
| u = /^[-+]?0[xX]/;t.exports = 8 !== r(o + "08") || 22 !== r(o + "0x16") ? function (t, n) { | |
| var e = i(String(t), 3);return r(e, n >>> 0 || (u.test(e) ? 16 : 10)); | |
| } : r; | |
| }, function (t, n, e) { | |
| var r = e(2).parseFloat, | |
| i = e(56).trim;t.exports = 1 / r(e(107) + "-0") != -1 / 0 ? function (t) { | |
| var n = i(String(t), 3), | |
| e = r(n);return 0 === e && "-" == n.charAt(0) ? -0 : e; | |
| } : r; | |
| }, function (t, n, e) { | |
| var r = e(23);t.exports = function (t, n) { | |
| if ("number" != typeof t && "Number" != r(t)) throw TypeError(n);return +t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = Math.floor;t.exports = function (t) { | |
| return !r(t) && isFinite(t) && i(t) === t; | |
| }; | |
| }, function (t, n) { | |
| t.exports = Math.log1p || function (t) { | |
| return (t = +t) > -1e-8 && t < 1e-8 ? t - t * t / 2 : Math.log(1 + t); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(110), | |
| i = Math.pow, | |
| o = i(2, -52), | |
| u = i(2, -23), | |
| a = i(2, 127) * (2 - u), | |
| c = i(2, -126), | |
| s = function s(t) { | |
| return t + 1 / o - 1 / o; | |
| };t.exports = Math.fround || function (t) { | |
| var n, | |
| e, | |
| i = Math.abs(t), | |
| f = r(t);return i < c ? f * s(i / c / u) * c * u : (n = (1 + u / o) * i, e = n - (n - i), e > a || e != e ? f * (1 / 0) : f * e); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(1);t.exports = function (t, n, e, i) { | |
| try { | |
| return i ? n(r(e)[0], e[1]) : n(e); | |
| } catch (n) { | |
| var o = t.return;throw void 0 !== o && r(o.call(t)), n; | |
| } | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(11), | |
| i = e(10), | |
| o = e(63), | |
| u = e(9);t.exports = function (t, n, e, a, c) { | |
| r(n);var s = i(t), | |
| f = o(s), | |
| l = u(s.length), | |
| h = c ? l - 1 : 0, | |
| p = c ? -1 : 1;if (e < 2) for (;;) { | |
| if (h in f) { | |
| a = f[h], h += p;break; | |
| }if (h += p, c ? h < 0 : l <= h) throw TypeError("Reduce of empty array with no initial value"); | |
| }for (; c ? h >= 0 : l > h; h += p) { | |
| h in f && (a = n(a, f[h], h, s)); | |
| }return a; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(10), | |
| i = e(45), | |
| o = e(9);t.exports = [].copyWithin || function (t, n) { | |
| var e = r(this), | |
| u = o(e.length), | |
| a = i(t, u), | |
| c = i(n, u), | |
| s = arguments.length > 2 ? arguments[2] : void 0, | |
| f = Math.min((void 0 === s ? u : i(s, u)) - c, u - a), | |
| l = 1;for (c < a && a < c + f && (l = -1, c += f - 1, a += f - 1); f-- > 0;) { | |
| c in e ? e[a] = e[c] : delete e[a], a += l, c += l; | |
| }return e; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t, n) { | |
| return { value: n, done: !!t }; | |
| }; | |
| }, function (t, n, e) { | |
| e(7) && "g" != /./g.flags && e(8).f(RegExp.prototype, "flags", { configurable: !0, get: e(81) }); | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| try { | |
| return { e: !1, v: t() }; | |
| } catch (t) { | |
| return { e: !0, v: t }; | |
| } | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(1), | |
| i = e(4), | |
| o = e(125);t.exports = function (t, n) { | |
| if (r(t), i(n) && n.constructor === t) return n;var e = o.f(t);return (0, e.resolve)(n), e.promise; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(176), | |
| i = e(58), | |
| o = "Map";t.exports = e(84)(o, function (t) { | |
| return function () { | |
| return t(this, arguments.length > 0 ? arguments[0] : void 0); | |
| }; | |
| }, { get: function get(t) { | |
| var n = r.getEntry(i(this, o), t);return n && n.v; | |
| }, set: function set(t, n) { | |
| return r.def(i(this, o), 0 === t ? 0 : t, n); | |
| } }, r, !0); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(8).f, | |
| i = e(46), | |
| o = e(51), | |
| u = e(22), | |
| a = e(49), | |
| c = e(50), | |
| s = e(113), | |
| f = e(171), | |
| l = e(48), | |
| h = e(7), | |
| p = e(38).fastKey, | |
| v = e(58), | |
| d = h ? "_s" : "size", | |
| y = function y(t, n) { | |
| var e, | |
| r = p(n);if ("F" !== r) return t._i[r];for (e = t._f; e; e = e.n) { | |
| if (e.k == n) return e; | |
| } | |
| };t.exports = { getConstructor: function getConstructor(t, n, e, s) { | |
| var f = t(function (t, r) { | |
| a(t, f, n, "_i"), t._t = n, t._i = i(null), t._f = void 0, t._l = void 0, t[d] = 0, void 0 != r && c(r, e, t[s], t); | |
| });return o(f.prototype, { clear: function clear() { | |
| for (var t = v(this, n), e = t._i, r = t._f; r; r = r.n) { | |
| r.r = !0, r.p && (r.p = r.p.n = void 0), delete e[r.i]; | |
| }t._f = t._l = void 0, t[d] = 0; | |
| }, delete: function _delete(t) { | |
| var e = v(this, n), | |
| r = y(e, t);if (r) { | |
| var i = r.n, | |
| o = r.p;delete e._i[r.i], r.r = !0, o && (o.n = i), i && (i.p = o), e._f == r && (e._f = i), e._l == r && (e._l = o), e[d]--; | |
| }return !!r; | |
| }, forEach: function forEach(t) { | |
| v(this, n);for (var e, r = u(t, arguments.length > 1 ? arguments[1] : void 0, 3); e = e ? e.n : this._f;) { | |
| for (r(e.v, e.k, this); e && e.r;) { | |
| e = e.p; | |
| } | |
| } | |
| }, has: function has(t) { | |
| return !!y(v(this, n), t); | |
| } }), h && r(f.prototype, "size", { get: function get() { | |
| return v(this, n)[d]; | |
| } }), f; | |
| }, def: function def(t, n, e) { | |
| var r, | |
| i, | |
| o = y(t, n);return o ? o.v = e : (t._l = o = { i: i = p(n, !0), k: n, v: e, p: r = t._l, n: void 0, r: !1 }, t._f || (t._f = o), r && (r.n = o), t[d]++, "F" !== i && (t._i[i] = o)), t; | |
| }, getEntry: y, setStrong: function setStrong(t, n, e) { | |
| s(t, n, function (t, e) { | |
| this._t = v(t, n), this._k = e, this._l = void 0; | |
| }, function () { | |
| for (var t = this, n = t._k, e = t._l; e && e.r;) { | |
| e = e.p; | |
| }return t._t && (t._l = e = e ? e.n : t._t._f) ? "keys" == n ? f(0, e.k) : "values" == n ? f(0, e.v) : f(0, [e.k, e.v]) : (t._t = void 0, f(1)); | |
| }, e ? "entries" : "values", !e, !0), l(n); | |
| } }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(176), | |
| i = e(58), | |
| o = "Set";t.exports = e(84)(o, function (t) { | |
| return function () { | |
| return t(this, arguments.length > 0 ? arguments[0] : void 0); | |
| }; | |
| }, { add: function add(t) { | |
| return r.def(i(this, o), t = 0 === t ? 0 : t, t); | |
| } }, r); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r, | |
| i = e(31)(0), | |
| o = e(17), | |
| u = e(38), | |
| a = e(159), | |
| c = e(179), | |
| s = e(4), | |
| f = e(3), | |
| l = e(58), | |
| h = "WeakMap", | |
| p = u.getWeak, | |
| v = Object.isExtensible, | |
| d = c.ufstore, | |
| y = {}, | |
| g = function g(t) { | |
| return function () { | |
| return t(this, arguments.length > 0 ? arguments[0] : void 0); | |
| }; | |
| }, | |
| m = { get: function get(t) { | |
| if (s(t)) { | |
| var n = p(t);return !0 === n ? d(l(this, h)).get(t) : n ? n[this._i] : void 0; | |
| } | |
| }, set: function set(t, n) { | |
| return c.def(l(this, h), t, n); | |
| } }, | |
| _ = t.exports = e(84)(h, g, m, c, !0, !0);f(function () { | |
| return 7 != new _().set((Object.freeze || Object)(y), 7).get(y); | |
| }) && (r = c.getConstructor(g, h), a(r.prototype, m), u.NEED = !0, i(["delete", "has", "get", "set"], function (t) { | |
| var n = _.prototype, | |
| e = n[t];o(n, t, function (n, i) { | |
| if (s(n) && !v(n)) { | |
| this._f || (this._f = new r());var o = this._f[t](n, i);return "set" == t ? this : o; | |
| }return e.call(this, n, i); | |
| }); | |
| })); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(51), | |
| i = e(38).getWeak, | |
| o = e(1), | |
| u = e(4), | |
| a = e(49), | |
| c = e(50), | |
| s = e(31), | |
| f = e(15), | |
| l = e(58), | |
| h = s(5), | |
| p = s(6), | |
| v = 0, | |
| d = function d(t) { | |
| return t._l || (t._l = new y()); | |
| }, | |
| y = function y() { | |
| this.a = []; | |
| }, | |
| g = function g(t, n) { | |
| return h(t.a, function (t) { | |
| return t[0] === n; | |
| }); | |
| };y.prototype = { get: function get(t) { | |
| var n = g(this, t);if (n) return n[1]; | |
| }, has: function has(t) { | |
| return !!g(this, t); | |
| }, set: function set(t, n) { | |
| var e = g(this, t);e ? e[1] = n : this.a.push([t, n]); | |
| }, delete: function _delete(t) { | |
| var n = p(this.a, function (n) { | |
| return n[0] === t; | |
| });return ~n && this.a.splice(n, 1), !!~n; | |
| } }, t.exports = { getConstructor: function getConstructor(t, n, e, o) { | |
| var s = t(function (t, r) { | |
| a(t, s, n, "_i"), t._t = n, t._i = v++, t._l = void 0, void 0 != r && c(r, e, t[o], t); | |
| });return r(s.prototype, { delete: function _delete(t) { | |
| if (!u(t)) return !1;var e = i(t);return !0 === e ? d(l(this, n)).delete(t) : e && f(e, this._i) && delete e[this._i]; | |
| }, has: function has(t) { | |
| if (!u(t)) return !1;var e = i(t);return !0 === e ? d(l(this, n)).has(t) : e && f(e, this._i); | |
| } }), s; | |
| }, def: function def(t, n, e) { | |
| var r = i(o(n), !0);return !0 === r ? d(t).set(n, e) : r[t._i] = e, t; | |
| }, ufstore: d }; | |
| }, function (t, n, e) { | |
| var r = e(29), | |
| i = e(9);t.exports = function (t) { | |
| if (void 0 === t) return 0;var n = r(t), | |
| e = i(n);if (n !== e) throw RangeError("Wrong length!");return e; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(47), | |
| i = e(77), | |
| o = e(1), | |
| u = e(2).Reflect;t.exports = u && u.ownKeys || function (t) { | |
| var n = r.f(o(t)), | |
| e = i.f;return e ? n.concat(e(t)) : n; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| function r(t, n, e, s, f, l, h, p) { | |
| for (var v, d, y = f, g = 0, m = !!h && a(h, p, 3); g < s;) { | |
| if (g in e) { | |
| if (v = m ? m(e[g], g, n) : e[g], d = !1, o(v) && (d = v[c], d = void 0 !== d ? !!d : i(v)), d && l > 0) y = r(t, n, v, u(v.length), y, l - 1) - 1;else { | |
| if (y >= 9007199254740991) throw TypeError();t[y] = v; | |
| }y++; | |
| }g++; | |
| }return y; | |
| }var i = e(78), | |
| o = e(4), | |
| u = e(9), | |
| a = e(22), | |
| c = e(5)("isConcatSpreadable");t.exports = r; | |
| }, function (t, n, e) { | |
| var r = e(9), | |
| i = e(109), | |
| o = e(28);t.exports = function (t, n, e, u) { | |
| var a = String(o(t)), | |
| c = a.length, | |
| s = void 0 === e ? " " : String(e), | |
| f = r(n);if (f <= c || "" == s) return a;var l = f - c, | |
| h = i.call(s, Math.ceil(l / s.length));return h.length > l && (h = h.slice(0, l)), u ? h + a : a + h; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(44), | |
| i = e(19), | |
| o = e(64).f;t.exports = function (t) { | |
| return function (n) { | |
| for (var e, u = i(n), a = r(u), c = a.length, s = 0, f = []; c > s;) { | |
| o.call(u, e = a[s++]) && f.push(t ? [e, u[e]] : u[e]); | |
| }return f; | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(65), | |
| i = e(186);t.exports = function (t) { | |
| return function () { | |
| if (r(this) != t) throw TypeError(t + "#toJSON isn't generic");return i(this); | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(50);t.exports = function (t, n) { | |
| var e = [];return r(t, !1, e.push, e, n), e; | |
| }; | |
| }, function (t, n) { | |
| t.exports = Math.scale || function (t, n, e, r, i) { | |
| return 0 === arguments.length || t != t || n != n || e != e || r != r || i != i ? NaN : t === 1 / 0 || t === -1 / 0 ? t : (t - n) * (i - r) / (e - n) + r; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(413), | |
| i = e.n(r), | |
| o = e(138), | |
| u = e.n(o), | |
| a = "https://s2.d2scdn.com/", | |
| c = function c(t) { | |
| return function (n, e) { | |
| var r = "";if (!n) return n;if (/^https?/.test(n)) return n;if (!e) return a + n;var i = e.split(",");if (3 !== i.length) return a + n;if ("wh" === i[0].slice(0, 2)) r = "?imageView2/1/w/".concat(i[1], "/h/").concat(i[2]);else if ("f" === i[0][0]) r = "";else { | |
| if ("c" === i[0][0]) return a + "crop/1/FFFFFF/".concat(i[1], "x").concat(i[2], "/").concat(n);"d" === i[0][0] ? r = "?imageMogr2/auto-orient/thumbnail/".concat(i[1], "x").concat(i[2], "!/interlace/1") : "e" === i[0][0] ? r = "?imageMogr2/auto-orient/thumbnail/!".concat(i[1], "x").concat(i[2], "r|imageView2/1/w/").concat(i[1], "/h/").concat(i[2]) : "g" === i[0][0] ? r = "?imageView2/2/w/".concat(i[1]) : "i" === i[0][0] ? r = "?imageView2/2/h/".concat(i[2]) : "j" === i[0][0] ? r = "?imageView2/2/w/".concat(i[1], "/h/").concat(i[2]) : "v" === i[0][0] ? r = "?vframe/jpg/offset/0/w/".concat(i[1], "/h/").concat(i[2]) : "x" === i[0][0] && (r = "?vframe/jpg/offset/0/w/".concat(i[1])); | |
| }if (t && i[0].length > 1 && "m" === i[0][i[0].length - 1]) { | |
| var o = -1 !== r.indexOf("?") ? "|" : "?";r = "".concat(r).concat(o).concat(t.company.watermark_fop); | |
| }return a + n + r; | |
| }; | |
| }, | |
| s = { qiniuFactory: c, qiniu: c("undefined" == typeof window ? null : window.D), dateformat: function dateformat(t, n) { | |
| var e, r, o, a, c, s;if (!t) return t;try { | |
| e = new Date(t); | |
| } catch (n) { | |
| return t; | |
| }var f = function f(t) { | |
| return t = t.toString(), 1 === t.length ? "0".concat(t) : t; | |
| }, | |
| l = null;if ("string" == typeof t) { | |
| var h = t.match(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})/);if (h) { | |
| var p = i()(h.slice(1, 7)), | |
| v = u()(p, 6);l = v[0], c = v[1], r = v[2], o = v[3], a = v[4], s = v[5]; | |
| } | |
| }switch (l || (l = e.getUTCFullYear(), c = f(e.getUTCMonth() + 1), r = f(e.getUTCDate()), o = f(e.getUTCHours()), a = f(e.getUTCMinutes()), s = f(e.getSeconds())), n) {case "list": | |
| return [parseInt(l), parseInt(c), parseInt(r), parseInt(o), parseInt(a), parseInt(s)];case "date": | |
| return "".concat(l, "-").concat(c, "-").concat(r);case "datetime": | |
| return "".concat(l, "-").concat(c, "-").concat(r, " ").concat(o, ":").concat(a);case "datetimeseconds": | |
| return "".concat(l, "-").concat(c, "-").concat(r, " ").concat(o, ":").concat(a, ":").concat(s);case "time": | |
| return "".concat(o, ":").concat(a);case "url": | |
| return "".concat(l, "-").concat(c, "-").concat(r, "-").concat(o, ":").concat(a, ":").concat(s);default: | |
| return t;} | |
| }, findValueIndex: function findValueIndex(t, n, e, r) { | |
| r = void 0 === r ? null : r;for (var i = 0; i < t.length; i++) { | |
| if (t[i][n] === e) return i; | |
| }return r; | |
| }, htmlToText: function htmlToText(t) { | |
| return t = t ? String(t).replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, "") : "", t = t ? String(t).replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, "") : "", t = t ? String(t).replace(/<[^>]+>/gm, "") : "", t = t.replace(/ /g, "").replace(/&/g, "&"); | |
| }, default: function _default(t, n) { | |
| return null == t ? n : t; | |
| }, orderToChinese: function orderToChinese(t) { | |
| return { 0: "零", 1: "一", 2: "二", 3: "三", 4: "四", 5: "五", 6: "六", 7: "七", 8: "八", 9: "九", 10: "十" }[t] || t; | |
| }, truncate: function truncate(t, n) { | |
| return t && t.length > n ? t.slice(0, n) + "..." : t; | |
| }, priceformat: function priceformat(t, n) { | |
| return t = t || 0, n = n || "int", "int" === n ? (Number(t) / 100).toFixed(2) : "cnyint" === n ? "¥ " + (Number(t) / 100).toFixed(2) : "float" === n ? Number(t).toFixed(2) : "cnyfloat" === n ? "¥ " + Number(t).toFixed(2) : void 0; | |
| } };n.a = s; | |
| }, function (t, n, e) { | |
| t.exports = !e(33) && !e(52)(function () { | |
| return 7 != Object.defineProperty(e(131)("div"), "a", { get: function get() { | |
| return 7; | |
| } }).a; | |
| }); | |
| }, function (t, n, e) { | |
| t.exports = e(40); | |
| }, function (t, n, e) { | |
| var r = e(53), | |
| i = e(54), | |
| o = e(418)(!1), | |
| u = e(134)("IE_PROTO");t.exports = function (t, n) { | |
| var e, | |
| a = i(t), | |
| c = 0, | |
| s = [];for (e in a) { | |
| e != u && r(a, e) && s.push(e); | |
| }for (; n.length > c;) { | |
| r(a, e = n[c++]) && (~o(s, e) || s.push(e)); | |
| }return s; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(14).document;t.exports = r && r.documentElement; | |
| }, function (t, n, e) { | |
| var r = e(53), | |
| i = e(61), | |
| o = e(134)("IE_PROTO"), | |
| u = Object.prototype;t.exports = Object.getPrototypeOf || function (t) { | |
| return t = i(t), r(t, o) ? t[o] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype : t instanceof Object ? u : null; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(32);t.exports = function (t, n, e, i) { | |
| try { | |
| return i ? n(r(e)[0], e[1]) : n(e); | |
| } catch (n) { | |
| var o = t.return;throw void 0 !== o && r(o.call(t)), n; | |
| } | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(60), | |
| i = e(13)("iterator"), | |
| o = Array.prototype;t.exports = function (t) { | |
| return void 0 !== t && (r.Array === t || o[i] === t); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(13)("iterator"), | |
| i = !1;try { | |
| var o = [7][r]();o.return = function () { | |
| i = !0; | |
| }, Array.from(o, function () { | |
| throw 2; | |
| }); | |
| } catch (t) {}t.exports = function (t, n) { | |
| if (!n && !i) return !1;var e = !1;try { | |
| var o = [7], | |
| u = o[r]();u.next = function () { | |
| return { done: e = !0 }; | |
| }, o[r] = function () { | |
| return u; | |
| }, t(o); | |
| } catch (t) {}return e; | |
| }; | |
| }, function (t, n) { | |
| t.exports = function (t, n) { | |
| return { value: n, done: !!t }; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return d; | |
| });var r = e(74), | |
| i = e.n(r), | |
| o = e(96), | |
| u = e.n(o), | |
| a = e(140), | |
| c = e.n(a), | |
| s = e(95), | |
| f = e.n(s), | |
| l = e(145), | |
| h = "placeholder/500x500/DDD/000/暂无图片/", | |
| p = function p(t) { | |
| var n = function n(_n2, e) { | |
| return t[_n2] && t[_n2].support ? t[_n2].value : e; | |
| }, | |
| e = n("fop_type", "e");"c" !== e && n("fop_watermark", !1) && (e += "m");var r = n("fop_width", 500), | |
| i = n("fop_height", 500);return "".concat(e, ",").concat(r, ",").concat(i); | |
| }, | |
| v = function v(t, n, e) { | |
| var r = t.filters.htmlToText(n.description) || "", | |
| i = r.replace(/[\n \r]/g, "").slice(0, 255), | |
| o = n.image_key || h, | |
| u = n.images ? n.images.map(function (n) { | |
| return n.image = t.filters.qiniu(n.image, p(t.slide.liveconfig)), n; | |
| }) : [];if (n.display = { id: n.id, name: n.name, pub_date: t.filters.dateformat(n.pub_date, "datetime"), image_key: o, image: t.filters.qiniu(o, p(t.slide.liveconfig)), images: u, usercategory_data: n.usercategory_data, attributes: n.attributes, description: n.description || "", description_text: i, price: n.price || null, compare_price: n.compare_price || null, tags: n.tags, brand: n.brand, coupons: n.coupons }, null !== e) { | |
| var a = { id: n.id, display: {} };n.model_name && (a.model_name = n.model_name);var c = !0, | |
| s = !1, | |
| l = void 0;try { | |
| for (var v, d = f()(e); !(c = (v = d.next()).done); c = !0) { | |
| var y = v.value;a.display[y] = n.display[y]; | |
| } | |
| } catch (t) { | |
| s = !0, l = t; | |
| } finally { | |
| try { | |
| c || null == d.return || d.return(); | |
| } finally { | |
| if (s) throw l; | |
| } | |
| }return a; | |
| }return console.warn("出于性能考虑,调用 loadLiveItems 和 loadDetailItem 必须指定 fields 参数!"), n; | |
| }, | |
| d = { throttle: l.throttle, itemHandler: v, loadLiveData: function () { | |
| var t = c()(i.a.mark(function t() { | |
| var n, | |
| e, | |
| r, | |
| o, | |
| a, | |
| c, | |
| s, | |
| f, | |
| l = arguments;return i.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return n = l.length > 0 && void 0 !== l[0] ? l[0] : null, e = l.length > 1 && void 0 !== l[1] ? l[1] : {}, r = this, o = r.slide.liveconfig, a = { limit: o.limit.value, order_by: o.order_by.support ? o.order_by.value : "-id", filters: {} }, o.user_category.support && o.user_category.value && (a.filters.cat = o.user_category.value.id), "post" === o.model.value && (a.filters.type = "post"), ["cat", "type", "recommended"].forEach(function (t) { | |
| e[t] && (a.filters[t] = e[t], delete e[t]); | |
| }), u()(a, e), c = o.model.value, "product" === c && (c = "pproduct"), s = "post/".concat(c, "/get_list_by_web"), t.next = 14, r.fetch(s, a);case 14: | |
| return f = t.sent, f.data.objects = f.data.objects.map(function (t) { | |
| return v(r, t, n); | |
| }), t.abrupt("return", f.data);case 17:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function () { | |
| return t.apply(this, arguments); | |
| }; | |
| }(), loadLiveItems: function () { | |
| var t = c()(i.a.mark(function t() { | |
| var n, | |
| e, | |
| r, | |
| o = arguments;return i.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return n = o.length > 0 && void 0 !== o[0] ? o[0] : null, e = o.length > 1 && void 0 !== o[1] ? o[1] : {}, t.next = 4, this.loadLiveData(n, e);case 4: | |
| return r = t.sent, t.abrupt("return", r.objects);case 6:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function () { | |
| return t.apply(this, arguments); | |
| }; | |
| }(), _loadDetailItem: function () { | |
| var t = c()(i.a.mark(function t(n, e) { | |
| var r, | |
| o, | |
| u, | |
| a, | |
| c, | |
| s, | |
| f, | |
| l = arguments;return i.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return r = l.length > 2 && void 0 !== l[2] && l[2], o = this, u = o.slide.liveconfig, a = { id: parseInt(n.id), is_load_cat: r }, c = u.model.value, "product" === c && (c = "pproduct"), s = "post/".concat(c, "/get_detail_by_web"), t.next = 9, o.fetch(s, a);case 9: | |
| return f = t.sent, t.abrupt("return", v(o, f.data.object, e));case 11:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function (n, e) { | |
| return t.apply(this, arguments); | |
| }; | |
| }(), loadDetailItem: function () { | |
| var t = c()(i.a.mark(function t() { | |
| var n, | |
| e, | |
| r, | |
| o, | |
| u = arguments;return i.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| if (n = u.length > 0 && void 0 !== u[0] ? u[0] : null, e = u.length > 1 && void 0 !== u[1] && u[1], r = this, !r.query.id) { | |
| t.next = 7;break; | |
| }return t.abrupt("return", r._loadDetailItem(r.query, n, e));case 7: | |
| return t.next = 9, r.loadLiveItems(n);case 9: | |
| return o = t.sent, t.abrupt("return", o[0]);case 11:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function () { | |
| return t.apply(this, arguments); | |
| }; | |
| }(), loadRelatedItems: function () { | |
| var t = c()(i.a.mark(function t(n) { | |
| var e, | |
| r, | |
| o, | |
| a, | |
| c, | |
| s, | |
| f, | |
| l, | |
| h, | |
| p, | |
| d = arguments;return i.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return e = d.length > 1 && void 0 !== d[1] ? d[1] : "product", r = d.length > 2 && void 0 !== d[2] ? d[2] : 10, o = d.length > 3 && void 0 !== d[3] ? d[3] : null, a = d.length > 4 && void 0 !== d[4] ? d[4] : {}, c = this, s = c.slide.liveconfig, f = { from_id: n, to_type: e, limit: r }, u()(f, a), l = s.model.value, "product" === l && (l = "pproduct"), h = "post/".concat(l, "/get_related_list"), t.next = 13, c.fetch(h, f);case 13: | |
| return p = t.sent, t.abrupt("return", p.data.objects.map(function (t) { | |
| return v(c, t, o); | |
| }));case 15:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function (n) { | |
| return t.apply(this, arguments); | |
| }; | |
| }(), loadQueryData: function () { | |
| var t = c()(i.a.mark(function t() { | |
| var n, | |
| e, | |
| r, | |
| o, | |
| u, | |
| a, | |
| c, | |
| s = arguments;return i.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return n = s.length > 0 && void 0 !== s[0] ? s[0] : null, e = s.length > 1 && void 0 !== s[1] ? s[1] : {}, r = this, o = r.slide.liveconfig, u = e.model_name || o.model.value, "product" === u && (u = "pproduct"), a = "post/".concat(u, "/get_query_list"), t.next = 9, r.fetch(a, e);case 9: | |
| return c = t.sent, c.data.objects = c.data.objects.map(function (t) { | |
| return v(r, t, n); | |
| }), t.abrupt("return", c.data);case 12:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function () { | |
| return t.apply(this, arguments); | |
| }; | |
| }() }; | |
| }, function (t, n, e) { | |
| var r = e(32), | |
| i = e(66), | |
| o = e(13)("species");t.exports = function (t, n) { | |
| var e, | |
| u = r(t).constructor;return void 0 === u || void 0 == (e = r(u)[o]) ? n : i(e); | |
| }; | |
| }, function (t, n, e) { | |
| var r, | |
| i, | |
| o, | |
| u = e(37), | |
| a = e(434), | |
| c = e(192), | |
| s = e(131), | |
| f = e(14), | |
| l = f.process, | |
| h = f.setImmediate, | |
| p = f.clearImmediate, | |
| v = f.MessageChannel, | |
| d = f.Dispatch, | |
| y = 0, | |
| g = {}, | |
| m = "onreadystatechange", | |
| _ = function _() { | |
| var t = +this;if (g.hasOwnProperty(t)) { | |
| var n = g[t];delete g[t], n(); | |
| } | |
| }, | |
| w = function w(t) { | |
| _.call(t.data); | |
| };h && p || (h = function h(t) { | |
| for (var n = [], e = 1; arguments.length > e;) { | |
| n.push(arguments[e++]); | |
| }return g[++y] = function () { | |
| a("function" == typeof t ? t : Function(t), n); | |
| }, r(y), y; | |
| }, p = function p(t) { | |
| delete g[t]; | |
| }, "process" == e(69)(l) ? r = function r(t) { | |
| l.nextTick(u(_, t, 1)); | |
| } : d && d.now ? r = function r(t) { | |
| d.now(u(_, t, 1)); | |
| } : v ? (i = new v(), o = i.port2, i.port1.onmessage = w, r = u(o.postMessage, o, 1)) : f.addEventListener && "function" == typeof postMessage && !f.importScripts ? (r = function r(t) { | |
| f.postMessage(t + "", "*"); | |
| }, f.addEventListener("message", w, !1)) : r = m in s("script") ? function (t) { | |
| c.appendChild(s("script"))[m] = function () { | |
| c.removeChild(this), _.call(t); | |
| }; | |
| } : function (t) { | |
| setTimeout(u(_, t, 1), 0); | |
| }), t.exports = { set: h, clear: p }; | |
| }, function (t, n) { | |
| t.exports = function (t) { | |
| try { | |
| return { e: !1, v: t() }; | |
| } catch (t) { | |
| return { e: !0, v: t }; | |
| } | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(32), | |
| i = e(26), | |
| o = e(143);t.exports = function (t, n) { | |
| if (r(t), i(n) && n.constructor === t) return n;var e = o.f(t);return (0, e.resolve)(n), e.promise; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(14), | |
| i = e(6), | |
| o = e(25), | |
| u = e(33), | |
| a = e(13)("species");t.exports = function (t) { | |
| var n = "function" == typeof i[t] ? i[t] : r[t];u && n && !n[a] && o.f(n, a, { configurable: !0, get: function get() { | |
| return this; | |
| } }); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return y; | |
| });var r = e(73), | |
| i = e.n(r), | |
| o = e(74), | |
| u = e.n(o), | |
| a = e(98), | |
| c = e.n(a), | |
| s = e(140), | |
| f = e.n(s), | |
| l = e(146), | |
| h = e.n(l), | |
| p = e(147), | |
| v = e.n(p), | |
| d = function () { | |
| function t(n, e) { | |
| h()(this, t), this.dw = n, this.slide = e; | |
| }return v()(t, [{ key: "_check", value: function value() { | |
| if (!this.slide.related_papp_id) throw new Error("请先创建关联应用程序!"); | |
| } }, { key: "getPlayId", value: function value() { | |
| return this._check(), this.slide.related_papp_id; | |
| } }, { key: "getPlayData", value: function value() { | |
| return this._check(), this.dw.request("dynamic_get/company_papp/get_papp_data", { id: this.getPlayId() }); | |
| } }, { key: "getPlayUser", value: function value() { | |
| return this._check(), this.dw.request("dynamic_get/company_papp/get_siteuser_data", { id: this.getPlayId() }); | |
| } }, { key: "dispatchPrize", value: function value() { | |
| var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;return this._check(), this.dw.request("dynamic_post/company_papp/dispatch_prize", { id: this.getPlayId(), score: t }); | |
| } }]), t; | |
| }(), | |
| y = function () { | |
| function t(n, e) { | |
| h()(this, t), Object.defineProperty(this, "platform", { configurable: !0, enumerable: !0, writable: !0, value: "dwapp" }), this.dw = n, this.slide = e, this.play = new d(n, e); | |
| }return v()(t, [{ key: "isUserLogin", value: function () { | |
| var t = f()(u.a.mark(function t() { | |
| var n = this;return u.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return t.abrupt("return", new c.a(function (t, e) { | |
| var r = n.dw.getStorageSync("dwapp:installation") || {};t(Boolean(r.siteuser_token)); | |
| }));case 1:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function () { | |
| return t.apply(this, arguments); | |
| }; | |
| }() }, { key: "wxGotoLogin", value: function value() { | |
| var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, | |
| n = i()(t).map(function (n) { | |
| return n + "=" + t[n]; | |
| }).join("&"), | |
| e = n ? "?" + n : "";this.dw.goToHref("account-login" + e); | |
| } }, { key: "wxLogin", value: function value(t) { | |
| return !!(this.dw.getStorageSync("dwapp:installation") || {}).siteuser_token || (this.wxGotoLogin(t), !1); | |
| } }, { key: "isAdminLogin", value: function () { | |
| var t = f()(u.a.mark(function t() { | |
| var n = this;return u.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return t.abrupt("return", new c.a(function (t, e) { | |
| var r = n.dw.getStorageSync("dwapp:installation") || {};t(Boolean(r.user_token)); | |
| }));case 1:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function () { | |
| return t.apply(this, arguments); | |
| }; | |
| }() }, { key: "wxGotoAdminLogin", value: function value() { | |
| var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, | |
| n = i()(t).map(function (n) { | |
| return n + "=" + t[n]; | |
| }).join("&"), | |
| e = n ? "?" + n : "";this.dw.goToHref("plugin-userlogin" + e); | |
| } }, { key: "wxAdminLogin", value: function value(t) { | |
| return !!(this.dw.getStorageSync("dwapp:installation") || {}).user_token || (this.wxGotoAdminLogin(t), !1); | |
| } }, { key: "wxAppLogin", value: function value() { | |
| return !0; | |
| } }, { key: "getPappSlug", value: function value() { | |
| return this.slide.slug || this.slide.meta.papp_slug; | |
| } }, { key: "getPageParams", value: function value() { | |
| return this.dw.query; | |
| } }, { key: "getMasterPagetemplateId", value: function value() { | |
| return this.slide.master_pagetemplate_id || parseInt(this.slide.type); | |
| } }, { key: "buildPappUrl", value: function value(t) { | |
| var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, | |
| e = this.getPappSlug(), | |
| r = n ? i()(n).map(function (t) { | |
| return "".concat(t, "=").concat(encodeURIComponent(n[t])); | |
| }).join("&") : "";return "app_".concat(e, "-").concat(t).concat(r ? "?" + r : ""); | |
| } }, { key: "is", value: function value(t) { | |
| switch (t) {case "master": | |
| return !!this.slide.slug;case "slave": | |
| return !!this.slide.master_pagetemplate_id;default: | |
| console.warn("AppProxy error: only master/slave is support");} | |
| } }, { key: "getDatasetId", value: function value() { | |
| if (this.slide.master_dataset_id) return this.slide.master_dataset_id;if (!this.slide.dataset_id) throw new Error("AppProxy error: dataset is required.");return this.slide.dataset_id; | |
| } }, { key: "getRows", value: function value(t) { | |
| return t.dataset_id = this.getDatasetId(), this.dw.fetch("post/datasetrow/get_rows", t); | |
| } }, { key: "getQueryRows", value: function value(t) { | |
| return t.dataset_id = this.getDatasetId(), this.dw.fetch("post/datasetquery/get_rows", t); | |
| } }, { key: "query", value: function value(t) { | |
| return this.getRows({ query: t }); | |
| } }, { key: "createRow", value: function value(t, n) { | |
| var e = { data: n, is_admin: !1, dataset_id: this.getDatasetId(), datasettable: t };return this.dw.fetch("post/datasetrow/create_row", e); | |
| } }, { key: "updateRow", value: function value(t, n) { | |
| var e = { data: n, is_admin: !1, dataset_id: this.getDatasetId(), datasetrow: t };return this.dw.fetch("post/datasetrow/update_row", e); | |
| } }, { key: "removeRow", value: function value(t) { | |
| var n = { is_admin: !1, dataset_id: this.getDatasetId(), datasetrow: t };return this.dw.fetch("post/datasetrow/remove_row", n); | |
| } }, { key: "run", value: function value(t) { | |
| var n = this, | |
| e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, | |
| r = { is_admin: !1, pagetemplate_id: this.slide.master_pagetemplate_id || parseInt(this.slide.type), dataset_id: this.getDatasetId(), action: t, kwargs: e };return new c.a(function (e, i) { | |
| n.dw.fetch("post/ccode/run_ccode", r).then(function (n) { | |
| "success" === n.data.status ? e(n.data.result) : (console.error("Ccode ".concat(t, " error: ").concat(n.data.message)), i(new Error())); | |
| }); | |
| }); | |
| } }]), t; | |
| }(); | |
| }, function (t, n, e) { | |
| t.exports = e(443); | |
| }, function (t, n, e) { | |
| var r = e(69);t.exports = Array.isArray || function (t) { | |
| return "Array" == r(t); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(54), | |
| i = e(208).f, | |
| o = {}.toString, | |
| u = "object" == (typeof window === "undefined" ? "undefined" : (0, _typeof3.default)(window)) && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [], | |
| a = function a(t) { | |
| try { | |
| return i(t); | |
| } catch (t) { | |
| return u.slice(); | |
| } | |
| };t.exports.f = function (t) { | |
| return u && "[object Window]" == o.call(t) ? a(t) : i(r(t)); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(191), | |
| i = e(136).concat("length", "prototype");n.f = Object.getOwnPropertyNames || function (t) { | |
| return r(t, i); | |
| }; | |
| }, function (t, n, e) { | |
| function r() { | |
| return t.exports = r = i || function (t) { | |
| for (var n = 1; n < arguments.length; n++) { | |
| var e = arguments[n];for (var r in e) { | |
| Object.prototype.hasOwnProperty.call(e, r) && (t[r] = e[r]); | |
| } | |
| }return t; | |
| }, r.apply(this, arguments); | |
| }var i = e(96);t.exports = r; | |
| }, function (t, n, e) { | |
| var r = e(26);t.exports = function (t, n) { | |
| if (!r(t) || t._t !== n) throw TypeError("Incompatible receiver, " + n + " required!");return t; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(212);e.d(n, "a", function () { | |
| return r.a; | |
| }), e.d(n, "b", function () { | |
| return r.b; | |
| }), e.d(n, "c", function () { | |
| return r.c; | |
| }), e.d(n, "d", function () { | |
| return r.e; | |
| }), e.d(n, "e", function () { | |
| return r.f; | |
| }), e.d(n, "f", function () { | |
| return r.i; | |
| }), e.d(n, "g", function () { | |
| return r.j; | |
| }), e.d(n, "h", function () { | |
| return r.k; | |
| });e(490); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| function r(t) { | |
| return null !== t && "object" === p()(t); | |
| }function i(t) { | |
| return "[object Object]" === m.call(t); | |
| }function o() {}function u(t) { | |
| if (!_.test(t)) { | |
| var n = t.split(".");return function (t) { | |
| for (var e = 0; e < n.length; e++) { | |
| if (!t) return;t = t[n[e]]; | |
| }return t; | |
| }; | |
| } | |
| }function a(t, n) { | |
| return w.call(t, n); | |
| }function c(t, n, e, r) { | |
| l()(t, n, { value: e, enumerable: !!r, writable: !0, configurable: !0 }); | |
| }function s(t, n) { | |
| if (t.length) { | |
| var e = t.indexOf(n);if (e > -1) return t.splice(e, 1); | |
| } | |
| }e.d(n, "c", function () { | |
| return v; | |
| }), e.d(n, "h", function () { | |
| return d; | |
| }), e.d(n, "e", function () { | |
| return y; | |
| }), e.d(n, "d", function () { | |
| return g; | |
| }), n.f = r, n.g = i, n.i = o, n.j = u, n.b = a, n.a = c, n.k = s;var f = e(100), | |
| l = e.n(f), | |
| h = e(62), | |
| p = e.n(h), | |
| v = "__proto__" in {}, | |
| d = function d(t) { | |
| return "string" == typeof t; | |
| }, | |
| y = function y(t) { | |
| return "number" == typeof t; | |
| }, | |
| g = Array.isArray, | |
| m = Object.prototype.toString, | |
| _ = /[^\w.$]/, | |
| w = Object.prototype.hasOwnProperty; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| Object.defineProperty(n, "__esModule", { value: !0 });var r = e(214);n.default = r.a; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(74), | |
| i = e.n(r), | |
| o = e(216), | |
| u = (e.n(o), e(153)), | |
| a = (e.n(u), e(89)), | |
| c = e.n(a), | |
| s = e(188), | |
| f = e(198), | |
| l = e(204), | |
| h = e(442), | |
| p = e(452), | |
| v = e(145);n.a = { regeneratorRuntime: i.a, events: c.a, utils: v, filters: s.a, DwMixin: f.a, DwAppProxy: l.a, buildPageConfig: h.a, buildDw: p.a }; | |
| }, function (t, n) { | |
| !function (n) { | |
| "use strict"; | |
| function e(t, n, e, r) { | |
| var o = n && n.prototype instanceof i ? n : i, | |
| u = Object.create(o.prototype), | |
| a = new p(r || []);return u._invoke = s(t, e, a), u; | |
| }function r(t, n, e) { | |
| try { | |
| return { type: "normal", arg: t.call(n, e) }; | |
| } catch (t) { | |
| return { type: "throw", arg: t }; | |
| } | |
| }function i() {}function o() {}function u() {}function a(t) { | |
| ["next", "throw", "return"].forEach(function (n) { | |
| t[n] = function (t) { | |
| return this._invoke(n, t); | |
| }; | |
| }); | |
| }function c(t) { | |
| function n(e, i, o, u) { | |
| var a = r(t[e], t, i);if ("throw" !== a.type) { | |
| var c = a.arg, | |
| s = c.value;return s && "object" == (typeof s === "undefined" ? "undefined" : (0, _typeof3.default)(s)) && m.call(s, "__await") ? Promise.resolve(s.__await).then(function (t) { | |
| n("next", t, o, u); | |
| }, function (t) { | |
| n("throw", t, o, u); | |
| }) : Promise.resolve(s).then(function (t) { | |
| c.value = t, o(c); | |
| }, u); | |
| }u(a.arg); | |
| }function e(t, e) { | |
| function r() { | |
| return new Promise(function (r, i) { | |
| n(t, e, r, i); | |
| }); | |
| }return i = i ? i.then(r, r) : r(); | |
| }var i;this._invoke = e; | |
| }function s(t, n, e) { | |
| var i = P;return function (o, u) { | |
| if (i === E) throw new Error("Generator is already running");if (i === j) { | |
| if ("throw" === o) throw u;return d(); | |
| }for (e.method = o, e.arg = u;;) { | |
| var a = e.delegate;if (a) { | |
| var c = f(a, e);if (c) { | |
| if (c === A) continue;return c; | |
| } | |
| }if ("next" === e.method) e.sent = e._sent = e.arg;else if ("throw" === e.method) { | |
| if (i === P) throw i = j, e.arg;e.dispatchException(e.arg); | |
| } else "return" === e.method && e.abrupt("return", e.arg);i = E;var s = r(t, n, e);if ("normal" === s.type) { | |
| if (i = e.done ? j : k, s.arg === A) continue;return { value: s.arg, done: e.done }; | |
| }"throw" === s.type && (i = j, e.method = "throw", e.arg = s.arg); | |
| } | |
| }; | |
| }function f(t, n) { | |
| var e = t.iterator[n.method];if (e === y) { | |
| if (n.delegate = null, "throw" === n.method) { | |
| if (t.iterator.return && (n.method = "return", n.arg = y, f(t, n), "throw" === n.method)) return A;n.method = "throw", n.arg = new TypeError("The iterator does not provide a 'throw' method"); | |
| }return A; | |
| }var i = r(e, t.iterator, n.arg);if ("throw" === i.type) return n.method = "throw", n.arg = i.arg, n.delegate = null, A;var o = i.arg;return o ? o.done ? (n[t.resultName] = o.value, n.next = t.nextLoc, "return" !== n.method && (n.method = "next", n.arg = y), n.delegate = null, A) : o : (n.method = "throw", n.arg = new TypeError("iterator result is not an object"), n.delegate = null, A); | |
| }function l(t) { | |
| var n = { tryLoc: t[0] };1 in t && (n.catchLoc = t[1]), 2 in t && (n.finallyLoc = t[2], n.afterLoc = t[3]), this.tryEntries.push(n); | |
| }function h(t) { | |
| var n = t.completion || {};n.type = "normal", delete n.arg, t.completion = n; | |
| }function p(t) { | |
| this.tryEntries = [{ tryLoc: "root" }], t.forEach(l, this), this.reset(!0); | |
| }function v(t) { | |
| if (t) { | |
| var n = t[w];if (n) return n.call(t);if ("function" == typeof t.next) return t;if (!isNaN(t.length)) { | |
| var e = -1, | |
| r = function n() { | |
| for (; ++e < t.length;) { | |
| if (m.call(t, e)) return n.value = t[e], n.done = !1, n; | |
| }return n.value = y, n.done = !0, n; | |
| };return r.next = r; | |
| } | |
| }return { next: d }; | |
| }function d() { | |
| return { value: y, done: !0 }; | |
| }var y, | |
| g = Object.prototype, | |
| m = g.hasOwnProperty, | |
| _ = "function" == typeof Symbol ? Symbol : {}, | |
| w = _.iterator || "@@iterator", | |
| b = _.asyncIterator || "@@asyncIterator", | |
| x = _.toStringTag || "@@toStringTag", | |
| S = "object" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)), | |
| O = n.regeneratorRuntime;if (O) return void (S && (t.exports = O));O = n.regeneratorRuntime = S ? t.exports : {}, O.wrap = e;var P = "suspendedStart", | |
| k = "suspendedYield", | |
| E = "executing", | |
| j = "completed", | |
| A = {}, | |
| M = {};M[w] = function () { | |
| return this; | |
| };var T = Object.getPrototypeOf, | |
| F = T && T(T(v([])));F && F !== g && m.call(F, w) && (M = F);var L = u.prototype = i.prototype = Object.create(M);o.prototype = L.constructor = u, u.constructor = o, u[x] = o.displayName = "GeneratorFunction", O.isGeneratorFunction = function (t) { | |
| var n = "function" == typeof t && t.constructor;return !!n && (n === o || "GeneratorFunction" === (n.displayName || n.name)); | |
| }, O.mark = function (t) { | |
| return Object.setPrototypeOf ? Object.setPrototypeOf(t, u) : (t.__proto__ = u, x in t || (t[x] = "GeneratorFunction")), t.prototype = Object.create(L), t; | |
| }, O.awrap = function (t) { | |
| return { __await: t }; | |
| }, a(c.prototype), c.prototype[b] = function () { | |
| return this; | |
| }, O.AsyncIterator = c, O.async = function (t, n, r, i) { | |
| var o = new c(e(t, n, r, i));return O.isGeneratorFunction(n) ? o : o.next().then(function (t) { | |
| return t.done ? t.value : o.next(); | |
| }); | |
| }, a(L), L[x] = "Generator", L[w] = function () { | |
| return this; | |
| }, L.toString = function () { | |
| return "[object Generator]"; | |
| }, O.keys = function (t) { | |
| var n = [];for (var e in t) { | |
| n.push(e); | |
| }return n.reverse(), function e() { | |
| for (; n.length;) { | |
| var r = n.pop();if (r in t) return e.value = r, e.done = !1, e; | |
| }return e.done = !0, e; | |
| }; | |
| }, O.values = v, p.prototype = { constructor: p, reset: function reset(t) { | |
| if (this.prev = 0, this.next = 0, this.sent = this._sent = y, this.done = !1, this.delegate = null, this.method = "next", this.arg = y, this.tryEntries.forEach(h), !t) for (var n in this) { | |
| "t" === n.charAt(0) && m.call(this, n) && !isNaN(+n.slice(1)) && (this[n] = y); | |
| } | |
| }, stop: function stop() { | |
| this.done = !0;var t = this.tryEntries[0], | |
| n = t.completion;if ("throw" === n.type) throw n.arg;return this.rval; | |
| }, dispatchException: function dispatchException(t) { | |
| function n(n, r) { | |
| return o.type = "throw", o.arg = t, e.next = n, r && (e.method = "next", e.arg = y), !!r; | |
| }if (this.done) throw t;for (var e = this, r = this.tryEntries.length - 1; r >= 0; --r) { | |
| var i = this.tryEntries[r], | |
| o = i.completion;if ("root" === i.tryLoc) return n("end");if (i.tryLoc <= this.prev) { | |
| var u = m.call(i, "catchLoc"), | |
| a = m.call(i, "finallyLoc");if (u && a) { | |
| if (this.prev < i.catchLoc) return n(i.catchLoc, !0);if (this.prev < i.finallyLoc) return n(i.finallyLoc); | |
| } else if (u) { | |
| if (this.prev < i.catchLoc) return n(i.catchLoc, !0); | |
| } else { | |
| if (!a) throw new Error("try statement without catch or finally");if (this.prev < i.finallyLoc) return n(i.finallyLoc); | |
| } | |
| } | |
| } | |
| }, abrupt: function abrupt(t, n) { | |
| for (var e = this.tryEntries.length - 1; e >= 0; --e) { | |
| var r = this.tryEntries[e];if (r.tryLoc <= this.prev && m.call(r, "finallyLoc") && this.prev < r.finallyLoc) { | |
| var i = r;break; | |
| } | |
| }i && ("break" === t || "continue" === t) && i.tryLoc <= n && n <= i.finallyLoc && (i = null);var o = i ? i.completion : {};return o.type = t, o.arg = n, i ? (this.method = "next", this.next = i.finallyLoc, A) : this.complete(o); | |
| }, complete: function complete(t, n) { | |
| if ("throw" === t.type) throw t.arg;return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && n && (this.next = n), A; | |
| }, finish: function finish(t) { | |
| for (var n = this.tryEntries.length - 1; n >= 0; --n) { | |
| var e = this.tryEntries[n];if (e.finallyLoc === t) return this.complete(e.completion, e.afterLoc), h(e), A; | |
| } | |
| }, catch: function _catch(t) { | |
| for (var n = this.tryEntries.length - 1; n >= 0; --n) { | |
| var e = this.tryEntries[n];if (e.tryLoc === t) { | |
| var r = e.completion;if ("throw" === r.type) { | |
| var i = r.arg;h(e); | |
| }return i; | |
| } | |
| }throw new Error("illegal catch attempt"); | |
| }, delegateYield: function delegateYield(t, n, e) { | |
| return this.delegate = { iterator: v(t), resultName: n, nextLoc: e }, "next" === this.method && (this.arg = y), A; | |
| } }; | |
| }(function () { | |
| return this; | |
| }() || Function("return this")()); | |
| }, function (t, n, e) { | |
| e(217), e(219), e(220), e(221), e(222), e(223), e(224), e(225), e(226), e(227), e(228), e(229), e(230), e(231), e(232), e(233), e(235), e(236), e(237), e(238), e(239), e(240), e(241), e(242), e(243), e(244), e(245), e(246), e(247), e(248), e(249), e(250), e(251), e(252), e(253), e(254), e(255), e(256), e(257), e(258), e(259), e(260), e(261), e(262), e(263), e(264), e(265), e(266), e(267), e(268), e(269), e(270), e(271), e(272), e(273), e(274), e(275), e(276), e(277), e(278), e(279), e(280), e(281), e(282), e(283), e(284), e(285), e(286), e(287), e(288), e(289), e(290), e(291), e(292), e(293), e(294), e(295), e(297), e(298), e(300), e(301), e(302), e(303), e(304), e(305), e(306), e(308), e(309), e(310), e(311), e(312), e(313), e(314), e(315), e(316), e(317), e(318), e(319), e(320), e(122), e(321), e(322), e(172), e(323), e(324), e(325), e(326), e(327), e(175), e(177), e(178), e(328), e(329), e(330), e(331), e(332), e(333), e(334), e(335), e(336), e(337), e(338), e(339), e(340), e(341), e(342), e(343), e(344), e(345), e(346), e(347), e(348), e(349), e(350), e(351), e(352), e(353), e(354), e(355), e(356), e(357), e(358), e(359), e(360), e(361), e(362), e(363), e(364), e(365), e(366), e(367), e(368), e(369), e(370), e(371), e(372), e(373), e(374), e(375), e(376), e(377), e(378), e(379), e(380), e(381), e(382), e(383), e(384), e(385), e(386), e(387), e(388), e(389), e(390), e(391), e(392), e(393), e(394), e(395), e(396), e(397), e(398), e(399), e(400), e(401), e(402), e(403), e(404), e(405), e(406), e(407), e(408), e(409), e(410), e(411), e(412), t.exports = e(34); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(2), | |
| i = e(15), | |
| o = e(7), | |
| u = e(0), | |
| a = e(17), | |
| c = e(38).KEY, | |
| s = e(3), | |
| f = e(75), | |
| l = e(55), | |
| h = e(42), | |
| p = e(5), | |
| v = e(155), | |
| d = e(102), | |
| y = e(218), | |
| g = e(78), | |
| m = e(1), | |
| _ = e(4), | |
| w = e(19), | |
| b = e(27), | |
| x = e(41), | |
| S = e(46), | |
| O = e(158), | |
| P = e(20), | |
| k = e(8), | |
| E = e(44), | |
| j = P.f, | |
| A = k.f, | |
| M = O.f, | |
| _T = r.Symbol, | |
| F = r.JSON, | |
| L = F && F.stringify, | |
| I = "prototype", | |
| N = p("_hidden"), | |
| D = p("toPrimitive"), | |
| R = {}.propertyIsEnumerable, | |
| C = f("symbol-registry"), | |
| U = f("symbols"), | |
| G = f("op-symbols"), | |
| W = Object[I], | |
| V = "function" == typeof _T, | |
| B = r.QObject, | |
| q = !B || !B[I] || !B[I].findChild, | |
| z = o && s(function () { | |
| return 7 != S(A({}, "a", { get: function get() { | |
| return A(this, "a", { value: 7 }).a; | |
| } })).a; | |
| }) ? function (t, n, e) { | |
| var r = j(W, n);r && delete W[n], A(t, n, e), r && t !== W && A(W, n, r); | |
| } : A, | |
| H = function H(t) { | |
| var n = U[t] = S(_T[I]);return n._k = t, n; | |
| }, | |
| J = V && "symbol" == (0, _typeof3.default)(_T.iterator) ? function (t) { | |
| return "symbol" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)); | |
| } : function (t) { | |
| return t instanceof _T; | |
| }, | |
| K = function K(t, n, e) { | |
| return t === W && K(G, n, e), m(t), n = b(n, !0), m(e), i(U, n) ? (e.enumerable ? (i(t, N) && t[N][n] && (t[N][n] = !1), e = S(e, { enumerable: x(0, !1) })) : (i(t, N) || A(t, N, x(1, {})), t[N][n] = !0), z(t, n, e)) : A(t, n, e); | |
| }, | |
| Y = function Y(t, n) { | |
| m(t);for (var e, r = y(n = w(n)), i = 0, o = r.length; o > i;) { | |
| K(t, e = r[i++], n[e]); | |
| }return t; | |
| }, | |
| $ = function $(t, n) { | |
| return void 0 === n ? S(t) : Y(S(t), n); | |
| }, | |
| Q = function Q(t) { | |
| var n = R.call(this, t = b(t, !0));return !(this === W && i(U, t) && !i(G, t)) && (!(n || !i(this, t) || !i(U, t) || i(this, N) && this[N][t]) || n); | |
| }, | |
| X = function X(t, n) { | |
| if (t = w(t), n = b(n, !0), t !== W || !i(U, n) || i(G, n)) { | |
| var e = j(t, n);return !e || !i(U, n) || i(t, N) && t[N][n] || (e.enumerable = !0), e; | |
| } | |
| }, | |
| Z = function Z(t) { | |
| for (var n, e = M(w(t)), r = [], o = 0; e.length > o;) { | |
| i(U, n = e[o++]) || n == N || n == c || r.push(n); | |
| }return r; | |
| }, | |
| tt = function tt(t) { | |
| for (var n, e = t === W, r = M(e ? G : w(t)), o = [], u = 0; r.length > u;) { | |
| !i(U, n = r[u++]) || e && !i(W, n) || o.push(U[n]); | |
| }return o; | |
| };V || (_T = function T() { | |
| if (this instanceof _T) throw TypeError("Symbol is not a constructor!");var t = h(arguments.length > 0 ? arguments[0] : void 0), | |
| n = function n(e) { | |
| this === W && n.call(G, e), i(this, N) && i(this[N], t) && (this[N][t] = !1), z(this, t, x(1, e)); | |
| };return o && q && z(W, t, { configurable: !0, set: n }), H(t); | |
| }, a(_T[I], "toString", function () { | |
| return this._k; | |
| }), P.f = X, k.f = K, e(47).f = O.f = Z, e(64).f = Q, e(77).f = tt, o && !e(43) && a(W, "propertyIsEnumerable", Q, !0), v.f = function (t) { | |
| return H(p(t)); | |
| }), u(u.G + u.W + u.F * !V, { Symbol: _T });for (var nt = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), et = 0; nt.length > et;) { | |
| p(nt[et++]); | |
| }for (var rt = E(p.store), it = 0; rt.length > it;) { | |
| d(rt[it++]); | |
| }u(u.S + u.F * !V, "Symbol", { for: function _for(t) { | |
| return i(C, t += "") ? C[t] : C[t] = _T(t); | |
| }, keyFor: function keyFor(t) { | |
| if (!J(t)) throw TypeError(t + " is not a symbol!");for (var n in C) { | |
| if (C[n] === t) return n; | |
| } | |
| }, useSetter: function useSetter() { | |
| q = !0; | |
| }, useSimple: function useSimple() { | |
| q = !1; | |
| } }), u(u.S + u.F * !V, "Object", { create: $, defineProperty: K, defineProperties: Y, getOwnPropertyDescriptor: X, getOwnPropertyNames: Z, getOwnPropertySymbols: tt }), F && u(u.S + u.F * (!V || s(function () { | |
| var t = _T();return "[null]" != L([t]) || "{}" != L({ a: t }) || "{}" != L(Object(t)); | |
| })), "JSON", { stringify: function stringify(t) { | |
| for (var n, e, r = [t], i = 1; arguments.length > i;) { | |
| r.push(arguments[i++]); | |
| }if (e = n = r[1], (_(n) || void 0 !== t) && !J(t)) return g(n) || (n = function n(t, _n3) { | |
| if ("function" == typeof e && (_n3 = e.call(this, t, _n3)), !J(_n3)) return _n3; | |
| }), r[1] = n, L.apply(F, r); | |
| } }), _T[I][D] || e(16)(_T[I], D, _T[I].valueOf), l(_T, "Symbol"), l(Math, "Math", !0), l(r.JSON, "JSON", !0); | |
| }, function (t, n, e) { | |
| var r = e(44), | |
| i = e(77), | |
| o = e(64);t.exports = function (t) { | |
| var n = r(t), | |
| e = i.f;if (e) for (var u, a = e(t), c = o.f, s = 0; a.length > s;) { | |
| c.call(t, u = a[s++]) && n.push(u); | |
| }return n; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Object", { create: e(46) }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S + r.F * !e(7), "Object", { defineProperty: e(8).f }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S + r.F * !e(7), "Object", { defineProperties: e(157) }); | |
| }, function (t, n, e) { | |
| var r = e(19), | |
| i = e(20).f;e(30)("getOwnPropertyDescriptor", function () { | |
| return function (t, n) { | |
| return i(r(t), n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(10), | |
| i = e(21);e(30)("getPrototypeOf", function () { | |
| return function (t) { | |
| return i(r(t)); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(10), | |
| i = e(44);e(30)("keys", function () { | |
| return function (t) { | |
| return i(r(t)); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(30)("getOwnPropertyNames", function () { | |
| return e(158).f; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(38).onFreeze;e(30)("freeze", function (t) { | |
| return function (n) { | |
| return t && r(n) ? t(i(n)) : n; | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(38).onFreeze;e(30)("seal", function (t) { | |
| return function (n) { | |
| return t && r(n) ? t(i(n)) : n; | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(38).onFreeze;e(30)("preventExtensions", function (t) { | |
| return function (n) { | |
| return t && r(n) ? t(i(n)) : n; | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(4);e(30)("isFrozen", function (t) { | |
| return function (n) { | |
| return !r(n) || !!t && t(n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(4);e(30)("isSealed", function (t) { | |
| return function (n) { | |
| return !r(n) || !!t && t(n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(4);e(30)("isExtensible", function (t) { | |
| return function (n) { | |
| return !!r(n) && (!t || t(n)); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S + r.F, "Object", { assign: e(159) }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Object", { is: e(234) }); | |
| }, function (t, n) { | |
| t.exports = Object.is || function (t, n) { | |
| return t === n ? 0 !== t || 1 / t == 1 / n : t != t && n != n; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Object", { setPrototypeOf: e(106).set }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(65), | |
| i = {};i[e(5)("toStringTag")] = "z", i + "" != "[object z]" && e(17)(Object.prototype, "toString", function () { | |
| return "[object " + r(this) + "]"; | |
| }, !0); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.P, "Function", { bind: e(160) }); | |
| }, function (t, n, e) { | |
| var r = e(8).f, | |
| i = Function.prototype, | |
| o = /^\s*function ([^ (]*)/, | |
| u = "name";u in i || e(7) && r(i, u, { configurable: !0, get: function get() { | |
| try { | |
| return ("" + this).match(o)[1]; | |
| } catch (t) { | |
| return ""; | |
| } | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(4), | |
| i = e(21), | |
| o = e(5)("hasInstance"), | |
| u = Function.prototype;o in u || e(8).f(u, o, { value: function value(t) { | |
| if ("function" != typeof this || !r(t)) return !1;if (!r(this.prototype)) return t instanceof this;for (; t = i(t);) { | |
| if (this.prototype === t) return !0; | |
| }return !1; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(162);r(r.G + r.F * (parseInt != i), { parseInt: i }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(163);r(r.G + r.F * (parseFloat != i), { parseFloat: i }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(2), | |
| i = e(15), | |
| o = e(23), | |
| u = e(108), | |
| a = e(27), | |
| c = e(3), | |
| s = e(47).f, | |
| f = e(20).f, | |
| l = e(8).f, | |
| h = e(56).trim, | |
| p = "Number", | |
| _v = r[p], | |
| d = _v, | |
| y = _v.prototype, | |
| g = o(e(46)(y)) == p, | |
| m = "trim" in String.prototype, | |
| _ = function _(t) { | |
| var n = a(t, !1);if ("string" == typeof n && n.length > 2) { | |
| n = m ? n.trim() : h(n, 3);var e, | |
| r, | |
| i, | |
| o = n.charCodeAt(0);if (43 === o || 45 === o) { | |
| if (88 === (e = n.charCodeAt(2)) || 120 === e) return NaN; | |
| } else if (48 === o) { | |
| switch (n.charCodeAt(1)) {case 66:case 98: | |
| r = 2, i = 49;break;case 79:case 111: | |
| r = 8, i = 55;break;default: | |
| return +n;}for (var u, c = n.slice(2), s = 0, f = c.length; s < f; s++) { | |
| if ((u = c.charCodeAt(s)) < 48 || u > i) return NaN; | |
| }return parseInt(c, r); | |
| } | |
| }return +n; | |
| };if (!_v(" 0o1") || !_v("0b1") || _v("+0x1")) { | |
| _v = function v(t) { | |
| var n = arguments.length < 1 ? 0 : t, | |
| e = this;return e instanceof _v && (g ? c(function () { | |
| y.valueOf.call(e); | |
| }) : o(e) != p) ? u(new d(_(n)), e, _v) : _(n); | |
| };for (var w, b = e(7) ? s(d) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), x = 0; b.length > x; x++) { | |
| i(d, w = b[x]) && !i(_v, w) && l(_v, w, f(d, w)); | |
| }_v.prototype = y, y.constructor = _v, e(17)(r, p, _v); | |
| } | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(29), | |
| o = e(164), | |
| u = e(109), | |
| a = 1..toFixed, | |
| c = Math.floor, | |
| s = [0, 0, 0, 0, 0, 0], | |
| f = "Number.toFixed: incorrect invocation!", | |
| l = "0", | |
| h = function h(t, n) { | |
| for (var e = -1, r = n; ++e < 6;) { | |
| r += t * s[e], s[e] = r % 1e7, r = c(r / 1e7); | |
| } | |
| }, | |
| p = function p(t) { | |
| for (var n = 6, e = 0; --n >= 0;) { | |
| e += s[n], s[n] = c(e / t), e = e % t * 1e7; | |
| } | |
| }, | |
| v = function v() { | |
| for (var t = 6, n = ""; --t >= 0;) { | |
| if ("" !== n || 0 === t || 0 !== s[t]) { | |
| var e = String(s[t]);n = "" === n ? e : n + u.call(l, 7 - e.length) + e; | |
| } | |
| }return n; | |
| }, | |
| d = function d(t, n, e) { | |
| return 0 === n ? e : n % 2 == 1 ? d(t, n - 1, e * t) : d(t * t, n / 2, e); | |
| }, | |
| y = function y(t) { | |
| for (var n = 0, e = t; e >= 4096;) { | |
| n += 12, e /= 4096; | |
| }for (; e >= 2;) { | |
| n += 1, e /= 2; | |
| }return n; | |
| };r(r.P + r.F * (!!a && ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== 0xde0b6b3a7640080.toFixed(0)) || !e(3)(function () { | |
| a.call({}); | |
| })), "Number", { toFixed: function toFixed(t) { | |
| var n, | |
| e, | |
| r, | |
| a, | |
| c = o(this, f), | |
| s = i(t), | |
| g = "", | |
| m = l;if (s < 0 || s > 20) throw RangeError(f);if (c != c) return "NaN";if (c <= -1e21 || c >= 1e21) return String(c);if (c < 0 && (g = "-", c = -c), c > 1e-21) if (n = y(c * d(2, 69, 1)) - 69, e = n < 0 ? c * d(2, -n, 1) : c / d(2, n, 1), e *= 4503599627370496, (n = 52 - n) > 0) { | |
| for (h(0, e), r = s; r >= 7;) { | |
| h(1e7, 0), r -= 7; | |
| }for (h(d(10, r, 1), 0), r = n - 1; r >= 23;) { | |
| p(1 << 23), r -= 23; | |
| }p(1 << r), h(1, 1), p(2), m = v(); | |
| } else h(0, e), h(1 << -n, 0), m = v() + u.call(l, s);return s > 0 ? (a = m.length, m = g + (a <= s ? "0." + u.call(l, s - a) + m : m.slice(0, a - s) + "." + m.slice(a - s))) : m = g + m, m; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(3), | |
| o = e(164), | |
| u = 1..toPrecision;r(r.P + r.F * (i(function () { | |
| return "1" !== u.call(1, void 0); | |
| }) || !i(function () { | |
| u.call({}); | |
| })), "Number", { toPrecision: function toPrecision(t) { | |
| var n = o(this, "Number#toPrecision: incorrect invocation!");return void 0 === t ? u.call(n) : u.call(n, t); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Number", { EPSILON: Math.pow(2, -52) }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(2).isFinite;r(r.S, "Number", { isFinite: function isFinite(t) { | |
| return "number" == typeof t && i(t); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Number", { isInteger: e(165) }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Number", { isNaN: function isNaN(t) { | |
| return t != t; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(165), | |
| o = Math.abs;r(r.S, "Number", { isSafeInteger: function isSafeInteger(t) { | |
| return i(t) && o(t) <= 9007199254740991; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Number", { MAX_SAFE_INTEGER: 9007199254740991 }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Number", { MIN_SAFE_INTEGER: -9007199254740991 }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(163);r(r.S + r.F * (Number.parseFloat != i), "Number", { parseFloat: i }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(162);r(r.S + r.F * (Number.parseInt != i), "Number", { parseInt: i }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(166), | |
| o = Math.sqrt, | |
| u = Math.acosh;r(r.S + r.F * !(u && 710 == Math.floor(u(Number.MAX_VALUE)) && u(1 / 0) == 1 / 0), "Math", { acosh: function acosh(t) { | |
| return (t = +t) < 1 ? NaN : t > 94906265.62425156 ? Math.log(t) + Math.LN2 : i(t - 1 + o(t - 1) * o(t + 1)); | |
| } }); | |
| }, function (t, n, e) { | |
| function r(t) { | |
| return isFinite(t = +t) && 0 != t ? t < 0 ? -r(-t) : Math.log(t + Math.sqrt(t * t + 1)) : t; | |
| }var i = e(0), | |
| o = Math.asinh;i(i.S + i.F * !(o && 1 / o(0) > 0), "Math", { asinh: r }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = Math.atanh;r(r.S + r.F * !(i && 1 / i(-0) < 0), "Math", { atanh: function atanh(t) { | |
| return 0 == (t = +t) ? t : Math.log((1 + t) / (1 - t)) / 2; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(110);r(r.S, "Math", { cbrt: function cbrt(t) { | |
| return i(t = +t) * Math.pow(Math.abs(t), 1 / 3); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { clz32: function clz32(t) { | |
| return (t >>>= 0) ? 31 - Math.floor(Math.log(t + .5) * Math.LOG2E) : 32; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = Math.exp;r(r.S, "Math", { cosh: function cosh(t) { | |
| return (i(t = +t) + i(-t)) / 2; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(111);r(r.S + r.F * (i != Math.expm1), "Math", { expm1: i }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { fround: e(167) }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = Math.abs;r(r.S, "Math", { hypot: function hypot(t, n) { | |
| for (var e, r, o = 0, u = 0, a = arguments.length, c = 0; u < a;) { | |
| e = i(arguments[u++]), c < e ? (r = c / e, o = o * r * r + 1, c = e) : e > 0 ? (r = e / c, o += r * r) : o += e; | |
| }return c === 1 / 0 ? 1 / 0 : c * Math.sqrt(o); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = Math.imul;r(r.S + r.F * e(3)(function () { | |
| return -5 != i(4294967295, 5) || 2 != i.length; | |
| }), "Math", { imul: function imul(t, n) { | |
| var e = 65535, | |
| r = +t, | |
| i = +n, | |
| o = e & r, | |
| u = e & i;return 0 | o * u + ((e & r >>> 16) * u + o * (e & i >>> 16) << 16 >>> 0); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { log10: function log10(t) { | |
| return Math.log(t) * Math.LOG10E; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { log1p: e(166) }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { log2: function log2(t) { | |
| return Math.log(t) / Math.LN2; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { sign: e(110) }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(111), | |
| o = Math.exp;r(r.S + r.F * e(3)(function () { | |
| return -2e-17 != !Math.sinh(-2e-17); | |
| }), "Math", { sinh: function sinh(t) { | |
| return Math.abs(t = +t) < 1 ? (i(t) - i(-t)) / 2 : (o(t - 1) - o(-t - 1)) * (Math.E / 2); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(111), | |
| o = Math.exp;r(r.S, "Math", { tanh: function tanh(t) { | |
| var n = i(t = +t), | |
| e = i(-t);return n == 1 / 0 ? 1 : e == 1 / 0 ? -1 : (n - e) / (o(t) + o(-t)); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { trunc: function trunc(t) { | |
| return (t > 0 ? Math.floor : Math.ceil)(t); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(45), | |
| o = String.fromCharCode, | |
| u = String.fromCodePoint;r(r.S + r.F * (!!u && 1 != u.length), "String", { fromCodePoint: function fromCodePoint(t) { | |
| for (var n, e = [], r = arguments.length, u = 0; r > u;) { | |
| if (n = +arguments[u++], i(n, 1114111) !== n) throw RangeError(n + " is not a valid code point");e.push(n < 65536 ? o(n) : o(55296 + ((n -= 65536) >> 10), n % 1024 + 56320)); | |
| }return e.join(""); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(19), | |
| o = e(9);r(r.S, "String", { raw: function raw(t) { | |
| for (var n = i(t.raw), e = o(n.length), r = arguments.length, u = [], a = 0; e > a;) { | |
| u.push(String(n[a++])), a < r && u.push(String(arguments[a])); | |
| }return u.join(""); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(56)("trim", function (t) { | |
| return function () { | |
| return t(this, 3); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(112)(!0);e(113)(String, "String", function (t) { | |
| this._t = String(t), this._i = 0; | |
| }, function () { | |
| var t, | |
| n = this._t, | |
| e = this._i;return e >= n.length ? { value: void 0, done: !0 } : (t = r(n, e), this._i += t.length, { value: t, done: !1 }); | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(112)(!1);r(r.P, "String", { codePointAt: function codePointAt(t) { | |
| return i(this, t); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(9), | |
| o = e(115), | |
| u = "endsWith", | |
| a = ""[u];r(r.P + r.F * e(116)(u), "String", { endsWith: function endsWith(t) { | |
| var n = o(this, t, u), | |
| e = arguments.length > 1 ? arguments[1] : void 0, | |
| r = i(n.length), | |
| c = void 0 === e ? r : Math.min(i(e), r), | |
| s = String(t);return a ? a.call(n, s, c) : n.slice(c - s.length, c) === s; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(115), | |
| o = "includes";r(r.P + r.F * e(116)(o), "String", { includes: function includes(t) { | |
| return !!~i(this, t, o).indexOf(t, arguments.length > 1 ? arguments[1] : void 0); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.P, "String", { repeat: e(109) }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(9), | |
| o = e(115), | |
| u = "startsWith", | |
| a = ""[u];r(r.P + r.F * e(116)(u), "String", { startsWith: function startsWith(t) { | |
| var n = o(this, t, u), | |
| e = i(Math.min(arguments.length > 1 ? arguments[1] : void 0, n.length)), | |
| r = String(t);return a ? a.call(n, r, e) : n.slice(e, e + r.length) === r; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("anchor", function (t) { | |
| return function (n) { | |
| return t(this, "a", "name", n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("big", function (t) { | |
| return function () { | |
| return t(this, "big", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("blink", function (t) { | |
| return function () { | |
| return t(this, "blink", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("bold", function (t) { | |
| return function () { | |
| return t(this, "b", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("fixed", function (t) { | |
| return function () { | |
| return t(this, "tt", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("fontcolor", function (t) { | |
| return function (n) { | |
| return t(this, "font", "color", n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("fontsize", function (t) { | |
| return function (n) { | |
| return t(this, "font", "size", n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("italics", function (t) { | |
| return function () { | |
| return t(this, "i", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("link", function (t) { | |
| return function (n) { | |
| return t(this, "a", "href", n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("small", function (t) { | |
| return function () { | |
| return t(this, "small", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("strike", function (t) { | |
| return function () { | |
| return t(this, "strike", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("sub", function (t) { | |
| return function () { | |
| return t(this, "sub", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(18)("sup", function (t) { | |
| return function () { | |
| return t(this, "sup", "", ""); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Date", { now: function now() { | |
| return new Date().getTime(); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(10), | |
| o = e(27);r(r.P + r.F * e(3)(function () { | |
| return null !== new Date(NaN).toJSON() || 1 !== Date.prototype.toJSON.call({ toISOString: function toISOString() { | |
| return 1; | |
| } }); | |
| }), "Date", { toJSON: function toJSON(t) { | |
| var n = i(this), | |
| e = o(n);return "number" != typeof e || isFinite(e) ? n.toISOString() : null; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(296);r(r.P + r.F * (Date.prototype.toISOString !== i), "Date", { toISOString: i }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(3), | |
| i = Date.prototype.getTime, | |
| o = Date.prototype.toISOString, | |
| u = function u(t) { | |
| return t > 9 ? t : "0" + t; | |
| };t.exports = r(function () { | |
| return "0385-07-25T07:06:39.999Z" != o.call(new Date(-5e13 - 1)); | |
| }) || !r(function () { | |
| o.call(new Date(NaN)); | |
| }) ? function () { | |
| if (!isFinite(i.call(this))) throw RangeError("Invalid time value");var t = this, | |
| n = t.getUTCFullYear(), | |
| e = t.getUTCMilliseconds(), | |
| r = n < 0 ? "-" : n > 9999 ? "+" : "";return r + ("00000" + Math.abs(n)).slice(r ? -6 : -4) + "-" + u(t.getUTCMonth() + 1) + "-" + u(t.getUTCDate()) + "T" + u(t.getUTCHours()) + ":" + u(t.getUTCMinutes()) + ":" + u(t.getUTCSeconds()) + "." + (e > 99 ? e : "0" + u(e)) + "Z"; | |
| } : o; | |
| }, function (t, n, e) { | |
| var r = Date.prototype, | |
| i = "Invalid Date", | |
| o = "toString", | |
| u = r[o], | |
| a = r.getTime;new Date(NaN) + "" != i && e(17)(r, o, function () { | |
| var t = a.call(this);return t === t ? u.call(this) : i; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(5)("toPrimitive"), | |
| i = Date.prototype;r in i || e(16)(i, r, e(299)); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(1), | |
| i = e(27), | |
| o = "number";t.exports = function (t) { | |
| if ("string" !== t && t !== o && "default" !== t) throw TypeError("Incorrect hint");return i(r(this), t != o); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Array", { isArray: e(78) }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(22), | |
| i = e(0), | |
| o = e(10), | |
| u = e(168), | |
| a = e(117), | |
| c = e(9), | |
| s = e(118), | |
| f = e(119);i(i.S + i.F * !e(80)(function (t) { | |
| Array.from(t); | |
| }), "Array", { from: function from(t) { | |
| var n, | |
| e, | |
| i, | |
| l, | |
| h = o(t), | |
| p = "function" == typeof this ? this : Array, | |
| v = arguments.length, | |
| d = v > 1 ? arguments[1] : void 0, | |
| y = void 0 !== d, | |
| g = 0, | |
| m = f(h);if (y && (d = r(d, v > 2 ? arguments[2] : void 0, 2)), void 0 == m || p == Array && a(m)) for (n = c(h.length), e = new p(n); n > g; g++) { | |
| s(e, g, y ? d(h[g], g) : h[g]); | |
| } else for (l = m.call(h), e = new p(); !(i = l.next()).done; g++) { | |
| s(e, g, y ? u(l, d, [i.value, g], !0) : i.value); | |
| }return e.length = g, e; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(118);r(r.S + r.F * e(3)(function () { | |
| function t() {}return !(Array.of.call(t) instanceof t); | |
| }), "Array", { of: function of() { | |
| for (var t = 0, n = arguments.length, e = new ("function" == typeof this ? this : Array)(n); n > t;) { | |
| i(e, t, arguments[t++]); | |
| }return e.length = n, e; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(19), | |
| o = [].join;r(r.P + r.F * (e(63) != Object || !e(24)(o)), "Array", { join: function join(t) { | |
| return o.call(i(this), void 0 === t ? "," : t); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(105), | |
| o = e(23), | |
| u = e(45), | |
| a = e(9), | |
| c = [].slice;r(r.P + r.F * e(3)(function () { | |
| i && c.call(i); | |
| }), "Array", { slice: function slice(t, n) { | |
| var e = a(this.length), | |
| r = o(this);if (n = void 0 === n ? e : n, "Array" == r) return c.call(this, t, n);for (var i = u(t, e), s = u(n, e), f = a(s - i), l = new Array(f), h = 0; h < f; h++) { | |
| l[h] = "String" == r ? this.charAt(i + h) : this[i + h]; | |
| }return l; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(11), | |
| o = e(10), | |
| u = e(3), | |
| a = [].sort, | |
| c = [1, 2, 3];r(r.P + r.F * (u(function () { | |
| c.sort(void 0); | |
| }) || !u(function () { | |
| c.sort(null); | |
| }) || !e(24)(a)), "Array", { sort: function sort(t) { | |
| return void 0 === t ? a.call(o(this)) : a.call(o(this), i(t)); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(31)(0), | |
| o = e(24)([].forEach, !0);r(r.P + r.F * !o, "Array", { forEach: function forEach(t) { | |
| return i(this, t, arguments[1]); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(4), | |
| i = e(78), | |
| o = e(5)("species");t.exports = function (t) { | |
| var n;return i(t) && (n = t.constructor, "function" != typeof n || n !== Array && !i(n.prototype) || (n = void 0), r(n) && null === (n = n[o]) && (n = void 0)), void 0 === n ? Array : n; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(31)(1);r(r.P + r.F * !e(24)([].map, !0), "Array", { map: function map(t) { | |
| return i(this, t, arguments[1]); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(31)(2);r(r.P + r.F * !e(24)([].filter, !0), "Array", { filter: function filter(t) { | |
| return i(this, t, arguments[1]); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(31)(3);r(r.P + r.F * !e(24)([].some, !0), "Array", { some: function some(t) { | |
| return i(this, t, arguments[1]); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(31)(4);r(r.P + r.F * !e(24)([].every, !0), "Array", { every: function every(t) { | |
| return i(this, t, arguments[1]); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(169);r(r.P + r.F * !e(24)([].reduce, !0), "Array", { reduce: function reduce(t) { | |
| return i(this, t, arguments.length, arguments[1], !1); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(169);r(r.P + r.F * !e(24)([].reduceRight, !0), "Array", { reduceRight: function reduceRight(t) { | |
| return i(this, t, arguments.length, arguments[1], !0); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(76)(!1), | |
| o = [].indexOf, | |
| u = !!o && 1 / [1].indexOf(1, -0) < 0;r(r.P + r.F * (u || !e(24)(o)), "Array", { indexOf: function indexOf(t) { | |
| return u ? o.apply(this, arguments) || 0 : i(this, t, arguments[1]); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(19), | |
| o = e(29), | |
| u = e(9), | |
| a = [].lastIndexOf, | |
| c = !!a && 1 / [1].lastIndexOf(1, -0) < 0;r(r.P + r.F * (c || !e(24)(a)), "Array", { lastIndexOf: function lastIndexOf(t) { | |
| if (c) return a.apply(this, arguments) || 0;var n = i(this), | |
| e = u(n.length), | |
| r = e - 1;for (arguments.length > 1 && (r = Math.min(r, o(arguments[1]))), r < 0 && (r = e + r); r >= 0; r--) { | |
| if (r in n && n[r] === t) return r || 0; | |
| }return -1; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.P, "Array", { copyWithin: e(170) }), e(39)("copyWithin"); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.P, "Array", { fill: e(121) }), e(39)("fill"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(31)(5), | |
| o = "find", | |
| u = !0;o in [] && Array(1)[o](function () { | |
| u = !1; | |
| }), r(r.P + r.F * u, "Array", { find: function find(t) { | |
| return i(this, t, arguments.length > 1 ? arguments[1] : void 0); | |
| } }), e(39)(o); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(31)(6), | |
| o = "findIndex", | |
| u = !0;o in [] && Array(1)[o](function () { | |
| u = !1; | |
| }), r(r.P + r.F * u, "Array", { findIndex: function findIndex(t) { | |
| return i(this, t, arguments.length > 1 ? arguments[1] : void 0); | |
| } }), e(39)(o); | |
| }, function (t, n, e) { | |
| e(48)("Array"); | |
| }, function (t, n, e) { | |
| var r = e(2), | |
| i = e(108), | |
| o = e(8).f, | |
| u = e(47).f, | |
| a = e(79), | |
| c = e(81), | |
| _s3 = r.RegExp, | |
| f = _s3, | |
| l = _s3.prototype, | |
| h = /a/g, | |
| p = /a/g, | |
| v = new _s3(h) !== h;if (e(7) && (!v || e(3)(function () { | |
| return p[e(5)("match")] = !1, _s3(h) != h || _s3(p) == p || "/a/i" != _s3(h, "i"); | |
| }))) { | |
| _s3 = function s(t, n) { | |
| var e = this instanceof _s3, | |
| r = a(t), | |
| o = void 0 === n;return !e && r && t.constructor === _s3 && o ? t : i(v ? new f(r && !o ? t.source : t, n) : f((r = t instanceof _s3) ? t.source : t, r && o ? c.call(t) : n), e ? this : l, _s3); | |
| };for (var d = function d(t) { | |
| (t in _s3) || o(_s3, t, { configurable: !0, get: function get() { | |
| return f[t]; | |
| }, set: function set(n) { | |
| f[t] = n; | |
| } }); | |
| }, y = u(f), g = 0; y.length > g;) { | |
| d(y[g++]); | |
| }l.constructor = _s3, _s3.prototype = l, e(17)(r, "RegExp", _s3); | |
| }e(48)("RegExp"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(172);var r = e(1), | |
| i = e(81), | |
| o = e(7), | |
| u = "toString", | |
| a = /./[u], | |
| c = function c(t) { | |
| e(17)(RegExp.prototype, u, t, !0); | |
| };e(3)(function () { | |
| return "/a/b" != a.call({ source: "a", flags: "b" }); | |
| }) ? c(function () { | |
| var t = r(this);return "/".concat(t.source, "/", "flags" in t ? t.flags : !o && t instanceof RegExp ? i.call(t) : void 0); | |
| }) : a.name != u && c(function () { | |
| return a.call(this); | |
| }); | |
| }, function (t, n, e) { | |
| e(82)("match", 1, function (t, n, e) { | |
| return [function (e) { | |
| "use strict"; | |
| var r = t(this), | |
| i = void 0 == e ? void 0 : e[n];return void 0 !== i ? i.call(e, r) : new RegExp(e)[n](String(r)); | |
| }, e]; | |
| }); | |
| }, function (t, n, e) { | |
| e(82)("replace", 2, function (t, n, e) { | |
| return [function (r, i) { | |
| "use strict"; | |
| var o = t(this), | |
| u = void 0 == r ? void 0 : r[n];return void 0 !== u ? u.call(r, o, i) : e.call(String(o), r, i); | |
| }, e]; | |
| }); | |
| }, function (t, n, e) { | |
| e(82)("search", 1, function (t, n, e) { | |
| return [function (e) { | |
| "use strict"; | |
| var r = t(this), | |
| i = void 0 == e ? void 0 : e[n];return void 0 !== i ? i.call(e, r) : new RegExp(e)[n](String(r)); | |
| }, e]; | |
| }); | |
| }, function (t, n, e) { | |
| e(82)("split", 2, function (t, n, r) { | |
| "use strict"; | |
| var i = e(79), | |
| o = r, | |
| u = [].push, | |
| a = "split", | |
| c = "length", | |
| s = "lastIndex";if ("c" == "abbc"[a](/(b)*/)[1] || 4 != "test"[a](/(?:)/, -1)[c] || 2 != "ab"[a](/(?:ab)*/)[c] || 4 != "."[a](/(.?)(.?)/)[c] || "."[a](/()()/)[c] > 1 || ""[a](/.?/)[c]) { | |
| var f = void 0 === /()??/.exec("")[1];r = function r(t, n) { | |
| var e = String(this);if (void 0 === t && 0 === n) return [];if (!i(t)) return o.call(e, t, n);var r, | |
| a, | |
| l, | |
| h, | |
| p, | |
| v = [], | |
| d = (t.ignoreCase ? "i" : "") + (t.multiline ? "m" : "") + (t.unicode ? "u" : "") + (t.sticky ? "y" : ""), | |
| y = 0, | |
| g = void 0 === n ? 4294967295 : n >>> 0, | |
| m = new RegExp(t.source, d + "g");for (f || (r = new RegExp("^" + m.source + "$(?!\\s)", d)); (a = m.exec(e)) && !((l = a.index + a[0][c]) > y && (v.push(e.slice(y, a.index)), !f && a[c] > 1 && a[0].replace(r, function () { | |
| for (p = 1; p < arguments[c] - 2; p++) { | |
| void 0 === arguments[p] && (a[p] = void 0); | |
| } | |
| }), a[c] > 1 && a.index < e[c] && u.apply(v, a.slice(1)), h = a[0][c], y = l, v[c] >= g));) { | |
| m[s] === a.index && m[s]++; | |
| }return y === e[c] ? !h && m.test("") || v.push("") : v.push(e.slice(y)), v[c] > g ? v.slice(0, g) : v; | |
| }; | |
| } else "0"[a](void 0, 0)[c] && (r = function r(t, n) { | |
| return void 0 === t && 0 === n ? [] : o.call(this, t, n); | |
| });return [function (e, i) { | |
| var o = t(this), | |
| u = void 0 == e ? void 0 : e[n];return void 0 !== u ? u.call(e, o, i) : r.call(String(o), e, i); | |
| }, r]; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r, | |
| i, | |
| o, | |
| u, | |
| a = e(43), | |
| c = e(2), | |
| s = e(22), | |
| f = e(65), | |
| l = e(0), | |
| h = e(4), | |
| p = e(11), | |
| v = e(49), | |
| d = e(50), | |
| y = e(83), | |
| g = e(123).set, | |
| m = e(124)(), | |
| _ = e(125), | |
| w = e(173), | |
| b = e(174), | |
| x = "Promise", | |
| S = c.TypeError, | |
| O = c.process, | |
| _P = c[x], | |
| k = "process" == f(O), | |
| E = function E() {}, | |
| j = i = _.f, | |
| A = !!function () { | |
| try { | |
| var t = _P.resolve(1), | |
| n = (t.constructor = {})[e(5)("species")] = function (t) { | |
| t(E, E); | |
| };return (k || "function" == typeof PromiseRejectionEvent) && t.then(E) instanceof n; | |
| } catch (t) {} | |
| }(), | |
| M = function M(t) { | |
| var n;return !(!h(t) || "function" != typeof (n = t.then)) && n; | |
| }, | |
| T = function T(t, n) { | |
| if (!t._n) { | |
| t._n = !0;var e = t._c;m(function () { | |
| for (var r = t._v, i = 1 == t._s, o = 0, u = function u(n) { | |
| var e, | |
| o, | |
| u = i ? n.ok : n.fail, | |
| a = n.resolve, | |
| c = n.reject, | |
| s = n.domain;try { | |
| u ? (i || (2 == t._h && I(t), t._h = 1), !0 === u ? e = r : (s && s.enter(), e = u(r), s && s.exit()), e === n.promise ? c(S("Promise-chain cycle")) : (o = M(e)) ? o.call(e, a, c) : a(e)) : c(r); | |
| } catch (t) { | |
| c(t); | |
| } | |
| }; e.length > o;) { | |
| u(e[o++]); | |
| }t._c = [], t._n = !1, n && !t._h && F(t); | |
| }); | |
| } | |
| }, | |
| F = function F(t) { | |
| g.call(c, function () { | |
| var n, | |
| e, | |
| r, | |
| i = t._v, | |
| o = L(t);if (o && (n = w(function () { | |
| k ? O.emit("unhandledRejection", i, t) : (e = c.onunhandledrejection) ? e({ promise: t, reason: i }) : (r = c.console) && r.error && r.error("Unhandled promise rejection", i); | |
| }), t._h = k || L(t) ? 2 : 1), t._a = void 0, o && n.e) throw n.v; | |
| }); | |
| }, | |
| L = function L(t) { | |
| return 1 !== t._h && 0 === (t._a || t._c).length; | |
| }, | |
| I = function I(t) { | |
| g.call(c, function () { | |
| var n;k ? O.emit("rejectionHandled", t) : (n = c.onrejectionhandled) && n({ promise: t, reason: t._v }); | |
| }); | |
| }, | |
| N = function N(t) { | |
| var n = this;n._d || (n._d = !0, n = n._w || n, n._v = t, n._s = 2, n._a || (n._a = n._c.slice()), T(n, !0)); | |
| }, | |
| D = function D(t) { | |
| var n, | |
| e = this;if (!e._d) { | |
| e._d = !0, e = e._w || e;try { | |
| if (e === t) throw S("Promise can't be resolved itself");(n = M(t)) ? m(function () { | |
| var r = { _w: e, _d: !1 };try { | |
| n.call(t, s(D, r, 1), s(N, r, 1)); | |
| } catch (t) { | |
| N.call(r, t); | |
| } | |
| }) : (e._v = t, e._s = 1, T(e, !1)); | |
| } catch (t) { | |
| N.call({ _w: e, _d: !1 }, t); | |
| } | |
| } | |
| };A || (_P = function P(t) { | |
| v(this, _P, x, "_h"), p(t), r.call(this);try { | |
| t(s(D, this, 1), s(N, this, 1)); | |
| } catch (t) { | |
| N.call(this, t); | |
| } | |
| }, r = function r(t) { | |
| this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this._n = !1; | |
| }, r.prototype = e(51)(_P.prototype, { then: function then(t, n) { | |
| var e = j(y(this, _P));return e.ok = "function" != typeof t || t, e.fail = "function" == typeof n && n, e.domain = k ? O.domain : void 0, this._c.push(e), this._a && this._a.push(e), this._s && T(this, !1), e.promise; | |
| }, catch: function _catch(t) { | |
| return this.then(void 0, t); | |
| } }), o = function o() { | |
| var t = new r();this.promise = t, this.resolve = s(D, t, 1), this.reject = s(N, t, 1); | |
| }, _.f = j = function j(t) { | |
| return t === _P || t === u ? new o(t) : i(t); | |
| }), l(l.G + l.W + l.F * !A, { Promise: _P }), e(55)(_P, x), e(48)(x), u = e(34)[x], l(l.S + l.F * !A, x, { reject: function reject(t) { | |
| var n = j(this);return (0, n.reject)(t), n.promise; | |
| } }), l(l.S + l.F * (a || !A), x, { resolve: function resolve(t) { | |
| return b(a && this === u ? _P : this, t); | |
| } }), l(l.S + l.F * !(A && e(80)(function (t) { | |
| _P.all(t).catch(E); | |
| })), x, { all: function all(t) { | |
| var n = this, | |
| e = j(n), | |
| r = e.resolve, | |
| i = e.reject, | |
| o = w(function () { | |
| var e = [], | |
| o = 0, | |
| u = 1;d(t, !1, function (t) { | |
| var a = o++, | |
| c = !1;e.push(void 0), u++, n.resolve(t).then(function (t) { | |
| c || (c = !0, e[a] = t, --u || r(e)); | |
| }, i); | |
| }), --u || r(e); | |
| });return o.e && i(o.v), e.promise; | |
| }, race: function race(t) { | |
| var n = this, | |
| e = j(n), | |
| r = e.reject, | |
| i = w(function () { | |
| d(t, !1, function (t) { | |
| n.resolve(t).then(e.resolve, r); | |
| }); | |
| });return i.e && r(i.v), e.promise; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(179), | |
| i = e(58), | |
| o = "WeakSet";e(84)(o, function (t) { | |
| return function () { | |
| return t(this, arguments.length > 0 ? arguments[0] : void 0); | |
| }; | |
| }, { add: function add(t) { | |
| return r.def(i(this, o), t, !0); | |
| } }, r, !1, !0); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(85), | |
| o = e(126), | |
| u = e(1), | |
| a = e(45), | |
| c = e(9), | |
| s = e(4), | |
| f = e(2).ArrayBuffer, | |
| l = e(83), | |
| h = o.ArrayBuffer, | |
| p = o.DataView, | |
| v = i.ABV && f.isView, | |
| d = h.prototype.slice, | |
| y = i.VIEW, | |
| g = "ArrayBuffer";r(r.G + r.W + r.F * (f !== h), { ArrayBuffer: h }), r(r.S + r.F * !i.CONSTR, g, { isView: function isView(t) { | |
| return v && v(t) || s(t) && y in t; | |
| } }), r(r.P + r.U + r.F * e(3)(function () { | |
| return !new h(2).slice(1, void 0).byteLength; | |
| }), g, { slice: function slice(t, n) { | |
| if (void 0 !== d && void 0 === n) return d.call(u(this), t);for (var e = u(this).byteLength, r = a(t, e), i = a(void 0 === n ? e : n, e), o = new (l(this, h))(c(i - r)), s = new p(this), f = new p(o), v = 0; r < i;) { | |
| f.setUint8(v++, s.getUint8(r++)); | |
| }return o; | |
| } }), e(48)(g); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.G + r.W + r.F * !e(85).ABV, { DataView: e(126).DataView }); | |
| }, function (t, n, e) { | |
| e(35)("Int8", 1, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(35)("Uint8", 1, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(35)("Uint8", 1, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }, !0); | |
| }, function (t, n, e) { | |
| e(35)("Int16", 2, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(35)("Uint16", 2, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(35)("Int32", 4, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(35)("Uint32", 4, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(35)("Float32", 4, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(35)("Float64", 8, function (t) { | |
| return function (n, e, r) { | |
| return t(this, n, e, r); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(11), | |
| o = e(1), | |
| u = (e(2).Reflect || {}).apply, | |
| a = Function.apply;r(r.S + r.F * !e(3)(function () { | |
| u(function () {}); | |
| }), "Reflect", { apply: function apply(t, n, e) { | |
| var r = i(t), | |
| c = o(e);return u ? u(r, n, c) : a.call(r, n, c); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(46), | |
| o = e(11), | |
| u = e(1), | |
| a = e(4), | |
| c = e(3), | |
| s = e(160), | |
| f = (e(2).Reflect || {}).construct, | |
| l = c(function () { | |
| function t() {}return !(f(function () {}, [], t) instanceof t); | |
| }), | |
| h = !c(function () { | |
| f(function () {}); | |
| });r(r.S + r.F * (l || h), "Reflect", { construct: function construct(t, n) { | |
| o(t), u(n);var e = arguments.length < 3 ? t : o(arguments[2]);if (h && !l) return f(t, n, e);if (t == e) { | |
| switch (n.length) {case 0: | |
| return new t();case 1: | |
| return new t(n[0]);case 2: | |
| return new t(n[0], n[1]);case 3: | |
| return new t(n[0], n[1], n[2]);case 4: | |
| return new t(n[0], n[1], n[2], n[3]);}var r = [null];return r.push.apply(r, n), new (s.apply(t, r))(); | |
| }var c = e.prototype, | |
| p = i(a(c) ? c : Object.prototype), | |
| v = Function.apply.call(t, p, n);return a(v) ? v : p; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(8), | |
| i = e(0), | |
| o = e(1), | |
| u = e(27);i(i.S + i.F * e(3)(function () { | |
| Reflect.defineProperty(r.f({}, 1, { value: 1 }), 1, { value: 2 }); | |
| }), "Reflect", { defineProperty: function defineProperty(t, n, e) { | |
| o(t), n = u(n, !0), o(e);try { | |
| return r.f(t, n, e), !0; | |
| } catch (t) { | |
| return !1; | |
| } | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(20).f, | |
| o = e(1);r(r.S, "Reflect", { deleteProperty: function deleteProperty(t, n) { | |
| var e = i(o(t), n);return !(e && !e.configurable) && delete t[n]; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(1), | |
| o = function o(t) { | |
| this._t = i(t), this._i = 0;var n, | |
| e = this._k = [];for (n in t) { | |
| e.push(n); | |
| } | |
| };e(114)(o, "Object", function () { | |
| var t, | |
| n = this, | |
| e = n._k;do { | |
| if (n._i >= e.length) return { value: void 0, done: !0 }; | |
| } while (!((t = e[n._i++]) in n._t));return { value: t, done: !1 }; | |
| }), r(r.S, "Reflect", { enumerate: function enumerate(t) { | |
| return new o(t); | |
| } }); | |
| }, function (t, n, e) { | |
| function r(t, n) { | |
| var e, | |
| a, | |
| f = arguments.length < 3 ? t : arguments[2];return s(t) === f ? t[n] : (e = i.f(t, n)) ? u(e, "value") ? e.value : void 0 !== e.get ? e.get.call(f) : void 0 : c(a = o(t)) ? r(a, n, f) : void 0; | |
| }var i = e(20), | |
| o = e(21), | |
| u = e(15), | |
| a = e(0), | |
| c = e(4), | |
| s = e(1);a(a.S, "Reflect", { get: r }); | |
| }, function (t, n, e) { | |
| var r = e(20), | |
| i = e(0), | |
| o = e(1);i(i.S, "Reflect", { getOwnPropertyDescriptor: function getOwnPropertyDescriptor(t, n) { | |
| return r.f(o(t), n); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(21), | |
| o = e(1);r(r.S, "Reflect", { getPrototypeOf: function getPrototypeOf(t) { | |
| return i(o(t)); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Reflect", { has: function has(t, n) { | |
| return n in t; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(1), | |
| o = Object.isExtensible;r(r.S, "Reflect", { isExtensible: function isExtensible(t) { | |
| return i(t), !o || o(t); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Reflect", { ownKeys: e(181) }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(1), | |
| o = Object.preventExtensions;r(r.S, "Reflect", { preventExtensions: function preventExtensions(t) { | |
| i(t);try { | |
| return o && o(t), !0; | |
| } catch (t) { | |
| return !1; | |
| } | |
| } }); | |
| }, function (t, n, e) { | |
| function r(t, n, e) { | |
| var c, | |
| h, | |
| p = arguments.length < 4 ? t : arguments[3], | |
| v = o.f(f(t), n);if (!v) { | |
| if (l(h = u(t))) return r(h, n, e, p);v = s(0); | |
| }return a(v, "value") ? !(!1 === v.writable || !l(p)) && (c = o.f(p, n) || s(0), c.value = e, i.f(p, n, c), !0) : void 0 !== v.set && (v.set.call(p, e), !0); | |
| }var i = e(8), | |
| o = e(20), | |
| u = e(21), | |
| a = e(15), | |
| c = e(0), | |
| s = e(41), | |
| f = e(1), | |
| l = e(4);c(c.S, "Reflect", { set: r }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(106);i && r(r.S, "Reflect", { setPrototypeOf: function setPrototypeOf(t, n) { | |
| i.check(t, n);try { | |
| return i.set(t, n), !0; | |
| } catch (t) { | |
| return !1; | |
| } | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(76)(!0);r(r.P, "Array", { includes: function includes(t) { | |
| return i(this, t, arguments.length > 1 ? arguments[1] : void 0); | |
| } }), e(39)("includes"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(182), | |
| o = e(10), | |
| u = e(9), | |
| a = e(11), | |
| c = e(120);r(r.P, "Array", { flatMap: function flatMap(t) { | |
| var n, | |
| e, | |
| r = o(this);return a(t), n = u(r.length), e = c(r, 0), i(e, r, r, n, 0, 1, t, arguments[1]), e; | |
| } }), e(39)("flatMap"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(182), | |
| o = e(10), | |
| u = e(9), | |
| a = e(29), | |
| c = e(120);r(r.P, "Array", { flatten: function flatten() { | |
| var t = arguments[0], | |
| n = o(this), | |
| e = u(n.length), | |
| r = c(n, 0);return i(r, n, n, e, 0, void 0 === t ? 1 : a(t)), r; | |
| } }), e(39)("flatten"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(112)(!0);r(r.P, "String", { at: function at(t) { | |
| return i(this, t); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(183), | |
| o = e(127);r(r.P + r.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(o), "String", { padStart: function padStart(t) { | |
| return i(this, t, arguments.length > 1 ? arguments[1] : void 0, !0); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(183), | |
| o = e(127);r(r.P + r.F * /Version\/10\.\d+(\.\d+)? Safari\//.test(o), "String", { padEnd: function padEnd(t) { | |
| return i(this, t, arguments.length > 1 ? arguments[1] : void 0, !1); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(56)("trimLeft", function (t) { | |
| return function () { | |
| return t(this, 1); | |
| }; | |
| }, "trimStart"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e(56)("trimRight", function (t) { | |
| return function () { | |
| return t(this, 2); | |
| }; | |
| }, "trimEnd"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(28), | |
| o = e(9), | |
| u = e(79), | |
| a = e(81), | |
| c = RegExp.prototype, | |
| s = function s(t, n) { | |
| this._r = t, this._s = n; | |
| };e(114)(s, "RegExp String", function () { | |
| var t = this._r.exec(this._s);return { value: t, done: null === t }; | |
| }), r(r.P, "String", { matchAll: function matchAll(t) { | |
| if (i(this), !u(t)) throw TypeError(t + " is not a regexp!");var n = String(this), | |
| e = "flags" in c ? String(t.flags) : a.call(t), | |
| r = new RegExp(t.source, ~e.indexOf("g") ? e : "g" + e);return r.lastIndex = o(t.lastIndex), new s(r, n); | |
| } }); | |
| }, function (t, n, e) { | |
| e(102)("asyncIterator"); | |
| }, function (t, n, e) { | |
| e(102)("observable"); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(181), | |
| o = e(19), | |
| u = e(20), | |
| a = e(118);r(r.S, "Object", { getOwnPropertyDescriptors: function getOwnPropertyDescriptors(t) { | |
| for (var n, e, r = o(t), c = u.f, s = i(r), f = {}, l = 0; s.length > l;) { | |
| void 0 !== (e = c(r, n = s[l++])) && a(f, n, e); | |
| }return f; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(184)(!1);r(r.S, "Object", { values: function values(t) { | |
| return i(t); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(184)(!0);r(r.S, "Object", { entries: function entries(t) { | |
| return i(t); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(10), | |
| o = e(11), | |
| u = e(8);e(7) && r(r.P + e(86), "Object", { __defineGetter__: function __defineGetter__(t, n) { | |
| u.f(i(this), t, { get: o(n), enumerable: !0, configurable: !0 }); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(10), | |
| o = e(11), | |
| u = e(8);e(7) && r(r.P + e(86), "Object", { __defineSetter__: function __defineSetter__(t, n) { | |
| u.f(i(this), t, { set: o(n), enumerable: !0, configurable: !0 }); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(10), | |
| o = e(27), | |
| u = e(21), | |
| a = e(20).f;e(7) && r(r.P + e(86), "Object", { __lookupGetter__: function __lookupGetter__(t) { | |
| var n, | |
| e = i(this), | |
| r = o(t, !0);do { | |
| if (n = a(e, r)) return n.get; | |
| } while (e = u(e)); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(10), | |
| o = e(27), | |
| u = e(21), | |
| a = e(20).f;e(7) && r(r.P + e(86), "Object", { __lookupSetter__: function __lookupSetter__(t) { | |
| var n, | |
| e = i(this), | |
| r = o(t, !0);do { | |
| if (n = a(e, r)) return n.set; | |
| } while (e = u(e)); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.P + r.R, "Map", { toJSON: e(185)("Map") }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.P + r.R, "Set", { toJSON: e(185)("Set") }); | |
| }, function (t, n, e) { | |
| e(87)("Map"); | |
| }, function (t, n, e) { | |
| e(87)("Set"); | |
| }, function (t, n, e) { | |
| e(87)("WeakMap"); | |
| }, function (t, n, e) { | |
| e(87)("WeakSet"); | |
| }, function (t, n, e) { | |
| e(88)("Map"); | |
| }, function (t, n, e) { | |
| e(88)("Set"); | |
| }, function (t, n, e) { | |
| e(88)("WeakMap"); | |
| }, function (t, n, e) { | |
| e(88)("WeakSet"); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.G, { global: e(2) }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "System", { global: e(2) }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(23);r(r.S, "Error", { isError: function isError(t) { | |
| return "Error" === i(t); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { clamp: function clamp(t, n, e) { | |
| return Math.min(e, Math.max(n, t)); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { DEG_PER_RAD: Math.PI / 180 }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = 180 / Math.PI;r(r.S, "Math", { degrees: function degrees(t) { | |
| return t * i; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(187), | |
| o = e(167);r(r.S, "Math", { fscale: function fscale(t, n, e, r, u) { | |
| return o(i(t, n, e, r, u)); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { iaddh: function iaddh(t, n, e, r) { | |
| var i = t >>> 0, | |
| o = n >>> 0, | |
| u = e >>> 0;return o + (r >>> 0) + ((i & u | (i | u) & ~(i + u >>> 0)) >>> 31) | 0; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { isubh: function isubh(t, n, e, r) { | |
| var i = t >>> 0, | |
| o = n >>> 0, | |
| u = e >>> 0;return o - (r >>> 0) - ((~i & u | ~(i ^ u) & i - u >>> 0) >>> 31) | 0; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { imulh: function imulh(t, n) { | |
| var e = 65535, | |
| r = +t, | |
| i = +n, | |
| o = r & e, | |
| u = i & e, | |
| a = r >> 16, | |
| c = i >> 16, | |
| s = (a * u >>> 0) + (o * u >>> 16);return a * c + (s >> 16) + ((o * c >>> 0) + (s & e) >> 16); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { RAD_PER_DEG: 180 / Math.PI }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = Math.PI / 180;r(r.S, "Math", { radians: function radians(t) { | |
| return t * i; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { scale: e(187) }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { umulh: function umulh(t, n) { | |
| var e = 65535, | |
| r = +t, | |
| i = +n, | |
| o = r & e, | |
| u = i & e, | |
| a = r >>> 16, | |
| c = i >>> 16, | |
| s = (a * u >>> 0) + (o * u >>> 16);return a * c + (s >>> 16) + ((o * c >>> 0) + (s & e) >>> 16); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0);r(r.S, "Math", { signbit: function signbit(t) { | |
| return (t = +t) != t ? t : 0 == t ? 1 / t == 1 / 0 : t > 0; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(34), | |
| o = e(2), | |
| u = e(83), | |
| a = e(174);r(r.P + r.R, "Promise", { finally: function _finally(t) { | |
| var n = u(this, i.Promise || o.Promise), | |
| e = "function" == typeof t;return this.then(e ? function (e) { | |
| return a(n, t()).then(function () { | |
| return e; | |
| }); | |
| } : t, e ? function (e) { | |
| return a(n, t()).then(function () { | |
| throw e; | |
| }); | |
| } : t); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(125), | |
| o = e(173);r(r.S, "Promise", { try: function _try(t) { | |
| var n = i.f(this), | |
| e = o(t);return (e.e ? n.reject : n.resolve)(e.v), n.promise; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = r.key, | |
| u = r.set;r.exp({ defineMetadata: function defineMetadata(t, n, e, r) { | |
| u(t, n, i(e), o(r)); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = r.key, | |
| u = r.map, | |
| a = r.store;r.exp({ deleteMetadata: function deleteMetadata(t, n) { | |
| var e = arguments.length < 3 ? void 0 : o(arguments[2]), | |
| r = u(i(n), e, !1);if (void 0 === r || !r.delete(t)) return !1;if (r.size) return !0;var c = a.get(n);return c.delete(e), !!c.size || a.delete(n); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = e(21), | |
| u = r.has, | |
| a = r.get, | |
| c = r.key, | |
| s = function s(t, n, e) { | |
| if (u(t, n, e)) return a(t, n, e);var r = o(n);return null !== r ? s(t, r, e) : void 0; | |
| };r.exp({ getMetadata: function getMetadata(t, n) { | |
| return s(t, i(n), arguments.length < 3 ? void 0 : c(arguments[2])); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(177), | |
| i = e(186), | |
| o = e(36), | |
| u = e(1), | |
| a = e(21), | |
| c = o.keys, | |
| s = o.key, | |
| f = function f(t, n) { | |
| var e = c(t, n), | |
| o = a(t);if (null === o) return e;var u = f(o, n);return u.length ? e.length ? i(new r(e.concat(u))) : u : e; | |
| };o.exp({ getMetadataKeys: function getMetadataKeys(t) { | |
| return f(u(t), arguments.length < 2 ? void 0 : s(arguments[1])); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = r.get, | |
| u = r.key;r.exp({ getOwnMetadata: function getOwnMetadata(t, n) { | |
| return o(t, i(n), arguments.length < 3 ? void 0 : u(arguments[2])); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = r.keys, | |
| u = r.key;r.exp({ getOwnMetadataKeys: function getOwnMetadataKeys(t) { | |
| return o(i(t), arguments.length < 2 ? void 0 : u(arguments[1])); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = e(21), | |
| u = r.has, | |
| a = r.key, | |
| c = function c(t, n, e) { | |
| if (u(t, n, e)) return !0;var r = o(n);return null !== r && c(t, r, e); | |
| };r.exp({ hasMetadata: function hasMetadata(t, n) { | |
| return c(t, i(n), arguments.length < 3 ? void 0 : a(arguments[2])); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = r.has, | |
| u = r.key;r.exp({ hasOwnMetadata: function hasOwnMetadata(t, n) { | |
| return o(t, i(n), arguments.length < 3 ? void 0 : u(arguments[2])); | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(36), | |
| i = e(1), | |
| o = e(11), | |
| u = r.key, | |
| a = r.set;r.exp({ metadata: function metadata(t, n) { | |
| return function (e, r) { | |
| a(t, n, (void 0 !== r ? i : o)(e), u(r)); | |
| }; | |
| } }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(124)(), | |
| o = e(2).process, | |
| u = "process" == e(23)(o);r(r.G, { asap: function asap(t) { | |
| var n = u && o.domain;i(n ? n.bind(t) : t); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(0), | |
| i = e(2), | |
| o = e(34), | |
| u = e(124)(), | |
| a = e(5)("observable"), | |
| c = e(11), | |
| s = e(1), | |
| f = e(49), | |
| l = e(51), | |
| h = e(16), | |
| p = e(50), | |
| v = p.RETURN, | |
| d = function d(t) { | |
| return null == t ? void 0 : c(t); | |
| }, | |
| y = function y(t) { | |
| var n = t._c;n && (t._c = void 0, n()); | |
| }, | |
| g = function g(t) { | |
| return void 0 === t._o; | |
| }, | |
| m = function m(t) { | |
| g(t) || (t._o = void 0, y(t)); | |
| }, | |
| _ = function _(t, n) { | |
| s(t), this._c = void 0, this._o = t, t = new w(this);try { | |
| var e = n(t), | |
| r = e;null != e && ("function" == typeof e.unsubscribe ? e = function e() { | |
| r.unsubscribe(); | |
| } : c(e), this._c = e); | |
| } catch (n) { | |
| return void t.error(n); | |
| }g(this) && y(this); | |
| };_.prototype = l({}, { unsubscribe: function unsubscribe() { | |
| m(this); | |
| } });var w = function w(t) { | |
| this._s = t; | |
| };w.prototype = l({}, { next: function next(t) { | |
| var n = this._s;if (!g(n)) { | |
| var e = n._o;try { | |
| var r = d(e.next);if (r) return r.call(e, t); | |
| } catch (t) { | |
| try { | |
| m(n); | |
| } finally { | |
| throw t; | |
| } | |
| } | |
| } | |
| }, error: function error(t) { | |
| var n = this._s;if (g(n)) throw t;var e = n._o;n._o = void 0;try { | |
| var r = d(e.error);if (!r) throw t;t = r.call(e, t); | |
| } catch (t) { | |
| try { | |
| y(n); | |
| } finally { | |
| throw t; | |
| } | |
| }return y(n), t; | |
| }, complete: function complete(t) { | |
| var n = this._s;if (!g(n)) { | |
| var e = n._o;n._o = void 0;try { | |
| var r = d(e.complete);t = r ? r.call(e, t) : void 0; | |
| } catch (t) { | |
| try { | |
| y(n); | |
| } finally { | |
| throw t; | |
| } | |
| }return y(n), t; | |
| } | |
| } });var b = function b(t) { | |
| f(this, b, "Observable", "_f")._f = c(t); | |
| };l(b.prototype, { subscribe: function subscribe(t) { | |
| return new _(t, this._f); | |
| }, forEach: function forEach(t) { | |
| var n = this;return new (o.Promise || i.Promise)(function (e, r) { | |
| c(t);var i = n.subscribe({ next: function next(n) { | |
| try { | |
| return t(n); | |
| } catch (t) { | |
| r(t), i.unsubscribe(); | |
| } | |
| }, error: r, complete: e }); | |
| }); | |
| } }), l(b, { from: function from(t) { | |
| var n = "function" == typeof this ? this : b, | |
| e = d(s(t)[a]);if (e) { | |
| var r = s(e.call(t));return r.constructor === n ? r : new n(function (t) { | |
| return r.subscribe(t); | |
| }); | |
| }return new n(function (n) { | |
| var e = !1;return u(function () { | |
| if (!e) { | |
| try { | |
| if (p(t, !1, function (t) { | |
| if (n.next(t), e) return v; | |
| }) === v) return; | |
| } catch (t) { | |
| if (e) throw t;return void n.error(t); | |
| }n.complete(); | |
| } | |
| }), function () { | |
| e = !0; | |
| }; | |
| }); | |
| }, of: function of() { | |
| for (var t = 0, n = arguments.length, e = new Array(n); t < n;) { | |
| e[t] = arguments[t++]; | |
| }return new ("function" == typeof this ? this : b)(function (t) { | |
| var n = !1;return u(function () { | |
| if (!n) { | |
| for (var r = 0; r < e.length; ++r) { | |
| if (t.next(e[r]), n) return; | |
| }t.complete(); | |
| } | |
| }), function () { | |
| n = !0; | |
| }; | |
| }); | |
| } }), h(b.prototype, a, function () { | |
| return this; | |
| }), r(r.G, { Observable: b }), e(48)("Observable"); | |
| }, function (t, n, e) { | |
| var r = e(2), | |
| i = e(0), | |
| o = e(127), | |
| u = [].slice, | |
| a = /MSIE .\./.test(o), | |
| c = function c(t) { | |
| return function (n, e) { | |
| var r = arguments.length > 2, | |
| i = !!r && u.call(arguments, 2);return t(r ? function () { | |
| ("function" == typeof n ? n : Function(n)).apply(this, i); | |
| } : n, e); | |
| }; | |
| };i(i.G + i.B + i.F * a, { setTimeout: c(r.setTimeout), setInterval: c(r.setInterval) }); | |
| }, function (t, n, e) { | |
| var r = e(0), | |
| i = e(123);r(r.G + r.B, { setImmediate: i.set, clearImmediate: i.clear }); | |
| }, function (t, n, e) { | |
| for (var r = e(122), i = e(44), o = e(17), u = e(2), a = e(16), c = e(57), s = e(5), f = s("iterator"), l = s("toStringTag"), h = c.Array, p = { CSSRuleList: !0, CSSStyleDeclaration: !1, CSSValueList: !1, ClientRectList: !1, DOMRectList: !1, DOMStringList: !1, DOMTokenList: !0, DataTransferItemList: !1, FileList: !1, HTMLAllCollection: !1, HTMLCollection: !1, HTMLFormElement: !1, HTMLSelectElement: !1, MediaList: !0, MimeTypeArray: !1, NamedNodeMap: !1, NodeList: !0, PaintRequestList: !1, Plugin: !1, PluginArray: !1, SVGLengthList: !1, SVGNumberList: !1, SVGPathSegList: !1, SVGPointList: !1, SVGStringList: !1, SVGTransformList: !1, SourceBufferList: !1, StyleSheetList: !0, TextTrackCueList: !1, TextTrackList: !1, TouchList: !1 }, v = i(p), d = 0; d < v.length; d++) { | |
| var y, | |
| g = v[d], | |
| m = p[g], | |
| _ = u[g], | |
| w = _ && _.prototype;if (w && (w[f] || a(w, f, h), w[l] || a(w, l, g), c[g] = h, m)) for (y in r) { | |
| w[y] || o(w, y, r[y], !0); | |
| } | |
| } | |
| }, function (t, n, e) { | |
| t.exports = e(414); | |
| }, function (t, n, e) { | |
| e(59), e(420), t.exports = e(6).Array.from; | |
| }, function (t, n, e) { | |
| var r = e(128), | |
| i = e(129);t.exports = function (t) { | |
| return function (n, e) { | |
| var o, | |
| u, | |
| a = String(i(n)), | |
| c = r(e), | |
| s = a.length;return c < 0 || c >= s ? t ? "" : void 0 : (o = a.charCodeAt(c), o < 55296 || o > 56319 || c + 1 === s || (u = a.charCodeAt(c + 1)) < 56320 || u > 57343 ? t ? a.charAt(c) : o : t ? a.slice(c, c + 2) : u - 56320 + (o - 55296 << 10) + 65536); | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(91), | |
| i = e(67), | |
| o = e(70), | |
| u = {};e(40)(u, e(13)("iterator"), function () { | |
| return this; | |
| }), t.exports = function (t, n, e) { | |
| t.prototype = r(u, { next: i(1, e) }), o(t, n + " Iterator"); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(25), | |
| i = e(32), | |
| o = e(68);t.exports = e(33) ? Object.defineProperties : function (t, n) { | |
| i(t);for (var e, u = o(n), a = u.length, c = 0; a > c;) { | |
| r.f(t, e = u[c++], n[e]); | |
| }return t; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(54), | |
| i = e(92), | |
| o = e(419);t.exports = function (t) { | |
| return function (n, e, u) { | |
| var a, | |
| c = r(n), | |
| s = i(c.length), | |
| f = o(u, s);if (t && e != e) { | |
| for (; s > f;) { | |
| if ((a = c[f++]) != a) return !0; | |
| } | |
| } else for (; s > f; f++) { | |
| if ((t || f in c) && c[f] === e) return t || f || 0; | |
| }return !t && -1; | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(128), | |
| i = Math.max, | |
| o = Math.min;t.exports = function (t, n) { | |
| return t = r(t), t < 0 ? i(t + n, 0) : o(t, n); | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(37), | |
| i = e(12), | |
| o = e(61), | |
| u = e(194), | |
| a = e(195), | |
| c = e(92), | |
| s = e(421), | |
| f = e(137);i(i.S + i.F * !e(196)(function (t) { | |
| Array.from(t); | |
| }), "Array", { from: function from(t) { | |
| var n, | |
| e, | |
| i, | |
| l, | |
| h = o(t), | |
| p = "function" == typeof this ? this : Array, | |
| v = arguments.length, | |
| d = v > 1 ? arguments[1] : void 0, | |
| y = void 0 !== d, | |
| g = 0, | |
| m = f(h);if (y && (d = r(d, v > 2 ? arguments[2] : void 0, 2)), void 0 == m || p == Array && a(m)) for (n = c(h.length), e = new p(n); n > g; g++) { | |
| s(e, g, y ? d(h[g], g) : h[g]); | |
| } else for (l = m.call(h), e = new p(); !(i = l.next()).done; g++) { | |
| s(e, g, y ? u(l, d, [i.value, g], !0) : i.value); | |
| }return e.length = g, e; | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(25), | |
| i = e(67);t.exports = function (t, n, e) { | |
| n in t ? r.f(t, n, i(0, e)) : t[n] = e; | |
| }; | |
| }, function (t, n, e) { | |
| t.exports = e(423); | |
| }, function (t, n, e) { | |
| e(71), e(59), t.exports = e(426); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(425), | |
| i = e(197), | |
| o = e(60), | |
| u = e(54);t.exports = e(130)(Array, "Array", function (t, n) { | |
| this._t = u(t), this._i = 0, this._k = n; | |
| }, function () { | |
| var t = this._t, | |
| n = this._k, | |
| e = this._i++;return !t || e >= t.length ? (this._t = void 0, i(1)) : "keys" == n ? i(0, e) : "values" == n ? i(0, t[e]) : i(0, [e, t[e]]); | |
| }, "values"), o.Arguments = o.Array, r("keys"), r("values"), r("entries"); | |
| }, function (t, n) { | |
| t.exports = function () {}; | |
| }, function (t, n, e) { | |
| var r = e(94), | |
| i = e(13)("iterator"), | |
| o = e(60);t.exports = e(6).isIterable = function (t) { | |
| var n = Object(t);return void 0 !== n[i] || "@@iterator" in n || o.hasOwnProperty(r(n)); | |
| }; | |
| }, function (t, n, e) { | |
| e(71), e(59), t.exports = e(428); | |
| }, function (t, n, e) { | |
| var r = e(32), | |
| i = e(137);t.exports = e(6).getIterator = function (t) { | |
| var n = i(t);if ("function" != typeof n) throw TypeError(t + " is not iterable!");return r(n.call(t)); | |
| }; | |
| }, function (t, n, e) { | |
| e(430), t.exports = e(6).Object.assign; | |
| }, function (t, n, e) { | |
| var r = e(12);r(r.S + r.F, "Object", { assign: e(431) }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(68), | |
| i = e(139), | |
| o = e(97), | |
| u = e(61), | |
| a = e(133), | |
| c = Object.assign;t.exports = !c || e(52)(function () { | |
| var t = {}, | |
| n = {}, | |
| e = Symbol(), | |
| r = "abcdefghijklmnopqrst";return t[e] = 7, r.split("").forEach(function (t) { | |
| n[t] = t; | |
| }), 7 != c({}, t)[e] || Object.keys(c({}, n)).join("") != r; | |
| }) ? function (t, n) { | |
| for (var e = u(t), c = arguments.length, s = 1, f = i.f, l = o.f; c > s;) { | |
| for (var h, p = a(arguments[s++]), v = f ? r(p).concat(f(p)) : r(p), d = v.length, y = 0; d > y;) { | |
| l.call(p, h = v[y++]) && (e[h] = p[h]); | |
| } | |
| }return e; | |
| } : c; | |
| }, function (t, n, e) { | |
| e(141), e(59), e(71), e(433), e(436), e(437), t.exports = e(6).Promise; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r, | |
| i, | |
| o, | |
| u, | |
| a = e(90), | |
| c = e(14), | |
| s = e(37), | |
| f = e(94), | |
| l = e(12), | |
| h = e(26), | |
| p = e(66), | |
| v = e(142), | |
| d = e(72), | |
| y = e(199), | |
| g = e(200).set, | |
| m = e(435)(), | |
| _ = e(143), | |
| w = e(201), | |
| b = e(202), | |
| x = "Promise", | |
| S = c.TypeError, | |
| O = c.process, | |
| _P2 = c[x], | |
| k = "process" == f(O), | |
| E = function E() {}, | |
| j = i = _.f, | |
| A = !!function () { | |
| try { | |
| var t = _P2.resolve(1), | |
| n = (t.constructor = {})[e(13)("species")] = function (t) { | |
| t(E, E); | |
| };return (k || "function" == typeof PromiseRejectionEvent) && t.then(E) instanceof n; | |
| } catch (t) {} | |
| }(), | |
| M = function M(t) { | |
| var n;return !(!h(t) || "function" != typeof (n = t.then)) && n; | |
| }, | |
| T = function T(t, n) { | |
| if (!t._n) { | |
| t._n = !0;var e = t._c;m(function () { | |
| for (var r = t._v, i = 1 == t._s, o = 0, u = function u(n) { | |
| var e, | |
| o, | |
| u = i ? n.ok : n.fail, | |
| a = n.resolve, | |
| c = n.reject, | |
| s = n.domain;try { | |
| u ? (i || (2 == t._h && I(t), t._h = 1), !0 === u ? e = r : (s && s.enter(), e = u(r), s && s.exit()), e === n.promise ? c(S("Promise-chain cycle")) : (o = M(e)) ? o.call(e, a, c) : a(e)) : c(r); | |
| } catch (t) { | |
| c(t); | |
| } | |
| }; e.length > o;) { | |
| u(e[o++]); | |
| }t._c = [], t._n = !1, n && !t._h && F(t); | |
| }); | |
| } | |
| }, | |
| F = function F(t) { | |
| g.call(c, function () { | |
| var n, | |
| e, | |
| r, | |
| i = t._v, | |
| o = L(t);if (o && (n = w(function () { | |
| k ? O.emit("unhandledRejection", i, t) : (e = c.onunhandledrejection) ? e({ promise: t, reason: i }) : (r = c.console) && r.error && r.error("Unhandled promise rejection", i); | |
| }), t._h = k || L(t) ? 2 : 1), t._a = void 0, o && n.e) throw n.v; | |
| }); | |
| }, | |
| L = function L(t) { | |
| return 1 !== t._h && 0 === (t._a || t._c).length; | |
| }, | |
| I = function I(t) { | |
| g.call(c, function () { | |
| var n;k ? O.emit("rejectionHandled", t) : (n = c.onrejectionhandled) && n({ promise: t, reason: t._v }); | |
| }); | |
| }, | |
| N = function N(t) { | |
| var n = this;n._d || (n._d = !0, n = n._w || n, n._v = t, n._s = 2, n._a || (n._a = n._c.slice()), T(n, !0)); | |
| }, | |
| D = function D(t) { | |
| var n, | |
| e = this;if (!e._d) { | |
| e._d = !0, e = e._w || e;try { | |
| if (e === t) throw S("Promise can't be resolved itself");(n = M(t)) ? m(function () { | |
| var r = { _w: e, _d: !1 };try { | |
| n.call(t, s(D, r, 1), s(N, r, 1)); | |
| } catch (t) { | |
| N.call(r, t); | |
| } | |
| }) : (e._v = t, e._s = 1, T(e, !1)); | |
| } catch (t) { | |
| N.call({ _w: e, _d: !1 }, t); | |
| } | |
| } | |
| };A || (_P2 = function P(t) { | |
| v(this, _P2, x, "_h"), p(t), r.call(this);try { | |
| t(s(D, this, 1), s(N, this, 1)); | |
| } catch (t) { | |
| N.call(this, t); | |
| } | |
| }, r = function r(t) { | |
| this._c = [], this._a = void 0, this._s = 0, this._d = !1, this._v = void 0, this._h = 0, this._n = !1; | |
| }, r.prototype = e(144)(_P2.prototype, { then: function then(t, n) { | |
| var e = j(y(this, _P2));return e.ok = "function" != typeof t || t, e.fail = "function" == typeof n && n, e.domain = k ? O.domain : void 0, this._c.push(e), this._a && this._a.push(e), this._s && T(this, !1), e.promise; | |
| }, catch: function _catch(t) { | |
| return this.then(void 0, t); | |
| } }), o = function o() { | |
| var t = new r();this.promise = t, this.resolve = s(D, t, 1), this.reject = s(N, t, 1); | |
| }, _.f = j = function j(t) { | |
| return t === _P2 || t === u ? new o(t) : i(t); | |
| }), l(l.G + l.W + l.F * !A, { Promise: _P2 }), e(70)(_P2, x), e(203)(x), u = e(6)[x], l(l.S + l.F * !A, x, { reject: function reject(t) { | |
| var n = j(this);return (0, n.reject)(t), n.promise; | |
| } }), l(l.S + l.F * (a || !A), x, { resolve: function resolve(t) { | |
| return b(a && this === u ? _P2 : this, t); | |
| } }), l(l.S + l.F * !(A && e(196)(function (t) { | |
| _P2.all(t).catch(E); | |
| })), x, { all: function all(t) { | |
| var n = this, | |
| e = j(n), | |
| r = e.resolve, | |
| i = e.reject, | |
| o = w(function () { | |
| var e = [], | |
| o = 0, | |
| u = 1;d(t, !1, function (t) { | |
| var a = o++, | |
| c = !1;e.push(void 0), u++, n.resolve(t).then(function (t) { | |
| c || (c = !0, e[a] = t, --u || r(e)); | |
| }, i); | |
| }), --u || r(e); | |
| });return o.e && i(o.v), e.promise; | |
| }, race: function race(t) { | |
| var n = this, | |
| e = j(n), | |
| r = e.reject, | |
| i = w(function () { | |
| d(t, !1, function (t) { | |
| n.resolve(t).then(e.resolve, r); | |
| }); | |
| });return i.e && r(i.v), e.promise; | |
| } }); | |
| }, function (t, n) { | |
| t.exports = function (t, n, e) { | |
| var r = void 0 === e;switch (n.length) {case 0: | |
| return r ? t() : t.call(e);case 1: | |
| return r ? t(n[0]) : t.call(e, n[0]);case 2: | |
| return r ? t(n[0], n[1]) : t.call(e, n[0], n[1]);case 3: | |
| return r ? t(n[0], n[1], n[2]) : t.call(e, n[0], n[1], n[2]);case 4: | |
| return r ? t(n[0], n[1], n[2], n[3]) : t.call(e, n[0], n[1], n[2], n[3]);}return t.apply(e, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(14), | |
| i = e(200).set, | |
| o = r.MutationObserver || r.WebKitMutationObserver, | |
| u = r.process, | |
| a = r.Promise, | |
| c = "process" == e(69)(u);t.exports = function () { | |
| var t, | |
| n, | |
| e, | |
| s = function s() { | |
| var r, i;for (c && (r = u.domain) && r.exit(); t;) { | |
| i = t.fn, t = t.next;try { | |
| i(); | |
| } catch (r) { | |
| throw t ? e() : n = void 0, r; | |
| } | |
| }n = void 0, r && r.enter(); | |
| };if (c) e = function e() { | |
| u.nextTick(s); | |
| };else if (!o || r.navigator && r.navigator.standalone) { | |
| if (a && a.resolve) { | |
| var f = a.resolve();e = function e() { | |
| f.then(s); | |
| }; | |
| } else e = function e() { | |
| i.call(r, s); | |
| }; | |
| } else { | |
| var l = !0, | |
| h = document.createTextNode("");new o(s).observe(h, { characterData: !0 }), e = function e() { | |
| h.data = l = !l; | |
| }; | |
| }return function (r) { | |
| var i = { fn: r, next: void 0 };n && (n.next = i), t || (t = i, e()), n = i; | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(12), | |
| i = e(6), | |
| o = e(14), | |
| u = e(199), | |
| a = e(202);r(r.P + r.R, "Promise", { finally: function _finally(t) { | |
| var n = u(this, i.Promise || o.Promise), | |
| e = "function" == typeof t;return this.then(e ? function (e) { | |
| return a(n, t()).then(function () { | |
| return e; | |
| }); | |
| } : t, e ? function (e) { | |
| return a(n, t()).then(function () { | |
| throw e; | |
| }); | |
| } : t); | |
| } }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(12), | |
| i = e(143), | |
| o = e(201);r(r.S, "Promise", { try: function _try(t) { | |
| var n = i.f(this), | |
| e = o(t);return (e.e ? n.reject : n.resolve)(e.v), n.promise; | |
| } }); | |
| }, function (t, n, e) { | |
| e(439), t.exports = e(6).Object.keys; | |
| }, function (t, n, e) { | |
| var r = e(61), | |
| i = e(68);e(99)("keys", function () { | |
| return function (t) { | |
| return i(r(t)); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| e(441);var r = e(6).Object;t.exports = function (t, n, e) { | |
| return r.defineProperty(t, n, e); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(12);r(r.S + r.F * !e(33), "Object", { defineProperty: e(25).f }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return l; | |
| });var r = e(205), | |
| i = e.n(r), | |
| o = e(62), | |
| u = e.n(o), | |
| a = e(73), | |
| c = e.n(a), | |
| s = e(89), | |
| f = e.n(s), | |
| l = function l(t) { | |
| var n = t.DwFactory, | |
| e = t.DwProxy, | |
| r = t.appConfig, | |
| o = t.slide, | |
| a = t.actors, | |
| s = t.wx, | |
| l = (t.isSwan, t.isMy, t.app), | |
| h = t.getCurrentPages, | |
| p = t.componentsPackages, | |
| v = 0, | |
| d = r.app.tabBar && r.app.tabBar && r.app.tabBar.list ? r.app.tabBar.list.map(function (t) { | |
| return t.pagePath; | |
| }) : [], | |
| y = r.app.subPackages || [], | |
| g = {}, | |
| m = new f.a.EventEmitter();m.setMaxListeners(100);var _ = function _(t) { | |
| var n = c()(t).sort().map(function (n) { | |
| return n + "=" + t[n]; | |
| }).join("&");return n ? "?" + n : ""; | |
| };a.map(function (t) { | |
| t.component = o.components[t.key], t.dw = new e(t.component, t, l, { componentsPackages: p }), t.actor = t.func(t.dw);var n = { data: t.actor.data, computed: t.actor.computed, watch: t.actor.watch, rootSlide: o, actors: a, pageLocals: g, pageEvent: m };if (t.dw._updateActorData(n), t.dw._setExtraData({ benchSlide: o }), "object" === u()(t.actor.methods)) for (var r in t.actor.methods) { | |
| t.dw.methods[r] = t.actor.methods[r]; | |
| }t.component.dwdata = t.actor.data; | |
| });var w = function w(t) { | |
| for (var n = arguments.length, e = new Array(n > 1 ? n - 1 : 0), r = 1; r < n; r++) { | |
| e[r - 1] = arguments[r]; | |
| }a.map(function (n) { | |
| if (t in n.actor) if (["onLoad", "onShow"].includes(t)) n.dw.decorateMethod(n.actor[t]).apply(void 0, e);else { | |
| var r;(r = n.actor[t]).call.apply(r, [n.dw].concat(e)); | |
| } | |
| }); | |
| }, | |
| b = { data: { slide: o, company: r.company, query: {}, extraQuery: {}, share: { title: null, imageUrl: null, success: [], fail: [], complete: [] }, overides: { onShareAppMessage: null } }, getPageLocals: function getPageLocals(t) { | |
| return g[t]; | |
| }, setPageLocals: function setPageLocals(t, n) { | |
| g[t] = n; | |
| }, getCurrentPages: function getCurrentPages() { | |
| return h(); | |
| }, onLoad: function onLoad(t) { | |
| if (console.log("PageFactory.onload kwargs:", t), t.pshop_id && /^\d+$/.test(t.pshop_id)) { | |
| var e = parseInt(t.pshop_id);s.setStorageSync("pshop_id", e), n.DwUtils.request("post/company_account/after_dwapp_login_with_pshop_id", { pshop_id: e }).then(function (t) { | |
| console.log("post/company_account/after_dwapp_login_with_pshop_id", e, t); | |
| }); | |
| }var r = this;this.setData({ query: t }), a.map(function (n) { | |
| n.dw._afterOnLoad(r, t, { app: l, tabBarPaths: d }); | |
| }), w("onLoad", t); | |
| }, onReady: function onReady() { | |
| for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { | |
| n[e] = arguments[e]; | |
| }w.apply(void 0, ["onReady"].concat(n)); | |
| }, onShow: function onShow() { | |
| for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { | |
| n[e] = arguments[e]; | |
| }w.apply(void 0, ["onShow"].concat(n)); | |
| }, onHide: function onHide() { | |
| for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { | |
| n[e] = arguments[e]; | |
| }w.apply(void 0, ["onHide"].concat(n)); | |
| }, onUnload: function onUnload() { | |
| for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { | |
| n[e] = arguments[e]; | |
| }w.apply(void 0, ["onUnload"].concat(n)); | |
| }, onPullDownRefresh: function onPullDownRefresh() { | |
| for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { | |
| n[e] = arguments[e]; | |
| }w.apply(void 0, ["onPullDownRefresh"].concat(n)); | |
| }, onReachBottom: function onReachBottom() { | |
| for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { | |
| n[e] = arguments[e]; | |
| }w.apply(void 0, ["onReachBottom"].concat(n)); | |
| }, onPageScroll: function onPageScroll() { | |
| for (var t = arguments.length, n = new Array(t), e = 0; e < t; e++) { | |
| n[e] = arguments[e]; | |
| }w.apply(void 0, ["onPageScroll"].concat(n)); | |
| }, onError: function onError(t) { | |
| n.DwUtils.fetch("post/dwapp/capture_error", { error: t }); | |
| }, onShareAppMessage: function onShareAppMessage(t) { | |
| if (this.data.overides.onShareAppMessage) return this.data.overides.onShareAppMessage(t);var n = this, | |
| e = h(), | |
| r = e[e.length - 1], | |
| u = r.route, | |
| a = JSON.parse(i()(this.data.query));for (var f in this.data.extraQuery) { | |
| a[f] = this.data.extraQuery[f]; | |
| }var l;try { | |
| l = s.getStorageSync("siteuser_id"); | |
| } catch (t) { | |
| l = null; | |
| }l && (a.pshop_id = l);var p = c()(a).map(function (t) { | |
| return t + "=" + a[t]; | |
| }).join("&");p = p ? "?" + p : "", console.log("PageFactory:onShareAppMessage: title=".concat(o.alias, " path=").concat(u + p));var v = { title: o.alias, path: u + p, success: function success() { | |
| for (var t = arguments.length, e = new Array(t), r = 0; r < t; r++) { | |
| e[r] = arguments[r]; | |
| }n.data.share.success.forEach(function (t) { | |
| return t.apply(void 0, e); | |
| }); | |
| }, fail: function fail() { | |
| for (var t = arguments.length, e = new Array(t), r = 0; r < t; r++) { | |
| e[r] = arguments[r]; | |
| }n.data.share.fail.forEach(function (t) { | |
| return t.apply(void 0, e); | |
| }); | |
| }, complete: function complete() { | |
| for (var t = arguments.length, e = new Array(t), r = 0; r < t; r++) { | |
| e[r] = arguments[r]; | |
| }n.data.share.complete.forEach(function (t) { | |
| return t.apply(void 0, e); | |
| }); | |
| } };return this.data.share.title && (v.title = this.data.share.title), this.data.share.imageUrl && (v.imageUrl = this.data.share.imageUrl), v; | |
| }, goToHref: function goToHref(t) { | |
| var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, | |
| e = n.redirectTo, | |
| r = void 0 !== e && e, | |
| i = t.split("?"), | |
| o = i[0], | |
| u = o.split("-");if ("tel" === u[0] && u[1]) return s.makePhoneCall({ phoneNumber: u[1] });if ("wxapp" === u[0] && u[1]) return s.navigateToMiniProgram({ appId: u[1] });if (i[1]) { | |
| var a = i[1].split("="), | |
| c = a[0], | |
| f = a[1];"cat_id" === c && s.setStorageSync(c, f); | |
| }var l = i[1] ? "?" + i[1] : "";this.goToLocation(o, l, { redirectTo: r }); | |
| }, goToPage: function goToPage(t, n) { | |
| var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, | |
| r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, | |
| i = r.redirectTo, | |
| o = void 0 !== i && i, | |
| u = _(e), | |
| a = "papp_" + t + "-" + n;this.goToLocation(a, u, { redirectTo: o }); | |
| }, goToPappPage: function goToPappPage() { | |
| return this.goToPage.apply(this, arguments); | |
| }, getCurrentPath: function getCurrentPath() { | |
| var t = h();if (t.length) { | |
| return t[t.length - 1].route; | |
| } | |
| }, isTabbar: function isTabbar() { | |
| return d.indexOf(this.getCurrentPath()) > -1; | |
| }, goToLocation: function goToLocation(t, n) { | |
| var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, | |
| r = e.redirectTo, | |
| i = void 0 !== r && r, | |
| o = h(), | |
| u = "pages/" + t + "/index", | |
| a = d.indexOf(u) > -1, | |
| c = y.find(function (t) { | |
| return t.pages.indexOf(u) > -1; | |
| }), | |
| f = c ? c.root : null, | |
| l = f ? "/" + f + "/pages/" + t + "/index" + n : "/pages/" + t + "/index" + n;if (a) s.switchTab({ url: l });else if (i || o.length > 8) s.redirectTo({ url: l });else { | |
| var p = o.find(function (t) { | |
| return t.route === u; | |
| });if (p) { | |
| var v = p.route + _(p.data.query || {});if (console.log("url, oldPageUrl", l, v), l === "/" + v) { | |
| var g = o.findIndex(function (t) { | |
| return t.route === u; | |
| }), | |
| m = o.length - g - 1;return void (m > 0 && s.navigateBack({ delta: m })); | |
| } | |
| }s.navigateTo({ url: l }); | |
| } | |
| }, getAbsoluteUrl: function getAbsoluteUrl(t) { | |
| var n = t.split("?"), | |
| e = n[0], | |
| r = n[1] ? "?" + n[1] : "", | |
| i = "pages/" + e + "/index", | |
| o = y.find(function (t) { | |
| return t.pages.indexOf(i) > -1; | |
| }), | |
| u = o ? o.root : null;return u ? "/" + u + "/pages/" + e + "/index" + r : "/pages/" + e + "/index" + r; | |
| }, pageGoto: function pageGoto(t) { | |
| var n = t.currentTarget.dataset.dwHref;n && this.goToHref(n); | |
| }, setEnableDebug: function setEnableDebug() { | |
| v++ > 8 && this.goToHref("plugin-debug"); | |
| } };return a.map(function (t) { | |
| if (t.actor.methods) for (var n in t.actor.methods) { | |
| var e = [t.pathSlug, n].join("__");b[e] = t.dw.decorateMethod(t.actor.methods[n]); | |
| } | |
| }), b; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(6), | |
| i = r.JSON || (r.JSON = { stringify: JSON.stringify });t.exports = function (t) { | |
| return i.stringify.apply(i, arguments); | |
| }; | |
| }, function (t, n, e) { | |
| t.exports = e(445); | |
| }, function (t, n, e) { | |
| e(59), e(71), t.exports = e(148).f("iterator"); | |
| }, function (t, n, e) { | |
| t.exports = e(447); | |
| }, function (t, n, e) { | |
| e(448), e(141), e(450), e(451), t.exports = e(6).Symbol; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(14), | |
| i = e(53), | |
| o = e(33), | |
| u = e(12), | |
| a = e(190), | |
| c = e(149).KEY, | |
| s = e(52), | |
| f = e(135), | |
| l = e(70), | |
| h = e(93), | |
| p = e(13), | |
| v = e(148), | |
| d = e(150), | |
| y = e(449), | |
| g = e(206), | |
| m = e(32), | |
| _ = e(26), | |
| w = e(54), | |
| b = e(132), | |
| x = e(67), | |
| S = e(91), | |
| O = e(207), | |
| P = e(151), | |
| k = e(25), | |
| E = e(68), | |
| j = P.f, | |
| A = k.f, | |
| M = O.f, | |
| _T2 = r.Symbol, | |
| F = r.JSON, | |
| L = F && F.stringify, | |
| I = "prototype", | |
| N = p("_hidden"), | |
| D = p("toPrimitive"), | |
| R = {}.propertyIsEnumerable, | |
| C = f("symbol-registry"), | |
| U = f("symbols"), | |
| G = f("op-symbols"), | |
| W = Object[I], | |
| V = "function" == typeof _T2, | |
| B = r.QObject, | |
| q = !B || !B[I] || !B[I].findChild, | |
| z = o && s(function () { | |
| return 7 != S(A({}, "a", { get: function get() { | |
| return A(this, "a", { value: 7 }).a; | |
| } })).a; | |
| }) ? function (t, n, e) { | |
| var r = j(W, n);r && delete W[n], A(t, n, e), r && t !== W && A(W, n, r); | |
| } : A, | |
| H = function H(t) { | |
| var n = U[t] = S(_T2[I]);return n._k = t, n; | |
| }, | |
| J = V && "symbol" == (0, _typeof3.default)(_T2.iterator) ? function (t) { | |
| return "symbol" == (typeof t === "undefined" ? "undefined" : (0, _typeof3.default)(t)); | |
| } : function (t) { | |
| return t instanceof _T2; | |
| }, | |
| K = function K(t, n, e) { | |
| return t === W && K(G, n, e), m(t), n = b(n, !0), m(e), i(U, n) ? (e.enumerable ? (i(t, N) && t[N][n] && (t[N][n] = !1), e = S(e, { enumerable: x(0, !1) })) : (i(t, N) || A(t, N, x(1, {})), t[N][n] = !0), z(t, n, e)) : A(t, n, e); | |
| }, | |
| Y = function Y(t, n) { | |
| m(t);for (var e, r = y(n = w(n)), i = 0, o = r.length; o > i;) { | |
| K(t, e = r[i++], n[e]); | |
| }return t; | |
| }, | |
| $ = function $(t, n) { | |
| return void 0 === n ? S(t) : Y(S(t), n); | |
| }, | |
| Q = function Q(t) { | |
| var n = R.call(this, t = b(t, !0));return !(this === W && i(U, t) && !i(G, t)) && (!(n || !i(this, t) || !i(U, t) || i(this, N) && this[N][t]) || n); | |
| }, | |
| X = function X(t, n) { | |
| if (t = w(t), n = b(n, !0), t !== W || !i(U, n) || i(G, n)) { | |
| var e = j(t, n);return !e || !i(U, n) || i(t, N) && t[N][n] || (e.enumerable = !0), e; | |
| } | |
| }, | |
| Z = function Z(t) { | |
| for (var n, e = M(w(t)), r = [], o = 0; e.length > o;) { | |
| i(U, n = e[o++]) || n == N || n == c || r.push(n); | |
| }return r; | |
| }, | |
| tt = function tt(t) { | |
| for (var n, e = t === W, r = M(e ? G : w(t)), o = [], u = 0; r.length > u;) { | |
| !i(U, n = r[u++]) || e && !i(W, n) || o.push(U[n]); | |
| }return o; | |
| };V || (_T2 = function T() { | |
| if (this instanceof _T2) throw TypeError("Symbol is not a constructor!");var t = h(arguments.length > 0 ? arguments[0] : void 0), | |
| n = function n(e) { | |
| this === W && n.call(G, e), i(this, N) && i(this[N], t) && (this[N][t] = !1), z(this, t, x(1, e)); | |
| };return o && q && z(W, t, { configurable: !0, set: n }), H(t); | |
| }, a(_T2[I], "toString", function () { | |
| return this._k; | |
| }), P.f = X, k.f = K, e(208).f = O.f = Z, e(97).f = Q, e(139).f = tt, o && !e(90) && a(W, "propertyIsEnumerable", Q, !0), v.f = function (t) { | |
| return H(p(t)); | |
| }), u(u.G + u.W + u.F * !V, { Symbol: _T2 });for (var nt = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), et = 0; nt.length > et;) { | |
| p(nt[et++]); | |
| }for (var rt = E(p.store), it = 0; rt.length > it;) { | |
| d(rt[it++]); | |
| }u(u.S + u.F * !V, "Symbol", { for: function _for(t) { | |
| return i(C, t += "") ? C[t] : C[t] = _T2(t); | |
| }, keyFor: function keyFor(t) { | |
| if (!J(t)) throw TypeError(t + " is not a symbol!");for (var n in C) { | |
| if (C[n] === t) return n; | |
| } | |
| }, useSetter: function useSetter() { | |
| q = !0; | |
| }, useSimple: function useSimple() { | |
| q = !1; | |
| } }), u(u.S + u.F * !V, "Object", { create: $, defineProperty: K, defineProperties: Y, getOwnPropertyDescriptor: X, getOwnPropertyNames: Z, getOwnPropertySymbols: tt }), F && u(u.S + u.F * (!V || s(function () { | |
| var t = _T2();return "[null]" != L([t]) || "{}" != L({ a: t }) || "{}" != L(Object(t)); | |
| })), "JSON", { stringify: function stringify(t) { | |
| for (var n, e, r = [t], i = 1; arguments.length > i;) { | |
| r.push(arguments[i++]); | |
| }if (e = n = r[1], (_(n) || void 0 !== t) && !J(t)) return g(n) || (n = function n(t, _n4) { | |
| if ("function" == typeof e && (_n4 = e.call(this, t, _n4)), !J(_n4)) return _n4; | |
| }), r[1] = n, L.apply(F, r); | |
| } }), _T2[I][D] || e(40)(_T2[I], D, _T2[I].valueOf), l(_T2, "Symbol"), l(Math, "Math", !0), l(r.JSON, "JSON", !0); | |
| }, function (t, n, e) { | |
| var r = e(68), | |
| i = e(139), | |
| o = e(97);t.exports = function (t) { | |
| var n = r(t), | |
| e = i.f;if (e) for (var u, a = e(t), c = o.f, s = 0; a.length > s;) { | |
| c.call(t, u = a[s++]) && n.push(u); | |
| }return n; | |
| }; | |
| }, function (t, n, e) { | |
| e(150)("asyncIterator"); | |
| }, function (t, n, e) { | |
| e(150)("observable"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return q; | |
| });var r = e(209), | |
| i = e.n(r), | |
| o = e(138), | |
| u = e.n(o), | |
| a = e(453), | |
| c = e.n(a), | |
| s = e(95), | |
| f = e.n(s), | |
| l = e(74), | |
| h = e.n(l), | |
| p = e(140), | |
| v = e.n(p), | |
| d = e(454), | |
| y = e.n(d), | |
| g = e(146), | |
| m = e.n(g), | |
| _ = e(147), | |
| w = e.n(_), | |
| b = e(457), | |
| x = e.n(b), | |
| S = e(458), | |
| O = e.n(S), | |
| P = e(465), | |
| k = e.n(P), | |
| E = e(73), | |
| j = e.n(E), | |
| A = e(62), | |
| M = e.n(A), | |
| T = e(98), | |
| F = e.n(T), | |
| L = e(89), | |
| I = e.n(L), | |
| N = e(188), | |
| D = e(466), | |
| R = e(198), | |
| C = e(145), | |
| U = e(467), | |
| G = e(468), | |
| W = e(204), | |
| V = e(492), | |
| B = {}, | |
| q = function q(t) { | |
| var n = t.config, | |
| e = t.WxParse, | |
| r = t.wx, | |
| o = t.isSwan, | |
| a = t.isMy, | |
| s = t.getCurrentPages, | |
| l = Object(V.a)({ wx: r, isSwan: o, isMy: a }), | |
| p = n.app.subPackages || [], | |
| d = r.getSystemInfoSync(), | |
| g = function g(t) { | |
| return n.apiUrl + "/u/" + n.company.nickname + "/capi/v1/" + t; | |
| }, | |
| _ = function _(t) { | |
| return n.apiUrl + "/dapi/u/" + n.company.nickname + "/" + t; | |
| }, | |
| b = function t(e, i, o, u) { | |
| var a;try { | |
| a = l.getStorageSync("dwapp:installation") || {}; | |
| } catch (t) { | |
| console.log(t), a = {}; | |
| }if (!(a.installation_id && a.company_id === n.company.id || u)) return new F.a(function (r, u) { | |
| B.registerPromise = B.registerPromise || new F.a(function (e, r) { | |
| t("post", g("dwapp/register"), { company: n.company, system_info: d }, !0).then(e).catch(r); | |
| }), B.registerPromise.then(function (n) { | |
| return l.setStorageSync("dwapp:installation", n.data.installation), t(e, i, o).then(r).catch(u), n; | |
| }); | |
| });var c = { "content-type": "application/json" };return a.installation_id && (c["X-App-Install-Id"] = a.installation_id), a.siteuser_token && (c["X-App-Token"] = a.siteuser_token), a.user_token && (c["X-App-User-Token"] = a.user_token), new F.a(function (t, n) { | |
| r.request({ method: e, url: i, data: o, header: c, success: function success(n) { | |
| n.dwStatus = n.statusCode, n.dwHeaders = n.header, t(n); | |
| }, fail: function fail() { | |
| for (var t = arguments.length, r = new Array(t), u = 0; u < t; u++) { | |
| r[u] = arguments[u]; | |
| }console.log("wx.request error, method=".concat(e, ", url=").concat(i, ", data, args"), o, r), n.apply(void 0, r); | |
| } }); | |
| }); | |
| }, | |
| S = function S(t, n) { | |
| n = n || {};var e, | |
| r = t.split("/"), | |
| i = r[0].toUpperCase(), | |
| o = r[1], | |
| u = r[2];return ["DYNAMIC_GET", "DYNAMIC_POST", "DYNAMIC_PUT", "DYNAMIC_DELETE"].indexOf(i) > -1 ? (e = g(o + "/" + n.id + "/" + u), i = i.split("_")[1]) : e = g(["query", "post", "save"].indexOf(u) > -1 ? o : ["get", "put", "delete", "update"].indexOf(u) > -1 ? o + "/" + n.id : o + "/" + u), b(i, e, n); | |
| }, | |
| P = function P(t, n) { | |
| n = n || {};var e = t.split("/"), | |
| r = e[0].toUpperCase(), | |
| i = e[1], | |
| o = e[2], | |
| u = _(i + "/" + o);return b(r, u, n); | |
| }, | |
| E = function E(t) { | |
| var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "", | |
| e = "object" === M()(n) ? j()(n).map(function (t) { | |
| return t + "=" + n[t]; | |
| }).join("&") : n, | |
| r = e ? "?" + e : "", | |
| i = "pages/" + t + "/index", | |
| o = p.find(function (t) { | |
| return t.pages.indexOf(i) > -1; | |
| }), | |
| u = o ? o.root : null;return u ? "/" + u + "/pages/" + t + "/index" + r : "/pages/" + t + "/index" + r; | |
| }, | |
| A = { setExtraQuery: function setExtraQuery(t) { | |
| for (var n in t) { | |
| this.page.data.extraQuery[n] = t[n]; | |
| } | |
| }, setShareTitle: function setShareTitle(t) { | |
| this.page.data.share.title = t; | |
| }, setShareImageUrl: function setShareImageUrl(t) { | |
| this.page.data.share.imageUrl = t; | |
| }, addShareCallback: function addShareCallback(t, n) { | |
| this.page.data.share[t].push(n); | |
| }, setOveride: function setOveride(t, n) { | |
| this.page.data.overides[t] = n; | |
| } };return { DwProxy: function (t) { | |
| function i(t, e, u, c) { | |
| var f, | |
| l = c.componentsPackages;return m()(this, i), f = x()(this, (i.__proto__ || y()(i)).call(this)), Object.defineProperty(k()(f), "filters", { configurable: !0, enumerable: !0, writable: !0, value: N.a }), f.platform = "dwapp", f.slide = t, f.data = null, f.actor = e, f.page = null, f.query = {}, f.methods = {}, f.config = n, f.event = null, f.isSwan = o, f.isMy = a, f.actors = null, f.rootSlide = null, f.wx = r, f.wxapp = u, f.getCurrentPages = s, f.app = new W.a(k()(f), f.slide), f.pageLocals = null, f.event = new I.a.EventEmitter(), f.pageEvent = null, f.globalEvent = U.a, f.extra = {}, f.componentsPackages = l, f.$dirty = new G.a(), f; | |
| }return O()(i, t), w()(i, [{ key: "on", value: function value(t, n) { | |
| this.event.on(t, n); | |
| } }, { key: "emit", value: function value(t, n) { | |
| this.event.emit(t, n); | |
| } }, { key: "destroy", value: function value() { | |
| this.event.removeAllListeners(); | |
| } }, { key: "_afterOnLoad", value: function value(t, n, e) { | |
| this.page = t, this.query = n, this.env = e, this.slide.dwapp.new_version && Object(G.b)(this); | |
| } }, { key: "_updateActorData", value: function value(t) { | |
| var n = t.data, | |
| e = t.computed, | |
| r = t.watch, | |
| i = t.actors, | |
| o = t.rootSlide, | |
| u = t.pageLocals, | |
| a = t.pageEvent;this.data = n, this.computed = e, this.watch = r, this.actors = i, this.rootSlide = o, this.pageLocals = u, this.pageEvent = a; | |
| } }, { key: "_setExtraData", value: function value(t) { | |
| this.extra = t; | |
| } }, { key: "selectComponent", value: function value(t) { | |
| return this.page.selectComponent(".".concat(t)); | |
| } }, { key: "getComponentPackage", value: function () { | |
| var t = v()(h.a.mark(function t(n) { | |
| return h.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return t.abrupt("return", this.componentsPackages[n].default);case 1:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function (n) { | |
| return t.apply(this, arguments); | |
| }; | |
| }() }, { key: "getPageLocals", value: function value(t) { | |
| return this.pageLocals[t]; | |
| } }, { key: "setPageLocals", value: function value(t, n) { | |
| this.pageLocals[t] = n; | |
| } }, { key: "getGlobalLocals", value: function value(t) { | |
| return this.wxapp.getGlobalData(t); | |
| } }, { key: "setGlobalLocals", value: function value(t, n) { | |
| this.wxapp.setGlobalData(t, n); | |
| } }, { key: "submitForm", value: function value() { | |
| var t = this;if (!this.rootSlide.id) return this.showModal({ title: "表单提交错误", content: "请先保存小程序再生成小程序!", showCancel: !1 });var n = this.actors.filter(function (t) { | |
| return t.dw.slide.form_field && "_submit" !== t.dw.slide.form_field.type_widget; | |
| }).map(function (t) { | |
| return t.dw; | |
| }), | |
| e = !0, | |
| r = !1, | |
| i = void 0;try { | |
| for (var o, u = f()(n); !(e = (o = u.next()).done); e = !0) { | |
| var a = o.value;if (a.slide.form_field.required && (null == a.data.value || "" === a.data.value)) return this.showModal({ title: "请填写完整!", content: a.slide.form_field.label + "是必填字段!", showCancel: !1 }); | |
| } | |
| } catch (t) { | |
| r = !0, i = t; | |
| } finally { | |
| try { | |
| e || null == u.return || u.return(); | |
| } finally { | |
| if (r) throw i; | |
| } | |
| }var c = n.map(function (t) { | |
| return { name: t.slide.randomid, value: t.data.value }; | |
| });if (!c.length) return this.showModal({ title: "表单提交错误", content: "请先添加表单组件!", showCancel: !1 });var s = { file_data: {}, fields: c, slide_id: this.rootSlide.id };this.showLoading({ title: "提交中..." }), this.request("post/company_form/submit_pageslide_form", s).then(function (n) { | |
| if ("error" === n.data.status) return t.hideLoading(), t.showModal({ title: "表单提交错误", content: n.data.message, showCancel: !1 });if (n.data.order_response) { | |
| var e = n.data.order_response.redirect_data.charge_id;return t.goToHref("charge?id=".concat(e), { redirectTo: !0 }); | |
| }var r = [];for (var i in n.data.data) { | |
| r.push(i + ": " + n.data.data[i]); | |
| }t.hideLoading(), t.showModal({ title: "表单提交成功!", content: r.slice(0, 5).join("\n"), showCancel: !1 }); | |
| }); | |
| } }, { key: "getAbsolutePath", value: function value(t) { | |
| return this.actor.path + ".dwdata." + t; | |
| } }, { key: "buildDapiResourceUrl", value: function value() { | |
| return _.apply(void 0, arguments); | |
| } }, { key: "setWxParse", value: function value(t, n) { | |
| var r = this.getAbsolutePath(t);e.wxParse(r, "html", n || "", this.page, 5); | |
| } }, { key: "_resolveDatas", value: function value(t) { | |
| var n = this, | |
| e = this.page.data.slide.components[this.actor.key].dwdata, | |
| r = {}, | |
| i = function i(t, e) { | |
| var i = n.getAbsolutePath(t);r[i] = void 0 !== e ? e : null; | |
| };for (var o in t) { | |
| var u = t[o];if (o.endsWith("__concat")) !function () { | |
| var t = o.slice(0, -"__concat".length), | |
| n = Object(C.getDataByPath)(e, t), | |
| r = n.lastObj, | |
| a = n.lastKey, | |
| c = r[a];u.forEach(function (n, e) { | |
| var r = "".concat(t, "[").concat(c.length + e, "]");i(r, n); | |
| }); | |
| }();else if (o.endsWith("__uconcat")) !function () { | |
| var t = o.slice(0, -"__uconcat".length), | |
| n = Object(C.getDataByPath)(e, t), | |
| r = n.lastObj, | |
| a = n.lastKey, | |
| c = r[a], | |
| s = u.field, | |
| f = u.list, | |
| l = r[a].map(function (t) { | |
| return t[s]; | |
| });f.filter(function (t) { | |
| return !l.includes(t[s]); | |
| }).forEach(function (n, e) { | |
| var r = "".concat(t, "[").concat(c.length + e, "]");i(r, n); | |
| }); | |
| }();else if (o.endsWith("__push")) { | |
| var a = o.slice(0, -"__push".length), | |
| c = Object(C.getDataByPath)(this.data, a), | |
| s = c.lastObj, | |
| f = c.lastKey, | |
| l = s[f], | |
| h = "".concat(a, "[").concat(l.length, "]");i(h, u); | |
| } else if (o.endsWith("__update")) { | |
| var p = o.slice(0, -"__update".length);for (var v in u) { | |
| i("".concat(p, ".").concat(v), u[v]); | |
| } | |
| } else i(o, u); | |
| }return r; | |
| } }, { key: "setData", value: function value(t, n, e) { | |
| return this.setDatas(c()({}, t, n), e); | |
| } }, { key: "setDatas", value: function value(t, n) { | |
| var e = this._resolveDatas(t);this.page.setData(e, n), this.data = this.page.data.slide.components[this.actor.key].dwdata; | |
| } }, { key: "getDwtools", value: function value() { | |
| return this.filters; | |
| } }, { key: "request", value: function value(t, n) { | |
| try { | |
| return S(t, n); | |
| } catch (e) { | |
| throw console.log("dw.request error: path, data, e", t, n, e), e; | |
| } | |
| } }, { key: "fetch", value: function value(t, n) { | |
| try { | |
| return P(t, n); | |
| } catch (e) { | |
| throw console.log("dw.fetch error: path, data, e", t, n, e), e; | |
| } | |
| } }, { key: "fetchPappApi", value: function value(t) { | |
| var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, | |
| e = t.split("/"), | |
| r = u()(e, 2), | |
| i = r[0], | |
| o = r[1];return P("post/ccode/run_api", { papp_slug: i, api_name: o, event_data: n }); | |
| } }, { key: "alert", value: function value(t, n, e) { | |
| e = e || function () {}, this.showModal({ title: t, content: n, showCancel: !1, success: function success() { | |
| e(); | |
| } }); | |
| } }, { key: "isTabbar", value: function value() { | |
| return this.page.isTabbar(); | |
| } }, { key: "goToHref", value: function value() { | |
| var t;return (t = this.page).goToHref.apply(t, arguments); | |
| } }, { key: "getAbsoluteUrl", value: function value() { | |
| var t;return (t = this.page).getAbsoluteUrl.apply(t, arguments); | |
| } }, { key: "goToPage", value: function value() { | |
| for (var t, n = arguments.length, e = new Array(n), r = 0; r < n; r++) { | |
| e[r] = arguments[r]; | |
| }return (t = this.page).goToPage.apply(t, [this.slide.type].concat(e)); | |
| } }, { key: "goToPappPage", value: function value() { | |
| for (var t, n = arguments.length, e = new Array(n), r = 0; r < n; r++) { | |
| e[r] = arguments[r]; | |
| }return (t = this.page).goToPappPage.apply(t, [this.slide.type].concat(e)); | |
| } }, { key: "goToPappHome", value: function value() { | |
| var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, | |
| n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, | |
| e = n.redirectTo, | |
| r = void 0 !== e && e;if (this.slide.dwapp_home && this.slide.dwapp_home.group && this.slide.dwapp_home.slug) { | |
| var i = this.slide.dwapp_home, | |
| o = i.group, | |
| u = i.slug, | |
| a = "".concat(o, "-").concat(u), | |
| c = j()(t).map(function (n) { | |
| return n + "=" + t[n]; | |
| }).join("&"), | |
| s = c ? "?" + c : "";return this.page.goToLocation(a, s, { redirectTo: r }); | |
| }throw Error("dw.goToPappHome Error: 只能在通用组件子页面内调用此方法"); | |
| } }, { key: "reportFormId", value: function () { | |
| var t = v()(h.a.mark(function t(n) { | |
| var e, | |
| r = arguments;return h.a.wrap(function (t) { | |
| for (;;) { | |
| switch (t.prev = t.next) {case 0: | |
| return e = r.length > 1 && void 0 !== r[1] ? r[1] : "default", t.abrupt("return", this.fetch("post/appusertemplatemessage/create_appusertemplatemessage_record", { formid: n.detail.formId, source: e }));case 2:case "end": | |
| return t.stop();} | |
| } | |
| }, t, this); | |
| }));return function (n) { | |
| return t.apply(this, arguments); | |
| }; | |
| }() }, { key: "$clear", value: function value() { | |
| this.$dirty.length() && this.setDatas(this.$dirty.pop()); | |
| } }, { key: "$throttleClear", value: function value() { | |
| return Object(D.a)(this.$clear.bind(this), 50, this)(); | |
| } }, { key: "decorateMethod", value: function value(t) { | |
| var n = this;return this.slide.dwapp.new_version ? "AsyncFunction" === t.constructor.name ? v()(h.a.mark(function e() { | |
| var r, | |
| i, | |
| o, | |
| u, | |
| a = arguments;return h.a.wrap(function (e) { | |
| for (;;) { | |
| switch (e.prev = e.next) {case 0: | |
| for (r = a.length, i = new Array(r), o = 0; o < r; o++) { | |
| i[o] = a[o]; | |
| }return e.next = 3, t.call.apply(t, [n].concat(i));case 3: | |
| return u = e.sent, n.$throttleClear(), e.abrupt("return", u);case 6:case "end": | |
| return e.stop();} | |
| } | |
| }, e, this); | |
| })) : function () { | |
| for (var e = arguments.length, r = new Array(e), i = 0; i < e; i++) { | |
| r[i] = arguments[i]; | |
| }var o = t.call.apply(t, [n].concat(r));return n.$throttleClear(), o; | |
| } : t; | |
| } }]), i; | |
| }(Object(C.mixin)(R.a, A, l)), DwUtils: i()({ request: S, fetch: P, buildRequest: b, buildAbsoluteUrl: E, filters: N.a }, l) }; | |
| }; | |
| }, function (t, n, e) { | |
| function r(t, n, e) { | |
| return n in t ? i(t, n, { value: e, enumerable: !0, configurable: !0, writable: !0 }) : t[n] = e, t; | |
| }var i = e(100);t.exports = r; | |
| }, function (t, n, e) { | |
| t.exports = e(455); | |
| }, function (t, n, e) { | |
| e(456), t.exports = e(6).Object.getPrototypeOf; | |
| }, function (t, n, e) { | |
| var r = e(61), | |
| i = e(193);e(99)("getPrototypeOf", function () { | |
| return function (t) { | |
| return i(r(t)); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| function r(t, n) { | |
| if (n && ("object" === i(n) || "function" == typeof n)) return n;if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t; | |
| }var i = e(62);t.exports = r; | |
| }, function (t, n, e) { | |
| function r(t, n) { | |
| if ("function" != typeof n && null !== n) throw new TypeError("Super expression must either be null or a function");t.prototype = o(n && n.prototype, { constructor: { value: t, enumerable: !1, writable: !0, configurable: !0 } }), n && (i ? i(t, n) : t.__proto__ = n); | |
| }var i = e(459), | |
| o = e(152);t.exports = r; | |
| }, function (t, n, e) { | |
| t.exports = e(460); | |
| }, function (t, n, e) { | |
| e(461), t.exports = e(6).Object.setPrototypeOf; | |
| }, function (t, n, e) { | |
| var r = e(12);r(r.S, "Object", { setPrototypeOf: e(462).set }); | |
| }, function (t, n, e) { | |
| var r = e(26), | |
| i = e(32), | |
| o = function o(t, n) { | |
| if (i(t), !r(n) && null !== n) throw TypeError(n + ": can't set as prototype!"); | |
| };t.exports = { set: Object.setPrototypeOf || ("__proto__" in {} ? function (t, n, r) { | |
| try { | |
| r = e(37)(Function.call, e(151).f(Object.prototype, "__proto__").set, 2), r(t, []), n = !(t instanceof Array); | |
| } catch (t) { | |
| n = !0; | |
| }return function (t, e) { | |
| return o(t, e), n ? t.__proto__ = e : r(t, e), t; | |
| }; | |
| }({}, !1) : void 0), check: o }; | |
| }, function (t, n, e) { | |
| e(464);var r = e(6).Object;t.exports = function (t, n) { | |
| return r.create(t, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(12);r(r.S, "Object", { create: e(91) }); | |
| }, function (t, n) { | |
| function e(t) { | |
| if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t; | |
| }t.exports = e; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return s; | |
| });var r = e(96), | |
| i = (e.n(r), e(138)), | |
| o = (e.n(i), e(73)), | |
| u = (e.n(o), e(95)), | |
| a = (e.n(u), e(205)), | |
| c = (e.n(a), e(62)), | |
| s = (e.n(c), Array.isArray, function (t, n) { | |
| var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : null, | |
| r = function r() { | |
| t._timeout && clearTimeout(t._timeout);var r = Array.prototype.slice.call(arguments);t._timeout = setTimeout(function () { | |
| return t.apply(e, r); | |
| }, n); | |
| };return r._real = t, r; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return o; | |
| });var r = e(89), | |
| i = e.n(r), | |
| o = new i.a.EventEmitter();o.setMaxListeners(100); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| function r(t, n, e) { | |
| t.__proto__ = n; | |
| }function i(t, n, e) { | |
| for (var r = 0, i = e.length; r < i; r++) { | |
| var o = e[r];Object(N.a)(t, o, n[o]); | |
| } | |
| }function o(t) { | |
| G.target && W.push(G.target), G.target = t; | |
| }function u() { | |
| G.target = W.pop(); | |
| }function a(t) { | |
| var n = t.vm, | |
| e = t.obj, | |
| r = t.key, | |
| i = t.value, | |
| o = t.parent, | |
| u = new G(), | |
| a = O()(e, r);if (!a || !1 !== a.configurable) { | |
| var f = a && a.get, | |
| l = a && a.set, | |
| h = s({ vm: n, key: r, value: i, parent: o });x()(e, r, { enumerable: !0, configurable: !0, get: function get() { | |
| var t = f ? f.call(e) : i;return G.target && (u.depend(), h && h.dep.depend(), Array.isArray(t) && c(t)), t; | |
| }, set: function set(t) { | |
| var a = f ? f.call(e) : i;if (t !== a && (t === t || a === a)) { | |
| o = o || r;var c = V(r, e), | |
| p = c.root, | |
| v = c.path;n.$dirty.push(p, v, t), l ? l.call(e, t) : i = t, h = s({ vm: n, key: r, value: i, parent: o }), u.notify(); | |
| } | |
| } }); | |
| } | |
| }function c(t) { | |
| for (var n, e = 0, r = t.length; e < r; e++) { | |
| n = t[e], n && n.__ob__ && n.__ob__.dep.depend(), Array.isArray(n) && c(n); | |
| } | |
| }function s(t) { | |
| var n = t.vm, | |
| e = t.key, | |
| r = t.value, | |
| i = t.parent;if (Object(N.e)(r)) { | |
| return Object(N.b)(r, "__ob__") && r.__ob__ instanceof B ? r.__ob__ : new B({ vm: n, key: e, value: r, parent: i }); | |
| } | |
| }function f(t, n, e) { | |
| var r = new q({ vm: t, expOrFn: n, cb: e });return function () { | |
| r.teardown(); | |
| }; | |
| }function l(t, n, e) { | |
| "function" == typeof e ? (C.get = h(t, n), C.set = N.f) : (C.get = e.get ? !1 !== e.cache ? h(t, n) : e.get : N.f, C.set = e.set ? e.set : N.f), x()(t, n, C); | |
| }function h(t, n) { | |
| return function () { | |
| var e = t._computedWatchers && t._computedWatchers[n];if (e) return e.dirty && e.evaluate(), G.target && e.depend(), e.value; | |
| }; | |
| }function p(t, n) { | |
| for (var e in n) { | |
| var r = n[e];if (Array.isArray(r)) for (var i = 0; i < r.length; i++) { | |
| f(t, e, r[i]); | |
| } else f(t, e, r); | |
| } | |
| }function v(t, n) { | |
| var e = t._computedWatchers = w()(null);for (var r in n) { | |
| var i = n[r], | |
| o = "function" == typeof i ? i : i.get;e[r] = new q({ vm: t, key: r, expOrFn: o, options: H }), r in t.data || l(t, r, i); | |
| } | |
| }function d(t, n) { | |
| j()(n).forEach(function (e) { | |
| t[e] = n[e]; | |
| }); | |
| }function y(t, n, e) { | |
| C.get = function () { | |
| return this[n][e]; | |
| }, C.set = function (t) { | |
| this[n][e] = t; | |
| }, x()(t, e, C); | |
| }function g(t) { | |
| var n, | |
| e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};n = "function" == typeof e ? e.call(t) : e, t._data = n, j()(n).forEach(function (n) { | |
| y(t, "_data", n); | |
| }), s({ vm: t, key: "", value: n, parent: "" }); | |
| }function m(t) { | |
| t.methods && d(t, t.methods), g(t, t.data), t.computed && v(t, t.computed), t.watch && p(t, t.watch), t.$throttleClear(); | |
| }e.d(n, "a", function () { | |
| return z; | |
| }), n.b = m;var _ = e(152), | |
| w = e.n(_), | |
| b = e(100), | |
| x = e.n(b), | |
| S = e(469), | |
| O = e.n(S), | |
| P = e(472), | |
| k = e.n(P), | |
| E = e(73), | |
| j = e.n(E), | |
| A = e(146), | |
| M = e.n(A), | |
| T = e(147), | |
| F = e.n(T), | |
| L = e(487), | |
| I = e.n(L), | |
| N = e(211), | |
| D = e(491), | |
| R = I()(D.a), | |
| C = { enumerable: !0, configurable: !0, get: N.f, set: N.f }, | |
| U = 0, | |
| G = function () { | |
| function t() { | |
| M()(this, t), this.id = U++, this.subs = []; | |
| }return F()(t, [{ key: "addSub", value: function value(t) { | |
| this.subs.push(t); | |
| } }, { key: "removeSub", value: function value(t) { | |
| Object(N.h)(this.subs, t); | |
| } }, { key: "depend", value: function value() { | |
| t.target && t.target.addDep(this); | |
| } }, { key: "notify", value: function value() { | |
| for (var t = this.subs.slice(), n = 0, e = t.length; n < e; n++) { | |
| t[n].update(); | |
| } | |
| } }]), t; | |
| }();G.target = null;var W = [], | |
| V = function V(t, n) { | |
| var e = "";if (n && (e = n.__ob__.path)) { | |
| e = Object(N.d)(t) ? "".concat(e, "[").concat(t, "]") : "".concat(e, ".").concat(t);for (var r = "", i = 0; i < e.length && "." !== e[i] && "[" !== e[i];) { | |
| r += e[i++]; | |
| }return { path: e, root: r }; | |
| }return { root: t, path: t }; | |
| }, | |
| B = function () { | |
| function t(n) { | |
| var e = n.vm, | |
| o = n.key, | |
| u = n.value, | |
| a = n.parent;M()(this, t), this.value = u, this.vm = e, this.key = o;var c = V(o, a);if (this.root = c.root, this.path = c.path, this.dep = new G(), Object(N.a)(u, "__ob__", this), Array.isArray(u)) { | |
| (N.c ? r : i)(u, D.a, R), this.observeArray(u); | |
| } else this.walk(u); | |
| }return F()(t, [{ key: "walk", value: function value(t) { | |
| for (var n = j()(t), e = 0; e < n.length; e++) { | |
| a({ vm: this.vm, obj: t, key: n[e], value: t[n[e]], parent: t }); | |
| } | |
| } }, { key: "observeArray", value: function value(t) { | |
| for (var n = 0, e = t.length; n < e; n++) { | |
| s({ vm: this.vm, key: n, value: t[n], parent: t }); | |
| } | |
| } }]), t; | |
| }(), | |
| q = function () { | |
| function t(n) { | |
| var e = n.vm, | |
| r = n.key, | |
| i = n.expOrFn, | |
| o = n.cb, | |
| u = n.options;M()(this, t), this.vm = e, this.key = r, e._watchers = e._watchers || [], e._watchers.push(this), this.lazy = !!u && !!u.lazy, this.id = ++U, this.cb = o || N.f, this.active = !0, this.dirty = this.lazy, this.deps = [], this.newDeps = [], this.depIds = new k.a(), this.newDepIds = new k.a(), "function" == typeof i ? this.getter = i : (this.getter = Object(N.g)(i), this.getter || (this.getter = N.f)), this.value = this.get(), this.dirty && this.vm.$dirty.push(this.key, this.key, this.value); | |
| }return F()(t, [{ key: "get", value: function value() { | |
| o(this);var t = this.getter.call(this.vm, this.vm);return u(), this.cleanupDeps(), t; | |
| } }, { key: "evaluate", value: function value() { | |
| this.value = this.get(), this.dirty = !1; | |
| } }, { key: "depend", value: function value() { | |
| for (var t = this.deps.length; t--;) { | |
| this.deps[t].depend(); | |
| } | |
| } }, { key: "addDep", value: function value(t) { | |
| var n = t.id;this.newDepIds.has(n) || (this.newDepIds.add(n), this.newDeps.push(t), this.depIds.has(n) || t.addSub(this)); | |
| } }, { key: "cleanupDeps", value: function value() { | |
| for (var t = this.deps.length; t--;) { | |
| var n = this.deps[t];this.newDepIds.has(n.id) || n.removeSub(this); | |
| }var e = this.depIds;this.depIds = this.newDepIds, this.newDepIds = e, this.newDepIds.clear(), e = this.deps, this.deps = this.newDeps, this.newDeps = e, this.newDeps.length = 0; | |
| } }, { key: "update", value: function value() { | |
| if (this.lazy) { | |
| this.dirty = !0;var t = this.get();this.value !== t && (this.value = t, this.vm.$dirty.push(this.key, this.key, t)); | |
| } else this.run(); | |
| } }, { key: "run", value: function value() { | |
| if (this.active) { | |
| var t = this.get(), | |
| n = this.value;this.value = t, this.cb.call(this.vm, t, n); | |
| } | |
| } }, { key: "teardown", value: function value() { | |
| if (this.active) { | |
| Object(N.h)(this.vm._watchers, this);for (var t = this.deps.length; t--;) { | |
| this.deps[t].removeSub(this); | |
| }this.active = !1; | |
| } | |
| } }]), t; | |
| }(), | |
| z = function () { | |
| function t(n) { | |
| M()(this, t), this.reset(), this.type = n || "path", this.active = !0; | |
| }return F()(t, [{ key: "push", value: function value(t, n, e) { | |
| this.active && (this._path[n] = e, this._length++); | |
| } }, { key: "pop", value: function value() { | |
| var t = w()(null);return "path" === this.type ? t = this._path : this.type, this.reset(), t; | |
| } }, { key: "reset", value: function value() { | |
| this._path = {}, this._length = 0; | |
| } }, { key: "length", value: function value() { | |
| return this._length; | |
| } }, { key: "vacuo", value: function value(t) { | |
| this.active = !1, "function" == typeof t && t(), this.active = !0; | |
| } }]), t; | |
| }(), | |
| H = { lazy: !0 }; | |
| }, function (t, n, e) { | |
| t.exports = e(470); | |
| }, function (t, n, e) { | |
| e(471);var r = e(6).Object;t.exports = function (t, n) { | |
| return r.getOwnPropertyDescriptor(t, n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(54), | |
| i = e(151).f;e(99)("getOwnPropertyDescriptor", function () { | |
| return function (t, n) { | |
| return i(r(t), n); | |
| }; | |
| }); | |
| }, function (t, n, e) { | |
| t.exports = e(473); | |
| }, function (t, n, e) { | |
| e(141), e(59), e(71), e(474), e(480), e(483), e(485), t.exports = e(6).Set; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(475), | |
| i = e(210), | |
| o = "Set";t.exports = e(476)(o, function (t) { | |
| return function () { | |
| return t(this, arguments.length > 0 ? arguments[0] : void 0); | |
| }; | |
| }, { add: function add(t) { | |
| return r.def(i(this, o), t = 0 === t ? 0 : t, t); | |
| } }, r); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(25).f, | |
| i = e(91), | |
| o = e(144), | |
| u = e(37), | |
| a = e(142), | |
| c = e(72), | |
| s = e(130), | |
| f = e(197), | |
| l = e(203), | |
| h = e(33), | |
| p = e(149).fastKey, | |
| v = e(210), | |
| d = h ? "_s" : "size", | |
| y = function y(t, n) { | |
| var e, | |
| r = p(n);if ("F" !== r) return t._i[r];for (e = t._f; e; e = e.n) { | |
| if (e.k == n) return e; | |
| } | |
| };t.exports = { getConstructor: function getConstructor(t, n, e, s) { | |
| var f = t(function (t, r) { | |
| a(t, f, n, "_i"), t._t = n, t._i = i(null), t._f = void 0, t._l = void 0, t[d] = 0, void 0 != r && c(r, e, t[s], t); | |
| });return o(f.prototype, { clear: function clear() { | |
| for (var t = v(this, n), e = t._i, r = t._f; r; r = r.n) { | |
| r.r = !0, r.p && (r.p = r.p.n = void 0), delete e[r.i]; | |
| }t._f = t._l = void 0, t[d] = 0; | |
| }, delete: function _delete(t) { | |
| var e = v(this, n), | |
| r = y(e, t);if (r) { | |
| var i = r.n, | |
| o = r.p;delete e._i[r.i], r.r = !0, o && (o.n = i), i && (i.p = o), e._f == r && (e._f = i), e._l == r && (e._l = o), e[d]--; | |
| }return !!r; | |
| }, forEach: function forEach(t) { | |
| v(this, n);for (var e, r = u(t, arguments.length > 1 ? arguments[1] : void 0, 3); e = e ? e.n : this._f;) { | |
| for (r(e.v, e.k, this); e && e.r;) { | |
| e = e.p; | |
| } | |
| } | |
| }, has: function has(t) { | |
| return !!y(v(this, n), t); | |
| } }), h && r(f.prototype, "size", { get: function get() { | |
| return v(this, n)[d]; | |
| } }), f; | |
| }, def: function def(t, n, e) { | |
| var r, | |
| i, | |
| o = y(t, n);return o ? o.v = e : (t._l = o = { i: i = p(n, !0), k: n, v: e, p: r = t._l, n: void 0, r: !1 }, t._f || (t._f = o), r && (r.n = o), t[d]++, "F" !== i && (t._i[i] = o)), t; | |
| }, getEntry: y, setStrong: function setStrong(t, n, e) { | |
| s(t, n, function (t, e) { | |
| this._t = v(t, n), this._k = e, this._l = void 0; | |
| }, function () { | |
| for (var t = this, n = t._k, e = t._l; e && e.r;) { | |
| e = e.p; | |
| }return t._t && (t._l = e = e ? e.n : t._t._f) ? "keys" == n ? f(0, e.k) : "values" == n ? f(0, e.v) : f(0, [e.k, e.v]) : (t._t = void 0, f(1)); | |
| }, e ? "entries" : "values", !e, !0), l(n); | |
| } }; | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(14), | |
| i = e(12), | |
| o = e(149), | |
| u = e(52), | |
| a = e(40), | |
| c = e(144), | |
| s = e(72), | |
| f = e(142), | |
| l = e(26), | |
| h = e(70), | |
| p = e(25).f, | |
| v = e(477)(0), | |
| d = e(33);t.exports = function (t, n, e, y, g, m) { | |
| var _ = r[t], | |
| w = _, | |
| b = g ? "set" : "add", | |
| x = w && w.prototype, | |
| S = {};return d && "function" == typeof w && (m || x.forEach && !u(function () { | |
| new w().entries().next(); | |
| })) ? (w = n(function (n, e) { | |
| f(n, w, t, "_c"), n._c = new _(), void 0 != e && s(e, g, n[b], n); | |
| }), v("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","), function (t) { | |
| var n = "add" == t || "set" == t;t in x && (!m || "clear" != t) && a(w.prototype, t, function (e, r) { | |
| if (f(this, w, t), !n && m && !l(e)) return "get" == t && void 0;var i = this._c[t](0 === e ? 0 : e, r);return n ? this : i; | |
| }); | |
| }), m || p(w.prototype, "size", { get: function get() { | |
| return this._c.size; | |
| } })) : (w = y.getConstructor(n, t, g, b), c(w.prototype, e), o.NEED = !0), h(w, t), S[t] = w, i(i.G + i.W + i.F, S), m || y.setStrong(w, t, g), w; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(37), | |
| i = e(133), | |
| o = e(61), | |
| u = e(92), | |
| a = e(478);t.exports = function (t, n) { | |
| var e = 1 == t, | |
| c = 2 == t, | |
| s = 3 == t, | |
| f = 4 == t, | |
| l = 6 == t, | |
| h = 5 == t || l, | |
| p = n || a;return function (n, a, v) { | |
| for (var d, y, g = o(n), m = i(g), _ = r(a, v, 3), w = u(m.length), b = 0, x = e ? p(n, w) : c ? p(n, 0) : void 0; w > b; b++) { | |
| if ((h || b in m) && (d = m[b], y = _(d, b, g), t)) if (e) x[b] = y;else if (y) switch (t) {case 3: | |
| return !0;case 5: | |
| return d;case 6: | |
| return b;case 2: | |
| x.push(d);} else if (f) return !1; | |
| }return l ? -1 : s || f ? f : x; | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(479);t.exports = function (t, n) { | |
| return new (r(t))(n); | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(26), | |
| i = e(206), | |
| o = e(13)("species");t.exports = function (t) { | |
| var n;return i(t) && (n = t.constructor, "function" != typeof n || n !== Array && !i(n.prototype) || (n = void 0), r(n) && null === (n = n[o]) && (n = void 0)), void 0 === n ? Array : n; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(12);r(r.P + r.R, "Set", { toJSON: e(481)("Set") }); | |
| }, function (t, n, e) { | |
| var r = e(94), | |
| i = e(482);t.exports = function (t) { | |
| return function () { | |
| if (r(this) != t) throw TypeError(t + "#toJSON isn't generic");return i(this); | |
| }; | |
| }; | |
| }, function (t, n, e) { | |
| var r = e(72);t.exports = function (t, n) { | |
| var e = [];return r(t, !1, e.push, e, n), e; | |
| }; | |
| }, function (t, n, e) { | |
| e(484)("Set"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(12);t.exports = function (t) { | |
| r(r.S, t, { of: function of() { | |
| for (var t = arguments.length, n = new Array(t); t--;) { | |
| n[t] = arguments[t]; | |
| }return new this(n); | |
| } }); | |
| }; | |
| }, function (t, n, e) { | |
| e(486)("Set"); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(12), | |
| i = e(66), | |
| o = e(37), | |
| u = e(72);t.exports = function (t) { | |
| r(r.S, t, { from: function from(t) { | |
| var n, | |
| e, | |
| r, | |
| a, | |
| c = arguments[1];return i(this), n = void 0 !== c, n && i(c), void 0 == t ? new this() : (e = [], n ? (r = 0, a = o(c, arguments[2], 2), u(t, !1, function (t) { | |
| e.push(a(t, r++)); | |
| })) : u(t, !1, e.push, e), new this(e)); | |
| } }); | |
| }; | |
| }, function (t, n, e) { | |
| t.exports = e(488); | |
| }, function (t, n, e) { | |
| e(489);var r = e(6).Object;t.exports = function (t) { | |
| return r.getOwnPropertyNames(t); | |
| }; | |
| }, function (t, n, e) { | |
| e(99)("getOwnPropertyNames", function () { | |
| return e(207).f; | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| var r = e(62);e.n(r), e(212); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return a; | |
| });var r = e(152), | |
| i = e.n(r), | |
| o = e(211), | |
| u = Array.prototype, | |
| a = i()(u);["push", "pop", "shift", "unshift", "splice", "sort", "reverse"].forEach(function (t) { | |
| var n = u[t];Object(o.a)(a, t, function () { | |
| for (var e = arguments.length, r = new Array(e), i = 0; i < e; i++) { | |
| r[i] = arguments[i]; | |
| }var o, | |
| u = n.apply(this, r), | |
| a = this.__ob__, | |
| c = a.vm;switch ("push" !== t && c.$dirty.push(a.key, a.path, a.value), t) {case "push": | |
| c.$dirty.push(a.key, "".concat(a.path, "[").concat(u - 1, "]"), r[0]);break;case "unshift": | |
| o = a.value;break;case "splice": | |
| o = r.slice(2);}return o && a.observeArray(a.key, o), a.dep.notify(), u; | |
| }); | |
| }); | |
| }, function (t, n, e) { | |
| "use strict"; | |
| e.d(n, "a", function () { | |
| return o; | |
| });var r = e(209), | |
| i = e.n(r), | |
| o = function o(t) { | |
| var n = t.wx, | |
| e = (t.isSwan, t.isMy);return { getStorageSync: function getStorageSync(t) { | |
| if (e) return n.getStorageSync({ key: t }).data;try { | |
| return n.getStorageSync(t); | |
| } catch (t) { | |
| return null; | |
| } | |
| }, setStorageSync: function setStorageSync(t, r) { | |
| return e ? n.setStorageSync({ key: t, data: r }) : n.setStorageSync(t, r); | |
| }, showModal: function showModal(t) { | |
| e ? n.alert(i()({}, t, { title: t.title, content: t.content })) : n.showModal(i()({}, t)); | |
| }, showLoading: function showLoading(t) { | |
| e ? n.showLoading(i()({}, t, { content: t.title })) : n.showLoading(i()({}, t)); | |
| }, hideLoading: function hideLoading() { | |
| return n.hideLoading.apply(n, arguments); | |
| } }; | |
| }; | |
| }]); | |
| /***/ }), | |
| /***/ 0: | |
| /*!************************************************************!*\ | |
| !*** multi ./.tea/entryFiles-development/index$.worker.js ***! | |
| \************************************************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports, __webpack_require__) { | |
| module.exports = __webpack_require__(/*! C:\Users\somarl\dev\defaultaliapp2\.tea\entryFiles-development\index$.worker.js */"./.tea/entryFiles-development/index$.worker.js"); | |
| /***/ }), | |
| /***/ "@alipay/af-appx": | |
| /*!******************************!*\ | |
| !*** external "self.AFAppX" ***! | |
| \******************************/ | |
| /*! no static exports found */ | |
| /***/ (function(module, exports) { | |
| module.exports = self.AFAppX; | |
| /***/ }) | |
| /******/ }); | |
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImludGVybmFsOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL29iamVjdC9hc3NpZ24uanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2NvcmUtanMvc3ltYm9sLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9jb3JlLWpzL3N5bWJvbC9pdGVyYXRvci5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvYmFiZWwtcnVudGltZS9oZWxwZXJzL3R5cGVvZi5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL3N5bWJvbC9pbmRleC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9mbi9zeW1ib2wvaXRlcmF0b3IuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmEtZnVuY3Rpb24uanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmFkZC10by11bnNjb3BhYmxlcy5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuYW4tb2JqZWN0LmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5jb2YuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmNvcmUuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmN0eC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuZGVmaW5lZC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuZGVzY3JpcHRvcnMuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmVudW0ta2V5cy5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuZXhwb3J0LmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5mYWlscy5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuZ2V0LW5hbWVzLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5nbG9iYWwuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmhhcy5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuaGlkZS5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuaW9iamVjdC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuaXMtYXJyYXkuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmlzLW9iamVjdC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuaXRlci1jcmVhdGUuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLml0ZXItZGVmaW5lLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5pdGVyLXN0ZXAuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLml0ZXJhdG9ycy5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLmtleW9mLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5saWJyYXJ5LmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5vYmplY3QtYXNzaWduLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5wcm9wZXJ0eS1kZXNjLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC5yZWRlZmluZS5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuc2V0LXRvLXN0cmluZy10YWcuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLnNoYXJlZC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQuc3RyaW5nLWF0LmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC50by1pbnRlZ2VyLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC50by1pb2JqZWN0LmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvJC50by1vYmplY3QuanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy8kLnVpZC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzLyQud2tzLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LmFycmF5Lml0ZXJhdG9yLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2Lm9iamVjdC5hc3NpZ24uanMiLCJpbnRlcm5hbDovLy9jOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9lczYuc3RyaW5nLml0ZXJhdG9yLmpzIiwiaW50ZXJuYWw6Ly8vYzovUHJvZ3JhbSBGaWxlcy9hbGkvbWluaS9yZXNvdXJjZXMvYXBwL2V4dGVuc2lvbnMvdm9sYW5zLWlkZS10aW55LXByb2plY3QuYXNhci9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvZXM2LnN5bWJvbC5qcyIsImludGVybmFsOi8vL2M6L1Byb2dyYW0gRmlsZXMvYWxpL21pbmkvcmVzb3VyY2VzL2FwcC9leHRlbnNpb25zL3ZvbGFucy1pZGUtdGlueS1wcm9qZWN0LmFzYXIvbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL3dlYi5kb20uaXRlcmFibGUuanMiLCJpbnRlcm5hbDovLy9DOi9Qcm9ncmFtIEZpbGVzL2FsaS9taW5pL3Jlc291cmNlcy9hcHAvZXh0ZW5zaW9ucy92b2xhbnMtaWRlLXRpbnktcHJvamVjdC5hc2FyL25vZGVfbW9kdWxlcy93ZWJwYWNrL2J1aWxkaW4vZ2xvYmFsLmpzIiwiaW50ZXJuYWw6Ly8vLi8udGVhL2VudHJ5RmlsZXMtZGV2ZWxvcG1lbnQvY29uZmlnJC5qcyIsImludGVybmFsOi8vLy4vLnRlYS9lbnRyeUZpbGVzLWRldmVsb3BtZW50L2luZGV4JC53b3JrZXIuanMiLCJhcHA6Ly8vYXBwLmpzIiwiYXBwOi8vL2NvbXBvbmVudHMvYWRkLWJ1dHRvbi9hZGQtYnV0dG9uLmpzIiwiYXBwOi8vL2NvbXBvbmVudHMvc2hhcmVkL3dhY29tcG9uZW50LmpzIiwiYXBwOi8vL3BhZ2VzL2FjY291bnQtbG9naW4vaW5kZXguanMiLCJhcHA6Ly8vcGFnZXMvYWRkLXRvZG8vYWRkLXRvZG8uanMiLCJhcHA6Ly8vcGFnZXMvcGx1Z2luLWNvbXpiYWRnZS9pbmRleC5qcyIsImFwcDovLy9wYWdlcy9wbHVnaW4tY29temxvYWRpbmcvaW5kZXguanMiLCJhcHA6Ly8vcGFnZXMvcGx1Z2luLWRlYnVnL2luZGV4LmpzIiwiYXBwOi8vL3BhZ2VzL3RvZG9zL3RvZG9zLmpzIiwiYXBwOi8vL3V0aWxzL2NvbmZpZy5qcyIsImFwcDovLy91dGlscy9kdy5qcyIsImFwcDovLy91dGlscy9kd19zaGFyZWQuanMiLCJpbnRlcm5hbDovLy9leHRlcm5hbCBcInNlbGYuQUZBcHBYXCIiXSwibmFtZXMiOlsiZyIsImdsb2JhbCIsInNlbGYiLCJhcHBYUnVudGltZUNvbmZpZyIsImFwcFhBcHBKc29uIiwiSURFX0hBQ0tfQ09ERSIsIlgiLCJJREVfSEFDS19DT0RFX0JBQ0siLCJyZXF1aXJlIiwic3VjY2VzcyIsImJvb3RzdHJhcEFwcCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0Esa0RBQTBDLGdDQUFnQztBQUMxRTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUF3RCxrQkFBa0I7QUFDMUU7QUFDQSx5REFBaUQsY0FBYztBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaURBQXlDLGlDQUFpQztBQUMxRSx3SEFBZ0gsbUJBQW1CLEVBQUU7QUFDckk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxtQ0FBMkIsMEJBQTBCLEVBQUU7QUFDdkQseUNBQWlDLGVBQWU7QUFDaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0EsOERBQXNELCtEQUErRDs7QUFFckg7QUFDQTs7O0FBR0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbEZBLGtCQUFrQixZQUFZLG1CQUFPLENBQUMsbUxBQWtDLHNCOzs7Ozs7Ozs7OztBQ0F4RSxrQkFBa0IsWUFBWSxtQkFBTyxDQUFDLDJLQUEyQixzQjs7Ozs7Ozs7Ozs7QUNBakUsa0JBQWtCLFlBQVksbUJBQU8sQ0FBQyx1TEFBb0Msc0I7Ozs7Ozs7Ozs7OztBQ0E3RDs7QUFFYjs7QUFFQSxjQUFjLG1CQUFPLENBQUMsOEtBQTBCOztBQUVoRDs7QUFFQSxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQSxpQkFBaUIsc0JBQXNCO0FBQ3ZDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEU7Ozs7Ozs7Ozs7OztBQ3RCYTs7QUFFYjs7QUFFQSxnQkFBZ0IsbUJBQU8sQ0FBQyxrTEFBNEI7O0FBRXBEOztBQUVBLGNBQWMsbUJBQU8sQ0FBQyxnS0FBbUI7O0FBRXpDOztBQUVBLGlIQUFpSCxtQkFBbUIsRUFBRSxtQkFBbUIsNEpBQTRKOztBQUVyVCxzQ0FBc0MsdUNBQXVDLGdCQUFnQjs7QUFFN0Y7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBLEU7Ozs7Ozs7Ozs7O0FDcEJBLG1CQUFPLENBQUMsMkxBQWlDO0FBQ3pDLGlCQUFpQixtQkFBTyxDQUFDLHFLQUFzQixnQjs7Ozs7Ozs7Ozs7QUNEL0MsbUJBQU8sQ0FBQyw2S0FBMEI7QUFDbEMsbUJBQU8sQ0FBQyxpTUFBb0M7QUFDNUMsaUJBQWlCLG1CQUFPLENBQUMscUtBQXNCLFM7Ozs7Ozs7Ozs7O0FDRi9DLG1CQUFPLENBQUMsK0xBQW1DO0FBQzNDLG1CQUFPLENBQUMseUxBQWdDO0FBQ3hDLGlCQUFpQixtQkFBTyxDQUFDLG1LQUFxQixjOzs7Ozs7Ozs7OztBQ0Y5QztBQUNBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ0hBLDRCQUE0QixlOzs7Ozs7Ozs7OztBQ0E1QixlQUFlLG1CQUFPLENBQUMsbUtBQWU7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7QUNKQSxpQkFBaUI7O0FBRWpCO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ0pBLDZCQUE2QjtBQUM3QixxQ0FBcUMsZ0M7Ozs7Ozs7Ozs7O0FDRHJDO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMscUtBQWdCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEU7Ozs7Ozs7Ozs7O0FDSkE7QUFDQSxrQkFBa0IsbUJBQU8sQ0FBQywySkFBVztBQUNyQyxpQ0FBaUMsUUFBUSxnQkFBZ0IsVUFBVSxHQUFHO0FBQ3RFLENBQUMsRTs7Ozs7Ozs7Ozs7QUNIRDtBQUNBLFFBQVEsbUJBQU8sQ0FBQywrSUFBSztBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7QUNiQSxnQkFBZ0IsbUJBQU8sQ0FBQyw2SkFBWTtBQUNwQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5SkFBVTtBQUNsQyxnQkFBZ0IsbUJBQU8sQ0FBQyx1SkFBUztBQUNqQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1FQUFtRTtBQUNuRSxxRkFBcUY7QUFDckY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCwrREFBK0Q7QUFDL0Q7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkLGNBQWM7QUFDZCxjQUFjO0FBQ2QsY0FBYztBQUNkLGVBQWU7QUFDZixlQUFlO0FBQ2YseUI7Ozs7Ozs7Ozs7O0FDN0NBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7QUNOQTtBQUNBLGdCQUFnQixtQkFBTyxDQUFDLHFLQUFnQjtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQywrSUFBSztBQUM3QixrQkFBa0I7O0FBRWxCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ25CQTtBQUNBO0FBQ0E7QUFDQSx1Q0FBdUMsZ0M7Ozs7Ozs7Ozs7O0FDSHZDLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7QUNIQSxpQkFBaUIsbUJBQU8sQ0FBQywrSUFBSztBQUM5QixpQkFBaUIsbUJBQU8sQ0FBQywyS0FBbUI7QUFDNUMsaUJBQWlCLG1CQUFPLENBQUMsdUtBQWlCO0FBQzFDO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ1BBO0FBQ0EsVUFBVSxtQkFBTyxDQUFDLHVKQUFTO0FBQzNCO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ0pBO0FBQ0EsVUFBVSxtQkFBTyxDQUFDLHVKQUFTO0FBQzNCO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ0pBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7Ozs7QUNGYTtBQUNiLHFCQUFxQixtQkFBTyxDQUFDLCtJQUFLO0FBQ2xDLHFCQUFxQixtQkFBTyxDQUFDLDJLQUFtQjtBQUNoRCxxQkFBcUIsbUJBQU8sQ0FBQyxtTEFBdUI7QUFDcEQ7O0FBRUE7QUFDQSxtQkFBTyxDQUFDLHlKQUFVLHFCQUFxQixtQkFBTyxDQUFDLHVKQUFTLDBCQUEwQixhQUFhLEVBQUU7O0FBRWpHO0FBQ0EsdURBQXVELDBCQUEwQjtBQUNqRjtBQUNBLEU7Ozs7Ozs7Ozs7OztBQ1phO0FBQ2IscUJBQXFCLG1CQUFPLENBQUMsK0pBQWE7QUFDMUMscUJBQXFCLG1CQUFPLENBQUMsNkpBQVk7QUFDekMscUJBQXFCLG1CQUFPLENBQUMsaUtBQWM7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMseUpBQVU7QUFDdkMscUJBQXFCLG1CQUFPLENBQUMsdUpBQVM7QUFDdEMscUJBQXFCLG1CQUFPLENBQUMsbUtBQWU7QUFDNUMscUJBQXFCLG1CQUFPLENBQUMsdUtBQWlCO0FBQzlDLHFCQUFxQixtQkFBTyxDQUFDLG1MQUF1QjtBQUNwRCxxQkFBcUIsbUJBQU8sQ0FBQywrSUFBSztBQUNsQyxxQkFBcUIsbUJBQU8sQ0FBQyx1SkFBUztBQUN0QztBQUNBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEIsYUFBYTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxvQ0FBb0M7QUFDNUUsNENBQTRDLG9DQUFvQztBQUNoRixLQUFLLDJCQUEyQixvQ0FBb0M7QUFDcEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLG1CQUFtQjtBQUNyQztBQUNBO0FBQ0EsbUNBQW1DLDJCQUEyQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ2pFQTtBQUNBLFVBQVU7QUFDVixFOzs7Ozs7Ozs7OztBQ0ZBLG9COzs7Ozs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7QUNaQSxnQkFBZ0IsbUJBQU8sQ0FBQywrSUFBSztBQUM3QixnQkFBZ0IsbUJBQU8sQ0FBQyxxS0FBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ1RBLHNCOzs7Ozs7Ozs7OztBQ0FBO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLCtJQUFLO0FBQzVCLGVBQWUsbUJBQU8sQ0FBQyxtS0FBZTtBQUN0QyxlQUFlLG1CQUFPLENBQUMsK0pBQWE7O0FBRXBDO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsMkpBQVc7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0NBQWtDLFVBQVUsRUFBRTtBQUM5QyxhQUFhLGdDQUFnQztBQUM3QyxDQUFDLG9DQUFvQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsaUI7Ozs7Ozs7Ozs7O0FDaENEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7QUNQQSxpQkFBaUIsbUJBQU8sQ0FBQyx5SkFBVSxFOzs7Ozs7Ozs7OztBQ0FuQyxVQUFVLG1CQUFPLENBQUMsK0lBQUs7QUFDdkIsVUFBVSxtQkFBTyxDQUFDLHVKQUFTO0FBQzNCLFVBQVUsbUJBQU8sQ0FBQyx1SkFBUzs7QUFFM0I7QUFDQSxrRUFBa0UsK0JBQStCO0FBQ2pHLEU7Ozs7Ozs7Ozs7O0FDTkEsYUFBYSxtQkFBTyxDQUFDLDZKQUFZO0FBQ2pDO0FBQ0EsbURBQW1EO0FBQ25EO0FBQ0EsdUNBQXVDO0FBQ3ZDLEU7Ozs7Ozs7Ozs7O0FDTEEsZ0JBQWdCLG1CQUFPLENBQUMscUtBQWdCO0FBQ3hDLGdCQUFnQixtQkFBTyxDQUFDLCtKQUFhO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ2hCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRTs7Ozs7Ozs7Ozs7QUNMQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQywrSkFBYTtBQUNuQyxjQUFjLG1CQUFPLENBQUMsK0pBQWE7QUFDbkM7QUFDQTtBQUNBLEU7Ozs7Ozs7Ozs7O0FDTEE7QUFDQSxjQUFjLG1CQUFPLENBQUMsK0pBQWE7QUFDbkM7QUFDQTtBQUNBLEU7Ozs7Ozs7Ozs7O0FDSkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxFOzs7Ozs7Ozs7OztBQ0pBLGFBQWEsbUJBQU8sQ0FBQyw2SkFBWTtBQUNqQyxhQUFhLG1CQUFPLENBQUMsdUpBQVM7QUFDOUIsYUFBYSxtQkFBTyxDQUFDLDZKQUFZO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLEU7Ozs7Ozs7Ozs7OztBQ05hO0FBQ2IsdUJBQXVCLG1CQUFPLENBQUMscUxBQXdCO0FBQ3ZELHVCQUF1QixtQkFBTyxDQUFDLG1LQUFlO0FBQzlDLHVCQUF1QixtQkFBTyxDQUFDLG1LQUFlO0FBQzlDLHVCQUF1QixtQkFBTyxDQUFDLHFLQUFnQjs7QUFFL0M7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUJBQU8sQ0FBQyx1S0FBaUI7QUFDMUMsZ0NBQWdDO0FBQ2hDLGNBQWM7QUFDZCxpQkFBaUI7QUFDakI7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLDRCOzs7Ozs7Ozs7OztBQ2pDQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyw2SkFBWTs7QUFFbEMsMENBQTBDLFFBQVEsbUJBQU8sQ0FBQywyS0FBbUIsRUFBRSxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0hsRTtBQUNiLFdBQVcsbUJBQU8sQ0FBQyxtS0FBZTs7QUFFbEM7QUFDQSxtQkFBTyxDQUFDLHVLQUFpQjtBQUN6Qiw2QkFBNkI7QUFDN0IsY0FBYztBQUNkO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLCtCQUErQjtBQUMvQjtBQUNBO0FBQ0EsVUFBVTtBQUNWLENBQUMsRTs7Ozs7Ozs7Ozs7O0FDaEJZO0FBQ2I7QUFDQSxxQkFBcUIsbUJBQU8sQ0FBQywrSUFBSztBQUNsQyxxQkFBcUIsbUJBQU8sQ0FBQyw2SkFBWTtBQUN6QyxxQkFBcUIsbUJBQU8sQ0FBQyx1SkFBUztBQUN0QyxxQkFBcUIsbUJBQU8sQ0FBQyx1S0FBaUI7QUFDOUMscUJBQXFCLG1CQUFPLENBQUMsNkpBQVk7QUFDekMscUJBQXFCLG1CQUFPLENBQUMsaUtBQWM7QUFDM0MscUJBQXFCLG1CQUFPLENBQUMsMkpBQVc7QUFDeEMscUJBQXFCLG1CQUFPLENBQUMsNkpBQVk7QUFDekMscUJBQXFCLG1CQUFPLENBQUMsbUxBQXVCO0FBQ3BELHFCQUFxQixtQkFBTyxDQUFDLHVKQUFTO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLHVKQUFTO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLDJKQUFXO0FBQ3hDLHFCQUFxQixtQkFBTyxDQUFDLG1LQUFlO0FBQzVDLHFCQUFxQixtQkFBTyxDQUFDLG1LQUFlO0FBQzVDLHFCQUFxQixtQkFBTyxDQUFDLGlLQUFjO0FBQzNDLHFCQUFxQixtQkFBTyxDQUFDLG1LQUFlO0FBQzVDLHFCQUFxQixtQkFBTyxDQUFDLHFLQUFnQjtBQUM3QyxxQkFBcUIsbUJBQU8sQ0FBQywyS0FBbUI7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCLG9CQUFvQiw0QkFBNEIsU0FBUyxJQUFJO0FBQzdELEdBQUc7QUFDSCxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw4REFBOEQ7QUFDOUQ7QUFDQSxLQUFLO0FBQ0w7QUFDQSxzQkFBc0IsaUNBQWlDO0FBQ3ZELEtBQUs7QUFDTCxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkM7QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QsS0FBSyxRQUFRLGlDQUFpQztBQUNsRyxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsbUJBQU8sQ0FBQywrSkFBYTtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCx3QkFBd0IsZUFBZSxFQUFFO0FBQ3pDLHdCQUF3QixnQkFBZ0I7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQSxnQ0FBZ0MsZ0JBQWdCOztBQUVoRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQSw2RUFBNkUsc0JBQXNCOztBQUVuRztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEM7Ozs7Ozs7Ozs7O0FDbE9BLG1CQUFPLENBQUMsaUxBQXNCO0FBQzlCLGdCQUFnQixtQkFBTyxDQUFDLG1LQUFlO0FBQ3ZDLGdFOzs7Ozs7Ozs7OztBQ0ZBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1Qzs7Ozs7Ozs7Ozs7Ozs7O0FDbEJBLElBQU1BLElBQUksT0FBT0MsTUFBUCxLQUFrQixXQUFsQixHQUFnQ0EsTUFBaEMsR0FBeUNDLElBQW5EO0FBQ0FGLEVBQUVHLGlCQUFGLEdBQXNCLEVBQXRCO0FBQ0FILEVBQUVJLFdBQUYsR0FBZ0I7QUFDZCxTQUFPO0FBQ0wsaUJBQWE7QUFEUjtBQURPLENBQWhCLEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0hBLElBQU1DLGdCQUFnQixFQUFDQyxHQUFFLENBQUgsRUFBdEIsQ0FBNEIsSUFBTUMsZ0RBQXlCRixhQUF6QixDQUFOOztBQUU1QkcsbUJBQU9BLENBQUMsMkRBQVI7O0FBRUEsU0FBU0MsT0FBVCxHQUFtQjtBQUNuQkQscUJBQU9BLENBQUMsNEJBQVI7QUFDQUEscUJBQU9BLENBQUMscUZBQVI7QUFDQUEscUJBQU9BLENBQUMsNkVBQVI7QUFDQUEscUJBQU9BLENBQUMsaUZBQVI7QUFDQUEscUJBQU9BLENBQUMsdURBQVI7QUFDQUEscUJBQU9BLENBQUMsbUVBQVI7QUFDQUEscUJBQU9BLENBQUMsdUVBQVI7QUFDQUEscUJBQU9BLENBQUMscUVBQVI7QUFDQztBQUNETixLQUFLUSxZQUFMLEdBQW9CUixLQUFLUSxZQUFMLENBQWtCLEVBQUVELGdCQUFGLEVBQWxCLENBQXBCLEdBQXFEQSxTQUFyRCxDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2RDO0FBQ0UsWUFDSSxrREFDQSw4Q0FDQSxvQ0FFTjs7QUFDRSxZQUNGOztBQUNFOzs7QUFDRTtBQUNFLHdDQUNOOztBQUNNO0FBQ0U7QUFDQTtBQUNFLHVCQUNWOztBQUNVO0FBQ0U7QUFDRTtBQUNBLDRCQUNkOztBQUNZO0FBQ0UscUJBQ2Q7QUFFQTs7O0FBQ1E7QUFDRSxpQkFDVjtBQUVBOztBQUNBO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkNBO0FBQ0U7QUFDRTtBQUNBLHFDQUVKOzs7QUFDRTtBQUNFO0FBQ0UsaUJBQ047QUFHQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWEE7O0FBQ0E7QUFDRTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNNO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVQOztBQUNFO0FBQ0U7QUFDQTtBQUNBOztBQUVKOzs7QUFDRTtBQUNFO0FBQ0E7QUFDQTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0EscUJBQ1I7QUFDQTtBQUNBOztBQUNJLFdBQ0o7QUFDQTs7QUFDRTtBQUVGOztBQUNPO0FBQ1U7QUFFakI7QUFDQTs7QUFDRTtBQUNFO0FBQ0EscUNBQ0o7O0FBQ0k7QUFDRTtBQUNBO0FBQ0EsMkNBQ047QUFDQTs7QUFDSSwyQkFDSjs7QUFDSSxXQUNKO0FBQ0E7O0FBQ0U7QUFDRTtBQUNBO0FBQ0EsV0FDSjs7QUFFQSxFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tHQ3ZFQTs7QUFDRztBQUVIOztBQU1BOzs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFDRztBQUNILFVBQ0E7O0FBQ0E7QUFDRTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFDSjs7QUFDSTtBQUNPO01BQ0gsMERBQ0EsNkJBQ1I7QUFDSTtBQUNBO0FBQ0EsZ0JBQ0o7O0FBQ0k7QUFDQTtBQUNBO0FBQ0EsZ0JBQ0o7O0FBQ0k7QUFDQSxxQkFFSjs7O0FBQ0U7QUFDRTtBQUNBO0FBQ0U7QUFDRSxpQ0FFUjs7O0FBQ0ksU0FDSjtBQUNBOztBQUNFO0FBQ0U7QUFDQTtBQUNFO0FBQ0U7QUFDQTtBQUNFO0FBQ0EsMkZBRVY7O0FBRUE7O0FBQ0E7O0FBQ0UsOENBQ0Y7QUFDQTtBQUNBOztBQUNFO0FBQ0U7QUFDQTtBQUNBO0FBQ0U7QUFDRTtBQUNBLDRCQUNSOztBQUNNO0FBQ0U7QUFDRSxvQkFFVjs7O0FBQ007QUFDQTtBQUNFLDRCQUVSOzs7QUFDTTtBQUNLO0FBRVg7O0FBQ007QUFDRTtBQUNBLGNBQ1I7O0FBQ00sc0JBQ0U7QUFDRTtBQUNFO0FBQ0Esb0JBQ1o7O0FBQ1U7QUFDRTtBQUNBO0FBQ0EsZUFDWjtBQUNBO1NBQ1E7QUFDRTtBQUNBO0FBQ0U7QUFDQTtBQUNFO0FBQ0Esd0NBQ2Q7QUFFQTs7QUFFQTtBQUNBOztBQUNJO0FBQ0U7QUFDQSw4QkFDTjs7QUFDSTtBQUNFO0FBQ0E7QUFDRSw4QkFDUjs7QUFDTSxzREFDTjs7QUFDTTtBQUNFO0FBQ0E7QUFDQTtBQUNHO0FBQ0g7QUFDQTtBQUNBLDhFQUNSOztBQUNTO0FBQ0gsU0FDTjtBQUNBO0FBQ0E7O0FBQ0U7QUFDRTtBQUNFO0FBQ0EseUNBQ047QUFDQTtBQUNBOztBQUNFO0FBQ0U7QUFDQSxpSEFDRTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0U7QUFDQTtBQUNBLG9CQUVaOztBQUNBO0FBRUE7QUFDQTs7QUFDRTtBQUNFLGFBQ0o7O0FBQ0k7QUFDRTtBQUNBLFlBRU47OztBQUNJO0FBQ0U7QUFDQTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0Esb0JBQ1Y7O0FBQ1EsYUFDUjtBQUNBO0FBQ0E7O0FBQ0k7QUFDRTtBQUNBO0FBQ0U7QUFDQTtBQUNBLG9CQUVSOztBQUNBOztBQUNJO0FBQ0Usc0JBQ0U7QUFDRTtBQUNBO0FBQ0UsdUJBQ1o7QUFDQTtTQUNRO0FBRVI7QUFDQTtBQUNNO0FBQ0E7QUFDRTtBQUNBLHdCQUNFO0FBQ0U7QUFDQTtBQUNFLHlCQUNkO0FBQ0E7V0FDVTtBQUVWO0FBQ0E7QUFDUTtBQUVSO0FBQ0E7QUFDQTtBQUNBOztBQUNFO0FBQ0U7QUFDRTtBQUNFO0FBQ0EsbUNBQ1I7O0FBQ00saUZBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDRTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0Esd0NBQ047T0FDQTtBQUNBOztBQUNFO0FBQ0U7QUFDRTtBQUNBLGtCQUVOOztBQUNBOztBQUNFO0FBQ0U7QUFDRTtBQUNBLGtCQUNOOztBQUNJLFNBQ0o7QUFDQTs7QUFDRTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFDTjtBQUNBOztBQUNJO0FBQ0E7QUFDRSxnQ0FDTjtBQUNBOztBQUNJO0FBQ0E7QUFDQTtBQUNFO0FBQ0E7QUFDQTtBQUNFO0FBQ0E7QUFDQTtBQUNBLHlDQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUNFO0FBQ0Usd0NBQ0o7QUFDQTs7QUFDRTtBQUNFLHdDQUNKO0FBQ0E7O0FBQ0U7QUFDRTtBQUNFO0FBQ0UscUJBQ1I7O0FBQ007QUFDQTtBQUNFLHFCQUVSOzs7QUFDSTtBQUNFO0FBQ0EsbUNBRU47O0FBQ0E7O0FBQ0U7QUFDRSx3REFDSjtBQUNBOztBQUNFO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDRSxlQUNOOztBQUNJLFNBQ0o7QUFDQTs7QUFDRTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNFO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFLHFCQUVaOztBQUNBO0FBRUE7O0FBQ0E7O0FBQ0U7QUFDRSxpRUFDSjtBQUNBOztBQUNFO0FBQ0UsK0NBQ0o7O0FBQ0k7QUFDQTtBQUNBO0FBQ0UsZ0ZBQ047QUFDQTs7QUFDSTtBQUNBO0FBQ0U7QUFDQTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0Esb0JBQ1Y7O0FBQ1E7QUFDQTtBQUNBLDJGQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUNFO0FBQ0U7QUFDQTtBQUNBO0FBQ0UsZ0NBQ047QUFDQTs7QUFDSTtBQUNBO0FBQ0U7QUFDQTtBQUNFO0FBQ0E7QUFDQSx5Q0FDUjtBQUNBO0FBQ0E7QUFDQTs7QUFDRTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0UsZ0NBQ047O0FBQ0k7QUFDRSxnQ0FDTjs7QUFDSTtBQUNFLGdDQUNOOztBQUNJO0FBQ0UsZ0NBQ047O0FBQ0k7QUFDQTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0U7QUFDQTtBQUNBLG9CQUNWOztBQUNRO0FBQ0E7QUFDQSx5Q0FDUjtBQUNBO0FBQ0E7QUFDQTs7QUFDRTtBQUNFO0FBQ0E7QUFDQTtBQUNFLGdDQUNOO0FBQ0E7O0FBQ0k7QUFDQTtBQUNFO0FBQ0E7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUNFO0FBQ0U7QUFDQTtBQUNBO0FBQ0E7QUFDRSxnQ0FDTjs7QUFDSTtBQUNFLGdDQUNOOztBQUNJO0FBQ0UsZ0NBQ047QUFDQTs7QUFDSTtBQUNBO0FBQ0U7QUFDQTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBQ0U7QUFDRTtBQUNBO0FBQ0E7QUFDRSxnQ0FDTjs7QUFDSTtBQUNFLGdDQUNOOztBQUNJO0FBQ0UsZ0NBQ047QUFDQTs7QUFDSTtBQUNBO0FBQ0U7QUFDQTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUNBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBQ0U7QUFDRTtBQUNFLDJDQUVOOztBQUNBOztBQUNFO0FBQ0UsU0FDSjtBQUNBOztBQUNFO0FBQ0UsMEJBQ0o7QUFDQTs7QUFDRTtBQUNFLGFBRUo7OztBQUNJO0FBQ0U7QUFDQTtBQUNFO0FBQ0UsMEVBRVY7O0FBQ0E7QUFDQTs7QUFDSTtBQUNBLG1IQUVKO0FBQ007QUFDQTtBQUNFLGtFQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUNFO0FBQ0U7QUFDRSxnQkFFTjs7QUFDQTs7QUFDRTtBQUNFO0FBQ0UsZ0JBRU47O0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwakJBLFVBQ0E7O0FBQ0E7QUFDRTtBQUNFLGdCQUVKOzs7QUFDRTtBQUNFO0FBQ0UsMkJBRU47O0FBQ0E7QUFDRTtBQUNFO0FBRUk7QUFDQSxrQkFHUjtLQUxBOztBQU1JLE9BQ0o7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4QkM7QUFDRDtBQUNBLHdCQUVBOztBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUNBOztBQUNBO0FBQ0U7QUFDRTtBQUNFO0FBQ0Esc0JBQ047QUFDQTs7QUFDRTtBQUNFO0FBQ0EsOEJBQ0o7OztBQUNFO0FBQ0U7QUFDRTtBQUNBLGFBQ047O0FBQ0k7QUFDRTtBQUNBLGFBQ047O0FBQ0k7QUFDRTtBQUNBLGFBQ047O0FBQ0k7QUFDRTtBQUNBLGFBQ047O0FBQ0k7QUFDRSxnQ0FDTjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQ0M7QUFDRDtBQUNBLHdCQUVBOztBQUNBO0FBQ0U7QUFDRTtBQUNFO0FBQ0EsYUFDTjs7QUFDSTtBQUNFLFlBQ047O0FBQ0s7QUFDQywrQkFFTjs7O0FBQ0U7QUFDRztBQUNDLGtCQUNOO0FBQ0E7O0FBQ0U7QUFDRSxpQ0FDSjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpR0MxQkE7O0FBQ0c7QUFFSDs7QUFDQTtBQUNBO0FBQ0c7QUFDSCxtQkFDQTs7QUFDQTtBQUNFO0FBQ0U7QUFDQTtBQUNBLG9CQUVKOzs7QUFDRSxtQ0FDRjtBQUNBO0FBQ0E7QUFDRTtBQUNFLFNBQ0o7QUFDQTtBQUNFOzs7QUFDRTtBQUNBO0FBQ0U7QUFDQTtBQUNBLHNDQUNOOztBQUNNO0FBQ0E7OztBQUNBO0FBQ0EsZ0NBQ047O0FBQ007QUFDRSx3QkFDUjs7QUFDTTtBQUNFLGdDQUNBOzs7OztBQUNBO0FBQ0U7O0FBQ0E7QUFDRSxrREFFWjs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNFO0FBQ0U7QUFDRTtBQUNBLHVCQUVOOztBQUNBO0FBQ0U7QUFDRTtBQUNFLDRDQUVOOztBQUNBO0FBQ0U7QUFDRSxPQUNKO0FBQ0E7QUFDRTtBQUNFLHdCQUNKO0FBR0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxRUEsVUFDQTs7QUFDQTtBQUNFLFFBQ0Y7O0FBQ0U7OztBQUNFLDJCQUNFO0FBQ0U7QUFHUjs7QUFDQSxtQkFDQTtBQUNBO0FBRUE7QUFDQTtBQUNFO0FBQ0UsOEJBQ0o7QUFDQTtBQUNFO0FBQ0U7QUFDQTt3Q0FDSztBQUNILHNEQUNOOzs7QUFDSSw4QkFDSjtBQUNBO0FBQ0U7QUFDRSxtQkFDSjtBQUNBO0FBQ0U7QUFDRSx5QkFDSjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZDQTtBQUNHO0FBQ0E7QUFDRSxjQUNFLGdDQUNBLDRCQUNBLDZCQUNBLHNCQUNBLDZCQUNBLCtCQUNBLG1EQUNBLDZCQUNBLCtCQUNBLDhCQUNBLDRCQUNBLDhCQUNBLHlCQUNBLDZCQUNBLHlCQUNBLDJCQUNBLDRCQUNBLDhCQUNBLDZCQUNBLCtCQUNBLDBCQUNBLDRCQUNBLHlCQUNBLDJCQUNBLDZCQUNBLCtCQUNBLDJCQUNBLDBCQUNBLDRCQUNBLDBCQUNBLDZCQUNBLDRCQUNBLCtCQUNBLDhCQUNBLGtDQUNBLDhCQUNBLCtCQUNBLDRCQUNBLDRCQUNBLGtDQUNBLDhCQUNBLGdDQUNBLDZCQUNBLGlDQUNBLDhCQUNBLG1DQUNBLDZCQUNBLG9DQUNBLHlDQUNBLHFDQUNBLG1DQUNBLGtDQUNBLHVDQUNBLHFDQUNBLGlDQUNBLG9DQUVQO0FBQ0s7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUVJO0FBQ0E7QUFDQTtBQUNBLGdCQUVYO09BTkE7QUFPVztBQUNBO0FBQ0E7QUFDQSxnQkFFWDs7QUFDVztBQUNBO0FBQ0E7QUFDQSxnQkFFWDs7QUFDVztBQUNBO0FBQ0E7QUFDQSxnQkFFWDs7QUFDTztBQUNBLHVCQUNQOztBQUNLO0FBQ0U7QUFDQTtBQUNBO0FBQ0EsZ0NBRVA7OztBQUNHO0FBQ0E7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUNMOztBQUNHO0FBQ0E7QUFDRTtBQUNBLFlBRUw7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0NuSEE7O0FBQ0c7QUFDSDtBQUNBLGNBQ0E7O0FBQ0E7QUFDQTtBQUNHO0FBQ0g7QUFDQSxxRkFDQTs7QUFDQTtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQkE7O0FBQ0E7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFDRjs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdEJELDZCIiwiZmlsZSI6ImluZGV4Lndvcmtlci5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL1wiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMCk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vb2JqZWN0L2Fzc2lnblwiKSwgX19lc01vZHVsZTogdHJ1ZSB9OyIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9zeW1ib2xcIiksIF9fZXNNb2R1bGU6IHRydWUgfTsiLCJtb2R1bGUuZXhwb3J0cyA9IHsgXCJkZWZhdWx0XCI6IHJlcXVpcmUoXCJjb3JlLWpzL2xpYnJhcnkvZm4vc3ltYm9sL2l0ZXJhdG9yXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2Fzc2lnblwiKTtcblxudmFyIF9hc3NpZ24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzaWduKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gX2Fzc2lnbjIuZGVmYXVsdCB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfaXRlcmF0b3IgPSByZXF1aXJlKFwiLi4vY29yZS1qcy9zeW1ib2wvaXRlcmF0b3JcIik7XG5cbnZhciBfaXRlcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXRlcmF0b3IpO1xuXG52YXIgX3N5bWJvbCA9IHJlcXVpcmUoXCIuLi9jb3JlLWpzL3N5bWJvbFwiKTtcblxudmFyIF9zeW1ib2wyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3ltYm9sKTtcblxudmFyIF90eXBlb2YgPSB0eXBlb2YgX3N5bWJvbDIuZGVmYXVsdCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBfaXRlcmF0b3IyLmRlZmF1bHQgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVybiB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBfc3ltYm9sMi5kZWZhdWx0ID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBfc3ltYm9sMi5kZWZhdWx0ICYmIG9iaiAhPT0gX3N5bWJvbDIuZGVmYXVsdC5wcm90b3R5cGUgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiBfdHlwZW9mKF9pdGVyYXRvcjIuZGVmYXVsdCkgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2Yob2JqKTtcbn0gOiBmdW5jdGlvbiAob2JqKSB7XG4gIHJldHVybiBvYmogJiYgdHlwZW9mIF9zeW1ib2wyLmRlZmF1bHQgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IF9zeW1ib2wyLmRlZmF1bHQgJiYgb2JqICE9PSBfc3ltYm9sMi5kZWZhdWx0LnByb3RvdHlwZSA/IFwic3ltYm9sXCIgOiB0eXBlb2Ygb2JqID09PSBcInVuZGVmaW5lZFwiID8gXCJ1bmRlZmluZWRcIiA6IF90eXBlb2Yob2JqKTtcbn07IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYub2JqZWN0LmFzc2lnbicpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLi8uLi9tb2R1bGVzLyQuY29yZScpLk9iamVjdC5hc3NpZ247IiwicmVxdWlyZSgnLi4vLi4vbW9kdWxlcy9lczYuc3ltYm9sJyk7XG5yZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QudG8tc3RyaW5nJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvJC5jb3JlJykuU3ltYm9sOyIsInJlcXVpcmUoJy4uLy4uL21vZHVsZXMvZXM2LnN0cmluZy5pdGVyYXRvcicpO1xucmVxdWlyZSgnLi4vLi4vbW9kdWxlcy93ZWIuZG9tLml0ZXJhYmxlJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvJC53a3MnKSgnaXRlcmF0b3InKTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYodHlwZW9mIGl0ICE9ICdmdW5jdGlvbicpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYSBmdW5jdGlvbiEnKTtcbiAgcmV0dXJuIGl0O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCl7IC8qIGVtcHR5ICovIH07IiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi8kLmlzLW9iamVjdCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIGlmKCFpc09iamVjdChpdCkpdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59OyIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07IiwidmFyIGNvcmUgPSBtb2R1bGUuZXhwb3J0cyA9IHt2ZXJzaW9uOiAnMS4yLjYnfTtcbmlmKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpX19lID0gY29yZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZiIsIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vJC5hLWZ1bmN0aW9uJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGZuLCB0aGF0LCBsZW5ndGgpe1xuICBhRnVuY3Rpb24oZm4pO1xuICBpZih0aGF0ID09PSB1bmRlZmluZWQpcmV0dXJuIGZuO1xuICBzd2l0Y2gobGVuZ3RoKXtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jdGlvbihhKXtcbiAgICAgIHJldHVybiBmbi5jYWxsKHRoYXQsIGEpO1xuICAgIH07XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuY3Rpb24oYSwgYil7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uKGEsIGIsIGMpe1xuICAgICAgcmV0dXJuIGZuLmNhbGwodGhhdCwgYSwgYiwgYyk7XG4gICAgfTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24oLyogLi4uYXJncyAqLyl7XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoYXQsIGFyZ3VtZW50cyk7XG4gIH07XG59OyIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgaWYoaXQgPT0gdW5kZWZpbmVkKXRocm93IFR5cGVFcnJvcihcIkNhbid0IGNhbGwgbWV0aG9kIG9uICBcIiArIGl0KTtcbiAgcmV0dXJuIGl0O1xufTsiLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuLyQuZmFpbHMnKShmdW5jdGlvbigpe1xuICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAnYScsIHtnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiA3OyB9fSkuYSAhPSA3O1xufSk7IiwiLy8gYWxsIGVudW1lcmFibGUgb2JqZWN0IGtleXMsIGluY2x1ZGVzIHN5bWJvbHNcbnZhciAkID0gcmVxdWlyZSgnLi8kJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0KXtcbiAgdmFyIGtleXMgICAgICAgPSAkLmdldEtleXMoaXQpXG4gICAgLCBnZXRTeW1ib2xzID0gJC5nZXRTeW1ib2xzO1xuICBpZihnZXRTeW1ib2xzKXtcbiAgICB2YXIgc3ltYm9scyA9IGdldFN5bWJvbHMoaXQpXG4gICAgICAsIGlzRW51bSAgPSAkLmlzRW51bVxuICAgICAgLCBpICAgICAgID0gMFxuICAgICAgLCBrZXk7XG4gICAgd2hpbGUoc3ltYm9scy5sZW5ndGggPiBpKWlmKGlzRW51bS5jYWxsKGl0LCBrZXkgPSBzeW1ib2xzW2krK10pKWtleXMucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiBrZXlzO1xufTsiLCJ2YXIgZ2xvYmFsICAgID0gcmVxdWlyZSgnLi8kLmdsb2JhbCcpXG4gICwgY29yZSAgICAgID0gcmVxdWlyZSgnLi8kLmNvcmUnKVxuICAsIGN0eCAgICAgICA9IHJlcXVpcmUoJy4vJC5jdHgnKVxuICAsIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uKHR5cGUsIG5hbWUsIHNvdXJjZSl7XG4gIHZhciBJU19GT1JDRUQgPSB0eXBlICYgJGV4cG9ydC5GXG4gICAgLCBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HXG4gICAgLCBJU19TVEFUSUMgPSB0eXBlICYgJGV4cG9ydC5TXG4gICAgLCBJU19QUk9UTyAgPSB0eXBlICYgJGV4cG9ydC5QXG4gICAgLCBJU19CSU5EICAgPSB0eXBlICYgJGV4cG9ydC5CXG4gICAgLCBJU19XUkFQICAgPSB0eXBlICYgJGV4cG9ydC5XXG4gICAgLCBleHBvcnRzICAgPSBJU19HTE9CQUwgPyBjb3JlIDogY29yZVtuYW1lXSB8fCAoY29yZVtuYW1lXSA9IHt9KVxuICAgICwgdGFyZ2V0ICAgID0gSVNfR0xPQkFMID8gZ2xvYmFsIDogSVNfU1RBVElDID8gZ2xvYmFsW25hbWVdIDogKGdsb2JhbFtuYW1lXSB8fCB7fSlbUFJPVE9UWVBFXVxuICAgICwga2V5LCBvd24sIG91dDtcbiAgaWYoSVNfR0xPQkFMKXNvdXJjZSA9IG5hbWU7XG4gIGZvcihrZXkgaW4gc291cmNlKXtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiBrZXkgaW4gdGFyZ2V0O1xuICAgIGlmKG93biAmJiBrZXkgaW4gZXhwb3J0cyljb250aW51ZTtcbiAgICAvLyBleHBvcnQgbmF0aXZlIG9yIHBhc3NlZFxuICAgIG91dCA9IG93biA/IHRhcmdldFtrZXldIDogc291cmNlW2tleV07XG4gICAgLy8gcHJldmVudCBnbG9iYWwgcG9sbHV0aW9uIGZvciBuYW1lc3BhY2VzXG4gICAgZXhwb3J0c1trZXldID0gSVNfR0xPQkFMICYmIHR5cGVvZiB0YXJnZXRba2V5XSAhPSAnZnVuY3Rpb24nID8gc291cmNlW2tleV1cbiAgICAvLyBiaW5kIHRpbWVycyB0byBnbG9iYWwgZm9yIGNhbGwgZnJvbSBleHBvcnQgY29udGV4dFxuICAgIDogSVNfQklORCAmJiBvd24gPyBjdHgob3V0LCBnbG9iYWwpXG4gICAgLy8gd3JhcCBnbG9iYWwgY29uc3RydWN0b3JzIGZvciBwcmV2ZW50IGNoYW5nZSB0aGVtIGluIGxpYnJhcnlcbiAgICA6IElTX1dSQVAgJiYgdGFyZ2V0W2tleV0gPT0gb3V0ID8gKGZ1bmN0aW9uKEMpe1xuICAgICAgdmFyIEYgPSBmdW5jdGlvbihwYXJhbSl7XG4gICAgICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgQyA/IG5ldyBDKHBhcmFtKSA6IEMocGFyYW0pO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICBpZihJU19QUk9UTykoZXhwb3J0c1tQUk9UT1RZUEVdIHx8IChleHBvcnRzW1BST1RPVFlQRV0gPSB7fSkpW2tleV0gPSBvdXQ7XG4gIH1cbn07XG4vLyB0eXBlIGJpdG1hcFxuJGV4cG9ydC5GID0gMTsgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgIC8vIGdsb2JhbFxuJGV4cG9ydC5TID0gNDsgIC8vIHN0YXRpY1xuJGV4cG9ydC5QID0gODsgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgLy8gYmluZFxuJGV4cG9ydC5XID0gMzI7IC8vIHdyYXBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDsiLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGV4ZWMpe1xuICB0cnkge1xuICAgIHJldHVybiAhIWV4ZWMoKTtcbiAgfSBjYXRjaChlKXtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTsiLCIvLyBmYWxsYmFjayBmb3IgSUUxMSBidWdneSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyB3aXRoIGlmcmFtZSBhbmQgd2luZG93XG52YXIgdG9JT2JqZWN0ID0gcmVxdWlyZSgnLi8kLnRvLWlvYmplY3QnKVxuICAsIGdldE5hbWVzICA9IHJlcXVpcmUoJy4vJCcpLmdldE5hbWVzXG4gICwgdG9TdHJpbmcgID0ge30udG9TdHJpbmc7XG5cbnZhciB3aW5kb3dOYW1lcyA9IHR5cGVvZiB3aW5kb3cgPT0gJ29iamVjdCcgJiYgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXNcbiAgPyBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpIDogW107XG5cbnZhciBnZXRXaW5kb3dOYW1lcyA9IGZ1bmN0aW9uKGl0KXtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZ2V0TmFtZXMoaXQpO1xuICB9IGNhdGNoKGUpe1xuICAgIHJldHVybiB3aW5kb3dOYW1lcy5zbGljZSgpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5nZXQgPSBmdW5jdGlvbiBnZXRPd25Qcm9wZXJ0eU5hbWVzKGl0KXtcbiAgaWYod2luZG93TmFtZXMgJiYgdG9TdHJpbmcuY2FsbChpdCkgPT0gJ1tvYmplY3QgV2luZG93XScpcmV0dXJuIGdldFdpbmRvd05hbWVzKGl0KTtcbiAgcmV0dXJuIGdldE5hbWVzKHRvSU9iamVjdChpdCkpO1xufTsiLCIvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvODYjaXNzdWVjb21tZW50LTExNTc1OTAyOFxudmFyIGdsb2JhbCA9IG1vZHVsZS5leHBvcnRzID0gdHlwZW9mIHdpbmRvdyAhPSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuTWF0aCA9PSBNYXRoXG4gID8gd2luZG93IDogdHlwZW9mIHNlbGYgIT0gJ3VuZGVmaW5lZCcgJiYgc2VsZi5NYXRoID09IE1hdGggPyBzZWxmIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmKHR5cGVvZiBfX2cgPT0gJ251bWJlcicpX19nID0gZ2xvYmFsOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmIiwidmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGl0LCBrZXkpe1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07IiwidmFyICQgICAgICAgICAgPSByZXF1aXJlKCcuLyQnKVxuICAsIGNyZWF0ZURlc2MgPSByZXF1aXJlKCcuLyQucHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLyQuZGVzY3JpcHRvcnMnKSA/IGZ1bmN0aW9uKG9iamVjdCwga2V5LCB2YWx1ZSl7XG4gIHJldHVybiAkLnNldERlc2Mob2JqZWN0LCBrZXksIGNyZWF0ZURlc2MoMSwgdmFsdWUpKTtcbn0gOiBmdW5jdGlvbihvYmplY3QsIGtleSwgdmFsdWUpe1xuICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICByZXR1cm4gb2JqZWN0O1xufTsiLCIvLyBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIGFuZCBub24tZW51bWVyYWJsZSBvbGQgVjggc3RyaW5nc1xudmFyIGNvZiA9IHJlcXVpcmUoJy4vJC5jb2YnKTtcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBjb2YoaXQpID09ICdTdHJpbmcnID8gaXQuc3BsaXQoJycpIDogT2JqZWN0KGl0KTtcbn07IiwiLy8gNy4yLjIgSXNBcnJheShhcmd1bWVudClcbnZhciBjb2YgPSByZXF1aXJlKCcuLyQuY29mJyk7XG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24oYXJnKXtcbiAgcmV0dXJuIGNvZihhcmcpID09ICdBcnJheSc7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXQpe1xuICByZXR1cm4gdHlwZW9mIGl0ID09PSAnb2JqZWN0JyA/IGl0ICE9PSBudWxsIDogdHlwZW9mIGl0ID09PSAnZnVuY3Rpb24nO1xufTsiLCIndXNlIHN0cmljdCc7XG52YXIgJCAgICAgICAgICAgICAgPSByZXF1aXJlKCcuLyQnKVxuICAsIGRlc2NyaXB0b3IgICAgID0gcmVxdWlyZSgnLi8kLnByb3BlcnR5LWRlc2MnKVxuICAsIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi8kLnNldC10by1zdHJpbmctdGFnJylcbiAgLCBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuXG4vLyAyNS4xLjIuMS4xICVJdGVyYXRvclByb3RvdHlwZSVbQEBpdGVyYXRvcl0oKVxucmVxdWlyZSgnLi8kLmhpZGUnKShJdGVyYXRvclByb3RvdHlwZSwgcmVxdWlyZSgnLi8kLndrcycpKCdpdGVyYXRvcicpLCBmdW5jdGlvbigpeyByZXR1cm4gdGhpczsgfSk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpe1xuICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSAkLmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSwge25leHQ6IGRlc2NyaXB0b3IoMSwgbmV4dCl9KTtcbiAgc2V0VG9TdHJpbmdUYWcoQ29uc3RydWN0b3IsIE5BTUUgKyAnIEl0ZXJhdG9yJyk7XG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBMSUJSQVJZICAgICAgICA9IHJlcXVpcmUoJy4vJC5saWJyYXJ5JylcbiAgLCAkZXhwb3J0ICAgICAgICA9IHJlcXVpcmUoJy4vJC5leHBvcnQnKVxuICAsIHJlZGVmaW5lICAgICAgID0gcmVxdWlyZSgnLi8kLnJlZGVmaW5lJylcbiAgLCBoaWRlICAgICAgICAgICA9IHJlcXVpcmUoJy4vJC5oaWRlJylcbiAgLCBoYXMgICAgICAgICAgICA9IHJlcXVpcmUoJy4vJC5oYXMnKVxuICAsIEl0ZXJhdG9ycyAgICAgID0gcmVxdWlyZSgnLi8kLml0ZXJhdG9ycycpXG4gICwgJGl0ZXJDcmVhdGUgICAgPSByZXF1aXJlKCcuLyQuaXRlci1jcmVhdGUnKVxuICAsIHNldFRvU3RyaW5nVGFnID0gcmVxdWlyZSgnLi8kLnNldC10by1zdHJpbmctdGFnJylcbiAgLCBnZXRQcm90byAgICAgICA9IHJlcXVpcmUoJy4vJCcpLmdldFByb3RvXG4gICwgSVRFUkFUT1IgICAgICAgPSByZXF1aXJlKCcuLyQud2tzJykoJ2l0ZXJhdG9yJylcbiAgLCBCVUdHWSAgICAgICAgICA9ICEoW10ua2V5cyAmJiAnbmV4dCcgaW4gW10ua2V5cygpKSAvLyBTYWZhcmkgaGFzIGJ1Z2d5IGl0ZXJhdG9ycyB3L28gYG5leHRgXG4gICwgRkZfSVRFUkFUT1IgICAgPSAnQEBpdGVyYXRvcidcbiAgLCBLRVlTICAgICAgICAgICA9ICdrZXlzJ1xuICAsIFZBTFVFUyAgICAgICAgID0gJ3ZhbHVlcyc7XG5cbnZhciByZXR1cm5UaGlzID0gZnVuY3Rpb24oKXsgcmV0dXJuIHRoaXM7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oQmFzZSwgTkFNRSwgQ29uc3RydWN0b3IsIG5leHQsIERFRkFVTFQsIElTX1NFVCwgRk9SQ0VEKXtcbiAgJGl0ZXJDcmVhdGUoQ29uc3RydWN0b3IsIE5BTUUsIG5leHQpO1xuICB2YXIgZ2V0TWV0aG9kID0gZnVuY3Rpb24oa2luZCl7XG4gICAgaWYoIUJVR0dZICYmIGtpbmQgaW4gcHJvdG8pcmV0dXJuIHByb3RvW2tpbmRdO1xuICAgIHN3aXRjaChraW5kKXtcbiAgICAgIGNhc2UgS0VZUzogcmV0dXJuIGZ1bmN0aW9uIGtleXMoKXsgcmV0dXJuIG5ldyBDb25zdHJ1Y3Rvcih0aGlzLCBraW5kKTsgfTtcbiAgICAgIGNhc2UgVkFMVUVTOiByZXR1cm4gZnVuY3Rpb24gdmFsdWVzKCl7IHJldHVybiBuZXcgQ29uc3RydWN0b3IodGhpcywga2luZCk7IH07XG4gICAgfSByZXR1cm4gZnVuY3Rpb24gZW50cmllcygpeyByZXR1cm4gbmV3IENvbnN0cnVjdG9yKHRoaXMsIGtpbmQpOyB9O1xuICB9O1xuICB2YXIgVEFHICAgICAgICA9IE5BTUUgKyAnIEl0ZXJhdG9yJ1xuICAgICwgREVGX1ZBTFVFUyA9IERFRkFVTFQgPT0gVkFMVUVTXG4gICAgLCBWQUxVRVNfQlVHID0gZmFsc2VcbiAgICAsIHByb3RvICAgICAgPSBCYXNlLnByb3RvdHlwZVxuICAgICwgJG5hdGl2ZSAgICA9IHByb3RvW0lURVJBVE9SXSB8fCBwcm90b1tGRl9JVEVSQVRPUl0gfHwgREVGQVVMVCAmJiBwcm90b1tERUZBVUxUXVxuICAgICwgJGRlZmF1bHQgICA9ICRuYXRpdmUgfHwgZ2V0TWV0aG9kKERFRkFVTFQpXG4gICAgLCBtZXRob2RzLCBrZXk7XG4gIC8vIEZpeCBuYXRpdmVcbiAgaWYoJG5hdGl2ZSl7XG4gICAgdmFyIEl0ZXJhdG9yUHJvdG90eXBlID0gZ2V0UHJvdG8oJGRlZmF1bHQuY2FsbChuZXcgQmFzZSkpO1xuICAgIC8vIFNldCBAQHRvU3RyaW5nVGFnIHRvIG5hdGl2ZSBpdGVyYXRvcnNcbiAgICBzZXRUb1N0cmluZ1RhZyhJdGVyYXRvclByb3RvdHlwZSwgVEFHLCB0cnVlKTtcbiAgICAvLyBGRiBmaXhcbiAgICBpZighTElCUkFSWSAmJiBoYXMocHJvdG8sIEZGX0lURVJBVE9SKSloaWRlKEl0ZXJhdG9yUHJvdG90eXBlLCBJVEVSQVRPUiwgcmV0dXJuVGhpcyk7XG4gICAgLy8gZml4IEFycmF5I3t2YWx1ZXMsIEBAaXRlcmF0b3J9Lm5hbWUgaW4gVjggLyBGRlxuICAgIGlmKERFRl9WQUxVRVMgJiYgJG5hdGl2ZS5uYW1lICE9PSBWQUxVRVMpe1xuICAgICAgVkFMVUVTX0JVRyA9IHRydWU7XG4gICAgICAkZGVmYXVsdCA9IGZ1bmN0aW9uIHZhbHVlcygpeyByZXR1cm4gJG5hdGl2ZS5jYWxsKHRoaXMpOyB9O1xuICAgIH1cbiAgfVxuICAvLyBEZWZpbmUgaXRlcmF0b3JcbiAgaWYoKCFMSUJSQVJZIHx8IEZPUkNFRCkgJiYgKEJVR0dZIHx8IFZBTFVFU19CVUcgfHwgIXByb3RvW0lURVJBVE9SXSkpe1xuICAgIGhpZGUocHJvdG8sIElURVJBVE9SLCAkZGVmYXVsdCk7XG4gIH1cbiAgLy8gUGx1ZyBmb3IgbGlicmFyeVxuICBJdGVyYXRvcnNbTkFNRV0gPSAkZGVmYXVsdDtcbiAgSXRlcmF0b3JzW1RBR10gID0gcmV0dXJuVGhpcztcbiAgaWYoREVGQVVMVCl7XG4gICAgbWV0aG9kcyA9IHtcbiAgICAgIHZhbHVlczogIERFRl9WQUxVRVMgID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoVkFMVUVTKSxcbiAgICAgIGtleXM6ICAgIElTX1NFVCAgICAgID8gJGRlZmF1bHQgOiBnZXRNZXRob2QoS0VZUyksXG4gICAgICBlbnRyaWVzOiAhREVGX1ZBTFVFUyA/ICRkZWZhdWx0IDogZ2V0TWV0aG9kKCdlbnRyaWVzJylcbiAgICB9O1xuICAgIGlmKEZPUkNFRClmb3Ioa2V5IGluIG1ldGhvZHMpe1xuICAgICAgaWYoIShrZXkgaW4gcHJvdG8pKXJlZGVmaW5lKHByb3RvLCBrZXksIG1ldGhvZHNba2V5XSk7XG4gICAgfSBlbHNlICRleHBvcnQoJGV4cG9ydC5QICsgJGV4cG9ydC5GICogKEJVR0dZIHx8IFZBTFVFU19CVUcpLCBOQU1FLCBtZXRob2RzKTtcbiAgfVxuICByZXR1cm4gbWV0aG9kcztcbn07IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihkb25lLCB2YWx1ZSl7XG4gIHJldHVybiB7dmFsdWU6IHZhbHVlLCBkb25lOiAhIWRvbmV9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHt9OyIsInZhciAkT2JqZWN0ID0gT2JqZWN0O1xubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNyZWF0ZTogICAgICRPYmplY3QuY3JlYXRlLFxuICBnZXRQcm90bzogICAkT2JqZWN0LmdldFByb3RvdHlwZU9mLFxuICBpc0VudW06ICAgICB7fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxcbiAgZ2V0RGVzYzogICAgJE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsXG4gIHNldERlc2M6ICAgICRPYmplY3QuZGVmaW5lUHJvcGVydHksXG4gIHNldERlc2NzOiAgICRPYmplY3QuZGVmaW5lUHJvcGVydGllcyxcbiAgZ2V0S2V5czogICAgJE9iamVjdC5rZXlzLFxuICBnZXROYW1lczogICAkT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMsXG4gIGdldFN5bWJvbHM6ICRPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLFxuICBlYWNoOiAgICAgICBbXS5mb3JFYWNoXG59OyIsInZhciAkICAgICAgICAgPSByZXF1aXJlKCcuLyQnKVxuICAsIHRvSU9iamVjdCA9IHJlcXVpcmUoJy4vJC50by1pb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG9iamVjdCwgZWwpe1xuICB2YXIgTyAgICAgID0gdG9JT2JqZWN0KG9iamVjdClcbiAgICAsIGtleXMgICA9ICQuZ2V0S2V5cyhPKVxuICAgICwgbGVuZ3RoID0ga2V5cy5sZW5ndGhcbiAgICAsIGluZGV4ICA9IDBcbiAgICAsIGtleTtcbiAgd2hpbGUobGVuZ3RoID4gaW5kZXgpaWYoT1trZXkgPSBrZXlzW2luZGV4KytdXSA9PT0gZWwpcmV0dXJuIGtleTtcbn07IiwibW9kdWxlLmV4cG9ydHMgPSB0cnVlOyIsIi8vIDE5LjEuMi4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UsIC4uLilcbnZhciAkICAgICAgICA9IHJlcXVpcmUoJy4vJCcpXG4gICwgdG9PYmplY3QgPSByZXF1aXJlKCcuLyQudG8tb2JqZWN0JylcbiAgLCBJT2JqZWN0ICA9IHJlcXVpcmUoJy4vJC5pb2JqZWN0Jyk7XG5cbi8vIHNob3VsZCB3b3JrIHdpdGggc3ltYm9scyBhbmQgc2hvdWxkIGhhdmUgZGV0ZXJtaW5pc3RpYyBwcm9wZXJ0eSBvcmRlciAoVjggYnVnKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLyQuZmFpbHMnKShmdW5jdGlvbigpe1xuICB2YXIgYSA9IE9iamVjdC5hc3NpZ25cbiAgICAsIEEgPSB7fVxuICAgICwgQiA9IHt9XG4gICAgLCBTID0gU3ltYm9sKClcbiAgICAsIEsgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3QnO1xuICBBW1NdID0gNztcbiAgSy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbihrKXsgQltrXSA9IGs7IH0pO1xuICByZXR1cm4gYSh7fSwgQSlbU10gIT0gNyB8fCBPYmplY3Qua2V5cyhhKHt9LCBCKSkuam9pbignJykgIT0gSztcbn0pID8gZnVuY3Rpb24gYXNzaWduKHRhcmdldCwgc291cmNlKXsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtdmFyc1xuICB2YXIgVCAgICAgPSB0b09iamVjdCh0YXJnZXQpXG4gICAgLCAkJCAgICA9IGFyZ3VtZW50c1xuICAgICwgJCRsZW4gPSAkJC5sZW5ndGhcbiAgICAsIGluZGV4ID0gMVxuICAgICwgZ2V0S2V5cyAgICA9ICQuZ2V0S2V5c1xuICAgICwgZ2V0U3ltYm9scyA9ICQuZ2V0U3ltYm9sc1xuICAgICwgaXNFbnVtICAgICA9ICQuaXNFbnVtO1xuICB3aGlsZSgkJGxlbiA+IGluZGV4KXtcbiAgICB2YXIgUyAgICAgID0gSU9iamVjdCgkJFtpbmRleCsrXSlcbiAgICAgICwga2V5cyAgID0gZ2V0U3ltYm9scyA/IGdldEtleXMoUykuY29uY2F0KGdldFN5bWJvbHMoUykpIDogZ2V0S2V5cyhTKVxuICAgICAgLCBsZW5ndGggPSBrZXlzLmxlbmd0aFxuICAgICAgLCBqICAgICAgPSAwXG4gICAgICAsIGtleTtcbiAgICB3aGlsZShsZW5ndGggPiBqKWlmKGlzRW51bS5jYWxsKFMsIGtleSA9IGtleXNbaisrXSkpVFtrZXldID0gU1trZXldO1xuICB9XG4gIHJldHVybiBUO1xufSA6IE9iamVjdC5hc3NpZ247IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihiaXRtYXAsIHZhbHVlKXtcbiAgcmV0dXJuIHtcbiAgICBlbnVtZXJhYmxlICA6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlICAgIDogIShiaXRtYXAgJiA0KSxcbiAgICB2YWx1ZSAgICAgICA6IHZhbHVlXG4gIH07XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi8kLmhpZGUnKTsiLCJ2YXIgZGVmID0gcmVxdWlyZSgnLi8kJykuc2V0RGVzY1xuICAsIGhhcyA9IHJlcXVpcmUoJy4vJC5oYXMnKVxuICAsIFRBRyA9IHJlcXVpcmUoJy4vJC53a3MnKSgndG9TdHJpbmdUYWcnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCwgdGFnLCBzdGF0KXtcbiAgaWYoaXQgJiYgIWhhcyhpdCA9IHN0YXQgPyBpdCA6IGl0LnByb3RvdHlwZSwgVEFHKSlkZWYoaXQsIFRBRywge2NvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHRhZ30pO1xufTsiLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi8kLmdsb2JhbCcpXG4gICwgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXydcbiAgLCBzdG9yZSAgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGtleSl7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0ge30pO1xufTsiLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi8kLnRvLWludGVnZXInKVxuICAsIGRlZmluZWQgICA9IHJlcXVpcmUoJy4vJC5kZWZpbmVkJyk7XG4vLyB0cnVlICAtPiBTdHJpbmcjYXRcbi8vIGZhbHNlIC0+IFN0cmluZyNjb2RlUG9pbnRBdFxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihUT19TVFJJTkcpe1xuICByZXR1cm4gZnVuY3Rpb24odGhhdCwgcG9zKXtcbiAgICB2YXIgcyA9IFN0cmluZyhkZWZpbmVkKHRoYXQpKVxuICAgICAgLCBpID0gdG9JbnRlZ2VyKHBvcylcbiAgICAgICwgbCA9IHMubGVuZ3RoXG4gICAgICAsIGEsIGI7XG4gICAgaWYoaSA8IDAgfHwgaSA+PSBsKXJldHVybiBUT19TVFJJTkcgPyAnJyA6IHVuZGVmaW5lZDtcbiAgICBhID0gcy5jaGFyQ29kZUF0KGkpO1xuICAgIHJldHVybiBhIDwgMHhkODAwIHx8IGEgPiAweGRiZmYgfHwgaSArIDEgPT09IGwgfHwgKGIgPSBzLmNoYXJDb2RlQXQoaSArIDEpKSA8IDB4ZGMwMCB8fCBiID4gMHhkZmZmXG4gICAgICA/IFRPX1NUUklORyA/IHMuY2hhckF0KGkpIDogYVxuICAgICAgOiBUT19TVFJJTkcgPyBzLnNsaWNlKGksIGkgKyAyKSA6IChhIC0gMHhkODAwIDw8IDEwKSArIChiIC0gMHhkYzAwKSArIDB4MTAwMDA7XG4gIH07XG59OyIsIi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgID0gTWF0aC5jZWlsXG4gICwgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBpc05hTihpdCA9ICtpdCkgPyAwIDogKGl0ID4gMCA/IGZsb29yIDogY2VpbCkoaXQpO1xufTsiLCIvLyB0byBpbmRleGVkIG9iamVjdCwgdG9PYmplY3Qgd2l0aCBmYWxsYmFjayBmb3Igbm9uLWFycmF5LWxpa2UgRVMzIHN0cmluZ3NcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi8kLmlvYmplY3QnKVxuICAsIGRlZmluZWQgPSByZXF1aXJlKCcuLyQuZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBJT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07IiwiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuLyQuZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpdCl7XG4gIHJldHVybiBPYmplY3QoZGVmaW5lZChpdCkpO1xufTsiLCJ2YXIgaWQgPSAwXG4gICwgcHggPSBNYXRoLnJhbmRvbSgpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihrZXkpe1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTsiLCJ2YXIgc3RvcmUgID0gcmVxdWlyZSgnLi8kLnNoYXJlZCcpKCd3a3MnKVxuICAsIHVpZCAgICA9IHJlcXVpcmUoJy4vJC51aWQnKVxuICAsIFN5bWJvbCA9IHJlcXVpcmUoJy4vJC5nbG9iYWwnKS5TeW1ib2w7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gc3RvcmVbbmFtZV0gfHwgKHN0b3JlW25hbWVdID1cbiAgICBTeW1ib2wgJiYgU3ltYm9sW25hbWVdIHx8IChTeW1ib2wgfHwgdWlkKSgnU3ltYm9sLicgKyBuYW1lKSk7XG59OyIsIid1c2Ugc3RyaWN0JztcbnZhciBhZGRUb1Vuc2NvcGFibGVzID0gcmVxdWlyZSgnLi8kLmFkZC10by11bnNjb3BhYmxlcycpXG4gICwgc3RlcCAgICAgICAgICAgICA9IHJlcXVpcmUoJy4vJC5pdGVyLXN0ZXAnKVxuICAsIEl0ZXJhdG9ycyAgICAgICAgPSByZXF1aXJlKCcuLyQuaXRlcmF0b3JzJylcbiAgLCB0b0lPYmplY3QgICAgICAgID0gcmVxdWlyZSgnLi8kLnRvLWlvYmplY3QnKTtcblxuLy8gMjIuMS4zLjQgQXJyYXkucHJvdG90eXBlLmVudHJpZXMoKVxuLy8gMjIuMS4zLjEzIEFycmF5LnByb3RvdHlwZS5rZXlzKClcbi8vIDIyLjEuMy4yOSBBcnJheS5wcm90b3R5cGUudmFsdWVzKClcbi8vIDIyLjEuMy4zMCBBcnJheS5wcm90b3R5cGVbQEBpdGVyYXRvcl0oKVxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuLyQuaXRlci1kZWZpbmUnKShBcnJheSwgJ0FycmF5JywgZnVuY3Rpb24oaXRlcmF0ZWQsIGtpbmQpe1xuICB0aGlzLl90ID0gdG9JT2JqZWN0KGl0ZXJhdGVkKTsgLy8gdGFyZ2V0XG4gIHRoaXMuX2kgPSAwOyAgICAgICAgICAgICAgICAgICAvLyBuZXh0IGluZGV4XG4gIHRoaXMuX2sgPSBraW5kOyAgICAgICAgICAgICAgICAvLyBraW5kXG4vLyAyMi4xLjUuMi4xICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uKCl7XG4gIHZhciBPICAgICA9IHRoaXMuX3RcbiAgICAsIGtpbmQgID0gdGhpcy5fa1xuICAgICwgaW5kZXggPSB0aGlzLl9pKys7XG4gIGlmKCFPIHx8IGluZGV4ID49IE8ubGVuZ3RoKXtcbiAgICB0aGlzLl90ID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiBzdGVwKDEpO1xuICB9XG4gIGlmKGtpbmQgPT0gJ2tleXMnICApcmV0dXJuIHN0ZXAoMCwgaW5kZXgpO1xuICBpZihraW5kID09ICd2YWx1ZXMnKXJldHVybiBzdGVwKDAsIE9baW5kZXhdKTtcbiAgcmV0dXJuIHN0ZXAoMCwgW2luZGV4LCBPW2luZGV4XV0pO1xufSwgJ3ZhbHVlcycpO1xuXG4vLyBhcmd1bWVudHNMaXN0W0BAaXRlcmF0b3JdIGlzICVBcnJheVByb3RvX3ZhbHVlcyUgKDkuNC40LjYsIDkuNC40LjcpXG5JdGVyYXRvcnMuQXJndW1lbnRzID0gSXRlcmF0b3JzLkFycmF5O1xuXG5hZGRUb1Vuc2NvcGFibGVzKCdrZXlzJyk7XG5hZGRUb1Vuc2NvcGFibGVzKCd2YWx1ZXMnKTtcbmFkZFRvVW5zY29wYWJsZXMoJ2VudHJpZXMnKTsiLCIvLyAxOS4xLjMuMSBPYmplY3QuYXNzaWduKHRhcmdldCwgc291cmNlKVxudmFyICRleHBvcnQgPSByZXF1aXJlKCcuLyQuZXhwb3J0Jyk7XG5cbiRleHBvcnQoJGV4cG9ydC5TICsgJGV4cG9ydC5GLCAnT2JqZWN0Jywge2Fzc2lnbjogcmVxdWlyZSgnLi8kLm9iamVjdC1hc3NpZ24nKX0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciAkYXQgID0gcmVxdWlyZSgnLi8kLnN0cmluZy1hdCcpKHRydWUpO1xuXG4vLyAyMS4xLjMuMjcgU3RyaW5nLnByb3RvdHlwZVtAQGl0ZXJhdG9yXSgpXG5yZXF1aXJlKCcuLyQuaXRlci1kZWZpbmUnKShTdHJpbmcsICdTdHJpbmcnLCBmdW5jdGlvbihpdGVyYXRlZCl7XG4gIHRoaXMuX3QgPSBTdHJpbmcoaXRlcmF0ZWQpOyAvLyB0YXJnZXRcbiAgdGhpcy5faSA9IDA7ICAgICAgICAgICAgICAgIC8vIG5leHQgaW5kZXhcbi8vIDIxLjEuNS4yLjEgJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0KClcbn0sIGZ1bmN0aW9uKCl7XG4gIHZhciBPICAgICA9IHRoaXMuX3RcbiAgICAsIGluZGV4ID0gdGhpcy5faVxuICAgICwgcG9pbnQ7XG4gIGlmKGluZGV4ID49IE8ubGVuZ3RoKXJldHVybiB7dmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZX07XG4gIHBvaW50ID0gJGF0KE8sIGluZGV4KTtcbiAgdGhpcy5faSArPSBwb2ludC5sZW5ndGg7XG4gIHJldHVybiB7dmFsdWU6IHBvaW50LCBkb25lOiBmYWxzZX07XG59KTsiLCIndXNlIHN0cmljdCc7XG4vLyBFQ01BU2NyaXB0IDYgc3ltYm9scyBzaGltXG52YXIgJCAgICAgICAgICAgICAgPSByZXF1aXJlKCcuLyQnKVxuICAsIGdsb2JhbCAgICAgICAgID0gcmVxdWlyZSgnLi8kLmdsb2JhbCcpXG4gICwgaGFzICAgICAgICAgICAgPSByZXF1aXJlKCcuLyQuaGFzJylcbiAgLCBERVNDUklQVE9SUyAgICA9IHJlcXVpcmUoJy4vJC5kZXNjcmlwdG9ycycpXG4gICwgJGV4cG9ydCAgICAgICAgPSByZXF1aXJlKCcuLyQuZXhwb3J0JylcbiAgLCByZWRlZmluZSAgICAgICA9IHJlcXVpcmUoJy4vJC5yZWRlZmluZScpXG4gICwgJGZhaWxzICAgICAgICAgPSByZXF1aXJlKCcuLyQuZmFpbHMnKVxuICAsIHNoYXJlZCAgICAgICAgID0gcmVxdWlyZSgnLi8kLnNoYXJlZCcpXG4gICwgc2V0VG9TdHJpbmdUYWcgPSByZXF1aXJlKCcuLyQuc2V0LXRvLXN0cmluZy10YWcnKVxuICAsIHVpZCAgICAgICAgICAgID0gcmVxdWlyZSgnLi8kLnVpZCcpXG4gICwgd2tzICAgICAgICAgICAgPSByZXF1aXJlKCcuLyQud2tzJylcbiAgLCBrZXlPZiAgICAgICAgICA9IHJlcXVpcmUoJy4vJC5rZXlvZicpXG4gICwgJG5hbWVzICAgICAgICAgPSByZXF1aXJlKCcuLyQuZ2V0LW5hbWVzJylcbiAgLCBlbnVtS2V5cyAgICAgICA9IHJlcXVpcmUoJy4vJC5lbnVtLWtleXMnKVxuICAsIGlzQXJyYXkgICAgICAgID0gcmVxdWlyZSgnLi8kLmlzLWFycmF5JylcbiAgLCBhbk9iamVjdCAgICAgICA9IHJlcXVpcmUoJy4vJC5hbi1vYmplY3QnKVxuICAsIHRvSU9iamVjdCAgICAgID0gcmVxdWlyZSgnLi8kLnRvLWlvYmplY3QnKVxuICAsIGNyZWF0ZURlc2MgICAgID0gcmVxdWlyZSgnLi8kLnByb3BlcnR5LWRlc2MnKVxuICAsIGdldERlc2MgICAgICAgID0gJC5nZXREZXNjXG4gICwgc2V0RGVzYyAgICAgICAgPSAkLnNldERlc2NcbiAgLCBfY3JlYXRlICAgICAgICA9ICQuY3JlYXRlXG4gICwgZ2V0TmFtZXMgICAgICAgPSAkbmFtZXMuZ2V0XG4gICwgJFN5bWJvbCAgICAgICAgPSBnbG9iYWwuU3ltYm9sXG4gICwgJEpTT04gICAgICAgICAgPSBnbG9iYWwuSlNPTlxuICAsIF9zdHJpbmdpZnkgICAgID0gJEpTT04gJiYgJEpTT04uc3RyaW5naWZ5XG4gICwgc2V0dGVyICAgICAgICAgPSBmYWxzZVxuICAsIEhJRERFTiAgICAgICAgID0gd2tzKCdfaGlkZGVuJylcbiAgLCBpc0VudW0gICAgICAgICA9ICQuaXNFbnVtXG4gICwgU3ltYm9sUmVnaXN0cnkgPSBzaGFyZWQoJ3N5bWJvbC1yZWdpc3RyeScpXG4gICwgQWxsU3ltYm9scyAgICAgPSBzaGFyZWQoJ3N5bWJvbHMnKVxuICAsIHVzZU5hdGl2ZSAgICAgID0gdHlwZW9mICRTeW1ib2wgPT0gJ2Z1bmN0aW9uJ1xuICAsIE9iamVjdFByb3RvICAgID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLy8gZmFsbGJhY2sgZm9yIG9sZCBBbmRyb2lkLCBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9Njg3XG52YXIgc2V0U3ltYm9sRGVzYyA9IERFU0NSSVBUT1JTICYmICRmYWlscyhmdW5jdGlvbigpe1xuICByZXR1cm4gX2NyZWF0ZShzZXREZXNjKHt9LCAnYScsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uKCl7IHJldHVybiBzZXREZXNjKHRoaXMsICdhJywge3ZhbHVlOiA3fSkuYTsgfVxuICB9KSkuYSAhPSA3O1xufSkgPyBmdW5jdGlvbihpdCwga2V5LCBEKXtcbiAgdmFyIHByb3RvRGVzYyA9IGdldERlc2MoT2JqZWN0UHJvdG8sIGtleSk7XG4gIGlmKHByb3RvRGVzYylkZWxldGUgT2JqZWN0UHJvdG9ba2V5XTtcbiAgc2V0RGVzYyhpdCwga2V5LCBEKTtcbiAgaWYocHJvdG9EZXNjICYmIGl0ICE9PSBPYmplY3RQcm90bylzZXREZXNjKE9iamVjdFByb3RvLCBrZXksIHByb3RvRGVzYyk7XG59IDogc2V0RGVzYztcblxudmFyIHdyYXAgPSBmdW5jdGlvbih0YWcpe1xuICB2YXIgc3ltID0gQWxsU3ltYm9sc1t0YWddID0gX2NyZWF0ZSgkU3ltYm9sLnByb3RvdHlwZSk7XG4gIHN5bS5fayA9IHRhZztcbiAgREVTQ1JJUFRPUlMgJiYgc2V0dGVyICYmIHNldFN5bWJvbERlc2MoT2JqZWN0UHJvdG8sIHRhZywge1xuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICBzZXQ6IGZ1bmN0aW9uKHZhbHVlKXtcbiAgICAgIGlmKGhhcyh0aGlzLCBISURERU4pICYmIGhhcyh0aGlzW0hJRERFTl0sIHRhZykpdGhpc1tISURERU5dW3RhZ10gPSBmYWxzZTtcbiAgICAgIHNldFN5bWJvbERlc2ModGhpcywgdGFnLCBjcmVhdGVEZXNjKDEsIHZhbHVlKSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHN5bTtcbn07XG5cbnZhciBpc1N5bWJvbCA9IGZ1bmN0aW9uKGl0KXtcbiAgcmV0dXJuIHR5cGVvZiBpdCA9PSAnc3ltYm9sJztcbn07XG5cbnZhciAkZGVmaW5lUHJvcGVydHkgPSBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0eShpdCwga2V5LCBEKXtcbiAgaWYoRCAmJiBoYXMoQWxsU3ltYm9scywga2V5KSl7XG4gICAgaWYoIUQuZW51bWVyYWJsZSl7XG4gICAgICBpZighaGFzKGl0LCBISURERU4pKXNldERlc2MoaXQsIEhJRERFTiwgY3JlYXRlRGVzYygxLCB7fSkpO1xuICAgICAgaXRbSElEREVOXVtrZXldID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSlpdFtISURERU5dW2tleV0gPSBmYWxzZTtcbiAgICAgIEQgPSBfY3JlYXRlKEQsIHtlbnVtZXJhYmxlOiBjcmVhdGVEZXNjKDAsIGZhbHNlKX0pO1xuICAgIH0gcmV0dXJuIHNldFN5bWJvbERlc2MoaXQsIGtleSwgRCk7XG4gIH0gcmV0dXJuIHNldERlc2MoaXQsIGtleSwgRCk7XG59O1xudmFyICRkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyhpdCwgUCl7XG4gIGFuT2JqZWN0KGl0KTtcbiAgdmFyIGtleXMgPSBlbnVtS2V5cyhQID0gdG9JT2JqZWN0KFApKVxuICAgICwgaSAgICA9IDBcbiAgICAsIGwgPSBrZXlzLmxlbmd0aFxuICAgICwga2V5O1xuICB3aGlsZShsID4gaSkkZGVmaW5lUHJvcGVydHkoaXQsIGtleSA9IGtleXNbaSsrXSwgUFtrZXldKTtcbiAgcmV0dXJuIGl0O1xufTtcbnZhciAkY3JlYXRlID0gZnVuY3Rpb24gY3JlYXRlKGl0LCBQKXtcbiAgcmV0dXJuIFAgPT09IHVuZGVmaW5lZCA/IF9jcmVhdGUoaXQpIDogJGRlZmluZVByb3BlcnRpZXMoX2NyZWF0ZShpdCksIFApO1xufTtcbnZhciAkcHJvcGVydHlJc0VudW1lcmFibGUgPSBmdW5jdGlvbiBwcm9wZXJ0eUlzRW51bWVyYWJsZShrZXkpe1xuICB2YXIgRSA9IGlzRW51bS5jYWxsKHRoaXMsIGtleSk7XG4gIHJldHVybiBFIHx8ICFoYXModGhpcywga2V5KSB8fCAhaGFzKEFsbFN5bWJvbHMsIGtleSkgfHwgaGFzKHRoaXMsIEhJRERFTikgJiYgdGhpc1tISURERU5dW2tleV1cbiAgICA/IEUgOiB0cnVlO1xufTtcbnZhciAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGl0LCBrZXkpe1xuICB2YXIgRCA9IGdldERlc2MoaXQgPSB0b0lPYmplY3QoaXQpLCBrZXkpO1xuICBpZihEICYmIGhhcyhBbGxTeW1ib2xzLCBrZXkpICYmICEoaGFzKGl0LCBISURERU4pICYmIGl0W0hJRERFTl1ba2V5XSkpRC5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgcmV0dXJuIEQ7XG59O1xudmFyICRnZXRPd25Qcm9wZXJ0eU5hbWVzID0gZnVuY3Rpb24gZ2V0T3duUHJvcGVydHlOYW1lcyhpdCl7XG4gIHZhciBuYW1lcyAgPSBnZXROYW1lcyh0b0lPYmplY3QoaXQpKVxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGkgICAgICA9IDBcbiAgICAsIGtleTtcbiAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZighaGFzKEFsbFN5bWJvbHMsIGtleSA9IG5hbWVzW2krK10pICYmIGtleSAhPSBISURERU4pcmVzdWx0LnB1c2goa2V5KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgJGdldE93blByb3BlcnR5U3ltYm9scyA9IGZ1bmN0aW9uIGdldE93blByb3BlcnR5U3ltYm9scyhpdCl7XG4gIHZhciBuYW1lcyAgPSBnZXROYW1lcyh0b0lPYmplY3QoaXQpKVxuICAgICwgcmVzdWx0ID0gW11cbiAgICAsIGkgICAgICA9IDBcbiAgICAsIGtleTtcbiAgd2hpbGUobmFtZXMubGVuZ3RoID4gaSlpZihoYXMoQWxsU3ltYm9scywga2V5ID0gbmFtZXNbaSsrXSkpcmVzdWx0LnB1c2goQWxsU3ltYm9sc1trZXldKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG52YXIgJHN0cmluZ2lmeSA9IGZ1bmN0aW9uIHN0cmluZ2lmeShpdCl7XG4gIGlmKGl0ID09PSB1bmRlZmluZWQgfHwgaXNTeW1ib2woaXQpKXJldHVybjsgLy8gSUU4IHJldHVybnMgc3RyaW5nIG9uIHVuZGVmaW5lZFxuICB2YXIgYXJncyA9IFtpdF1cbiAgICAsIGkgICAgPSAxXG4gICAgLCAkJCAgID0gYXJndW1lbnRzXG4gICAgLCByZXBsYWNlciwgJHJlcGxhY2VyO1xuICB3aGlsZSgkJC5sZW5ndGggPiBpKWFyZ3MucHVzaCgkJFtpKytdKTtcbiAgcmVwbGFjZXIgPSBhcmdzWzFdO1xuICBpZih0eXBlb2YgcmVwbGFjZXIgPT0gJ2Z1bmN0aW9uJykkcmVwbGFjZXIgPSByZXBsYWNlcjtcbiAgaWYoJHJlcGxhY2VyIHx8ICFpc0FycmF5KHJlcGxhY2VyKSlyZXBsYWNlciA9IGZ1bmN0aW9uKGtleSwgdmFsdWUpe1xuICAgIGlmKCRyZXBsYWNlcil2YWx1ZSA9ICRyZXBsYWNlci5jYWxsKHRoaXMsIGtleSwgdmFsdWUpO1xuICAgIGlmKCFpc1N5bWJvbCh2YWx1ZSkpcmV0dXJuIHZhbHVlO1xuICB9O1xuICBhcmdzWzFdID0gcmVwbGFjZXI7XG4gIHJldHVybiBfc3RyaW5naWZ5LmFwcGx5KCRKU09OLCBhcmdzKTtcbn07XG52YXIgYnVnZ3lKU09OID0gJGZhaWxzKGZ1bmN0aW9uKCl7XG4gIHZhciBTID0gJFN5bWJvbCgpO1xuICAvLyBNUyBFZGdlIGNvbnZlcnRzIHN5bWJvbCB2YWx1ZXMgdG8gSlNPTiBhcyB7fVxuICAvLyBXZWJLaXQgY29udmVydHMgc3ltYm9sIHZhbHVlcyB0byBKU09OIGFzIG51bGxcbiAgLy8gVjggdGhyb3dzIG9uIGJveGVkIHN5bWJvbHNcbiAgcmV0dXJuIF9zdHJpbmdpZnkoW1NdKSAhPSAnW251bGxdJyB8fCBfc3RyaW5naWZ5KHthOiBTfSkgIT0gJ3t9JyB8fCBfc3RyaW5naWZ5KE9iamVjdChTKSkgIT0gJ3t9Jztcbn0pO1xuXG4vLyAxOS40LjEuMSBTeW1ib2woW2Rlc2NyaXB0aW9uXSlcbmlmKCF1c2VOYXRpdmUpe1xuICAkU3ltYm9sID0gZnVuY3Rpb24gU3ltYm9sKCl7XG4gICAgaWYoaXNTeW1ib2wodGhpcykpdGhyb3cgVHlwZUVycm9yKCdTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3InKTtcbiAgICByZXR1cm4gd3JhcCh1aWQoYXJndW1lbnRzLmxlbmd0aCA+IDAgPyBhcmd1bWVudHNbMF0gOiB1bmRlZmluZWQpKTtcbiAgfTtcbiAgcmVkZWZpbmUoJFN5bWJvbC5wcm90b3R5cGUsICd0b1N0cmluZycsIGZ1bmN0aW9uIHRvU3RyaW5nKCl7XG4gICAgcmV0dXJuIHRoaXMuX2s7XG4gIH0pO1xuXG4gIGlzU3ltYm9sID0gZnVuY3Rpb24oaXQpe1xuICAgIHJldHVybiBpdCBpbnN0YW5jZW9mICRTeW1ib2w7XG4gIH07XG5cbiAgJC5jcmVhdGUgICAgID0gJGNyZWF0ZTtcbiAgJC5pc0VudW0gICAgID0gJHByb3BlcnR5SXNFbnVtZXJhYmxlO1xuICAkLmdldERlc2MgICAgPSAkZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuICAkLnNldERlc2MgICAgPSAkZGVmaW5lUHJvcGVydHk7XG4gICQuc2V0RGVzY3MgICA9ICRkZWZpbmVQcm9wZXJ0aWVzO1xuICAkLmdldE5hbWVzICAgPSAkbmFtZXMuZ2V0ID0gJGdldE93blByb3BlcnR5TmFtZXM7XG4gICQuZ2V0U3ltYm9scyA9ICRnZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbiAgaWYoREVTQ1JJUFRPUlMgJiYgIXJlcXVpcmUoJy4vJC5saWJyYXJ5Jykpe1xuICAgIHJlZGVmaW5lKE9iamVjdFByb3RvLCAncHJvcGVydHlJc0VudW1lcmFibGUnLCAkcHJvcGVydHlJc0VudW1lcmFibGUsIHRydWUpO1xuICB9XG59XG5cbnZhciBzeW1ib2xTdGF0aWNzID0ge1xuICAvLyAxOS40LjIuMSBTeW1ib2wuZm9yKGtleSlcbiAgJ2Zvcic6IGZ1bmN0aW9uKGtleSl7XG4gICAgcmV0dXJuIGhhcyhTeW1ib2xSZWdpc3RyeSwga2V5ICs9ICcnKVxuICAgICAgPyBTeW1ib2xSZWdpc3RyeVtrZXldXG4gICAgICA6IFN5bWJvbFJlZ2lzdHJ5W2tleV0gPSAkU3ltYm9sKGtleSk7XG4gIH0sXG4gIC8vIDE5LjQuMi41IFN5bWJvbC5rZXlGb3Ioc3ltKVxuICBrZXlGb3I6IGZ1bmN0aW9uIGtleUZvcihrZXkpe1xuICAgIHJldHVybiBrZXlPZihTeW1ib2xSZWdpc3RyeSwga2V5KTtcbiAgfSxcbiAgdXNlU2V0dGVyOiBmdW5jdGlvbigpeyBzZXR0ZXIgPSB0cnVlOyB9LFxuICB1c2VTaW1wbGU6IGZ1bmN0aW9uKCl7IHNldHRlciA9IGZhbHNlOyB9XG59O1xuLy8gMTkuNC4yLjIgU3ltYm9sLmhhc0luc3RhbmNlXG4vLyAxOS40LjIuMyBTeW1ib2wuaXNDb25jYXRTcHJlYWRhYmxlXG4vLyAxOS40LjIuNCBTeW1ib2wuaXRlcmF0b3Jcbi8vIDE5LjQuMi42IFN5bWJvbC5tYXRjaFxuLy8gMTkuNC4yLjggU3ltYm9sLnJlcGxhY2Vcbi8vIDE5LjQuMi45IFN5bWJvbC5zZWFyY2hcbi8vIDE5LjQuMi4xMCBTeW1ib2wuc3BlY2llc1xuLy8gMTkuNC4yLjExIFN5bWJvbC5zcGxpdFxuLy8gMTkuNC4yLjEyIFN5bWJvbC50b1ByaW1pdGl2ZVxuLy8gMTkuNC4yLjEzIFN5bWJvbC50b1N0cmluZ1RhZ1xuLy8gMTkuNC4yLjE0IFN5bWJvbC51bnNjb3BhYmxlc1xuJC5lYWNoLmNhbGwoKFxuICAnaGFzSW5zdGFuY2UsaXNDb25jYXRTcHJlYWRhYmxlLGl0ZXJhdG9yLG1hdGNoLHJlcGxhY2Usc2VhcmNoLCcgK1xuICAnc3BlY2llcyxzcGxpdCx0b1ByaW1pdGl2ZSx0b1N0cmluZ1RhZyx1bnNjb3BhYmxlcydcbikuc3BsaXQoJywnKSwgZnVuY3Rpb24oaXQpe1xuICB2YXIgc3ltID0gd2tzKGl0KTtcbiAgc3ltYm9sU3RhdGljc1tpdF0gPSB1c2VOYXRpdmUgPyBzeW0gOiB3cmFwKHN5bSk7XG59KTtcblxuc2V0dGVyID0gdHJ1ZTtcblxuJGV4cG9ydCgkZXhwb3J0LkcgKyAkZXhwb3J0LlcsIHtTeW1ib2w6ICRTeW1ib2x9KTtcblxuJGV4cG9ydCgkZXhwb3J0LlMsICdTeW1ib2wnLCBzeW1ib2xTdGF0aWNzKTtcblxuJGV4cG9ydCgkZXhwb3J0LlMgKyAkZXhwb3J0LkYgKiAhdXNlTmF0aXZlLCAnT2JqZWN0Jywge1xuICAvLyAxOS4xLjIuMiBPYmplY3QuY3JlYXRlKE8gWywgUHJvcGVydGllc10pXG4gIGNyZWF0ZTogJGNyZWF0ZSxcbiAgLy8gMTkuMS4yLjQgT2JqZWN0LmRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpXG4gIGRlZmluZVByb3BlcnR5OiAkZGVmaW5lUHJvcGVydHksXG4gIC8vIDE5LjEuMi4zIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKE8sIFByb3BlcnRpZXMpXG4gIGRlZmluZVByb3BlcnRpZXM6ICRkZWZpbmVQcm9wZXJ0aWVzLFxuICAvLyAxOS4xLjIuNiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKE8sIFApXG4gIGdldE93blByb3BlcnR5RGVzY3JpcHRvcjogJGdldE93blByb3BlcnR5RGVzY3JpcHRvcixcbiAgLy8gMTkuMS4yLjcgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoTylcbiAgZ2V0T3duUHJvcGVydHlOYW1lczogJGdldE93blByb3BlcnR5TmFtZXMsXG4gIC8vIDE5LjEuMi44IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoTylcbiAgZ2V0T3duUHJvcGVydHlTeW1ib2xzOiAkZ2V0T3duUHJvcGVydHlTeW1ib2xzXG59KTtcblxuLy8gMjQuMy4yIEpTT04uc3RyaW5naWZ5KHZhbHVlIFssIHJlcGxhY2VyIFssIHNwYWNlXV0pXG4kSlNPTiAmJiAkZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiAqICghdXNlTmF0aXZlIHx8IGJ1Z2d5SlNPTiksICdKU09OJywge3N0cmluZ2lmeTogJHN0cmluZ2lmeX0pO1xuXG4vLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZygkU3ltYm9sLCAnU3ltYm9sJyk7XG4vLyAyMC4yLjEuOSBNYXRoW0BAdG9TdHJpbmdUYWddXG5zZXRUb1N0cmluZ1RhZyhNYXRoLCAnTWF0aCcsIHRydWUpO1xuLy8gMjQuMy4zIEpTT05bQEB0b1N0cmluZ1RhZ11cbnNldFRvU3RyaW5nVGFnKGdsb2JhbC5KU09OLCAnSlNPTicsIHRydWUpOyIsInJlcXVpcmUoJy4vZXM2LmFycmF5Lml0ZXJhdG9yJyk7XG52YXIgSXRlcmF0b3JzID0gcmVxdWlyZSgnLi8kLml0ZXJhdG9ycycpO1xuSXRlcmF0b3JzLk5vZGVMaXN0ID0gSXRlcmF0b3JzLkhUTUxDb2xsZWN0aW9uID0gSXRlcmF0b3JzLkFycmF5OyIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsIlxuY29uc3QgZyA9IHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnID8gZ2xvYmFsIDogc2VsZjtcbmcuYXBwWFJ1bnRpbWVDb25maWcgPSB7fTtcbmcuYXBwWEFwcEpzb24gPSB7XG4gIFwiYXBwXCI6IHtcbiAgICBcIiRob21lcGFnZVwiOiBcInBhZ2VzL3RvZG9zL3RvZG9zXCJcbiAgfVxufTtcbiIsImNvbnN0IElERV9IQUNLX0NPREUgPSB7WDoxfTtjb25zdCBJREVfSEFDS19DT0RFX0JBQ0sgPSB7Li4uSURFX0hBQ0tfQ09ERX07XG5cbnJlcXVpcmUoJy4vY29uZmlnJCcpO1xuXG5mdW5jdGlvbiBzdWNjZXNzKCkge1xucmVxdWlyZSgnLi4vLi4vL2FwcCcpO1xucmVxdWlyZSgnLi4vLi4vY29tcG9uZW50cy9hZGQtYnV0dG9uL2FkZC1idXR0b24nKTtcbnJlcXVpcmUoJy4uLy4uL3BhZ2VzL3BsdWdpbi1jb216YmFkZ2UvaW5kZXgnKTtcbnJlcXVpcmUoJy4uLy4uL3BhZ2VzL3BsdWdpbi1jb216bG9hZGluZy9pbmRleCcpO1xucmVxdWlyZSgnLi4vLi4vcGFnZXMvdG9kb3MvdG9kb3MnKTtcbnJlcXVpcmUoJy4uLy4uL3BhZ2VzL2FkZC10b2RvL2FkZC10b2RvJyk7XG5yZXF1aXJlKCcuLi8uLi9wYWdlcy9hY2NvdW50LWxvZ2luL2luZGV4Jyk7XG5yZXF1aXJlKCcuLi8uLi9wYWdlcy9wbHVnaW4tZGVidWcvaW5kZXgnKTtcbn1cbnNlbGYuYm9vdHN0cmFwQXBwID8gc2VsZi5ib290c3RyYXBBcHAoeyBzdWNjZXNzIH0pIDogc3VjY2VzcygpO1xuIiwiQXBwKHtcbiAgdG9kb3M6IFtcbiAgICB7IHRleHQ6ICdMZWFybmluZyBKYXZhc2NyaXB0JywgY29tcGxldGVkOiB0cnVlIH0sXG4gICAgeyB0ZXh0OiAnTGVhcm5pbmcgRVMyMDE2JywgY29tcGxldGVkOiB0cnVlIH0sXG4gICAgeyB0ZXh0OiAnTGVhcm5pbmcg5pSv5LuY5a6d5bCP56iL5bqPJywgY29tcGxldGVkOiBmYWxzZSB9LFxuICBdLFxuXG4gIHVzZXJJbmZvOiBudWxsLFxuXG4gIGdldFVzZXJJbmZvKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAodGhpcy51c2VySW5mbykgcmVzb2x2ZSh0aGlzLnVzZXJJbmZvKTtcblxuICAgICAgbXkuZ2V0QXV0aENvZGUoe1xuICAgICAgICBzY29wZXM6IFsnYXV0aF91c2VyJ10sXG4gICAgICAgIHN1Y2Nlc3M6IGF1dGhjb2RlID0+IHtcbiAgICAgICAgICBjb25zb2xlLmluZm8oYXV0aGNvZGUpO1xuXG4gICAgICAgICAgbXkuZ2V0QXV0aFVzZXJJbmZvKHtcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XG4gICAgICAgICAgICAgIHRoaXMudXNlckluZm8gPSByZXM7XG4gICAgICAgICAgICAgIHJlc29sdmUodGhpcy51c2VySW5mbyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xuICAgICAgICAgICAgICByZWplY3Qoe30pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogKCkgPT4ge1xuICAgICAgICAgIHJlamVjdCh7fSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSxcbn0pO1xuIiwiQ29tcG9uZW50KHtcbiAgcHJvcHM6IHtcbiAgICB0ZXh0OiAnQnV0dG9uJyxcbiAgICBvbkNsaWNrTWU6ICgpID0+IHt9LFxuICB9LFxuXG4gIG1ldGhvZHM6IHtcbiAgICBvbkNsaWNrTWUoKSB7XG4gICAgICB0aGlzLnByb3BzLm9uQ2xpY2tNZSgpO1xuICAgIH0sXG4gIH0sXG59KTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBXQUNvbXBvbmVudCAoZmFjdG9yeSkge1xuICB2YXIgb3B0aW9uTWFwID0ge1xuICAgIGhlaGF2aW9yczogJ21peGlucycsXG4gICAgZGF0YTogJ2RhdGEnLFxuICAgIHByb3BlcnRpZXM6ICdwcm9wcycsXG4gICAgbWV0aG9kczogJ21ldGhvZHMnLFxuICAgIGF0dGFjaGVkOiAnZGlkTW91bnQnLFxuICAgIG1vdmVkOiAnZGlkVXBkYXRlJyxcbiAgICBkZXRhY2hlZDogJ2RpZFVubW91bnQnLFxuICAgIHJlbGF0aW9uczogJ3JlbGF0aW9ucycsIC8vICrov5nkuKropoHnibnmrorlpITnkIZcbiAgICBleHRlcm5hbENsYXNzZXM6IGZhbHNlIC8vIOi/meS4quaUr+aMgeS4jeS6hiBhbGlhcHDnlKjkuI3kuobliqjmgIEgY2xhc3NcbiAgICAvLyDov5nkupsgdmFudCDmsqHmnInnlKjliLBcbiAgICAvLyBvYnNlcnZlcnNcbiAgICAvLyBjcmVhdGVkXG4gICAgLy8gcmVhZHlcbiAgICAvLyBsaWZldGltZXNcbiAgICAvLyBwYWdlTGlmZXRpbWVzXG4gICAgLy8gZGVmaW5pdGlvbkZpbHRlclxuICB9O1xuICB2YXIgdHJhbnNmb3JtZXJNYXAgPSB7XG4gICAgcHJvcGVydGllczogdHJhbnNmb3JtUHJvcHMsXG4gICAgcmVsYXRpb25zOiB0cmFuc2Zvcm1SZWxhdGlvbnMsXG4gICAgZmFsbGJhY2s6IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4IH0sXG4gIH07XG5cbiAgZnVuY3Rpb24gdHJhbnNmb3JtUHJvcHMgKHByb3BlcnRpZXMpIHtcbiAgICB2YXIgcHJvcHMgPSB7fTtcbiAgICB2YXIgY2FuZGlkYXRlID0gdW5kZWZpbmVkO1xuICAgIE9iamVjdC5rZXlzKHByb3BlcnRpZXMpLmZvckVhY2goZnVuY3Rpb24gaXRvciAoa2V5KSB7XG4gICAgICBjYW5kaWRhdGUgPSBwcm9wZXJ0aWVzW2tleV07XG4gICAgICBpZiAodHlwZW9mIGNhbmRpZGF0ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcHJvcHNba2V5XSA9IGNhbmRpZGF0ZS52YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb3BzW2tleV0gPSBjYW5kaWRhdGU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFuc2Zvcm1SZWxhdGlvbnMgKCkge1xuICAgIC8vIFRPRE86IEBzeVxuICAgIC8vIOWfuuacrOS4iuaJgOaciee7hOS7tumDveeUqOWIsOS6hu+8jOingVxuICAgIC8vIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL3NvbWFybHlvbmtzLzk0Yjc2OTY2MDRhNTI1NTNjZjE5NzZmNGFkMTVhYzQ1XG4gICAgLy8g5omA5Lul5pyA5aW96L+Y5piv6IO95a6e546wIHJlbGF0aW9uc1xuICAgIC8vIGdldFJlbGF0aW9uTm9kZXMgVE9ETzogQHN5IOazqOWGjCBjaGlsZCDlkoxkYXRhXG4gIH1cblxuICBmdW5jdGlvbiBtYXBPcHRpb25zIChvcHRpb25zLCBfbWFwKSB7XG4gICAgdmFyIHJldCA9IHt9O1xuICAgIHZhciB0cmFuc2Zvcm1lciA9IHRyYW5zZm9ybWVyTWFwLmZhbGxiYWNrO1xuXG4gICAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaChmdW5jdGlvbiBpdG9yIChrZXkpIHtcbiAgICAgIHZhciB0YXJnZXRLZXkgPSBfbWFwW2tleV0gfHwga2V5XG4gICAgICB2YXIgdHJhbnNmb3JtZXIgPSB0cmFuc2Zvcm1lck1hcFtrZXldIHx8IHRyYW5zZm9ybWVyTWFwLmZhbGxiYWNrXG4gICAgICByZXRbdGFyZ2V0S2V5XSA9IHRyYW5zZm9ybWVyKG9wdGlvbnNba2V5XSlcbiAgICB9KVxuXG4gICAgY29uc29sZS5sb2coJ29wdGlvbnMnLCByZXQpXG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIENvbXBvbmVudCAob3B0aW9ucykge1xuICAgIHZhciBjb21wb25lbnQgPSBmYWN0b3J5KG1hcE9wdGlvbnMob3B0aW9ucywgb3B0aW9uTWFwKSk7XG4gICAgY29uc29sZS5sb2coJ2ZhY3RvcnknLCBmYWN0b3J5KTtcbiAgICByZXR1cm4gY29tcG9uZW50O1xuICB9XG59XG4iLCJcbi8qIGdsb2JhbCBnZXRBcHAsUGFnZSxteSAqL1xuLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG5cbi8qXG4gIOazqOaEj1xuICAgIC0g6L+Z5Liq5o+S5Lu25piv5LuO5b6u5L+h5bCP56iL5bqP6YeN5p6E5Yiw55m+5bqm5bCP56iL5bqP5YaN6YeN5p6E5Yiw5pSv5LuY5a6d5bCP56iL5bqPXG4gICAgLSDnm67liY3ku6Ugc3dhbiDkvZzkuLrlrr/kuLvlr7nosaFcbiAqL1xuXG52YXIgc3dhbiA9IG15XG52YXIgRHdVdGlscyA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL2R3JykuRHdVdGlsc1xudmFyIGFwcENvbmZpZyA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL2NvbmZpZycpXG4vLyB2YXIgV3hQYXJzZSA9IHJlcXVpcmUoJy4uLy4uL3d4UGFyc2Uvd3hQYXJzZS5qcycpO1xudmFyIGFwcCA9IGdldEFwcCgpXG5cblBhZ2Uoe1xuICBkYXRhOiB7XG4gICAgdXNlckluZm86IHt9LFxuICAgIGludml0YXRpb25Vc2VySW5mbzoge30sXG4gICAgaXNMb2dpbjogZmFsc2UsXG4gICAgdXNlcm5hbWVQbGFjZWhvbGRlcjogJ+eUqOaIt+WQjS/pgq7nrrEv5omL5py65Y+3JyxcbiAgICBzaXRldXNlckRhdGE6IG51bGwsXG4gICAgdGVybToge30sXG4gICAgc2hvd1Rlcm06IGZhbHNlLFxuICAgIGdldFVzZXJJbmZvU3VjY2VzczogZmFsc2UsXG4gICAgbG9naW5SZXNwb25zZToge30sXG5cbiAgICB0YWJzOiBbXG4gICAgICAvLyB7IGluZGV4OiAwLCBuYW1lOiAn5o6I5p2D55m75b2VJywga2V5OiAnYWxsb3dfYXV0aF9kd2FwcCcgfSxcbiAgICAgIHsgaW5kZXg6IDEsIG5hbWU6ICfnlKjmiLflkI3nmbvlvZUnLCBrZXk6ICdhbGxvd191c2VybmFtZV9kd2FwcCcgfSxcbiAgICAgIHsgaW5kZXg6IDIsIG5hbWU6ICfmiYvmnLrnmbvlvZUnLCBrZXk6ICdhbGxvd19tb2JpbGVfZHdhcHAnIH1cbiAgICBdLFxuICAgIGFjdGl2ZUluZGV4OiAxLFxuICAgIHNsaWRlck9mZnNldDogMCxcbiAgICBzbGlkZXJMZWZ0OiAwLFxuXG4gICAgbW9iaWxlOiAnJyxcbiAgICBsb2NrOiBmYWxzZSxcbiAgICB0aW1lcjogNjAsXG4gICAgdGltZXJTdGFydDogZmFsc2UsXG5cbiAgICBjdXJyZW50VmlldzogJ3VzZXJuYW1lTG9naW4nLFxuICAgIGludml0YXRpb25fY29kZTogJydcbiAgfSxcblxuICBvbkxvYWQ6IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIHRoYXQgPSB0aGlzXG4gICAgaWYgKG9wdGlvbnMuaW52aXRhdGlvbl9jb2RlKSB7XG4gICAgICB0aGF0LnNldERhdGEoe1xuICAgICAgICBpbnZpdGF0aW9uX2NvZGU6IG9wdGlvbnMuaW52aXRhdGlvbl9jb2RlXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLnJlc2V0U2xpZGVyKClcbiAgfSxcblxuICByZXNldFNsaWRlcjogZnVuY3Rpb24gKCkge1xuICAgIHZhciB0aGF0ID0gdGhpc1xuICAgIHN3YW4uZ2V0U3lzdGVtSW5mbyh7XG4gICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIHZhciBzbGlkZXJXaWR0aCA9IHRoYXQuZGF0YS50YWJzLmxlbmd0aCA9PT0gMyA/IDExMiA6IDEwMFxuICAgICAgICB0aGF0LnNldERhdGEoe1xuICAgICAgICAgIHNsaWRlckxlZnQ6IChyZXMud2luZG93V2lkdGggLyB0aGF0LmRhdGEudGFicy5sZW5ndGggLSBzbGlkZXJXaWR0aCkgLyAyLFxuICAgICAgICAgIHNsaWRlck9mZnNldDogKHJlcy53aW5kb3dXaWR0aCAvIHRoYXQuZGF0YS50YWJzLmxlbmd0aCkgKiAodGhhdC5kYXRhLmFjdGl2ZUluZGV4IC0gMSlcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuXG4gIGxvZ2luV2l0aE9wZW5pZDogZnVuY3Rpb24gKCkge1xuICAgIC8vXG4gIH0sXG5cbiAgb25TaG93OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpc1xuICAgIHZhciBpbnN0YWxsYXRpb24gPSBzd2FuLmdldFN0b3JhZ2VTeW5jKCdkd2FwcDppbnN0YWxsYXRpb24nKSB8fCB7fVxuICAgIGlmIChpbnN0YWxsYXRpb24uc2l0ZXVzZXJfdG9rZW4pIHtcbiAgICAgIHZtLnNldERhdGEoe1xuICAgICAgICBpc0xvZ2luOiB0cnVlLFxuICAgICAgICBnZXRVc2VySW5mb1N1Y2Nlc3M6IHRydWVcbiAgICAgIH0pXG4gICAgICBhcHAuZ2V0Q2FjaGVkVXNlckluZm8oZnVuY3Rpb24gKHVzZXJJbmZvKSB7XG4gICAgICAgIHZtLnNldERhdGEoe1xuICAgICAgICAgIHVzZXJJbmZvOiB1c2VySW5mb1xuICAgICAgICB9KVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdm0uc2V0RGF0YSh7XG4gICAgICAgIGdldFVzZXJJbmZvU3VjY2VzczogdHJ1ZVxuICAgICAgfSlcblxuICAgICAgaWYgKG15KSB7XG4gICAgICAgIC8vIFRPRE9cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBzd2FuLnNob3dMb2FkaW5nKHtcbiAgICAgICAgdGl0bGU6ICfnmbvlvZXkuK0uLi4nLFxuICAgICAgICBtYXNrOiB0cnVlXG4gICAgICB9KVxuICAgICAgYXBwLmdldFVzZXJJbmZvKFxuICAgICAgICBmdW5jdGlvbiAodXNlckluZm8sIGxvZ2luX2RhdGEsIHVzZXJfZGF0YSkge1xuICAgICAgICAgIHZtLnNldERhdGEoe1xuICAgICAgICAgICAgZ2V0VXNlckluZm9TdWNjZXNzOiB0cnVlLFxuICAgICAgICAgICAgdXNlckluZm86IHVzZXJJbmZvXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoIWluc3RhbGxhdGlvbi5zaXRldXNlcl90b2tlbikge1xuICAgICAgICAgICAgdm0uYWZ0ZXJMb2dpbkFuZEdldFVzZXJJbmZvKGxvZ2luX2RhdGEsIHVzZXJfZGF0YSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3dhbi5oaWRlTG9hZGluZygpXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coJ2FwcC5nZXRVc2VySW5mbyBmYWlsJylcbiAgICAgICAgICBzd2FuLmxvZ2luKHtcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcbiAgICAgICAgICAgIHN1Y2Nlc3MgKGxvZ2luUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgc3dhbi5oaWRlTG9hZGluZygpXG4gICAgICAgICAgICAgIHZtLnNldERhdGEoeyBsb2dpblJlc3BvbnNlOiBsb2dpblJlc3BvbnNlIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cblxuICAgIHZhciBkYXRhID0ge1xuICAgICAgaW52aXRhdGlvbl9jb2RlOiB2bS5kYXRhLmludml0YXRpb25fY29kZSxcbiAgICAgIHBhZ2VfaWQ6IGFwcENvbmZpZy5wYWdlLmlkXG4gICAgfVxuICAgIER3VXRpbHMucmVxdWVzdCgnZ2V0L2NvbXBhbnlfYWNjb3VudC9nZXRfZHdhcHBfbG9naW5fZGF0YScsIGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICB2YXIgZHNoYXJlY29uZmlnID0gcmVzcG9uc2UuZGF0YS5kc2hhcmVjb25maWdcbiAgICAgIHZhciB0YWJzID0gdm0uZGF0YS50YWJzLmZpbHRlcihmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4gZHNoYXJlY29uZmlnW2kua2V5XVxuICAgICAgfSlcbiAgICAgIHZhciBhY3RpdmVJbmRleCA9IHRhYnMubGVuZ3RoID8gdGFic1swXS5pbmRleCA6IDBcblxuICAgICAgdm0uc2V0RGF0YSh7XG4gICAgICAgIHRlcm06IHJlc3BvbnNlLmRhdGEudGVybSxcbiAgICAgICAgaW52aXRhdGlvblVzZXJJbmZvOiByZXNwb25zZS5kYXRhLmludml0YXRpb25fdXNlcixcbiAgICAgICAgc2l0ZXVzZXJEYXRhOiByZXNwb25zZS5kYXRhLnByb2ZpbGUuaWQgPyByZXNwb25zZS5kYXRhLnByb2ZpbGUgOiBudWxsLFxuICAgICAgICAvLyB0YWJzOiB0YWJzLFxuICAgICAgICBhY3RpdmVJbmRleDogdGFicy5sZW5ndGggPyB0YWJzWzBdLmluZGV4IDogMCxcbiAgICAgICAgY3VycmVudFZpZXc6IGFjdGl2ZUluZGV4ID09PSAxID8gJ3VzZXJuYW1lTG9naW4nIDogJ21vYmlsZUxvZ2luJyxcbiAgICAgICAgdXNlcm5hbWVQbGFjZWhvbGRlcjogZHNoYXJlY29uZmlnLmFsbG93X21vYmlsZV9kd2FwcCA/ICfnlKjmiLflkI0v6YKu566xL+aJi+acuuWPtycgOiAn55So5oi35ZCNL+mCrueusSdcbiAgICAgIH0pXG4gICAgICAvLyBXeFBhcnNlLnd4UGFyc2UoJ3Rlcm0uZGVzY3JpcHRpb24nLCAnaHRtbCcsIHJlc3BvbnNlLmRhdGEudGVybS5kZXNjcmlwdGlvbiwgdm0sIDUpO1xuICAgICAgdm0ucmVzZXRTbGlkZXIoKVxuICAgIH0pXG4gIH0sXG5cbiAgY2xpY2tHZXRVc2VySW5mbzogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmRldGFpbC5lcnJNc2cgPT09ICdnZXRVc2VySW5mbzpvaycpIHtcbiAgICAgIHRoaXMuYWZ0ZXJMb2dpbkFuZEdldFVzZXJJbmZvKHRoaXMuZGF0YS5sb2dpblJlc3BvbnNlLCBldmVudC5kZXRhaWwpXG4gICAgICB0aGlzLnNldERhdGEoeyBnZXRVc2VySW5mb1N1Y2Nlc3M6IHRydWUgfSlcbiAgICB9XG4gIH0sXG5cbiAgYWZ0ZXJMb2dpbkFuZEdldFVzZXJJbmZvOiBmdW5jdGlvbiAobG9naW5SZXNwb25zZSwgdXNlckluZm8pIHtcbiAgICB2YXIgdm0gPSB0aGlzXG4gICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2NvbXBhbnlfYWNjb3VudC9kd2FwcF9sb2dpbicsIHsgbG9naW5fZGF0YTogbG9naW5SZXNwb25zZSwgdXNlcl9kYXRhOiB1c2VySW5mbyB9KS50aGVuKFxuICAgICAgZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgIHN3YW4uaGlkZUxvYWRpbmcoKVxuICAgICAgICBpZiAocmVzcG9uc2UuZGF0YS5zaXRldXNlcl90b2tlbikge1xuICAgICAgICAgIHZtLnNldFNpdGV1c2VyVG9rZW4ocmVzcG9uc2UuZGF0YS5zaXRldXNlcl90b2tlbilcbiAgICAgICAgICBzd2FuLnNob3dUb2FzdCh7XG4gICAgICAgICAgICB0aXRsZTogJ+aOiOadg+eZu+W9leaIkOWKn++8gScsXG4gICAgICAgICAgICBpY29uOiAnc3VjY2VzcycsXG4gICAgICAgICAgICBkdXJhdGlvbjogMzAwMFxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApXG4gIH0sXG5cbiAgZ2V0UGhvbmVOdW1iZXI6IGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIHZtID0gdGhpc1xuXG4gICAgc3dhbi5zaG93TG9hZGluZyh7XG4gICAgICB0aXRsZTogJ+eZu+W9leS4rS4uLicsXG4gICAgICBtYXNrOiB0cnVlXG4gICAgfSlcblxuICAgIHZhciBhZnRlclJlc29sdmUgPSBmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIHN3YW4uaGlkZUxvYWRpbmcoKVxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc2l0ZXVzZXJfdG9rZW4pIHtcbiAgICAgICAgdm0uc2V0U2l0ZXVzZXJUb2tlbihyZXNwb25zZS5kYXRhLnNpdGV1c2VyX3Rva2VuKVxuICAgICAgICBzd2FuLnNob3dUb2FzdCh7XG4gICAgICAgICAgdGl0bGU6ICfnmbvlvZXmiJDlip/vvIEnLFxuICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMFxuICAgICAgICB9KVxuICAgICAgICBzd2FuLm5hdmlnYXRlQmFjaygpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGFmdGVyUmVqZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgc3dhbi5oaWRlTG9hZGluZygpXG4gICAgICBzd2FuLnNob3dNb2RhbCh7XG4gICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcbiAgICAgICAgY29udGVudDogJ+iOt+WPluaJi+acuuWPt+Wksei0pe+8geivt+mAieaLqeS9v+eUqOeUqOaIt+WQjeaIluiAheaJi+acuuWPt+iHquWKqOeZu+W9lScsXG4gICAgICAgIHNob3dDYW5jZWw6IGZhbHNlXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChhcHBDb25maWcuZGVidWcpIHtcbiAgICAgIGFwcC5nZXRVc2VySW5mbyhcbiAgICAgICAgZnVuY3Rpb24gKHVzZXJJbmZvLCBsb2dpbl9kYXRhLCB1c2VyX2RhdGEpIHtcbiAgICAgICAgICB2YXIgZGF0YSA9IHsgbG9naW5fZGF0YTogbG9naW5fZGF0YSwgdXNlcl9kYXRhOiB1c2VyX2RhdGEsIHBob25lX2RhdGE6IHt9IH1cbiAgICAgICAgICBEd1V0aWxzLnJlcXVlc3QoJ3Bvc3QvY29tcGFueV9hY2NvdW50L2R3YXBwX2xvZ2luX3dpdGhfbW9iaWxlJywgZGF0YSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGFmdGVyUmVzb2x2ZShyZXNwb25zZSlcbiAgICAgICAgICB9KVxuICAgICAgICB9LFxuICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYWZ0ZXJSZWplY3QoKVxuICAgICAgICB9XG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChlLmRldGFpbC5lbmNyeXB0ZWREYXRhKSB7XG4gICAgICAgIHZhciBwaG9uZV9kYXRhID0gZS5kZXRhaWxcbiAgICAgICAgYXBwLmdldFVzZXJJbmZvKFxuICAgICAgICAgIGZ1bmN0aW9uICh1c2VySW5mbywgbG9naW5fZGF0YSwgdXNlcl9kYXRhKSB7XG4gICAgICAgICAgICB2YXIgZGF0YSA9IHsgbG9naW5fZGF0YTogbG9naW5fZGF0YSwgdXNlcl9kYXRhOiB1c2VyX2RhdGEsIHBob25lX2RhdGE6IHBob25lX2RhdGEgfVxuICAgICAgICAgICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2NvbXBhbnlfYWNjb3VudC9kd2FwcF9sb2dpbl93aXRoX21vYmlsZScsIGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgIGFmdGVyUmVzb2x2ZShyZXNwb25zZSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBhZnRlclJlamVjdCgpXG4gICAgICAgICAgfVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhZnRlclJlamVjdCgpXG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHNldFVzZXJpbmZvOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGF0YS51c2VySW5mbyAmJiB0aGlzLmRhdGEudXNlckluZm8ubmlja05hbWUgJiYgdGhpcy5kYXRhLnVzZXJJbmZvLmF2YXRhclVybCkge1xuICAgICAgdmFyIGRhdGEgPSB7XG4gICAgICAgIG5pY2tuYW1lOiB0aGlzLmRhdGEudXNlckluZm8ubmlja05hbWUsXG4gICAgICAgIGF2YXRhcjogdGhpcy5kYXRhLnVzZXJJbmZvLmF2YXRhclVybFxuICAgICAgfVxuICAgICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2RtaG9tZS9zZXRfdXNlcmluZm8nLCBkYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICAvL1xuICAgICAgfSlcbiAgICB9XG4gIH0sXG5cbiAgdXBkYXRlVGltZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdm0gPSB0aGlzXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgdGltZXIgPSB2bS5kYXRhLnRpbWVyIC0gMVxuICAgICAgdm0uc2V0RGF0YSh7IHRpbWVyOiB0aW1lciB9KVxuICAgICAgdGltZXIgPiAxID8gdm0udXBkYXRlVGltZXIoKSA6IHZtLnN0b3BUaW1lcigpXG4gICAgfSwgMTAwMClcbiAgfSxcblxuICBzdG9wVGltZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgdGltZXI6IDYwLFxuICAgICAgdGltZXJTdGFydDogZmFsc2VcbiAgICB9KVxuICB9LFxuXG4gIHN0YXJ0VGltZXI6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgdGltZXI6IDYwLFxuICAgICAgdGltZXJTdGFydDogdHJ1ZVxuICAgIH0pXG4gICAgdGhpcy51cGRhdGVUaW1lcigpXG4gIH0sXG5cbiAgc2VuZFRva2VuOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgdm0gPSB0aGlzXG4gICAgdmFyIHRva2VuVHlwZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuZGF0YXNldC50b2tlblR5cGVcbiAgICB2YXIgcmVxdWVzdFVybFxuICAgIGlmICh0b2tlblR5cGUgPT09ICdsb2dpbicpIHtcbiAgICAgIHJlcXVlc3RVcmwgPSAncG9zdC9jb21wYW55X2FjY291bnQvc2VuZF9zaXRldXNlcl9sb2dpbl90b2tlbidcbiAgICB9IGVsc2UgaWYgKHRva2VuVHlwZSA9PT0gJ3NpZ251cCcpIHtcbiAgICAgIHJlcXVlc3RVcmwgPSAncG9zdC9jb21wYW55X2FjY291bnQvc2VuZF9zaXRldXNlcl9zaWdudXBfdG9rZW4nXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3RVcmwgPSAncG9zdC9jb21wYW55X2FjY291bnQvc2VuZF9zaXRldXNlcl9yZXNldF90b2tlbidcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhLnRpbWVyU3RhcnQgfHwgdGhpcy5kYXRhLmxvY2spIHJldHVyblxuICAgIGlmICghdGhpcy52YWxpZGF0ZU1vYmlsZSh0aGlzLmRhdGEubW9iaWxlKSkge1xuICAgICAgcmV0dXJuIHZtLnNob3dNb2RhbCgn6ZSZ6K+vJywgJ+ivt+Whq+WGmeato+ehrueahOaJi+acuuWPtycpXG4gICAgfVxuXG4gICAgdGhpcy5zZXREYXRhKHsgbG9jazogdHJ1ZSB9KVxuICAgIHN3YW4uc2hvd0xvYWRpbmcoeyB0aXRsZTogJ+WPkemAgeS4rS4uLicgfSlcbiAgICBEd1V0aWxzLnJlcXVlc3QocmVxdWVzdFVybCwgeyBtb2JpbGU6IHRoaXMuZGF0YS5tb2JpbGUgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIHZtLnNldERhdGEoeyBsb2NrOiBmYWxzZSB9KVxuICAgICAgc3dhbi5oaWRlTG9hZGluZygpXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICB2bS5zaG93TW9kYWwoJ+aIkOWKnycsIHJlc3BvbnNlLmRhdGEubWVzc2FnZSlcbiAgICAgICAgdm0uc3RhcnRUaW1lcigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bS5zaG93TW9kYWwoJ+mUmeivrycsIHJlc3BvbnNlLmRhdGEubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuXG4gIGhhbmRsZU1vYmlsZUlucHV0OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB0aGlzLnNldERhdGEoeyBtb2JpbGU6IGV2ZW50LmRldGFpbC52YWx1ZSB9KVxuICB9LFxuXG4gIHZhbGlkYXRlTW9iaWxlOiBmdW5jdGlvbiAobW9iaWxlKSB7XG4gICAgcmV0dXJuIG1vYmlsZSAmJiAvXjFbXFxkXXsxMH0kLy50ZXN0KG1vYmlsZSlcbiAgfSxcblxuICB0YWJDbGljazogZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAocGFyc2VJbnQoZS5jdXJyZW50VGFyZ2V0LmlkKSA9PT0gMSkge1xuICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgY3VycmVudFZpZXc6ICd1c2VybmFtZUxvZ2luJ1xuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHBhcnNlSW50KGUuY3VycmVudFRhcmdldC5pZCkgPT09IDIpIHtcbiAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIGN1cnJlbnRWaWV3OiAnbW9iaWxlTG9naW4nXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgc2xpZGVyT2Zmc2V0OiBlLmN1cnJlbnRUYXJnZXQub2Zmc2V0TGVmdCxcbiAgICAgIGFjdGl2ZUluZGV4OiBlLmN1cnJlbnRUYXJnZXQuaWRcbiAgICB9KVxuICB9LFxuXG4gIGdldEluc3RhbGxhdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBzd2FuLmdldFN0b3JhZ2VTeW5jKCdkd2FwcDppbnN0YWxsYXRpb24nKSB8fCB7fVxuICB9LFxuXG4gIHNldFNpdGV1c2VyVG9rZW46IGZ1bmN0aW9uIChzaXRldXNlcl90b2tlbikge1xuICAgIHZhciBpbnN0YWxsYXRpb24gPSBzd2FuLmdldFN0b3JhZ2VTeW5jKCdkd2FwcDppbnN0YWxsYXRpb24nKSB8fCB7fVxuICAgIGluc3RhbGxhdGlvbi5zaXRldXNlcl90b2tlbiA9IHNpdGV1c2VyX3Rva2VuXG4gICAgc3dhbi5zZXRTdG9yYWdlU3luYygnZHdhcHA6aW5zdGFsbGF0aW9uJywgaW5zdGFsbGF0aW9uKVxuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpc0xvZ2luOiB0cnVlXG4gICAgfSlcbiAgICB0aGlzLmFmdGVyTG9naW4oKVxuICB9LFxuXG4gIGhhbmRsZUxvZ291dDogZnVuY3Rpb24gKCkge1xuICAgIHZhciB2bSA9IHRoaXNcbiAgICBzd2FuLnNob3dNb2RhbCh7XG4gICAgICB0aXRsZTogJ+aPkOekuicsXG4gICAgICBjb250ZW50OiAn5L2g56Gu5a6a6YCA5Ye65biQ5Y+377yfJyxcbiAgICAgIGNvbmZpcm1UZXh0OiAn56Gu6K6k6YCA5Ye6JyxcbiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgICBpZiAocmVzcG9uc2UuY29uZmlybSkge1xuICAgICAgICAgIHZhciBpbnN0YWxsYXRpb24gPSBzd2FuLmdldFN0b3JhZ2VTeW5jKCdkd2FwcDppbnN0YWxsYXRpb24nKSB8fCB7fVxuICAgICAgICAgIGRlbGV0ZSBpbnN0YWxsYXRpb24uc2l0ZXVzZXJfdG9rZW5cbiAgICAgICAgICBzd2FuLnNldFN0b3JhZ2VTeW5jKCdkd2FwcDppbnN0YWxsYXRpb24nLCBpbnN0YWxsYXRpb24pXG4gICAgICAgICAgc3dhbi5yZW1vdmVTdG9yYWdlU3luYygnc2l0ZXVzZXJfaWQnKVxuICAgICAgICAgIHZtLnNldERhdGEoe1xuICAgICAgICAgICAgaXNMb2dpbjogZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgfSxcblxuICBzaG93TW9kYWw6IGZ1bmN0aW9uICh0aXRsZSwgY29udGVudCkge1xuICAgIHN3YW4uc2hvd01vZGFsKHsgdGl0bGU6IHRpdGxlLCBjb250ZW50OiBjb250ZW50LCBzaG93Q2FuY2VsOiBmYWxzZSB9KVxuICB9LFxuXG4gIHVzZXJuYW1lTG9naW5TdWJtaXQ6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYgKHRoaXMuZ2V0SW5zdGFsbGF0aW9uKCkuc2l0ZXVzZXJfdG9rZW4pIHJldHVyblxuXG4gICAgdmFyIHZtID0gdGhpc1xuICAgIHZhciBmb3JtRGF0YSA9IGRhdGEuZGV0YWlsLnZhbHVlXG4gICAgaWYgKCFmb3JtRGF0YS51c2VybmFtZSB8fCAhZm9ybURhdGEucGFzc3dvcmQpIHtcbiAgICAgIHJldHVybiBzd2FuLnNob3dNb2RhbCh7IHRpdGxlOiAn55m75b2V6ZSZ6K+vJywgY29udGVudDogJ+ivt+Whq+WGmeWujOaVtOi0puWPt+WSjOWvhueggScsIHNob3dDYW5jZWw6IGZhbHNlIH0pXG4gICAgfVxuXG4gICAgc3dhbi5zaG93TG9hZGluZyh7IHRpdGxlOiAn55m75b2V5LitLi4uJyB9KVxuICAgIER3VXRpbHMucmVxdWVzdCgncG9zdC9jb21wYW55X2FjY291bnQvbG9naW4nLCBmb3JtRGF0YSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIHN3YW4uaGlkZUxvYWRpbmcoKVxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgdm0uc2V0U2l0ZXVzZXJUb2tlbihyZXNwb25zZS5kYXRhLnNpdGV1c2VyX3Rva2VuKVxuICAgICAgICBzd2FuLnNob3dUb2FzdCh7XG4gICAgICAgICAgdGl0bGU6ICfnmbvlvZXmiJDlip/vvIEnLFxuICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMFxuICAgICAgICB9KVxuICAgICAgICBzd2FuLm5hdmlnYXRlQmFjaygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gc3dhbi5zaG93TW9kYWwoeyB0aXRsZTogJ+eZu+W9lemUmeivrycsIGNvbnRlbnQ6IHJlc3BvbnNlLmRhdGEubWVzc2FnZSwgc2hvd0NhbmNlbDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuXG4gIHVzZXJuYW1lUmVzZXRTdWJtaXQ6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHZtID0gdGhpc1xuICAgIHZhciBmb3JtRGF0YSA9IGRhdGEuZGV0YWlsLnZhbHVlXG4gICAgaWYgKCFmb3JtRGF0YS5lbWFpbCB8fCAhL0AvLnRlc3QoZm9ybURhdGEuZW1haWwpKSB7XG4gICAgICByZXR1cm4gdm0uc2hvd01vZGFsKCfplJnor68nLCAn6K+35aGr5YaZ5q2j56Gu55qE6YKu566xJylcbiAgICB9XG5cbiAgICBzd2FuLnNob3dMb2FkaW5nKHsgdGl0bGU6ICflj5HpgIHkuK0uLi4nIH0pXG4gICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2RtaG9tZS9wYXNzd29yZF9yZXNldF9lbWFpbCcsIGZvcm1EYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgc3dhbi5oaWRlTG9hZGluZygpXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICB2bS5zaG93TW9kYWwoJ+aIkOWKnycsIHJlc3BvbnNlLmRhdGEubWVzc2FnZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZtLnNob3dNb2RhbCgn6ZSZ6K+vJywgcmVzcG9uc2UuZGF0YS5tZXNzYWdlKVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG5cbiAgdXNlcm5hbWVTaWdudXBTdWJtaXQ6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHZtID0gdGhpc1xuICAgIHZhciBmb3JtRGF0YSA9IGRhdGEuZGV0YWlsLnZhbHVlXG4gICAgZm9ybURhdGEuaW52aXRhdGlvbl9jb2RlID0gdm0uZGF0YS5pbnZpdGF0aW9uX2NvZGVcbiAgICBpZiAoIWZvcm1EYXRhLmVtYWlsIHx8ICEvQC8udGVzdChmb3JtRGF0YS5lbWFpbCkpIHtcbiAgICAgIHJldHVybiB2bS5zaG93TW9kYWwoJ+mUmeivrycsICfor7floavlhpnmraPnoa7nmoTpgq7nrrEnKVxuICAgIH1cbiAgICBpZiAoIWZvcm1EYXRhLnVzZXJuYW1lIHx8ICFmb3JtRGF0YS5wYXNzd29yZDEpIHtcbiAgICAgIHJldHVybiB2bS5zaG93TW9kYWwoJ+mUmeivrycsICfor7floavlhpnmraPnoa7nmoTnlKjmiLflkI3lkozlr4bnoIEnKVxuICAgIH1cbiAgICBpZiAoIS9eW2Etel1bYS16MC05Xy1dezMsfS8udGVzdChmb3JtRGF0YS51c2VybmFtZSkpIHtcbiAgICAgIHJldHVybiB2bS5zaG93TW9kYWwoJ+mUmeivrycsICfnlKjmiLflkI3kuLrlpKfkuo7lm5vkvY3nmoTlrZfmr43lkozmlbDlrZfvvIzlv4Xpobvku6XlrZfmr43lvIDlpLQnKVxuICAgIH1cbiAgICBpZiAoZm9ybURhdGEucGFzc3dvcmQxICE9PSBmb3JtRGF0YS5wYXNzd29yZDIpIHtcbiAgICAgIHJldHVybiB2bS5zaG93TW9kYWwoJ+mUmeivrycsICfkuKTmrKHovpPlhaXnmoTlr4bnoIHkuI3kuIDoh7QnKVxuICAgIH1cbiAgICBzd2FuLnNob3dMb2FkaW5nKHsgdGl0bGU6ICflj5HpgIHkuK0uLi4nIH0pXG4gICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2NvbXBhbnlfYWNjb3VudC9zaWdudXAnLCBmb3JtRGF0YSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIHN3YW4uaGlkZUxvYWRpbmcoKVxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgdm0uc2V0U2l0ZXVzZXJUb2tlbihyZXNwb25zZS5kYXRhLnNpdGV1c2VyX3Rva2VuKVxuICAgICAgICBzd2FuLnNob3dUb2FzdCh7XG4gICAgICAgICAgdGl0bGU6ICfms6jlhozmiJDlip/vvIEnLFxuICAgICAgICAgIGljb246ICdzdWNjZXNzJyxcbiAgICAgICAgICBkdXJhdGlvbjogMzAwMFxuICAgICAgICB9KVxuICAgICAgICB2bS5nb0JhY2soKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm0uc2hvd01vZGFsKCfplJnor68nLCByZXNwb25zZS5kYXRhLm1lc3NhZ2UpXG4gICAgICB9XG4gICAgfSlcbiAgfSxcblxuICBtb2JpbGVMb2dpblN1Ym1pdDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgdm0gPSB0aGlzXG4gICAgdmFyIGZvcm1EYXRhID0gZGF0YS5kZXRhaWwudmFsdWVcbiAgICBpZiAoIXZtLnZhbGlkYXRlTW9iaWxlKGZvcm1EYXRhLm1vYmlsZSkgfHwgIWZvcm1EYXRhLmNvZGUpIHtcbiAgICAgIHJldHVybiB2bS5zaG93TW9kYWwoJ+mUmeivrycsICfor7floavlhpnmraPnoa7nmoTmiYvmnLrlj7flkozpqozor4HnoIEnKVxuICAgIH1cblxuICAgIHN3YW4uc2hvd0xvYWRpbmcoeyB0aXRsZTogJ+eZu+W9leS4rS4uLicgfSlcbiAgICBEd1V0aWxzLnJlcXVlc3QoJ3Bvc3QvY29tcGFueV9hY2NvdW50L2xvZ2luX3dpdGhfbW9iaWxlJywgZm9ybURhdGEpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICBzd2FuLmhpZGVMb2FkaW5nKClcbiAgICAgIGlmIChyZXNwb25zZS5kYXRhLnN0YXR1cyA9PT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgIHZtLnNldFNpdGV1c2VyVG9rZW4ocmVzcG9uc2UuZGF0YS5zaXRldXNlcl90b2tlbilcbiAgICAgICAgdm0uc2hvd01vZGFsKCfmiJDlip8nLCByZXNwb25zZS5kYXRhLm1lc3NhZ2UpXG4gICAgICAgIHZtLmdvQmFjaygpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2bS5zaG93TW9kYWwoJ+mUmeivrycsIHJlc3BvbnNlLmRhdGEubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9KVxuICB9LFxuXG4gIG1vYmlsZVNpZ251cFN1Ym1pdDogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgdm0gPSB0aGlzXG4gICAgdmFyIGZvcm1EYXRhID0gZGF0YS5kZXRhaWwudmFsdWVcbiAgICBmb3JtRGF0YS5pbnZpdGF0aW9uX2NvZGUgPSB2bS5kYXRhLmludml0YXRpb25fY29kZVxuICAgIGlmICghdm0udmFsaWRhdGVNb2JpbGUoZm9ybURhdGEubW9iaWxlKSB8fCAhZm9ybURhdGEuY29kZSkge1xuICAgICAgcmV0dXJuIHZtLnNob3dNb2RhbCgn6ZSZ6K+vJywgJ+ivt+Whq+WGmeato+ehrueahOaJi+acuuWPt+WSjOmqjOivgeeggScpXG4gICAgfVxuICAgIGlmICghZm9ybURhdGEucGFzc3dvcmQxKSB7XG4gICAgICByZXR1cm4gdm0uc2hvd01vZGFsKCfplJnor68nLCAn6K+35aGr5YaZ5a+G56CBJylcbiAgICB9XG4gICAgaWYgKGZvcm1EYXRhLnBhc3N3b3JkMSAhPT0gZm9ybURhdGEucGFzc3dvcmQyKSB7XG4gICAgICByZXR1cm4gdm0uc2hvd01vZGFsKCfplJnor68nLCAn5Lik5qyh6L6T5YWl55qE5a+G56CB5LiN5LiA6Ie0JylcbiAgICB9XG5cbiAgICBzd2FuLnNob3dMb2FkaW5nKHsgdGl0bGU6ICfms6jlhozkuK0uLi4nIH0pXG4gICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2NvbXBhbnlfYWNjb3VudC9zaWdudXBfd2l0aF9tb2JpbGUnLCBmb3JtRGF0YSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgIHN3YW4uaGlkZUxvYWRpbmcoKVxuICAgICAgaWYgKHJlc3BvbnNlLmRhdGEuc3RhdHVzID09PSAnc3VjY2VzcycpIHtcbiAgICAgICAgdm0uc2V0U2l0ZXVzZXJUb2tlbihyZXNwb25zZS5kYXRhLnNpdGV1c2VyX3Rva2VuKVxuICAgICAgICB2bS5zaG93TW9kYWwoJ+aIkOWKnycsIHJlc3BvbnNlLmRhdGEubWVzc2FnZSlcbiAgICAgICAgdm0uZ29CYWNrKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZtLnNob3dNb2RhbCgn6ZSZ6K+vJywgcmVzcG9uc2UuZGF0YS5tZXNzYWdlKVxuICAgICAgfVxuICAgIH0pXG4gIH0sXG5cbiAgbW9iaWxlUmVzZXRTdWJtaXQ6IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHZtID0gdGhpc1xuICAgIHZhciBmb3JtRGF0YSA9IGRhdGEuZGV0YWlsLnZhbHVlXG4gICAgaWYgKCF2bS52YWxpZGF0ZU1vYmlsZShmb3JtRGF0YS5tb2JpbGUpIHx8ICFmb3JtRGF0YS5jb2RlKSB7XG4gICAgICByZXR1cm4gdm0uc2hvd01vZGFsKCfplJnor68nLCAn6K+35aGr5YaZ5q2j56Gu55qE5omL5py65Y+35ZKM6aqM6K+B56CBJylcbiAgICB9XG4gICAgaWYgKCFmb3JtRGF0YS5wYXNzd29yZDEpIHtcbiAgICAgIHJldHVybiB2bS5zaG93TW9kYWwoJ+mUmeivrycsICfor7floavlhpnlr4bnoIEnKVxuICAgIH1cbiAgICBpZiAoZm9ybURhdGEucGFzc3dvcmQxICE9PSBmb3JtRGF0YS5wYXNzd29yZDIpIHtcbiAgICAgIHJldHVybiB2bS5zaG93TW9kYWwoJ+mUmeivrycsICfkuKTmrKHovpPlhaXnmoTlr4bnoIHkuI3kuIDoh7QnKVxuICAgIH1cblxuICAgIHN3YW4uc2hvd0xvYWRpbmcoeyB0aXRsZTogJ+WvhueggemHjee9ruS4rS4uLicgfSlcbiAgICBEd1V0aWxzLnJlcXVlc3QoJ3Bvc3QvY29tcGFueV9hY2NvdW50L3Jlc2V0X3Bhc3N3b3JkX2J5X21vYmlsZScsIGZvcm1EYXRhKS50aGVuKGZ1bmN0aW9uIChyZXNwb25zZSkge1xuICAgICAgc3dhbi5oaWRlTG9hZGluZygpXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICB2bS5zZXRTaXRldXNlclRva2VuKHJlc3BvbnNlLmRhdGEuc2l0ZXVzZXJfdG9rZW4pXG4gICAgICAgIHZtLnNob3dNb2RhbCgn5oiQ5YqfJywgcmVzcG9uc2UuZGF0YS5tZXNzYWdlKVxuICAgICAgICB2bS5nb0JhY2soKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm0uc2hvd01vZGFsKCfplJnor68nLCByZXNwb25zZS5kYXRhLm1lc3NhZ2UpXG4gICAgICB9XG4gICAgfSlcbiAgfSxcblxuICBoYW5kbGVVcGRhdGVWaWV3OiBmdW5jdGlvbiAoZSkge1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBjdXJyZW50VmlldzogZS5jdXJyZW50VGFyZ2V0LmRhdGFzZXQudmlld1xuICAgIH0pXG4gIH0sXG5cbiAgZ29CYWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgc3dhbi5uYXZpZ2F0ZUJhY2soKVxuICB9LFxuXG4gIGdvQmFja0hvbWU6IGZ1bmN0aW9uICgpIHtcbiAgICBzd2FuLnN3aXRjaFRhYih7IHVybDogJy4uL2RlZmF1bHQtaG9tZS9pbmRleCcgfSlcbiAgfSxcblxuICBhZnRlckxvZ2luOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHZtID0gdGhpc1xuXG4gICAgLy8g5omA5pyJ55m75b2V5LmL5ZCO6KaB5YGa55qE5LqL57uf5LiA5pS+5Yiw5LiA5Liq6K+35rGC5aSE55CGXG4gICAgYXBwLmdldFVzZXJJbmZvKGZ1bmN0aW9uICh1c2VySW5mbywgbG9naW5fZGF0YSwgdXNlcl9kYXRhKSB7XG4gICAgICB2YXIgZGF0YSA9IHsgbG9naW5fZGF0YTogbG9naW5fZGF0YSwgdXNlcl9kYXRhOiB1c2VyX2RhdGEgfVxuICAgICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2NvbXBhbnlfYWNjb3VudC9hZnRlcl9kd2FwcF9sb2dpbicsIGRhdGEpLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgIHZtLnNldERhdGEoe1xuICAgICAgICAgIHNpdGV1c2VyRGF0YTogcmVzcG9uc2UuZGF0YS5zaXRldXNlciA/IHJlc3BvbnNlLmRhdGEuc2l0ZXVzZXIgOiBudWxsXG4gICAgICAgIH0pXG4gICAgICB9KVxuICAgIH0pXG5cbiAgICB2YXIgcHNob3BfaWQgPSBzd2FuLmdldFN0b3JhZ2VTeW5jKCdwc2hvcF9pZCcpXG4gICAgRHdVdGlscy5yZXF1ZXN0KCdwb3N0L2NvbXBhbnlfYWNjb3VudC9hZnRlcl9kd2FwcF9sb2dpbl93aXRoX3BzaG9wX2lkJywgeyBwc2hvcF9pZDogcHNob3BfaWQgfSkudGhlbihmdW5jdGlvbiAoXG4gICAgICByZXNwb25zZVxuICAgICkge1xuICAgICAgY29uc29sZS5sb2coJ3Bvc3QvY29tcGFueV9hY2NvdW50L2FmdGVyX2R3YXBwX2xvZ2luX3dpdGhfcHNob3BfaWQnLCBwc2hvcF9pZCwgcmVzcG9uc2UpXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YS5zaXRldXNlcikge1xuICAgICAgICBzd2FuLnNldFN0b3JhZ2VTeW5jKCdzaXRldXNlcl9pZCcsIHJlc3BvbnNlLmRhdGEuc2l0ZXVzZXIuaWQpXG4gICAgICB9XG4gICAgfSlcbiAgfSxcblxuICBvcGVuVGVybTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBzaG93VGVybTogdHJ1ZVxuICAgIH0pXG4gIH0sXG5cbiAgY2xvc2VUZXJtOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIHNob3dUZXJtOiBmYWxzZVxuICAgIH0pXG4gIH1cbn0pXG4iLCJjb25zdCBhcHAgPSBnZXRBcHAoKTtcblxuUGFnZSh7XG4gIGRhdGE6IHtcbiAgICBpbnB1dFZhbHVlOiAnJyxcbiAgfSxcblxuICBvbkJsdXIoZSkge1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBpbnB1dFZhbHVlOiBlLmRldGFpbC52YWx1ZSxcbiAgICB9KTtcbiAgfSxcblxuICBhZGQoKSB7XG4gICAgYXBwLnRvZG9zID0gYXBwLnRvZG9zLmNvbmNhdChbXG4gICAgICB7XG4gICAgICAgIHRleHQ6IHRoaXMuZGF0YS5pbnB1dFZhbHVlLFxuICAgICAgICBjb21wZWxldGVkOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBteS5uYXZpZ2F0ZUJhY2soKTtcbiAgfSxcbn0pO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIFdBQ29tcG9uZW50ID0gcmVxdWlyZSgnLi4vLi4vY29tcG9uZW50cy9zaGFyZWQvd2Fjb21wb25lbnQuanMnKTtcbkNvbXBvbmVudCA9IFdBQ29tcG9uZW50KENvbXBvbmVudCk7XG5cblxudmFyIERFRkFVTFRfQ09MT1IgPSAnI2ZmZic7XG52YXIgREVGQVVMVF9CQUNLR1JPVU5EX0NPTE9SID0gJyNmNDQnO1xudmFyIERFRkFVTFRfRk9OVF9TSVpFID0gMTA7XG52YXIgREVGQVVMVF9CT1hfU0hBRE9XID0gJzAgMCAwIDJweCAjZmZmJztcblxuQ29tcG9uZW50KHtcbiAgbWV0aG9kczoge1xuICAgIHROIChlKSB7XG4gICAgICBjb25zb2xlLmxvZygnMTIzJyk7XG4gICAgICB0aGlzLnByb3BzLm9uVE4oJzQ1NicpXG4gICAgfSxcbiAgfSxcbiAgYXR0YWNoZWQgKCkge1xuICAgIG15LiR3YSA9IDFcbiAgICBjb25zb2xlLmxvZygneHh4eHh4eHh4eCcsIHRoaXMpXG4gIH0sXG4gIHByb3BlcnRpZXM6IHtcbiAgICBjb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgdmFsdWU6IERFRkFVTFRfQ09MT1JcbiAgICB9LFxuICAgIGJhY2tncm91bmRDb2xvcjoge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgdmFsdWU6IERFRkFVTFRfQkFDS0dST1VORF9DT0xPUlxuICAgIH0sXG4gICAgZm9udFNpemU6IHtcbiAgICAgIHR5cGU6IE51bWJlcixcbiAgICAgIHZhbHVlOiBERUZBVUxUX0ZPTlRfU0laRVxuICAgIH0sXG4gICAgYm94U2hhZG93OiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICB2YWx1ZTogREVGQVVMVF9CT1hfU0hBRE9XXG4gICAgfSxcbiAgICBvblROICh4KSB7XG4gICAgICBjb25zb2xlLmxvZyh4LCB0aGlzLCB0aGlzLnRyaWdnZXJFdmVudClcbiAgICB9XG4gIH1cbn0pOyIsIid1c2Ugc3RyaWN0JztcbnZhciBXQUNvbXBvbmVudCA9IHJlcXVpcmUoJy4uLy4uL2NvbXBvbmVudHMvc2hhcmVkL3dhY29tcG9uZW50LmpzJyk7XG5Db21wb25lbnQgPSBXQUNvbXBvbmVudChDb21wb25lbnQpO1xuXG5cbkNvbXBvbmVudCh7XG4gIHByb3BlcnRpZXM6IHtcbiAgICB0eXBlOiB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICB2YWx1ZTogJ2NpcmNsZSdcbiAgICB9LFxuICAgIGNvbG9yOiB7XG4gICAgICB0eXBlOiBTdHJpbmdcbiAgICB9LFxuICAgICR3YUNoaWxkRGlkTW91bmQ6IHtcbiAgICAgIHZhbHVlOiAoKSA9PiB7fSxcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBfZGlkTW91bnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnNvbGUubG9nKDIpXG4gICAgfSxcbiAgfSxcbiAgYXR0YWNoZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICBjb25zb2xlLmxvZygneHh4eCcsIHRoaXMsIG15LiR3YSlcbiAgfVxufSk7IiwiXG4vKiBnbG9iYWwgZ2V0Q3VycmVudFBhZ2VzLFBhZ2UsbXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGNhbWVsY2FzZSAqL1xuXG52YXIgd3ggPSBteVxuY29uc3QgRHdVdGlscyA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL2R3JykuRHdVdGlsc1xuLy8gdmFyIGFwcENvbmZpZyA9IHJlcXVpcmUoJy4uLy4uL3V0aWxzL2NvbmZpZycpXG5sZXQgZGVidWdDb3VudGVyID0gMFxuXG5QYWdlKHtcbiAgZGF0YToge1xuICAgIGlzTG9naW46IGZhbHNlLFxuICAgIHByZXZpb3VzRHdIcmVmOiBudWxsLFxuICAgIHByZXZpb3VzUXJjb2RlOiBudWxsXG4gIH0sXG5cbiAgb25Mb2FkIChvcHRpb25zKSB7XG4gICAgLy9cbiAgfSxcblxuICBvblNob3cgKCkge1xuICAgIHRoaXMuZ2V0UHJldmlvdXNRcmNvZGUoKVxuICB9LFxuXG4gIGdldFByZXZpb3VzUXJjb2RlICgpIHtcbiAgICBjb25zdCBwYWdlcyA9IGdldEN1cnJlbnRQYWdlcygpXG4gICAgaWYgKHBhZ2VzLmxlbmd0aCA+PSAyKSB7XG4gICAgICBjb25zdCBwYWdlID0gcGFnZXMuc2xpY2UoLTIsIC0xKVswXVxuICAgICAgY29uc3QgcGF0aCA9IHBhZ2Uucm91dGVcbiAgICAgIGNvbnN0IHBhcmFtcyA9IHBhZ2UuZGF0YS5xdWVyeSB8fCB7fVxuXG4gICAgICBjb25zdCBkd2hyZWZQYXRoID0gcGF0aC5zcGxpdCgnLycpLnNsaWNlKC0yLCAtMSlbMF1cbiAgICAgIGNvbnN0IHF1ZXJ5ID0gT2JqZWN0LmtleXMocGFyYW1zKS5tYXAoaSA9PiBpICsgJz0nICsgcGFyYW1zW2ldKS5qb2luKCcmJylcbiAgICAgIGNvbnN0IHNlYXJjaCA9IHF1ZXJ5ID8gKCc/JyArIHF1ZXJ5KSA6ICcnXG4gICAgICBjb25zdCBkd2hyZWYgPSBkd2hyZWZQYXRoICsgc2VhcmNoXG5cbiAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIHByZXZpb3VzRHdIcmVmOiBkd2hyZWZcbiAgICAgIH0pXG4gICAgICBEd1V0aWxzLmZldGNoKCdnZXQvZHdhcHAvY3JlYXRlX2R3YXBwX3FyY29kZScsIHsgZHdocmVmIH0pLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZygncmVzcG9uc2UnLCByZXNwb25zZSlcbiAgICAgICAgY29uc3QgeyBkYXRhOiB7IHN0YXR1cywgb2JqZWN0IH0gfSA9IHJlc3BvbnNlXG4gICAgICAgIGlmIChzdGF0dXMgPT09ICdzdWNjZXNzJykge1xuICAgICAgICAgIGNvbnN0IHsgcXJjb2RlIH0gPSBvYmplY3RcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgcHJldmlvdXNRcmNvZGU6IER3VXRpbHMuZmlsdGVycy5xaW5pdShxcmNvZGUpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH0sXG5cbiAgcHJldmlld1FyY29kZSAoKSB7XG4gICAgd3gucHJldmlld0ltYWdlKHtcbiAgICAgIGN1cnJlbnQ6IHRoaXMuZGF0YS5wcmV2aW91c1FyY29kZSxcbiAgICAgIHVybHM6IFt0aGlzLmRhdGEucHJldmlvdXNRcmNvZGVdXG4gICAgfSlcbiAgfSxcblxuICBzZXRFbmFibGVEZWJ1ZyAoKSB7XG4gICAgd3guc2V0RW5hYmxlRGVidWcoe1xuICAgICAgZW5hYmxlRGVidWc6IEJvb2xlYW4oKytkZWJ1Z0NvdW50ZXIgJSAyKVxuICAgIH0pXG4gIH0sXG5cbiAgZ29CYWNrICgpIHtcbiAgICB3eC5uYXZpZ2F0ZUJhY2soKVxuICB9LFxuXG4gIGdvQmFja0hvbWUgKCkge1xuICAgIHd4LnN3aXRjaFRhYih7dXJsOiAnLi4vZGVmYXVsdC1ob21lL2luZGV4J30pXG4gIH1cblxufSlcbiIsImNvbnN0IGFwcCA9IGdldEFwcCgpO1xuXG5QYWdlKHtcbiAgZGF0YToge30sXG5cbiAgb25Mb2FkKCkge1xuICAgIGFwcC5nZXRVc2VySW5mbygpLnRoZW4oXG4gICAgICB1c2VyID0+IHtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICB1c2VyLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIC8vIOiOt+WPlueUqOaIt+S/oeaBr+Wksei0pVxuICAgICAgfVxuICAgICk7XG4gIH0sXG5cbiAgb25TaG93KCkge1xuICAgIHRoaXMuc2V0RGF0YSh7IHRvZG9zOiBhcHAudG9kb3MgfSk7XG4gIH0sXG5cbiAgb25Ub2RvQ2hhbmdlZChlKSB7XG4gICAgY29uc3QgY2hlY2tlZFRvZG9zID0gZS5kZXRhaWwudmFsdWU7XG4gICAgYXBwLnRvZG9zID0gYXBwLnRvZG9zLm1hcCh0b2RvID0+ICh7XG4gICAgICAuLi50b2RvLFxuICAgICAgY29tcGxldGVkOiBjaGVja2VkVG9kb3MuaW5kZXhPZih0b2RvLnRleHQpID4gLTEsXG4gICAgfSkpO1xuICAgIHRoaXMuc2V0RGF0YSh7IHRvZG9zOiBhcHAudG9kb3MgfSk7XG4gIH0sXG5cbiAgb25UTiAoeCkge1xuICAgIGNvbnNvbGUubG9nKHgsIHgpXG4gIH0sXG5cbiAgYWRkVG9kbygpIHtcbiAgICBteS5uYXZpZ2F0ZVRvKHsgdXJsOiAnLi4vYWRkLXRvZG8vYWRkLXRvZG8nIH0pO1xuICB9LFxufSk7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgXCJhcGlVcmxcIjogXCJodHRwOi8vdGVzdGFwaS5kZW1sdXRpb24uY29tXCIsXG4gIFwiYXBwXCI6IHtcbiAgICBcInBhZ2VzXCI6IFtcbiAgICAgIFwicGFnZXMvYXBwX2R3c3RvcmUtY2FyZC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9kZWZhdWx0LWhvbWUvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvYWNjb3VudC1sb2dpbi9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9jaGFyZ2UvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvcGx1Z2luLWZ4Zm9udC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9wbHVnaW4tcmVkaXJlY3QvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZGVmYXVsdC1pZF81OWZmMDlmMmU0OWQ0MGI0ZDBmYWFjY2EvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZmVhdHVyZS1hYm91dC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLWNvbnRhY3QvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZmVhdHVyZS1zZWFyY2gvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvbGlzdC1wcm9kdWN0L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2RldGFpbC1wcm9kdWN0L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL21hbGwtY2FydC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9tYWxsLWNoZWNrb3V0L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2xpc3QtbmV3cy9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9kZXRhaWwtbmV3cy9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9saXN0LXNlcnZpY2UvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZGV0YWlsLXNlcnZpY2UvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvbGlzdC1hY3Rpdml0eS9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9kZXRhaWwtYWN0aXZpdHkvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvbGlzdC1ldmVudC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9kZXRhaWwtZXZlbnQvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvbGlzdC1wb3N0L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2RldGFpbC1wb3N0L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2xpc3QtaW1hZ2VzZXQvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZGV0YWlsLWltYWdlc2V0L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZvcnVtLWluZGV4L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZvcnVtLWxpc3QvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZm9ydW0tZGV0YWlsL2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZvcnVtLWZvcm0vaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZm9ydW0tcHJvZmlsZS9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLWhvbWUvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZmVhdHVyZS1hY2NvdW50L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtbm90aWNlL2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtaW52aXRhdGlvbi9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLW1lbWJlci9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLWNyZWRpdHMvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZmVhdHVyZS1naWZ0L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtZm9ybS9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLWNvdXBvbmNhcmQvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZmVhdHVyZS1jb3Vwb24vaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZmVhdHVyZS1nYW1laW5mby9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLW9yZGVyL2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtZmF2b3JpdGVzL2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtcmV2aWV3L2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtYWRkcmVzc2Jvb2svaW5kZXhcIixcbiAgICAgIFwicGFnZXMvZmVhdHVyZS1wc2hvcC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLXNlY3Rpb25fcG9zdC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLXNlY3Rpb25fZmF2b3JpdGVzL2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtc2VjdGlvbl9yZXBseS9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLWZvcnVtX3RvcGljL2luZGV4XCIsXG4gICAgICBcInBhZ2VzL2ZlYXR1cmUtZm9ydW1fcG9zdC9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLWZvcnVtX2Zhdm9yaXRlcy9pbmRleFwiLFxuICAgICAgXCJwYWdlcy9mZWF0dXJlLWZvcnVtX2NyZWRpdHMvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvYXBwX2R3c3RvcmUtZ3JvdXAvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvYXBwX2R3c3RvcmUtcGlwZWxpbmUvaW5kZXhcIixcbiAgICAgIFwicGFnZXMvYXBwX2R3c3RvcmUtbXkvaW5kZXhcIlxuICAgIF0sXG4gICAgXCJ0YWJCYXJcIjoge1xuICAgICAgXCJiYWNrZ3JvdW5kQ29sb3JcIjogXCIjZmZmXCIsXG4gICAgICBcImJvcmRlclN0eWxlXCI6IFwiYmxhY2tcIixcbiAgICAgIFwiY29sb3JcIjogXCIjNjE2MTYxXCIsXG4gICAgICBcImxpc3RcIjogW1xuICAgICAgICB7XG4gICAgICAgICAgXCJpY29uUGF0aFwiOiBcImltYWdlcy9pY29uLTAucG5nXCIsXG4gICAgICAgICAgXCJwYWdlUGF0aFwiOiBcInBhZ2VzL2FwcF9kd3N0b3JlLWNhcmQvaW5kZXhcIixcbiAgICAgICAgICBcInNlbGVjdGVkSWNvblBhdGhcIjogXCJpbWFnZXMvaWNvbi1zZWxlY3RlZC0wLnBuZ1wiLFxuICAgICAgICAgIFwidGV4dFwiOiBcIuWQjeeJh1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImljb25QYXRoXCI6IFwiaW1hZ2VzL2ljb24tMS5wbmdcIixcbiAgICAgICAgICBcInBhZ2VQYXRoXCI6IFwicGFnZXMvYXBwX2R3c3RvcmUtZ3JvdXAvaW5kZXhcIixcbiAgICAgICAgICBcInNlbGVjdGVkSWNvblBhdGhcIjogXCJpbWFnZXMvaWNvbi1zZWxlY3RlZC0xLnBuZ1wiLFxuICAgICAgICAgIFwidGV4dFwiOiBcIue+pOaOqOW5v1wiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImljb25QYXRoXCI6IFwiaW1hZ2VzL2ljb24tMi5wbmdcIixcbiAgICAgICAgICBcInBhZ2VQYXRoXCI6IFwicGFnZXMvYXBwX2R3c3RvcmUtcGlwZWxpbmUvaW5kZXhcIixcbiAgICAgICAgICBcInNlbGVjdGVkSWNvblBhdGhcIjogXCJpbWFnZXMvaWNvbi1zZWxlY3RlZC0yLnBuZ1wiLFxuICAgICAgICAgIFwidGV4dFwiOiBcIuS6uuiEiVwiXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBcImljb25QYXRoXCI6IFwiaW1hZ2VzL2ljb24tMy5wbmdcIixcbiAgICAgICAgICBcInBhZ2VQYXRoXCI6IFwicGFnZXMvYXBwX2R3c3RvcmUtbXkvaW5kZXhcIixcbiAgICAgICAgICBcInNlbGVjdGVkSWNvblBhdGhcIjogXCJpbWFnZXMvaWNvbi1zZWxlY3RlZC0zLnBuZ1wiLFxuICAgICAgICAgIFwidGV4dFwiOiBcIuaIkVwiXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBcInBvc2l0aW9uXCI6IFwiYm90dG9tXCIsXG4gICAgICBcInNlbGVjdGVkQ29sb3JcIjogXCIjMmIyYjJiXCJcbiAgICB9LFxuICAgIFwid2luZG93XCI6IHtcbiAgICAgIFwiYmFja2dyb3VuZFRleHRTdHlsZVwiOiBcImxpZ2h0XCIsXG4gICAgICBcIm5hdmlnYXRpb25CYXJCYWNrZ3JvdW5kQ29sb3JcIjogXCIjZmZmXCIsXG4gICAgICBcIm5hdmlnYXRpb25CYXJUZXh0U3R5bGVcIjogXCJibGFja1wiLFxuICAgICAgXCJuYXZpZ2F0aW9uQmFyVGl0bGVUZXh0XCI6IFwiV2VDaGF0XCJcbiAgICB9XG4gIH0sXG4gIFwiYnVpbGREYXRlXCI6IG51bGwsXG4gIFwiY29tcGFueVwiOiB7XG4gICAgXCJhZ2VudF9uYW1lXCI6IFwi5LiK5rW35LiA5b2T572R57uc56eR5oqA5pyJ6ZmQ5YWs5Y+4XCIsXG4gICAgXCJhcHBfdmVyc2lvblwiOiBcIjIwMTgtMDctMTAgMTM6MTlcIixcbiAgICBcImlkXCI6IDUwMCxcbiAgICBcIm5hbWVcIjogXCLkuIrmtbfmsYLnnJ/kuJPkv67lrabmoKFcIixcbiAgICBcIm5pY2tuYW1lXCI6IFwicWl1emhlblwiXG4gIH0sXG4gIFwiZGVidWdcIjogdHJ1ZSxcbiAgXCJwYWdlXCI6IHtcbiAgICBcImlkXCI6IDI2NzgsXG4gICAgXCJuYW1lXCI6IFwiZHdzdG9yZVwiXG4gIH1cbn0iLCJcbi8qIGdsb2JhbCBteSxnZXRDdXJyZW50UGFnZXMsc3dhbiAqL1xudmFyIHd4ID0gbXlcbnZhciBXeFBhcnNlID0ge31cblxudmFyIGNvbmZpZyA9IHJlcXVpcmUoJy4vY29uZmlnJylcbnZhciBzaGFyZWQgPSByZXF1aXJlKCcuL2R3X3NoYXJlZCcpXG4vLyB2YXIgV3hQYXJzZSA9IHJlcXVpcmUoJy4uL3d4UGFyc2Uvd3hQYXJzZS5qcycpXG52YXIgaXNTd2FuID0gdHlwZW9mIHN3YW4gPT09ICdvYmplY3QnXG52YXIgaXNNeSA9IHR5cGVvZiBteSA9PT0gJ29iamVjdCdcblxubW9kdWxlLmV4cG9ydHMgPSBzaGFyZWQuZGVmYXVsdC5idWlsZER3KHtcbiAgY29uZmlnOiBjb25maWcsXG4gIFd4UGFyc2U6IFd4UGFyc2UsXG4gIHd4OiBpc1N3YW4gPyBzd2FuIDogd3gsXG4gIGlzU3dhbixcbiAgaXNNeSxcbiAgZ2V0Q3VycmVudFBhZ2VzOiBnZXRDdXJyZW50UGFnZXNcbn0pXG4iLCIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuXG52YXIgd2luZG93ID0ge1xuICBBcnJheTogQXJyYXksXG4gIFNldDogU2V0LFxuICBQcm9taXNlOiBQcm9taXNlLFxuICBEYXRlOiBEYXRlLFxuICBFcnJvcjogRXJyb3IsXG4gIEZ1bmN0aW9uOiBGdW5jdGlvbixcbiAgTWF0aDogTWF0aCxcbiAgT2JqZWN0OiBPYmplY3QsXG4gIFJlZ0V4cDogUmVnRXhwLFxuICBTdHJpbmc6IFN0cmluZyxcbiAgVHlwZUVycm9yOiBUeXBlRXJyb3IsXG4gIHNldFRpbWVvdXQ6IHNldFRpbWVvdXQsXG4gIGNsZWFyVGltZW91dDogY2xlYXJUaW1lb3V0LFxuICBzZXRJbnRlcnZhbDogc2V0SW50ZXJ2YWwsXG4gIGNsZWFySW50ZXJ2YWw6IGNsZWFySW50ZXJ2YWwsXG4gIHBhcnNlSW50OiBwYXJzZUludCxcbiAgcGFyc2VGbG9hdDogcGFyc2VGbG9hdCxcbiAgTnVtYmVyOiBOdW1iZXJcbn07XG5tb2R1bGUuZXhwb3J0cz1mdW5jdGlvbih0KXtmdW5jdGlvbiBuKHIpe2lmKGVbcl0pcmV0dXJuIGVbcl0uZXhwb3J0czt2YXIgaT1lW3JdPXtpOnIsbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtyXS5jYWxsKGkuZXhwb3J0cyxpLGkuZXhwb3J0cyxuKSxpLmw9ITAsaS5leHBvcnRzfXZhciBlPXt9O3JldHVybiBuLm09dCxuLmM9ZSxuLmQ9ZnVuY3Rpb24odCxlLHIpe24ubyh0LGUpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6cn0pfSxuLm49ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIG4uZChlLFwiYVwiLGUpLGV9LG4ubz1mdW5jdGlvbih0LG4pe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxuKX0sbi5wPVwiL1VzZXJzL3Jpc2VudC9Qcm9qZWN0L2JhemFhcjQvZHN0b3JlL2Rpc3RcIixuKG4ucz0yMTMpfShbZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMiksaT1lKDM0KSxvPWUoMTYpLHU9ZSgxNyksYT1lKDIyKSxjPVwicHJvdG90eXBlXCIscz1mdW5jdGlvbih0LG4sZSl7dmFyIGYsbCxoLHAsdj10JnMuRixkPXQmcy5HLHk9dCZzLlMsZz10JnMuUCxtPXQmcy5CLF89ZD9yOnk/cltuXXx8KHJbbl09e30pOihyW25dfHx7fSlbY10sdz1kP2k6aVtuXXx8KGlbbl09e30pLGI9d1tjXXx8KHdbY109e30pO2QmJihlPW4pO2ZvcihmIGluIGUpbD0hdiYmXyYmdm9pZCAwIT09X1tmXSxoPShsP186ZSlbZl0scD1tJiZsP2EoaCxyKTpnJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBoP2EoRnVuY3Rpb24uY2FsbCxoKTpoLF8mJnUoXyxmLGgsdCZzLlUpLHdbZl0hPWgmJm8odyxmLHApLGcmJmJbZl0hPWgmJihiW2ZdPWgpfTtyLmNvcmU9aSxzLkY9MSxzLkc9MixzLlM9NCxzLlA9OCxzLkI9MTYscy5XPTMyLHMuVT02NCxzLlI9MTI4LHQuZXhwb3J0cz1zfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoIXIodCkpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGFuIG9iamVjdCFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4pe3ZhciBlPXQuZXhwb3J0cz1cInVuZGVmaW5lZFwiIT10eXBlb2Ygd2luZG93JiZ3aW5kb3cuTWF0aD09TWF0aD93aW5kb3c6XCJ1bmRlZmluZWRcIiE9dHlwZW9mIHNlbGYmJnNlbGYuTWF0aD09TWF0aD9zZWxmOkZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcIm51bWJlclwiPT10eXBlb2YgX19nJiYoX19nPWUpfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2godCl7cmV0dXJuITB9fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQ/bnVsbCE9PXQ6XCJmdW5jdGlvblwiPT10eXBlb2YgdH19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDc1KShcIndrc1wiKSxpPWUoNDIpLG89ZSgyKS5TeW1ib2wsdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiBvOyh0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHJbdF18fChyW3RdPXUmJm9bdF18fCh1P286aSkoXCJTeW1ib2wuXCIrdCkpfSkuc3RvcmU9cn0sZnVuY3Rpb24odCxuKXt2YXIgZT10LmV4cG9ydHM9e3ZlcnNpb246XCIyLjUuM1wifTtcIm51bWJlclwiPT10eXBlb2YgX19lJiYoX19lPWUpfSxmdW5jdGlvbih0LG4sZSl7dC5leHBvcnRzPSFlKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxKSxpPWUoMTU0KSxvPWUoMjcpLHU9T2JqZWN0LmRlZmluZVByb3BlcnR5O24uZj1lKDcpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LG4sZSl7aWYocih0KSxuPW8obiwhMCkscihlKSxpKXRyeXtyZXR1cm4gdSh0LG4sZSl9Y2F0Y2godCl7fWlmKFwiZ2V0XCJpbiBlfHxcInNldFwiaW4gZSl0aHJvdyBUeXBlRXJyb3IoXCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCFcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gZSYmKHRbbl09ZS52YWx1ZSksdH19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI5KSxpPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdD4wP2kocih0KSw5MDA3MTk5MjU0NzQwOTkxKTowfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMjgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0KHIodCkpfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgdCl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYSBmdW5jdGlvbiFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxNCksaT1lKDYpLG89ZSgzNyksdT1lKDQwKSxhPVwicHJvdG90eXBlXCIsYz1mdW5jdGlvbih0LG4sZSl7dmFyIHMsZixsLGg9dCZjLkYscD10JmMuRyx2PXQmYy5TLGQ9dCZjLlAseT10JmMuQixnPXQmYy5XLG09cD9pOmlbbl18fChpW25dPXt9KSxfPW1bYV0sdz1wP3I6dj9yW25dOihyW25dfHx7fSlbYV07cCYmKGU9bik7Zm9yKHMgaW4gZSkoZj0haCYmdyYmdm9pZCAwIT09d1tzXSkmJnMgaW4gbXx8KGw9Zj93W3NdOmVbc10sbVtzXT1wJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiB3W3NdP2Vbc106eSYmZj9vKGwscik6ZyYmd1tzXT09bD9mdW5jdGlvbih0KXt2YXIgbj1mdW5jdGlvbihuLGUscil7aWYodGhpcyBpbnN0YW5jZW9mIHQpe3N3aXRjaChhcmd1bWVudHMubGVuZ3RoKXtjYXNlIDA6cmV0dXJuIG5ldyB0O2Nhc2UgMTpyZXR1cm4gbmV3IHQobik7Y2FzZSAyOnJldHVybiBuZXcgdChuLGUpfXJldHVybiBuZXcgdChuLGUscil9cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfTtyZXR1cm4gblthXT10W2FdLG59KGwpOmQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIGw/byhGdW5jdGlvbi5jYWxsLGwpOmwsZCYmKChtLnZpcnR1YWx8fChtLnZpcnR1YWw9e30pKVtzXT1sLHQmYy5SJiZfJiYhX1tzXSYmdShfLHMsbCkpKX07Yy5GPTEsYy5HPTIsYy5TPTQsYy5QPTgsYy5CPTE2LGMuVz0zMixjLlU9NjQsYy5SPTEyOCx0LmV4cG9ydHM9Y30sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTM1KShcIndrc1wiKSxpPWUoOTMpLG89ZSgxNCkuU3ltYm9sLHU9XCJmdW5jdGlvblwiPT10eXBlb2YgbzsodC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByW3RdfHwoclt0XT11JiZvW3RdfHwodT9vOmkpKFwiU3ltYm9sLlwiK3QpKX0pLnN0b3JlPXJ9LGZ1bmN0aW9uKHQsbil7dmFyIGU9dC5leHBvcnRzPVwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3cmJndpbmRvdy5NYXRoPT1NYXRoP3dpbmRvdzpcInVuZGVmaW5lZFwiIT10eXBlb2Ygc2VsZiYmc2VsZi5NYXRoPT1NYXRoP3NlbGY6RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpO1wibnVtYmVyXCI9PXR5cGVvZiBfX2cmJihfX2c9ZSl9LGZ1bmN0aW9uKHQsbil7dmFyIGU9e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoOCksaT1lKDQxKTt0LmV4cG9ydHM9ZSg3KT9mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHIuZih0LG4saSgxLGUpKX06ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0W25dPWUsdH19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDIpLGk9ZSgxNiksbz1lKDE1KSx1PWUoNDIpKFwic3JjXCIpLGE9XCJ0b1N0cmluZ1wiLGM9RnVuY3Rpb25bYV0scz0oXCJcIitjKS5zcGxpdChhKTtlKDM0KS5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBjLmNhbGwodCl9LCh0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUsYSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgZTtjJiYobyhlLFwibmFtZVwiKXx8aShlLFwibmFtZVwiLG4pKSx0W25dIT09ZSYmKGMmJihvKGUsdSl8fGkoZSx1LHRbbl0/XCJcIit0W25dOnMuam9pbihTdHJpbmcobikpKSksdD09PXI/dFtuXT1lOmE/dFtuXT90W25dPWU6aSh0LG4sZSk6KGRlbGV0ZSB0W25dLGkodCxuLGUpKSl9KShGdW5jdGlvbi5wcm90b3R5cGUsYSxmdW5jdGlvbigpe3JldHVyblwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXMmJnRoaXNbdV18fGMuY2FsbCh0aGlzKX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMyksbz1lKDI4KSx1PS9cIi9nLGE9ZnVuY3Rpb24odCxuLGUscil7dmFyIGk9U3RyaW5nKG8odCkpLGE9XCI8XCIrbjtyZXR1cm5cIlwiIT09ZSYmKGErPVwiIFwiK2UrJz1cIicrU3RyaW5nKHIpLnJlcGxhY2UodSxcIiZxdW90O1wiKSsnXCInKSxhK1wiPlwiK2krXCI8L1wiK24rXCI+XCJ9O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciBlPXt9O2VbdF09bihhKSxyKHIuUCtyLkYqaShmdW5jdGlvbigpe3ZhciBuPVwiXCJbdF0oJ1wiJyk7cmV0dXJuIG4hPT1uLnRvTG93ZXJDYXNlKCl8fG4uc3BsaXQoJ1wiJykubGVuZ3RoPjN9KSxcIlN0cmluZ1wiLGUpfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjMpLGk9ZSgyOCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByKGkodCkpfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjQpLGk9ZSg0MSksbz1lKDE5KSx1PWUoMjcpLGE9ZSgxNSksYz1lKDE1NCkscz1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO24uZj1lKDcpP3M6ZnVuY3Rpb24odCxuKXtpZih0PW8odCksbj11KG4sITApLGMpdHJ5e3JldHVybiBzKHQsbil9Y2F0Y2godCl7fWlmKGEodCxuKSlyZXR1cm4gaSghci5mLmNhbGwodCxuKSx0W25dKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDE1KSxpPWUoMTApLG89ZSgxMDMpKFwiSUVfUFJPVE9cIiksdT1PYmplY3QucHJvdG90eXBlO3QuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQpe3JldHVybiB0PWkodCkscih0LG8pP3Rbb106XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD91Om51bGx9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxMSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlKXtpZihyKHQpLHZvaWQgMD09PW4pcmV0dXJuIHQ7c3dpdGNoKGUpe2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIHQuY2FsbChuLGUpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIHQuY2FsbChuLGUscil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24oZSxyLGkpe3JldHVybiB0LmNhbGwobixlLHIsaSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KG4sYXJndW1lbnRzKX19fSxmdW5jdGlvbih0LG4pe3ZhciBlPXt9LnRvU3RyaW5nO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZS5jYWxsKHQpLnNsaWNlKDgsLTEpfX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuISF0JiZyKGZ1bmN0aW9uKCl7bj90LmNhbGwobnVsbCxmdW5jdGlvbigpe30sMSk6dC5jYWxsKG51bGwpfSl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzMiksaT1lKDE4OSksbz1lKDEzMiksdT1PYmplY3QuZGVmaW5lUHJvcGVydHk7bi5mPWUoMzMpP09iamVjdC5kZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LG4sZSl7aWYocih0KSxuPW8obiwhMCkscihlKSxpKXRyeXtyZXR1cm4gdSh0LG4sZSl9Y2F0Y2godCl7fWlmKFwiZ2V0XCJpbiBlfHxcInNldFwiaW4gZSl0aHJvdyBUeXBlRXJyb3IoXCJBY2Nlc3NvcnMgbm90IHN1cHBvcnRlZCFcIik7cmV0dXJuXCJ2YWx1ZVwiaW4gZSYmKHRbbl09ZS52YWx1ZSksdH19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVyblwib2JqZWN0XCI9PXR5cGVvZiB0P251bGwhPT10OlwiZnVuY3Rpb25cIj09dHlwZW9mIHR9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZighcih0KSlyZXR1cm4gdDt2YXIgZSxpO2lmKG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9dC50b1N0cmluZykmJiFyKGk9ZS5jYWxsKHQpKSlyZXR1cm4gaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihlPXQudmFsdWVPZikmJiFyKGk9ZS5jYWxsKHQpKSlyZXR1cm4gaTtpZighbiYmXCJmdW5jdGlvblwiPT10eXBlb2YoZT10LnRvU3RyaW5nKSYmIXIoaT1lLmNhbGwodCkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIrdCk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOih0PjA/cjplKSh0KX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9ZSgzNCksbz1lKDMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciBlPShpLk9iamVjdHx8e30pW3RdfHxPYmplY3RbdF0sdT17fTt1W3RdPW4oZSkscihyLlMrci5GKm8oZnVuY3Rpb24oKXtlKDEpfSksXCJPYmplY3RcIix1KX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDIyKSxpPWUoNjMpLG89ZSgxMCksdT1lKDkpLGE9ZSgxMjApO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciBlPTE9PXQsYz0yPT10LHM9Mz09dCxmPTQ9PXQsbD02PT10LGg9NT09dHx8bCxwPW58fGE7cmV0dXJuIGZ1bmN0aW9uKG4sYSx2KXtmb3IodmFyIGQseSxnPW8obiksbT1pKGcpLF89cihhLHYsMyksdz11KG0ubGVuZ3RoKSxiPTAseD1lP3Aobix3KTpjP3AobiwwKTp2b2lkIDA7dz5iO2IrKylpZigoaHx8YiBpbiBtKSYmKGQ9bVtiXSx5PV8oZCxiLGcpLHQpKWlmKGUpeFtiXT15O2Vsc2UgaWYoeSlzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gZDtjYXNlIDY6cmV0dXJuIGI7Y2FzZSAyOngucHVzaChkKX1lbHNlIGlmKGYpcmV0dXJuITE7cmV0dXJuIGw/LTE6c3x8Zj9mOnh9fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMjYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtpZighcih0KSl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgYW4gb2JqZWN0IVwiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9IWUoNTIpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSxcImFcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSkuYX0pfSxmdW5jdGlvbih0LG4pe3ZhciBlPXQuZXhwb3J0cz17dmVyc2lvbjpcIjIuNS4zXCJ9O1wibnVtYmVyXCI9PXR5cGVvZiBfX2UmJihfX2U9ZSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtpZihlKDcpKXt2YXIgcj1lKDQzKSxpPWUoMiksbz1lKDMpLHU9ZSgwKSxhPWUoODUpLGM9ZSgxMjYpLHM9ZSgyMiksZj1lKDQ5KSxsPWUoNDEpLGg9ZSgxNikscD1lKDUxKSx2PWUoMjkpLGQ9ZSg5KSx5PWUoMTgwKSxnPWUoNDUpLG09ZSgyNyksXz1lKDE1KSx3PWUoNjUpLGI9ZSg0KSx4PWUoMTApLFM9ZSgxMTcpLE89ZSg0NiksUD1lKDIxKSxrPWUoNDcpLmYsRT1lKDExOSksaj1lKDQyKSxBPWUoNSksTT1lKDMxKSxUPWUoNzYpLEY9ZSg4MyksTD1lKDEyMiksST1lKDU3KSxOPWUoODApLEQ9ZSg0OCksUj1lKDEyMSksQz1lKDE3MCksVT1lKDgpLEc9ZSgyMCksVz1VLmYsVj1HLmYsQj1pLlJhbmdlRXJyb3IscT1pLlR5cGVFcnJvcix6PWkuVWludDhBcnJheSxIPVwiQXJyYXlCdWZmZXJcIixKPVwiU2hhcmVkXCIrSCxLPVwiQllURVNfUEVSX0VMRU1FTlRcIixZPVwicHJvdG90eXBlXCIsJD1BcnJheVtZXSxRPWMuQXJyYXlCdWZmZXIsWD1jLkRhdGFWaWV3LFo9TSgwKSx0dD1NKDIpLG50PU0oMyksZXQ9TSg0KSxydD1NKDUpLGl0PU0oNiksb3Q9VCghMCksdXQ9VCghMSksYXQ9TC52YWx1ZXMsY3Q9TC5rZXlzLHN0PUwuZW50cmllcyxmdD0kLmxhc3RJbmRleE9mLGx0PSQucmVkdWNlLGh0PSQucmVkdWNlUmlnaHQscHQ9JC5qb2luLHZ0PSQuc29ydCxkdD0kLnNsaWNlLHl0PSQudG9TdHJpbmcsZ3Q9JC50b0xvY2FsZVN0cmluZyxtdD1BKFwiaXRlcmF0b3JcIiksX3Q9QShcInRvU3RyaW5nVGFnXCIpLHd0PWooXCJ0eXBlZF9jb25zdHJ1Y3RvclwiKSxidD1qKFwiZGVmX2NvbnN0cnVjdG9yXCIpLHh0PWEuQ09OU1RSLFN0PWEuVFlQRUQsT3Q9YS5WSUVXLFB0PVwiV3JvbmcgbGVuZ3RoIVwiLGt0PU0oMSxmdW5jdGlvbih0LG4pe3JldHVybiBUdChGKHQsdFtidF0pLG4pfSksRXQ9byhmdW5jdGlvbigpe3JldHVybiAxPT09bmV3IHoobmV3IFVpbnQxNkFycmF5KFsxXSkuYnVmZmVyKVswXX0pLGp0PSEheiYmISF6W1ldLnNldCYmbyhmdW5jdGlvbigpe25ldyB6KDEpLnNldCh7fSl9KSxBdD1mdW5jdGlvbih0LG4pe3ZhciBlPXYodCk7aWYoZTwwfHxlJW4pdGhyb3cgQihcIldyb25nIG9mZnNldCFcIik7cmV0dXJuIGV9LE10PWZ1bmN0aW9uKHQpe2lmKGIodCkmJlN0IGluIHQpcmV0dXJuIHQ7dGhyb3cgcSh0K1wiIGlzIG5vdCBhIHR5cGVkIGFycmF5IVwiKX0sVHQ9ZnVuY3Rpb24odCxuKXtpZighKGIodCkmJnd0IGluIHQpKXRocm93IHEoXCJJdCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciFcIik7cmV0dXJuIG5ldyB0KG4pfSxGdD1mdW5jdGlvbih0LG4pe3JldHVybiBMdChGKHQsdFtidF0pLG4pfSxMdD1mdW5jdGlvbih0LG4pe2Zvcih2YXIgZT0wLHI9bi5sZW5ndGgsaT1UdCh0LHIpO3I+ZTspaVtlXT1uW2UrK107cmV0dXJuIGl9LEl0PWZ1bmN0aW9uKHQsbixlKXtXKHQsbix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2RbZV19fSl9LE50PWZ1bmN0aW9uKHQpe3ZhciBuLGUscixpLG8sdSxhPXgodCksYz1hcmd1bWVudHMubGVuZ3RoLGY9Yz4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbD12b2lkIDAhPT1mLGg9RShhKTtpZih2b2lkIDAhPWgmJiFTKGgpKXtmb3IodT1oLmNhbGwoYSkscj1bXSxuPTA7IShvPXUubmV4dCgpKS5kb25lO24rKylyLnB1c2goby52YWx1ZSk7YT1yfWZvcihsJiZjPjImJihmPXMoZixhcmd1bWVudHNbMl0sMikpLG49MCxlPWQoYS5sZW5ndGgpLGk9VHQodGhpcyxlKTtlPm47bisrKWlbbl09bD9mKGFbbl0sbik6YVtuXTtyZXR1cm4gaX0sRHQ9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9MCxuPWFyZ3VtZW50cy5sZW5ndGgsZT1UdCh0aGlzLG4pO24+dDspZVt0XT1hcmd1bWVudHNbdCsrXTtyZXR1cm4gZX0sUnQ9ISF6JiZvKGZ1bmN0aW9uKCl7Z3QuY2FsbChuZXcgeigxKSl9KSxDdD1mdW5jdGlvbigpe3JldHVybiBndC5hcHBseShSdD9kdC5jYWxsKE10KHRoaXMpKTpNdCh0aGlzKSxhcmd1bWVudHMpfSxVdD17Y29weVdpdGhpbjpmdW5jdGlvbih0LG4pe3JldHVybiBDLmNhbGwoTXQodGhpcyksdCxuLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sZXZlcnk6ZnVuY3Rpb24odCl7cmV0dXJuIGV0KE10KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmaWxsOmZ1bmN0aW9uKHQpe3JldHVybiBSLmFwcGx5KE10KHRoaXMpLGFyZ3VtZW50cyl9LGZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gRnQodGhpcyx0dChNdCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSl9LGZpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIHJ0KE10KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmaW5kSW5kZXg6ZnVuY3Rpb24odCl7cmV0dXJuIGl0KE10KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxmb3JFYWNoOmZ1bmN0aW9uKHQpe1ooTXQodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGluZGV4T2Y6ZnVuY3Rpb24odCl7cmV0dXJuIHV0KE10KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxpbmNsdWRlczpmdW5jdGlvbih0KXtyZXR1cm4gb3QoTXQodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9LGpvaW46ZnVuY3Rpb24odCl7cmV0dXJuIHB0LmFwcGx5KE10KHRoaXMpLGFyZ3VtZW50cyl9LGxhc3RJbmRleE9mOmZ1bmN0aW9uKHQpe3JldHVybiBmdC5hcHBseShNdCh0aGlzKSxhcmd1bWVudHMpfSxtYXA6ZnVuY3Rpb24odCl7cmV0dXJuIGt0KE10KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxyZWR1Y2U6ZnVuY3Rpb24odCl7cmV0dXJuIGx0LmFwcGx5KE10KHRoaXMpLGFyZ3VtZW50cyl9LHJlZHVjZVJpZ2h0OmZ1bmN0aW9uKHQpe3JldHVybiBodC5hcHBseShNdCh0aGlzKSxhcmd1bWVudHMpfSxyZXZlcnNlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0LG49dGhpcyxlPU10KG4pLmxlbmd0aCxyPU1hdGguZmxvb3IoZS8yKSxpPTA7aTxyOyl0PW5baV0sbltpKytdPW5bLS1lXSxuW2VdPXQ7cmV0dXJuIG59LHNvbWU6ZnVuY3Rpb24odCl7cmV0dXJuIG50KE10KHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxzb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB2dC5jYWxsKE10KHRoaXMpLHQpfSxzdWJhcnJheTpmdW5jdGlvbih0LG4pe3ZhciBlPU10KHRoaXMpLHI9ZS5sZW5ndGgsaT1nKHQscik7cmV0dXJuIG5ldyhGKGUsZVtidF0pKShlLmJ1ZmZlcixlLmJ5dGVPZmZzZXQraSplLkJZVEVTX1BFUl9FTEVNRU5ULGQoKHZvaWQgMD09PW4/cjpnKG4scikpLWkpKX19LEd0PWZ1bmN0aW9uKHQsbil7cmV0dXJuIEZ0KHRoaXMsZHQuY2FsbChNdCh0aGlzKSx0LG4pKX0sV3Q9ZnVuY3Rpb24odCl7TXQodGhpcyk7dmFyIG49QXQoYXJndW1lbnRzWzFdLDEpLGU9dGhpcy5sZW5ndGgscj14KHQpLGk9ZChyLmxlbmd0aCksbz0wO2lmKGkrbj5lKXRocm93IEIoUHQpO2Zvcig7bzxpOyl0aGlzW24rb109cltvKytdfSxWdD17ZW50cmllczpmdW5jdGlvbigpe3JldHVybiBzdC5jYWxsKE10KHRoaXMpKX0sa2V5czpmdW5jdGlvbigpe3JldHVybiBjdC5jYWxsKE10KHRoaXMpKX0sdmFsdWVzOmZ1bmN0aW9uKCl7cmV0dXJuIGF0LmNhbGwoTXQodGhpcykpfX0sQnQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gYih0KSYmdFtTdF0mJlwic3ltYm9sXCIhPXR5cGVvZiBuJiZuIGluIHQmJlN0cmluZygrbik9PVN0cmluZyhuKX0scXQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gQnQodCxuPW0obiwhMCkpP2woMix0W25dKTpWKHQsbil9LHp0PWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4hKEJ0KHQsbj1tKG4sITApKSYmYihlKSYmXyhlLFwidmFsdWVcIikpfHxfKGUsXCJnZXRcIil8fF8oZSxcInNldFwiKXx8ZS5jb25maWd1cmFibGV8fF8oZSxcIndyaXRhYmxlXCIpJiYhZS53cml0YWJsZXx8XyhlLFwiZW51bWVyYWJsZVwiKSYmIWUuZW51bWVyYWJsZT9XKHQsbixlKToodFtuXT1lLnZhbHVlLHQpfTt4dHx8KEcuZj1xdCxVLmY9enQpLHUodS5TK3UuRioheHQsXCJPYmplY3RcIix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOnF0LGRlZmluZVByb3BlcnR5Onp0fSksbyhmdW5jdGlvbigpe3l0LmNhbGwoe30pfSkmJih5dD1ndD1mdW5jdGlvbigpe3JldHVybiBwdC5jYWxsKHRoaXMpfSk7dmFyIEh0PXAoe30sVXQpO3AoSHQsVnQpLGgoSHQsbXQsVnQudmFsdWVzKSxwKEh0LHtzbGljZTpHdCxzZXQ6V3QsY29uc3RydWN0b3I6ZnVuY3Rpb24oKXt9LHRvU3RyaW5nOnl0LHRvTG9jYWxlU3RyaW5nOkN0fSksSXQoSHQsXCJidWZmZXJcIixcImJcIiksSXQoSHQsXCJieXRlT2Zmc2V0XCIsXCJvXCIpLEl0KEh0LFwiYnl0ZUxlbmd0aFwiLFwibFwiKSxJdChIdCxcImxlbmd0aFwiLFwiZVwiKSxXKEh0LF90LHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tTdF19fSksdC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlLGMpe2M9ISFjO3ZhciBzPXQrKGM/XCJDbGFtcGVkXCI6XCJcIikrXCJBcnJheVwiLGw9XCJnZXRcIit0LHA9XCJzZXRcIit0LHY9aVtzXSxnPXZ8fHt9LG09diYmUCh2KSxfPSF2fHwhYS5BQlYseD17fSxTPXYmJnZbWV0sRT1mdW5jdGlvbih0LGUpe3ZhciByPXQuX2Q7cmV0dXJuIHIudltsXShlKm4rci5vLEV0KX0saj1mdW5jdGlvbih0LGUscil7dmFyIGk9dC5fZDtjJiYocj0ocj1NYXRoLnJvdW5kKHIpKTwwPzA6cj4yNTU/MjU1OjI1NSZyKSxpLnZbcF0oZSpuK2kubyxyLEV0KX0sQT1mdW5jdGlvbih0LG4pe1codCxuLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gRSh0aGlzLG4pfSxzZXQ6ZnVuY3Rpb24odCl7cmV0dXJuIGoodGhpcyxuLHQpfSxlbnVtZXJhYmxlOiEwfSl9O18/KHY9ZShmdW5jdGlvbih0LGUscixpKXtmKHQsdixzLFwiX2RcIik7dmFyIG8sdSxhLGMsbD0wLHA9MDtpZihiKGUpKXtpZighKGUgaW5zdGFuY2VvZiBRfHwoYz13KGUpKT09SHx8Yz09SikpcmV0dXJuIFN0IGluIGU/THQodixlKTpOdC5jYWxsKHYsZSk7bz1lLHA9QXQocixuKTt2YXIgZz1lLmJ5dGVMZW5ndGg7aWYodm9pZCAwPT09aSl7aWYoZyVuKXRocm93IEIoUHQpO2lmKCh1PWctcCk8MCl0aHJvdyBCKFB0KX1lbHNlIGlmKCh1PWQoaSkqbikrcD5nKXRocm93IEIoUHQpO2E9dS9ufWVsc2UgYT15KGUpLHU9YSpuLG89bmV3IFEodSk7Zm9yKGgodCxcIl9kXCIse2I6byxvOnAsbDp1LGU6YSx2Om5ldyBYKG8pfSk7bDxhOylBKHQsbCsrKX0pLFM9dltZXT1PKEh0KSxoKFMsXCJjb25zdHJ1Y3RvclwiLHYpKTpvKGZ1bmN0aW9uKCl7digxKX0pJiZvKGZ1bmN0aW9uKCl7bmV3IHYoLTEpfSkmJk4oZnVuY3Rpb24odCl7bmV3IHYsbmV3IHYobnVsbCksbmV3IHYoMS41KSxuZXcgdih0KX0sITApfHwodj1lKGZ1bmN0aW9uKHQsZSxyLGkpe2YodCx2LHMpO3ZhciBvO3JldHVybiBiKGUpP2UgaW5zdGFuY2VvZiBRfHwobz13KGUpKT09SHx8bz09Sj92b2lkIDAhPT1pP25ldyBnKGUsQXQocixuKSxpKTp2b2lkIDAhPT1yP25ldyBnKGUsQXQocixuKSk6bmV3IGcoZSk6U3QgaW4gZT9MdCh2LGUpOk50LmNhbGwodixlKTpuZXcgZyh5KGUpKX0pLFoobSE9PUZ1bmN0aW9uLnByb3RvdHlwZT9rKGcpLmNvbmNhdChrKG0pKTprKGcpLGZ1bmN0aW9uKHQpe3QgaW4gdnx8aCh2LHQsZ1t0XSl9KSx2W1ldPVMscnx8KFMuY29uc3RydWN0b3I9dikpO3ZhciBNPVNbbXRdLFQ9ISFNJiYoXCJ2YWx1ZXNcIj09TS5uYW1lfHx2b2lkIDA9PU0ubmFtZSksRj1WdC52YWx1ZXM7aCh2LHd0LCEwKSxoKFMsU3QscyksaChTLE90LCEwKSxoKFMsYnQsdiksKGM/bmV3IHYoMSlbX3RdPT1zOl90IGluIFMpfHxXKFMsX3Qse2dldDpmdW5jdGlvbigpe3JldHVybiBzfX0pLHhbc109dix1KHUuRyt1LlcrdS5GKih2IT1nKSx4KSx1KHUuUyxzLHtCWVRFU19QRVJfRUxFTUVOVDpufSksdSh1LlMrdS5GKm8oZnVuY3Rpb24oKXtnLm9mLmNhbGwodiwxKX0pLHMse2Zyb206TnQsb2Y6RHR9KSxLIGluIFN8fGgoUyxLLG4pLHUodS5QLHMsVXQpLEQocyksdSh1LlArdS5GKmp0LHMse3NldDpXdH0pLHUodS5QK3UuRiohVCxzLFZ0KSxyfHxTLnRvU3RyaW5nPT15dHx8KFMudG9TdHJpbmc9eXQpLHUodS5QK3UuRipvKGZ1bmN0aW9uKCl7bmV3IHYoMSkuc2xpY2UoKX0pLHMse3NsaWNlOkd0fSksdSh1LlArdS5GKihvKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IHYoWzEsMl0pLnRvTG9jYWxlU3RyaW5nKCl9KXx8IW8oZnVuY3Rpb24oKXtTLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpLHMse3RvTG9jYWxlU3RyaW5nOkN0fSksSVtzXT1UP006RixyfHxUfHxoKFMsbXQsRil9fWVsc2UgdC5leHBvcnRzPWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTc1KSxpPWUoMCksbz1lKDc1KShcIm1ldGFkYXRhXCIpLHU9by5zdG9yZXx8KG8uc3RvcmU9bmV3KGUoMTc4KSkpLGE9ZnVuY3Rpb24odCxuLGUpe3ZhciBpPXUuZ2V0KHQpO2lmKCFpKXtpZighZSlyZXR1cm47dS5zZXQodCxpPW5ldyByKX12YXIgbz1pLmdldChuKTtpZighbyl7aWYoIWUpcmV0dXJuO2kuc2V0KG4sbz1uZXcgcil9cmV0dXJuIG99LGM9ZnVuY3Rpb24odCxuLGUpe3ZhciByPWEobixlLCExKTtyZXR1cm4gdm9pZCAwIT09ciYmci5oYXModCl9LHM9ZnVuY3Rpb24odCxuLGUpe3ZhciByPWEobixlLCExKTtyZXR1cm4gdm9pZCAwPT09cj92b2lkIDA6ci5nZXQodCl9LGY9ZnVuY3Rpb24odCxuLGUscil7YShlLHIsITApLnNldCh0LG4pfSxsPWZ1bmN0aW9uKHQsbil7dmFyIGU9YSh0LG4sITEpLHI9W107cmV0dXJuIGUmJmUuZm9yRWFjaChmdW5jdGlvbih0LG4pe3IucHVzaChuKX0pLHJ9LGg9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMD09PXR8fFwic3ltYm9sXCI9PXR5cGVvZiB0P3Q6U3RyaW5nKHQpfSxwPWZ1bmN0aW9uKHQpe2koaS5TLFwiUmVmbGVjdFwiLHQpfTt0LmV4cG9ydHM9e3N0b3JlOnUsbWFwOmEsaGFzOmMsZ2V0OnMsc2V0OmYsa2V5czpsLGtleTpoLGV4cDpwfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjYpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSl7aWYocih0KSx2b2lkIDA9PT1uKXJldHVybiB0O3N3aXRjaChlKXtjYXNlIDE6cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0LmNhbGwobixlKX07Y2FzZSAyOnJldHVybiBmdW5jdGlvbihlLHIpe3JldHVybiB0LmNhbGwobixlLHIpfTtjYXNlIDM6cmV0dXJuIGZ1bmN0aW9uKGUscixpKXtyZXR1cm4gdC5jYWxsKG4sZSxyLGkpfX1yZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShuLGFyZ3VtZW50cyl9fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNDIpKFwibWV0YVwiKSxpPWUoNCksbz1lKDE1KSx1PWUoOCkuZixhPTAsYz1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxzPSFlKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIGMoT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zKHt9KSl9KSxmPWZ1bmN0aW9uKHQpe3UodCxyLHt2YWx1ZTp7aTpcIk9cIisgKythLHc6e319fSl9LGw9ZnVuY3Rpb24odCxuKXtpZighaSh0KSlyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdD90OihcInN0cmluZ1wiPT10eXBlb2YgdD9cIlNcIjpcIlBcIikrdDtpZighbyh0LHIpKXtpZighYyh0KSlyZXR1cm5cIkZcIjtpZighbilyZXR1cm5cIkVcIjtmKHQpfXJldHVybiB0W3JdLml9LGg9ZnVuY3Rpb24odCxuKXtpZighbyh0LHIpKXtpZighYyh0KSlyZXR1cm4hMDtpZighbilyZXR1cm4hMTtmKHQpfXJldHVybiB0W3JdLnd9LHA9ZnVuY3Rpb24odCl7cmV0dXJuIHMmJnYuTkVFRCYmYyh0KSYmIW8odCxyKSYmZih0KSx0fSx2PXQuZXhwb3J0cz17S0VZOnIsTkVFRDohMSxmYXN0S2V5OmwsZ2V0V2VhazpoLG9uRnJlZXplOnB9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg1KShcInVuc2NvcGFibGVzXCIpLGk9QXJyYXkucHJvdG90eXBlO3ZvaWQgMD09aVtyXSYmZSgxNikoaSxyLHt9KSx0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aVtyXVt0XT0hMH19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI1KSxpPWUoNjcpO3QuZXhwb3J0cz1lKDMzKT9mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHIuZih0LG4saSgxLGUpKX06ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0W25dPWUsdH19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOm59fX0sZnVuY3Rpb24odCxuKXt2YXIgZT0wLHI9TWF0aC5yYW5kb20oKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuXCJTeW1ib2woXCIuY29uY2F0KHZvaWQgMD09PXQ/XCJcIjp0LFwiKV9cIiwoKytlK3IpLnRvU3RyaW5nKDM2KSl9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz0hMX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTU2KSxpPWUoMTA0KTt0LmV4cG9ydHM9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiByKHQsaSl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgyOSksaT1NYXRoLm1heCxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiB0PXIodCksdDwwP2kodCtuLDApOm8odCxuKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEpLGk9ZSgxNTcpLG89ZSgxMDQpLHU9ZSgxMDMpKFwiSUVfUFJPVE9cIiksYT1mdW5jdGlvbigpe30sYz1cInByb3RvdHlwZVwiLHM9ZnVuY3Rpb24oKXt2YXIgdCxuPWUoMTAxKShcImlmcmFtZVwiKSxyPW8ubGVuZ3RoLGk9XCI8XCIsdT1cIj5cIjtmb3Iobi5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLGUoMTA1KS5hcHBlbmRDaGlsZChuKSxuLnNyYz1cImphdmFzY3JpcHQ6XCIsdD1uLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsdC5vcGVuKCksdC53cml0ZShpK1wic2NyaXB0XCIrdStcImRvY3VtZW50LkY9T2JqZWN0XCIraStcIi9zY3JpcHRcIit1KSx0LmNsb3NlKCkscz10LkY7ci0tOylkZWxldGUgc1tjXVtvW3JdXTtyZXR1cm4gcygpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxuKXt2YXIgZTtyZXR1cm4gbnVsbCE9PXQ/KGFbY109cih0KSxlPW5ldyBhLGFbY109bnVsbCxlW3VdPXQpOmU9cygpLHZvaWQgMD09PW4/ZTppKGUsbil9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxNTYpLGk9ZSgxMDQpLmNvbmNhdChcImxlbmd0aFwiLFwicHJvdG90eXBlXCIpO24uZj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lc3x8ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxpKX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDIpLGk9ZSg4KSxvPWUoNyksdT1lKDUpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49clt0XTtvJiZuJiYhblt1XSYmaS5mKG4sdSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUscil7aWYoISh0IGluc3RhbmNlb2Ygbil8fHZvaWQgMCE9PXImJnIgaW4gdCl0aHJvdyBUeXBlRXJyb3IoZStcIjogaW5jb3JyZWN0IGludm9jYXRpb24hXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMjIpLGk9ZSgxNjgpLG89ZSgxMTcpLHU9ZSgxKSxhPWUoOSksYz1lKDExOSkscz17fSxmPXt9LG49dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlLGwsaCl7dmFyIHAsdixkLHksZz1oP2Z1bmN0aW9uKCl7cmV0dXJuIHR9OmModCksbT1yKGUsbCxuPzI6MSksXz0wO2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIGcpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGl0ZXJhYmxlIVwiKTtpZihvKGcpKXtmb3IocD1hKHQubGVuZ3RoKTtwPl87XysrKWlmKCh5PW4/bSh1KHY9dFtfXSlbMF0sdlsxXSk6bSh0W19dKSk9PT1zfHx5PT09ZilyZXR1cm4geX1lbHNlIGZvcihkPWcuY2FsbCh0KTshKHY9ZC5uZXh0KCkpLmRvbmU7KWlmKCh5PWkoZCxtLHYudmFsdWUsbikpPT09c3x8eT09PWYpcmV0dXJuIHl9O24uQlJFQUs9cyxuLlJFVFVSTj1mfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxNyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlKXtmb3IodmFyIGkgaW4gbilyKHQsaSxuW2ldLGUpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiEhdCgpfWNhdGNoKHQpe3JldHVybiEwfX19LGZ1bmN0aW9uKHQsbil7dmFyIGU9e30uaGFzT3duUHJvcGVydHk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIGUuY2FsbCh0LG4pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTMzKSxpPWUoMTI5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIoaSh0KSl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg4KS5mLGk9ZSgxNSksbz1lKDUpKFwidG9TdHJpbmdUYWdcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlKXt0JiYhaSh0PWU/dDp0LnByb3RvdHlwZSxvKSYmcih0LG8se2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTpufSl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMjgpLG89ZSgzKSx1PWUoMTA3KSxhPVwiW1wiK3UrXCJdXCIsYz1cIuKAi8KFXCIscz1SZWdFeHAoXCJeXCIrYSthK1wiKlwiKSxmPVJlZ0V4cChhK2ErXCIqJFwiKSxsPWZ1bmN0aW9uKHQsbixlKXt2YXIgaT17fSxhPW8oZnVuY3Rpb24oKXtyZXR1cm4hIXVbdF0oKXx8Y1t0XSgpIT1jfSkscz1pW3RdPWE/bihoKTp1W3RdO2UmJihpW2VdPXMpLHIoci5QK3IuRiphLFwiU3RyaW5nXCIsaSl9LGg9bC50cmltPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHQ9U3RyaW5nKGkodCkpLDEmbiYmKHQ9dC5yZXBsYWNlKHMsXCJcIikpLDImbiYmKHQ9dC5yZXBsYWNlKGYsXCJcIikpLHR9O3QuZXhwb3J0cz1sfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz17fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIXIodCl8fHQuX3QhPT1uKXRocm93IFR5cGVFcnJvcihcIkluY29tcGF0aWJsZSByZWNlaXZlciwgXCIrbitcIiByZXF1aXJlZCFcIik7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSg0MTUpKCEwKTtlKDEzMCkoU3RyaW5nLFwiU3RyaW5nXCIsZnVuY3Rpb24odCl7dGhpcy5fdD1TdHJpbmcodCksdGhpcy5faT0wfSxmdW5jdGlvbigpe3ZhciB0LG49dGhpcy5fdCxlPXRoaXMuX2k7cmV0dXJuIGU+PW4ubGVuZ3RoP3t2YWx1ZTp2b2lkIDAsZG9uZTohMH06KHQ9cihuLGUpLHRoaXMuX2krPXQubGVuZ3RoLHt2YWx1ZTp0LGRvbmU6ITF9KX0pfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz17fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTI5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdChyKHQpKX19LGZ1bmN0aW9uKHQsbixlKXtmdW5jdGlvbiByKHQpe3JldHVybihyPVwiZnVuY3Rpb25cIj09dHlwZW9mIHUmJlwic3ltYm9sXCI9PXR5cGVvZiBvP2Z1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlwiZnVuY3Rpb25cIj09dHlwZW9mIHUmJnQuY29uc3RydWN0b3I9PT11JiZ0IT09dS5wcm90b3R5cGU/XCJzeW1ib2xcIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIGkobil7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdSYmXCJzeW1ib2xcIj09PXIobyk/dC5leHBvcnRzPWk9ZnVuY3Rpb24odCl7cmV0dXJuIHIodCl9OnQuZXhwb3J0cz1pPWZ1bmN0aW9uKHQpe3JldHVybiB0JiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB1JiZ0LmNvbnN0cnVjdG9yPT09dSYmdCE9PXUucHJvdG90eXBlP1wic3ltYm9sXCI6cih0KX0saShuKX12YXIgbz1lKDQ0NCksdT1lKDQ0Nik7dC5leHBvcnRzPWl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDIzKTt0LmV4cG9ydHM9T2JqZWN0KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuXCJTdHJpbmdcIj09cih0KT90LnNwbGl0KFwiXCIpOk9iamVjdCh0KX19LGZ1bmN0aW9uKHQsbil7bi5mPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgyMyksaT1lKDUpKFwidG9TdHJpbmdUYWdcIiksbz1cIkFyZ3VtZW50c1wiPT1yKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSksdT1mdW5jdGlvbih0LG4pe3RyeXtyZXR1cm4gdFtuXX1jYXRjaCh0KXt9fTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG4sZSxhO3JldHVybiB2b2lkIDA9PT10P1wiVW5kZWZpbmVkXCI6bnVsbD09PXQ/XCJOdWxsXCI6XCJzdHJpbmdcIj09dHlwZW9mKGU9dShuPU9iamVjdCh0KSxpKSk/ZTpvP3Iobik6XCJPYmplY3RcIj09KGE9cihuKSkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4uY2FsbGVlP1wiQXJndW1lbnRzXCI6YX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHQpdGhyb3cgVHlwZUVycm9yKHQrXCIgaXMgbm90IGEgZnVuY3Rpb24hXCIpO3JldHVybiB0fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtyZXR1cm57ZW51bWVyYWJsZTohKDEmdCksY29uZmlndXJhYmxlOiEoMiZ0KSx3cml0YWJsZTohKDQmdCksdmFsdWU6bn19fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxOTEpLGk9ZSgxMzYpO3QuZXhwb3J0cz1PYmplY3Qua2V5c3x8ZnVuY3Rpb24odCl7cmV0dXJuIHIodCxpKX19LGZ1bmN0aW9uKHQsbil7dmFyIGU9e30udG9TdHJpbmc7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBlLmNhbGwodCkuc2xpY2UoOCwtMSl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgyNSkuZixpPWUoNTMpLG89ZSgxMykoXCJ0b1N0cmluZ1RhZ1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUpe3QmJiFpKHQ9ZT90OnQucHJvdG90eXBlLG8pJiZyKHQsbyx7Y29uZmlndXJhYmxlOiEwLHZhbHVlOm59KX19LGZ1bmN0aW9uKHQsbixlKXtlKDQyNCk7Zm9yKHZhciByPWUoMTQpLGk9ZSg0MCksbz1lKDYwKSx1PWUoMTMpKFwidG9TdHJpbmdUYWdcIiksYT1cIkNTU1J1bGVMaXN0LENTU1N0eWxlRGVjbGFyYXRpb24sQ1NTVmFsdWVMaXN0LENsaWVudFJlY3RMaXN0LERPTVJlY3RMaXN0LERPTVN0cmluZ0xpc3QsRE9NVG9rZW5MaXN0LERhdGFUcmFuc2Zlckl0ZW1MaXN0LEZpbGVMaXN0LEhUTUxBbGxDb2xsZWN0aW9uLEhUTUxDb2xsZWN0aW9uLEhUTUxGb3JtRWxlbWVudCxIVE1MU2VsZWN0RWxlbWVudCxNZWRpYUxpc3QsTWltZVR5cGVBcnJheSxOYW1lZE5vZGVNYXAsTm9kZUxpc3QsUGFpbnRSZXF1ZXN0TGlzdCxQbHVnaW4sUGx1Z2luQXJyYXksU1ZHTGVuZ3RoTGlzdCxTVkdOdW1iZXJMaXN0LFNWR1BhdGhTZWdMaXN0LFNWR1BvaW50TGlzdCxTVkdTdHJpbmdMaXN0LFNWR1RyYW5zZm9ybUxpc3QsU291cmNlQnVmZmVyTGlzdCxTdHlsZVNoZWV0TGlzdCxUZXh0VHJhY2tDdWVMaXN0LFRleHRUcmFja0xpc3QsVG91Y2hMaXN0XCIuc3BsaXQoXCIsXCIpLGM9MDtjPGEubGVuZ3RoO2MrKyl7dmFyIHM9YVtjXSxmPXJbc10sbD1mJiZmLnByb3RvdHlwZTtsJiYhbFt1XSYmaShsLHUscyksb1tzXT1vLkFycmF5fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzcpLGk9ZSgxOTQpLG89ZSgxOTUpLHU9ZSgzMiksYT1lKDkyKSxjPWUoMTM3KSxzPXt9LGY9e30sbj10LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUsbCxoKXt2YXIgcCx2LGQseSxnPWg/ZnVuY3Rpb24oKXtyZXR1cm4gdH06Yyh0KSxtPXIoZSxsLG4/MjoxKSxfPTA7aWYoXCJmdW5jdGlvblwiIT10eXBlb2YgZyl0aHJvdyBUeXBlRXJyb3IodCtcIiBpcyBub3QgaXRlcmFibGUhXCIpO2lmKG8oZykpe2ZvcihwPWEodC5sZW5ndGgpO3A+XztfKyspaWYoKHk9bj9tKHUodj10W19dKVswXSx2WzFdKTptKHRbX10pKT09PXN8fHk9PT1mKXJldHVybiB5fWVsc2UgZm9yKGQ9Zy5jYWxsKHQpOyEodj1kLm5leHQoKSkuZG9uZTspaWYoKHk9aShkLG0sdi52YWx1ZSxuKSk9PT1zfHx5PT09ZilyZXR1cm4geX07bi5CUkVBSz1zLG4uUkVUVVJOPWZ9LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0MzgpfSxmdW5jdGlvbih0LG4sZSl7dC5leHBvcnRzPWUoMTUzKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMiksaT1cIl9fY29yZS1qc19zaGFyZWRfX1wiLG89cltpXXx8KHJbaV09e30pO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gb1t0XXx8KG9bdF09e30pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTkpLGk9ZSg5KSxvPWUoNDUpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlLHUpe3ZhciBhLGM9cihuKSxzPWkoYy5sZW5ndGgpLGY9byh1LHMpO2lmKHQmJmUhPWUpe2Zvcig7cz5mOylpZigoYT1jW2YrK10pIT1hKXJldHVybiEwfWVsc2UgZm9yKDtzPmY7ZisrKWlmKCh0fHxmIGluIGMpJiZjW2ZdPT09ZSlyZXR1cm4gdHx8Znx8MDtyZXR1cm4hdCYmLTF9fX0sZnVuY3Rpb24odCxuKXtuLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sc30sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMjMpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm5cIkFycmF5XCI9PXIodCl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0KSxpPWUoMjMpLG89ZSg1KShcIm1hdGNoXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbjtyZXR1cm4gcih0KSYmKHZvaWQgMCE9PShuPXRbb10pPyEhbjpcIlJlZ0V4cFwiPT1pKHQpKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDUpKFwiaXRlcmF0b3JcIiksaT0hMTt0cnl7dmFyIG89WzddW3JdKCk7by5yZXR1cm49ZnVuY3Rpb24oKXtpPSEwfSxBcnJheS5mcm9tKG8sZnVuY3Rpb24oKXt0aHJvdyAyfSl9Y2F0Y2godCl7fXQuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKCFuJiYhaSlyZXR1cm4hMTt2YXIgZT0hMTt0cnl7dmFyIG89WzddLHU9b1tyXSgpO3UubmV4dD1mdW5jdGlvbigpe3JldHVybntkb25lOmU9ITB9fSxvW3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHV9LHQobyl9Y2F0Y2godCl7fXJldHVybiBlfX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMSk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQ9cih0aGlzKSxuPVwiXCI7cmV0dXJuIHQuZ2xvYmFsJiYobis9XCJnXCIpLHQuaWdub3JlQ2FzZSYmKG4rPVwiaVwiKSx0Lm11bHRpbGluZSYmKG4rPVwibVwiKSx0LnVuaWNvZGUmJihuKz1cInVcIiksdC5zdGlja3kmJihuKz1cInlcIiksbn19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDE2KSxpPWUoMTcpLG89ZSgzKSx1PWUoMjgpLGE9ZSg1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUpe3ZhciBjPWEodCkscz1lKHUsYyxcIlwiW3RdKSxmPXNbMF0sbD1zWzFdO28oZnVuY3Rpb24oKXt2YXIgbj17fTtyZXR1cm4gbltjXT1mdW5jdGlvbigpe3JldHVybiA3fSw3IT1cIlwiW3RdKG4pfSkmJihpKFN0cmluZy5wcm90b3R5cGUsdCxmKSxyKFJlZ0V4cC5wcm90b3R5cGUsYywyPT1uP2Z1bmN0aW9uKHQsbil7cmV0dXJuIGwuY2FsbCh0LHRoaXMsbil9OmZ1bmN0aW9uKHQpe3JldHVybiBsLmNhbGwodCx0aGlzKX0pKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEpLGk9ZSgxMSksbz1lKDUpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgZSx1PXIodCkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PXV8fHZvaWQgMD09KGU9cih1KVtvXSk/bjppKGUpfX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMiksaT1lKDApLG89ZSgxNyksdT1lKDUxKSxhPWUoMzgpLGM9ZSg1MCkscz1lKDQ5KSxmPWUoNCksbD1lKDMpLGg9ZSg4MCkscD1lKDU1KSx2PWUoMTA4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUsZCx5LGcpe3ZhciBtPXJbdF0sXz1tLHc9eT9cInNldFwiOlwiYWRkXCIsYj1fJiZfLnByb3RvdHlwZSx4PXt9LFM9ZnVuY3Rpb24odCl7dmFyIG49Ylt0XTtvKGIsdCxcImRlbGV0ZVwiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZuLmNhbGwodGhpcywwPT09dD8wOnQpfTpcImhhc1wiPT10P2Z1bmN0aW9uKHQpe3JldHVybiEoZyYmIWYodCkpJiZuLmNhbGwodGhpcywwPT09dD8wOnQpfTpcImdldFwiPT10P2Z1bmN0aW9uKHQpe3JldHVybiBnJiYhZih0KT92b2lkIDA6bi5jYWxsKHRoaXMsMD09PXQ/MDp0KX06XCJhZGRcIj09dD9mdW5jdGlvbih0KXtyZXR1cm4gbi5jYWxsKHRoaXMsMD09PXQ/MDp0KSx0aGlzfTpmdW5jdGlvbih0LGUpe3JldHVybiBuLmNhbGwodGhpcywwPT09dD8wOnQsZSksdGhpc30pfTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBfJiYoZ3x8Yi5mb3JFYWNoJiYhbChmdW5jdGlvbigpeyhuZXcgXykuZW50cmllcygpLm5leHQoKX0pKSl7dmFyIE89bmV3IF8sUD1PW3ddKGc/e306LTAsMSkhPU8saz1sKGZ1bmN0aW9uKCl7Ty5oYXMoMSl9KSxFPWgoZnVuY3Rpb24odCl7bmV3IF8odCl9KSxqPSFnJiZsKGZ1bmN0aW9uKCl7Zm9yKHZhciB0PW5ldyBfLG49NTtuLS07KXRbd10obixuKTtyZXR1cm4hdC5oYXMoLTApfSk7RXx8KF89bihmdW5jdGlvbihuLGUpe3MobixfLHQpO3ZhciByPXYobmV3IG0sbixfKTtyZXR1cm4gdm9pZCAwIT1lJiZjKGUseSxyW3ddLHIpLHJ9KSxfLnByb3RvdHlwZT1iLGIuY29uc3RydWN0b3I9XyksKGt8fGopJiYoUyhcImRlbGV0ZVwiKSxTKFwiaGFzXCIpLHkmJlMoXCJnZXRcIikpLChqfHxQKSYmUyh3KSxnJiZiLmNsZWFyJiZkZWxldGUgYi5jbGVhcn1lbHNlIF89ZC5nZXRDb25zdHJ1Y3RvcihuLHQseSx3KSx1KF8ucHJvdG90eXBlLGUpLGEuTkVFRD0hMDtyZXR1cm4gcChfLHQpLHhbdF09XyxpKGkuRytpLlcraS5GKihfIT1tKSx4KSxnfHxkLnNldFN0cm9uZyhfLHQseSksX319LGZ1bmN0aW9uKHQsbixlKXtmb3IodmFyIHIsaT1lKDIpLG89ZSgxNiksdT1lKDQyKSxhPXUoXCJ0eXBlZF9hcnJheVwiKSxjPXUoXCJ2aWV3XCIpLHM9ISghaS5BcnJheUJ1ZmZlcnx8IWkuRGF0YVZpZXcpLGY9cyxsPTAsaD05LHA9XCJJbnQ4QXJyYXksVWludDhBcnJheSxVaW50OENsYW1wZWRBcnJheSxJbnQxNkFycmF5LFVpbnQxNkFycmF5LEludDMyQXJyYXksVWludDMyQXJyYXksRmxvYXQzMkFycmF5LEZsb2F0NjRBcnJheVwiLnNwbGl0KFwiLFwiKTtsPGg7KShyPWlbcFtsKytdXSk/KG8oci5wcm90b3R5cGUsYSwhMCksbyhyLnByb3RvdHlwZSxjLCEwKSk6Zj0hMTt0LmV4cG9ydHM9e0FCVjpzLENPTlNUUjpmLFRZUEVEOmEsVklFVzpjfX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3QuZXhwb3J0cz1lKDQzKXx8IWUoMykoZnVuY3Rpb24oKXt2YXIgdD1NYXRoLnJhbmRvbSgpO19fZGVmaW5lU2V0dGVyX18uY2FsbChudWxsLHQsZnVuY3Rpb24oKXt9KSxkZWxldGUgZSgyKVt0XX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cihyLlMsdCx7b2Y6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KTt0LS07KW5bdF09YXJndW1lbnRzW3RdO3JldHVybiBuZXcgdGhpcyhuKX19KX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgxMSksbz1lKDIyKSx1PWUoNTApO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyKHIuUyx0LHtmcm9tOmZ1bmN0aW9uKHQpe3ZhciBuLGUscixhLGM9YXJndW1lbnRzWzFdO3JldHVybiBpKHRoaXMpLG49dm9pZCAwIT09YyxuJiZpKGMpLHZvaWQgMD09dD9uZXcgdGhpczooZT1bXSxuPyhyPTAsYT1vKGMsYXJndW1lbnRzWzJdLDIpLHUodCwhMSxmdW5jdGlvbih0KXtlLnB1c2goYSh0LHIrKykpfSkpOnUodCwhMSxlLnB1c2gsZSksbmV3IHRoaXMoZSkpfX0pfX0sZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBlKCl7dGhpcy5fZXZlbnRzPXRoaXMuX2V2ZW50c3x8e30sdGhpcy5fbWF4TGlzdGVuZXJzPXRoaXMuX21heExpc3RlbmVyc3x8dm9pZCAwfWZ1bmN0aW9uIHIodCl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgdH1mdW5jdGlvbiBpKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0fWZ1bmN0aW9uIG8odCl7cmV0dXJuXCJvYmplY3RcIj09dHlwZW9mIHQmJm51bGwhPT10fWZ1bmN0aW9uIHUodCl7cmV0dXJuIHZvaWQgMD09PXR9dC5leHBvcnRzPWUsZS5FdmVudEVtaXR0ZXI9ZSxlLnByb3RvdHlwZS5fZXZlbnRzPXZvaWQgMCxlLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzPXZvaWQgMCxlLmRlZmF1bHRNYXhMaXN0ZW5lcnM9MTAsZS5wcm90b3R5cGUuc2V0TWF4TGlzdGVuZXJzPWZ1bmN0aW9uKHQpe2lmKCFpKHQpfHx0PDB8fGlzTmFOKHQpKXRocm93IFR5cGVFcnJvcihcIm4gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlclwiKTtyZXR1cm4gdGhpcy5fbWF4TGlzdGVuZXJzPXQsdGhpc30sZS5wcm90b3R5cGUuZW1pdD1mdW5jdGlvbih0KXt2YXIgbixlLGksYSxjLHM7aWYodGhpcy5fZXZlbnRzfHwodGhpcy5fZXZlbnRzPXt9KSxcImVycm9yXCI9PT10JiYoIXRoaXMuX2V2ZW50cy5lcnJvcnx8byh0aGlzLl9ldmVudHMuZXJyb3IpJiYhdGhpcy5fZXZlbnRzLmVycm9yLmxlbmd0aCkpe2lmKChuPWFyZ3VtZW50c1sxXSlpbnN0YW5jZW9mIEVycm9yKXRocm93IG47dmFyIGY9bmV3IEVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgXCJlcnJvclwiIGV2ZW50LiAoJytuK1wiKVwiKTt0aHJvdyBmLmNvbnRleHQ9bixmfWlmKGU9dGhpcy5fZXZlbnRzW3RdLHUoZSkpcmV0dXJuITE7aWYocihlKSlzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAxOmUuY2FsbCh0aGlzKTticmVhaztjYXNlIDI6ZS5jYWxsKHRoaXMsYXJndW1lbnRzWzFdKTticmVhaztjYXNlIDM6ZS5jYWxsKHRoaXMsYXJndW1lbnRzWzFdLGFyZ3VtZW50c1syXSk7YnJlYWs7ZGVmYXVsdDphPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxlLmFwcGx5KHRoaXMsYSl9ZWxzZSBpZihvKGUpKWZvcihhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxzPWUuc2xpY2UoKSxpPXMubGVuZ3RoLGM9MDtjPGk7YysrKXNbY10uYXBwbHkodGhpcyxhKTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuYWRkTGlzdGVuZXI9ZnVuY3Rpb24odCxuKXt2YXIgaTtpZighcihuKSl0aHJvdyBUeXBlRXJyb3IoXCJsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb25cIik7cmV0dXJuIHRoaXMuX2V2ZW50c3x8KHRoaXMuX2V2ZW50cz17fSksdGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyJiZ0aGlzLmVtaXQoXCJuZXdMaXN0ZW5lclwiLHQscihuLmxpc3RlbmVyKT9uLmxpc3RlbmVyOm4pLHRoaXMuX2V2ZW50c1t0XT9vKHRoaXMuX2V2ZW50c1t0XSk/dGhpcy5fZXZlbnRzW3RdLnB1c2gobik6dGhpcy5fZXZlbnRzW3RdPVt0aGlzLl9ldmVudHNbdF0sbl06dGhpcy5fZXZlbnRzW3RdPW4sbyh0aGlzLl9ldmVudHNbdF0pJiYhdGhpcy5fZXZlbnRzW3RdLndhcm5lZCYmKGk9dSh0aGlzLl9tYXhMaXN0ZW5lcnMpP2UuZGVmYXVsdE1heExpc3RlbmVyczp0aGlzLl9tYXhMaXN0ZW5lcnMpJiZpPjAmJnRoaXMuX2V2ZW50c1t0XS5sZW5ndGg+aSYmKHRoaXMuX2V2ZW50c1t0XS53YXJuZWQ9ITAsY29uc29sZS5lcnJvcihcIihub2RlKSB3YXJuaW5nOiBwb3NzaWJsZSBFdmVudEVtaXR0ZXIgbWVtb3J5IGxlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gaW5jcmVhc2UgbGltaXQuXCIsdGhpcy5fZXZlbnRzW3RdLmxlbmd0aCksXCJmdW5jdGlvblwiPT10eXBlb2YgY29uc29sZS50cmFjZSYmY29uc29sZS50cmFjZSgpKSx0aGlzfSxlLnByb3RvdHlwZS5vbj1lLnByb3RvdHlwZS5hZGRMaXN0ZW5lcixlLnByb3RvdHlwZS5vbmNlPWZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gZSgpe3RoaXMucmVtb3ZlTGlzdGVuZXIodCxlKSxpfHwoaT0hMCxuLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9aWYoIXIobikpdGhyb3cgVHlwZUVycm9yKFwibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO3ZhciBpPSExO3JldHVybiBlLmxpc3RlbmVyPW4sdGhpcy5vbih0LGUpLHRoaXN9LGUucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyPWZ1bmN0aW9uKHQsbil7dmFyIGUsaSx1LGE7aWYoIXIobikpdGhyb3cgVHlwZUVycm9yKFwibGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uXCIpO2lmKCF0aGlzLl9ldmVudHN8fCF0aGlzLl9ldmVudHNbdF0pcmV0dXJuIHRoaXM7aWYoZT10aGlzLl9ldmVudHNbdF0sdT1lLmxlbmd0aCxpPS0xLGU9PT1ufHxyKGUubGlzdGVuZXIpJiZlLmxpc3RlbmVyPT09bilkZWxldGUgdGhpcy5fZXZlbnRzW3RdLHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lciYmdGhpcy5lbWl0KFwicmVtb3ZlTGlzdGVuZXJcIix0LG4pO2Vsc2UgaWYobyhlKSl7Zm9yKGE9dTthLS0gPjA7KWlmKGVbYV09PT1ufHxlW2FdLmxpc3RlbmVyJiZlW2FdLmxpc3RlbmVyPT09bil7aT1hO2JyZWFrfWlmKGk8MClyZXR1cm4gdGhpczsxPT09ZS5sZW5ndGg/KGUubGVuZ3RoPTAsZGVsZXRlIHRoaXMuX2V2ZW50c1t0XSk6ZS5zcGxpY2UoaSwxKSx0aGlzLl9ldmVudHMucmVtb3ZlTGlzdGVuZXImJnRoaXMuZW1pdChcInJlbW92ZUxpc3RlbmVyXCIsdCxuKX1yZXR1cm4gdGhpc30sZS5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzPWZ1bmN0aW9uKHQpe3ZhciBuLGU7aWYoIXRoaXMuX2V2ZW50cylyZXR1cm4gdGhpcztpZighdGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKXJldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aD90aGlzLl9ldmVudHM9e306dGhpcy5fZXZlbnRzW3RdJiZkZWxldGUgdGhpcy5fZXZlbnRzW3RdLHRoaXM7aWYoMD09PWFyZ3VtZW50cy5sZW5ndGgpe2ZvcihuIGluIHRoaXMuX2V2ZW50cylcInJlbW92ZUxpc3RlbmVyXCIhPT1uJiZ0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhuKTtyZXR1cm4gdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoXCJyZW1vdmVMaXN0ZW5lclwiKSx0aGlzLl9ldmVudHM9e30sdGhpc31pZihlPXRoaXMuX2V2ZW50c1t0XSxyKGUpKXRoaXMucmVtb3ZlTGlzdGVuZXIodCxlKTtlbHNlIGlmKGUpZm9yKDtlLmxlbmd0aDspdGhpcy5yZW1vdmVMaXN0ZW5lcih0LGVbZS5sZW5ndGgtMV0pO3JldHVybiBkZWxldGUgdGhpcy5fZXZlbnRzW3RdLHRoaXN9LGUucHJvdG90eXBlLmxpc3RlbmVycz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fZXZlbnRzJiZ0aGlzLl9ldmVudHNbdF0/cih0aGlzLl9ldmVudHNbdF0pP1t0aGlzLl9ldmVudHNbdF1dOnRoaXMuX2V2ZW50c1t0XS5zbGljZSgpOltdfSxlLnByb3RvdHlwZS5saXN0ZW5lckNvdW50PWZ1bmN0aW9uKHQpe2lmKHRoaXMuX2V2ZW50cyl7dmFyIG49dGhpcy5fZXZlbnRzW3RdO2lmKHIobikpcmV0dXJuIDE7aWYobilyZXR1cm4gbi5sZW5ndGh9cmV0dXJuIDB9LGUubGlzdGVuZXJDb3VudD1mdW5jdGlvbih0LG4pe3JldHVybiB0Lmxpc3RlbmVyQ291bnQobil9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz0hMH0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzIpLGk9ZSg0MTcpLG89ZSgxMzYpLHU9ZSgxMzQpKFwiSUVfUFJPVE9cIiksYT1mdW5jdGlvbigpe30sYz1cInByb3RvdHlwZVwiLHM9ZnVuY3Rpb24oKXt2YXIgdCxuPWUoMTMxKShcImlmcmFtZVwiKSxyPW8ubGVuZ3RoLGk9XCI8XCIsdT1cIj5cIjtmb3Iobi5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLGUoMTkyKS5hcHBlbmRDaGlsZChuKSxuLnNyYz1cImphdmFzY3JpcHQ6XCIsdD1uLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQsdC5vcGVuKCksdC53cml0ZShpK1wic2NyaXB0XCIrdStcImRvY3VtZW50LkY9T2JqZWN0XCIraStcIi9zY3JpcHRcIit1KSx0LmNsb3NlKCkscz10LkY7ci0tOylkZWxldGUgc1tjXVtvW3JdXTtyZXR1cm4gcygpfTt0LmV4cG9ydHM9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24odCxuKXt2YXIgZTtyZXR1cm4gbnVsbCE9PXQ/KGFbY109cih0KSxlPW5ldyBhLGFbY109bnVsbCxlW3VdPXQpOmU9cygpLHZvaWQgMD09PW4/ZTppKGUsbil9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxMjgpLGk9TWF0aC5taW47dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/aShyKHQpLDkwMDcxOTkyNTQ3NDA5OTEpOjB9fSxmdW5jdGlvbih0LG4pe3ZhciBlPTAscj1NYXRoLnJhbmRvbSgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm5cIlN5bWJvbChcIi5jb25jYXQodm9pZCAwPT09dD9cIlwiOnQsXCIpX1wiLCgrK2UrcikudG9TdHJpbmcoMzYpKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDY5KSxpPWUoMTMpKFwidG9TdHJpbmdUYWdcIiksbz1cIkFyZ3VtZW50c1wiPT1yKGZ1bmN0aW9uKCl7cmV0dXJuIGFyZ3VtZW50c30oKSksdT1mdW5jdGlvbih0LG4pe3RyeXtyZXR1cm4gdFtuXX1jYXRjaCh0KXt9fTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG4sZSxhO3JldHVybiB2b2lkIDA9PT10P1wiVW5kZWZpbmVkXCI6bnVsbD09PXQ/XCJOdWxsXCI6XCJzdHJpbmdcIj09dHlwZW9mKGU9dShuPU9iamVjdCh0KSxpKSk/ZTpvP3Iobik6XCJPYmplY3RcIj09KGE9cihuKSkmJlwiZnVuY3Rpb25cIj09dHlwZW9mIG4uY2FsbGVlP1wiQXJndW1lbnRzXCI6YX19LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0MjcpfSxmdW5jdGlvbih0LG4sZSl7dC5leHBvcnRzPWUoNDI5KX0sZnVuY3Rpb24odCxuKXtuLmY9e30ucHJvcGVydHlJc0VudW1lcmFibGV9LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0MzIpfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxMiksaT1lKDYpLG89ZSg1Mik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIGU9KGkuT2JqZWN0fHx7fSlbdF18fE9iamVjdFt0XSx1PXt9O3VbdF09bihlKSxyKHIuUytyLkYqbyhmdW5jdGlvbigpe2UoMSl9KSxcIk9iamVjdFwiLHUpfX0sZnVuY3Rpb24odCxuLGUpe3QuZXhwb3J0cz1lKDQ0MCl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDQpLGk9ZSgyKS5kb2N1bWVudCxvPXIoaSkmJnIoaS5jcmVhdGVFbGVtZW50KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIG8/aS5jcmVhdGVFbGVtZW50KHQpOnt9fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMiksaT1lKDM0KSxvPWUoNDMpLHU9ZSgxNTUpLGE9ZSg4KS5mO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1pLlN5bWJvbHx8KGkuU3ltYm9sPW8/e306ci5TeW1ib2x8fHt9KTtcIl9cIj09dC5jaGFyQXQoMCl8fHQgaW4gbnx8YShuLHQse3ZhbHVlOnUuZih0KX0pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNzUpKFwia2V5c1wiKSxpPWUoNDIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gclt0XXx8KHJbdF09aSh0KSl9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1cImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZlwiLnNwbGl0KFwiLFwiKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMikuZG9jdW1lbnQ7dC5leHBvcnRzPXImJnIuZG9jdW1lbnRFbGVtZW50fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0KSxpPWUoMSksbz1mdW5jdGlvbih0LG4pe2lmKGkodCksIXIobikmJm51bGwhPT1uKXRocm93IFR5cGVFcnJvcihuK1wiOiBjYW4ndCBzZXQgYXMgcHJvdG90eXBlIVwiKX07dC5leHBvcnRzPXtzZXQ6T2JqZWN0LnNldFByb3RvdHlwZU9mfHwoXCJfX3Byb3RvX19cImlue30/ZnVuY3Rpb24odCxuLHIpe3RyeXtyPWUoMjIpKEZ1bmN0aW9uLmNhbGwsZSgyMCkuZihPYmplY3QucHJvdG90eXBlLFwiX19wcm90b19fXCIpLnNldCwyKSxyKHQsW10pLG49ISh0IGluc3RhbmNlb2YgQXJyYXkpfWNhdGNoKHQpe249ITB9cmV0dXJuIGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG8odCxlKSxuP3QuX19wcm90b19fPWU6cih0LGUpLHR9fSh7fSwhMSk6dm9pZCAwKSxjaGVjazpvfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9XCJcXHRcXG5cXHZcXGZcXHIgwqDhmoDhoI7igIDigIHigILigIPigITigIXigIbigIfigIjigInigIrigK/igZ/jgIBcXHUyMDI4XFx1MjAyOVxcdWZlZmZcIn0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNCksaT1lKDEwNikuc2V0O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSl7dmFyIG8sdT1uLmNvbnN0cnVjdG9yO3JldHVybiB1IT09ZSYmXCJmdW5jdGlvblwiPT10eXBlb2YgdSYmKG89dS5wcm90b3R5cGUpIT09ZS5wcm90b3R5cGUmJnIobykmJmkmJmkodCxvKSx0fX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMjkpLGk9ZSgyOCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPVN0cmluZyhpKHRoaXMpKSxlPVwiXCIsbz1yKHQpO2lmKG88MHx8bz09MS8wKXRocm93IFJhbmdlRXJyb3IoXCJDb3VudCBjYW4ndCBiZSBuZWdhdGl2ZVwiKTtmb3IoO28+MDsobz4+Pj0xKSYmKG4rPW4pKTEmbyYmKGUrPW4pO3JldHVybiBlfX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9TWF0aC5zaWdufHxmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpfHx0IT10P3Q6dDwwPy0xOjF9fSxmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguZXhwbTE7dC5leHBvcnRzPSFlfHxlKDEwKT4yMjAyNS40NjU3OTQ4MDY3MTh8fGUoMTApPDIyMDI1LjQ2NTc5NDgwNjcxOHx8LTJlLTE3IT1lKC0yZS0xNyk/ZnVuY3Rpb24odCl7cmV0dXJuIDA9PSh0PSt0KT90OnQ+LTFlLTYmJnQ8MWUtNj90K3QqdC8yOk1hdGguZXhwKHQpLTF9OmV9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI5KSxpPWUoMjgpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgbyx1LGE9U3RyaW5nKGkobikpLGM9cihlKSxzPWEubGVuZ3RoO3JldHVybiBjPDB8fGM+PXM/dD9cIlwiOnZvaWQgMDoobz1hLmNoYXJDb2RlQXQoYyksbzw1NTI5Nnx8bz41NjMxOXx8YysxPT09c3x8KHU9YS5jaGFyQ29kZUF0KGMrMSkpPDU2MzIwfHx1PjU3MzQzP3Q/YS5jaGFyQXQoYyk6bzp0P2Euc2xpY2UoYyxjKzIpOnUtNTYzMjArKG8tNTUyOTY8PDEwKSs2NTUzNil9fX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoNDMpLGk9ZSgwKSxvPWUoMTcpLHU9ZSgxNiksYT1lKDE1KSxjPWUoNTcpLHM9ZSgxMTQpLGY9ZSg1NSksbD1lKDIxKSxoPWUoNSkoXCJpdGVyYXRvclwiKSxwPSEoW10ua2V5cyYmXCJuZXh0XCJpbltdLmtleXMoKSksdj1cImtleXNcIixkPVwidmFsdWVzXCIseT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUsZyxtLF8sdyl7cyhlLG4sZyk7dmFyIGIseCxTLE89ZnVuY3Rpb24odCl7aWYoIXAmJnQgaW4gailyZXR1cm4galt0XTtzd2l0Y2godCl7Y2FzZSB2OmNhc2UgZDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGUodGhpcyx0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBlKHRoaXMsdCl9fSxQPW4rXCIgSXRlcmF0b3JcIixrPW09PWQsRT0hMSxqPXQucHJvdG90eXBlLEE9altoXXx8altcIkBAaXRlcmF0b3JcIl18fG0mJmpbbV0sTT0hcCYmQXx8TyhtKSxUPW0/az9PKFwiZW50cmllc1wiKTpNOnZvaWQgMCxGPVwiQXJyYXlcIj09bj9qLmVudHJpZXN8fEE6QTtpZihGJiYoUz1sKEYuY2FsbChuZXcgdCkpKSE9PU9iamVjdC5wcm90b3R5cGUmJlMubmV4dCYmKGYoUyxQLCEwKSxyfHxhKFMsaCl8fHUoUyxoLHkpKSxrJiZBJiZBLm5hbWUhPT1kJiYoRT0hMCxNPWZ1bmN0aW9uKCl7cmV0dXJuIEEuY2FsbCh0aGlzKX0pLHImJiF3fHwhcCYmIUUmJmpbaF18fHUoaixoLE0pLGNbbl09TSxjW1BdPXksbSlpZihiPXt2YWx1ZXM6az9NOk8oZCksa2V5czpfP006Tyh2KSxlbnRyaWVzOlR9LHcpZm9yKHggaW4gYil4IGluIGp8fG8oaix4LGJbeF0pO2Vsc2UgaShpLlAraS5GKihwfHxFKSxuLGIpO3JldHVybiBifX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoNDYpLGk9ZSg0MSksbz1lKDU1KSx1PXt9O2UoMTYpKHUsZSg1KShcIml0ZXJhdG9yXCIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUpe3QucHJvdG90eXBlPXIodSx7bmV4dDppKDEsZSl9KSxvKHQsbitcIiBJdGVyYXRvclwiKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDc5KSxpPWUoMjgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSl7aWYocihuKSl0aHJvdyBUeXBlRXJyb3IoXCJTdHJpbmcjXCIrZStcIiBkb2Vzbid0IGFjY2VwdCByZWdleCFcIik7cmV0dXJuIFN0cmluZyhpKHQpKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDUpKFwibWF0Y2hcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPS8uLzt0cnl7XCIvLi9cIlt0XShuKX1jYXRjaChlKXt0cnl7cmV0dXJuIG5bcl09ITEsIVwiLy4vXCJbdF0obil9Y2F0Y2godCl7fX1yZXR1cm4hMH19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDU3KSxpPWUoNSkoXCJpdGVyYXRvclwiKSxvPUFycmF5LnByb3RvdHlwZTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHZvaWQgMCE9PXQmJihyLkFycmF5PT09dHx8b1tpXT09PXQpfX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoOCksaT1lKDQxKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUpe24gaW4gdD9yLmYodCxuLGkoMCxlKSk6dFtuXT1lfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjUpLGk9ZSg1KShcIml0ZXJhdG9yXCIpLG89ZSg1Nyk7dC5leHBvcnRzPWUoMzQpLmdldEl0ZXJhdG9yTWV0aG9kPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9dClyZXR1cm4gdFtpXXx8dFtcIkBAaXRlcmF0b3JcIl18fG9bcih0KV19fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzMDcpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiBuZXcocih0KSkobil9fSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgxMCksaT1lKDQ1KSxvPWUoOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1yKHRoaXMpLGU9byhuLmxlbmd0aCksdT1hcmd1bWVudHMubGVuZ3RoLGE9aSh1PjE/YXJndW1lbnRzWzFdOnZvaWQgMCxlKSxjPXU+Mj9hcmd1bWVudHNbMl06dm9pZCAwLHM9dm9pZCAwPT09Yz9lOmkoYyxlKTtzPmE7KW5bYSsrXT10O3JldHVybiBufX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMzkpLGk9ZSgxNzEpLG89ZSg1NyksdT1lKDE5KTt0LmV4cG9ydHM9ZSgxMTMpKEFycmF5LFwiQXJyYXlcIixmdW5jdGlvbih0LG4pe3RoaXMuX3Q9dSh0KSx0aGlzLl9pPTAsdGhpcy5faz1ufSxmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Qsbj10aGlzLl9rLGU9dGhpcy5faSsrO3JldHVybiF0fHxlPj10Lmxlbmd0aD8odGhpcy5fdD12b2lkIDAsaSgxKSk6XCJrZXlzXCI9PW4/aSgwLGUpOlwidmFsdWVzXCI9PW4/aSgwLHRbZV0pOmkoMCxbZSx0W2VdXSl9LFwidmFsdWVzXCIpLG8uQXJndW1lbnRzPW8uQXJyYXkscihcImtleXNcIikscihcInZhbHVlc1wiKSxyKFwiZW50cmllc1wiKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByLGksbyx1PWUoMjIpLGE9ZSgxNjEpLGM9ZSgxMDUpLHM9ZSgxMDEpLGY9ZSgyKSxsPWYucHJvY2VzcyxoPWYuc2V0SW1tZWRpYXRlLHA9Zi5jbGVhckltbWVkaWF0ZSx2PWYuTWVzc2FnZUNoYW5uZWwsZD1mLkRpc3BhdGNoLHk9MCxnPXt9LG09XCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixfPWZ1bmN0aW9uKCl7dmFyIHQ9K3RoaXM7aWYoZy5oYXNPd25Qcm9wZXJ0eSh0KSl7dmFyIG49Z1t0XTtkZWxldGUgZ1t0XSxuKCl9fSx3PWZ1bmN0aW9uKHQpe18uY2FsbCh0LmRhdGEpfTtoJiZwfHwoaD1mdW5jdGlvbih0KXtmb3IodmFyIG49W10sZT0xO2FyZ3VtZW50cy5sZW5ndGg+ZTspbi5wdXNoKGFyZ3VtZW50c1tlKytdKTtyZXR1cm4gZ1srK3ldPWZ1bmN0aW9uKCl7YShcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3Q6RnVuY3Rpb24odCksbil9LHIoeSkseX0scD1mdW5jdGlvbih0KXtkZWxldGUgZ1t0XX0sXCJwcm9jZXNzXCI9PWUoMjMpKGwpP3I9ZnVuY3Rpb24odCl7bC5uZXh0VGljayh1KF8sdCwxKSl9OmQmJmQubm93P3I9ZnVuY3Rpb24odCl7ZC5ub3codShfLHQsMSkpfTp2PyhpPW5ldyB2LG89aS5wb3J0MixpLnBvcnQxLm9ubWVzc2FnZT13LHI9dShvLnBvc3RNZXNzYWdlLG8sMSkpOmYuYWRkRXZlbnRMaXN0ZW5lciYmXCJmdW5jdGlvblwiPT10eXBlb2YgcG9zdE1lc3NhZ2UmJiFmLmltcG9ydFNjcmlwdHM/KHI9ZnVuY3Rpb24odCl7Zi5wb3N0TWVzc2FnZSh0K1wiXCIsXCIqXCIpfSxmLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsdywhMSkpOnI9bSBpbiBzKFwic2NyaXB0XCIpP2Z1bmN0aW9uKHQpe2MuYXBwZW5kQ2hpbGQocyhcInNjcmlwdFwiKSlbbV09ZnVuY3Rpb24oKXtjLnJlbW92ZUNoaWxkKHRoaXMpLF8uY2FsbCh0KX19OmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodShfLHQsMSksMCl9KSx0LmV4cG9ydHM9e3NldDpoLGNsZWFyOnB9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgyKSxpPWUoMTIzKS5zZXQsbz1yLk11dGF0aW9uT2JzZXJ2ZXJ8fHIuV2ViS2l0TXV0YXRpb25PYnNlcnZlcix1PXIucHJvY2VzcyxhPXIuUHJvbWlzZSxjPVwicHJvY2Vzc1wiPT1lKDIzKSh1KTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt2YXIgdCxuLGUscz1mdW5jdGlvbigpe3ZhciByLGk7Zm9yKGMmJihyPXUuZG9tYWluKSYmci5leGl0KCk7dDspe2k9dC5mbix0PXQubmV4dDt0cnl7aSgpfWNhdGNoKHIpe3Rocm93IHQ/ZSgpOm49dm9pZCAwLHJ9fW49dm9pZCAwLHImJnIuZW50ZXIoKX07aWYoYyllPWZ1bmN0aW9uKCl7dS5uZXh0VGljayhzKX07ZWxzZSBpZighb3x8ci5uYXZpZ2F0b3ImJnIubmF2aWdhdG9yLnN0YW5kYWxvbmUpaWYoYSYmYS5yZXNvbHZlKXt2YXIgZj1hLnJlc29sdmUoKTtlPWZ1bmN0aW9uKCl7Zi50aGVuKHMpfX1lbHNlIGU9ZnVuY3Rpb24oKXtpLmNhbGwocixzKX07ZWxzZXt2YXIgbD0hMCxoPWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKFwiXCIpO25ldyBvKHMpLm9ic2VydmUoaCx7Y2hhcmFjdGVyRGF0YTohMH0pLGU9ZnVuY3Rpb24oKXtoLmRhdGE9bD0hbH19cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBpPXtmbjpyLG5leHQ6dm9pZCAwfTtuJiYobi5uZXh0PWkpLHR8fCh0PWksZSgpKSxuPWl9fX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCl7dmFyIG4sZTt0aGlzLnByb21pc2U9bmV3IHQoZnVuY3Rpb24odCxyKXtpZih2b2lkIDAhPT1ufHx2b2lkIDAhPT1lKXRocm93IFR5cGVFcnJvcihcIkJhZCBQcm9taXNlIGNvbnN0cnVjdG9yXCIpO249dCxlPXJ9KSx0aGlzLnJlc29sdmU9aShuKSx0aGlzLnJlamVjdD1pKGUpfXZhciBpPWUoMTEpO3QuZXhwb3J0cy5mPWZ1bmN0aW9uKHQpe3JldHVybiBuZXcgcih0KX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQsbixlKXt2YXIgcixpLG8sdT1uZXcgQXJyYXkoZSksYT04KmUtbi0xLGM9KDE8PGEpLTEscz1jPj4xLGY9MjM9PT1uP0coMiwtMjQpLUcoMiwtNzcpOjAsbD0wLGg9dDwwfHwwPT09dCYmMS90PDA/MTowO2Zvcih0PVUodCksdCE9dHx8dD09PVI/KGk9dCE9dD8xOjAscj1jKToocj1XKFYodCkvQiksdCoobz1HKDIsLXIpKTwxJiYoci0tLG8qPTIpLHQrPXIrcz49MT9mL286ZipHKDIsMS1zKSx0Km8+PTImJihyKyssby89MikscitzPj1jPyhpPTAscj1jKTpyK3M+PTE/KGk9KHQqby0xKSpHKDIsbikscis9cyk6KGk9dCpHKDIscy0xKSpHKDIsbikscj0wKSk7bj49ODt1W2wrK109MjU1JmksaS89MjU2LG4tPTgpO2ZvcihyPXI8PG58aSxhKz1uO2E+MDt1W2wrK109MjU1JnIsci89MjU2LGEtPTgpO3JldHVybiB1Wy0tbF18PTEyOCpoLHV9ZnVuY3Rpb24gaSh0LG4sZSl7dmFyIHIsaT04KmUtbi0xLG89KDE8PGkpLTEsdT1vPj4xLGE9aS03LGM9ZS0xLHM9dFtjLS1dLGY9MTI3JnM7Zm9yKHM+Pj03O2E+MDtmPTI1NipmK3RbY10sYy0tLGEtPTgpO2ZvcihyPWYmKDE8PC1hKS0xLGY+Pj0tYSxhKz1uO2E+MDtyPTI1NipyK3RbY10sYy0tLGEtPTgpO2lmKDA9PT1mKWY9MS11O2Vsc2V7aWYoZj09PW8pcmV0dXJuIHI/TmFOOnM/LVI6UjtyKz1HKDIsbiksZi09dX1yZXR1cm4ocz8tMToxKSpyKkcoMixmLW4pfWZ1bmN0aW9uIG8odCl7cmV0dXJuIHRbM108PDI0fHRbMl08PDE2fHRbMV08PDh8dFswXX1mdW5jdGlvbiB1KHQpe3JldHVyblsyNTUmdF19ZnVuY3Rpb24gYSh0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTVdfWZ1bmN0aW9uIGModCl7cmV0dXJuWzI1NSZ0LHQ+PjgmMjU1LHQ+PjE2JjI1NSx0Pj4yNCYyNTVdfWZ1bmN0aW9uIHModCl7cmV0dXJuIHIodCw1Miw4KX1mdW5jdGlvbiBmKHQpe3JldHVybiByKHQsMjMsNCl9ZnVuY3Rpb24gbCh0LG4sZSl7ayh0W1RdLG4se2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzW2VdfX0pfWZ1bmN0aW9uIGgodCxuLGUscil7dmFyIGk9K2Usbz1PKGkpO2lmKG8rbj50W0tdKXRocm93IEQoRik7dmFyIHU9dFtKXS5fYixhPW8rdFtZXSxjPXUuc2xpY2UoYSxhK24pO3JldHVybiByP2M6Yy5yZXZlcnNlKCl9ZnVuY3Rpb24gcCh0LG4sZSxyLGksbyl7dmFyIHU9K2UsYT1PKHUpO2lmKGErbj50W0tdKXRocm93IEQoRik7Zm9yKHZhciBjPXRbSl0uX2Iscz1hK3RbWV0sZj1yKCtpKSxsPTA7bDxuO2wrKyljW3MrbF09ZltvP2w6bi1sLTFdfXZhciB2PWUoMiksZD1lKDcpLHk9ZSg0MyksZz1lKDg1KSxtPWUoMTYpLF89ZSg1MSksdz1lKDMpLGI9ZSg0OSkseD1lKDI5KSxTPWUoOSksTz1lKDE4MCksUD1lKDQ3KS5mLGs9ZSg4KS5mLEU9ZSgxMjEpLGo9ZSg1NSksQT1cIkFycmF5QnVmZmVyXCIsTT1cIkRhdGFWaWV3XCIsVD1cInByb3RvdHlwZVwiLEY9XCJXcm9uZyBpbmRleCFcIixMPXZbQV0sST12W01dLE49di5NYXRoLEQ9di5SYW5nZUVycm9yLFI9di5JbmZpbml0eSxDPUwsVT1OLmFicyxHPU4ucG93LFc9Ti5mbG9vcixWPU4ubG9nLEI9Ti5MTjIscT1cImJ1ZmZlclwiLHo9XCJieXRlTGVuZ3RoXCIsSD1cImJ5dGVPZmZzZXRcIixKPWQ/XCJfYlwiOnEsSz1kP1wiX2xcIjp6LFk9ZD9cIl9vXCI6SDtpZihnLkFCVil7aWYoIXcoZnVuY3Rpb24oKXtMKDEpfSl8fCF3KGZ1bmN0aW9uKCl7bmV3IEwoLTEpfSl8fHcoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IEwsbmV3IEwoMS41KSxuZXcgTChOYU4pLEwubmFtZSE9QX0pKXtMPWZ1bmN0aW9uKHQpe3JldHVybiBiKHRoaXMsTCksbmV3IEMoTyh0KSl9O2Zvcih2YXIgJCxRPUxbVF09Q1tUXSxYPVAoQyksWj0wO1gubGVuZ3RoPlo7KSgkPVhbWisrXSlpbiBMfHxtKEwsJCxDWyRdKTt5fHwoUS5jb25zdHJ1Y3Rvcj1MKX12YXIgdHQ9bmV3IEkobmV3IEwoMikpLG50PUlbVF0uc2V0SW50ODt0dC5zZXRJbnQ4KDAsMjE0NzQ4MzY0OCksdHQuc2V0SW50OCgxLDIxNDc0ODM2NDkpLCF0dC5nZXRJbnQ4KDApJiZ0dC5nZXRJbnQ4KDEpfHxfKElbVF0se3NldEludDg6ZnVuY3Rpb24odCxuKXtudC5jYWxsKHRoaXMsdCxuPDwyND4+MjQpfSxzZXRVaW50ODpmdW5jdGlvbih0LG4pe250LmNhbGwodGhpcyx0LG48PDI0Pj4yNCl9fSwhMCl9ZWxzZSBMPWZ1bmN0aW9uKHQpe2IodGhpcyxMLEEpO3ZhciBuPU8odCk7dGhpcy5fYj1FLmNhbGwobmV3IEFycmF5KG4pLDApLHRoaXNbS109bn0sST1mdW5jdGlvbih0LG4sZSl7Yih0aGlzLEksTSksYih0LEwsTSk7dmFyIHI9dFtLXSxpPXgobik7aWYoaTwwfHxpPnIpdGhyb3cgRChcIldyb25nIG9mZnNldCFcIik7aWYoZT12b2lkIDA9PT1lP3ItaTpTKGUpLGkrZT5yKXRocm93IEQoXCJXcm9uZyBsZW5ndGghXCIpO3RoaXNbSl09dCx0aGlzW1ldPWksdGhpc1tLXT1lfSxkJiYobChMLHosXCJfbFwiKSxsKEkscSxcIl9iXCIpLGwoSSx6LFwiX2xcIiksbChJLEgsXCJfb1wiKSksXyhJW1RdLHtnZXRJbnQ4OmZ1bmN0aW9uKHQpe3JldHVybiBoKHRoaXMsMSx0KVswXTw8MjQ+PjI0fSxnZXRVaW50ODpmdW5jdGlvbih0KXtyZXR1cm4gaCh0aGlzLDEsdClbMF19LGdldEludDE2OmZ1bmN0aW9uKHQpe3ZhciBuPWgodGhpcywyLHQsYXJndW1lbnRzWzFdKTtyZXR1cm4oblsxXTw8OHxuWzBdKTw8MTY+PjE2fSxnZXRVaW50MTY6ZnVuY3Rpb24odCl7dmFyIG49aCh0aGlzLDIsdCxhcmd1bWVudHNbMV0pO3JldHVybiBuWzFdPDw4fG5bMF19LGdldEludDMyOmZ1bmN0aW9uKHQpe3JldHVybiBvKGgodGhpcyw0LHQsYXJndW1lbnRzWzFdKSl9LGdldFVpbnQzMjpmdW5jdGlvbih0KXtyZXR1cm4gbyhoKHRoaXMsNCx0LGFyZ3VtZW50c1sxXSkpPj4+MH0sZ2V0RmxvYXQzMjpmdW5jdGlvbih0KXtyZXR1cm4gaShoKHRoaXMsNCx0LGFyZ3VtZW50c1sxXSksMjMsNCl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24odCl7cmV0dXJuIGkoaCh0aGlzLDgsdCxhcmd1bWVudHNbMV0pLDUyLDgpfSxzZXRJbnQ4OmZ1bmN0aW9uKHQsbil7cCh0aGlzLDEsdCx1LG4pfSxzZXRVaW50ODpmdW5jdGlvbih0LG4pe3AodGhpcywxLHQsdSxuKX0sc2V0SW50MTY6ZnVuY3Rpb24odCxuKXtwKHRoaXMsMix0LGEsbixhcmd1bWVudHNbMl0pfSxzZXRVaW50MTY6ZnVuY3Rpb24odCxuKXtwKHRoaXMsMix0LGEsbixhcmd1bWVudHNbMl0pfSxzZXRJbnQzMjpmdW5jdGlvbih0LG4pe3AodGhpcyw0LHQsYyxuLGFyZ3VtZW50c1syXSl9LHNldFVpbnQzMjpmdW5jdGlvbih0LG4pe3AodGhpcyw0LHQsYyxuLGFyZ3VtZW50c1syXSl9LHNldEZsb2F0MzI6ZnVuY3Rpb24odCxuKXtwKHRoaXMsNCx0LGYsbixhcmd1bWVudHNbMl0pfSxzZXRGbG9hdDY0OmZ1bmN0aW9uKHQsbil7cCh0aGlzLDgsdCxzLG4sYXJndW1lbnRzWzJdKX19KTtqKEwsQSksaihJLE0pLG0oSVtUXSxnLlZJRVcsITApLG5bQV09TCxuW01dPUl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDIpLGk9ci5uYXZpZ2F0b3I7dC5leHBvcnRzPWkmJmkudXNlckFnZW50fHxcIlwifSxmdW5jdGlvbih0LG4pe3ZhciBlPU1hdGguY2VpbCxyPU1hdGguZmxvb3I7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBpc05hTih0PSt0KT8wOih0PjA/cjplKSh0KX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09dCl0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIrdCk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSg5MCksaT1lKDEyKSxvPWUoMTkwKSx1PWUoNDApLGE9ZSg1MyksYz1lKDYwKSxzPWUoNDE2KSxmPWUoNzApLGw9ZSgxOTMpLGg9ZSgxMykoXCJpdGVyYXRvclwiKSxwPSEoW10ua2V5cyYmXCJuZXh0XCJpbltdLmtleXMoKSksdj1cImtleXNcIixkPVwidmFsdWVzXCIseT1mdW5jdGlvbigpe3JldHVybiB0aGlzfTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUsZyxtLF8sdyl7cyhlLG4sZyk7dmFyIGIseCxTLE89ZnVuY3Rpb24odCl7aWYoIXAmJnQgaW4gailyZXR1cm4galt0XTtzd2l0Y2godCl7Y2FzZSB2OmNhc2UgZDpyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGUodGhpcyx0KX19cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBlKHRoaXMsdCl9fSxQPW4rXCIgSXRlcmF0b3JcIixrPW09PWQsRT0hMSxqPXQucHJvdG90eXBlLEE9altoXXx8altcIkBAaXRlcmF0b3JcIl18fG0mJmpbbV0sTT0hcCYmQXx8TyhtKSxUPW0/az9PKFwiZW50cmllc1wiKTpNOnZvaWQgMCxGPVwiQXJyYXlcIj09bj9qLmVudHJpZXN8fEE6QTtpZihGJiYoUz1sKEYuY2FsbChuZXcgdCkpKSE9PU9iamVjdC5wcm90b3R5cGUmJlMubmV4dCYmKGYoUyxQLCEwKSxyfHxhKFMsaCl8fHUoUyxoLHkpKSxrJiZBJiZBLm5hbWUhPT1kJiYoRT0hMCxNPWZ1bmN0aW9uKCl7cmV0dXJuIEEuY2FsbCh0aGlzKX0pLHImJiF3fHwhcCYmIUUmJmpbaF18fHUoaixoLE0pLGNbbl09TSxjW1BdPXksbSlpZihiPXt2YWx1ZXM6az9NOk8oZCksa2V5czpfP006Tyh2KSxlbnRyaWVzOlR9LHcpZm9yKHggaW4gYil4IGluIGp8fG8oaix4LGJbeF0pO2Vsc2UgaShpLlAraS5GKihwfHxFKSxuLGIpO3JldHVybiBifX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMjYpLGk9ZSgxNCkuZG9jdW1lbnQsbz1yKGkpJiZyKGkuY3JlYXRlRWxlbWVudCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvP2kuY3JlYXRlRWxlbWVudCh0KTp7fX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZighcih0KSlyZXR1cm4gdDt2YXIgZSxpO2lmKG4mJlwiZnVuY3Rpb25cIj09dHlwZW9mKGU9dC50b1N0cmluZykmJiFyKGk9ZS5jYWxsKHQpKSlyZXR1cm4gaTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZihlPXQudmFsdWVPZikmJiFyKGk9ZS5jYWxsKHQpKSlyZXR1cm4gaTtpZighbiYmXCJmdW5jdGlvblwiPT10eXBlb2YoZT10LnRvU3RyaW5nKSYmIXIoaT1lLmNhbGwodCkpKXJldHVybiBpO3Rocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDY5KTt0LmV4cG9ydHM9T2JqZWN0KFwielwiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKT9PYmplY3Q6ZnVuY3Rpb24odCl7cmV0dXJuXCJTdHJpbmdcIj09cih0KT90LnNwbGl0KFwiXCIpOk9iamVjdCh0KX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEzNSkoXCJrZXlzXCIpLGk9ZSg5Myk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiByW3RdfHwoclt0XT1pKHQpKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDE0KSxpPVwiX19jb3JlLWpzX3NoYXJlZF9fXCIsbz1yW2ldfHwocltpXT17fSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBvW3RdfHwob1t0XT17fSl9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1cImNvbnN0cnVjdG9yLGhhc093blByb3BlcnR5LGlzUHJvdG90eXBlT2YscHJvcGVydHlJc0VudW1lcmFibGUsdG9Mb2NhbGVTdHJpbmcsdG9TdHJpbmcsdmFsdWVPZlwiLnNwbGl0KFwiLFwiKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoOTQpLGk9ZSgxMykoXCJpdGVyYXRvclwiKSxvPWUoNjApO3QuZXhwb3J0cz1lKDYpLmdldEl0ZXJhdG9yTWV0aG9kPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMCE9dClyZXR1cm4gdFtpXXx8dFtcIkBAaXRlcmF0b3JcIl18fG9bcih0KV19fSxmdW5jdGlvbih0LG4sZSl7ZnVuY3Rpb24gcih0LG4pe3ZhciBlPVtdLHI9ITAsaT0hMSxvPXZvaWQgMDt0cnl7Zm9yKHZhciBhLGM9dSh0KTshKHI9KGE9Yy5uZXh0KCkpLmRvbmUpJiYoZS5wdXNoKGEudmFsdWUpLCFufHxlLmxlbmd0aCE9PW4pO3I9ITApO31jYXRjaCh0KXtpPSEwLG89dH1maW5hbGx5e3RyeXtyfHxudWxsPT1jLnJldHVybnx8Yy5yZXR1cm4oKX1maW5hbGx5e2lmKGkpdGhyb3cgb319cmV0dXJuIGV9ZnVuY3Rpb24gaSh0LG4pe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIHQ7aWYobyhPYmplY3QodCkpKXJldHVybiByKHQsbik7dGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIil9dmFyIG89ZSg0MjIpLHU9ZSg5NSk7dC5leHBvcnRzPWl9LGZ1bmN0aW9uKHQsbil7bi5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHN9LGZ1bmN0aW9uKHQsbixlKXtmdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXRoaXMsZT1hcmd1bWVudHM7cmV0dXJuIG5ldyBpKGZ1bmN0aW9uKHIsbyl7ZnVuY3Rpb24gdSh0LG4pe3RyeXt2YXIgZT1zW3RdKG4pLHU9ZS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBvKHQpfWUuZG9uZT9yKHUpOmkucmVzb2x2ZSh1KS50aGVuKGEsYyl9ZnVuY3Rpb24gYSh0KXt1KFwibmV4dFwiLHQpfWZ1bmN0aW9uIGModCl7dShcInRocm93XCIsdCl9dmFyIHM9dC5hcHBseShuLGUpO2EoKX0pfX12YXIgaT1lKDk4KTt0LmV4cG9ydHM9cn0sZnVuY3Rpb24odCxuKXt9LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlLHIpe2lmKCEodCBpbnN0YW5jZW9mIG4pfHx2b2lkIDAhPT1yJiZyIGluIHQpdGhyb3cgVHlwZUVycm9yKGUrXCI6IGluY29ycmVjdCBpbnZvY2F0aW9uIVwiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQpe3ZhciBuLGU7dGhpcy5wcm9taXNlPW5ldyB0KGZ1bmN0aW9uKHQscil7aWYodm9pZCAwIT09bnx8dm9pZCAwIT09ZSl0aHJvdyBUeXBlRXJyb3IoXCJCYWQgUHJvbWlzZSBjb25zdHJ1Y3RvclwiKTtuPXQsZT1yfSksdGhpcy5yZXNvbHZlPWkobiksdGhpcy5yZWplY3Q9aShlKX12YXIgaT1lKDY2KTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gbmV3IHIodCl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0MCk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlKXtmb3IodmFyIGkgaW4gbillJiZ0W2ldP3RbaV09bltpXTpyKHQsaSxuW2ldKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBuZXcgby5hKGZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihpLHUpe3RyeXt2YXIgYT1uW2ldKHUpLGM9YS52YWx1ZX1jYXRjaCh0KXtyZXR1cm4gdm9pZCBlKHQpfWlmKCFhLmRvbmUpcmV0dXJuIG8uYS5yZXNvbHZlKGMpLnRoZW4oZnVuY3Rpb24odCl7cihcIm5leHRcIix0KX0sZnVuY3Rpb24odCl7cihcInRocm93XCIsdCl9KTt0KGMpfXJldHVybiByKFwibmV4dFwiKX0pfX1PYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KSxlLmQobixcInRocm90dGxlXCIsZnVuY3Rpb24oKXtyZXR1cm4gY30pLGUuZChuLFwiZ2V0RGF0YUJ5UGF0aFwiLGZ1bmN0aW9uKCl7cmV0dXJuIHN9KSxlLmQobixcIm1peGluXCIsZnVuY3Rpb24oKXtyZXR1cm4gZn0pLG4uX2FzeW5jVG9HZW5lcmF0b3I9cjt2YXIgaT1lKDk4KSxvPWUubihpKSx1PWUoOTYpLGE9ZS5uKHUpLGM9ZnVuY3Rpb24odCxuKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxyPWZ1bmN0aW9uKCl7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkociksbz0wO288cjtvKyspaVtvXT1hcmd1bWVudHNbb107dC5fdGltZW91dCYmY2xlYXJUaW1lb3V0KHQuX3RpbWVvdXQpLHQuX3RpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsaSl9LG4pfTtyZXR1cm4gci5fcmVhbD10LHJ9LHM9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9bi5yZXBsYWNlKC8oXFxbfFxcXSkvZyxcIi5cIikucmVwbGFjZSgvXFwuKy9nLFwiLlwiKS5zcGxpdChcIi5cIikuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiEhdH0pLHI9ZS5wb3AoKTtlLmxlbmd0aDspe3Q9dFtlLnNoaWZ0KCldfXJldHVybntsYXN0T2JqOnQsbGFzdEtleTpyfX0sZj1mdW5jdGlvbigpe2Zvcih2YXIgdD1mdW5jdGlvbigpe30sbj1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KG4pLHI9MDtyPG47cisrKWVbcl09YXJndW1lbnRzW3JdO3JldHVybiBhLmEuYXBwbHkoT2JqZWN0LFt0LnByb3RvdHlwZV0uY29uY2F0KGUpKSx0fX0sZnVuY3Rpb24odCxuKXtmdW5jdGlvbiBlKHQsbil7aWYoISh0IGluc3RhbmNlb2YgbikpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKX10LmV4cG9ydHM9ZX0sZnVuY3Rpb24odCxuLGUpe2Z1bmN0aW9uIHIodCxuKXtmb3IodmFyIGU9MDtlPG4ubGVuZ3RoO2UrKyl7dmFyIHI9bltlXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCxcInZhbHVlXCJpbiByJiYoci53cml0YWJsZT0hMCksbyh0LHIua2V5LHIpfX1mdW5jdGlvbiBpKHQsbixlKXtyZXR1cm4gbiYmcih0LnByb3RvdHlwZSxuKSxlJiZyKHQsZSksdH12YXIgbz1lKDEwMCk7dC5leHBvcnRzPWl9LGZ1bmN0aW9uKHQsbixlKXtuLmY9ZSgxMyl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDkzKShcIm1ldGFcIiksaT1lKDI2KSxvPWUoNTMpLHU9ZSgyNSkuZixhPTAsYz1PYmplY3QuaXNFeHRlbnNpYmxlfHxmdW5jdGlvbigpe3JldHVybiEwfSxzPSFlKDUyKShmdW5jdGlvbigpe3JldHVybiBjKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyh7fSkpfSksZj1mdW5jdGlvbih0KXt1KHQscix7dmFsdWU6e2k6XCJPXCIrICsrYSx3Ont9fX0pfSxsPWZ1bmN0aW9uKHQsbil7aWYoIWkodCkpcmV0dXJuXCJzeW1ib2xcIj09dHlwZW9mIHQ/dDooXCJzdHJpbmdcIj09dHlwZW9mIHQ/XCJTXCI6XCJQXCIpK3Q7aWYoIW8odCxyKSl7aWYoIWModCkpcmV0dXJuXCJGXCI7aWYoIW4pcmV0dXJuXCJFXCI7Zih0KX1yZXR1cm4gdFtyXS5pfSxoPWZ1bmN0aW9uKHQsbil7aWYoIW8odCxyKSl7aWYoIWModCkpcmV0dXJuITA7aWYoIW4pcmV0dXJuITE7Zih0KX1yZXR1cm4gdFtyXS53fSxwPWZ1bmN0aW9uKHQpe3JldHVybiBzJiZ2Lk5FRUQmJmModCkmJiFvKHQscikmJmYodCksdH0sdj10LmV4cG9ydHM9e0tFWTpyLE5FRUQ6ITEsZmFzdEtleTpsLGdldFdlYWs6aCxvbkZyZWV6ZTpwfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTQpLGk9ZSg2KSxvPWUoOTApLHU9ZSgxNDgpLGE9ZSgyNSkuZjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49aS5TeW1ib2x8fChpLlN5bWJvbD1vP3t9OnIuU3ltYm9sfHx7fSk7XCJfXCI9PXQuY2hhckF0KDApfHx0IGluIG58fGEobix0LHt2YWx1ZTp1LmYodCl9KX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDk3KSxpPWUoNjcpLG89ZSg1NCksdT1lKDEzMiksYT1lKDUzKSxjPWUoMTg5KSxzPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3I7bi5mPWUoMzMpP3M6ZnVuY3Rpb24odCxuKXtpZih0PW8odCksbj11KG4sITApLGMpdHJ5e3JldHVybiBzKHQsbil9Y2F0Y2godCl7fWlmKGEodCxuKSlyZXR1cm4gaSghci5mLmNhbGwodCxuKSx0W25dKX19LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0NjMpfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpLGk9ci5yZWdlbmVyYXRvclJ1bnRpbWUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHIpLmluZGV4T2YoXCJyZWdlbmVyYXRvclJ1bnRpbWVcIik+PTAsbz1pJiZyLnJlZ2VuZXJhdG9yUnVudGltZTtpZihyLnJlZ2VuZXJhdG9yUnVudGltZT12b2lkIDAsdC5leHBvcnRzPWUoMjE1KSxpKXIucmVnZW5lcmF0b3JSdW50aW1lPW87ZWxzZSB0cnl7ZGVsZXRlIHIucmVnZW5lcmF0b3JSdW50aW1lfWNhdGNoKHQpe3IucmVnZW5lcmF0b3JSdW50aW1lPXZvaWQgMH19LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9IWUoNykmJiFlKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlKDEwMSkoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuLGUpe24uZj1lKDUpfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxNSksaT1lKDE5KSxvPWUoNzYpKCExKSx1PWUoMTAzKShcIklFX1BST1RPXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3ZhciBlLGE9aSh0KSxjPTAscz1bXTtmb3IoZSBpbiBhKWUhPXUmJnIoYSxlKSYmcy5wdXNoKGUpO2Zvcig7bi5sZW5ndGg+YzspcihhLGU9bltjKytdKSYmKH5vKHMsZSl8fHMucHVzaChlKSk7cmV0dXJuIHN9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg4KSxpPWUoMSksbz1lKDQ0KTt0LmV4cG9ydHM9ZSg3KT9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LG4pe2kodCk7Zm9yKHZhciBlLHU9byhuKSxhPXUubGVuZ3RoLGM9MDthPmM7KXIuZih0LGU9dVtjKytdLG5bZV0pO3JldHVybiB0fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTkpLGk9ZSg0NykuZixvPXt9LnRvU3RyaW5nLHU9XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdLGE9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBpKHQpfWNhdGNoKHQpe3JldHVybiB1LnNsaWNlKCl9fTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gdSYmXCJbb2JqZWN0IFdpbmRvd11cIj09by5jYWxsKHQpP2EodCk6aShyKHQpKX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDQ0KSxpPWUoNzcpLG89ZSg2NCksdT1lKDEwKSxhPWUoNjMpLGM9T2JqZWN0LmFzc2lnbjt0LmV4cG9ydHM9IWN8fGUoMykoZnVuY3Rpb24oKXt2YXIgdD17fSxuPXt9LGU9U3ltYm9sKCkscj1cImFiY2RlZmdoaWprbG1ub3BxcnN0XCI7cmV0dXJuIHRbZV09NyxyLnNwbGl0KFwiXCIpLmZvckVhY2goZnVuY3Rpb24odCl7blt0XT10fSksNyE9Yyh7fSx0KVtlXXx8T2JqZWN0LmtleXMoYyh7fSxuKSkuam9pbihcIlwiKSE9cn0pP2Z1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXUodCksYz1hcmd1bWVudHMubGVuZ3RoLHM9MSxmPWkuZixsPW8uZjtjPnM7KWZvcih2YXIgaCxwPWEoYXJndW1lbnRzW3MrK10pLHY9Zj9yKHApLmNvbmNhdChmKHApKTpyKHApLGQ9di5sZW5ndGgseT0wO2Q+eTspbC5jYWxsKHAsaD12W3krK10pJiYoZVtoXT1wW2hdKTtyZXR1cm4gZX06Y30sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMTEpLGk9ZSg0KSxvPWUoMTYxKSx1PVtdLnNsaWNlLGE9e30sYz1mdW5jdGlvbih0LG4sZSl7aWYoIShuIGluIGEpKXtmb3IodmFyIHI9W10saT0wO2k8bjtpKyspcltpXT1cImFbXCIraStcIl1cIjthW25dPUZ1bmN0aW9uKFwiRixhXCIsXCJyZXR1cm4gbmV3IEYoXCIrci5qb2luKFwiLFwiKStcIilcIil9cmV0dXJuIGFbbl0odCxlKX07dC5leHBvcnRzPUZ1bmN0aW9uLmJpbmR8fGZ1bmN0aW9uKHQpe3ZhciBuPXIodGhpcyksZT11LmNhbGwoYXJndW1lbnRzLDEpLGE9ZnVuY3Rpb24oKXt2YXIgcj1lLmNvbmNhdCh1LmNhbGwoYXJndW1lbnRzKSk7cmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBhP2MobixyLmxlbmd0aCxyKTpvKG4scix0KX07cmV0dXJuIGkobi5wcm90b3R5cGUpJiYoYS5wcm90b3R5cGU9bi5wcm90b3R5cGUpLGF9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSl7dmFyIHI9dm9pZCAwPT09ZTtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gcj90KCk6dC5jYWxsKGUpO2Nhc2UgMTpyZXR1cm4gcj90KG5bMF0pOnQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gcj90KG5bMF0sblsxXSk6dC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHI/dChuWzBdLG5bMV0sblsyXSk6dC5jYWxsKGUsblswXSxuWzFdLG5bMl0pO2Nhc2UgNDpyZXR1cm4gcj90KG5bMF0sblsxXSxuWzJdLG5bM10pOnQuY2FsbChlLG5bMF0sblsxXSxuWzJdLG5bM10pfXJldHVybiB0LmFwcGx5KGUsbil9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgyKS5wYXJzZUludCxpPWUoNTYpLnRyaW0sbz1lKDEwNyksdT0vXlstK10/MFt4WF0vO3QuZXhwb3J0cz04IT09cihvK1wiMDhcIil8fDIyIT09cihvK1wiMHgxNlwiKT9mdW5jdGlvbih0LG4pe3ZhciBlPWkoU3RyaW5nKHQpLDMpO3JldHVybiByKGUsbj4+PjB8fCh1LnRlc3QoZSk/MTY6MTApKX06cn0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMikucGFyc2VGbG9hdCxpPWUoNTYpLnRyaW07dC5leHBvcnRzPTEvcihlKDEwNykrXCItMFwiKSE9LTEvMD9mdW5jdGlvbih0KXt2YXIgbj1pKFN0cmluZyh0KSwzKSxlPXIobik7cmV0dXJuIDA9PT1lJiZcIi1cIj09bi5jaGFyQXQoMCk/LTA6ZX06cn0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMjMpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe2lmKFwibnVtYmVyXCIhPXR5cGVvZiB0JiZcIk51bWJlclwiIT1yKHQpKXRocm93IFR5cGVFcnJvcihuKTtyZXR1cm4rdH19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDQpLGk9TWF0aC5mbG9vcjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIXIodCkmJmlzRmluaXRlKHQpJiZpKHQpPT09dH19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPU1hdGgubG9nMXB8fGZ1bmN0aW9uKHQpe3JldHVybih0PSt0KT4tMWUtOCYmdDwxZS04P3QtdCp0LzI6TWF0aC5sb2coMSt0KX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDExMCksaT1NYXRoLnBvdyxvPWkoMiwtNTIpLHU9aSgyLC0yMyksYT1pKDIsMTI3KSooMi11KSxjPWkoMiwtMTI2KSxzPWZ1bmN0aW9uKHQpe3JldHVybiB0KzEvby0xL299O3QuZXhwb3J0cz1NYXRoLmZyb3VuZHx8ZnVuY3Rpb24odCl7dmFyIG4sZSxpPU1hdGguYWJzKHQpLGY9cih0KTtyZXR1cm4gaTxjP2YqcyhpL2MvdSkqYyp1OihuPSgxK3UvbykqaSxlPW4tKG4taSksZT5hfHxlIT1lP2YqKDEvMCk6ZiplKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSxpKXt0cnl7cmV0dXJuIGk/bihyKGUpWzBdLGVbMV0pOm4oZSl9Y2F0Y2gobil7dmFyIG89dC5yZXR1cm47dGhyb3cgdm9pZCAwIT09byYmcihvLmNhbGwodCkpLG59fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTEpLGk9ZSgxMCksbz1lKDYzKSx1PWUoOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlLGEsYyl7cihuKTt2YXIgcz1pKHQpLGY9byhzKSxsPXUocy5sZW5ndGgpLGg9Yz9sLTE6MCxwPWM/LTE6MTtpZihlPDIpZm9yKDs7KXtpZihoIGluIGYpe2E9ZltoXSxoKz1wO2JyZWFrfWlmKGgrPXAsYz9oPDA6bDw9aCl0aHJvdyBUeXBlRXJyb3IoXCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlXCIpfWZvcig7Yz9oPj0wOmw+aDtoKz1wKWggaW4gZiYmKGE9bihhLGZbaF0saCxzKSk7cmV0dXJuIGF9fSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgxMCksaT1lKDQ1KSxvPWUoOSk7dC5leHBvcnRzPVtdLmNvcHlXaXRoaW58fGZ1bmN0aW9uKHQsbil7dmFyIGU9cih0aGlzKSx1PW8oZS5sZW5ndGgpLGE9aSh0LHUpLGM9aShuLHUpLHM9YXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDAsZj1NYXRoLm1pbigodm9pZCAwPT09cz91Omkocyx1KSktYyx1LWEpLGw9MTtmb3IoYzxhJiZhPGMrZiYmKGw9LTEsYys9Zi0xLGErPWYtMSk7Zi0tID4wOyljIGluIGU/ZVthXT1lW2NdOmRlbGV0ZSBlW2FdLGErPWwsYys9bDtyZXR1cm4gZX19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJue3ZhbHVlOm4sZG9uZTohIXR9fX0sZnVuY3Rpb24odCxuLGUpe2UoNykmJlwiZ1wiIT0vLi9nLmZsYWdzJiZlKDgpLmYoUmVnRXhwLnByb3RvdHlwZSxcImZsYWdzXCIse2NvbmZpZ3VyYWJsZTohMCxnZXQ6ZSg4MSl9KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dHJ5e3JldHVybntlOiExLHY6dCgpfX1jYXRjaCh0KXtyZXR1cm57ZTohMCx2OnR9fX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEpLGk9ZSg0KSxvPWUoMTI1KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZihyKHQpLGkobikmJm4uY29uc3RydWN0b3I9PT10KXJldHVybiBuO3ZhciBlPW8uZih0KTtyZXR1cm4oMCxlLnJlc29sdmUpKG4pLGUucHJvbWlzZX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDE3NiksaT1lKDU4KSxvPVwiTWFwXCI7dC5leHBvcnRzPWUoODQpKG8sZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCl9fSx7Z2V0OmZ1bmN0aW9uKHQpe3ZhciBuPXIuZ2V0RW50cnkoaSh0aGlzLG8pLHQpO3JldHVybiBuJiZuLnZ9LHNldDpmdW5jdGlvbih0LG4pe3JldHVybiByLmRlZihpKHRoaXMsbyksMD09PXQ/MDp0LG4pfX0sciwhMCl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDgpLmYsaT1lKDQ2KSxvPWUoNTEpLHU9ZSgyMiksYT1lKDQ5KSxjPWUoNTApLHM9ZSgxMTMpLGY9ZSgxNzEpLGw9ZSg0OCksaD1lKDcpLHA9ZSgzOCkuZmFzdEtleSx2PWUoNTgpLGQ9aD9cIl9zXCI6XCJzaXplXCIseT1mdW5jdGlvbih0LG4pe3ZhciBlLHI9cChuKTtpZihcIkZcIiE9PXIpcmV0dXJuIHQuX2lbcl07Zm9yKGU9dC5fZjtlO2U9ZS5uKWlmKGUuaz09bilyZXR1cm4gZX07dC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LG4sZSxzKXt2YXIgZj10KGZ1bmN0aW9uKHQscil7YSh0LGYsbixcIl9pXCIpLHQuX3Q9bix0Ll9pPWkobnVsbCksdC5fZj12b2lkIDAsdC5fbD12b2lkIDAsdFtkXT0wLHZvaWQgMCE9ciYmYyhyLGUsdFtzXSx0KX0pO3JldHVybiBvKGYucHJvdG90eXBlLHtjbGVhcjpmdW5jdGlvbigpe2Zvcih2YXIgdD12KHRoaXMsbiksZT10Ll9pLHI9dC5fZjtyO3I9ci5uKXIucj0hMCxyLnAmJihyLnA9ci5wLm49dm9pZCAwKSxkZWxldGUgZVtyLmldO3QuX2Y9dC5fbD12b2lkIDAsdFtkXT0wfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIGU9dih0aGlzLG4pLHI9eShlLHQpO2lmKHIpe3ZhciBpPXIubixvPXIucDtkZWxldGUgZS5faVtyLmldLHIucj0hMCxvJiYoby5uPWkpLGkmJihpLnA9byksZS5fZj09ciYmKGUuX2Y9aSksZS5fbD09ciYmKGUuX2w9byksZVtkXS0tfXJldHVybiEhcn0sZm9yRWFjaDpmdW5jdGlvbih0KXt2KHRoaXMsbik7Zm9yKHZhciBlLHI9dSh0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDMpO2U9ZT9lLm46dGhpcy5fZjspZm9yKHIoZS52LGUuayx0aGlzKTtlJiZlLnI7KWU9ZS5wfSxoYXM6ZnVuY3Rpb24odCl7cmV0dXJuISF5KHYodGhpcyxuKSx0KX19KSxoJiZyKGYucHJvdG90eXBlLFwic2l6ZVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdih0aGlzLG4pW2RdfX0pLGZ9LGRlZjpmdW5jdGlvbih0LG4sZSl7dmFyIHIsaSxvPXkodCxuKTtyZXR1cm4gbz9vLnY9ZToodC5fbD1vPXtpOmk9cChuLCEwKSxrOm4sdjplLHA6cj10Ll9sLG46dm9pZCAwLHI6ITF9LHQuX2Z8fCh0Ll9mPW8pLHImJihyLm49byksdFtkXSsrLFwiRlwiIT09aSYmKHQuX2lbaV09bykpLHR9LGdldEVudHJ5Onksc2V0U3Ryb25nOmZ1bmN0aW9uKHQsbixlKXtzKHQsbixmdW5jdGlvbih0LGUpe3RoaXMuX3Q9dih0LG4pLHRoaXMuX2s9ZSx0aGlzLl9sPXZvaWQgMH0sZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxuPXQuX2ssZT10Ll9sO2UmJmUucjspZT1lLnA7cmV0dXJuIHQuX3QmJih0Ll9sPWU9ZT9lLm46dC5fdC5fZik/XCJrZXlzXCI9PW4/ZigwLGUuayk6XCJ2YWx1ZXNcIj09bj9mKDAsZS52KTpmKDAsW2UuayxlLnZdKToodC5fdD12b2lkIDAsZigxKSl9LGU/XCJlbnRyaWVzXCI6XCJ2YWx1ZXNcIiwhZSwhMCksbChuKX19fSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgxNzYpLGk9ZSg1OCksbz1cIlNldFwiO3QuZXhwb3J0cz1lKDg0KShvLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gci5kZWYoaSh0aGlzLG8pLHQ9MD09PXQ/MDp0LHQpfX0scil9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcixpPWUoMzEpKDApLG89ZSgxNyksdT1lKDM4KSxhPWUoMTU5KSxjPWUoMTc5KSxzPWUoNCksZj1lKDMpLGw9ZSg1OCksaD1cIldlYWtNYXBcIixwPXUuZ2V0V2Vhayx2PU9iamVjdC5pc0V4dGVuc2libGUsZD1jLnVmc3RvcmUseT17fSxnPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0sbT17Z2V0OmZ1bmN0aW9uKHQpe2lmKHModCkpe3ZhciBuPXAodCk7cmV0dXJuITA9PT1uP2QobCh0aGlzLGgpKS5nZXQodCk6bj9uW3RoaXMuX2ldOnZvaWQgMH19LHNldDpmdW5jdGlvbih0LG4pe3JldHVybiBjLmRlZihsKHRoaXMsaCksdCxuKX19LF89dC5leHBvcnRzPWUoODQpKGgsZyxtLGMsITAsITApO2YoZnVuY3Rpb24oKXtyZXR1cm4gNyE9KG5ldyBfKS5zZXQoKE9iamVjdC5mcmVlemV8fE9iamVjdCkoeSksNykuZ2V0KHkpfSkmJihyPWMuZ2V0Q29uc3RydWN0b3IoZyxoKSxhKHIucHJvdG90eXBlLG0pLHUuTkVFRD0hMCxpKFtcImRlbGV0ZVwiLFwiaGFzXCIsXCJnZXRcIixcInNldFwiXSxmdW5jdGlvbih0KXt2YXIgbj1fLnByb3RvdHlwZSxlPW5bdF07byhuLHQsZnVuY3Rpb24obixpKXtpZihzKG4pJiYhdihuKSl7dGhpcy5fZnx8KHRoaXMuX2Y9bmV3IHIpO3ZhciBvPXRoaXMuX2ZbdF0obixpKTtyZXR1cm5cInNldFwiPT10P3RoaXM6b31yZXR1cm4gZS5jYWxsKHRoaXMsbixpKX0pfSkpfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSg1MSksaT1lKDM4KS5nZXRXZWFrLG89ZSgxKSx1PWUoNCksYT1lKDQ5KSxjPWUoNTApLHM9ZSgzMSksZj1lKDE1KSxsPWUoNTgpLGg9cyg1KSxwPXMoNiksdj0wLGQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQuX2x8fCh0Ll9sPW5ldyB5KX0seT1mdW5jdGlvbigpe3RoaXMuYT1bXX0sZz1mdW5jdGlvbih0LG4pe3JldHVybiBoKHQuYSxmdW5jdGlvbih0KXtyZXR1cm4gdFswXT09PW59KX07eS5wcm90b3R5cGU9e2dldDpmdW5jdGlvbih0KXt2YXIgbj1nKHRoaXMsdCk7aWYobilyZXR1cm4gblsxXX0saGFzOmZ1bmN0aW9uKHQpe3JldHVybiEhZyh0aGlzLHQpfSxzZXQ6ZnVuY3Rpb24odCxuKXt2YXIgZT1nKHRoaXMsdCk7ZT9lWzFdPW46dGhpcy5hLnB1c2goW3Qsbl0pfSxkZWxldGU6ZnVuY3Rpb24odCl7dmFyIG49cCh0aGlzLmEsZnVuY3Rpb24obil7cmV0dXJuIG5bMF09PT10fSk7cmV0dXJufm4mJnRoaXMuYS5zcGxpY2UobiwxKSwhIX5ufX0sdC5leHBvcnRzPXtnZXRDb25zdHJ1Y3RvcjpmdW5jdGlvbih0LG4sZSxvKXt2YXIgcz10KGZ1bmN0aW9uKHQscil7YSh0LHMsbixcIl9pXCIpLHQuX3Q9bix0Ll9pPXYrKyx0Ll9sPXZvaWQgMCx2b2lkIDAhPXImJmMocixlLHRbb10sdCl9KTtyZXR1cm4gcihzLnByb3RvdHlwZSx7ZGVsZXRlOmZ1bmN0aW9uKHQpe2lmKCF1KHQpKXJldHVybiExO3ZhciBlPWkodCk7cmV0dXJuITA9PT1lP2QobCh0aGlzLG4pKS5kZWxldGUodCk6ZSYmZihlLHRoaXMuX2kpJiZkZWxldGUgZVt0aGlzLl9pXX0saGFzOmZ1bmN0aW9uKHQpe2lmKCF1KHQpKXJldHVybiExO3ZhciBlPWkodCk7cmV0dXJuITA9PT1lP2QobCh0aGlzLG4pKS5oYXModCk6ZSYmZihlLHRoaXMuX2kpfX0pLHN9LGRlZjpmdW5jdGlvbih0LG4sZSl7dmFyIHI9aShvKG4pLCEwKTtyZXR1cm4hMD09PXI/ZCh0KS5zZXQobixlKTpyW3QuX2ldPWUsdH0sdWZzdG9yZTpkfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMjkpLGk9ZSg5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYodm9pZCAwPT09dClyZXR1cm4gMDt2YXIgbj1yKHQpLGU9aShuKTtpZihuIT09ZSl0aHJvdyBSYW5nZUVycm9yKFwiV3JvbmcgbGVuZ3RoIVwiKTtyZXR1cm4gZX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDQ3KSxpPWUoNzcpLG89ZSgxKSx1PWUoMikuUmVmbGVjdDt0LmV4cG9ydHM9dSYmdS5vd25LZXlzfHxmdW5jdGlvbih0KXt2YXIgbj1yLmYobyh0KSksZT1pLmY7cmV0dXJuIGU/bi5jb25jYXQoZSh0KSk6bn19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtmdW5jdGlvbiByKHQsbixlLHMsZixsLGgscCl7Zm9yKHZhciB2LGQseT1mLGc9MCxtPSEhaCYmYShoLHAsMyk7ZzxzOyl7aWYoZyBpbiBlKXtpZih2PW0/bShlW2ddLGcsbik6ZVtnXSxkPSExLG8odikmJihkPXZbY10sZD12b2lkIDAhPT1kPyEhZDppKHYpKSxkJiZsPjApeT1yKHQsbix2LHUodi5sZW5ndGgpLHksbC0xKS0xO2Vsc2V7aWYoeT49OTAwNzE5OTI1NDc0MDk5MSl0aHJvdyBUeXBlRXJyb3IoKTt0W3ldPXZ9eSsrfWcrK31yZXR1cm4geX12YXIgaT1lKDc4KSxvPWUoNCksdT1lKDkpLGE9ZSgyMiksYz1lKDUpKFwiaXNDb25jYXRTcHJlYWRhYmxlXCIpO3QuZXhwb3J0cz1yfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg5KSxpPWUoMTA5KSxvPWUoMjgpO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSx1KXt2YXIgYT1TdHJpbmcobyh0KSksYz1hLmxlbmd0aCxzPXZvaWQgMD09PWU/XCIgXCI6U3RyaW5nKGUpLGY9cihuKTtpZihmPD1jfHxcIlwiPT1zKXJldHVybiBhO3ZhciBsPWYtYyxoPWkuY2FsbChzLE1hdGguY2VpbChsL3MubGVuZ3RoKSk7cmV0dXJuIGgubGVuZ3RoPmwmJihoPWguc2xpY2UoMCxsKSksdT9oK2E6YStofX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNDQpLGk9ZSgxOSksbz1lKDY0KS5mO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7Zm9yKHZhciBlLHU9aShuKSxhPXIodSksYz1hLmxlbmd0aCxzPTAsZj1bXTtjPnM7KW8uY2FsbCh1LGU9YVtzKytdKSYmZi5wdXNoKHQ/W2UsdVtlXV06dVtlXSk7cmV0dXJuIGZ9fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjUpLGk9ZSgxODYpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZihyKHRoaXMpIT10KXRocm93IFR5cGVFcnJvcih0K1wiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO3JldHVybiBpKHRoaXMpfX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDUwKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgZT1bXTtyZXR1cm4gcih0LCExLGUucHVzaCxlLG4pLGV9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1NYXRoLnNjYWxlfHxmdW5jdGlvbih0LG4sZSxyLGkpe3JldHVybiAwPT09YXJndW1lbnRzLmxlbmd0aHx8dCE9dHx8biE9bnx8ZSE9ZXx8ciE9cnx8aSE9aT9OYU46dD09PTEvMHx8dD09PS0xLzA/dDoodC1uKSooaS1yKS8oZS1uKStyfX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoNDEzKSxpPWUubihyKSxvPWUoMTM4KSx1PWUubihvKSxhPVwiaHR0cHM6Ly9zMi5kMnNjZG4uY29tL1wiLGM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSl7dmFyIHI9XCJcIjtpZighbilyZXR1cm4gbjtpZigvXmh0dHBzPy8udGVzdChuKSlyZXR1cm4gbjtpZighZSlyZXR1cm4gYStuO3ZhciBpPWUuc3BsaXQoXCIsXCIpO2lmKDMhPT1pLmxlbmd0aClyZXR1cm4gYStuO2lmKFwid2hcIj09PWlbMF0uc2xpY2UoMCwyKSlyPVwiP2ltYWdlVmlldzIvMS93L1wiLmNvbmNhdChpWzFdLFwiL2gvXCIpLmNvbmNhdChpWzJdKTtlbHNlIGlmKFwiZlwiPT09aVswXVswXSlyPVwiXCI7ZWxzZXtpZihcImNcIj09PWlbMF1bMF0pcmV0dXJuIGErXCJjcm9wLzEvRkZGRkZGL1wiLmNvbmNhdChpWzFdLFwieFwiKS5jb25jYXQoaVsyXSxcIi9cIikuY29uY2F0KG4pO1wiZFwiPT09aVswXVswXT9yPVwiP2ltYWdlTW9ncjIvYXV0by1vcmllbnQvdGh1bWJuYWlsL1wiLmNvbmNhdChpWzFdLFwieFwiKS5jb25jYXQoaVsyXSxcIiEvaW50ZXJsYWNlLzFcIik6XCJlXCI9PT1pWzBdWzBdP3I9XCI/aW1hZ2VNb2dyMi9hdXRvLW9yaWVudC90aHVtYm5haWwvIVwiLmNvbmNhdChpWzFdLFwieFwiKS5jb25jYXQoaVsyXSxcInJ8aW1hZ2VWaWV3Mi8xL3cvXCIpLmNvbmNhdChpWzFdLFwiL2gvXCIpLmNvbmNhdChpWzJdKTpcImdcIj09PWlbMF1bMF0/cj1cIj9pbWFnZVZpZXcyLzIvdy9cIi5jb25jYXQoaVsxXSk6XCJpXCI9PT1pWzBdWzBdP3I9XCI/aW1hZ2VWaWV3Mi8yL2gvXCIuY29uY2F0KGlbMl0pOlwialwiPT09aVswXVswXT9yPVwiP2ltYWdlVmlldzIvMi93L1wiLmNvbmNhdChpWzFdLFwiL2gvXCIpLmNvbmNhdChpWzJdKTpcInZcIj09PWlbMF1bMF0/cj1cIj92ZnJhbWUvanBnL29mZnNldC8wL3cvXCIuY29uY2F0KGlbMV0sXCIvaC9cIikuY29uY2F0KGlbMl0pOlwieFwiPT09aVswXVswXSYmKHI9XCI/dmZyYW1lL2pwZy9vZmZzZXQvMC93L1wiLmNvbmNhdChpWzFdKSl9aWYodCYmaVswXS5sZW5ndGg+MSYmXCJtXCI9PT1pWzBdW2lbMF0ubGVuZ3RoLTFdKXt2YXIgbz0tMSE9PXIuaW5kZXhPZihcIj9cIik/XCJ8XCI6XCI/XCI7cj1cIlwiLmNvbmNhdChyKS5jb25jYXQobykuY29uY2F0KHQuY29tcGFueS53YXRlcm1hcmtfZm9wKX1yZXR1cm4gYStuK3J9fSxzPXtxaW5pdUZhY3Rvcnk6YyxxaW5pdTpjKFwidW5kZWZpbmVkXCI9PXR5cGVvZiB3aW5kb3c/bnVsbDp3aW5kb3cuRCksZGF0ZWZvcm1hdDpmdW5jdGlvbih0LG4pe3ZhciBlLHIsbyxhLGMscztpZighdClyZXR1cm4gdDt0cnl7ZT1uZXcgRGF0ZSh0KX1jYXRjaChuKXtyZXR1cm4gdH12YXIgZj1mdW5jdGlvbih0KXtyZXR1cm4gdD10LnRvU3RyaW5nKCksMT09PXQubGVuZ3RoP1wiMFwiLmNvbmNhdCh0KTp0fSxsPW51bGw7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe3ZhciBoPXQubWF0Y2goL14oXFxkezR9KS0oXFxkezJ9KS0oXFxkezJ9KVQoXFxkezJ9KTooXFxkezJ9KTooXFxkezJ9KS8pO2lmKGgpe3ZhciBwPWkoKShoLnNsaWNlKDEsNykpLHY9dSgpKHAsNik7bD12WzBdLGM9dlsxXSxyPXZbMl0sbz12WzNdLGE9dls0XSxzPXZbNV19fXN3aXRjaChsfHwobD1lLmdldFVUQ0Z1bGxZZWFyKCksYz1mKGUuZ2V0VVRDTW9udGgoKSsxKSxyPWYoZS5nZXRVVENEYXRlKCkpLG89ZihlLmdldFVUQ0hvdXJzKCkpLGE9ZihlLmdldFVUQ01pbnV0ZXMoKSkscz1mKGUuZ2V0U2Vjb25kcygpKSksbil7Y2FzZVwibGlzdFwiOnJldHVybltwYXJzZUludChsKSxwYXJzZUludChjKSxwYXJzZUludChyKSxwYXJzZUludChvKSxwYXJzZUludChhKSxwYXJzZUludChzKV07Y2FzZVwiZGF0ZVwiOnJldHVyblwiXCIuY29uY2F0KGwsXCItXCIpLmNvbmNhdChjLFwiLVwiKS5jb25jYXQocik7Y2FzZVwiZGF0ZXRpbWVcIjpyZXR1cm5cIlwiLmNvbmNhdChsLFwiLVwiKS5jb25jYXQoYyxcIi1cIikuY29uY2F0KHIsXCIgXCIpLmNvbmNhdChvLFwiOlwiKS5jb25jYXQoYSk7Y2FzZVwiZGF0ZXRpbWVzZWNvbmRzXCI6cmV0dXJuXCJcIi5jb25jYXQobCxcIi1cIikuY29uY2F0KGMsXCItXCIpLmNvbmNhdChyLFwiIFwiKS5jb25jYXQobyxcIjpcIikuY29uY2F0KGEsXCI6XCIpLmNvbmNhdChzKTtjYXNlXCJ0aW1lXCI6cmV0dXJuXCJcIi5jb25jYXQobyxcIjpcIikuY29uY2F0KGEpO2Nhc2VcInVybFwiOnJldHVyblwiXCIuY29uY2F0KGwsXCItXCIpLmNvbmNhdChjLFwiLVwiKS5jb25jYXQocixcIi1cIikuY29uY2F0KG8sXCI6XCIpLmNvbmNhdChhLFwiOlwiKS5jb25jYXQocyk7ZGVmYXVsdDpyZXR1cm4gdH19LGZpbmRWYWx1ZUluZGV4OmZ1bmN0aW9uKHQsbixlLHIpe3I9dm9pZCAwPT09cj9udWxsOnI7Zm9yKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspe2lmKHRbaV1bbl09PT1lKXJldHVybiBpfXJldHVybiByfSxodG1sVG9UZXh0OmZ1bmN0aW9uKHQpe3JldHVybiB0PXQ/U3RyaW5nKHQpLnJlcGxhY2UoLzxzY3JpcHRcXGJbXjxdKig/Oig/ITxcXC9zY3JpcHQ+KTxbXjxdKikqPFxcL3NjcmlwdD4vZ2ksXCJcIik6XCJcIix0PXQ/U3RyaW5nKHQpLnJlcGxhY2UoLzxzdHlsZVxcYltePF0qKD86KD8hPFxcL3N0eWxlPik8W148XSopKjxcXC9zdHlsZT4vZ2ksXCJcIik6XCJcIix0PXQ/U3RyaW5nKHQpLnJlcGxhY2UoLzxbXj5dKz4vZ20sXCJcIik6XCJcIix0PXQucmVwbGFjZSgvJm5ic3A7L2csXCJcIikucmVwbGFjZSgvJmFtcDsvZyxcIiZcIil9LGRlZmF1bHQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbnVsbD09dD9uOnR9LG9yZGVyVG9DaGluZXNlOmZ1bmN0aW9uKHQpe3JldHVybnswOlwi6Zu2XCIsMTpcIuS4gFwiLDI6XCLkuoxcIiwzOlwi5LiJXCIsNDpcIuWbm1wiLDU6XCLkupRcIiw2Olwi5YWtXCIsNzpcIuS4g1wiLDg6XCLlhatcIiw5Olwi5LmdXCIsMTA6XCLljYFcIn1bdF18fHR9LHRydW5jYXRlOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHQmJnQubGVuZ3RoPm4/dC5zbGljZSgwLG4pK1wiLi4uXCI6dH0scHJpY2Vmb3JtYXQ6ZnVuY3Rpb24odCxuKXtyZXR1cm4gdD10fHwwLG49bnx8XCJpbnRcIixcImludFwiPT09bj8oTnVtYmVyKHQpLzEwMCkudG9GaXhlZCgyKTpcImNueWludFwiPT09bj9cIsKlIFwiKyhOdW1iZXIodCkvMTAwKS50b0ZpeGVkKDIpOlwiZmxvYXRcIj09PW4/TnVtYmVyKHQpLnRvRml4ZWQoMik6XCJjbnlmbG9hdFwiPT09bj9cIsKlIFwiK051bWJlcih0KS50b0ZpeGVkKDIpOnZvaWQgMH19O24uYT1zfSxmdW5jdGlvbih0LG4sZSl7dC5leHBvcnRzPSFlKDMzKSYmIWUoNTIpKGZ1bmN0aW9uKCl7cmV0dXJuIDchPU9iamVjdC5kZWZpbmVQcm9wZXJ0eShlKDEzMSkoXCJkaXZcIiksXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KX0sZnVuY3Rpb24odCxuLGUpe3QuZXhwb3J0cz1lKDQwKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNTMpLGk9ZSg1NCksbz1lKDQxOCkoITEpLHU9ZSgxMzQpKFwiSUVfUFJPVE9cIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIGUsYT1pKHQpLGM9MCxzPVtdO2ZvcihlIGluIGEpZSE9dSYmcihhLGUpJiZzLnB1c2goZSk7Zm9yKDtuLmxlbmd0aD5jOylyKGEsZT1uW2MrK10pJiYofm8ocyxlKXx8cy5wdXNoKGUpKTtyZXR1cm4gc319LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDE0KS5kb2N1bWVudDt0LmV4cG9ydHM9ciYmci5kb2N1bWVudEVsZW1lbnR9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDUzKSxpPWUoNjEpLG89ZSgxMzQpKFwiSUVfUFJPVE9cIiksdT1PYmplY3QucHJvdG90eXBlO3QuZXhwb3J0cz1PYmplY3QuZ2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKHQpe3JldHVybiB0PWkodCkscih0LG8pP3Rbb106XCJmdW5jdGlvblwiPT10eXBlb2YgdC5jb25zdHJ1Y3RvciYmdCBpbnN0YW5jZW9mIHQuY29uc3RydWN0b3I/dC5jb25zdHJ1Y3Rvci5wcm90b3R5cGU6dCBpbnN0YW5jZW9mIE9iamVjdD91Om51bGx9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbixlLGkpe3RyeXtyZXR1cm4gaT9uKHIoZSlbMF0sZVsxXSk6bihlKX1jYXRjaChuKXt2YXIgbz10LnJldHVybjt0aHJvdyB2b2lkIDAhPT1vJiZyKG8uY2FsbCh0KSksbn19fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg2MCksaT1lKDEzKShcIml0ZXJhdG9yXCIpLG89QXJyYXkucHJvdG90eXBlO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gdm9pZCAwIT09dCYmKHIuQXJyYXk9PT10fHxvW2ldPT09dCl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxMykoXCJpdGVyYXRvclwiKSxpPSExO3RyeXt2YXIgbz1bN11bcl0oKTtvLnJldHVybj1mdW5jdGlvbigpe2k9ITB9LEFycmF5LmZyb20obyxmdW5jdGlvbigpe3Rocm93IDJ9KX1jYXRjaCh0KXt9dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7aWYoIW4mJiFpKXJldHVybiExO3ZhciBlPSExO3RyeXt2YXIgbz1bN10sdT1vW3JdKCk7dS5uZXh0PWZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6ZT0hMH19LG9bcl09ZnVuY3Rpb24oKXtyZXR1cm4gdX0sdChvKX1jYXRjaCh0KXt9cmV0dXJuIGV9fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybnt2YWx1ZTpuLGRvbmU6ISF0fX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtlLmQobixcImFcIixmdW5jdGlvbigpe3JldHVybiBkfSk7dmFyIHI9ZSg3NCksaT1lLm4ociksbz1lKDk2KSx1PWUubihvKSxhPWUoMTQwKSxjPWUubihhKSxzPWUoOTUpLGY9ZS5uKHMpLGw9ZSgxNDUpLGg9XCJwbGFjZWhvbGRlci81MDB4NTAwL0RERC8wMDAv5pqC5peg5Zu+54mHL1wiLHA9ZnVuY3Rpb24odCl7dmFyIG49ZnVuY3Rpb24obixlKXtyZXR1cm4gdFtuXSYmdFtuXS5zdXBwb3J0P3Rbbl0udmFsdWU6ZX0sZT1uKFwiZm9wX3R5cGVcIixcImVcIik7XCJjXCIhPT1lJiZuKFwiZm9wX3dhdGVybWFya1wiLCExKSYmKGUrPVwibVwiKTt2YXIgcj1uKFwiZm9wX3dpZHRoXCIsNTAwKSxpPW4oXCJmb3BfaGVpZ2h0XCIsNTAwKTtyZXR1cm5cIlwiLmNvbmNhdChlLFwiLFwiKS5jb25jYXQocixcIixcIikuY29uY2F0KGkpfSx2PWZ1bmN0aW9uKHQsbixlKXt2YXIgcj10LmZpbHRlcnMuaHRtbFRvVGV4dChuLmRlc2NyaXB0aW9uKXx8XCJcIixpPXIucmVwbGFjZSgvW1xcbiBcXHJdL2csXCJcIikuc2xpY2UoMCwyNTUpLG89bi5pbWFnZV9rZXl8fGgsdT1uLmltYWdlcz9uLmltYWdlcy5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4uaW1hZ2U9dC5maWx0ZXJzLnFpbml1KG4uaW1hZ2UscCh0LnNsaWRlLmxpdmVjb25maWcpKSxufSk6W107aWYobi5kaXNwbGF5PXtpZDpuLmlkLG5hbWU6bi5uYW1lLHB1Yl9kYXRlOnQuZmlsdGVycy5kYXRlZm9ybWF0KG4ucHViX2RhdGUsXCJkYXRldGltZVwiKSxpbWFnZV9rZXk6byxpbWFnZTp0LmZpbHRlcnMucWluaXUobyxwKHQuc2xpZGUubGl2ZWNvbmZpZykpLGltYWdlczp1LHVzZXJjYXRlZ29yeV9kYXRhOm4udXNlcmNhdGVnb3J5X2RhdGEsYXR0cmlidXRlczpuLmF0dHJpYnV0ZXMsZGVzY3JpcHRpb246bi5kZXNjcmlwdGlvbnx8XCJcIixkZXNjcmlwdGlvbl90ZXh0OmkscHJpY2U6bi5wcmljZXx8bnVsbCxjb21wYXJlX3ByaWNlOm4uY29tcGFyZV9wcmljZXx8bnVsbCx0YWdzOm4udGFncyxicmFuZDpuLmJyYW5kLGNvdXBvbnM6bi5jb3Vwb25zfSxudWxsIT09ZSl7dmFyIGE9e2lkOm4uaWQsZGlzcGxheTp7fX07bi5tb2RlbF9uYW1lJiYoYS5tb2RlbF9uYW1lPW4ubW9kZWxfbmFtZSk7dmFyIGM9ITAscz0hMSxsPXZvaWQgMDt0cnl7Zm9yKHZhciB2LGQ9ZigpKGUpOyEoYz0odj1kLm5leHQoKSkuZG9uZSk7Yz0hMCl7dmFyIHk9di52YWx1ZTthLmRpc3BsYXlbeV09bi5kaXNwbGF5W3ldfX1jYXRjaCh0KXtzPSEwLGw9dH1maW5hbGx5e3RyeXtjfHxudWxsPT1kLnJldHVybnx8ZC5yZXR1cm4oKX1maW5hbGx5e2lmKHMpdGhyb3cgbH19cmV0dXJuIGF9cmV0dXJuIGNvbnNvbGUud2FybihcIuWHuuS6juaAp+iDveiAg+iZke+8jOiwg+eUqCBsb2FkTGl2ZUl0ZW1zIOWSjCBsb2FkRGV0YWlsSXRlbSDlv4XpobvmjIflrpogZmllbGRzIOWPguaVsO+8gVwiKSxufSxkPXt0aHJvdHRsZTpsLnRocm90dGxlLGl0ZW1IYW5kbGVyOnYsbG9hZExpdmVEYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9YygpKGkuYS5tYXJrKGZ1bmN0aW9uIHQoKXt2YXIgbixlLHIsbyxhLGMscyxmLGw9YXJndW1lbnRzO3JldHVybiBpLmEud3JhcChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gbj1sLmxlbmd0aD4wJiZ2b2lkIDAhPT1sWzBdP2xbMF06bnVsbCxlPWwubGVuZ3RoPjEmJnZvaWQgMCE9PWxbMV0/bFsxXTp7fSxyPXRoaXMsbz1yLnNsaWRlLmxpdmVjb25maWcsYT17bGltaXQ6by5saW1pdC52YWx1ZSxvcmRlcl9ieTpvLm9yZGVyX2J5LnN1cHBvcnQ/by5vcmRlcl9ieS52YWx1ZTpcIi1pZFwiLGZpbHRlcnM6e319LG8udXNlcl9jYXRlZ29yeS5zdXBwb3J0JiZvLnVzZXJfY2F0ZWdvcnkudmFsdWUmJihhLmZpbHRlcnMuY2F0PW8udXNlcl9jYXRlZ29yeS52YWx1ZS5pZCksXCJwb3N0XCI9PT1vLm1vZGVsLnZhbHVlJiYoYS5maWx0ZXJzLnR5cGU9XCJwb3N0XCIpLFtcImNhdFwiLFwidHlwZVwiLFwicmVjb21tZW5kZWRcIl0uZm9yRWFjaChmdW5jdGlvbih0KXtlW3RdJiYoYS5maWx0ZXJzW3RdPWVbdF0sZGVsZXRlIGVbdF0pfSksdSgpKGEsZSksYz1vLm1vZGVsLnZhbHVlLFwicHJvZHVjdFwiPT09YyYmKGM9XCJwcHJvZHVjdFwiKSxzPVwicG9zdC9cIi5jb25jYXQoYyxcIi9nZXRfbGlzdF9ieV93ZWJcIiksdC5uZXh0PTE0LHIuZmV0Y2gocyxhKTtjYXNlIDE0OnJldHVybiBmPXQuc2VudCxmLmRhdGEub2JqZWN0cz1mLmRhdGEub2JqZWN0cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHYocix0LG4pfSksdC5hYnJ1cHQoXCJyZXR1cm5cIixmLmRhdGEpO2Nhc2UgMTc6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0sdCx0aGlzKX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGxvYWRMaXZlSXRlbXM6ZnVuY3Rpb24oKXt2YXIgdD1jKCkoaS5hLm1hcmsoZnVuY3Rpb24gdCgpe3ZhciBuLGUscixvPWFyZ3VtZW50cztyZXR1cm4gaS5hLndyYXAoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG49by5sZW5ndGg+MCYmdm9pZCAwIT09b1swXT9vWzBdOm51bGwsZT1vLmxlbmd0aD4xJiZ2b2lkIDAhPT1vWzFdP29bMV06e30sdC5uZXh0PTQsdGhpcy5sb2FkTGl2ZURhdGEobixlKTtjYXNlIDQ6cmV0dXJuIHI9dC5zZW50LHQuYWJydXB0KFwicmV0dXJuXCIsci5vYmplY3RzKTtjYXNlIDY6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0sdCx0aGlzKX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLF9sb2FkRGV0YWlsSXRlbTpmdW5jdGlvbigpe3ZhciB0PWMoKShpLmEubWFyayhmdW5jdGlvbiB0KG4sZSl7dmFyIHIsbyx1LGEsYyxzLGYsbD1hcmd1bWVudHM7cmV0dXJuIGkuYS53cmFwKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiByPWwubGVuZ3RoPjImJnZvaWQgMCE9PWxbMl0mJmxbMl0sbz10aGlzLHU9by5zbGlkZS5saXZlY29uZmlnLGE9e2lkOnBhcnNlSW50KG4uaWQpLGlzX2xvYWRfY2F0OnJ9LGM9dS5tb2RlbC52YWx1ZSxcInByb2R1Y3RcIj09PWMmJihjPVwicHByb2R1Y3RcIikscz1cInBvc3QvXCIuY29uY2F0KGMsXCIvZ2V0X2RldGFpbF9ieV93ZWJcIiksdC5uZXh0PTksby5mZXRjaChzLGEpO2Nhc2UgOTpyZXR1cm4gZj10LnNlbnQsdC5hYnJ1cHQoXCJyZXR1cm5cIix2KG8sZi5kYXRhLm9iamVjdCxlKSk7Y2FzZSAxMTpjYXNlXCJlbmRcIjpyZXR1cm4gdC5zdG9wKCl9fSx0LHRoaXMpfSkpO3JldHVybiBmdW5jdGlvbihuLGUpe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCksbG9hZERldGFpbEl0ZW06ZnVuY3Rpb24oKXt2YXIgdD1jKCkoaS5hLm1hcmsoZnVuY3Rpb24gdCgpe3ZhciBuLGUscixvLHU9YXJndW1lbnRzO3JldHVybiBpLmEud3JhcChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDppZihuPXUubGVuZ3RoPjAmJnZvaWQgMCE9PXVbMF0/dVswXTpudWxsLGU9dS5sZW5ndGg+MSYmdm9pZCAwIT09dVsxXSYmdVsxXSxyPXRoaXMsIXIucXVlcnkuaWQpe3QubmV4dD03O2JyZWFrfXJldHVybiB0LmFicnVwdChcInJldHVyblwiLHIuX2xvYWREZXRhaWxJdGVtKHIucXVlcnksbixlKSk7Y2FzZSA3OnJldHVybiB0Lm5leHQ9OSxyLmxvYWRMaXZlSXRlbXMobik7Y2FzZSA5OnJldHVybiBvPXQuc2VudCx0LmFicnVwdChcInJldHVyblwiLG9bMF0pO2Nhc2UgMTE6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0sdCx0aGlzKX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpLGxvYWRSZWxhdGVkSXRlbXM6ZnVuY3Rpb24oKXt2YXIgdD1jKCkoaS5hLm1hcmsoZnVuY3Rpb24gdChuKXt2YXIgZSxyLG8sYSxjLHMsZixsLGgscCxkPWFyZ3VtZW50cztyZXR1cm4gaS5hLndyYXAoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGU9ZC5sZW5ndGg+MSYmdm9pZCAwIT09ZFsxXT9kWzFdOlwicHJvZHVjdFwiLHI9ZC5sZW5ndGg+MiYmdm9pZCAwIT09ZFsyXT9kWzJdOjEwLG89ZC5sZW5ndGg+MyYmdm9pZCAwIT09ZFszXT9kWzNdOm51bGwsYT1kLmxlbmd0aD40JiZ2b2lkIDAhPT1kWzRdP2RbNF06e30sYz10aGlzLHM9Yy5zbGlkZS5saXZlY29uZmlnLGY9e2Zyb21faWQ6bix0b190eXBlOmUsbGltaXQ6cn0sdSgpKGYsYSksbD1zLm1vZGVsLnZhbHVlLFwicHJvZHVjdFwiPT09bCYmKGw9XCJwcHJvZHVjdFwiKSxoPVwicG9zdC9cIi5jb25jYXQobCxcIi9nZXRfcmVsYXRlZF9saXN0XCIpLHQubmV4dD0xMyxjLmZldGNoKGgsZik7Y2FzZSAxMzpyZXR1cm4gcD10LnNlbnQsdC5hYnJ1cHQoXCJyZXR1cm5cIixwLmRhdGEub2JqZWN0cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHYoYyx0LG8pfSkpO2Nhc2UgMTU6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0sdCx0aGlzKX0pKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKSxsb2FkUXVlcnlEYXRhOmZ1bmN0aW9uKCl7dmFyIHQ9YygpKGkuYS5tYXJrKGZ1bmN0aW9uIHQoKXt2YXIgbixlLHIsbyx1LGEsYyxzPWFyZ3VtZW50cztyZXR1cm4gaS5hLndyYXAoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIG49cy5sZW5ndGg+MCYmdm9pZCAwIT09c1swXT9zWzBdOm51bGwsZT1zLmxlbmd0aD4xJiZ2b2lkIDAhPT1zWzFdP3NbMV06e30scj10aGlzLG89ci5zbGlkZS5saXZlY29uZmlnLHU9ZS5tb2RlbF9uYW1lfHxvLm1vZGVsLnZhbHVlLFwicHJvZHVjdFwiPT09dSYmKHU9XCJwcHJvZHVjdFwiKSxhPVwicG9zdC9cIi5jb25jYXQodSxcIi9nZXRfcXVlcnlfbGlzdFwiKSx0Lm5leHQ9OSxyLmZldGNoKGEsZSk7Y2FzZSA5OnJldHVybiBjPXQuc2VudCxjLmRhdGEub2JqZWN0cz1jLmRhdGEub2JqZWN0cy5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHYocix0LG4pfSksdC5hYnJ1cHQoXCJyZXR1cm5cIixjLmRhdGEpO2Nhc2UgMTI6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0sdCx0aGlzKX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzIpLGk9ZSg2Niksbz1lKDEzKShcInNwZWNpZXNcIik7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7dmFyIGUsdT1yKHQpLmNvbnN0cnVjdG9yO3JldHVybiB2b2lkIDA9PT11fHx2b2lkIDA9PShlPXIodSlbb10pP246aShlKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcixpLG8sdT1lKDM3KSxhPWUoNDM0KSxjPWUoMTkyKSxzPWUoMTMxKSxmPWUoMTQpLGw9Zi5wcm9jZXNzLGg9Zi5zZXRJbW1lZGlhdGUscD1mLmNsZWFySW1tZWRpYXRlLHY9Zi5NZXNzYWdlQ2hhbm5lbCxkPWYuRGlzcGF0Y2gseT0wLGc9e30sbT1cIm9ucmVhZHlzdGF0ZWNoYW5nZVwiLF89ZnVuY3Rpb24oKXt2YXIgdD0rdGhpcztpZihnLmhhc093blByb3BlcnR5KHQpKXt2YXIgbj1nW3RdO2RlbGV0ZSBnW3RdLG4oKX19LHc9ZnVuY3Rpb24odCl7Xy5jYWxsKHQuZGF0YSl9O2gmJnB8fChoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1bXSxlPTE7YXJndW1lbnRzLmxlbmd0aD5lOyluLnB1c2goYXJndW1lbnRzW2UrK10pO3JldHVybiBnWysreV09ZnVuY3Rpb24oKXthKFwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/dDpGdW5jdGlvbih0KSxuKX0scih5KSx5fSxwPWZ1bmN0aW9uKHQpe2RlbGV0ZSBnW3RdfSxcInByb2Nlc3NcIj09ZSg2OSkobCk/cj1mdW5jdGlvbih0KXtsLm5leHRUaWNrKHUoXyx0LDEpKX06ZCYmZC5ub3c/cj1mdW5jdGlvbih0KXtkLm5vdyh1KF8sdCwxKSl9OnY/KGk9bmV3IHYsbz1pLnBvcnQyLGkucG9ydDEub25tZXNzYWdlPXcscj11KG8ucG9zdE1lc3NhZ2UsbywxKSk6Zi5hZGRFdmVudExpc3RlbmVyJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBwb3N0TWVzc2FnZSYmIWYuaW1wb3J0U2NyaXB0cz8ocj1mdW5jdGlvbih0KXtmLnBvc3RNZXNzYWdlKHQrXCJcIixcIipcIil9LGYuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIix3LCExKSk6cj1tIGluIHMoXCJzY3JpcHRcIik/ZnVuY3Rpb24odCl7Yy5hcHBlbmRDaGlsZChzKFwic2NyaXB0XCIpKVttXT1mdW5jdGlvbigpe2MucmVtb3ZlQ2hpbGQodGhpcyksXy5jYWxsKHQpfX06ZnVuY3Rpb24odCl7c2V0VGltZW91dCh1KF8sdCwxKSwwKX0pLHQuZXhwb3J0cz17c2V0OmgsY2xlYXI6cH19LGZ1bmN0aW9uKHQsbil7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3RyeXtyZXR1cm57ZTohMSx2OnQoKX19Y2F0Y2godCl7cmV0dXJue2U6ITAsdjp0fX19fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzMiksaT1lKDI2KSxvPWUoMTQzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZihyKHQpLGkobikmJm4uY29uc3RydWN0b3I9PT10KXJldHVybiBuO3ZhciBlPW8uZih0KTtyZXR1cm4oMCxlLnJlc29sdmUpKG4pLGUucHJvbWlzZX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDE0KSxpPWUoNiksbz1lKDI1KSx1PWUoMzMpLGE9ZSgxMykoXCJzcGVjaWVzXCIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXt2YXIgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBpW3RdP2lbdF06clt0XTt1JiZuJiYhblthXSYmby5mKG4sYSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzfX0pfX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UuZChuLFwiYVwiLGZ1bmN0aW9uKCl7cmV0dXJuIHl9KTt2YXIgcj1lKDczKSxpPWUubihyKSxvPWUoNzQpLHU9ZS5uKG8pLGE9ZSg5OCksYz1lLm4oYSkscz1lKDE0MCksZj1lLm4ocyksbD1lKDE0NiksaD1lLm4obCkscD1lKDE0Nyksdj1lLm4ocCksZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQobixlKXtoKCkodGhpcyx0KSx0aGlzLmR3PW4sdGhpcy5zbGlkZT1lfXJldHVybiB2KCkodCxbe2tleTpcIl9jaGVja1wiLHZhbHVlOmZ1bmN0aW9uKCl7aWYoIXRoaXMuc2xpZGUucmVsYXRlZF9wYXBwX2lkKXRocm93IG5ldyBFcnJvcihcIuivt+WFiOWIm+W7uuWFs+iBlOW6lOeUqOeoi+W6j++8gVwiKX19LHtrZXk6XCJnZXRQbGF5SWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVjaygpLHRoaXMuc2xpZGUucmVsYXRlZF9wYXBwX2lkfX0se2tleTpcImdldFBsYXlEYXRhXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fY2hlY2soKSx0aGlzLmR3LnJlcXVlc3QoXCJkeW5hbWljX2dldC9jb21wYW55X3BhcHAvZ2V0X3BhcHBfZGF0YVwiLHtpZDp0aGlzLmdldFBsYXlJZCgpfSl9fSx7a2V5OlwiZ2V0UGxheVVzZXJcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVjaygpLHRoaXMuZHcucmVxdWVzdChcImR5bmFtaWNfZ2V0L2NvbXBhbnlfcGFwcC9nZXRfc2l0ZXVzZXJfZGF0YVwiLHtpZDp0aGlzLmdldFBsYXlJZCgpfSl9fSx7a2V5OlwiZGlzcGF0Y2hQcml6ZVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOjA7cmV0dXJuIHRoaXMuX2NoZWNrKCksdGhpcy5kdy5yZXF1ZXN0KFwiZHluYW1pY19wb3N0L2NvbXBhbnlfcGFwcC9kaXNwYXRjaF9wcml6ZVwiLHtpZDp0aGlzLmdldFBsYXlJZCgpLHNjb3JlOnR9KX19XSksdH0oKSx5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChuLGUpe2goKSh0aGlzLHQpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwicGxhdGZvcm1cIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6XCJkd2FwcFwifSksdGhpcy5kdz1uLHRoaXMuc2xpZGU9ZSx0aGlzLnBsYXk9bmV3IGQobixlKX1yZXR1cm4gdigpKHQsW3trZXk6XCJpc1VzZXJMb2dpblwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9ZigpKHUuYS5tYXJrKGZ1bmN0aW9uIHQoKXt2YXIgbj10aGlzO3JldHVybiB1LmEud3JhcChmdW5jdGlvbih0KXtmb3IoOzspc3dpdGNoKHQucHJldj10Lm5leHQpe2Nhc2UgMDpyZXR1cm4gdC5hYnJ1cHQoXCJyZXR1cm5cIixuZXcgYy5hKGZ1bmN0aW9uKHQsZSl7dmFyIHI9bi5kdy5nZXRTdG9yYWdlU3luYyhcImR3YXBwOmluc3RhbGxhdGlvblwiKXx8e307dChCb29sZWFuKHIuc2l0ZXVzZXJfdG9rZW4pKX0pKTtjYXNlIDE6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0sdCx0aGlzKX0pKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fSgpfSx7a2V5Olwid3hHb3RvTG9naW5cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWkoKSh0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4rXCI9XCIrdFtuXX0pLmpvaW4oXCImXCIpLGU9bj9cIj9cIituOlwiXCI7dGhpcy5kdy5nb1RvSHJlZihcImFjY291bnQtbG9naW5cIitlKX19LHtrZXk6XCJ3eExvZ2luXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuISEodGhpcy5kdy5nZXRTdG9yYWdlU3luYyhcImR3YXBwOmluc3RhbGxhdGlvblwiKXx8e30pLnNpdGV1c2VyX3Rva2VufHwodGhpcy53eEdvdG9Mb2dpbih0KSwhMSl9fSx7a2V5OlwiaXNBZG1pbkxvZ2luXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1mKCkodS5hLm1hcmsoZnVuY3Rpb24gdCgpe3ZhciBuPXRoaXM7cmV0dXJuIHUuYS53cmFwKGZ1bmN0aW9uKHQpe2Zvcig7Oylzd2l0Y2godC5wcmV2PXQubmV4dCl7Y2FzZSAwOnJldHVybiB0LmFicnVwdChcInJldHVyblwiLG5ldyBjLmEoZnVuY3Rpb24odCxlKXt2YXIgcj1uLmR3LmdldFN0b3JhZ2VTeW5jKFwiZHdhcHA6aW5zdGFsbGF0aW9uXCIpfHx7fTt0KEJvb2xlYW4oci51c2VyX3Rva2VuKSl9KSk7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiB0LnN0b3AoKX19LHQsdGhpcyl9KSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0se2tleTpcInd4R290b0FkbWluTG9naW5cIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWkoKSh0KS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG4rXCI9XCIrdFtuXX0pLmpvaW4oXCImXCIpLGU9bj9cIj9cIituOlwiXCI7dGhpcy5kdy5nb1RvSHJlZihcInBsdWdpbi11c2VybG9naW5cIitlKX19LHtrZXk6XCJ3eEFkbWluTG9naW5cIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4hISh0aGlzLmR3LmdldFN0b3JhZ2VTeW5jKFwiZHdhcHA6aW5zdGFsbGF0aW9uXCIpfHx7fSkudXNlcl90b2tlbnx8KHRoaXMud3hHb3RvQWRtaW5Mb2dpbih0KSwhMSl9fSx7a2V5Olwid3hBcHBMb2dpblwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuITB9fSx7a2V5OlwiZ2V0UGFwcFNsdWdcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNsaWRlLnNsdWd8fHRoaXMuc2xpZGUubWV0YS5wYXBwX3NsdWd9fSx7a2V5OlwiZ2V0UGFnZVBhcmFtc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZHcucXVlcnl9fSx7a2V5OlwiZ2V0TWFzdGVyUGFnZXRlbXBsYXRlSWRcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNsaWRlLm1hc3Rlcl9wYWdldGVtcGxhdGVfaWR8fHBhcnNlSW50KHRoaXMuc2xpZGUudHlwZSl9fSx7a2V5OlwiYnVpbGRQYXBwVXJsXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGU9dGhpcy5nZXRQYXBwU2x1ZygpLHI9bj9pKCkobikubWFwKGZ1bmN0aW9uKHQpe3JldHVyblwiXCIuY29uY2F0KHQsXCI9XCIpLmNvbmNhdChlbmNvZGVVUklDb21wb25lbnQoblt0XSkpfSkuam9pbihcIiZcIik6XCJcIjtyZXR1cm5cImFwcF9cIi5jb25jYXQoZSxcIi1cIikuY29uY2F0KHQpLmNvbmNhdChyP1wiP1wiK3I6XCJcIil9fSx7a2V5OlwiaXNcIix2YWx1ZTpmdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZVwibWFzdGVyXCI6cmV0dXJuISF0aGlzLnNsaWRlLnNsdWc7Y2FzZVwic2xhdmVcIjpyZXR1cm4hIXRoaXMuc2xpZGUubWFzdGVyX3BhZ2V0ZW1wbGF0ZV9pZDtkZWZhdWx0OmNvbnNvbGUud2FybihcIkFwcFByb3h5IGVycm9yOiBvbmx5IG1hc3Rlci9zbGF2ZSBpcyBzdXBwb3J0XCIpfX19LHtrZXk6XCJnZXREYXRhc2V0SWRcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuc2xpZGUubWFzdGVyX2RhdGFzZXRfaWQpcmV0dXJuIHRoaXMuc2xpZGUubWFzdGVyX2RhdGFzZXRfaWQ7aWYoIXRoaXMuc2xpZGUuZGF0YXNldF9pZCl0aHJvdyBuZXcgRXJyb3IoXCJBcHBQcm94eSBlcnJvcjogZGF0YXNldCBpcyByZXF1aXJlZC5cIik7cmV0dXJuIHRoaXMuc2xpZGUuZGF0YXNldF9pZH19LHtrZXk6XCJnZXRSb3dzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHQuZGF0YXNldF9pZD10aGlzLmdldERhdGFzZXRJZCgpLHRoaXMuZHcuZmV0Y2goXCJwb3N0L2RhdGFzZXRyb3cvZ2V0X3Jvd3NcIix0KX19LHtrZXk6XCJnZXRRdWVyeVJvd3NcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdC5kYXRhc2V0X2lkPXRoaXMuZ2V0RGF0YXNldElkKCksdGhpcy5kdy5mZXRjaChcInBvc3QvZGF0YXNldHF1ZXJ5L2dldF9yb3dzXCIsdCl9fSx7a2V5OlwicXVlcnlcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRSb3dzKHtxdWVyeTp0fSl9fSx7a2V5OlwiY3JlYXRlUm93XCIsdmFsdWU6ZnVuY3Rpb24odCxuKXt2YXIgZT17ZGF0YTpuLGlzX2FkbWluOiExLGRhdGFzZXRfaWQ6dGhpcy5nZXREYXRhc2V0SWQoKSxkYXRhc2V0dGFibGU6dH07cmV0dXJuIHRoaXMuZHcuZmV0Y2goXCJwb3N0L2RhdGFzZXRyb3cvY3JlYXRlX3Jvd1wiLGUpfX0se2tleTpcInVwZGF0ZVJvd1wiLHZhbHVlOmZ1bmN0aW9uKHQsbil7dmFyIGU9e2RhdGE6bixpc19hZG1pbjohMSxkYXRhc2V0X2lkOnRoaXMuZ2V0RGF0YXNldElkKCksZGF0YXNldHJvdzp0fTtyZXR1cm4gdGhpcy5kdy5mZXRjaChcInBvc3QvZGF0YXNldHJvdy91cGRhdGVfcm93XCIsZSl9fSx7a2V5OlwicmVtb3ZlUm93XCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49e2lzX2FkbWluOiExLGRhdGFzZXRfaWQ6dGhpcy5nZXREYXRhc2V0SWQoKSxkYXRhc2V0cm93OnR9O3JldHVybiB0aGlzLmR3LmZldGNoKFwicG9zdC9kYXRhc2V0cm93L3JlbW92ZV9yb3dcIixuKX19LHtrZXk6XCJydW5cIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbj10aGlzLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LHI9e2lzX2FkbWluOiExLHBhZ2V0ZW1wbGF0ZV9pZDp0aGlzLnNsaWRlLm1hc3Rlcl9wYWdldGVtcGxhdGVfaWR8fHBhcnNlSW50KHRoaXMuc2xpZGUudHlwZSksZGF0YXNldF9pZDp0aGlzLmdldERhdGFzZXRJZCgpLGFjdGlvbjp0LGt3YXJnczplfTtyZXR1cm4gbmV3IGMuYShmdW5jdGlvbihlLGkpe24uZHcuZmV0Y2goXCJwb3N0L2Njb2RlL3J1bl9jY29kZVwiLHIpLnRoZW4oZnVuY3Rpb24obil7XCJzdWNjZXNzXCI9PT1uLmRhdGEuc3RhdHVzP2Uobi5kYXRhLnJlc3VsdCk6KGNvbnNvbGUuZXJyb3IoXCJDY29kZSBcIi5jb25jYXQodCxcIiBlcnJvcjogXCIpLmNvbmNhdChuLmRhdGEubWVzc2FnZSkpLGkobmV3IEVycm9yKSl9KX0pfX1dKSx0fSgpfSxmdW5jdGlvbih0LG4sZSl7dC5leHBvcnRzPWUoNDQzKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjkpO3QuZXhwb3J0cz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm5cIkFycmF5XCI9PXIodCl9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg1NCksaT1lKDIwOCkuZixvPXt9LnRvU3RyaW5nLHU9XCJvYmplY3RcIj09dHlwZW9mIHdpbmRvdyYmd2luZG93JiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcz9PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh3aW5kb3cpOltdLGE9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBpKHQpfWNhdGNoKHQpe3JldHVybiB1LnNsaWNlKCl9fTt0LmV4cG9ydHMuZj1mdW5jdGlvbih0KXtyZXR1cm4gdSYmXCJbb2JqZWN0IFdpbmRvd11cIj09by5jYWxsKHQpP2EodCk6aShyKHQpKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDE5MSksaT1lKDEzNikuY29uY2F0KFwibGVuZ3RoXCIsXCJwcm90b3R5cGVcIik7bi5mPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzfHxmdW5jdGlvbih0KXtyZXR1cm4gcih0LGkpfX0sZnVuY3Rpb24odCxuLGUpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gdC5leHBvcnRzPXI9aXx8ZnVuY3Rpb24odCl7Zm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl7dmFyIGU9YXJndW1lbnRzW25dO2Zvcih2YXIgciBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYodFtyXT1lW3JdKX1yZXR1cm4gdH0sci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9dmFyIGk9ZSg5Nik7dC5leHBvcnRzPXJ9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI2KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXtpZighcih0KXx8dC5fdCE9PW4pdGhyb3cgVHlwZUVycm9yKFwiSW5jb21wYXRpYmxlIHJlY2VpdmVyLCBcIituK1wiIHJlcXVpcmVkIVwiKTtyZXR1cm4gdH19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDIxMik7ZS5kKG4sXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5hfSksZS5kKG4sXCJiXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5ifSksZS5kKG4sXCJjXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5jfSksZS5kKG4sXCJkXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5lfSksZS5kKG4sXCJlXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5mfSksZS5kKG4sXCJmXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5pfSksZS5kKG4sXCJnXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5qfSksZS5kKG4sXCJoXCIsZnVuY3Rpb24oKXtyZXR1cm4gci5rfSk7ZSg0OTApfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gcih0KXtyZXR1cm4gbnVsbCE9PXQmJlwib2JqZWN0XCI9PT1wKCkodCl9ZnVuY3Rpb24gaSh0KXtyZXR1cm5cIltvYmplY3QgT2JqZWN0XVwiPT09bS5jYWxsKHQpfWZ1bmN0aW9uIG8oKXt9ZnVuY3Rpb24gdSh0KXtpZighXy50ZXN0KHQpKXt2YXIgbj10LnNwbGl0KFwiLlwiKTtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBlPTA7ZTxuLmxlbmd0aDtlKyspe2lmKCF0KXJldHVybjt0PXRbbltlXV19cmV0dXJuIHR9fX1mdW5jdGlvbiBhKHQsbil7cmV0dXJuIHcuY2FsbCh0LG4pfWZ1bmN0aW9uIGModCxuLGUscil7bCgpKHQsbix7dmFsdWU6ZSxlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBzKHQsbil7aWYodC5sZW5ndGgpe3ZhciBlPXQuaW5kZXhPZihuKTtpZihlPi0xKXJldHVybiB0LnNwbGljZShlLDEpfX1lLmQobixcImNcIixmdW5jdGlvbigpe3JldHVybiB2fSksZS5kKG4sXCJoXCIsZnVuY3Rpb24oKXtyZXR1cm4gZH0pLGUuZChuLFwiZVwiLGZ1bmN0aW9uKCl7cmV0dXJuIHl9KSxlLmQobixcImRcIixmdW5jdGlvbigpe3JldHVybiBnfSksbi5mPXIsbi5nPWksbi5pPW8sbi5qPXUsbi5iPWEsbi5hPWMsbi5rPXM7dmFyIGY9ZSgxMDApLGw9ZS5uKGYpLGg9ZSg2MikscD1lLm4oaCksdj1cIl9fcHJvdG9fX1wiaW57fSxkPWZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0fSx5PWZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0fSxnPUFycmF5LmlzQXJyYXksbT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLF89L1teXFx3LiRdLyx3PU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtPYmplY3QuZGVmaW5lUHJvcGVydHkobixcIl9fZXNNb2R1bGVcIix7dmFsdWU6ITB9KTt2YXIgcj1lKDIxNCk7bi5kZWZhdWx0PXIuYX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoNzQpLGk9ZS5uKHIpLG89ZSgyMTYpLHU9KGUubihvKSxlKDE1MykpLGE9KGUubih1KSxlKDg5KSksYz1lLm4oYSkscz1lKDE4OCksZj1lKDE5OCksbD1lKDIwNCksaD1lKDQ0MikscD1lKDQ1Miksdj1lKDE0NSk7bi5hPXtyZWdlbmVyYXRvclJ1bnRpbWU6aS5hLGV2ZW50czpjLmEsdXRpbHM6dixmaWx0ZXJzOnMuYSxEd01peGluOmYuYSxEd0FwcFByb3h5OmwuYSxidWlsZFBhZ2VDb25maWc6aC5hLGJ1aWxkRHc6cC5hfX0sZnVuY3Rpb24odCxuKXshZnVuY3Rpb24obil7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gZSh0LG4sZSxyKXt2YXIgbz1uJiZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIGk/bjppLHU9T2JqZWN0LmNyZWF0ZShvLnByb3RvdHlwZSksYT1uZXcgcChyfHxbXSk7cmV0dXJuIHUuX2ludm9rZT1zKHQsZSxhKSx1fWZ1bmN0aW9uIHIodCxuLGUpe3RyeXtyZXR1cm57dHlwZTpcIm5vcm1hbFwiLGFyZzp0LmNhbGwobixlKX19Y2F0Y2godCl7cmV0dXJue3R5cGU6XCJ0aHJvd1wiLGFyZzp0fX19ZnVuY3Rpb24gaSgpe31mdW5jdGlvbiBvKCl7fWZ1bmN0aW9uIHUoKXt9ZnVuY3Rpb24gYSh0KXtbXCJuZXh0XCIsXCJ0aHJvd1wiLFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obil7dFtuXT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faW52b2tlKG4sdCl9fSl9ZnVuY3Rpb24gYyh0KXtmdW5jdGlvbiBuKGUsaSxvLHUpe3ZhciBhPXIodFtlXSx0LGkpO2lmKFwidGhyb3dcIiE9PWEudHlwZSl7dmFyIGM9YS5hcmcscz1jLnZhbHVlO3JldHVybiBzJiZcIm9iamVjdFwiPT10eXBlb2YgcyYmbS5jYWxsKHMsXCJfX2F3YWl0XCIpP1Byb21pc2UucmVzb2x2ZShzLl9fYXdhaXQpLnRoZW4oZnVuY3Rpb24odCl7bihcIm5leHRcIix0LG8sdSl9LGZ1bmN0aW9uKHQpe24oXCJ0aHJvd1wiLHQsbyx1KX0pOlByb21pc2UucmVzb2x2ZShzKS50aGVuKGZ1bmN0aW9uKHQpe2MudmFsdWU9dCxvKGMpfSx1KX11KGEuYXJnKX1mdW5jdGlvbiBlKHQsZSl7ZnVuY3Rpb24gcigpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLGkpe24odCxlLHIsaSl9KX1yZXR1cm4gaT1pP2kudGhlbihyLHIpOnIoKX12YXIgaTt0aGlzLl9pbnZva2U9ZX1mdW5jdGlvbiBzKHQsbixlKXt2YXIgaT1QO3JldHVybiBmdW5jdGlvbihvLHUpe2lmKGk9PT1FKXRocm93IG5ldyBFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IHJ1bm5pbmdcIik7aWYoaT09PWope2lmKFwidGhyb3dcIj09PW8pdGhyb3cgdTtyZXR1cm4gZCgpfWZvcihlLm1ldGhvZD1vLGUuYXJnPXU7Oyl7dmFyIGE9ZS5kZWxlZ2F0ZTtpZihhKXt2YXIgYz1mKGEsZSk7aWYoYyl7aWYoYz09PUEpY29udGludWU7cmV0dXJuIGN9fWlmKFwibmV4dFwiPT09ZS5tZXRob2QpZS5zZW50PWUuX3NlbnQ9ZS5hcmc7ZWxzZSBpZihcInRocm93XCI9PT1lLm1ldGhvZCl7aWYoaT09PVApdGhyb3cgaT1qLGUuYXJnO2UuZGlzcGF0Y2hFeGNlcHRpb24oZS5hcmcpfWVsc2VcInJldHVyblwiPT09ZS5tZXRob2QmJmUuYWJydXB0KFwicmV0dXJuXCIsZS5hcmcpO2k9RTt2YXIgcz1yKHQsbixlKTtpZihcIm5vcm1hbFwiPT09cy50eXBlKXtpZihpPWUuZG9uZT9qOmsscy5hcmc9PT1BKWNvbnRpbnVlO3JldHVybnt2YWx1ZTpzLmFyZyxkb25lOmUuZG9uZX19XCJ0aHJvd1wiPT09cy50eXBlJiYoaT1qLGUubWV0aG9kPVwidGhyb3dcIixlLmFyZz1zLmFyZyl9fX1mdW5jdGlvbiBmKHQsbil7dmFyIGU9dC5pdGVyYXRvcltuLm1ldGhvZF07aWYoZT09PXkpe2lmKG4uZGVsZWdhdGU9bnVsbCxcInRocm93XCI9PT1uLm1ldGhvZCl7aWYodC5pdGVyYXRvci5yZXR1cm4mJihuLm1ldGhvZD1cInJldHVyblwiLG4uYXJnPXksZih0LG4pLFwidGhyb3dcIj09PW4ubWV0aG9kKSlyZXR1cm4gQTtuLm1ldGhvZD1cInRocm93XCIsbi5hcmc9bmV3IFR5cGVFcnJvcihcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIil9cmV0dXJuIEF9dmFyIGk9cihlLHQuaXRlcmF0b3Isbi5hcmcpO2lmKFwidGhyb3dcIj09PWkudHlwZSlyZXR1cm4gbi5tZXRob2Q9XCJ0aHJvd1wiLG4uYXJnPWkuYXJnLG4uZGVsZWdhdGU9bnVsbCxBO3ZhciBvPWkuYXJnO3JldHVybiBvP28uZG9uZT8oblt0LnJlc3VsdE5hbWVdPW8udmFsdWUsbi5uZXh0PXQubmV4dExvYyxcInJldHVyblwiIT09bi5tZXRob2QmJihuLm1ldGhvZD1cIm5leHRcIixuLmFyZz15KSxuLmRlbGVnYXRlPW51bGwsQSk6bzoobi5tZXRob2Q9XCJ0aHJvd1wiLG4uYXJnPW5ldyBUeXBlRXJyb3IoXCJpdGVyYXRvciByZXN1bHQgaXMgbm90IGFuIG9iamVjdFwiKSxuLmRlbGVnYXRlPW51bGwsQSl9ZnVuY3Rpb24gbCh0KXt2YXIgbj17dHJ5TG9jOnRbMF19OzEgaW4gdCYmKG4uY2F0Y2hMb2M9dFsxXSksMiBpbiB0JiYobi5maW5hbGx5TG9jPXRbMl0sbi5hZnRlckxvYz10WzNdKSx0aGlzLnRyeUVudHJpZXMucHVzaChuKX1mdW5jdGlvbiBoKHQpe3ZhciBuPXQuY29tcGxldGlvbnx8e307bi50eXBlPVwibm9ybWFsXCIsZGVsZXRlIG4uYXJnLHQuY29tcGxldGlvbj1ufWZ1bmN0aW9uIHAodCl7dGhpcy50cnlFbnRyaWVzPVt7dHJ5TG9jOlwicm9vdFwifV0sdC5mb3JFYWNoKGwsdGhpcyksdGhpcy5yZXNldCghMCl9ZnVuY3Rpb24gdih0KXtpZih0KXt2YXIgbj10W3ddO2lmKG4pcmV0dXJuIG4uY2FsbCh0KTtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0Lm5leHQpcmV0dXJuIHQ7aWYoIWlzTmFOKHQubGVuZ3RoKSl7dmFyIGU9LTEscj1mdW5jdGlvbiBuKCl7Zm9yKDsrK2U8dC5sZW5ndGg7KWlmKG0uY2FsbCh0LGUpKXJldHVybiBuLnZhbHVlPXRbZV0sbi5kb25lPSExLG47cmV0dXJuIG4udmFsdWU9eSxuLmRvbmU9ITAsbn07cmV0dXJuIHIubmV4dD1yfX1yZXR1cm57bmV4dDpkfX1mdW5jdGlvbiBkKCl7cmV0dXJue3ZhbHVlOnksZG9uZTohMH19dmFyIHksZz1PYmplY3QucHJvdG90eXBlLG09Zy5oYXNPd25Qcm9wZXJ0eSxfPVwiZnVuY3Rpb25cIj09dHlwZW9mIFN5bWJvbD9TeW1ib2w6e30sdz1fLml0ZXJhdG9yfHxcIkBAaXRlcmF0b3JcIixiPV8uYXN5bmNJdGVyYXRvcnx8XCJAQGFzeW5jSXRlcmF0b3JcIix4PV8udG9TdHJpbmdUYWd8fFwiQEB0b1N0cmluZ1RhZ1wiLFM9XCJvYmplY3RcIj09dHlwZW9mIHQsTz1uLnJlZ2VuZXJhdG9yUnVudGltZTtpZihPKXJldHVybiB2b2lkKFMmJih0LmV4cG9ydHM9TykpO089bi5yZWdlbmVyYXRvclJ1bnRpbWU9Uz90LmV4cG9ydHM6e30sTy53cmFwPWU7dmFyIFA9XCJzdXNwZW5kZWRTdGFydFwiLGs9XCJzdXNwZW5kZWRZaWVsZFwiLEU9XCJleGVjdXRpbmdcIixqPVwiY29tcGxldGVkXCIsQT17fSxNPXt9O01bd109ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc307dmFyIFQ9T2JqZWN0LmdldFByb3RvdHlwZU9mLEY9VCYmVChUKHYoW10pKSk7RiYmRiE9PWcmJm0uY2FsbChGLHcpJiYoTT1GKTt2YXIgTD11LnByb3RvdHlwZT1pLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKE0pO28ucHJvdG90eXBlPUwuY29uc3RydWN0b3I9dSx1LmNvbnN0cnVjdG9yPW8sdVt4XT1vLmRpc3BsYXlOYW1lPVwiR2VuZXJhdG9yRnVuY3Rpb25cIixPLmlzR2VuZXJhdG9yRnVuY3Rpb249ZnVuY3Rpb24odCl7dmFyIG49XCJmdW5jdGlvblwiPT10eXBlb2YgdCYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4hIW4mJihuPT09b3x8XCJHZW5lcmF0b3JGdW5jdGlvblwiPT09KG4uZGlzcGxheU5hbWV8fG4ubmFtZSkpfSxPLm1hcms9ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YodCx1KToodC5fX3Byb3RvX189dSx4IGluIHR8fCh0W3hdPVwiR2VuZXJhdG9yRnVuY3Rpb25cIikpLHQucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTCksdH0sTy5hd3JhcD1mdW5jdGlvbih0KXtyZXR1cm57X19hd2FpdDp0fX0sYShjLnByb3RvdHlwZSksYy5wcm90b3R5cGVbYl09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sTy5Bc3luY0l0ZXJhdG9yPWMsTy5hc3luYz1mdW5jdGlvbih0LG4scixpKXt2YXIgbz1uZXcgYyhlKHQsbixyLGkpKTtyZXR1cm4gTy5pc0dlbmVyYXRvckZ1bmN0aW9uKG4pP286by5uZXh0KCkudGhlbihmdW5jdGlvbih0KXtyZXR1cm4gdC5kb25lP3QudmFsdWU6by5uZXh0KCl9KX0sYShMKSxMW3hdPVwiR2VuZXJhdG9yXCIsTFt3XT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxMLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuXCJbb2JqZWN0IEdlbmVyYXRvcl1cIn0sTy5rZXlzPWZ1bmN0aW9uKHQpe3ZhciBuPVtdO2Zvcih2YXIgZSBpbiB0KW4ucHVzaChlKTtyZXR1cm4gbi5yZXZlcnNlKCksZnVuY3Rpb24gZSgpe2Zvcig7bi5sZW5ndGg7KXt2YXIgcj1uLnBvcCgpO2lmKHIgaW4gdClyZXR1cm4gZS52YWx1ZT1yLGUuZG9uZT0hMSxlfXJldHVybiBlLmRvbmU9ITAsZX19LE8udmFsdWVzPXYscC5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnAscmVzZXQ6ZnVuY3Rpb24odCl7aWYodGhpcy5wcmV2PTAsdGhpcy5uZXh0PTAsdGhpcy5zZW50PXRoaXMuX3NlbnQ9eSx0aGlzLmRvbmU9ITEsdGhpcy5kZWxlZ2F0ZT1udWxsLHRoaXMubWV0aG9kPVwibmV4dFwiLHRoaXMuYXJnPXksdGhpcy50cnlFbnRyaWVzLmZvckVhY2goaCksIXQpZm9yKHZhciBuIGluIHRoaXMpXCJ0XCI9PT1uLmNoYXJBdCgwKSYmbS5jYWxsKHRoaXMsbikmJiFpc05hTigrbi5zbGljZSgxKSkmJih0aGlzW25dPXkpfSxzdG9wOmZ1bmN0aW9uKCl7dGhpcy5kb25lPSEwO3ZhciB0PXRoaXMudHJ5RW50cmllc1swXSxuPXQuY29tcGxldGlvbjtpZihcInRocm93XCI9PT1uLnR5cGUpdGhyb3cgbi5hcmc7cmV0dXJuIHRoaXMucnZhbH0sZGlzcGF0Y2hFeGNlcHRpb246ZnVuY3Rpb24odCl7ZnVuY3Rpb24gbihuLHIpe3JldHVybiBvLnR5cGU9XCJ0aHJvd1wiLG8uYXJnPXQsZS5uZXh0PW4sciYmKGUubWV0aG9kPVwibmV4dFwiLGUuYXJnPXkpLCEhcn1pZih0aGlzLmRvbmUpdGhyb3cgdDtmb3IodmFyIGU9dGhpcyxyPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtyPj0wOy0tcil7dmFyIGk9dGhpcy50cnlFbnRyaWVzW3JdLG89aS5jb21wbGV0aW9uO2lmKFwicm9vdFwiPT09aS50cnlMb2MpcmV0dXJuIG4oXCJlbmRcIik7aWYoaS50cnlMb2M8PXRoaXMucHJldil7dmFyIHU9bS5jYWxsKGksXCJjYXRjaExvY1wiKSxhPW0uY2FsbChpLFwiZmluYWxseUxvY1wiKTtpZih1JiZhKXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKTtpZih0aGlzLnByZXY8aS5maW5hbGx5TG9jKXJldHVybiBuKGkuZmluYWxseUxvYyl9ZWxzZSBpZih1KXtpZih0aGlzLnByZXY8aS5jYXRjaExvYylyZXR1cm4gbihpLmNhdGNoTG9jLCEwKX1lbHNle2lmKCFhKXRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO2lmKHRoaXMucHJldjxpLmZpbmFsbHlMb2MpcmV0dXJuIG4oaS5maW5hbGx5TG9jKX19fX0sYWJydXB0OmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtlPj0wOy0tZSl7dmFyIHI9dGhpcy50cnlFbnRyaWVzW2VdO2lmKHIudHJ5TG9jPD10aGlzLnByZXYmJm0uY2FsbChyLFwiZmluYWxseUxvY1wiKSYmdGhpcy5wcmV2PHIuZmluYWxseUxvYyl7dmFyIGk9cjticmVha319aSYmKFwiYnJlYWtcIj09PXR8fFwiY29udGludWVcIj09PXQpJiZpLnRyeUxvYzw9biYmbjw9aS5maW5hbGx5TG9jJiYoaT1udWxsKTt2YXIgbz1pP2kuY29tcGxldGlvbjp7fTtyZXR1cm4gby50eXBlPXQsby5hcmc9bixpPyh0aGlzLm1ldGhvZD1cIm5leHRcIix0aGlzLm5leHQ9aS5maW5hbGx5TG9jLEEpOnRoaXMuY29tcGxldGUobyl9LGNvbXBsZXRlOmZ1bmN0aW9uKHQsbil7aWYoXCJ0aHJvd1wiPT09dC50eXBlKXRocm93IHQuYXJnO3JldHVyblwiYnJlYWtcIj09PXQudHlwZXx8XCJjb250aW51ZVwiPT09dC50eXBlP3RoaXMubmV4dD10LmFyZzpcInJldHVyblwiPT09dC50eXBlPyh0aGlzLnJ2YWw9dGhpcy5hcmc9dC5hcmcsdGhpcy5tZXRob2Q9XCJyZXR1cm5cIix0aGlzLm5leHQ9XCJlbmRcIik6XCJub3JtYWxcIj09PXQudHlwZSYmbiYmKHRoaXMubmV4dD1uKSxBfSxmaW5pc2g6ZnVuY3Rpb24odCl7Zm9yKHZhciBuPXRoaXMudHJ5RW50cmllcy5sZW5ndGgtMTtuPj0wOy0tbil7dmFyIGU9dGhpcy50cnlFbnRyaWVzW25dO2lmKGUuZmluYWxseUxvYz09PXQpcmV0dXJuIHRoaXMuY29tcGxldGUoZS5jb21wbGV0aW9uLGUuYWZ0ZXJMb2MpLGgoZSksQX19LGNhdGNoOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj10aGlzLnRyeUVudHJpZXMubGVuZ3RoLTE7bj49MDstLW4pe3ZhciBlPXRoaXMudHJ5RW50cmllc1tuXTtpZihlLnRyeUxvYz09PXQpe3ZhciByPWUuY29tcGxldGlvbjtpZihcInRocm93XCI9PT1yLnR5cGUpe3ZhciBpPXIuYXJnO2goZSl9cmV0dXJuIGl9fXRocm93IG5ldyBFcnJvcihcImlsbGVnYWwgY2F0Y2ggYXR0ZW1wdFwiKX0sZGVsZWdhdGVZaWVsZDpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHRoaXMuZGVsZWdhdGU9e2l0ZXJhdG9yOnYodCkscmVzdWx0TmFtZTpuLG5leHRMb2M6ZX0sXCJuZXh0XCI9PT10aGlzLm1ldGhvZCYmKHRoaXMuYXJnPXkpLEF9fX0oZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKXx8RnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpKX0sZnVuY3Rpb24odCxuLGUpe2UoMjE3KSxlKDIxOSksZSgyMjApLGUoMjIxKSxlKDIyMiksZSgyMjMpLGUoMjI0KSxlKDIyNSksZSgyMjYpLGUoMjI3KSxlKDIyOCksZSgyMjkpLGUoMjMwKSxlKDIzMSksZSgyMzIpLGUoMjMzKSxlKDIzNSksZSgyMzYpLGUoMjM3KSxlKDIzOCksZSgyMzkpLGUoMjQwKSxlKDI0MSksZSgyNDIpLGUoMjQzKSxlKDI0NCksZSgyNDUpLGUoMjQ2KSxlKDI0NyksZSgyNDgpLGUoMjQ5KSxlKDI1MCksZSgyNTEpLGUoMjUyKSxlKDI1MyksZSgyNTQpLGUoMjU1KSxlKDI1NiksZSgyNTcpLGUoMjU4KSxlKDI1OSksZSgyNjApLGUoMjYxKSxlKDI2MiksZSgyNjMpLGUoMjY0KSxlKDI2NSksZSgyNjYpLGUoMjY3KSxlKDI2OCksZSgyNjkpLGUoMjcwKSxlKDI3MSksZSgyNzIpLGUoMjczKSxlKDI3NCksZSgyNzUpLGUoMjc2KSxlKDI3NyksZSgyNzgpLGUoMjc5KSxlKDI4MCksZSgyODEpLGUoMjgyKSxlKDI4MyksZSgyODQpLGUoMjg1KSxlKDI4NiksZSgyODcpLGUoMjg4KSxlKDI4OSksZSgyOTApLGUoMjkxKSxlKDI5MiksZSgyOTMpLGUoMjk0KSxlKDI5NSksZSgyOTcpLGUoMjk4KSxlKDMwMCksZSgzMDEpLGUoMzAyKSxlKDMwMyksZSgzMDQpLGUoMzA1KSxlKDMwNiksZSgzMDgpLGUoMzA5KSxlKDMxMCksZSgzMTEpLGUoMzEyKSxlKDMxMyksZSgzMTQpLGUoMzE1KSxlKDMxNiksZSgzMTcpLGUoMzE4KSxlKDMxOSksZSgzMjApLGUoMTIyKSxlKDMyMSksZSgzMjIpLGUoMTcyKSxlKDMyMyksZSgzMjQpLGUoMzI1KSxlKDMyNiksZSgzMjcpLGUoMTc1KSxlKDE3NyksZSgxNzgpLGUoMzI4KSxlKDMyOSksZSgzMzApLGUoMzMxKSxlKDMzMiksZSgzMzMpLGUoMzM0KSxlKDMzNSksZSgzMzYpLGUoMzM3KSxlKDMzOCksZSgzMzkpLGUoMzQwKSxlKDM0MSksZSgzNDIpLGUoMzQzKSxlKDM0NCksZSgzNDUpLGUoMzQ2KSxlKDM0NyksZSgzNDgpLGUoMzQ5KSxlKDM1MCksZSgzNTEpLGUoMzUyKSxlKDM1MyksZSgzNTQpLGUoMzU1KSxlKDM1NiksZSgzNTcpLGUoMzU4KSxlKDM1OSksZSgzNjApLGUoMzYxKSxlKDM2MiksZSgzNjMpLGUoMzY0KSxlKDM2NSksZSgzNjYpLGUoMzY3KSxlKDM2OCksZSgzNjkpLGUoMzcwKSxlKDM3MSksZSgzNzIpLGUoMzczKSxlKDM3NCksZSgzNzUpLGUoMzc2KSxlKDM3NyksZSgzNzgpLGUoMzc5KSxlKDM4MCksZSgzODEpLGUoMzgyKSxlKDM4MyksZSgzODQpLGUoMzg1KSxlKDM4NiksZSgzODcpLGUoMzg4KSxlKDM4OSksZSgzOTApLGUoMzkxKSxlKDM5MiksZSgzOTMpLGUoMzk0KSxlKDM5NSksZSgzOTYpLGUoMzk3KSxlKDM5OCksZSgzOTkpLGUoNDAwKSxlKDQwMSksZSg0MDIpLGUoNDAzKSxlKDQwNCksZSg0MDUpLGUoNDA2KSxlKDQwNyksZSg0MDgpLGUoNDA5KSxlKDQxMCksZSg0MTEpLGUoNDEyKSx0LmV4cG9ydHM9ZSgzNCl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDIpLGk9ZSgxNSksbz1lKDcpLHU9ZSgwKSxhPWUoMTcpLGM9ZSgzOCkuS0VZLHM9ZSgzKSxmPWUoNzUpLGw9ZSg1NSksaD1lKDQyKSxwPWUoNSksdj1lKDE1NSksZD1lKDEwMikseT1lKDIxOCksZz1lKDc4KSxtPWUoMSksXz1lKDQpLHc9ZSgxOSksYj1lKDI3KSx4PWUoNDEpLFM9ZSg0NiksTz1lKDE1OCksUD1lKDIwKSxrPWUoOCksRT1lKDQ0KSxqPVAuZixBPWsuZixNPU8uZixUPXIuU3ltYm9sLEY9ci5KU09OLEw9RiYmRi5zdHJpbmdpZnksST1cInByb3RvdHlwZVwiLE49cChcIl9oaWRkZW5cIiksRD1wKFwidG9QcmltaXRpdmVcIiksUj17fS5wcm9wZXJ0eUlzRW51bWVyYWJsZSxDPWYoXCJzeW1ib2wtcmVnaXN0cnlcIiksVT1mKFwic3ltYm9sc1wiKSxHPWYoXCJvcC1zeW1ib2xzXCIpLFc9T2JqZWN0W0ldLFY9XCJmdW5jdGlvblwiPT10eXBlb2YgVCxCPXIuUU9iamVjdCxxPSFCfHwhQltJXXx8IUJbSV0uZmluZENoaWxkLHo9byYmcyhmdW5jdGlvbigpe3JldHVybiA3IT1TKEEoe30sXCJhXCIse2dldDpmdW5jdGlvbigpe3JldHVybiBBKHRoaXMsXCJhXCIse3ZhbHVlOjd9KS5hfX0pKS5hfSk/ZnVuY3Rpb24odCxuLGUpe3ZhciByPWooVyxuKTtyJiZkZWxldGUgV1tuXSxBKHQsbixlKSxyJiZ0IT09VyYmQShXLG4scil9OkEsSD1mdW5jdGlvbih0KXt2YXIgbj1VW3RdPVMoVFtJXSk7cmV0dXJuIG4uX2s9dCxufSxKPVYmJlwic3ltYm9sXCI9PXR5cGVvZiBULml0ZXJhdG9yP2Z1bmN0aW9uKHQpe3JldHVyblwic3ltYm9sXCI9PXR5cGVvZiB0fTpmdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIFR9LEs9ZnVuY3Rpb24odCxuLGUpe3JldHVybiB0PT09VyYmSyhHLG4sZSksbSh0KSxuPWIobiwhMCksbShlKSxpKFUsbik/KGUuZW51bWVyYWJsZT8oaSh0LE4pJiZ0W05dW25dJiYodFtOXVtuXT0hMSksZT1TKGUse2VudW1lcmFibGU6eCgwLCExKX0pKTooaSh0LE4pfHxBKHQsTix4KDEse30pKSx0W05dW25dPSEwKSx6KHQsbixlKSk6QSh0LG4sZSl9LFk9ZnVuY3Rpb24odCxuKXttKHQpO2Zvcih2YXIgZSxyPXkobj13KG4pKSxpPTAsbz1yLmxlbmd0aDtvPmk7KUsodCxlPXJbaSsrXSxuW2VdKTtyZXR1cm4gdH0sJD1mdW5jdGlvbih0LG4pe3JldHVybiB2b2lkIDA9PT1uP1ModCk6WShTKHQpLG4pfSxRPWZ1bmN0aW9uKHQpe3ZhciBuPVIuY2FsbCh0aGlzLHQ9Yih0LCEwKSk7cmV0dXJuISh0aGlzPT09VyYmaShVLHQpJiYhaShHLHQpKSYmKCEobnx8IWkodGhpcyx0KXx8IWkoVSx0KXx8aSh0aGlzLE4pJiZ0aGlzW05dW3RdKXx8bil9LFg9ZnVuY3Rpb24odCxuKXtpZih0PXcodCksbj1iKG4sITApLHQhPT1XfHwhaShVLG4pfHxpKEcsbikpe3ZhciBlPWoodCxuKTtyZXR1cm4hZXx8IWkoVSxuKXx8aSh0LE4pJiZ0W05dW25dfHwoZS5lbnVtZXJhYmxlPSEwKSxlfX0sWj1mdW5jdGlvbih0KXtmb3IodmFyIG4sZT1NKHcodCkpLHI9W10sbz0wO2UubGVuZ3RoPm87KWkoVSxuPWVbbysrXSl8fG49PU58fG49PWN8fHIucHVzaChuKTtyZXR1cm4gcn0sdHQ9ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGU9dD09PVcscj1NKGU/Rzp3KHQpKSxvPVtdLHU9MDtyLmxlbmd0aD51OykhaShVLG49clt1KytdKXx8ZSYmIWkoVyxuKXx8by5wdXNoKFVbbl0pO3JldHVybiBvfTtWfHwoVD1mdW5jdGlvbigpe2lmKHRoaXMgaW5zdGFuY2VvZiBUKXRocm93IFR5cGVFcnJvcihcIlN5bWJvbCBpcyBub3QgYSBjb25zdHJ1Y3RvciFcIik7dmFyIHQ9aChhcmd1bWVudHMubGVuZ3RoPjA/YXJndW1lbnRzWzBdOnZvaWQgMCksbj1mdW5jdGlvbihlKXt0aGlzPT09VyYmbi5jYWxsKEcsZSksaSh0aGlzLE4pJiZpKHRoaXNbTl0sdCkmJih0aGlzW05dW3RdPSExKSx6KHRoaXMsdCx4KDEsZSkpfTtyZXR1cm4gbyYmcSYmeihXLHQse2NvbmZpZ3VyYWJsZTohMCxzZXQ6bn0pLEgodCl9LGEoVFtJXSxcInRvU3RyaW5nXCIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fa30pLFAuZj1YLGsuZj1LLGUoNDcpLmY9Ty5mPVosZSg2NCkuZj1RLGUoNzcpLmY9dHQsbyYmIWUoNDMpJiZhKFcsXCJwcm9wZXJ0eUlzRW51bWVyYWJsZVwiLFEsITApLHYuZj1mdW5jdGlvbih0KXtyZXR1cm4gSChwKHQpKX0pLHUodS5HK3UuVyt1LkYqIVYse1N5bWJvbDpUfSk7Zm9yKHZhciBudD1cImhhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzXCIuc3BsaXQoXCIsXCIpLGV0PTA7bnQubGVuZ3RoPmV0OylwKG50W2V0KytdKTtmb3IodmFyIHJ0PUUocC5zdG9yZSksaXQ9MDtydC5sZW5ndGg+aXQ7KWQocnRbaXQrK10pO3UodS5TK3UuRiohVixcIlN5bWJvbFwiLHtmb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGkoQyx0Kz1cIlwiKT9DW3RdOkNbdF09VCh0KX0sa2V5Rm9yOmZ1bmN0aW9uKHQpe2lmKCFKKHQpKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhIHN5bWJvbCFcIik7Zm9yKHZhciBuIGluIEMpaWYoQ1tuXT09PXQpcmV0dXJuIG59LHVzZVNldHRlcjpmdW5jdGlvbigpe3E9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe3E9ITF9fSksdSh1LlMrdS5GKiFWLFwiT2JqZWN0XCIse2NyZWF0ZTokLGRlZmluZVByb3BlcnR5OkssZGVmaW5lUHJvcGVydGllczpZLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjpYLGdldE93blByb3BlcnR5TmFtZXM6WixnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6dHR9KSxGJiZ1KHUuUyt1LkYqKCFWfHxzKGZ1bmN0aW9uKCl7dmFyIHQ9VCgpO3JldHVyblwiW251bGxdXCIhPUwoW3RdKXx8XCJ7fVwiIT1MKHthOnR9KXx8XCJ7fVwiIT1MKE9iamVjdCh0KSl9KSksXCJKU09OXCIse3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyPVt0XSxpPTE7YXJndW1lbnRzLmxlbmd0aD5pOylyLnB1c2goYXJndW1lbnRzW2krK10pO2lmKGU9bj1yWzFdLChfKG4pfHx2b2lkIDAhPT10KSYmIUoodCkpcmV0dXJuIGcobil8fChuPWZ1bmN0aW9uKHQsbil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKG49ZS5jYWxsKHRoaXMsdCxuKSksIUoobikpcmV0dXJuIG59KSxyWzFdPW4sTC5hcHBseShGLHIpfX0pLFRbSV1bRF18fGUoMTYpKFRbSV0sRCxUW0ldLnZhbHVlT2YpLGwoVCxcIlN5bWJvbFwiKSxsKE1hdGgsXCJNYXRoXCIsITApLGwoci5KU09OLFwiSlNPTlwiLCEwKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNDQpLGk9ZSg3Nyksbz1lKDY0KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG49cih0KSxlPWkuZjtpZihlKWZvcih2YXIgdSxhPWUodCksYz1vLmYscz0wO2EubGVuZ3RoPnM7KWMuY2FsbCh0LHU9YVtzKytdKSYmbi5wdXNoKHUpO3JldHVybiBufX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJPYmplY3RcIix7Y3JlYXRlOmUoNDYpfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TK3IuRiohZSg3KSxcIk9iamVjdFwiLHtkZWZpbmVQcm9wZXJ0eTplKDgpLmZ9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMrci5GKiFlKDcpLFwiT2JqZWN0XCIse2RlZmluZVByb3BlcnRpZXM6ZSgxNTcpfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDE5KSxpPWUoMjApLmY7ZSgzMCkoXCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JcIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBpKHIodCksbil9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEwKSxpPWUoMjEpO2UoMzApKFwiZ2V0UHJvdG90eXBlT2ZcIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShyKHQpKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTApLGk9ZSg0NCk7ZSgzMCkoXCJrZXlzXCIsZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGkocih0KSl9fSl9LGZ1bmN0aW9uKHQsbixlKXtlKDMwKShcImdldE93blByb3BlcnR5TmFtZXNcIixmdW5jdGlvbigpe3JldHVybiBlKDE1OCkuZn0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0KSxpPWUoMzgpLm9uRnJlZXplO2UoMzApKFwiZnJlZXplXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0JiZyKG4pP3QoaShuKSk6bn19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNCksaT1lKDM4KS5vbkZyZWV6ZTtlKDMwKShcInNlYWxcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQmJnIobik/dChpKG4pKTpufX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0KSxpPWUoMzgpLm9uRnJlZXplO2UoMzApKFwicHJldmVudEV4dGVuc2lvbnNcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQmJnIobik/dChpKG4pKTpufX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg0KTtlKDMwKShcImlzRnJvemVuXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiFyKG4pfHwhIXQmJnQobil9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDQpO2UoMzApKFwiaXNTZWFsZWRcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIXIobil8fCEhdCYmdChuKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNCk7ZSgzMCkoXCJpc0V4dGVuc2libGVcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuISFyKG4pJiYoIXR8fHQobikpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUytyLkYsXCJPYmplY3RcIix7YXNzaWduOmUoMTU5KX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk9iamVjdFwiLHtpczplKDIzNCl9KX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9T2JqZWN0LmlzfHxmdW5jdGlvbih0LG4pe3JldHVybiB0PT09bj8wIT09dHx8MS90PT0xL246dCE9dCYmbiE9bn19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiT2JqZWN0XCIse3NldFByb3RvdHlwZU9mOmUoMTA2KS5zZXR9KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoNjUpLGk9e307aVtlKDUpKFwidG9TdHJpbmdUYWdcIildPVwielwiLGkrXCJcIiE9XCJbb2JqZWN0IHpdXCImJmUoMTcpKE9iamVjdC5wcm90b3R5cGUsXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuXCJbb2JqZWN0IFwiK3IodGhpcykrXCJdXCJ9LCEwKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlAsXCJGdW5jdGlvblwiLHtiaW5kOmUoMTYwKX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg4KS5mLGk9RnVuY3Rpb24ucHJvdG90eXBlLG89L15cXHMqZnVuY3Rpb24gKFteIChdKikvLHU9XCJuYW1lXCI7dSBpbiBpfHxlKDcpJiZyKGksdSx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4oXCJcIit0aGlzKS5tYXRjaChvKVsxXX1jYXRjaCh0KXtyZXR1cm5cIlwifX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoNCksaT1lKDIxKSxvPWUoNSkoXCJoYXNJbnN0YW5jZVwiKSx1PUZ1bmN0aW9uLnByb3RvdHlwZTtvIGluIHV8fGUoOCkuZih1LG8se3ZhbHVlOmZ1bmN0aW9uKHQpe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIHRoaXN8fCFyKHQpKXJldHVybiExO2lmKCFyKHRoaXMucHJvdG90eXBlKSlyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXM7Zm9yKDt0PWkodCk7KWlmKHRoaXMucHJvdG90eXBlPT09dClyZXR1cm4hMDtyZXR1cm4hMX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDE2Mik7cihyLkcrci5GKihwYXJzZUludCE9aSkse3BhcnNlSW50Oml9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDE2Myk7cihyLkcrci5GKihwYXJzZUZsb2F0IT1pKSx7cGFyc2VGbG9hdDppfSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDIpLGk9ZSgxNSksbz1lKDIzKSx1PWUoMTA4KSxhPWUoMjcpLGM9ZSgzKSxzPWUoNDcpLmYsZj1lKDIwKS5mLGw9ZSg4KS5mLGg9ZSg1NikudHJpbSxwPVwiTnVtYmVyXCIsdj1yW3BdLGQ9dix5PXYucHJvdG90eXBlLGc9byhlKDQ2KSh5KSk9PXAsbT1cInRyaW1cImluIFN0cmluZy5wcm90b3R5cGUsXz1mdW5jdGlvbih0KXt2YXIgbj1hKHQsITEpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiBuJiZuLmxlbmd0aD4yKXtuPW0/bi50cmltKCk6aChuLDMpO3ZhciBlLHIsaSxvPW4uY2hhckNvZGVBdCgwKTtpZig0Mz09PW98fDQ1PT09byl7aWYoODg9PT0oZT1uLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1lKXJldHVybiBOYU59ZWxzZSBpZig0OD09PW8pe3N3aXRjaChuLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpyPTIsaT00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOnI9OCxpPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK259Zm9yKHZhciB1LGM9bi5zbGljZSgyKSxzPTAsZj1jLmxlbmd0aDtzPGY7cysrKWlmKCh1PWMuY2hhckNvZGVBdChzKSk8NDh8fHU+aSlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChjLHIpfX1yZXR1cm4rbn07aWYoIXYoXCIgMG8xXCIpfHwhdihcIjBiMVwiKXx8dihcIisweDFcIikpe3Y9ZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aDwxPzA6dCxlPXRoaXM7cmV0dXJuIGUgaW5zdGFuY2VvZiB2JiYoZz9jKGZ1bmN0aW9uKCl7eS52YWx1ZU9mLmNhbGwoZSl9KTpvKGUpIT1wKT91KG5ldyBkKF8obikpLGUsdik6XyhuKX07Zm9yKHZhciB3LGI9ZSg3KT9zKGQpOlwiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXJcIi5zcGxpdChcIixcIikseD0wO2IubGVuZ3RoPng7eCsrKWkoZCx3PWJbeF0pJiYhaSh2LHcpJiZsKHYsdyxmKGQsdykpO3YucHJvdG90eXBlPXkseS5jb25zdHJ1Y3Rvcj12LGUoMTcpKHIscCx2KX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgyOSksbz1lKDE2NCksdT1lKDEwOSksYT0xLi50b0ZpeGVkLGM9TWF0aC5mbG9vcixzPVswLDAsMCwwLDAsMF0sZj1cIk51bWJlci50b0ZpeGVkOiBpbmNvcnJlY3QgaW52b2NhdGlvbiFcIixsPVwiMFwiLGg9ZnVuY3Rpb24odCxuKXtmb3IodmFyIGU9LTEscj1uOysrZTw2OylyKz10KnNbZV0sc1tlXT1yJTFlNyxyPWMoci8xZTcpfSxwPWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj02LGU9MDstLW4+PTA7KWUrPXNbbl0sc1tuXT1jKGUvdCksZT1lJXQqMWU3fSx2PWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTYsbj1cIlwiOy0tdD49MDspaWYoXCJcIiE9PW58fDA9PT10fHwwIT09c1t0XSl7dmFyIGU9U3RyaW5nKHNbdF0pO249XCJcIj09PW4/ZTpuK3UuY2FsbChsLDctZS5sZW5ndGgpK2V9cmV0dXJuIG59LGQ9ZnVuY3Rpb24odCxuLGUpe3JldHVybiAwPT09bj9lOm4lMj09MT9kKHQsbi0xLGUqdCk6ZCh0KnQsbi8yLGUpfSx5PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0wLGU9dDtlPj00MDk2OyluKz0xMixlLz00MDk2O2Zvcig7ZT49Mjspbis9MSxlLz0yO3JldHVybiBufTtyKHIuUCtyLkYqKCEhYSYmKFwiMC4wMDBcIiE9PThlLTUudG9GaXhlZCgzKXx8XCIxXCIhPT0uOS50b0ZpeGVkKDApfHxcIjEuMjVcIiE9PTEuMjU1LnRvRml4ZWQoMil8fFwiMTAwMDAwMDAwMDAwMDAwMDEyOFwiIT09KDB4ZGUwYjZiM2E3NjQwMDgwKS50b0ZpeGVkKDApKXx8IWUoMykoZnVuY3Rpb24oKXthLmNhbGwoe30pfSkpLFwiTnVtYmVyXCIse3RvRml4ZWQ6ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGEsYz1vKHRoaXMsZikscz1pKHQpLGc9XCJcIixtPWw7aWYoczwwfHxzPjIwKXRocm93IFJhbmdlRXJyb3IoZik7aWYoYyE9YylyZXR1cm5cIk5hTlwiO2lmKGM8PS0xZTIxfHxjPj0xZTIxKXJldHVybiBTdHJpbmcoYyk7aWYoYzwwJiYoZz1cIi1cIixjPS1jKSxjPjFlLTIxKWlmKG49eShjKmQoMiw2OSwxKSktNjksZT1uPDA/YypkKDIsLW4sMSk6Yy9kKDIsbiwxKSxlKj00NTAzNTk5NjI3MzcwNDk2LChuPTUyLW4pPjApe2ZvcihoKDAsZSkscj1zO3I+PTc7KWgoMWU3LDApLHItPTc7Zm9yKGgoZCgxMCxyLDEpLDApLHI9bi0xO3I+PTIzOylwKDE8PDIzKSxyLT0yMztwKDE8PHIpLGgoMSwxKSxwKDIpLG09digpfWVsc2UgaCgwLGUpLGgoMTw8LW4sMCksbT12KCkrdS5jYWxsKGwscyk7cmV0dXJuIHM+MD8oYT1tLmxlbmd0aCxtPWcrKGE8PXM/XCIwLlwiK3UuY2FsbChsLHMtYSkrbTptLnNsaWNlKDAsYS1zKStcIi5cIittLnNsaWNlKGEtcykpKTptPWcrbSxtfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoMyksbz1lKDE2NCksdT0xLi50b1ByZWNpc2lvbjtyKHIuUCtyLkYqKGkoZnVuY3Rpb24oKXtyZXR1cm5cIjFcIiE9PXUuY2FsbCgxLHZvaWQgMCl9KXx8IWkoZnVuY3Rpb24oKXt1LmNhbGwoe30pfSkpLFwiTnVtYmVyXCIse3RvUHJlY2lzaW9uOmZ1bmN0aW9uKHQpe3ZhciBuPW8odGhpcyxcIk51bWJlciN0b1ByZWNpc2lvbjogaW5jb3JyZWN0IGludm9jYXRpb24hXCIpO3JldHVybiB2b2lkIDA9PT10P3UuY2FsbChuKTp1LmNhbGwobix0KX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJOdW1iZXJcIix7RVBTSUxPTjpNYXRoLnBvdygyLC01Mil9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDIpLmlzRmluaXRlO3Ioci5TLFwiTnVtYmVyXCIse2lzRmluaXRlOmZ1bmN0aW9uKHQpe3JldHVyblwibnVtYmVyXCI9PXR5cGVvZiB0JiZpKHQpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk51bWJlclwiLHtpc0ludGVnZXI6ZSgxNjUpfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiTnVtYmVyXCIse2lzTmFOOmZ1bmN0aW9uKHQpe3JldHVybiB0IT10fX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTY1KSxvPU1hdGguYWJzO3Ioci5TLFwiTnVtYmVyXCIse2lzU2FmZUludGVnZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGkodCkmJm8odCk8PTkwMDcxOTkyNTQ3NDA5OTF9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiTnVtYmVyXCIse01BWF9TQUZFX0lOVEVHRVI6OTAwNzE5OTI1NDc0MDk5MX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk51bWJlclwiLHtNSU5fU0FGRV9JTlRFR0VSOi05MDA3MTk5MjU0NzQwOTkxfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9ZSgxNjMpO3Ioci5TK3IuRiooTnVtYmVyLnBhcnNlRmxvYXQhPWkpLFwiTnVtYmVyXCIse3BhcnNlRmxvYXQ6aX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTYyKTtyKHIuUytyLkYqKE51bWJlci5wYXJzZUludCE9aSksXCJOdW1iZXJcIix7cGFyc2VJbnQ6aX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTY2KSxvPU1hdGguc3FydCx1PU1hdGguYWNvc2g7cihyLlMrci5GKiEodSYmNzEwPT1NYXRoLmZsb29yKHUoTnVtYmVyLk1BWF9WQUxVRSkpJiZ1KDEvMCk9PTEvMCksXCJNYXRoXCIse2Fjb3NoOmZ1bmN0aW9uKHQpe3JldHVybih0PSt0KTwxP05hTjp0Pjk0OTA2MjY1LjYyNDI1MTU2P01hdGgubG9nKHQpK01hdGguTE4yOmkodC0xK28odC0xKSpvKHQrMSkpfX0pfSxmdW5jdGlvbih0LG4sZSl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gaXNGaW5pdGUodD0rdCkmJjAhPXQ/dDwwPy1yKC10KTpNYXRoLmxvZyh0K01hdGguc3FydCh0KnQrMSkpOnR9dmFyIGk9ZSgwKSxvPU1hdGguYXNpbmg7aShpLlMraS5GKiEobyYmMS9vKDApPjApLFwiTWF0aFwiLHthc2luaDpyfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9TWF0aC5hdGFuaDtyKHIuUytyLkYqIShpJiYxL2koLTApPDApLFwiTWF0aFwiLHthdGFuaDpmdW5jdGlvbih0KXtyZXR1cm4gMD09KHQ9K3QpP3Q6TWF0aC5sb2coKDErdCkvKDEtdCkpLzJ9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9ZSgxMTApO3Ioci5TLFwiTWF0aFwiLHtjYnJ0OmZ1bmN0aW9uKHQpe3JldHVybiBpKHQ9K3QpKk1hdGgucG93KE1hdGguYWJzKHQpLDEvMyl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiTWF0aFwiLHtjbHozMjpmdW5jdGlvbih0KXtyZXR1cm4odD4+Pj0wKT8zMS1NYXRoLmZsb29yKE1hdGgubG9nKHQrLjUpKk1hdGguTE9HMkUpOjMyfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPU1hdGguZXhwO3Ioci5TLFwiTWF0aFwiLHtjb3NoOmZ1bmN0aW9uKHQpe3JldHVybihpKHQ9K3QpK2koLXQpKS8yfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTExKTtyKHIuUytyLkYqKGkhPU1hdGguZXhwbTEpLFwiTWF0aFwiLHtleHBtMTppfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiTWF0aFwiLHtmcm91bmQ6ZSgxNjcpfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9TWF0aC5hYnM7cihyLlMsXCJNYXRoXCIse2h5cG90OmZ1bmN0aW9uKHQsbil7Zm9yKHZhciBlLHIsbz0wLHU9MCxhPWFyZ3VtZW50cy5sZW5ndGgsYz0wO3U8YTspZT1pKGFyZ3VtZW50c1t1KytdKSxjPGU/KHI9Yy9lLG89bypyKnIrMSxjPWUpOmU+MD8ocj1lL2Msbys9cipyKTpvKz1lO3JldHVybiBjPT09MS8wPzEvMDpjKk1hdGguc3FydChvKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1NYXRoLmltdWw7cihyLlMrci5GKmUoMykoZnVuY3Rpb24oKXtyZXR1cm4tNSE9aSg0Mjk0OTY3Mjk1LDUpfHwyIT1pLmxlbmd0aH0pLFwiTWF0aFwiLHtpbXVsOmZ1bmN0aW9uKHQsbil7dmFyIGU9NjU1MzUscj0rdCxpPStuLG89ZSZyLHU9ZSZpO3JldHVybiAwfG8qdSsoKGUmcj4+PjE2KSp1K28qKGUmaT4+PjE2KTw8MTY+Pj4wKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJNYXRoXCIse2xvZzEwOmZ1bmN0aW9uKHQpe3JldHVybiBNYXRoLmxvZyh0KSpNYXRoLkxPRzEwRX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJNYXRoXCIse2xvZzFwOmUoMTY2KX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk1hdGhcIix7bG9nMjpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5sb2codCkvTWF0aC5MTjJ9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiTWF0aFwiLHtzaWduOmUoMTEwKX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTExKSxvPU1hdGguZXhwO3Ioci5TK3IuRiplKDMpKGZ1bmN0aW9uKCl7cmV0dXJuLTJlLTE3IT0hTWF0aC5zaW5oKC0yZS0xNyl9KSxcIk1hdGhcIix7c2luaDpmdW5jdGlvbih0KXtyZXR1cm4gTWF0aC5hYnModD0rdCk8MT8oaSh0KS1pKC10KSkvMjoobyh0LTEpLW8oLXQtMSkpKihNYXRoLkUvMil9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9ZSgxMTEpLG89TWF0aC5leHA7cihyLlMsXCJNYXRoXCIse3Rhbmg6ZnVuY3Rpb24odCl7dmFyIG49aSh0PSt0KSxlPWkoLXQpO3JldHVybiBuPT0xLzA/MTplPT0xLzA/LTE6KG4tZSkvKG8odCkrbygtdCkpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk1hdGhcIix7dHJ1bmM6ZnVuY3Rpb24odCl7cmV0dXJuKHQ+MD9NYXRoLmZsb29yOk1hdGguY2VpbCkodCl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9ZSg0NSksbz1TdHJpbmcuZnJvbUNoYXJDb2RlLHU9U3RyaW5nLmZyb21Db2RlUG9pbnQ7cihyLlMrci5GKighIXUmJjEhPXUubGVuZ3RoKSxcIlN0cmluZ1wiLHtmcm9tQ29kZVBvaW50OmZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPVtdLHI9YXJndW1lbnRzLmxlbmd0aCx1PTA7cj51Oyl7aWYobj0rYXJndW1lbnRzW3UrK10saShuLDExMTQxMTEpIT09bil0aHJvdyBSYW5nZUVycm9yKG4rXCIgaXMgbm90IGEgdmFsaWQgY29kZSBwb2ludFwiKTtlLnB1c2gobjw2NTUzNj9vKG4pOm8oNTUyOTYrKChuLT02NTUzNik+PjEwKSxuJTEwMjQrNTYzMjApKX1yZXR1cm4gZS5qb2luKFwiXCIpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTkpLG89ZSg5KTtyKHIuUyxcIlN0cmluZ1wiLHtyYXc6ZnVuY3Rpb24odCl7Zm9yKHZhciBuPWkodC5yYXcpLGU9byhuLmxlbmd0aCkscj1hcmd1bWVudHMubGVuZ3RoLHU9W10sYT0wO2U+YTspdS5wdXNoKFN0cmluZyhuW2ErK10pKSxhPHImJnUucHVzaChTdHJpbmcoYXJndW1lbnRzW2FdKSk7cmV0dXJuIHUuam9pbihcIlwiKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UoNTYpKFwidHJpbVwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsMyl9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDExMikoITApO2UoMTEzKShTdHJpbmcsXCJTdHJpbmdcIixmdW5jdGlvbih0KXt0aGlzLl90PVN0cmluZyh0KSx0aGlzLl9pPTB9LGZ1bmN0aW9uKCl7dmFyIHQsbj10aGlzLl90LGU9dGhpcy5faTtyZXR1cm4gZT49bi5sZW5ndGg/e3ZhbHVlOnZvaWQgMCxkb25lOiEwfToodD1yKG4sZSksdGhpcy5faSs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgxMTIpKCExKTtyKHIuUCxcIlN0cmluZ1wiLHtjb2RlUG9pbnRBdDpmdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLHQpfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoOSksbz1lKDExNSksdT1cImVuZHNXaXRoXCIsYT1cIlwiW3VdO3Ioci5QK3IuRiplKDExNikodSksXCJTdHJpbmdcIix7ZW5kc1dpdGg6ZnVuY3Rpb24odCl7dmFyIG49byh0aGlzLHQsdSksZT1hcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxyPWkobi5sZW5ndGgpLGM9dm9pZCAwPT09ZT9yOk1hdGgubWluKGkoZSkscikscz1TdHJpbmcodCk7cmV0dXJuIGE/YS5jYWxsKG4scyxjKTpuLnNsaWNlKGMtcy5sZW5ndGgsYyk9PT1zfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoMTE1KSxvPVwiaW5jbHVkZXNcIjtyKHIuUCtyLkYqZSgxMTYpKG8pLFwiU3RyaW5nXCIse2luY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiEhfmkodGhpcyx0LG8pLmluZGV4T2YodCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5QLFwiU3RyaW5nXCIse3JlcGVhdDplKDEwOSl9KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDkpLG89ZSgxMTUpLHU9XCJzdGFydHNXaXRoXCIsYT1cIlwiW3VdO3Ioci5QK3IuRiplKDExNikodSksXCJTdHJpbmdcIix7c3RhcnRzV2l0aDpmdW5jdGlvbih0KXt2YXIgbj1vKHRoaXMsdCx1KSxlPWkoTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsbi5sZW5ndGgpKSxyPVN0cmluZyh0KTtyZXR1cm4gYT9hLmNhbGwobixyLGUpOm4uc2xpY2UoZSxlK3IubGVuZ3RoKT09PXJ9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtlKDE4KShcImFuY2hvclwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCh0aGlzLFwiYVwiLFwibmFtZVwiLG4pfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZSgxOCkoXCJiaWdcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLFwiYmlnXCIsXCJcIixcIlwiKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UoMTgpKFwiYmxpbmtcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLFwiYmxpbmtcIixcIlwiLFwiXCIpfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZSgxOCkoXCJib2xkXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxcImJcIixcIlwiLFwiXCIpfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZSgxOCkoXCJmaXhlZFwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJ0dFwiLFwiXCIsXCJcIil9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtlKDE4KShcImZvbnRjb2xvclwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCh0aGlzLFwiZm9udFwiLFwiY29sb3JcIixuKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UoMTgpKFwiZm9udHNpemVcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQodGhpcyxcImZvbnRcIixcInNpemVcIixuKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UoMTgpKFwiaXRhbGljc1wiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJpXCIsXCJcIixcIlwiKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UoMTgpKFwibGlua1wiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdCh0aGlzLFwiYVwiLFwiaHJlZlwiLG4pfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZSgxOCkoXCJzbWFsbFwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJzbWFsbFwiLFwiXCIsXCJcIil9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtlKDE4KShcInN0cmlrZVwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsXCJzdHJpa2VcIixcIlwiLFwiXCIpfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZSgxOCkoXCJzdWJcIixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLFwic3ViXCIsXCJcIixcIlwiKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UoMTgpKFwic3VwXCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcyxcInN1cFwiLFwiXCIsXCJcIil9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiRGF0ZVwiLHtub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDEwKSxvPWUoMjcpO3Ioci5QK3IuRiplKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPT1uZXcgRGF0ZShOYU4pLnRvSlNPTigpfHwxIT09RGF0ZS5wcm90b3R5cGUudG9KU09OLmNhbGwoe3RvSVNPU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIDF9fSl9KSxcIkRhdGVcIix7dG9KU09OOmZ1bmN0aW9uKHQpe3ZhciBuPWkodGhpcyksZT1vKG4pO3JldHVyblwibnVtYmVyXCIhPXR5cGVvZiBlfHxpc0Zpbml0ZShlKT9uLnRvSVNPU3RyaW5nKCk6bnVsbH19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDI5Nik7cihyLlArci5GKihEYXRlLnByb3RvdHlwZS50b0lTT1N0cmluZyE9PWkpLFwiRGF0ZVwiLHt0b0lTT1N0cmluZzppfSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDMpLGk9RGF0ZS5wcm90b3R5cGUuZ2V0VGltZSxvPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nLHU9ZnVuY3Rpb24odCl7cmV0dXJuIHQ+OT90OlwiMFwiK3R9O3QuZXhwb3J0cz1yKGZ1bmN0aW9uKCl7cmV0dXJuXCIwMzg1LTA3LTI1VDA3OjA2OjM5Ljk5OVpcIiE9by5jYWxsKG5ldyBEYXRlKC01ZTEzLTEpKX0pfHwhcihmdW5jdGlvbigpe28uY2FsbChuZXcgRGF0ZShOYU4pKX0pP2Z1bmN0aW9uKCl7aWYoIWlzRmluaXRlKGkuY2FsbCh0aGlzKSkpdGhyb3cgUmFuZ2VFcnJvcihcIkludmFsaWQgdGltZSB2YWx1ZVwiKTt2YXIgdD10aGlzLG49dC5nZXRVVENGdWxsWWVhcigpLGU9dC5nZXRVVENNaWxsaXNlY29uZHMoKSxyPW48MD9cIi1cIjpuPjk5OTk/XCIrXCI6XCJcIjtyZXR1cm4gcisoXCIwMDAwMFwiK01hdGguYWJzKG4pKS5zbGljZShyPy02Oi00KStcIi1cIit1KHQuZ2V0VVRDTW9udGgoKSsxKStcIi1cIit1KHQuZ2V0VVRDRGF0ZSgpKStcIlRcIit1KHQuZ2V0VVRDSG91cnMoKSkrXCI6XCIrdSh0LmdldFVUQ01pbnV0ZXMoKSkrXCI6XCIrdSh0LmdldFVUQ1NlY29uZHMoKSkrXCIuXCIrKGU+OTk/ZTpcIjBcIit1KGUpKStcIlpcIn06b30sZnVuY3Rpb24odCxuLGUpe3ZhciByPURhdGUucHJvdG90eXBlLGk9XCJJbnZhbGlkIERhdGVcIixvPVwidG9TdHJpbmdcIix1PXJbb10sYT1yLmdldFRpbWU7bmV3IERhdGUoTmFOKStcIlwiIT1pJiZlKDE3KShyLG8sZnVuY3Rpb24oKXt2YXIgdD1hLmNhbGwodGhpcyk7cmV0dXJuIHQ9PT10P3UuY2FsbCh0aGlzKTppfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDUpKFwidG9QcmltaXRpdmVcIiksaT1EYXRlLnByb3RvdHlwZTtyIGluIGl8fGUoMTYpKGkscixlKDI5OSkpfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgxKSxpPWUoMjcpLG89XCJudW1iZXJcIjt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7aWYoXCJzdHJpbmdcIiE9PXQmJnQhPT1vJiZcImRlZmF1bHRcIiE9PXQpdGhyb3cgVHlwZUVycm9yKFwiSW5jb3JyZWN0IGhpbnRcIik7cmV0dXJuIGkocih0aGlzKSx0IT1vKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiQXJyYXlcIix7aXNBcnJheTplKDc4KX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgyMiksaT1lKDApLG89ZSgxMCksdT1lKDE2OCksYT1lKDExNyksYz1lKDkpLHM9ZSgxMTgpLGY9ZSgxMTkpO2koaS5TK2kuRiohZSg4MCkoZnVuY3Rpb24odCl7QXJyYXkuZnJvbSh0KX0pLFwiQXJyYXlcIix7ZnJvbTpmdW5jdGlvbih0KXt2YXIgbixlLGksbCxoPW8odCkscD1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzP3RoaXM6QXJyYXksdj1hcmd1bWVudHMubGVuZ3RoLGQ9dj4xP2FyZ3VtZW50c1sxXTp2b2lkIDAseT12b2lkIDAhPT1kLGc9MCxtPWYoaCk7aWYoeSYmKGQ9cihkLHY+Mj9hcmd1bWVudHNbMl06dm9pZCAwLDIpKSx2b2lkIDA9PW18fHA9PUFycmF5JiZhKG0pKWZvcihuPWMoaC5sZW5ndGgpLGU9bmV3IHAobik7bj5nO2crKylzKGUsZyx5P2QoaFtnXSxnKTpoW2ddKTtlbHNlIGZvcihsPW0uY2FsbChoKSxlPW5ldyBwOyEoaT1sLm5leHQoKSkuZG9uZTtnKyspcyhlLGcseT91KGwsZCxbaS52YWx1ZSxnXSwhMCk6aS52YWx1ZSk7cmV0dXJuIGUubGVuZ3RoPWcsZX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDExOCk7cihyLlMrci5GKmUoMykoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiEoQXJyYXkub2YuY2FsbCh0KWluc3RhbmNlb2YgdCl9KSxcIkFycmF5XCIse29mOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PTAsbj1hcmd1bWVudHMubGVuZ3RoLGU9bmV3KFwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSkobik7bj50OylpKGUsdCxhcmd1bWVudHNbdCsrXSk7cmV0dXJuIGUubGVuZ3RoPW4sZX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDE5KSxvPVtdLmpvaW47cihyLlArci5GKihlKDYzKSE9T2JqZWN0fHwhZSgyNCkobykpLFwiQXJyYXlcIix7am9pbjpmdW5jdGlvbih0KXtyZXR1cm4gby5jYWxsKGkodGhpcyksdm9pZCAwPT09dD9cIixcIjp0KX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDEwNSksbz1lKDIzKSx1PWUoNDUpLGE9ZSg5KSxjPVtdLnNsaWNlO3Ioci5QK3IuRiplKDMpKGZ1bmN0aW9uKCl7aSYmYy5jYWxsKGkpfSksXCJBcnJheVwiLHtzbGljZTpmdW5jdGlvbih0LG4pe3ZhciBlPWEodGhpcy5sZW5ndGgpLHI9byh0aGlzKTtpZihuPXZvaWQgMD09PW4/ZTpuLFwiQXJyYXlcIj09cilyZXR1cm4gYy5jYWxsKHRoaXMsdCxuKTtmb3IodmFyIGk9dSh0LGUpLHM9dShuLGUpLGY9YShzLWkpLGw9bmV3IEFycmF5KGYpLGg9MDtoPGY7aCsrKWxbaF09XCJTdHJpbmdcIj09cj90aGlzLmNoYXJBdChpK2gpOnRoaXNbaStoXTtyZXR1cm4gbH19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDExKSxvPWUoMTApLHU9ZSgzKSxhPVtdLnNvcnQsYz1bMSwyLDNdO3Ioci5QK3IuRioodShmdW5jdGlvbigpe2Muc29ydCh2b2lkIDApfSl8fCF1KGZ1bmN0aW9uKCl7Yy5zb3J0KG51bGwpfSl8fCFlKDI0KShhKSksXCJBcnJheVwiLHtzb3J0OmZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10P2EuY2FsbChvKHRoaXMpKTphLmNhbGwobyh0aGlzKSxpKHQpKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDMxKSgwKSxvPWUoMjQpKFtdLmZvckVhY2gsITApO3Ioci5QK3IuRiohbyxcIkFycmF5XCIse2ZvckVhY2g6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDQpLGk9ZSg3OCksbz1lKDUpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGkodCkmJihuPXQuY29uc3RydWN0b3IsXCJmdW5jdGlvblwiIT10eXBlb2Ygbnx8biE9PUFycmF5JiYhaShuLnByb3RvdHlwZSl8fChuPXZvaWQgMCkscihuKSYmbnVsbD09PShuPW5bb10pJiYobj12b2lkIDApKSx2b2lkIDA9PT1uP0FycmF5Om59fSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoMzEpKDEpO3Ioci5QK3IuRiohZSgyNCkoW10ubWFwLCEwKSxcIkFycmF5XCIse21hcDpmdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDMxKSgyKTtyKHIuUCtyLkYqIWUoMjQpKFtdLmZpbHRlciwhMCksXCJBcnJheVwiLHtmaWx0ZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgzMSkoMyk7cihyLlArci5GKiFlKDI0KShbXS5zb21lLCEwKSxcIkFycmF5XCIse3NvbWU6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50c1sxXSl9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgzMSkoNCk7cihyLlArci5GKiFlKDI0KShbXS5ldmVyeSwhMCksXCJBcnJheVwiLHtldmVyeTpmdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzWzFdKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDE2OSk7cihyLlArci5GKiFlKDI0KShbXS5yZWR1Y2UsITApLFwiQXJyYXlcIix7cmVkdWNlOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50c1sxXSwhMSl9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgxNjkpO3Ioci5QK3IuRiohZSgyNCkoW10ucmVkdWNlUmlnaHQsITApLFwiQXJyYXlcIix7cmVkdWNlUmlnaHQ6ZnVuY3Rpb24odCl7cmV0dXJuIGkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzWzFdLCEwKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDc2KSghMSksbz1bXS5pbmRleE9mLHU9ISFvJiYxL1sxXS5pbmRleE9mKDEsLTApPDA7cihyLlArci5GKih1fHwhZSgyNCkobykpLFwiQXJyYXlcIix7aW5kZXhPZjpmdW5jdGlvbih0KXtyZXR1cm4gdT9vLmFwcGx5KHRoaXMsYXJndW1lbnRzKXx8MDppKHRoaXMsdCxhcmd1bWVudHNbMV0pfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoMTkpLG89ZSgyOSksdT1lKDkpLGE9W10ubGFzdEluZGV4T2YsYz0hIWEmJjEvWzFdLmxhc3RJbmRleE9mKDEsLTApPDA7cihyLlArci5GKihjfHwhZSgyNCkoYSkpLFwiQXJyYXlcIix7bGFzdEluZGV4T2Y6ZnVuY3Rpb24odCl7aWYoYylyZXR1cm4gYS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIG49aSh0aGlzKSxlPXUobi5sZW5ndGgpLHI9ZS0xO2Zvcihhcmd1bWVudHMubGVuZ3RoPjEmJihyPU1hdGgubWluKHIsbyhhcmd1bWVudHNbMV0pKSkscjwwJiYocj1lK3IpO3I+PTA7ci0tKWlmKHIgaW4gbiYmbltyXT09PXQpcmV0dXJuIHJ8fDA7cmV0dXJuLTF9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5QLFwiQXJyYXlcIix7Y29weVdpdGhpbjplKDE3MCl9KSxlKDM5KShcImNvcHlXaXRoaW5cIil9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5QLFwiQXJyYXlcIix7ZmlsbDplKDEyMSl9KSxlKDM5KShcImZpbGxcIil9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgzMSkoNSksbz1cImZpbmRcIix1PSEwO28gaW5bXSYmQXJyYXkoMSlbb10oZnVuY3Rpb24oKXt1PSExfSkscihyLlArci5GKnUsXCJBcnJheVwiLHtmaW5kOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksZSgzOSkobyl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgzMSkoNiksbz1cImZpbmRJbmRleFwiLHU9ITA7byBpbltdJiZBcnJheSgxKVtvXShmdW5jdGlvbigpe3U9ITF9KSxyKHIuUCtyLkYqdSxcIkFycmF5XCIse2ZpbmRJbmRleDpmdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfX0pLGUoMzkpKG8pfSxmdW5jdGlvbih0LG4sZSl7ZSg0OCkoXCJBcnJheVwiKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMiksaT1lKDEwOCksbz1lKDgpLmYsdT1lKDQ3KS5mLGE9ZSg3OSksYz1lKDgxKSxzPXIuUmVnRXhwLGY9cyxsPXMucHJvdG90eXBlLGg9L2EvZyxwPS9hL2csdj1uZXcgcyhoKSE9PWg7aWYoZSg3KSYmKCF2fHxlKDMpKGZ1bmN0aW9uKCl7cmV0dXJuIHBbZSg1KShcIm1hdGNoXCIpXT0hMSxzKGgpIT1ofHxzKHApPT1wfHxcIi9hL2lcIiE9cyhoLFwiaVwiKX0pKSl7cz1mdW5jdGlvbih0LG4pe3ZhciBlPXRoaXMgaW5zdGFuY2VvZiBzLHI9YSh0KSxvPXZvaWQgMD09PW47cmV0dXJuIWUmJnImJnQuY29uc3RydWN0b3I9PT1zJiZvP3Q6aSh2P25ldyBmKHImJiFvP3Quc291cmNlOnQsbik6Zigocj10IGluc3RhbmNlb2Ygcyk/dC5zb3VyY2U6dCxyJiZvP2MuY2FsbCh0KTpuKSxlP3RoaXM6bCxzKX07Zm9yKHZhciBkPShmdW5jdGlvbih0KXt0IGluIHN8fG8ocyx0LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZbdF19LHNldDpmdW5jdGlvbihuKXtmW3RdPW59fSl9KSx5PXUoZiksZz0wO3kubGVuZ3RoPmc7KWQoeVtnKytdKTtsLmNvbnN0cnVjdG9yPXMscy5wcm90b3R5cGU9bCxlKDE3KShyLFwiUmVnRXhwXCIscyl9ZSg0OCkoXCJSZWdFeHBcIil9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtlKDE3Mik7dmFyIHI9ZSgxKSxpPWUoODEpLG89ZSg3KSx1PVwidG9TdHJpbmdcIixhPS8uL1t1XSxjPWZ1bmN0aW9uKHQpe2UoMTcpKFJlZ0V4cC5wcm90b3R5cGUsdSx0LCEwKX07ZSgzKShmdW5jdGlvbigpe3JldHVyblwiL2EvYlwiIT1hLmNhbGwoe3NvdXJjZTpcImFcIixmbGFnczpcImJcIn0pfSk/YyhmdW5jdGlvbigpe3ZhciB0PXIodGhpcyk7cmV0dXJuXCIvXCIuY29uY2F0KHQuc291cmNlLFwiL1wiLFwiZmxhZ3NcImluIHQ/dC5mbGFnczohbyYmdCBpbnN0YW5jZW9mIFJlZ0V4cD9pLmNhbGwodCk6dm9pZCAwKX0pOmEubmFtZSE9dSYmYyhmdW5jdGlvbigpe3JldHVybiBhLmNhbGwodGhpcyl9KX0sZnVuY3Rpb24odCxuLGUpe2UoODIpKFwibWF0Y2hcIiwxLGZ1bmN0aW9uKHQsbixlKXtyZXR1cm5bZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dCh0aGlzKSxpPXZvaWQgMD09ZT92b2lkIDA6ZVtuXTtyZXR1cm4gdm9pZCAwIT09aT9pLmNhbGwoZSxyKTpuZXcgUmVnRXhwKGUpW25dKFN0cmluZyhyKSl9LGVdfSl9LGZ1bmN0aW9uKHQsbixlKXtlKDgyKShcInJlcGxhY2VcIiwyLGZ1bmN0aW9uKHQsbixlKXtyZXR1cm5bZnVuY3Rpb24ocixpKXtcInVzZSBzdHJpY3RcIjt2YXIgbz10KHRoaXMpLHU9dm9pZCAwPT1yP3ZvaWQgMDpyW25dO3JldHVybiB2b2lkIDAhPT11P3UuY2FsbChyLG8saSk6ZS5jYWxsKFN0cmluZyhvKSxyLGkpfSxlXX0pfSxmdW5jdGlvbih0LG4sZSl7ZSg4MikoXCJzZWFyY2hcIiwxLGZ1bmN0aW9uKHQsbixlKXtyZXR1cm5bZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9dCh0aGlzKSxpPXZvaWQgMD09ZT92b2lkIDA6ZVtuXTtyZXR1cm4gdm9pZCAwIT09aT9pLmNhbGwoZSxyKTpuZXcgUmVnRXhwKGUpW25dKFN0cmluZyhyKSl9LGVdfSl9LGZ1bmN0aW9uKHQsbixlKXtlKDgyKShcInNwbGl0XCIsMixmdW5jdGlvbih0LG4scil7XCJ1c2Ugc3RyaWN0XCI7dmFyIGk9ZSg3OSksbz1yLHU9W10ucHVzaCxhPVwic3BsaXRcIixjPVwibGVuZ3RoXCIscz1cImxhc3RJbmRleFwiO2lmKFwiY1wiPT1cImFiYmNcIlthXSgvKGIpKi8pWzFdfHw0IT1cInRlc3RcIlthXSgvKD86KS8sLTEpW2NdfHwyIT1cImFiXCJbYV0oLyg/OmFiKSovKVtjXXx8NCE9XCIuXCJbYV0oLyguPykoLj8pLylbY118fFwiLlwiW2FdKC8oKSgpLylbY10+MXx8XCJcIlthXSgvLj8vKVtjXSl7dmFyIGY9dm9pZCAwPT09LygpPz8vLmV4ZWMoXCJcIilbMV07cj1mdW5jdGlvbih0LG4pe3ZhciBlPVN0cmluZyh0aGlzKTtpZih2b2lkIDA9PT10JiYwPT09bilyZXR1cm5bXTtpZighaSh0KSlyZXR1cm4gby5jYWxsKGUsdCxuKTt2YXIgcixhLGwsaCxwLHY9W10sZD0odC5pZ25vcmVDYXNlP1wiaVwiOlwiXCIpKyh0Lm11bHRpbGluZT9cIm1cIjpcIlwiKSsodC51bmljb2RlP1widVwiOlwiXCIpKyh0LnN0aWNreT9cInlcIjpcIlwiKSx5PTAsZz12b2lkIDA9PT1uPzQyOTQ5NjcyOTU6bj4+PjAsbT1uZXcgUmVnRXhwKHQuc291cmNlLGQrXCJnXCIpO2ZvcihmfHwocj1uZXcgUmVnRXhwKFwiXlwiK20uc291cmNlK1wiJCg/IVxcXFxzKVwiLGQpKTsoYT1tLmV4ZWMoZSkpJiYhKChsPWEuaW5kZXgrYVswXVtjXSk+eSYmKHYucHVzaChlLnNsaWNlKHksYS5pbmRleCkpLCFmJiZhW2NdPjEmJmFbMF0ucmVwbGFjZShyLGZ1bmN0aW9uKCl7Zm9yKHA9MTtwPGFyZ3VtZW50c1tjXS0yO3ArKyl2b2lkIDA9PT1hcmd1bWVudHNbcF0mJihhW3BdPXZvaWQgMCl9KSxhW2NdPjEmJmEuaW5kZXg8ZVtjXSYmdS5hcHBseSh2LGEuc2xpY2UoMSkpLGg9YVswXVtjXSx5PWwsdltjXT49ZykpOyltW3NdPT09YS5pbmRleCYmbVtzXSsrO3JldHVybiB5PT09ZVtjXT8haCYmbS50ZXN0KFwiXCIpfHx2LnB1c2goXCJcIik6di5wdXNoKGUuc2xpY2UoeSkpLHZbY10+Zz92LnNsaWNlKDAsZyk6dn19ZWxzZVwiMFwiW2FdKHZvaWQgMCwwKVtjXSYmKHI9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09dCYmMD09PW4/W106by5jYWxsKHRoaXMsdCxuKX0pO3JldHVybltmdW5jdGlvbihlLGkpe3ZhciBvPXQodGhpcyksdT12b2lkIDA9PWU/dm9pZCAwOmVbbl07cmV0dXJuIHZvaWQgMCE9PXU/dS5jYWxsKGUsbyxpKTpyLmNhbGwoU3RyaW5nKG8pLGUsaSl9LHJdfSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcixpLG8sdSxhPWUoNDMpLGM9ZSgyKSxzPWUoMjIpLGY9ZSg2NSksbD1lKDApLGg9ZSg0KSxwPWUoMTEpLHY9ZSg0OSksZD1lKDUwKSx5PWUoODMpLGc9ZSgxMjMpLnNldCxtPWUoMTI0KSgpLF89ZSgxMjUpLHc9ZSgxNzMpLGI9ZSgxNzQpLHg9XCJQcm9taXNlXCIsUz1jLlR5cGVFcnJvcixPPWMucHJvY2VzcyxQPWNbeF0saz1cInByb2Nlc3NcIj09ZihPKSxFPWZ1bmN0aW9uKCl7fSxqPWk9Xy5mLEE9ISFmdW5jdGlvbigpe3RyeXt2YXIgdD1QLnJlc29sdmUoMSksbj0odC5jb25zdHJ1Y3Rvcj17fSlbZSg1KShcInNwZWNpZXNcIildPWZ1bmN0aW9uKHQpe3QoRSxFKX07cmV0dXJuKGt8fFwiZnVuY3Rpb25cIj09dHlwZW9mIFByb21pc2VSZWplY3Rpb25FdmVudCkmJnQudGhlbihFKWluc3RhbmNlb2Ygbn1jYXRjaCh0KXt9fSgpLE09ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuISghaCh0KXx8XCJmdW5jdGlvblwiIT10eXBlb2Yobj10LnRoZW4pKSYmbn0sVD1mdW5jdGlvbih0LG4pe2lmKCF0Ll9uKXt0Ll9uPSEwO3ZhciBlPXQuX2M7bShmdW5jdGlvbigpe2Zvcih2YXIgcj10Ll92LGk9MT09dC5fcyxvPTAsdT1mdW5jdGlvbihuKXt2YXIgZSxvLHU9aT9uLm9rOm4uZmFpbCxhPW4ucmVzb2x2ZSxjPW4ucmVqZWN0LHM9bi5kb21haW47dHJ5e3U/KGl8fCgyPT10Ll9oJiZJKHQpLHQuX2g9MSksITA9PT11P2U9cjoocyYmcy5lbnRlcigpLGU9dShyKSxzJiZzLmV4aXQoKSksZT09PW4ucHJvbWlzZT9jKFMoXCJQcm9taXNlLWNoYWluIGN5Y2xlXCIpKToobz1NKGUpKT9vLmNhbGwoZSxhLGMpOmEoZSkpOmMocil9Y2F0Y2godCl7Yyh0KX19O2UubGVuZ3RoPm87KXUoZVtvKytdKTt0Ll9jPVtdLHQuX249ITEsbiYmIXQuX2gmJkYodCl9KX19LEY9ZnVuY3Rpb24odCl7Zy5jYWxsKGMsZnVuY3Rpb24oKXt2YXIgbixlLHIsaT10Ll92LG89TCh0KTtpZihvJiYobj13KGZ1bmN0aW9uKCl7az9PLmVtaXQoXCJ1bmhhbmRsZWRSZWplY3Rpb25cIixpLHQpOihlPWMub251bmhhbmRsZWRyZWplY3Rpb24pP2Uoe3Byb21pc2U6dCxyZWFzb246aX0pOihyPWMuY29uc29sZSkmJnIuZXJyb3ImJnIuZXJyb3IoXCJVbmhhbmRsZWQgcHJvbWlzZSByZWplY3Rpb25cIixpKX0pLHQuX2g9a3x8TCh0KT8yOjEpLHQuX2E9dm9pZCAwLG8mJm4uZSl0aHJvdyBuLnZ9KX0sTD1mdW5jdGlvbih0KXtyZXR1cm4gMSE9PXQuX2gmJjA9PT0odC5fYXx8dC5fYykubGVuZ3RofSxJPWZ1bmN0aW9uKHQpe2cuY2FsbChjLGZ1bmN0aW9uKCl7dmFyIG47az9PLmVtaXQoXCJyZWplY3Rpb25IYW5kbGVkXCIsdCk6KG49Yy5vbnJlamVjdGlvbmhhbmRsZWQpJiZuKHtwcm9taXNlOnQscmVhc29uOnQuX3Z9KX0pfSxOPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXM7bi5fZHx8KG4uX2Q9ITAsbj1uLl93fHxuLG4uX3Y9dCxuLl9zPTIsbi5fYXx8KG4uX2E9bi5fYy5zbGljZSgpKSxUKG4sITApKX0sRD1mdW5jdGlvbih0KXt2YXIgbixlPXRoaXM7aWYoIWUuX2Qpe2UuX2Q9ITAsZT1lLl93fHxlO3RyeXtpZihlPT09dCl0aHJvdyBTKFwiUHJvbWlzZSBjYW4ndCBiZSByZXNvbHZlZCBpdHNlbGZcIik7KG49TSh0KSk/bShmdW5jdGlvbigpe3ZhciByPXtfdzplLF9kOiExfTt0cnl7bi5jYWxsKHQscyhELHIsMSkscyhOLHIsMSkpfWNhdGNoKHQpe04uY2FsbChyLHQpfX0pOihlLl92PXQsZS5fcz0xLFQoZSwhMSkpfWNhdGNoKHQpe04uY2FsbCh7X3c6ZSxfZDohMX0sdCl9fX07QXx8KFA9ZnVuY3Rpb24odCl7dih0aGlzLFAseCxcIl9oXCIpLHAodCksci5jYWxsKHRoaXMpO3RyeXt0KHMoRCx0aGlzLDEpLHMoTix0aGlzLDEpKX1jYXRjaCh0KXtOLmNhbGwodGhpcyx0KX19LHI9ZnVuY3Rpb24odCl7dGhpcy5fYz1bXSx0aGlzLl9hPXZvaWQgMCx0aGlzLl9zPTAsdGhpcy5fZD0hMSx0aGlzLl92PXZvaWQgMCx0aGlzLl9oPTAsdGhpcy5fbj0hMX0sci5wcm90b3R5cGU9ZSg1MSkoUC5wcm90b3R5cGUse3RoZW46ZnVuY3Rpb24odCxuKXt2YXIgZT1qKHkodGhpcyxQKSk7cmV0dXJuIGUub2s9XCJmdW5jdGlvblwiIT10eXBlb2YgdHx8dCxlLmZhaWw9XCJmdW5jdGlvblwiPT10eXBlb2YgbiYmbixlLmRvbWFpbj1rP08uZG9tYWluOnZvaWQgMCx0aGlzLl9jLnB1c2goZSksdGhpcy5fYSYmdGhpcy5fYS5wdXNoKGUpLHRoaXMuX3MmJlQodGhpcywhMSksZS5wcm9taXNlfSxjYXRjaDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy50aGVuKHZvaWQgMCx0KX19KSxvPWZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHI7dGhpcy5wcm9taXNlPXQsdGhpcy5yZXNvbHZlPXMoRCx0LDEpLHRoaXMucmVqZWN0PXMoTix0LDEpfSxfLmY9aj1mdW5jdGlvbih0KXtyZXR1cm4gdD09PVB8fHQ9PT11P25ldyBvKHQpOmkodCl9KSxsKGwuRytsLlcrbC5GKiFBLHtQcm9taXNlOlB9KSxlKDU1KShQLHgpLGUoNDgpKHgpLHU9ZSgzNClbeF0sbChsLlMrbC5GKiFBLHgse3JlamVjdDpmdW5jdGlvbih0KXt2YXIgbj1qKHRoaXMpO3JldHVybigwLG4ucmVqZWN0KSh0KSxuLnByb21pc2V9fSksbChsLlMrbC5GKihhfHwhQSkseCx7cmVzb2x2ZTpmdW5jdGlvbih0KXtyZXR1cm4gYihhJiZ0aGlzPT09dT9QOnRoaXMsdCl9fSksbChsLlMrbC5GKiEoQSYmZSg4MCkoZnVuY3Rpb24odCl7UC5hbGwodCkuY2F0Y2goRSl9KSkseCx7YWxsOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMsZT1qKG4pLHI9ZS5yZXNvbHZlLGk9ZS5yZWplY3Qsbz13KGZ1bmN0aW9uKCl7dmFyIGU9W10sbz0wLHU9MTtkKHQsITEsZnVuY3Rpb24odCl7dmFyIGE9bysrLGM9ITE7ZS5wdXNoKHZvaWQgMCksdSsrLG4ucmVzb2x2ZSh0KS50aGVuKGZ1bmN0aW9uKHQpe2N8fChjPSEwLGVbYV09dCwtLXV8fHIoZSkpfSxpKX0pLC0tdXx8cihlKX0pO3JldHVybiBvLmUmJmkoby52KSxlLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24odCl7dmFyIG49dGhpcyxlPWoobikscj1lLnJlamVjdCxpPXcoZnVuY3Rpb24oKXtkKHQsITEsZnVuY3Rpb24odCl7bi5yZXNvbHZlKHQpLnRoZW4oZS5yZXNvbHZlLHIpfSl9KTtyZXR1cm4gaS5lJiZyKGkudiksZS5wcm9taXNlfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgxNzkpLGk9ZSg1OCksbz1cIldlYWtTZXRcIjtlKDg0KShvLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApfX0se2FkZDpmdW5jdGlvbih0KXtyZXR1cm4gci5kZWYoaSh0aGlzLG8pLHQsITApfX0sciwhMSwhMCl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSg4NSksbz1lKDEyNiksdT1lKDEpLGE9ZSg0NSksYz1lKDkpLHM9ZSg0KSxmPWUoMikuQXJyYXlCdWZmZXIsbD1lKDgzKSxoPW8uQXJyYXlCdWZmZXIscD1vLkRhdGFWaWV3LHY9aS5BQlYmJmYuaXNWaWV3LGQ9aC5wcm90b3R5cGUuc2xpY2UseT1pLlZJRVcsZz1cIkFycmF5QnVmZmVyXCI7cihyLkcrci5XK3IuRiooZiE9PWgpLHtBcnJheUJ1ZmZlcjpofSkscihyLlMrci5GKiFpLkNPTlNUUixnLHtpc1ZpZXc6ZnVuY3Rpb24odCl7cmV0dXJuIHYmJnYodCl8fHModCkmJnkgaW4gdH19KSxyKHIuUCtyLlUrci5GKmUoMykoZnVuY3Rpb24oKXtyZXR1cm4hbmV3IGgoMikuc2xpY2UoMSx2b2lkIDApLmJ5dGVMZW5ndGh9KSxnLHtzbGljZTpmdW5jdGlvbih0LG4pe2lmKHZvaWQgMCE9PWQmJnZvaWQgMD09PW4pcmV0dXJuIGQuY2FsbCh1KHRoaXMpLHQpO2Zvcih2YXIgZT11KHRoaXMpLmJ5dGVMZW5ndGgscj1hKHQsZSksaT1hKHZvaWQgMD09PW4/ZTpuLGUpLG89bmV3KGwodGhpcyxoKSkoYyhpLXIpKSxzPW5ldyBwKHRoaXMpLGY9bmV3IHAobyksdj0wO3I8aTspZi5zZXRVaW50OCh2Kysscy5nZXRVaW50OChyKyspKTtyZXR1cm4gb319KSxlKDQ4KShnKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLkcrci5XK3IuRiohZSg4NSkuQUJWLHtEYXRhVmlldzplKDEyNikuRGF0YVZpZXd9KX0sZnVuY3Rpb24odCxuLGUpe2UoMzUpKFwiSW50OFwiLDEsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSxyKXtyZXR1cm4gdCh0aGlzLG4sZSxyKX19KX0sZnVuY3Rpb24odCxuLGUpe2UoMzUpKFwiVWludDhcIiwxLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLGUscil7cmV0dXJuIHQodGhpcyxuLGUscil9fSl9LGZ1bmN0aW9uKHQsbixlKXtlKDM1KShcIlVpbnQ4XCIsMSxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlLHIpe3JldHVybiB0KHRoaXMsbixlLHIpfX0sITApfSxmdW5jdGlvbih0LG4sZSl7ZSgzNSkoXCJJbnQxNlwiLDIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSxyKXtyZXR1cm4gdCh0aGlzLG4sZSxyKX19KX0sZnVuY3Rpb24odCxuLGUpe2UoMzUpKFwiVWludDE2XCIsMixmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlLHIpe3JldHVybiB0KHRoaXMsbixlLHIpfX0pfSxmdW5jdGlvbih0LG4sZSl7ZSgzNSkoXCJJbnQzMlwiLDQsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSxyKXtyZXR1cm4gdCh0aGlzLG4sZSxyKX19KX0sZnVuY3Rpb24odCxuLGUpe2UoMzUpKFwiVWludDMyXCIsNCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlLHIpe3JldHVybiB0KHRoaXMsbixlLHIpfX0pfSxmdW5jdGlvbih0LG4sZSl7ZSgzNSkoXCJGbG9hdDMyXCIsNCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlLHIpe3JldHVybiB0KHRoaXMsbixlLHIpfX0pfSxmdW5jdGlvbih0LG4sZSl7ZSgzNSkoXCJGbG9hdDY0XCIsOCxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlLHIpe3JldHVybiB0KHRoaXMsbixlLHIpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTEpLG89ZSgxKSx1PShlKDIpLlJlZmxlY3R8fHt9KS5hcHBseSxhPUZ1bmN0aW9uLmFwcGx5O3Ioci5TK3IuRiohZSgzKShmdW5jdGlvbigpe3UoZnVuY3Rpb24oKXt9KX0pLFwiUmVmbGVjdFwiLHthcHBseTpmdW5jdGlvbih0LG4sZSl7dmFyIHI9aSh0KSxjPW8oZSk7cmV0dXJuIHU/dShyLG4sYyk6YS5jYWxsKHIsbixjKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDQ2KSxvPWUoMTEpLHU9ZSgxKSxhPWUoNCksYz1lKDMpLHM9ZSgxNjApLGY9KGUoMikuUmVmbGVjdHx8e30pLmNvbnN0cnVjdCxsPWMoZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiEoZihmdW5jdGlvbigpe30sW10sdClpbnN0YW5jZW9mIHQpfSksaD0hYyhmdW5jdGlvbigpe2YoZnVuY3Rpb24oKXt9KX0pO3Ioci5TK3IuRioobHx8aCksXCJSZWZsZWN0XCIse2NvbnN0cnVjdDpmdW5jdGlvbih0LG4pe28odCksdShuKTt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPDM/dDpvKGFyZ3VtZW50c1syXSk7aWYoaCYmIWwpcmV0dXJuIGYodCxuLGUpO2lmKHQ9PWUpe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBuZXcgdDtjYXNlIDE6cmV0dXJuIG5ldyB0KG5bMF0pO2Nhc2UgMjpyZXR1cm4gbmV3IHQoblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIG5ldyB0KG5bMF0sblsxXSxuWzJdKTtjYXNlIDQ6cmV0dXJuIG5ldyB0KG5bMF0sblsxXSxuWzJdLG5bM10pfXZhciByPVtudWxsXTtyZXR1cm4gci5wdXNoLmFwcGx5KHIsbiksbmV3KHMuYXBwbHkodCxyKSl9dmFyIGM9ZS5wcm90b3R5cGUscD1pKGEoYyk/YzpPYmplY3QucHJvdG90eXBlKSx2PUZ1bmN0aW9uLmFwcGx5LmNhbGwodCxwLG4pO3JldHVybiBhKHYpP3Y6cH19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoOCksaT1lKDApLG89ZSgxKSx1PWUoMjcpO2koaS5TK2kuRiplKDMpKGZ1bmN0aW9uKCl7UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eShyLmYoe30sMSx7dmFsdWU6MX0pLDEse3ZhbHVlOjJ9KX0pLFwiUmVmbGVjdFwiLHtkZWZpbmVQcm9wZXJ0eTpmdW5jdGlvbih0LG4sZSl7byh0KSxuPXUobiwhMCksbyhlKTt0cnl7cmV0dXJuIHIuZih0LG4sZSksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMjApLmYsbz1lKDEpO3Ioci5TLFwiUmVmbGVjdFwiLHtkZWxldGVQcm9wZXJ0eTpmdW5jdGlvbih0LG4pe3ZhciBlPWkobyh0KSxuKTtyZXR1cm4hKGUmJiFlLmNvbmZpZ3VyYWJsZSkmJmRlbGV0ZSB0W25dfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoMSksbz1mdW5jdGlvbih0KXt0aGlzLl90PWkodCksdGhpcy5faT0wO3ZhciBuLGU9dGhpcy5faz1bXTtmb3IobiBpbiB0KWUucHVzaChuKX07ZSgxMTQpKG8sXCJPYmplY3RcIixmdW5jdGlvbigpe3ZhciB0LG49dGhpcyxlPW4uX2s7ZG97aWYobi5faT49ZS5sZW5ndGgpcmV0dXJue3ZhbHVlOnZvaWQgMCxkb25lOiEwfX13aGlsZSghKCh0PWVbbi5faSsrXSlpbiBuLl90KSk7cmV0dXJue3ZhbHVlOnQsZG9uZTohMX19KSxyKHIuUyxcIlJlZmxlY3RcIix7ZW51bWVyYXRlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgbyh0KX19KX0sZnVuY3Rpb24odCxuLGUpe2Z1bmN0aW9uIHIodCxuKXt2YXIgZSxhLGY9YXJndW1lbnRzLmxlbmd0aDwzP3Q6YXJndW1lbnRzWzJdO3JldHVybiBzKHQpPT09Zj90W25dOihlPWkuZih0LG4pKT91KGUsXCJ2YWx1ZVwiKT9lLnZhbHVlOnZvaWQgMCE9PWUuZ2V0P2UuZ2V0LmNhbGwoZik6dm9pZCAwOmMoYT1vKHQpKT9yKGEsbixmKTp2b2lkIDB9dmFyIGk9ZSgyMCksbz1lKDIxKSx1PWUoMTUpLGE9ZSgwKSxjPWUoNCkscz1lKDEpO2EoYS5TLFwiUmVmbGVjdFwiLHtnZXQ6cn0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgyMCksaT1lKDApLG89ZSgxKTtpKGkuUyxcIlJlZmxlY3RcIix7Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHIuZihvKHQpLG4pfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMjEpLG89ZSgxKTtyKHIuUyxcIlJlZmxlY3RcIix7Z2V0UHJvdG90eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIGkobyh0KSl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiUmVmbGVjdFwiLHtoYXM6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbiBpbiB0fX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMSksbz1PYmplY3QuaXNFeHRlbnNpYmxlO3Ioci5TLFwiUmVmbGVjdFwiLHtpc0V4dGVuc2libGU6ZnVuY3Rpb24odCl7cmV0dXJuIGkodCksIW98fG8odCl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiUmVmbGVjdFwiLHtvd25LZXlzOmUoMTgxKX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMSksbz1PYmplY3QucHJldmVudEV4dGVuc2lvbnM7cihyLlMsXCJSZWZsZWN0XCIse3ByZXZlbnRFeHRlbnNpb25zOmZ1bmN0aW9uKHQpe2kodCk7dHJ5e3JldHVybiBvJiZvKHQpLCEwfWNhdGNoKHQpe3JldHVybiExfX19KX0sZnVuY3Rpb24odCxuLGUpe2Z1bmN0aW9uIHIodCxuLGUpe3ZhciBjLGgscD1hcmd1bWVudHMubGVuZ3RoPDQ/dDphcmd1bWVudHNbM10sdj1vLmYoZih0KSxuKTtpZighdil7aWYobChoPXUodCkpKXJldHVybiByKGgsbixlLHApO3Y9cygwKX1yZXR1cm4gYSh2LFwidmFsdWVcIik/ISghMT09PXYud3JpdGFibGV8fCFsKHApKSYmKGM9by5mKHAsbil8fHMoMCksYy52YWx1ZT1lLGkuZihwLG4sYyksITApOnZvaWQgMCE9PXYuc2V0JiYodi5zZXQuY2FsbChwLGUpLCEwKX12YXIgaT1lKDgpLG89ZSgyMCksdT1lKDIxKSxhPWUoMTUpLGM9ZSgwKSxzPWUoNDEpLGY9ZSgxKSxsPWUoNCk7YyhjLlMsXCJSZWZsZWN0XCIse3NldDpyfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9ZSgxMDYpO2kmJnIoci5TLFwiUmVmbGVjdFwiLHtzZXRQcm90b3R5cGVPZjpmdW5jdGlvbih0LG4pe2kuY2hlY2sodCxuKTt0cnl7cmV0dXJuIGkuc2V0KHQsbiksITB9Y2F0Y2godCl7cmV0dXJuITF9fX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoNzYpKCEwKTtyKHIuUCxcIkFycmF5XCIse2luY2x1ZGVzOmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksZSgzOSkoXCJpbmNsdWRlc1wiKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDE4Miksbz1lKDEwKSx1PWUoOSksYT1lKDExKSxjPWUoMTIwKTtyKHIuUCxcIkFycmF5XCIse2ZsYXRNYXA6ZnVuY3Rpb24odCl7dmFyIG4sZSxyPW8odGhpcyk7cmV0dXJuIGEodCksbj11KHIubGVuZ3RoKSxlPWMociwwKSxpKGUscixyLG4sMCwxLHQsYXJndW1lbnRzWzFdKSxlfX0pLGUoMzkpKFwiZmxhdE1hcFwiKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDE4Miksbz1lKDEwKSx1PWUoOSksYT1lKDI5KSxjPWUoMTIwKTtyKHIuUCxcIkFycmF5XCIse2ZsYXR0ZW46ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHNbMF0sbj1vKHRoaXMpLGU9dShuLmxlbmd0aCkscj1jKG4sMCk7cmV0dXJuIGkocixuLG4sZSwwLHZvaWQgMD09PXQ/MTphKHQpKSxyfX0pLGUoMzkpKFwiZmxhdHRlblwiKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDExMikoITApO3Ioci5QLFwiU3RyaW5nXCIse2F0OmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCl9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgxODMpLG89ZSgxMjcpO3Ioci5QK3IuRiovVmVyc2lvblxcLzEwXFwuXFxkKyhcXC5cXGQrKT8gU2FmYXJpXFwvLy50ZXN0KG8pLFwiU3RyaW5nXCIse3BhZFN0YXJ0OmZ1bmN0aW9uKHQpe3JldHVybiBpKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCwhMCl9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgxODMpLG89ZSgxMjcpO3Ioci5QK3IuRiovVmVyc2lvblxcLzEwXFwuXFxkKyhcXC5cXGQrKT8gU2FmYXJpXFwvLy50ZXN0KG8pLFwiU3RyaW5nXCIse3BhZEVuZDpmdW5jdGlvbih0KXtyZXR1cm4gaSh0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsITEpfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZSg1NikoXCJ0cmltTGVmdFwiLGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0KHRoaXMsMSl9fSxcInRyaW1TdGFydFwiKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UoNTYpKFwidHJpbVJpZ2h0XCIsZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQodGhpcywyKX19LFwidHJpbUVuZFwiKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDI4KSxvPWUoOSksdT1lKDc5KSxhPWUoODEpLGM9UmVnRXhwLnByb3RvdHlwZSxzPWZ1bmN0aW9uKHQsbil7dGhpcy5fcj10LHRoaXMuX3M9bn07ZSgxMTQpKHMsXCJSZWdFeHAgU3RyaW5nXCIsZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9yLmV4ZWModGhpcy5fcyk7cmV0dXJue3ZhbHVlOnQsZG9uZTpudWxsPT09dH19KSxyKHIuUCxcIlN0cmluZ1wiLHttYXRjaEFsbDpmdW5jdGlvbih0KXtpZihpKHRoaXMpLCF1KHQpKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhIHJlZ2V4cCFcIik7dmFyIG49U3RyaW5nKHRoaXMpLGU9XCJmbGFnc1wiaW4gYz9TdHJpbmcodC5mbGFncyk6YS5jYWxsKHQpLHI9bmV3IFJlZ0V4cCh0LnNvdXJjZSx+ZS5pbmRleE9mKFwiZ1wiKT9lOlwiZ1wiK2UpO3JldHVybiByLmxhc3RJbmRleD1vKHQubGFzdEluZGV4KSxuZXcgcyhyLG4pfX0pfSxmdW5jdGlvbih0LG4sZSl7ZSgxMDIpKFwiYXN5bmNJdGVyYXRvclwiKX0sZnVuY3Rpb24odCxuLGUpe2UoMTAyKShcIm9ic2VydmFibGVcIil9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9ZSgxODEpLG89ZSgxOSksdT1lKDIwKSxhPWUoMTE4KTtyKHIuUyxcIk9iamVjdFwiLHtnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlLHI9byh0KSxjPXUuZixzPWkociksZj17fSxsPTA7cy5sZW5ndGg+bDspdm9pZCAwIT09KGU9YyhyLG49c1tsKytdKSkmJmEoZixuLGUpO3JldHVybiBmfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTg0KSghMSk7cihyLlMsXCJPYmplY3RcIix7dmFsdWVzOmZ1bmN0aW9uKHQpe3JldHVybiBpKHQpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTg0KSghMCk7cihyLlMsXCJPYmplY3RcIix7ZW50cmllczpmdW5jdGlvbih0KXtyZXR1cm4gaSh0KX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDEwKSxvPWUoMTEpLHU9ZSg4KTtlKDcpJiZyKHIuUCtlKDg2KSxcIk9iamVjdFwiLHtfX2RlZmluZUdldHRlcl9fOmZ1bmN0aW9uKHQsbil7dS5mKGkodGhpcyksdCx7Z2V0Om8obiksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDEwKSxvPWUoMTEpLHU9ZSg4KTtlKDcpJiZyKHIuUCtlKDg2KSxcIk9iamVjdFwiLHtfX2RlZmluZVNldHRlcl9fOmZ1bmN0aW9uKHQsbil7dS5mKGkodGhpcyksdCx7c2V0Om8obiksZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9KX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDEwKSxvPWUoMjcpLHU9ZSgyMSksYT1lKDIwKS5mO2UoNykmJnIoci5QK2UoODYpLFwiT2JqZWN0XCIse19fbG9va3VwR2V0dGVyX186ZnVuY3Rpb24odCl7dmFyIG4sZT1pKHRoaXMpLHI9byh0LCEwKTtkb3tpZihuPWEoZSxyKSlyZXR1cm4gbi5nZXR9d2hpbGUoZT11KGUpKX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMCksaT1lKDEwKSxvPWUoMjcpLHU9ZSgyMSksYT1lKDIwKS5mO2UoNykmJnIoci5QK2UoODYpLFwiT2JqZWN0XCIse19fbG9va3VwU2V0dGVyX186ZnVuY3Rpb24odCl7dmFyIG4sZT1pKHRoaXMpLHI9byh0LCEwKTtkb3tpZihuPWEoZSxyKSlyZXR1cm4gbi5zZXR9d2hpbGUoZT11KGUpKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlArci5SLFwiTWFwXCIse3RvSlNPTjplKDE4NSkoXCJNYXBcIil9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlArci5SLFwiU2V0XCIse3RvSlNPTjplKDE4NSkoXCJTZXRcIil9KX0sZnVuY3Rpb24odCxuLGUpe2UoODcpKFwiTWFwXCIpfSxmdW5jdGlvbih0LG4sZSl7ZSg4NykoXCJTZXRcIil9LGZ1bmN0aW9uKHQsbixlKXtlKDg3KShcIldlYWtNYXBcIil9LGZ1bmN0aW9uKHQsbixlKXtlKDg3KShcIldlYWtTZXRcIil9LGZ1bmN0aW9uKHQsbixlKXtlKDg4KShcIk1hcFwiKX0sZnVuY3Rpb24odCxuLGUpe2UoODgpKFwiU2V0XCIpfSxmdW5jdGlvbih0LG4sZSl7ZSg4OCkoXCJXZWFrTWFwXCIpfSxmdW5jdGlvbih0LG4sZSl7ZSg4OCkoXCJXZWFrU2V0XCIpfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuRyx7Z2xvYmFsOmUoMil9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJTeXN0ZW1cIix7Z2xvYmFsOmUoMil9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDIzKTtyKHIuUyxcIkVycm9yXCIse2lzRXJyb3I6ZnVuY3Rpb24odCl7cmV0dXJuXCJFcnJvclwiPT09aSh0KX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJNYXRoXCIse2NsYW1wOmZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gTWF0aC5taW4oZSxNYXRoLm1heChuLHQpKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJNYXRoXCIse0RFR19QRVJfUkFEOk1hdGguUEkvMTgwfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9MTgwL01hdGguUEk7cihyLlMsXCJNYXRoXCIse2RlZ3JlZXM6ZnVuY3Rpb24odCl7cmV0dXJuIHQqaX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDE4Nyksbz1lKDE2Nyk7cihyLlMsXCJNYXRoXCIse2ZzY2FsZTpmdW5jdGlvbih0LG4sZSxyLHUpe3JldHVybiBvKGkodCxuLGUscix1KSl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiTWF0aFwiLHtpYWRkaDpmdW5jdGlvbih0LG4sZSxyKXt2YXIgaT10Pj4+MCxvPW4+Pj4wLHU9ZT4+PjA7cmV0dXJuIG8rKHI+Pj4wKSsoKGkmdXwoaXx1KSZ+KGkrdT4+PjApKT4+PjMxKXwwfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk1hdGhcIix7aXN1Ymg6ZnVuY3Rpb24odCxuLGUscil7dmFyIGk9dD4+PjAsbz1uPj4+MCx1PWU+Pj4wO3JldHVybiBvLShyPj4+MCktKCh+aSZ1fH4oaV51KSZpLXU+Pj4wKT4+PjMxKXwwfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk1hdGhcIix7aW11bGg6ZnVuY3Rpb24odCxuKXt2YXIgZT02NTUzNSxyPSt0LGk9K24sbz1yJmUsdT1pJmUsYT1yPj4xNixjPWk+PjE2LHM9KGEqdT4+PjApKyhvKnU+Pj4xNik7cmV0dXJuIGEqYysocz4+MTYpKygobypjPj4+MCkrKHMmZSk+PjE2KX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJNYXRoXCIse1JBRF9QRVJfREVHOjE4MC9NYXRoLlBJfSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApLGk9TWF0aC5QSS8xODA7cihyLlMsXCJNYXRoXCIse3JhZGlhbnM6ZnVuY3Rpb24odCl7cmV0dXJuIHQqaX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCk7cihyLlMsXCJNYXRoXCIse3NjYWxlOmUoMTg3KX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKTtyKHIuUyxcIk1hdGhcIix7dW11bGg6ZnVuY3Rpb24odCxuKXt2YXIgZT02NTUzNSxyPSt0LGk9K24sbz1yJmUsdT1pJmUsYT1yPj4+MTYsYz1pPj4+MTYscz0oYSp1Pj4+MCkrKG8qdT4+PjE2KTtyZXR1cm4gYSpjKyhzPj4+MTYpKygobypjPj4+MCkrKHMmZSk+Pj4xNil9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDApO3Ioci5TLFwiTWF0aFwiLHtzaWduYml0OmZ1bmN0aW9uKHQpe3JldHVybih0PSt0KSE9dD90OjA9PXQ/MS90PT0xLzA6dD4wfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoMzQpLG89ZSgyKSx1PWUoODMpLGE9ZSgxNzQpO3Ioci5QK3IuUixcIlByb21pc2VcIix7ZmluYWxseTpmdW5jdGlvbih0KXt2YXIgbj11KHRoaXMsaS5Qcm9taXNlfHxvLlByb21pc2UpLGU9XCJmdW5jdGlvblwiPT10eXBlb2YgdDtyZXR1cm4gdGhpcy50aGVuKGU/ZnVuY3Rpb24oZSl7cmV0dXJuIGEobix0KCkpLnRoZW4oZnVuY3Rpb24oKXtyZXR1cm4gZX0pfTp0LGU/ZnVuY3Rpb24oZSl7cmV0dXJuIGEobix0KCkpLnRoZW4oZnVuY3Rpb24oKXt0aHJvdyBlfSl9OnQpfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgwKSxpPWUoMTI1KSxvPWUoMTczKTtyKHIuUyxcIlByb21pc2VcIix7dHJ5OmZ1bmN0aW9uKHQpe3ZhciBuPWkuZih0aGlzKSxlPW8odCk7cmV0dXJuKGUuZT9uLnJlamVjdDpuLnJlc29sdmUpKGUudiksbi5wcm9taXNlfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzNiksaT1lKDEpLG89ci5rZXksdT1yLnNldDtyLmV4cCh7ZGVmaW5lTWV0YWRhdGE6ZnVuY3Rpb24odCxuLGUscil7dSh0LG4saShlKSxvKHIpKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzYpLGk9ZSgxKSxvPXIua2V5LHU9ci5tYXAsYT1yLnN0b3JlO3IuZXhwKHtkZWxldGVNZXRhZGF0YTpmdW5jdGlvbih0LG4pe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6byhhcmd1bWVudHNbMl0pLHI9dShpKG4pLGUsITEpO2lmKHZvaWQgMD09PXJ8fCFyLmRlbGV0ZSh0KSlyZXR1cm4hMTtpZihyLnNpemUpcmV0dXJuITA7dmFyIGM9YS5nZXQobik7cmV0dXJuIGMuZGVsZXRlKGUpLCEhYy5zaXplfHxhLmRlbGV0ZShuKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzYpLGk9ZSgxKSxvPWUoMjEpLHU9ci5oYXMsYT1yLmdldCxjPXIua2V5LHM9ZnVuY3Rpb24odCxuLGUpe2lmKHUodCxuLGUpKXJldHVybiBhKHQsbixlKTt2YXIgcj1vKG4pO3JldHVybiBudWxsIT09cj9zKHQscixlKTp2b2lkIDB9O3IuZXhwKHtnZXRNZXRhZGF0YTpmdW5jdGlvbih0LG4pe3JldHVybiBzKHQsaShuKSxhcmd1bWVudHMubGVuZ3RoPDM/dm9pZCAwOmMoYXJndW1lbnRzWzJdKSl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDE3NyksaT1lKDE4Niksbz1lKDM2KSx1PWUoMSksYT1lKDIxKSxjPW8ua2V5cyxzPW8ua2V5LGY9ZnVuY3Rpb24odCxuKXt2YXIgZT1jKHQsbiksbz1hKHQpO2lmKG51bGw9PT1vKXJldHVybiBlO3ZhciB1PWYobyxuKTtyZXR1cm4gdS5sZW5ndGg/ZS5sZW5ndGg/aShuZXcgcihlLmNvbmNhdCh1KSkpOnU6ZX07by5leHAoe2dldE1ldGFkYXRhS2V5czpmdW5jdGlvbih0KXtyZXR1cm4gZih1KHQpLGFyZ3VtZW50cy5sZW5ndGg8Mj92b2lkIDA6cyhhcmd1bWVudHNbMV0pKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzYpLGk9ZSgxKSxvPXIuZ2V0LHU9ci5rZXk7ci5leHAoe2dldE93bk1ldGFkYXRhOmZ1bmN0aW9uKHQsbil7cmV0dXJuIG8odCxpKG4pLGFyZ3VtZW50cy5sZW5ndGg8Mz92b2lkIDA6dShhcmd1bWVudHNbMl0pKX19KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzYpLGk9ZSgxKSxvPXIua2V5cyx1PXIua2V5O3IuZXhwKHtnZXRPd25NZXRhZGF0YUtleXM6ZnVuY3Rpb24odCl7cmV0dXJuIG8oaSh0KSxhcmd1bWVudHMubGVuZ3RoPDI/dm9pZCAwOnUoYXJndW1lbnRzWzFdKSl9fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDM2KSxpPWUoMSksbz1lKDIxKSx1PXIuaGFzLGE9ci5rZXksYz1mdW5jdGlvbih0LG4sZSl7aWYodSh0LG4sZSkpcmV0dXJuITA7dmFyIHI9byhuKTtyZXR1cm4gbnVsbCE9PXImJmModCxyLGUpfTtyLmV4cCh7aGFzTWV0YWRhdGE6ZnVuY3Rpb24odCxuKXtyZXR1cm4gYyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDphKGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzNiksaT1lKDEpLG89ci5oYXMsdT1yLmtleTtyLmV4cCh7aGFzT3duTWV0YWRhdGE6ZnVuY3Rpb24odCxuKXtyZXR1cm4gbyh0LGkobiksYXJndW1lbnRzLmxlbmd0aDwzP3ZvaWQgMDp1KGFyZ3VtZW50c1syXSkpfX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzNiksaT1lKDEpLG89ZSgxMSksdT1yLmtleSxhPXIuc2V0O3IuZXhwKHttZXRhZGF0YTpmdW5jdGlvbih0LG4pe3JldHVybiBmdW5jdGlvbihlLHIpe2EodCxuLCh2b2lkIDAhPT1yP2k6bykoZSksdShyKSl9fX0pfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgwKSxpPWUoMTI0KSgpLG89ZSgyKS5wcm9jZXNzLHU9XCJwcm9jZXNzXCI9PWUoMjMpKG8pO3Ioci5HLHthc2FwOmZ1bmN0aW9uKHQpe3ZhciBuPXUmJm8uZG9tYWluO2kobj9uLmJpbmQodCk6dCl9fSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDApLGk9ZSgyKSxvPWUoMzQpLHU9ZSgxMjQpKCksYT1lKDUpKFwib2JzZXJ2YWJsZVwiKSxjPWUoMTEpLHM9ZSgxKSxmPWUoNDkpLGw9ZSg1MSksaD1lKDE2KSxwPWUoNTApLHY9cC5SRVRVUk4sZD1mdW5jdGlvbih0KXtyZXR1cm4gbnVsbD09dD92b2lkIDA6Yyh0KX0seT1mdW5jdGlvbih0KXt2YXIgbj10Ll9jO24mJih0Ll9jPXZvaWQgMCxuKCkpfSxnPWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDA9PT10Ll9vfSxtPWZ1bmN0aW9uKHQpe2codCl8fCh0Ll9vPXZvaWQgMCx5KHQpKX0sXz1mdW5jdGlvbih0LG4pe3ModCksdGhpcy5fYz12b2lkIDAsdGhpcy5fbz10LHQ9bmV3IHcodGhpcyk7dHJ5e3ZhciBlPW4odCkscj1lO251bGwhPWUmJihcImZ1bmN0aW9uXCI9PXR5cGVvZiBlLnVuc3Vic2NyaWJlP2U9ZnVuY3Rpb24oKXtyLnVuc3Vic2NyaWJlKCl9OmMoZSksdGhpcy5fYz1lKX1jYXRjaChuKXtyZXR1cm4gdm9pZCB0LmVycm9yKG4pfWcodGhpcykmJnkodGhpcyl9O18ucHJvdG90eXBlPWwoe30se3Vuc3Vic2NyaWJlOmZ1bmN0aW9uKCl7bSh0aGlzKX19KTt2YXIgdz1mdW5jdGlvbih0KXt0aGlzLl9zPXR9O3cucHJvdG90eXBlPWwoe30se25leHQ6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fcztpZighZyhuKSl7dmFyIGU9bi5fbzt0cnl7dmFyIHI9ZChlLm5leHQpO2lmKHIpcmV0dXJuIHIuY2FsbChlLHQpfWNhdGNoKHQpe3RyeXttKG4pfWZpbmFsbHl7dGhyb3cgdH19fX0sZXJyb3I6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5fcztpZihnKG4pKXRocm93IHQ7dmFyIGU9bi5fbztuLl9vPXZvaWQgMDt0cnl7dmFyIHI9ZChlLmVycm9yKTtpZighcil0aHJvdyB0O3Q9ci5jYWxsKGUsdCl9Y2F0Y2godCl7dHJ5e3kobil9ZmluYWxseXt0aHJvdyB0fX1yZXR1cm4geShuKSx0fSxjb21wbGV0ZTpmdW5jdGlvbih0KXt2YXIgbj10aGlzLl9zO2lmKCFnKG4pKXt2YXIgZT1uLl9vO24uX289dm9pZCAwO3RyeXt2YXIgcj1kKGUuY29tcGxldGUpO3Q9cj9yLmNhbGwoZSx0KTp2b2lkIDB9Y2F0Y2godCl7dHJ5e3kobil9ZmluYWxseXt0aHJvdyB0fX1yZXR1cm4geShuKSx0fX19KTt2YXIgYj1mdW5jdGlvbih0KXtmKHRoaXMsYixcIk9ic2VydmFibGVcIixcIl9mXCIpLl9mPWModCl9O2woYi5wcm90b3R5cGUse3N1YnNjcmliZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IF8odCx0aGlzLl9mKX0sZm9yRWFjaDpmdW5jdGlvbih0KXt2YXIgbj10aGlzO3JldHVybiBuZXcoby5Qcm9taXNlfHxpLlByb21pc2UpKGZ1bmN0aW9uKGUscil7Yyh0KTt2YXIgaT1uLnN1YnNjcmliZSh7bmV4dDpmdW5jdGlvbihuKXt0cnl7cmV0dXJuIHQobil9Y2F0Y2godCl7cih0KSxpLnVuc3Vic2NyaWJlKCl9fSxlcnJvcjpyLGNvbXBsZXRlOmV9KX0pfX0pLGwoYix7ZnJvbTpmdW5jdGlvbih0KXt2YXIgbj1cImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzP3RoaXM6YixlPWQocyh0KVthXSk7aWYoZSl7dmFyIHI9cyhlLmNhbGwodCkpO3JldHVybiByLmNvbnN0cnVjdG9yPT09bj9yOm5ldyBuKGZ1bmN0aW9uKHQpe3JldHVybiByLnN1YnNjcmliZSh0KX0pfXJldHVybiBuZXcgbihmdW5jdGlvbihuKXt2YXIgZT0hMTtyZXR1cm4gdShmdW5jdGlvbigpe2lmKCFlKXt0cnl7aWYocCh0LCExLGZ1bmN0aW9uKHQpe2lmKG4ubmV4dCh0KSxlKXJldHVybiB2fSk9PT12KXJldHVybn1jYXRjaCh0KXtpZihlKXRocm93IHQ7cmV0dXJuIHZvaWQgbi5lcnJvcih0KX1uLmNvbXBsZXRlKCl9fSksZnVuY3Rpb24oKXtlPSEwfX0pfSxvZjpmdW5jdGlvbigpe2Zvcih2YXIgdD0wLG49YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheShuKTt0PG47KWVbdF09YXJndW1lbnRzW3QrK107cmV0dXJuIG5ldyhcImZ1bmN0aW9uXCI9PXR5cGVvZiB0aGlzP3RoaXM6YikoZnVuY3Rpb24odCl7dmFyIG49ITE7cmV0dXJuIHUoZnVuY3Rpb24oKXtpZighbil7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDsrK3IpaWYodC5uZXh0KGVbcl0pLG4pcmV0dXJuO3QuY29tcGxldGUoKX19KSxmdW5jdGlvbigpe249ITB9fSl9fSksaChiLnByb3RvdHlwZSxhLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSxyKHIuRyx7T2JzZXJ2YWJsZTpifSksZSg0OCkoXCJPYnNlcnZhYmxlXCIpfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgyKSxpPWUoMCksbz1lKDEyNyksdT1bXS5zbGljZSxhPS9NU0lFIC5cXC4vLnRlc3QobyksYz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24obixlKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoPjIsaT0hIXImJnUuY2FsbChhcmd1bWVudHMsMik7cmV0dXJuIHQocj9mdW5jdGlvbigpeyhcImZ1bmN0aW9uXCI9PXR5cGVvZiBuP246RnVuY3Rpb24obikpLmFwcGx5KHRoaXMsaSl9Om4sZSl9fTtpKGkuRytpLkIraS5GKmEse3NldFRpbWVvdXQ6YyhyLnNldFRpbWVvdXQpLHNldEludGVydmFsOmMoci5zZXRJbnRlcnZhbCl9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMCksaT1lKDEyMyk7cihyLkcrci5CLHtzZXRJbW1lZGlhdGU6aS5zZXQsY2xlYXJJbW1lZGlhdGU6aS5jbGVhcn0pfSxmdW5jdGlvbih0LG4sZSl7Zm9yKHZhciByPWUoMTIyKSxpPWUoNDQpLG89ZSgxNyksdT1lKDIpLGE9ZSgxNiksYz1lKDU3KSxzPWUoNSksZj1zKFwiaXRlcmF0b3JcIiksbD1zKFwidG9TdHJpbmdUYWdcIiksaD1jLkFycmF5LHA9e0NTU1J1bGVMaXN0OiEwLENTU1N0eWxlRGVjbGFyYXRpb246ITEsQ1NTVmFsdWVMaXN0OiExLENsaWVudFJlY3RMaXN0OiExLERPTVJlY3RMaXN0OiExLERPTVN0cmluZ0xpc3Q6ITEsRE9NVG9rZW5MaXN0OiEwLERhdGFUcmFuc2Zlckl0ZW1MaXN0OiExLEZpbGVMaXN0OiExLEhUTUxBbGxDb2xsZWN0aW9uOiExLEhUTUxDb2xsZWN0aW9uOiExLEhUTUxGb3JtRWxlbWVudDohMSxIVE1MU2VsZWN0RWxlbWVudDohMSxNZWRpYUxpc3Q6ITAsTWltZVR5cGVBcnJheTohMSxOYW1lZE5vZGVNYXA6ITEsTm9kZUxpc3Q6ITAsUGFpbnRSZXF1ZXN0TGlzdDohMSxQbHVnaW46ITEsUGx1Z2luQXJyYXk6ITEsU1ZHTGVuZ3RoTGlzdDohMSxTVkdOdW1iZXJMaXN0OiExLFNWR1BhdGhTZWdMaXN0OiExLFNWR1BvaW50TGlzdDohMSxTVkdTdHJpbmdMaXN0OiExLFNWR1RyYW5zZm9ybUxpc3Q6ITEsU291cmNlQnVmZmVyTGlzdDohMSxTdHlsZVNoZWV0TGlzdDohMCxUZXh0VHJhY2tDdWVMaXN0OiExLFRleHRUcmFja0xpc3Q6ITEsVG91Y2hMaXN0OiExfSx2PWkocCksZD0wO2Q8di5sZW5ndGg7ZCsrKXt2YXIgeSxnPXZbZF0sbT1wW2ddLF89dVtnXSx3PV8mJl8ucHJvdG90eXBlO2lmKHcmJih3W2ZdfHxhKHcsZixoKSx3W2xdfHxhKHcsbCxnKSxjW2ddPWgsbSkpZm9yKHkgaW4gcil3W3ldfHxvKHcseSxyW3ldLCEwKX19LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0MTQpfSxmdW5jdGlvbih0LG4sZSl7ZSg1OSksZSg0MjApLHQuZXhwb3J0cz1lKDYpLkFycmF5LmZyb219LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEyOCksaT1lKDEyOSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihuLGUpe3ZhciBvLHUsYT1TdHJpbmcoaShuKSksYz1yKGUpLHM9YS5sZW5ndGg7cmV0dXJuIGM8MHx8Yz49cz90P1wiXCI6dm9pZCAwOihvPWEuY2hhckNvZGVBdChjKSxvPDU1Mjk2fHxvPjU2MzE5fHxjKzE9PT1zfHwodT1hLmNoYXJDb2RlQXQoYysxKSk8NTYzMjB8fHU+NTczNDM/dD9hLmNoYXJBdChjKTpvOnQ/YS5zbGljZShjLGMrMik6dS01NjMyMCsoby01NTI5Njw8MTApKzY1NTM2KX19fSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSg5MSksaT1lKDY3KSxvPWUoNzApLHU9e307ZSg0MCkodSxlKDEzKShcIml0ZXJhdG9yXCIpLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSx0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUpe3QucHJvdG90eXBlPXIodSx7bmV4dDppKDEsZSl9KSxvKHQsbitcIiBJdGVyYXRvclwiKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI1KSxpPWUoMzIpLG89ZSg2OCk7dC5leHBvcnRzPWUoMzMpP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzOmZ1bmN0aW9uKHQsbil7aSh0KTtmb3IodmFyIGUsdT1vKG4pLGE9dS5sZW5ndGgsYz0wO2E+Yzspci5mKHQsZT11W2MrK10sbltlXSk7cmV0dXJuIHR9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg1NCksaT1lKDkyKSxvPWUoNDE5KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4sZSx1KXt2YXIgYSxjPXIobikscz1pKGMubGVuZ3RoKSxmPW8odSxzKTtpZih0JiZlIT1lKXtmb3IoO3M+ZjspaWYoKGE9Y1tmKytdKSE9YSlyZXR1cm4hMH1lbHNlIGZvcig7cz5mO2YrKylpZigodHx8ZiBpbiBjKSYmY1tmXT09PWUpcmV0dXJuIHR8fGZ8fDA7cmV0dXJuIXQmJi0xfX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEyOCksaT1NYXRoLm1heCxvPU1hdGgubWluO3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiB0PXIodCksdDwwP2kodCtuLDApOm8odCxuKX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDM3KSxpPWUoMTIpLG89ZSg2MSksdT1lKDE5NCksYT1lKDE5NSksYz1lKDkyKSxzPWUoNDIxKSxmPWUoMTM3KTtpKGkuUytpLkYqIWUoMTk2KShmdW5jdGlvbih0KXtBcnJheS5mcm9tKHQpfSksXCJBcnJheVwiLHtmcm9tOmZ1bmN0aW9uKHQpe3ZhciBuLGUsaSxsLGg9byh0KSxwPVwiZnVuY3Rpb25cIj09dHlwZW9mIHRoaXM/dGhpczpBcnJheSx2PWFyZ3VtZW50cy5sZW5ndGgsZD12PjE/YXJndW1lbnRzWzFdOnZvaWQgMCx5PXZvaWQgMCE9PWQsZz0wLG09ZihoKTtpZih5JiYoZD1yKGQsdj4yP2FyZ3VtZW50c1syXTp2b2lkIDAsMikpLHZvaWQgMD09bXx8cD09QXJyYXkmJmEobSkpZm9yKG49YyhoLmxlbmd0aCksZT1uZXcgcChuKTtuPmc7ZysrKXMoZSxnLHk/ZChoW2ddLGcpOmhbZ10pO2Vsc2UgZm9yKGw9bS5jYWxsKGgpLGU9bmV3IHA7IShpPWwubmV4dCgpKS5kb25lO2crKylzKGUsZyx5P3UobCxkLFtpLnZhbHVlLGddLCEwKTppLnZhbHVlKTtyZXR1cm4gZS5sZW5ndGg9ZyxlfX0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgyNSksaT1lKDY3KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUpe24gaW4gdD9yLmYodCxuLGkoMCxlKSk6dFtuXT1lfX0sZnVuY3Rpb24odCxuLGUpe3QuZXhwb3J0cz1lKDQyMyl9LGZ1bmN0aW9uKHQsbixlKXtlKDcxKSxlKDU5KSx0LmV4cG9ydHM9ZSg0MjYpfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSg0MjUpLGk9ZSgxOTcpLG89ZSg2MCksdT1lKDU0KTt0LmV4cG9ydHM9ZSgxMzApKEFycmF5LFwiQXJyYXlcIixmdW5jdGlvbih0LG4pe3RoaXMuX3Q9dSh0KSx0aGlzLl9pPTAsdGhpcy5faz1ufSxmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Qsbj10aGlzLl9rLGU9dGhpcy5faSsrO3JldHVybiF0fHxlPj10Lmxlbmd0aD8odGhpcy5fdD12b2lkIDAsaSgxKSk6XCJrZXlzXCI9PW4/aSgwLGUpOlwidmFsdWVzXCI9PW4/aSgwLHRbZV0pOmkoMCxbZSx0W2VdXSl9LFwidmFsdWVzXCIpLG8uQXJndW1lbnRzPW8uQXJyYXkscihcImtleXNcIikscihcInZhbHVlc1wiKSxyKFwiZW50cmllc1wiKX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSg5NCksaT1lKDEzKShcIml0ZXJhdG9yXCIpLG89ZSg2MCk7dC5leHBvcnRzPWUoNikuaXNJdGVyYWJsZT1mdW5jdGlvbih0KXt2YXIgbj1PYmplY3QodCk7cmV0dXJuIHZvaWQgMCE9PW5baV18fFwiQEBpdGVyYXRvclwiaW4gbnx8by5oYXNPd25Qcm9wZXJ0eShyKG4pKX19LGZ1bmN0aW9uKHQsbixlKXtlKDcxKSxlKDU5KSx0LmV4cG9ydHM9ZSg0MjgpfSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgzMiksaT1lKDEzNyk7dC5leHBvcnRzPWUoNikuZ2V0SXRlcmF0b3I9ZnVuY3Rpb24odCl7dmFyIG49aSh0KTtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiBuKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBpdGVyYWJsZSFcIik7cmV0dXJuIHIobi5jYWxsKHQpKX19LGZ1bmN0aW9uKHQsbixlKXtlKDQzMCksdC5leHBvcnRzPWUoNikuT2JqZWN0LmFzc2lnbn0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTIpO3Ioci5TK3IuRixcIk9iamVjdFwiLHthc3NpZ246ZSg0MzEpfSl9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDY4KSxpPWUoMTM5KSxvPWUoOTcpLHU9ZSg2MSksYT1lKDEzMyksYz1PYmplY3QuYXNzaWduO3QuZXhwb3J0cz0hY3x8ZSg1MikoZnVuY3Rpb24oKXt2YXIgdD17fSxuPXt9LGU9U3ltYm9sKCkscj1cImFiY2RlZmdoaWprbG1ub3BxcnN0XCI7cmV0dXJuIHRbZV09NyxyLnNwbGl0KFwiXCIpLmZvckVhY2goZnVuY3Rpb24odCl7blt0XT10fSksNyE9Yyh7fSx0KVtlXXx8T2JqZWN0LmtleXMoYyh7fSxuKSkuam9pbihcIlwiKSE9cn0pP2Z1bmN0aW9uKHQsbil7Zm9yKHZhciBlPXUodCksYz1hcmd1bWVudHMubGVuZ3RoLHM9MSxmPWkuZixsPW8uZjtjPnM7KWZvcih2YXIgaCxwPWEoYXJndW1lbnRzW3MrK10pLHY9Zj9yKHApLmNvbmNhdChmKHApKTpyKHApLGQ9di5sZW5ndGgseT0wO2Q+eTspbC5jYWxsKHAsaD12W3krK10pJiYoZVtoXT1wW2hdKTtyZXR1cm4gZX06Y30sZnVuY3Rpb24odCxuLGUpe2UoMTQxKSxlKDU5KSxlKDcxKSxlKDQzMyksZSg0MzYpLGUoNDM3KSx0LmV4cG9ydHM9ZSg2KS5Qcm9taXNlfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHIsaSxvLHUsYT1lKDkwKSxjPWUoMTQpLHM9ZSgzNyksZj1lKDk0KSxsPWUoMTIpLGg9ZSgyNikscD1lKDY2KSx2PWUoMTQyKSxkPWUoNzIpLHk9ZSgxOTkpLGc9ZSgyMDApLnNldCxtPWUoNDM1KSgpLF89ZSgxNDMpLHc9ZSgyMDEpLGI9ZSgyMDIpLHg9XCJQcm9taXNlXCIsUz1jLlR5cGVFcnJvcixPPWMucHJvY2VzcyxQPWNbeF0saz1cInByb2Nlc3NcIj09ZihPKSxFPWZ1bmN0aW9uKCl7fSxqPWk9Xy5mLEE9ISFmdW5jdGlvbigpe3RyeXt2YXIgdD1QLnJlc29sdmUoMSksbj0odC5jb25zdHJ1Y3Rvcj17fSlbZSgxMykoXCJzcGVjaWVzXCIpXT1mdW5jdGlvbih0KXt0KEUsRSl9O3JldHVybihrfHxcImZ1bmN0aW9uXCI9PXR5cGVvZiBQcm9taXNlUmVqZWN0aW9uRXZlbnQpJiZ0LnRoZW4oRSlpbnN0YW5jZW9mIG59Y2F0Y2godCl7fX0oKSxNPWZ1bmN0aW9uKHQpe3ZhciBuO3JldHVybiEoIWgodCl8fFwiZnVuY3Rpb25cIiE9dHlwZW9mKG49dC50aGVuKSkmJm59LFQ9ZnVuY3Rpb24odCxuKXtpZighdC5fbil7dC5fbj0hMDt2YXIgZT10Ll9jO20oZnVuY3Rpb24oKXtmb3IodmFyIHI9dC5fdixpPTE9PXQuX3Msbz0wLHU9ZnVuY3Rpb24obil7dmFyIGUsbyx1PWk/bi5vazpuLmZhaWwsYT1uLnJlc29sdmUsYz1uLnJlamVjdCxzPW4uZG9tYWluO3RyeXt1PyhpfHwoMj09dC5faCYmSSh0KSx0Ll9oPTEpLCEwPT09dT9lPXI6KHMmJnMuZW50ZXIoKSxlPXUocikscyYmcy5leGl0KCkpLGU9PT1uLnByb21pc2U/YyhTKFwiUHJvbWlzZS1jaGFpbiBjeWNsZVwiKSk6KG89TShlKSk/by5jYWxsKGUsYSxjKTphKGUpKTpjKHIpfWNhdGNoKHQpe2ModCl9fTtlLmxlbmd0aD5vOyl1KGVbbysrXSk7dC5fYz1bXSx0Ll9uPSExLG4mJiF0Ll9oJiZGKHQpfSl9fSxGPWZ1bmN0aW9uKHQpe2cuY2FsbChjLGZ1bmN0aW9uKCl7dmFyIG4sZSxyLGk9dC5fdixvPUwodCk7aWYobyYmKG49dyhmdW5jdGlvbigpe2s/Ty5lbWl0KFwidW5oYW5kbGVkUmVqZWN0aW9uXCIsaSx0KTooZT1jLm9udW5oYW5kbGVkcmVqZWN0aW9uKT9lKHtwcm9taXNlOnQscmVhc29uOml9KToocj1jLmNvbnNvbGUpJiZyLmVycm9yJiZyLmVycm9yKFwiVW5oYW5kbGVkIHByb21pc2UgcmVqZWN0aW9uXCIsaSl9KSx0Ll9oPWt8fEwodCk/MjoxKSx0Ll9hPXZvaWQgMCxvJiZuLmUpdGhyb3cgbi52fSl9LEw9ZnVuY3Rpb24odCl7cmV0dXJuIDEhPT10Ll9oJiYwPT09KHQuX2F8fHQuX2MpLmxlbmd0aH0sST1mdW5jdGlvbih0KXtnLmNhbGwoYyxmdW5jdGlvbigpe3ZhciBuO2s/Ty5lbWl0KFwicmVqZWN0aW9uSGFuZGxlZFwiLHQpOihuPWMub25yZWplY3Rpb25oYW5kbGVkKSYmbih7cHJvbWlzZTp0LHJlYXNvbjp0Ll92fSl9KX0sTj1mdW5jdGlvbih0KXt2YXIgbj10aGlzO24uX2R8fChuLl9kPSEwLG49bi5fd3x8bixuLl92PXQsbi5fcz0yLG4uX2F8fChuLl9hPW4uX2Muc2xpY2UoKSksVChuLCEwKSl9LEQ9ZnVuY3Rpb24odCl7dmFyIG4sZT10aGlzO2lmKCFlLl9kKXtlLl9kPSEwLGU9ZS5fd3x8ZTt0cnl7aWYoZT09PXQpdGhyb3cgUyhcIlByb21pc2UgY2FuJ3QgYmUgcmVzb2x2ZWQgaXRzZWxmXCIpOyhuPU0odCkpP20oZnVuY3Rpb24oKXt2YXIgcj17X3c6ZSxfZDohMX07dHJ5e24uY2FsbCh0LHMoRCxyLDEpLHMoTixyLDEpKX1jYXRjaCh0KXtOLmNhbGwocix0KX19KTooZS5fdj10LGUuX3M9MSxUKGUsITEpKX1jYXRjaCh0KXtOLmNhbGwoe193OmUsX2Q6ITF9LHQpfX19O0F8fChQPWZ1bmN0aW9uKHQpe3YodGhpcyxQLHgsXCJfaFwiKSxwKHQpLHIuY2FsbCh0aGlzKTt0cnl7dChzKEQsdGhpcywxKSxzKE4sdGhpcywxKSl9Y2F0Y2godCl7Ti5jYWxsKHRoaXMsdCl9fSxyPWZ1bmN0aW9uKHQpe3RoaXMuX2M9W10sdGhpcy5fYT12b2lkIDAsdGhpcy5fcz0wLHRoaXMuX2Q9ITEsdGhpcy5fdj12b2lkIDAsdGhpcy5faD0wLHRoaXMuX249ITF9LHIucHJvdG90eXBlPWUoMTQ0KShQLnByb3RvdHlwZSx7dGhlbjpmdW5jdGlvbih0LG4pe3ZhciBlPWooeSh0aGlzLFApKTtyZXR1cm4gZS5vaz1cImZ1bmN0aW9uXCIhPXR5cGVvZiB0fHx0LGUuZmFpbD1cImZ1bmN0aW9uXCI9PXR5cGVvZiBuJiZuLGUuZG9tYWluPWs/Ty5kb21haW46dm9pZCAwLHRoaXMuX2MucHVzaChlKSx0aGlzLl9hJiZ0aGlzLl9hLnB1c2goZSksdGhpcy5fcyYmVCh0aGlzLCExKSxlLnByb21pc2V9LGNhdGNoOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnRoZW4odm9pZCAwLHQpfX0pLG89ZnVuY3Rpb24oKXt2YXIgdD1uZXcgcjt0aGlzLnByb21pc2U9dCx0aGlzLnJlc29sdmU9cyhELHQsMSksdGhpcy5yZWplY3Q9cyhOLHQsMSl9LF8uZj1qPWZ1bmN0aW9uKHQpe3JldHVybiB0PT09UHx8dD09PXU/bmV3IG8odCk6aSh0KX0pLGwobC5HK2wuVytsLkYqIUEse1Byb21pc2U6UH0pLGUoNzApKFAseCksZSgyMDMpKHgpLHU9ZSg2KVt4XSxsKGwuUytsLkYqIUEseCx7cmVqZWN0OmZ1bmN0aW9uKHQpe3ZhciBuPWoodGhpcyk7cmV0dXJuKDAsbi5yZWplY3QpKHQpLG4ucHJvbWlzZX19KSxsKGwuUytsLkYqKGF8fCFBKSx4LHtyZXNvbHZlOmZ1bmN0aW9uKHQpe3JldHVybiBiKGEmJnRoaXM9PT11P1A6dGhpcyx0KX19KSxsKGwuUytsLkYqIShBJiZlKDE5NikoZnVuY3Rpb24odCl7UC5hbGwodCkuY2F0Y2goRSl9KSkseCx7YWxsOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMsZT1qKG4pLHI9ZS5yZXNvbHZlLGk9ZS5yZWplY3Qsbz13KGZ1bmN0aW9uKCl7dmFyIGU9W10sbz0wLHU9MTtkKHQsITEsZnVuY3Rpb24odCl7dmFyIGE9bysrLGM9ITE7ZS5wdXNoKHZvaWQgMCksdSsrLG4ucmVzb2x2ZSh0KS50aGVuKGZ1bmN0aW9uKHQpe2N8fChjPSEwLGVbYV09dCwtLXV8fHIoZSkpfSxpKX0pLC0tdXx8cihlKX0pO3JldHVybiBvLmUmJmkoby52KSxlLnByb21pc2V9LHJhY2U6ZnVuY3Rpb24odCl7dmFyIG49dGhpcyxlPWoobikscj1lLnJlamVjdCxpPXcoZnVuY3Rpb24oKXtkKHQsITEsZnVuY3Rpb24odCl7bi5yZXNvbHZlKHQpLnRoZW4oZS5yZXNvbHZlLHIpfSl9KTtyZXR1cm4gaS5lJiZyKGkudiksZS5wcm9taXNlfX0pfSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSl7dmFyIHI9dm9pZCAwPT09ZTtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMDpyZXR1cm4gcj90KCk6dC5jYWxsKGUpO2Nhc2UgMTpyZXR1cm4gcj90KG5bMF0pOnQuY2FsbChlLG5bMF0pO2Nhc2UgMjpyZXR1cm4gcj90KG5bMF0sblsxXSk6dC5jYWxsKGUsblswXSxuWzFdKTtjYXNlIDM6cmV0dXJuIHI/dChuWzBdLG5bMV0sblsyXSk6dC5jYWxsKGUsblswXSxuWzFdLG5bMl0pO2Nhc2UgNDpyZXR1cm4gcj90KG5bMF0sblsxXSxuWzJdLG5bM10pOnQuY2FsbChlLG5bMF0sblsxXSxuWzJdLG5bM10pfXJldHVybiB0LmFwcGx5KGUsbil9fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxNCksaT1lKDIwMCkuc2V0LG89ci5NdXRhdGlvbk9ic2VydmVyfHxyLldlYktpdE11dGF0aW9uT2JzZXJ2ZXIsdT1yLnByb2Nlc3MsYT1yLlByb21pc2UsYz1cInByb2Nlc3NcIj09ZSg2OSkodSk7dC5leHBvcnRzPWZ1bmN0aW9uKCl7dmFyIHQsbixlLHM9ZnVuY3Rpb24oKXt2YXIgcixpO2ZvcihjJiYocj11LmRvbWFpbikmJnIuZXhpdCgpO3Q7KXtpPXQuZm4sdD10Lm5leHQ7dHJ5e2koKX1jYXRjaChyKXt0aHJvdyB0P2UoKTpuPXZvaWQgMCxyfX1uPXZvaWQgMCxyJiZyLmVudGVyKCl9O2lmKGMpZT1mdW5jdGlvbigpe3UubmV4dFRpY2socyl9O2Vsc2UgaWYoIW98fHIubmF2aWdhdG9yJiZyLm5hdmlnYXRvci5zdGFuZGFsb25lKWlmKGEmJmEucmVzb2x2ZSl7dmFyIGY9YS5yZXNvbHZlKCk7ZT1mdW5jdGlvbigpe2YudGhlbihzKX19ZWxzZSBlPWZ1bmN0aW9uKCl7aS5jYWxsKHIscyl9O2Vsc2V7dmFyIGw9ITAsaD1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtuZXcgbyhzKS5vYnNlcnZlKGgse2NoYXJhY3RlckRhdGE6ITB9KSxlPWZ1bmN0aW9uKCl7aC5kYXRhPWw9IWx9fXJldHVybiBmdW5jdGlvbihyKXt2YXIgaT17Zm46cixuZXh0OnZvaWQgMH07biYmKG4ubmV4dD1pKSx0fHwodD1pLGUoKSksbj1pfX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDEyKSxpPWUoNiksbz1lKDE0KSx1PWUoMTk5KSxhPWUoMjAyKTtyKHIuUCtyLlIsXCJQcm9taXNlXCIse2ZpbmFsbHk6ZnVuY3Rpb24odCl7dmFyIG49dSh0aGlzLGkuUHJvbWlzZXx8by5Qcm9taXNlKSxlPVwiZnVuY3Rpb25cIj09dHlwZW9mIHQ7cmV0dXJuIHRoaXMudGhlbihlP2Z1bmN0aW9uKGUpe3JldHVybiBhKG4sdCgpKS50aGVuKGZ1bmN0aW9uKCl7cmV0dXJuIGV9KX06dCxlP2Z1bmN0aW9uKGUpe3JldHVybiBhKG4sdCgpKS50aGVuKGZ1bmN0aW9uKCl7dGhyb3cgZX0pfTp0KX19KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMTIpLGk9ZSgxNDMpLG89ZSgyMDEpO3Ioci5TLFwiUHJvbWlzZVwiLHt0cnk6ZnVuY3Rpb24odCl7dmFyIG49aS5mKHRoaXMpLGU9byh0KTtyZXR1cm4oZS5lP24ucmVqZWN0Om4ucmVzb2x2ZSkoZS52KSxuLnByb21pc2V9fSl9LGZ1bmN0aW9uKHQsbixlKXtlKDQzOSksdC5leHBvcnRzPWUoNikuT2JqZWN0LmtleXN9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDYxKSxpPWUoNjgpO2UoOTkpKFwia2V5c1wiLGZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBpKHIodCkpfX0pfSxmdW5jdGlvbih0LG4sZSl7ZSg0NDEpO3ZhciByPWUoNikuT2JqZWN0O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4sZSl7cmV0dXJuIHIuZGVmaW5lUHJvcGVydHkodCxuLGUpfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTIpO3Ioci5TK3IuRiohZSgzMyksXCJPYmplY3RcIix7ZGVmaW5lUHJvcGVydHk6ZSgyNSkuZn0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5kKG4sXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gbH0pO3ZhciByPWUoMjA1KSxpPWUubihyKSxvPWUoNjIpLHU9ZS5uKG8pLGE9ZSg3MyksYz1lLm4oYSkscz1lKDg5KSxmPWUubihzKSxsPWZ1bmN0aW9uKHQpe3ZhciBuPXQuRHdGYWN0b3J5LGU9dC5Ed1Byb3h5LHI9dC5hcHBDb25maWcsbz10LnNsaWRlLGE9dC5hY3RvcnMscz10Lnd4LGw9KHQuaXNTd2FuLHQuaXNNeSx0LmFwcCksaD10LmdldEN1cnJlbnRQYWdlcyxwPXQuY29tcG9uZW50c1BhY2thZ2VzLHY9MCxkPXIuYXBwLnRhYkJhciYmci5hcHAudGFiQmFyJiZyLmFwcC50YWJCYXIubGlzdD9yLmFwcC50YWJCYXIubGlzdC5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHQucGFnZVBhdGh9KTpbXSx5PXIuYXBwLnN1YlBhY2thZ2VzfHxbXSxnPXt9LG09bmV3IGYuYS5FdmVudEVtaXR0ZXI7bS5zZXRNYXhMaXN0ZW5lcnMoMTAwKTt2YXIgXz1mdW5jdGlvbih0KXt2YXIgbj1jKCkodCkuc29ydCgpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbitcIj1cIit0W25dfSkuam9pbihcIiZcIik7cmV0dXJuIG4/XCI/XCIrbjpcIlwifTthLm1hcChmdW5jdGlvbih0KXt0LmNvbXBvbmVudD1vLmNvbXBvbmVudHNbdC5rZXldLHQuZHc9bmV3IGUodC5jb21wb25lbnQsdCxsLHtjb21wb25lbnRzUGFja2FnZXM6cH0pLHQuYWN0b3I9dC5mdW5jKHQuZHcpO3ZhciBuPXtkYXRhOnQuYWN0b3IuZGF0YSxjb21wdXRlZDp0LmFjdG9yLmNvbXB1dGVkLHdhdGNoOnQuYWN0b3Iud2F0Y2gscm9vdFNsaWRlOm8sYWN0b3JzOmEscGFnZUxvY2FsczpnLHBhZ2VFdmVudDptfTtpZih0LmR3Ll91cGRhdGVBY3RvckRhdGEobiksdC5kdy5fc2V0RXh0cmFEYXRhKHtiZW5jaFNsaWRlOm99KSxcIm9iamVjdFwiPT09dSgpKHQuYWN0b3IubWV0aG9kcykpZm9yKHZhciByIGluIHQuYWN0b3IubWV0aG9kcyl0LmR3Lm1ldGhvZHNbcl09dC5hY3Rvci5tZXRob2RzW3JdO3QuY29tcG9uZW50LmR3ZGF0YT10LmFjdG9yLmRhdGF9KTt2YXIgdz1mdW5jdGlvbih0KXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheShuPjE/bi0xOjApLHI9MTtyPG47cisrKWVbci0xXT1hcmd1bWVudHNbcl07YS5tYXAoZnVuY3Rpb24obil7aWYodCBpbiBuLmFjdG9yKWlmKFtcIm9uTG9hZFwiLFwib25TaG93XCJdLmluY2x1ZGVzKHQpKW4uZHcuZGVjb3JhdGVNZXRob2Qobi5hY3Rvclt0XSkuYXBwbHkodm9pZCAwLGUpO2Vsc2V7dmFyIHI7KHI9bi5hY3Rvclt0XSkuY2FsbC5hcHBseShyLFtuLmR3XS5jb25jYXQoZSkpfX0pfSxiPXtkYXRhOntzbGlkZTpvLGNvbXBhbnk6ci5jb21wYW55LHF1ZXJ5Ont9LGV4dHJhUXVlcnk6e30sc2hhcmU6e3RpdGxlOm51bGwsaW1hZ2VVcmw6bnVsbCxzdWNjZXNzOltdLGZhaWw6W10sY29tcGxldGU6W119LG92ZXJpZGVzOntvblNoYXJlQXBwTWVzc2FnZTpudWxsfX0sZ2V0UGFnZUxvY2FsczpmdW5jdGlvbih0KXtyZXR1cm4gZ1t0XX0sc2V0UGFnZUxvY2FsczpmdW5jdGlvbih0LG4pe2dbdF09bn0sZ2V0Q3VycmVudFBhZ2VzOmZ1bmN0aW9uKCl7cmV0dXJuIGgoKX0sb25Mb2FkOmZ1bmN0aW9uKHQpe2lmKGNvbnNvbGUubG9nKFwiUGFnZUZhY3Rvcnkub25sb2FkIGt3YXJnczpcIix0KSx0LnBzaG9wX2lkJiYvXlxcZCskLy50ZXN0KHQucHNob3BfaWQpKXt2YXIgZT1wYXJzZUludCh0LnBzaG9wX2lkKTtzLnNldFN0b3JhZ2VTeW5jKFwicHNob3BfaWRcIixlKSxuLkR3VXRpbHMucmVxdWVzdChcInBvc3QvY29tcGFueV9hY2NvdW50L2FmdGVyX2R3YXBwX2xvZ2luX3dpdGhfcHNob3BfaWRcIix7cHNob3BfaWQ6ZX0pLnRoZW4oZnVuY3Rpb24odCl7Y29uc29sZS5sb2coXCJwb3N0L2NvbXBhbnlfYWNjb3VudC9hZnRlcl9kd2FwcF9sb2dpbl93aXRoX3BzaG9wX2lkXCIsZSx0KX0pfXZhciByPXRoaXM7dGhpcy5zZXREYXRhKHtxdWVyeTp0fSksYS5tYXAoZnVuY3Rpb24obil7bi5kdy5fYWZ0ZXJPbkxvYWQocix0LHthcHA6bCx0YWJCYXJQYXRoczpkfSl9KSx3KFwib25Mb2FkXCIsdCl9LG9uUmVhZHk6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxlPTA7ZTx0O2UrKyluW2VdPWFyZ3VtZW50c1tlXTt3LmFwcGx5KHZvaWQgMCxbXCJvblJlYWR5XCJdLmNvbmNhdChuKSl9LG9uU2hvdzpmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLGU9MDtlPHQ7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3cuYXBwbHkodm9pZCAwLFtcIm9uU2hvd1wiXS5jb25jYXQobikpfSxvbkhpZGU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxlPTA7ZTx0O2UrKyluW2VdPWFyZ3VtZW50c1tlXTt3LmFwcGx5KHZvaWQgMCxbXCJvbkhpZGVcIl0uY29uY2F0KG4pKX0sb25VbmxvYWQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxlPTA7ZTx0O2UrKyluW2VdPWFyZ3VtZW50c1tlXTt3LmFwcGx5KHZvaWQgMCxbXCJvblVubG9hZFwiXS5jb25jYXQobikpfSxvblB1bGxEb3duUmVmcmVzaDpmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLGU9MDtlPHQ7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3cuYXBwbHkodm9pZCAwLFtcIm9uUHVsbERvd25SZWZyZXNoXCJdLmNvbmNhdChuKSl9LG9uUmVhY2hCb3R0b206ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxuPW5ldyBBcnJheSh0KSxlPTA7ZTx0O2UrKyluW2VdPWFyZ3VtZW50c1tlXTt3LmFwcGx5KHZvaWQgMCxbXCJvblJlYWNoQm90dG9tXCJdLmNvbmNhdChuKSl9LG9uUGFnZVNjcm9sbDpmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHQpLGU9MDtlPHQ7ZSsrKW5bZV09YXJndW1lbnRzW2VdO3cuYXBwbHkodm9pZCAwLFtcIm9uUGFnZVNjcm9sbFwiXS5jb25jYXQobikpfSxvbkVycm9yOmZ1bmN0aW9uKHQpe24uRHdVdGlscy5mZXRjaChcInBvc3QvZHdhcHAvY2FwdHVyZV9lcnJvclwiLHtlcnJvcjp0fSl9LG9uU2hhcmVBcHBNZXNzYWdlOmZ1bmN0aW9uKHQpe2lmKHRoaXMuZGF0YS5vdmVyaWRlcy5vblNoYXJlQXBwTWVzc2FnZSlyZXR1cm4gdGhpcy5kYXRhLm92ZXJpZGVzLm9uU2hhcmVBcHBNZXNzYWdlKHQpO3ZhciBuPXRoaXMsZT1oKCkscj1lW2UubGVuZ3RoLTFdLHU9ci5yb3V0ZSxhPUpTT04ucGFyc2UoaSgpKHRoaXMuZGF0YS5xdWVyeSkpO2Zvcih2YXIgZiBpbiB0aGlzLmRhdGEuZXh0cmFRdWVyeSlhW2ZdPXRoaXMuZGF0YS5leHRyYVF1ZXJ5W2ZdO3ZhciBsO3RyeXtsPXMuZ2V0U3RvcmFnZVN5bmMoXCJzaXRldXNlcl9pZFwiKX1jYXRjaCh0KXtsPW51bGx9bCYmKGEucHNob3BfaWQ9bCk7dmFyIHA9YygpKGEpLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdCtcIj1cIithW3RdfSkuam9pbihcIiZcIik7cD1wP1wiP1wiK3A6XCJcIixjb25zb2xlLmxvZyhcIlBhZ2VGYWN0b3J5Om9uU2hhcmVBcHBNZXNzYWdlOiB0aXRsZT1cIi5jb25jYXQoby5hbGlhcyxcIiBwYXRoPVwiKS5jb25jYXQodStwKSk7dmFyIHY9e3RpdGxlOm8uYWxpYXMscGF0aDp1K3Asc3VjY2VzczpmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09YXJndW1lbnRzW3JdO24uZGF0YS5zaGFyZS5zdWNjZXNzLmZvckVhY2goZnVuY3Rpb24odCl7cmV0dXJuIHQuYXBwbHkodm9pZCAwLGUpfSl9LGZhaWw6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aCxlPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyllW3JdPWFyZ3VtZW50c1tyXTtuLmRhdGEuc2hhcmUuZmFpbC5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFwcGx5KHZvaWQgMCxlKX0pfSxjb21wbGV0ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09YXJndW1lbnRzW3JdO24uZGF0YS5zaGFyZS5jb21wbGV0ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmFwcGx5KHZvaWQgMCxlKX0pfX07cmV0dXJuIHRoaXMuZGF0YS5zaGFyZS50aXRsZSYmKHYudGl0bGU9dGhpcy5kYXRhLnNoYXJlLnRpdGxlKSx0aGlzLmRhdGEuc2hhcmUuaW1hZ2VVcmwmJih2LmltYWdlVXJsPXRoaXMuZGF0YS5zaGFyZS5pbWFnZVVybCksdn0sZ29Ub0hyZWY6ZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGU9bi5yZWRpcmVjdFRvLHI9dm9pZCAwIT09ZSYmZSxpPXQuc3BsaXQoXCI/XCIpLG89aVswXSx1PW8uc3BsaXQoXCItXCIpO2lmKFwidGVsXCI9PT11WzBdJiZ1WzFdKXJldHVybiBzLm1ha2VQaG9uZUNhbGwoe3Bob25lTnVtYmVyOnVbMV19KTtpZihcInd4YXBwXCI9PT11WzBdJiZ1WzFdKXJldHVybiBzLm5hdmlnYXRlVG9NaW5pUHJvZ3JhbSh7YXBwSWQ6dVsxXX0pO2lmKGlbMV0pe3ZhciBhPWlbMV0uc3BsaXQoXCI9XCIpLGM9YVswXSxmPWFbMV07XCJjYXRfaWRcIj09PWMmJnMuc2V0U3RvcmFnZVN5bmMoYyxmKX12YXIgbD1pWzFdP1wiP1wiK2lbMV06XCJcIjt0aGlzLmdvVG9Mb2NhdGlvbihvLGwse3JlZGlyZWN0VG86cn0pfSxnb1RvUGFnZTpmdW5jdGlvbih0LG4pe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTp7fSxyPWFyZ3VtZW50cy5sZW5ndGg+MyYmdm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fSxpPXIucmVkaXJlY3RUbyxvPXZvaWQgMCE9PWkmJmksdT1fKGUpLGE9XCJwYXBwX1wiK3QrXCItXCIrbjt0aGlzLmdvVG9Mb2NhdGlvbihhLHUse3JlZGlyZWN0VG86b30pfSxnb1RvUGFwcFBhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nb1RvUGFnZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGdldEN1cnJlbnRQYXRoOmZ1bmN0aW9uKCl7dmFyIHQ9aCgpO2lmKHQubGVuZ3RoKXtyZXR1cm4gdFt0Lmxlbmd0aC0xXS5yb3V0ZX19LGlzVGFiYmFyOmZ1bmN0aW9uKCl7cmV0dXJuIGQuaW5kZXhPZih0aGlzLmdldEN1cnJlbnRQYXRoKCkpPi0xfSxnb1RvTG9jYXRpb246ZnVuY3Rpb24odCxuKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06e30scj1lLnJlZGlyZWN0VG8saT12b2lkIDAhPT1yJiZyLG89aCgpLHU9XCJwYWdlcy9cIit0K1wiL2luZGV4XCIsYT1kLmluZGV4T2YodSk+LTEsYz15LmZpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQucGFnZXMuaW5kZXhPZih1KT4tMX0pLGY9Yz9jLnJvb3Q6bnVsbCxsPWY/XCIvXCIrZitcIi9wYWdlcy9cIit0K1wiL2luZGV4XCIrbjpcIi9wYWdlcy9cIit0K1wiL2luZGV4XCIrbjtpZihhKXMuc3dpdGNoVGFiKHt1cmw6bH0pO2Vsc2UgaWYoaXx8by5sZW5ndGg+OClzLnJlZGlyZWN0VG8oe3VybDpsfSk7ZWxzZXt2YXIgcD1vLmZpbmQoZnVuY3Rpb24odCl7cmV0dXJuIHQucm91dGU9PT11fSk7aWYocCl7dmFyIHY9cC5yb3V0ZStfKHAuZGF0YS5xdWVyeXx8e30pO2lmKGNvbnNvbGUubG9nKFwidXJsLCBvbGRQYWdlVXJsXCIsbCx2KSxsPT09XCIvXCIrdil7dmFyIGc9by5maW5kSW5kZXgoZnVuY3Rpb24odCl7cmV0dXJuIHQucm91dGU9PT11fSksbT1vLmxlbmd0aC1nLTE7cmV0dXJuIHZvaWQobT4wJiZzLm5hdmlnYXRlQmFjayh7ZGVsdGE6bX0pKX19cy5uYXZpZ2F0ZVRvKHt1cmw6bH0pfX0sZ2V0QWJzb2x1dGVVcmw6ZnVuY3Rpb24odCl7dmFyIG49dC5zcGxpdChcIj9cIiksZT1uWzBdLHI9blsxXT9cIj9cIituWzFdOlwiXCIsaT1cInBhZ2VzL1wiK2UrXCIvaW5kZXhcIixvPXkuZmluZChmdW5jdGlvbih0KXtyZXR1cm4gdC5wYWdlcy5pbmRleE9mKGkpPi0xfSksdT1vP28ucm9vdDpudWxsO3JldHVybiB1P1wiL1wiK3UrXCIvcGFnZXMvXCIrZStcIi9pbmRleFwiK3I6XCIvcGFnZXMvXCIrZStcIi9pbmRleFwiK3J9LHBhZ2VHb3RvOmZ1bmN0aW9uKHQpe3ZhciBuPXQuY3VycmVudFRhcmdldC5kYXRhc2V0LmR3SHJlZjtuJiZ0aGlzLmdvVG9IcmVmKG4pfSxzZXRFbmFibGVEZWJ1ZzpmdW5jdGlvbigpe3YrKz44JiZ0aGlzLmdvVG9IcmVmKFwicGx1Z2luLWRlYnVnXCIpfX07cmV0dXJuIGEubWFwKGZ1bmN0aW9uKHQpe2lmKHQuYWN0b3IubWV0aG9kcylmb3IodmFyIG4gaW4gdC5hY3Rvci5tZXRob2RzKXt2YXIgZT1bdC5wYXRoU2x1ZyxuXS5qb2luKFwiX19cIik7YltlXT10LmR3LmRlY29yYXRlTWV0aG9kKHQuYWN0b3IubWV0aG9kc1tuXSl9fSksYn19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDYpLGk9ci5KU09OfHwoci5KU09OPXtzdHJpbmdpZnk6SlNPTi5zdHJpbmdpZnl9KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIGkuc3RyaW5naWZ5LmFwcGx5KGksYXJndW1lbnRzKX19LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0NDUpfSxmdW5jdGlvbih0LG4sZSl7ZSg1OSksZSg3MSksdC5leHBvcnRzPWUoMTQ4KS5mKFwiaXRlcmF0b3JcIil9LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0NDcpfSxmdW5jdGlvbih0LG4sZSl7ZSg0NDgpLGUoMTQxKSxlKDQ1MCksZSg0NTEpLHQuZXhwb3J0cz1lKDYpLlN5bWJvbH0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO3ZhciByPWUoMTQpLGk9ZSg1Myksbz1lKDMzKSx1PWUoMTIpLGE9ZSgxOTApLGM9ZSgxNDkpLktFWSxzPWUoNTIpLGY9ZSgxMzUpLGw9ZSg3MCksaD1lKDkzKSxwPWUoMTMpLHY9ZSgxNDgpLGQ9ZSgxNTApLHk9ZSg0NDkpLGc9ZSgyMDYpLG09ZSgzMiksXz1lKDI2KSx3PWUoNTQpLGI9ZSgxMzIpLHg9ZSg2NyksUz1lKDkxKSxPPWUoMjA3KSxQPWUoMTUxKSxrPWUoMjUpLEU9ZSg2OCksaj1QLmYsQT1rLmYsTT1PLmYsVD1yLlN5bWJvbCxGPXIuSlNPTixMPUYmJkYuc3RyaW5naWZ5LEk9XCJwcm90b3R5cGVcIixOPXAoXCJfaGlkZGVuXCIpLEQ9cChcInRvUHJpbWl0aXZlXCIpLFI9e30ucHJvcGVydHlJc0VudW1lcmFibGUsQz1mKFwic3ltYm9sLXJlZ2lzdHJ5XCIpLFU9ZihcInN5bWJvbHNcIiksRz1mKFwib3Atc3ltYm9sc1wiKSxXPU9iamVjdFtJXSxWPVwiZnVuY3Rpb25cIj09dHlwZW9mIFQsQj1yLlFPYmplY3QscT0hQnx8IUJbSV18fCFCW0ldLmZpbmRDaGlsZCx6PW8mJnMoZnVuY3Rpb24oKXtyZXR1cm4gNyE9UyhBKHt9LFwiYVwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gQSh0aGlzLFwiYVwiLHt2YWx1ZTo3fSkuYX19KSkuYX0pP2Z1bmN0aW9uKHQsbixlKXt2YXIgcj1qKFcsbik7ciYmZGVsZXRlIFdbbl0sQSh0LG4sZSksciYmdCE9PVcmJkEoVyxuLHIpfTpBLEg9ZnVuY3Rpb24odCl7dmFyIG49VVt0XT1TKFRbSV0pO3JldHVybiBuLl9rPXQsbn0sSj1WJiZcInN5bWJvbFwiPT10eXBlb2YgVC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm5cInN5bWJvbFwiPT10eXBlb2YgdH06ZnVuY3Rpb24odCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBUfSxLPWZ1bmN0aW9uKHQsbixlKXtyZXR1cm4gdD09PVcmJksoRyxuLGUpLG0odCksbj1iKG4sITApLG0oZSksaShVLG4pPyhlLmVudW1lcmFibGU/KGkodCxOKSYmdFtOXVtuXSYmKHRbTl1bbl09ITEpLGU9UyhlLHtlbnVtZXJhYmxlOngoMCwhMSl9KSk6KGkodCxOKXx8QSh0LE4seCgxLHt9KSksdFtOXVtuXT0hMCkseih0LG4sZSkpOkEodCxuLGUpfSxZPWZ1bmN0aW9uKHQsbil7bSh0KTtmb3IodmFyIGUscj15KG49dyhuKSksaT0wLG89ci5sZW5ndGg7bz5pOylLKHQsZT1yW2krK10sbltlXSk7cmV0dXJuIHR9LCQ9ZnVuY3Rpb24odCxuKXtyZXR1cm4gdm9pZCAwPT09bj9TKHQpOlkoUyh0KSxuKX0sUT1mdW5jdGlvbih0KXt2YXIgbj1SLmNhbGwodGhpcyx0PWIodCwhMCkpO3JldHVybiEodGhpcz09PVcmJmkoVSx0KSYmIWkoRyx0KSkmJighKG58fCFpKHRoaXMsdCl8fCFpKFUsdCl8fGkodGhpcyxOKSYmdGhpc1tOXVt0XSl8fG4pfSxYPWZ1bmN0aW9uKHQsbil7aWYodD13KHQpLG49YihuLCEwKSx0IT09V3x8IWkoVSxuKXx8aShHLG4pKXt2YXIgZT1qKHQsbik7cmV0dXJuIWV8fCFpKFUsbil8fGkodCxOKSYmdFtOXVtuXXx8KGUuZW51bWVyYWJsZT0hMCksZX19LFo9ZnVuY3Rpb24odCl7Zm9yKHZhciBuLGU9TSh3KHQpKSxyPVtdLG89MDtlLmxlbmd0aD5vOylpKFUsbj1lW28rK10pfHxuPT1OfHxuPT1jfHxyLnB1c2gobik7cmV0dXJuIHJ9LHR0PWZ1bmN0aW9uKHQpe2Zvcih2YXIgbixlPXQ9PT1XLHI9TShlP0c6dyh0KSksbz1bXSx1PTA7ci5sZW5ndGg+dTspIWkoVSxuPXJbdSsrXSl8fGUmJiFpKFcsbil8fG8ucHVzaChVW25dKTtyZXR1cm4gb307Vnx8KFQ9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgVCl0aHJvdyBUeXBlRXJyb3IoXCJTeW1ib2wgaXMgbm90IGEgY29uc3RydWN0b3IhXCIpO3ZhciB0PWgoYXJndW1lbnRzLmxlbmd0aD4wP2FyZ3VtZW50c1swXTp2b2lkIDApLG49ZnVuY3Rpb24oZSl7dGhpcz09PVcmJm4uY2FsbChHLGUpLGkodGhpcyxOKSYmaSh0aGlzW05dLHQpJiYodGhpc1tOXVt0XT0hMSkseih0aGlzLHQseCgxLGUpKX07cmV0dXJuIG8mJnEmJnooVyx0LHtjb25maWd1cmFibGU6ITAsc2V0Om59KSxIKHQpfSxhKFRbSV0sXCJ0b1N0cmluZ1wiLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2t9KSxQLmY9WCxrLmY9SyxlKDIwOCkuZj1PLmY9WixlKDk3KS5mPVEsZSgxMzkpLmY9dHQsbyYmIWUoOTApJiZhKFcsXCJwcm9wZXJ0eUlzRW51bWVyYWJsZVwiLFEsITApLHYuZj1mdW5jdGlvbih0KXtyZXR1cm4gSChwKHQpKX0pLHUodS5HK3UuVyt1LkYqIVYse1N5bWJvbDpUfSk7Zm9yKHZhciBudD1cImhhc0luc3RhbmNlLGlzQ29uY2F0U3ByZWFkYWJsZSxpdGVyYXRvcixtYXRjaCxyZXBsYWNlLHNlYXJjaCxzcGVjaWVzLHNwbGl0LHRvUHJpbWl0aXZlLHRvU3RyaW5nVGFnLHVuc2NvcGFibGVzXCIuc3BsaXQoXCIsXCIpLGV0PTA7bnQubGVuZ3RoPmV0OylwKG50W2V0KytdKTtmb3IodmFyIHJ0PUUocC5zdG9yZSksaXQ9MDtydC5sZW5ndGg+aXQ7KWQocnRbaXQrK10pO3UodS5TK3UuRiohVixcIlN5bWJvbFwiLHtmb3I6ZnVuY3Rpb24odCl7cmV0dXJuIGkoQyx0Kz1cIlwiKT9DW3RdOkNbdF09VCh0KX0sa2V5Rm9yOmZ1bmN0aW9uKHQpe2lmKCFKKHQpKXRocm93IFR5cGVFcnJvcih0K1wiIGlzIG5vdCBhIHN5bWJvbCFcIik7Zm9yKHZhciBuIGluIEMpaWYoQ1tuXT09PXQpcmV0dXJuIG59LHVzZVNldHRlcjpmdW5jdGlvbigpe3E9ITB9LHVzZVNpbXBsZTpmdW5jdGlvbigpe3E9ITF9fSksdSh1LlMrdS5GKiFWLFwiT2JqZWN0XCIse2NyZWF0ZTokLGRlZmluZVByb3BlcnR5OkssZGVmaW5lUHJvcGVydGllczpZLGdldE93blByb3BlcnR5RGVzY3JpcHRvcjpYLGdldE93blByb3BlcnR5TmFtZXM6WixnZXRPd25Qcm9wZXJ0eVN5bWJvbHM6dHR9KSxGJiZ1KHUuUyt1LkYqKCFWfHxzKGZ1bmN0aW9uKCl7dmFyIHQ9VCgpO3JldHVyblwiW251bGxdXCIhPUwoW3RdKXx8XCJ7fVwiIT1MKHthOnR9KXx8XCJ7fVwiIT1MKE9iamVjdCh0KSl9KSksXCJKU09OXCIse3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIG4sZSxyPVt0XSxpPTE7YXJndW1lbnRzLmxlbmd0aD5pOylyLnB1c2goYXJndW1lbnRzW2krK10pO2lmKGU9bj1yWzFdLChfKG4pfHx2b2lkIDAhPT10KSYmIUoodCkpcmV0dXJuIGcobil8fChuPWZ1bmN0aW9uKHQsbil7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZSYmKG49ZS5jYWxsKHRoaXMsdCxuKSksIUoobikpcmV0dXJuIG59KSxyWzFdPW4sTC5hcHBseShGLHIpfX0pLFRbSV1bRF18fGUoNDApKFRbSV0sRCxUW0ldLnZhbHVlT2YpLGwoVCxcIlN5bWJvbFwiKSxsKE1hdGgsXCJNYXRoXCIsITApLGwoci5KU09OLFwiSlNPTlwiLCEwKX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjgpLGk9ZSgxMzkpLG89ZSg5Nyk7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3ZhciBuPXIodCksZT1pLmY7aWYoZSlmb3IodmFyIHUsYT1lKHQpLGM9by5mLHM9MDthLmxlbmd0aD5zOyljLmNhbGwodCx1PWFbcysrXSkmJm4ucHVzaCh1KTtyZXR1cm4gbn19LGZ1bmN0aW9uKHQsbixlKXtlKDE1MCkoXCJhc3luY0l0ZXJhdG9yXCIpfSxmdW5jdGlvbih0LG4sZSl7ZSgxNTApKFwib2JzZXJ2YWJsZVwiKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UuZChuLFwiYVwiLGZ1bmN0aW9uKCl7cmV0dXJuIHF9KTt2YXIgcj1lKDIwOSksaT1lLm4ociksbz1lKDEzOCksdT1lLm4obyksYT1lKDQ1MyksYz1lLm4oYSkscz1lKDk1KSxmPWUubihzKSxsPWUoNzQpLGg9ZS5uKGwpLHA9ZSgxNDApLHY9ZS5uKHApLGQ9ZSg0NTQpLHk9ZS5uKGQpLGc9ZSgxNDYpLG09ZS5uKGcpLF89ZSgxNDcpLHc9ZS5uKF8pLGI9ZSg0NTcpLHg9ZS5uKGIpLFM9ZSg0NTgpLE89ZS5uKFMpLFA9ZSg0NjUpLGs9ZS5uKFApLEU9ZSg3Myksaj1lLm4oRSksQT1lKDYyKSxNPWUubihBKSxUPWUoOTgpLEY9ZS5uKFQpLEw9ZSg4OSksST1lLm4oTCksTj1lKDE4OCksRD1lKDQ2NiksUj1lKDE5OCksQz1lKDE0NSksVT1lKDQ2NyksRz1lKDQ2OCksVz1lKDIwNCksVj1lKDQ5MiksQj17fSxxPWZ1bmN0aW9uKHQpe3ZhciBuPXQuY29uZmlnLGU9dC5XeFBhcnNlLHI9dC53eCxvPXQuaXNTd2FuLGE9dC5pc015LHM9dC5nZXRDdXJyZW50UGFnZXMsbD1PYmplY3QoVi5hKSh7d3g6cixpc1N3YW46byxpc015OmF9KSxwPW4uYXBwLnN1YlBhY2thZ2VzfHxbXSxkPXIuZ2V0U3lzdGVtSW5mb1N5bmMoKSxnPWZ1bmN0aW9uKHQpe3JldHVybiBuLmFwaVVybCtcIi91L1wiK24uY29tcGFueS5uaWNrbmFtZStcIi9jYXBpL3YxL1wiK3R9LF89ZnVuY3Rpb24odCl7cmV0dXJuIG4uYXBpVXJsK1wiL2RhcGkvdS9cIituLmNvbXBhbnkubmlja25hbWUrXCIvXCIrdH0sYj1mdW5jdGlvbiB0KGUsaSxvLHUpe3ZhciBhO3RyeXthPWwuZ2V0U3RvcmFnZVN5bmMoXCJkd2FwcDppbnN0YWxsYXRpb25cIil8fHt9fWNhdGNoKHQpe2NvbnNvbGUubG9nKHQpLGE9e319aWYoIShhLmluc3RhbGxhdGlvbl9pZCYmYS5jb21wYW55X2lkPT09bi5jb21wYW55LmlkfHx1KSlyZXR1cm4gbmV3IEYuYShmdW5jdGlvbihyLHUpe0IucmVnaXN0ZXJQcm9taXNlPUIucmVnaXN0ZXJQcm9taXNlfHxuZXcgRi5hKGZ1bmN0aW9uKGUscil7dChcInBvc3RcIixnKFwiZHdhcHAvcmVnaXN0ZXJcIikse2NvbXBhbnk6bi5jb21wYW55LHN5c3RlbV9pbmZvOmR9LCEwKS50aGVuKGUpLmNhdGNoKHIpfSksQi5yZWdpc3RlclByb21pc2UudGhlbihmdW5jdGlvbihuKXtyZXR1cm4gbC5zZXRTdG9yYWdlU3luYyhcImR3YXBwOmluc3RhbGxhdGlvblwiLG4uZGF0YS5pbnN0YWxsYXRpb24pLHQoZSxpLG8pLnRoZW4ocikuY2F0Y2godSksbn0pfSk7dmFyIGM9e1wiY29udGVudC10eXBlXCI6XCJhcHBsaWNhdGlvbi9qc29uXCJ9O3JldHVybiBhLmluc3RhbGxhdGlvbl9pZCYmKGNbXCJYLUFwcC1JbnN0YWxsLUlkXCJdPWEuaW5zdGFsbGF0aW9uX2lkKSxhLnNpdGV1c2VyX3Rva2VuJiYoY1tcIlgtQXBwLVRva2VuXCJdPWEuc2l0ZXVzZXJfdG9rZW4pLGEudXNlcl90b2tlbiYmKGNbXCJYLUFwcC1Vc2VyLVRva2VuXCJdPWEudXNlcl90b2tlbiksbmV3IEYuYShmdW5jdGlvbih0LG4pe3IucmVxdWVzdCh7bWV0aG9kOmUsdXJsOmksZGF0YTpvLGhlYWRlcjpjLHN1Y2Nlc3M6ZnVuY3Rpb24obil7bi5kd1N0YXR1cz1uLnN0YXR1c0NvZGUsbi5kd0hlYWRlcnM9bi5oZWFkZXIsdChuKX0sZmFpbDpmdW5jdGlvbigpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KHQpLHU9MDt1PHQ7dSsrKXJbdV09YXJndW1lbnRzW3VdO2NvbnNvbGUubG9nKFwid3gucmVxdWVzdCBlcnJvciwgbWV0aG9kPVwiLmNvbmNhdChlLFwiLCB1cmw9XCIpLmNvbmNhdChpLFwiLCBkYXRhLCBhcmdzXCIpLG8sciksbi5hcHBseSh2b2lkIDAscil9fSl9KX0sUz1mdW5jdGlvbih0LG4pe249bnx8e307dmFyIGUscj10LnNwbGl0KFwiL1wiKSxpPXJbMF0udG9VcHBlckNhc2UoKSxvPXJbMV0sdT1yWzJdO3JldHVybltcIkRZTkFNSUNfR0VUXCIsXCJEWU5BTUlDX1BPU1RcIixcIkRZTkFNSUNfUFVUXCIsXCJEWU5BTUlDX0RFTEVURVwiXS5pbmRleE9mKGkpPi0xPyhlPWcobytcIi9cIituLmlkK1wiL1wiK3UpLGk9aS5zcGxpdChcIl9cIilbMV0pOmU9ZyhbXCJxdWVyeVwiLFwicG9zdFwiLFwic2F2ZVwiXS5pbmRleE9mKHUpPi0xP286W1wiZ2V0XCIsXCJwdXRcIixcImRlbGV0ZVwiLFwidXBkYXRlXCJdLmluZGV4T2YodSk+LTE/bytcIi9cIituLmlkOm8rXCIvXCIrdSksYihpLGUsbil9LFA9ZnVuY3Rpb24odCxuKXtuPW58fHt9O3ZhciBlPXQuc3BsaXQoXCIvXCIpLHI9ZVswXS50b1VwcGVyQ2FzZSgpLGk9ZVsxXSxvPWVbMl0sdT1fKGkrXCIvXCIrbyk7cmV0dXJuIGIocix1LG4pfSxFPWZ1bmN0aW9uKHQpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpcIlwiLGU9XCJvYmplY3RcIj09PU0oKShuKT9qKCkobikubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0K1wiPVwiK25bdF19KS5qb2luKFwiJlwiKTpuLHI9ZT9cIj9cIitlOlwiXCIsaT1cInBhZ2VzL1wiK3QrXCIvaW5kZXhcIixvPXAuZmluZChmdW5jdGlvbih0KXtyZXR1cm4gdC5wYWdlcy5pbmRleE9mKGkpPi0xfSksdT1vP28ucm9vdDpudWxsO3JldHVybiB1P1wiL1wiK3UrXCIvcGFnZXMvXCIrdCtcIi9pbmRleFwiK3I6XCIvcGFnZXMvXCIrdCtcIi9pbmRleFwiK3J9LEE9e3NldEV4dHJhUXVlcnk6ZnVuY3Rpb24odCl7Zm9yKHZhciBuIGluIHQpdGhpcy5wYWdlLmRhdGEuZXh0cmFRdWVyeVtuXT10W25dfSxzZXRTaGFyZVRpdGxlOmZ1bmN0aW9uKHQpe3RoaXMucGFnZS5kYXRhLnNoYXJlLnRpdGxlPXR9LHNldFNoYXJlSW1hZ2VVcmw6ZnVuY3Rpb24odCl7dGhpcy5wYWdlLmRhdGEuc2hhcmUuaW1hZ2VVcmw9dH0sYWRkU2hhcmVDYWxsYmFjazpmdW5jdGlvbih0LG4pe3RoaXMucGFnZS5kYXRhLnNoYXJlW3RdLnB1c2gobil9LHNldE92ZXJpZGU6ZnVuY3Rpb24odCxuKXt0aGlzLnBhZ2UuZGF0YS5vdmVyaWRlc1t0XT1ufX07cmV0dXJue0R3UHJveHk6ZnVuY3Rpb24odCl7ZnVuY3Rpb24gaSh0LGUsdSxjKXt2YXIgZixsPWMuY29tcG9uZW50c1BhY2thZ2VzO3JldHVybiBtKCkodGhpcyxpKSxmPXgoKSh0aGlzLChpLl9fcHJvdG9fX3x8eSgpKGkpKS5jYWxsKHRoaXMpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaygpKGYpLFwiZmlsdGVyc1wiLHtjb25maWd1cmFibGU6ITAsZW51bWVyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpOLmF9KSxmLnBsYXRmb3JtPVwiZHdhcHBcIixmLnNsaWRlPXQsZi5kYXRhPW51bGwsZi5hY3Rvcj1lLGYucGFnZT1udWxsLGYucXVlcnk9e30sZi5tZXRob2RzPXt9LGYuY29uZmlnPW4sZi5ldmVudD1udWxsLGYuaXNTd2FuPW8sZi5pc015PWEsZi5hY3RvcnM9bnVsbCxmLnJvb3RTbGlkZT1udWxsLGYud3g9cixmLnd4YXBwPXUsZi5nZXRDdXJyZW50UGFnZXM9cyxmLmFwcD1uZXcgVy5hKGsoKShmKSxmLnNsaWRlKSxmLnBhZ2VMb2NhbHM9bnVsbCxmLmV2ZW50PW5ldyBJLmEuRXZlbnRFbWl0dGVyLGYucGFnZUV2ZW50PW51bGwsZi5nbG9iYWxFdmVudD1VLmEsZi5leHRyYT17fSxmLmNvbXBvbmVudHNQYWNrYWdlcz1sLGYuJGRpcnR5PW5ldyBHLmEsZn1yZXR1cm4gTygpKGksdCksdygpKGksW3trZXk6XCJvblwiLHZhbHVlOmZ1bmN0aW9uKHQsbil7dGhpcy5ldmVudC5vbih0LG4pfX0se2tleTpcImVtaXRcIix2YWx1ZTpmdW5jdGlvbih0LG4pe3RoaXMuZXZlbnQuZW1pdCh0LG4pfX0se2tleTpcImRlc3Ryb3lcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuZXZlbnQucmVtb3ZlQWxsTGlzdGVuZXJzKCl9fSx7a2V5OlwiX2FmdGVyT25Mb2FkXCIsdmFsdWU6ZnVuY3Rpb24odCxuLGUpe3RoaXMucGFnZT10LHRoaXMucXVlcnk9bix0aGlzLmVudj1lLHRoaXMuc2xpZGUuZHdhcHAubmV3X3ZlcnNpb24mJk9iamVjdChHLmIpKHRoaXMpfX0se2tleTpcIl91cGRhdGVBY3RvckRhdGFcIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgbj10LmRhdGEsZT10LmNvbXB1dGVkLHI9dC53YXRjaCxpPXQuYWN0b3JzLG89dC5yb290U2xpZGUsdT10LnBhZ2VMb2NhbHMsYT10LnBhZ2VFdmVudDt0aGlzLmRhdGE9bix0aGlzLmNvbXB1dGVkPWUsdGhpcy53YXRjaD1yLHRoaXMuYWN0b3JzPWksdGhpcy5yb290U2xpZGU9byx0aGlzLnBhZ2VMb2NhbHM9dSx0aGlzLnBhZ2VFdmVudD1hfX0se2tleTpcIl9zZXRFeHRyYURhdGFcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmV4dHJhPXR9fSx7a2V5Olwic2VsZWN0Q29tcG9uZW50XCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFnZS5zZWxlY3RDb21wb25lbnQoXCIuXCIuY29uY2F0KHQpKX19LHtrZXk6XCJnZXRDb21wb25lbnRQYWNrYWdlXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD12KCkoaC5hLm1hcmsoZnVuY3Rpb24gdChuKXtyZXR1cm4gaC5hLndyYXAoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIHQuYWJydXB0KFwicmV0dXJuXCIsdGhpcy5jb21wb25lbnRzUGFja2FnZXNbbl0uZGVmYXVsdCk7Y2FzZSAxOmNhc2VcImVuZFwiOnJldHVybiB0LnN0b3AoKX19LHQsdGhpcyl9KSk7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KCl9LHtrZXk6XCJnZXRQYWdlTG9jYWxzXCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMucGFnZUxvY2Fsc1t0XX19LHtrZXk6XCJzZXRQYWdlTG9jYWxzXCIsdmFsdWU6ZnVuY3Rpb24odCxuKXt0aGlzLnBhZ2VMb2NhbHNbdF09bn19LHtrZXk6XCJnZXRHbG9iYWxMb2NhbHNcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy53eGFwcC5nZXRHbG9iYWxEYXRhKHQpfX0se2tleTpcInNldEdsb2JhbExvY2Fsc1wiLHZhbHVlOmZ1bmN0aW9uKHQsbil7dGhpcy53eGFwcC5zZXRHbG9iYWxEYXRhKHQsbil9fSx7a2V5Olwic3VibWl0Rm9ybVwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztpZighdGhpcy5yb290U2xpZGUuaWQpcmV0dXJuIHRoaXMuc2hvd01vZGFsKHt0aXRsZTpcIuihqOWNleaPkOS6pOmUmeivr1wiLGNvbnRlbnQ6XCLor7flhYjkv53lrZjlsI/nqIvluo/lho3nlJ/miJDlsI/nqIvluo/vvIFcIixzaG93Q2FuY2VsOiExfSk7dmFyIG49dGhpcy5hY3RvcnMuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiB0LmR3LnNsaWRlLmZvcm1fZmllbGQmJlwiX3N1Ym1pdFwiIT09dC5kdy5zbGlkZS5mb3JtX2ZpZWxkLnR5cGVfd2lkZ2V0fSkubWFwKGZ1bmN0aW9uKHQpe3JldHVybiB0LmR3fSksZT0hMCxyPSExLGk9dm9pZCAwO3RyeXtmb3IodmFyIG8sdT1mKCkobik7IShlPShvPXUubmV4dCgpKS5kb25lKTtlPSEwKXt2YXIgYT1vLnZhbHVlO2lmKGEuc2xpZGUuZm9ybV9maWVsZC5yZXF1aXJlZCYmKG51bGw9PWEuZGF0YS52YWx1ZXx8XCJcIj09PWEuZGF0YS52YWx1ZSkpcmV0dXJuIHRoaXMuc2hvd01vZGFsKHt0aXRsZTpcIuivt+Whq+WGmeWujOaVtO+8gVwiLGNvbnRlbnQ6YS5zbGlkZS5mb3JtX2ZpZWxkLmxhYmVsK1wi5piv5b+F5aGr5a2X5q6177yBXCIsc2hvd0NhbmNlbDohMX0pfX1jYXRjaCh0KXtyPSEwLGk9dH1maW5hbGx5e3RyeXtlfHxudWxsPT11LnJldHVybnx8dS5yZXR1cm4oKX1maW5hbGx5e2lmKHIpdGhyb3cgaX19dmFyIGM9bi5tYXAoZnVuY3Rpb24odCl7cmV0dXJue25hbWU6dC5zbGlkZS5yYW5kb21pZCx2YWx1ZTp0LmRhdGEudmFsdWV9fSk7aWYoIWMubGVuZ3RoKXJldHVybiB0aGlzLnNob3dNb2RhbCh7dGl0bGU6XCLooajljZXmj5DkuqTplJnor69cIixjb250ZW50Olwi6K+35YWI5re75Yqg6KGo5Y2V57uE5Lu277yBXCIsc2hvd0NhbmNlbDohMX0pO3ZhciBzPXtmaWxlX2RhdGE6e30sZmllbGRzOmMsc2xpZGVfaWQ6dGhpcy5yb290U2xpZGUuaWR9O3RoaXMuc2hvd0xvYWRpbmcoe3RpdGxlOlwi5o+Q5Lqk5LitLi4uXCJ9KSx0aGlzLnJlcXVlc3QoXCJwb3N0L2NvbXBhbnlfZm9ybS9zdWJtaXRfcGFnZXNsaWRlX2Zvcm1cIixzKS50aGVuKGZ1bmN0aW9uKG4pe2lmKFwiZXJyb3JcIj09PW4uZGF0YS5zdGF0dXMpcmV0dXJuIHQuaGlkZUxvYWRpbmcoKSx0LnNob3dNb2RhbCh7dGl0bGU6XCLooajljZXmj5DkuqTplJnor69cIixjb250ZW50Om4uZGF0YS5tZXNzYWdlLHNob3dDYW5jZWw6ITF9KTtpZihuLmRhdGEub3JkZXJfcmVzcG9uc2Upe3ZhciBlPW4uZGF0YS5vcmRlcl9yZXNwb25zZS5yZWRpcmVjdF9kYXRhLmNoYXJnZV9pZDtyZXR1cm4gdC5nb1RvSHJlZihcImNoYXJnZT9pZD1cIi5jb25jYXQoZSkse3JlZGlyZWN0VG86ITB9KX12YXIgcj1bXTtmb3IodmFyIGkgaW4gbi5kYXRhLmRhdGEpci5wdXNoKGkrXCI6IFwiK24uZGF0YS5kYXRhW2ldKTt0LmhpZGVMb2FkaW5nKCksdC5zaG93TW9kYWwoe3RpdGxlOlwi6KGo5Y2V5o+Q5Lqk5oiQ5Yqf77yBXCIsY29udGVudDpyLnNsaWNlKDAsNSkuam9pbihcIlxcblwiKSxzaG93Q2FuY2VsOiExfSl9KX19LHtrZXk6XCJnZXRBYnNvbHV0ZVBhdGhcIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hY3Rvci5wYXRoK1wiLmR3ZGF0YS5cIit0fX0se2tleTpcImJ1aWxkRGFwaVJlc291cmNlVXJsXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gXy5hcHBseSh2b2lkIDAsYXJndW1lbnRzKX19LHtrZXk6XCJzZXRXeFBhcnNlXCIsdmFsdWU6ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzLmdldEFic29sdXRlUGF0aCh0KTtlLnd4UGFyc2UocixcImh0bWxcIixufHxcIlwiLHRoaXMucGFnZSw1KX19LHtrZXk6XCJfcmVzb2x2ZURhdGFzXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49dGhpcyxlPXRoaXMucGFnZS5kYXRhLnNsaWRlLmNvbXBvbmVudHNbdGhpcy5hY3Rvci5rZXldLmR3ZGF0YSxyPXt9LGk9ZnVuY3Rpb24odCxlKXt2YXIgaT1uLmdldEFic29sdXRlUGF0aCh0KTtyW2ldPXZvaWQgMCE9PWU/ZTpudWxsfTtmb3IodmFyIG8gaW4gdCl7dmFyIHU9dFtvXTtpZihvLmVuZHNXaXRoKFwiX19jb25jYXRcIikpIWZ1bmN0aW9uKCl7dmFyIHQ9by5zbGljZSgwLC1cIl9fY29uY2F0XCIubGVuZ3RoKSxuPU9iamVjdChDLmdldERhdGFCeVBhdGgpKGUsdCkscj1uLmxhc3RPYmosYT1uLmxhc3RLZXksYz1yW2FdO3UuZm9yRWFjaChmdW5jdGlvbihuLGUpe3ZhciByPVwiXCIuY29uY2F0KHQsXCJbXCIpLmNvbmNhdChjLmxlbmd0aCtlLFwiXVwiKTtpKHIsbil9KX0oKTtlbHNlIGlmKG8uZW5kc1dpdGgoXCJfX3Vjb25jYXRcIikpIWZ1bmN0aW9uKCl7dmFyIHQ9by5zbGljZSgwLC1cIl9fdWNvbmNhdFwiLmxlbmd0aCksbj1PYmplY3QoQy5nZXREYXRhQnlQYXRoKShlLHQpLHI9bi5sYXN0T2JqLGE9bi5sYXN0S2V5LGM9clthXSxzPXUuZmllbGQsZj11Lmxpc3QsbD1yW2FdLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdFtzXX0pO2YuZmlsdGVyKGZ1bmN0aW9uKHQpe3JldHVybiFsLmluY2x1ZGVzKHRbc10pfSkuZm9yRWFjaChmdW5jdGlvbihuLGUpe3ZhciByPVwiXCIuY29uY2F0KHQsXCJbXCIpLmNvbmNhdChjLmxlbmd0aCtlLFwiXVwiKTtpKHIsbil9KX0oKTtlbHNlIGlmKG8uZW5kc1dpdGgoXCJfX3B1c2hcIikpe3ZhciBhPW8uc2xpY2UoMCwtXCJfX3B1c2hcIi5sZW5ndGgpLGM9T2JqZWN0KEMuZ2V0RGF0YUJ5UGF0aCkodGhpcy5kYXRhLGEpLHM9Yy5sYXN0T2JqLGY9Yy5sYXN0S2V5LGw9c1tmXSxoPVwiXCIuY29uY2F0KGEsXCJbXCIpLmNvbmNhdChsLmxlbmd0aCxcIl1cIik7aShoLHUpfWVsc2UgaWYoby5lbmRzV2l0aChcIl9fdXBkYXRlXCIpKXt2YXIgcD1vLnNsaWNlKDAsLVwiX191cGRhdGVcIi5sZW5ndGgpO2Zvcih2YXIgdiBpbiB1KWkoXCJcIi5jb25jYXQocCxcIi5cIikuY29uY2F0KHYpLHVbdl0pfWVsc2UgaShvLHUpfXJldHVybiByfX0se2tleTpcInNldERhdGFcIix2YWx1ZTpmdW5jdGlvbih0LG4sZSl7cmV0dXJuIHRoaXMuc2V0RGF0YXMoYygpKHt9LHQsbiksZSl9fSx7a2V5Olwic2V0RGF0YXNcIix2YWx1ZTpmdW5jdGlvbih0LG4pe3ZhciBlPXRoaXMuX3Jlc29sdmVEYXRhcyh0KTt0aGlzLnBhZ2Uuc2V0RGF0YShlLG4pLHRoaXMuZGF0YT10aGlzLnBhZ2UuZGF0YS5zbGlkZS5jb21wb25lbnRzW3RoaXMuYWN0b3Iua2V5XS5kd2RhdGF9fSx7a2V5OlwiZ2V0RHd0b29sc1wiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZmlsdGVyc319LHtrZXk6XCJyZXF1ZXN0XCIsdmFsdWU6ZnVuY3Rpb24odCxuKXt0cnl7cmV0dXJuIFModCxuKX1jYXRjaChlKXt0aHJvdyBjb25zb2xlLmxvZyhcImR3LnJlcXVlc3QgZXJyb3I6IHBhdGgsIGRhdGEsIGVcIix0LG4sZSksZX19fSx7a2V5OlwiZmV0Y2hcIix2YWx1ZTpmdW5jdGlvbih0LG4pe3RyeXtyZXR1cm4gUCh0LG4pfWNhdGNoKGUpe3Rocm93IGNvbnNvbGUubG9nKFwiZHcuZmV0Y2ggZXJyb3I6IHBhdGgsIGRhdGEsIGVcIix0LG4sZSksZX19fSx7a2V5OlwiZmV0Y2hQYXBwQXBpXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9LGU9dC5zcGxpdChcIi9cIikscj11KCkoZSwyKSxpPXJbMF0sbz1yWzFdO3JldHVybiBQKFwicG9zdC9jY29kZS9ydW5fYXBpXCIse3BhcHBfc2x1ZzppLGFwaV9uYW1lOm8sZXZlbnRfZGF0YTpufSl9fSx7a2V5OlwiYWxlcnRcIix2YWx1ZTpmdW5jdGlvbih0LG4sZSl7ZT1lfHxmdW5jdGlvbigpe30sdGhpcy5zaG93TW9kYWwoe3RpdGxlOnQsY29udGVudDpuLHNob3dDYW5jZWw6ITEsc3VjY2VzczpmdW5jdGlvbigpe2UoKX19KX19LHtrZXk6XCJpc1RhYmJhclwiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFnZS5pc1RhYmJhcigpfX0se2tleTpcImdvVG9IcmVmXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4odD10aGlzLnBhZ2UpLmdvVG9IcmVmLmFwcGx5KHQsYXJndW1lbnRzKX19LHtrZXk6XCJnZXRBYnNvbHV0ZVVybFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuKHQ9dGhpcy5wYWdlKS5nZXRBYnNvbHV0ZVVybC5hcHBseSh0LGFyZ3VtZW50cyl9fSx7a2V5OlwiZ29Ub1BhZ2VcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdCxuPWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkobikscj0wO3I8bjtyKyspZVtyXT1hcmd1bWVudHNbcl07cmV0dXJuKHQ9dGhpcy5wYWdlKS5nb1RvUGFnZS5hcHBseSh0LFt0aGlzLnNsaWRlLnR5cGVdLmNvbmNhdChlKSl9fSx7a2V5OlwiZ29Ub1BhcHBQYWdlXCIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQsbj1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KG4pLHI9MDtyPG47cisrKWVbcl09YXJndW1lbnRzW3JdO3JldHVybih0PXRoaXMucGFnZSkuZ29Ub1BhcHBQYWdlLmFwcGx5KHQsW3RoaXMuc2xpZGUudHlwZV0uY29uY2F0KGUpKX19LHtrZXk6XCJnb1RvUGFwcEhvbWVcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSxuPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxlPW4ucmVkaXJlY3RUbyxyPXZvaWQgMCE9PWUmJmU7aWYodGhpcy5zbGlkZS5kd2FwcF9ob21lJiZ0aGlzLnNsaWRlLmR3YXBwX2hvbWUuZ3JvdXAmJnRoaXMuc2xpZGUuZHdhcHBfaG9tZS5zbHVnKXt2YXIgaT10aGlzLnNsaWRlLmR3YXBwX2hvbWUsbz1pLmdyb3VwLHU9aS5zbHVnLGE9XCJcIi5jb25jYXQobyxcIi1cIikuY29uY2F0KHUpLGM9aigpKHQpLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gbitcIj1cIit0W25dfSkuam9pbihcIiZcIikscz1jP1wiP1wiK2M6XCJcIjtyZXR1cm4gdGhpcy5wYWdlLmdvVG9Mb2NhdGlvbihhLHMse3JlZGlyZWN0VG86cn0pfXRocm93IEVycm9yKFwiZHcuZ29Ub1BhcHBIb21lIEVycm9yOiDlj6rog73lnKjpgJrnlKjnu4Tku7blrZDpobXpnaLlhoXosIPnlKjmraTmlrnms5VcIil9fSx7a2V5OlwicmVwb3J0Rm9ybUlkXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD12KCkoaC5hLm1hcmsoZnVuY3Rpb24gdChuKXt2YXIgZSxyPWFyZ3VtZW50cztyZXR1cm4gaC5hLndyYXAoZnVuY3Rpb24odCl7Zm9yKDs7KXN3aXRjaCh0LnByZXY9dC5uZXh0KXtjYXNlIDA6cmV0dXJuIGU9ci5sZW5ndGg+MSYmdm9pZCAwIT09clsxXT9yWzFdOlwiZGVmYXVsdFwiLHQuYWJydXB0KFwicmV0dXJuXCIsdGhpcy5mZXRjaChcInBvc3QvYXBwdXNlcnRlbXBsYXRlbWVzc2FnZS9jcmVhdGVfYXBwdXNlcnRlbXBsYXRlbWVzc2FnZV9yZWNvcmRcIix7Zm9ybWlkOm4uZGV0YWlsLmZvcm1JZCxzb3VyY2U6ZX0pKTtjYXNlIDI6Y2FzZVwiZW5kXCI6cmV0dXJuIHQuc3RvcCgpfX0sdCx0aGlzKX0pKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0oKX0se2tleTpcIiRjbGVhclwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy4kZGlydHkubGVuZ3RoKCkmJnRoaXMuc2V0RGF0YXModGhpcy4kZGlydHkucG9wKCkpfX0se2tleTpcIiR0aHJvdHRsZUNsZWFyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0KEQuYSkodGhpcy4kY2xlYXIuYmluZCh0aGlzKSw1MCx0aGlzKSgpfX0se2tleTpcImRlY29yYXRlTWV0aG9kXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49dGhpcztyZXR1cm4gdGhpcy5zbGlkZS5kd2FwcC5uZXdfdmVyc2lvbj9cIkFzeW5jRnVuY3Rpb25cIj09PXQuY29uc3RydWN0b3IubmFtZT92KCkoaC5hLm1hcmsoZnVuY3Rpb24gZSgpe3ZhciByLGksbyx1LGE9YXJndW1lbnRzO3JldHVybiBoLmEud3JhcChmdW5jdGlvbihlKXtmb3IoOzspc3dpdGNoKGUucHJldj1lLm5leHQpe2Nhc2UgMDpmb3Iocj1hLmxlbmd0aCxpPW5ldyBBcnJheShyKSxvPTA7bzxyO28rKylpW29dPWFbb107cmV0dXJuIGUubmV4dD0zLHQuY2FsbC5hcHBseSh0LFtuXS5jb25jYXQoaSkpO2Nhc2UgMzpyZXR1cm4gdT1lLnNlbnQsbi4kdGhyb3R0bGVDbGVhcigpLGUuYWJydXB0KFwicmV0dXJuXCIsdSk7Y2FzZSA2OmNhc2VcImVuZFwiOnJldHVybiBlLnN0b3AoKX19LGUsdGhpcyl9KSk6ZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxpPTA7aTxlO2krKylyW2ldPWFyZ3VtZW50c1tpXTt2YXIgbz10LmNhbGwuYXBwbHkodCxbbl0uY29uY2F0KHIpKTtyZXR1cm4gbi4kdGhyb3R0bGVDbGVhcigpLG99OnR9fV0pLGl9KE9iamVjdChDLm1peGluKShSLmEsQSxsKSksRHdVdGlsczppKCkoe3JlcXVlc3Q6UyxmZXRjaDpQLGJ1aWxkUmVxdWVzdDpiLGJ1aWxkQWJzb2x1dGVVcmw6RSxmaWx0ZXJzOk4uYX0sbCl9fX0sZnVuY3Rpb24odCxuLGUpe2Z1bmN0aW9uIHIodCxuLGUpe3JldHVybiBuIGluIHQ/aSh0LG4se3ZhbHVlOmUsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9KTp0W25dPWUsdH12YXIgaT1lKDEwMCk7dC5leHBvcnRzPXJ9LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0NTUpfSxmdW5jdGlvbih0LG4sZSl7ZSg0NTYpLHQuZXhwb3J0cz1lKDYpLk9iamVjdC5nZXRQcm90b3R5cGVPZn0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNjEpLGk9ZSgxOTMpO2UoOTkpKFwiZ2V0UHJvdG90eXBlT2ZcIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1cm4gaShyKHQpKX19KX0sZnVuY3Rpb24odCxuLGUpe2Z1bmN0aW9uIHIodCxuKXtpZihuJiYoXCJvYmplY3RcIj09PWkobil8fFwiZnVuY3Rpb25cIj09dHlwZW9mIG4pKXJldHVybiBuO2lmKHZvaWQgMD09PXQpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpO3JldHVybiB0fXZhciBpPWUoNjIpO3QuZXhwb3J0cz1yfSxmdW5jdGlvbih0LG4sZSl7ZnVuY3Rpb24gcih0LG4pe2lmKFwiZnVuY3Rpb25cIiE9dHlwZW9mIG4mJm51bGwhPT1uKXRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvblwiKTt0LnByb3RvdHlwZT1vKG4mJm4ucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6dCxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxuJiYoaT9pKHQsbik6dC5fX3Byb3RvX189bil9dmFyIGk9ZSg0NTkpLG89ZSgxNTIpO3QuZXhwb3J0cz1yfSxmdW5jdGlvbih0LG4sZSl7dC5leHBvcnRzPWUoNDYwKX0sZnVuY3Rpb24odCxuLGUpe2UoNDYxKSx0LmV4cG9ydHM9ZSg2KS5PYmplY3Quc2V0UHJvdG90eXBlT2Z9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDEyKTtyKHIuUyxcIk9iamVjdFwiLHtzZXRQcm90b3R5cGVPZjplKDQ2Mikuc2V0fSl9LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI2KSxpPWUoMzIpLG89ZnVuY3Rpb24odCxuKXtpZihpKHQpLCFyKG4pJiZudWxsIT09bil0aHJvdyBUeXBlRXJyb3IobitcIjogY2FuJ3Qgc2V0IGFzIHByb3RvdHlwZSFcIil9O3QuZXhwb3J0cz17c2V0Ok9iamVjdC5zZXRQcm90b3R5cGVPZnx8KFwiX19wcm90b19fXCJpbnt9P2Z1bmN0aW9uKHQsbixyKXt0cnl7cj1lKDM3KShGdW5jdGlvbi5jYWxsLGUoMTUxKS5mKE9iamVjdC5wcm90b3R5cGUsXCJfX3Byb3RvX19cIikuc2V0LDIpLHIodCxbXSksbj0hKHQgaW5zdGFuY2VvZiBBcnJheSl9Y2F0Y2godCl7bj0hMH1yZXR1cm4gZnVuY3Rpb24odCxlKXtyZXR1cm4gbyh0LGUpLG4/dC5fX3Byb3RvX189ZTpyKHQsZSksdH19KHt9LCExKTp2b2lkIDApLGNoZWNrOm99fSxmdW5jdGlvbih0LG4sZSl7ZSg0NjQpO3ZhciByPWUoNikuT2JqZWN0O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiByLmNyZWF0ZSh0LG4pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMTIpO3Ioci5TLFwiT2JqZWN0XCIse2NyZWF0ZTplKDkxKX0pfSxmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIGUodCl7aWYodm9pZCAwPT09dCl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIHR9dC5leHBvcnRzPWV9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjtlLmQobixcImFcIixmdW5jdGlvbigpe3JldHVybiBzfSk7dmFyIHI9ZSg5NiksaT0oZS5uKHIpLGUoMTM4KSksbz0oZS5uKGkpLGUoNzMpKSx1PShlLm4obyksZSg5NSkpLGE9KGUubih1KSxlKDIwNSkpLGM9KGUubihhKSxlKDYyKSkscz0oZS5uKGMpLEFycmF5LmlzQXJyYXksZnVuY3Rpb24odCxuKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjImJnZvaWQgMCE9PWFyZ3VtZW50c1syXT9hcmd1bWVudHNbMl06bnVsbCxyPWZ1bmN0aW9uKCl7dC5fdGltZW91dCYmY2xlYXJUaW1lb3V0KHQuX3RpbWVvdXQpO3ZhciByPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7dC5fdGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxyKX0sbil9O3JldHVybiByLl9yZWFsPXQscn0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7ZS5kKG4sXCJhXCIsZnVuY3Rpb24oKXtyZXR1cm4gb30pO3ZhciByPWUoODkpLGk9ZS5uKHIpLG89bmV3IGkuYS5FdmVudEVtaXR0ZXI7by5zZXRNYXhMaXN0ZW5lcnMoMTAwKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2Z1bmN0aW9uIHIodCxuLGUpe3QuX19wcm90b19fPW59ZnVuY3Rpb24gaSh0LG4sZSl7Zm9yKHZhciByPTAsaT1lLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1lW3JdO09iamVjdChOLmEpKHQsbyxuW29dKX19ZnVuY3Rpb24gbyh0KXtHLnRhcmdldCYmVy5wdXNoKEcudGFyZ2V0KSxHLnRhcmdldD10fWZ1bmN0aW9uIHUoKXtHLnRhcmdldD1XLnBvcCgpfWZ1bmN0aW9uIGEodCl7dmFyIG49dC52bSxlPXQub2JqLHI9dC5rZXksaT10LnZhbHVlLG89dC5wYXJlbnQsdT1uZXcgRyxhPU8oKShlLHIpO2lmKCFhfHwhMSE9PWEuY29uZmlndXJhYmxlKXt2YXIgZj1hJiZhLmdldCxsPWEmJmEuc2V0LGg9cyh7dm06bixrZXk6cix2YWx1ZTppLHBhcmVudDpvfSk7eCgpKGUscix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7dmFyIHQ9Zj9mLmNhbGwoZSk6aTtyZXR1cm4gRy50YXJnZXQmJih1LmRlcGVuZCgpLGgmJmguZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkodCkmJmModCkpLHR9LHNldDpmdW5jdGlvbih0KXt2YXIgYT1mP2YuY2FsbChlKTppO2lmKHQhPT1hJiYodD09PXR8fGE9PT1hKSl7bz1vfHxyO3ZhciBjPVYocixlKSxwPWMucm9vdCx2PWMucGF0aDtuLiRkaXJ0eS5wdXNoKHAsdix0KSxsP2wuY2FsbChlLHQpOmk9dCxoPXMoe3ZtOm4sa2V5OnIsdmFsdWU6aSxwYXJlbnQ6b30pLHUubm90aWZ5KCl9fX0pfX1mdW5jdGlvbiBjKHQpe2Zvcih2YXIgbixlPTAscj10Lmxlbmd0aDtlPHI7ZSsrKW49dFtlXSxuJiZuLl9fb2JfXyYmbi5fX29iX18uZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkobikmJmMobil9ZnVuY3Rpb24gcyh0KXt2YXIgbj10LnZtLGU9dC5rZXkscj10LnZhbHVlLGk9dC5wYXJlbnQ7aWYoT2JqZWN0KE4uZSkocikpe3JldHVybiBPYmplY3QoTi5iKShyLFwiX19vYl9fXCIpJiZyLl9fb2JfXyBpbnN0YW5jZW9mIEI/ci5fX29iX186bmV3IEIoe3ZtOm4sa2V5OmUsdmFsdWU6cixwYXJlbnQ6aX0pfX1mdW5jdGlvbiBmKHQsbixlKXt2YXIgcj1uZXcgcSh7dm06dCxleHBPckZuOm4sY2I6ZX0pO3JldHVybiBmdW5jdGlvbigpe3IudGVhcmRvd24oKX19ZnVuY3Rpb24gbCh0LG4sZSl7XCJmdW5jdGlvblwiPT10eXBlb2YgZT8oQy5nZXQ9aCh0LG4pLEMuc2V0PU4uZik6KEMuZ2V0PWUuZ2V0PyExIT09ZS5jYWNoZT9oKHQsbik6ZS5nZXQ6Ti5mLEMuc2V0PWUuc2V0P2Uuc2V0Ok4uZikseCgpKHQsbixDKX1mdW5jdGlvbiBoKHQsbil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dC5fY29tcHV0ZWRXYXRjaGVycyYmdC5fY29tcHV0ZWRXYXRjaGVyc1tuXTtpZihlKXJldHVybiBlLmRpcnR5JiZlLmV2YWx1YXRlKCksRy50YXJnZXQmJmUuZGVwZW5kKCksZS52YWx1ZX19ZnVuY3Rpb24gcCh0LG4pe2Zvcih2YXIgZSBpbiBuKXt2YXIgcj1uW2VdO2lmKEFycmF5LmlzQXJyYXkocikpZm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspZih0LGUscltpXSk7ZWxzZSBmKHQsZSxyKX19ZnVuY3Rpb24gdih0LG4pe3ZhciBlPXQuX2NvbXB1dGVkV2F0Y2hlcnM9dygpKG51bGwpO2Zvcih2YXIgciBpbiBuKXt2YXIgaT1uW3JdLG89XCJmdW5jdGlvblwiPT10eXBlb2YgaT9pOmkuZ2V0O2Vbcl09bmV3IHEoe3ZtOnQsa2V5OnIsZXhwT3JGbjpvLG9wdGlvbnM6SH0pLHIgaW4gdC5kYXRhfHxsKHQscixpKX19ZnVuY3Rpb24gZCh0LG4pe2ooKShuKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV09bltlXX0pfWZ1bmN0aW9uIHkodCxuLGUpe0MuZ2V0PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXNbbl1bZV19LEMuc2V0PWZ1bmN0aW9uKHQpe3RoaXNbbl1bZV09dH0seCgpKHQsZSxDKX1mdW5jdGlvbiBnKHQpe3ZhciBuLGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O249XCJmdW5jdGlvblwiPT10eXBlb2YgZT9lLmNhbGwodCk6ZSx0Ll9kYXRhPW4saigpKG4pLmZvckVhY2goZnVuY3Rpb24obil7eSh0LFwiX2RhdGFcIixuKX0pLHMoe3ZtOnQsa2V5OlwiXCIsdmFsdWU6bixwYXJlbnQ6XCJcIn0pfWZ1bmN0aW9uIG0odCl7dC5tZXRob2RzJiZkKHQsdC5tZXRob2RzKSxnKHQsdC5kYXRhKSx0LmNvbXB1dGVkJiZ2KHQsdC5jb21wdXRlZCksdC53YXRjaCYmcCh0LHQud2F0Y2gpLHQuJHRocm90dGxlQ2xlYXIoKX1lLmQobixcImFcIixmdW5jdGlvbigpe3JldHVybiB6fSksbi5iPW07dmFyIF89ZSgxNTIpLHc9ZS5uKF8pLGI9ZSgxMDApLHg9ZS5uKGIpLFM9ZSg0NjkpLE89ZS5uKFMpLFA9ZSg0NzIpLGs9ZS5uKFApLEU9ZSg3Myksaj1lLm4oRSksQT1lKDE0NiksTT1lLm4oQSksVD1lKDE0NyksRj1lLm4oVCksTD1lKDQ4NyksST1lLm4oTCksTj1lKDIxMSksRD1lKDQ5MSksUj1JKCkoRC5hKSxDPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6Ti5mLHNldDpOLmZ9LFU9MCxHPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe00oKSh0aGlzLHQpLHRoaXMuaWQ9VSsrLHRoaXMuc3Vicz1bXX1yZXR1cm4gRigpKHQsW3trZXk6XCJhZGRTdWJcIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLnN1YnMucHVzaCh0KX19LHtrZXk6XCJyZW1vdmVTdWJcIix2YWx1ZTpmdW5jdGlvbih0KXtPYmplY3QoTi5oKSh0aGlzLnN1YnMsdCl9fSx7a2V5OlwiZGVwZW5kXCIsdmFsdWU6ZnVuY3Rpb24oKXt0LnRhcmdldCYmdC50YXJnZXQuYWRkRGVwKHRoaXMpfX0se2tleTpcIm5vdGlmeVwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuc3Vicy5zbGljZSgpLG49MCxlPXQubGVuZ3RoO248ZTtuKyspdFtuXS51cGRhdGUoKX19XSksdH0oKTtHLnRhcmdldD1udWxsO3ZhciBXPVtdLFY9ZnVuY3Rpb24odCxuKXt2YXIgZT1cIlwiO2lmKG4mJihlPW4uX19vYl9fLnBhdGgpKXtlPU9iamVjdChOLmQpKHQpP1wiXCIuY29uY2F0KGUsXCJbXCIpLmNvbmNhdCh0LFwiXVwiKTpcIlwiLmNvbmNhdChlLFwiLlwiKS5jb25jYXQodCk7Zm9yKHZhciByPVwiXCIsaT0wO2k8ZS5sZW5ndGgmJlwiLlwiIT09ZVtpXSYmXCJbXCIhPT1lW2ldOylyKz1lW2krK107cmV0dXJue3BhdGg6ZSxyb290OnJ9fXJldHVybntyb290OnQscGF0aDp0fX0sQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQobil7dmFyIGU9bi52bSxvPW4ua2V5LHU9bi52YWx1ZSxhPW4ucGFyZW50O00oKSh0aGlzLHQpLHRoaXMudmFsdWU9dSx0aGlzLnZtPWUsdGhpcy5rZXk9bzt2YXIgYz1WKG8sYSk7aWYodGhpcy5yb290PWMucm9vdCx0aGlzLnBhdGg9Yy5wYXRoLHRoaXMuZGVwPW5ldyBHLE9iamVjdChOLmEpKHUsXCJfX29iX19cIix0aGlzKSxBcnJheS5pc0FycmF5KHUpKXsoTi5jP3I6aSkodSxELmEsUiksdGhpcy5vYnNlcnZlQXJyYXkodSl9ZWxzZSB0aGlzLndhbGsodSl9cmV0dXJuIEYoKSh0LFt7a2V5Olwid2Fsa1wiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj1qKCkodCksZT0wO2U8bi5sZW5ndGg7ZSsrKWEoe3ZtOnRoaXMudm0sb2JqOnQsa2V5Om5bZV0sdmFsdWU6dFtuW2VdXSxwYXJlbnQ6dH0pfX0se2tleTpcIm9ic2VydmVBcnJheVwiLHZhbHVlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgbj0wLGU9dC5sZW5ndGg7bjxlO24rKylzKHt2bTp0aGlzLnZtLGtleTpuLHZhbHVlOnRbbl0scGFyZW50OnR9KX19XSksdH0oKSxxPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChuKXt2YXIgZT1uLnZtLHI9bi5rZXksaT1uLmV4cE9yRm4sbz1uLmNiLHU9bi5vcHRpb25zO00oKSh0aGlzLHQpLHRoaXMudm09ZSx0aGlzLmtleT1yLGUuX3dhdGNoZXJzPWUuX3dhdGNoZXJzfHxbXSxlLl93YXRjaGVycy5wdXNoKHRoaXMpLHRoaXMubGF6eT0hIXUmJiEhdS5sYXp5LHRoaXMuaWQ9KytVLHRoaXMuY2I9b3x8Ti5mLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IGsuYSx0aGlzLm5ld0RlcElkcz1uZXcgay5hLFwiZnVuY3Rpb25cIj09dHlwZW9mIGk/dGhpcy5nZXR0ZXI9aToodGhpcy5nZXR0ZXI9T2JqZWN0KE4uZykoaSksdGhpcy5nZXR0ZXJ8fCh0aGlzLmdldHRlcj1OLmYpKSx0aGlzLnZhbHVlPXRoaXMuZ2V0KCksdGhpcy5kaXJ0eSYmdGhpcy52bS4kZGlydHkucHVzaCh0aGlzLmtleSx0aGlzLmtleSx0aGlzLnZhbHVlKX1yZXR1cm4gRigpKHQsW3trZXk6XCJnZXRcIix2YWx1ZTpmdW5jdGlvbigpe28odGhpcyk7dmFyIHQ9dGhpcy5nZXR0ZXIuY2FsbCh0aGlzLnZtLHRoaXMudm0pO3JldHVybiB1KCksdGhpcy5jbGVhbnVwRGVwcygpLHR9fSx7a2V5OlwiZXZhbHVhdGVcIix2YWx1ZTpmdW5jdGlvbigpe3RoaXMudmFsdWU9dGhpcy5nZXQoKSx0aGlzLmRpcnR5PSExfX0se2tleTpcImRlcGVuZFwiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuZGVwcy5sZW5ndGg7dC0tOyl0aGlzLmRlcHNbdF0uZGVwZW5kKCl9fSx7a2V5OlwiYWRkRGVwXCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIG49dC5pZDt0aGlzLm5ld0RlcElkcy5oYXMobil8fCh0aGlzLm5ld0RlcElkcy5hZGQobiksdGhpcy5uZXdEZXBzLnB1c2godCksdGhpcy5kZXBJZHMuaGFzKG4pfHx0LmFkZFN1Yih0aGlzKSl9fSx7a2V5OlwiY2xlYW51cERlcHNcIix2YWx1ZTpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLmRlcHMubGVuZ3RoO3QtLTspe3ZhciBuPXRoaXMuZGVwc1t0XTt0aGlzLm5ld0RlcElkcy5oYXMobi5pZCl8fG4ucmVtb3ZlU3ViKHRoaXMpfXZhciBlPXRoaXMuZGVwSWRzO3RoaXMuZGVwSWRzPXRoaXMubmV3RGVwSWRzLHRoaXMubmV3RGVwSWRzPWUsdGhpcy5uZXdEZXBJZHMuY2xlYXIoKSxlPXRoaXMuZGVwcyx0aGlzLmRlcHM9dGhpcy5uZXdEZXBzLHRoaXMubmV3RGVwcz1lLHRoaXMubmV3RGVwcy5sZW5ndGg9MH19LHtrZXk6XCJ1cGRhdGVcIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMubGF6eSl7dGhpcy5kaXJ0eT0hMDt2YXIgdD10aGlzLmdldCgpO3RoaXMudmFsdWUhPT10JiYodGhpcy52YWx1ZT10LHRoaXMudm0uJGRpcnR5LnB1c2godGhpcy5rZXksdGhpcy5rZXksdCkpfWVsc2UgdGhpcy5ydW4oKX19LHtrZXk6XCJydW5cIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXt2YXIgdD10aGlzLmdldCgpLG49dGhpcy52YWx1ZTt0aGlzLnZhbHVlPXQsdGhpcy5jYi5jYWxsKHRoaXMudm0sdCxuKX19fSx7a2V5OlwidGVhcmRvd25cIix2YWx1ZTpmdW5jdGlvbigpe2lmKHRoaXMuYWN0aXZlKXtPYmplY3QoTi5oKSh0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIHQ9dGhpcy5kZXBzLmxlbmd0aDt0LS07KXRoaXMuZGVwc1t0XS5yZW1vdmVTdWIodGhpcyk7dGhpcy5hY3RpdmU9ITF9fX1dKSx0fSgpLHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KG4pe00oKSh0aGlzLHQpLHRoaXMucmVzZXQoKSx0aGlzLnR5cGU9bnx8XCJwYXRoXCIsdGhpcy5hY3RpdmU9ITB9cmV0dXJuIEYoKSh0LFt7a2V5OlwicHVzaFwiLHZhbHVlOmZ1bmN0aW9uKHQsbixlKXt0aGlzLmFjdGl2ZSYmKHRoaXMuX3BhdGhbbl09ZSx0aGlzLl9sZW5ndGgrKyl9fSx7a2V5OlwicG9wXCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD13KCkobnVsbCk7cmV0dXJuXCJwYXRoXCI9PT10aGlzLnR5cGU/dD10aGlzLl9wYXRoOnRoaXMudHlwZSx0aGlzLnJlc2V0KCksdH19LHtrZXk6XCJyZXNldFwiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fcGF0aD17fSx0aGlzLl9sZW5ndGg9MH19LHtrZXk6XCJsZW5ndGhcIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9sZW5ndGh9fSx7a2V5OlwidmFjdW9cIix2YWx1ZTpmdW5jdGlvbih0KXt0aGlzLmFjdGl2ZT0hMSxcImZ1bmN0aW9uXCI9PXR5cGVvZiB0JiZ0KCksdGhpcy5hY3RpdmU9ITB9fV0pLHR9KCksSD17bGF6eTohMH19LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0NzApfSxmdW5jdGlvbih0LG4sZSl7ZSg0NzEpO3ZhciByPWUoNikuT2JqZWN0O3QuZXhwb3J0cz1mdW5jdGlvbih0LG4pe3JldHVybiByLmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pfX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoNTQpLGk9ZSgxNTEpLmY7ZSg5OSkoXCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JcIixmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbih0LG4pe3JldHVybiBpKHIodCksbil9fSl9LGZ1bmN0aW9uKHQsbixlKXt0LmV4cG9ydHM9ZSg0NzMpfSxmdW5jdGlvbih0LG4sZSl7ZSgxNDEpLGUoNTkpLGUoNzEpLGUoNDc0KSxlKDQ4MCksZSg0ODMpLGUoNDg1KSx0LmV4cG9ydHM9ZSg2KS5TZXR9LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDQ3NSksaT1lKDIxMCksbz1cIlNldFwiO3QuZXhwb3J0cz1lKDQ3NikobyxmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdCh0aGlzLGFyZ3VtZW50cy5sZW5ndGg+MD9hcmd1bWVudHNbMF06dm9pZCAwKX19LHthZGQ6ZnVuY3Rpb24odCl7cmV0dXJuIHIuZGVmKGkodGhpcyxvKSx0PTA9PT10PzA6dCx0KX19LHIpfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgyNSkuZixpPWUoOTEpLG89ZSgxNDQpLHU9ZSgzNyksYT1lKDE0MiksYz1lKDcyKSxzPWUoMTMwKSxmPWUoMTk3KSxsPWUoMjAzKSxoPWUoMzMpLHA9ZSgxNDkpLmZhc3RLZXksdj1lKDIxMCksZD1oP1wiX3NcIjpcInNpemVcIix5PWZ1bmN0aW9uKHQsbil7dmFyIGUscj1wKG4pO2lmKFwiRlwiIT09cilyZXR1cm4gdC5faVtyXTtmb3IoZT10Ll9mO2U7ZT1lLm4paWYoZS5rPT1uKXJldHVybiBlfTt0LmV4cG9ydHM9e2dldENvbnN0cnVjdG9yOmZ1bmN0aW9uKHQsbixlLHMpe3ZhciBmPXQoZnVuY3Rpb24odCxyKXthKHQsZixuLFwiX2lcIiksdC5fdD1uLHQuX2k9aShudWxsKSx0Ll9mPXZvaWQgMCx0Ll9sPXZvaWQgMCx0W2RdPTAsdm9pZCAwIT1yJiZjKHIsZSx0W3NdLHQpfSk7cmV0dXJuIG8oZi5wcm90b3R5cGUse2NsZWFyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXYodGhpcyxuKSxlPXQuX2kscj10Ll9mO3I7cj1yLm4pci5yPSEwLHIucCYmKHIucD1yLnAubj12b2lkIDApLGRlbGV0ZSBlW3IuaV07dC5fZj10Ll9sPXZvaWQgMCx0W2RdPTB9LGRlbGV0ZTpmdW5jdGlvbih0KXt2YXIgZT12KHRoaXMsbikscj15KGUsdCk7aWYocil7dmFyIGk9ci5uLG89ci5wO2RlbGV0ZSBlLl9pW3IuaV0sci5yPSEwLG8mJihvLm49aSksaSYmKGkucD1vKSxlLl9mPT1yJiYoZS5fZj1pKSxlLl9sPT1yJiYoZS5fbD1vKSxlW2RdLS19cmV0dXJuISFyfSxmb3JFYWNoOmZ1bmN0aW9uKHQpe3YodGhpcyxuKTtmb3IodmFyIGUscj11KHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsMyk7ZT1lP2Uubjp0aGlzLl9mOylmb3IocihlLnYsZS5rLHRoaXMpO2UmJmUucjspZT1lLnB9LGhhczpmdW5jdGlvbih0KXtyZXR1cm4hIXkodih0aGlzLG4pLHQpfX0pLGgmJnIoZi5wcm90b3R5cGUsXCJzaXplXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB2KHRoaXMsbilbZF19fSksZn0sZGVmOmZ1bmN0aW9uKHQsbixlKXt2YXIgcixpLG89eSh0LG4pO3JldHVybiBvP28udj1lOih0Ll9sPW89e2k6aT1wKG4sITApLGs6bix2OmUscDpyPXQuX2wsbjp2b2lkIDAscjohMX0sdC5fZnx8KHQuX2Y9byksciYmKHIubj1vKSx0W2RdKyssXCJGXCIhPT1pJiYodC5faVtpXT1vKSksdH0sZ2V0RW50cnk6eSxzZXRTdHJvbmc6ZnVuY3Rpb24odCxuLGUpe3ModCxuLGZ1bmN0aW9uKHQsZSl7dGhpcy5fdD12KHQsbiksdGhpcy5faz1lLHRoaXMuX2w9dm9pZCAwfSxmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLG49dC5fayxlPXQuX2w7ZSYmZS5yOyllPWUucDtyZXR1cm4gdC5fdCYmKHQuX2w9ZT1lP2Uubjp0Ll90Ll9mKT9cImtleXNcIj09bj9mKDAsZS5rKTpcInZhbHVlc1wiPT1uP2YoMCxlLnYpOmYoMCxbZS5rLGUudl0pOih0Ll90PXZvaWQgMCxmKDEpKX0sZT9cImVudHJpZXNcIjpcInZhbHVlc1wiLCFlLCEwKSxsKG4pfX19LGZ1bmN0aW9uKHQsbixlKXtcInVzZSBzdHJpY3RcIjt2YXIgcj1lKDE0KSxpPWUoMTIpLG89ZSgxNDkpLHU9ZSg1MiksYT1lKDQwKSxjPWUoMTQ0KSxzPWUoNzIpLGY9ZSgxNDIpLGw9ZSgyNiksaD1lKDcwKSxwPWUoMjUpLmYsdj1lKDQ3NykoMCksZD1lKDMzKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuLGUseSxnLG0pe3ZhciBfPXJbdF0sdz1fLGI9Zz9cInNldFwiOlwiYWRkXCIseD13JiZ3LnByb3RvdHlwZSxTPXt9O3JldHVybiBkJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiB3JiYobXx8eC5mb3JFYWNoJiYhdShmdW5jdGlvbigpeyhuZXcgdykuZW50cmllcygpLm5leHQoKX0pKT8odz1uKGZ1bmN0aW9uKG4sZSl7ZihuLHcsdCxcIl9jXCIpLG4uX2M9bmV3IF8sdm9pZCAwIT1lJiZzKGUsZyxuW2JdLG4pfSksdihcImFkZCxjbGVhcixkZWxldGUsZm9yRWFjaCxnZXQsaGFzLHNldCxrZXlzLHZhbHVlcyxlbnRyaWVzLHRvSlNPTlwiLnNwbGl0KFwiLFwiKSxmdW5jdGlvbih0KXt2YXIgbj1cImFkZFwiPT10fHxcInNldFwiPT10O3QgaW4geCYmKCFtfHxcImNsZWFyXCIhPXQpJiZhKHcucHJvdG90eXBlLHQsZnVuY3Rpb24oZSxyKXtpZihmKHRoaXMsdyx0KSwhbiYmbSYmIWwoZSkpcmV0dXJuXCJnZXRcIj09dCYmdm9pZCAwO3ZhciBpPXRoaXMuX2NbdF0oMD09PWU/MDplLHIpO3JldHVybiBuP3RoaXM6aX0pfSksbXx8cCh3LnByb3RvdHlwZSxcInNpemVcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2Muc2l6ZX19KSk6KHc9eS5nZXRDb25zdHJ1Y3RvcihuLHQsZyxiKSxjKHcucHJvdG90eXBlLGUpLG8uTkVFRD0hMCksaCh3LHQpLFNbdF09dyxpKGkuRytpLlcraS5GLFMpLG18fHkuc2V0U3Ryb25nKHcsdCxnKSx3fX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoMzcpLGk9ZSgxMzMpLG89ZSg2MSksdT1lKDkyKSxhPWUoNDc4KTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgZT0xPT10LGM9Mj09dCxzPTM9PXQsZj00PT10LGw9Nj09dCxoPTU9PXR8fGwscD1ufHxhO3JldHVybiBmdW5jdGlvbihuLGEsdil7Zm9yKHZhciBkLHksZz1vKG4pLG09aShnKSxfPXIoYSx2LDMpLHc9dShtLmxlbmd0aCksYj0wLHg9ZT9wKG4sdyk6Yz9wKG4sMCk6dm9pZCAwO3c+YjtiKyspaWYoKGh8fGIgaW4gbSkmJihkPW1bYl0seT1fKGQsYixnKSx0KSlpZihlKXhbYl09eTtlbHNlIGlmKHkpc3dpdGNoKHQpe2Nhc2UgMzpyZXR1cm4hMDtjYXNlIDU6cmV0dXJuIGQ7Y2FzZSA2OnJldHVybiBiO2Nhc2UgMjp4LnB1c2goZCl9ZWxzZSBpZihmKXJldHVybiExO3JldHVybiBsPy0xOnN8fGY/Zjp4fX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDQ3OSk7dC5leHBvcnRzPWZ1bmN0aW9uKHQsbil7cmV0dXJuIG5ldyhyKHQpKShuKX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDI2KSxpPWUoMjA2KSxvPWUoMTMpKFwic3BlY2llc1wiKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7dmFyIG47cmV0dXJuIGkodCkmJihuPXQuY29uc3RydWN0b3IsXCJmdW5jdGlvblwiIT10eXBlb2Ygbnx8biE9PUFycmF5JiYhaShuLnByb3RvdHlwZSl8fChuPXZvaWQgMCkscihuKSYmbnVsbD09PShuPW5bb10pJiYobj12b2lkIDApKSx2b2lkIDA9PT1uP0FycmF5Om59fSxmdW5jdGlvbih0LG4sZSl7dmFyIHI9ZSgxMik7cihyLlArci5SLFwiU2V0XCIse3RvSlNPTjplKDQ4MSkoXCJTZXRcIil9KX0sZnVuY3Rpb24odCxuLGUpe3ZhciByPWUoOTQpLGk9ZSg0ODIpO3QuZXhwb3J0cz1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtpZihyKHRoaXMpIT10KXRocm93IFR5cGVFcnJvcih0K1wiI3RvSlNPTiBpc24ndCBnZW5lcmljXCIpO3JldHVybiBpKHRoaXMpfX19LGZ1bmN0aW9uKHQsbixlKXt2YXIgcj1lKDcyKTt0LmV4cG9ydHM9ZnVuY3Rpb24odCxuKXt2YXIgZT1bXTtyZXR1cm4gcih0LCExLGUucHVzaCxlLG4pLGV9fSxmdW5jdGlvbih0LG4sZSl7ZSg0ODQpKFwiU2V0XCIpfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgxMik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3Ioci5TLHQse29mOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkodCk7dC0tOyluW3RdPWFyZ3VtZW50c1t0XTtyZXR1cm4gbmV3IHRoaXMobil9fSl9fSxmdW5jdGlvbih0LG4sZSl7ZSg0ODYpKFwiU2V0XCIpfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSgxMiksaT1lKDY2KSxvPWUoMzcpLHU9ZSg3Mik7dC5leHBvcnRzPWZ1bmN0aW9uKHQpe3Ioci5TLHQse2Zyb206ZnVuY3Rpb24odCl7dmFyIG4sZSxyLGEsYz1hcmd1bWVudHNbMV07cmV0dXJuIGkodGhpcyksbj12b2lkIDAhPT1jLG4mJmkoYyksdm9pZCAwPT10P25ldyB0aGlzOihlPVtdLG4/KHI9MCxhPW8oYyxhcmd1bWVudHNbMl0sMiksdSh0LCExLGZ1bmN0aW9uKHQpe2UucHVzaChhKHQscisrKSl9KSk6dSh0LCExLGUucHVzaCxlKSxuZXcgdGhpcyhlKSl9fSl9fSxmdW5jdGlvbih0LG4sZSl7dC5leHBvcnRzPWUoNDg4KX0sZnVuY3Rpb24odCxuLGUpe2UoNDg5KTt2YXIgcj1lKDYpLk9iamVjdDt0LmV4cG9ydHM9ZnVuY3Rpb24odCl7cmV0dXJuIHIuZ2V0T3duUHJvcGVydHlOYW1lcyh0KX19LGZ1bmN0aW9uKHQsbixlKXtlKDk5KShcImdldE93blByb3BlcnR5TmFtZXNcIixmdW5jdGlvbigpe3JldHVybiBlKDIwNykuZn0pfSxmdW5jdGlvbih0LG4sZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIHI9ZSg2Mik7ZS5uKHIpLGUoMjEyKX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UuZChuLFwiYVwiLGZ1bmN0aW9uKCl7cmV0dXJuIGF9KTt2YXIgcj1lKDE1MiksaT1lLm4ociksbz1lKDIxMSksdT1BcnJheS5wcm90b3R5cGUsYT1pKCkodSk7W1wicHVzaFwiLFwicG9wXCIsXCJzaGlmdFwiLFwidW5zaGlmdFwiLFwic3BsaWNlXCIsXCJzb3J0XCIsXCJyZXZlcnNlXCJdLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49dVt0XTtPYmplY3Qoby5hKShhLHQsZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxpPTA7aTxlO2krKylyW2ldPWFyZ3VtZW50c1tpXTt2YXIgbyx1PW4uYXBwbHkodGhpcyxyKSxhPXRoaXMuX19vYl9fLGM9YS52bTtzd2l0Y2goXCJwdXNoXCIhPT10JiZjLiRkaXJ0eS5wdXNoKGEua2V5LGEucGF0aCxhLnZhbHVlKSx0KXtjYXNlXCJwdXNoXCI6Yy4kZGlydHkucHVzaChhLmtleSxcIlwiLmNvbmNhdChhLnBhdGgsXCJbXCIpLmNvbmNhdCh1LTEsXCJdXCIpLHJbMF0pO2JyZWFrO2Nhc2VcInVuc2hpZnRcIjpvPWEudmFsdWU7YnJlYWs7Y2FzZVwic3BsaWNlXCI6bz1yLnNsaWNlKDIpfXJldHVybiBvJiZhLm9ic2VydmVBcnJheShhLmtleSxvKSxhLmRlcC5ub3RpZnkoKSx1fSl9KX0sZnVuY3Rpb24odCxuLGUpe1widXNlIHN0cmljdFwiO2UuZChuLFwiYVwiLGZ1bmN0aW9uKCl7cmV0dXJuIG99KTt2YXIgcj1lKDIwOSksaT1lLm4ociksbz1mdW5jdGlvbih0KXt2YXIgbj10Lnd4LGU9KHQuaXNTd2FuLHQuaXNNeSk7cmV0dXJue2dldFN0b3JhZ2VTeW5jOmZ1bmN0aW9uKHQpe2lmKGUpcmV0dXJuIG4uZ2V0U3RvcmFnZVN5bmMoe2tleTp0fSkuZGF0YTt0cnl7cmV0dXJuIG4uZ2V0U3RvcmFnZVN5bmModCl9Y2F0Y2godCl7cmV0dXJuIG51bGx9fSxzZXRTdG9yYWdlU3luYzpmdW5jdGlvbih0LHIpe3JldHVybiBlP24uc2V0U3RvcmFnZVN5bmMoe2tleTp0LGRhdGE6cn0pOm4uc2V0U3RvcmFnZVN5bmModCxyKX0sc2hvd01vZGFsOmZ1bmN0aW9uKHQpe2U/bi5hbGVydChpKCkoe30sdCx7dGl0bGU6dC50aXRsZSxjb250ZW50OnQuY29udGVudH0pKTpuLnNob3dNb2RhbChpKCkoe30sdCkpfSxzaG93TG9hZGluZzpmdW5jdGlvbih0KXtlP24uc2hvd0xvYWRpbmcoaSgpKHt9LHQse2NvbnRlbnQ6dC50aXRsZX0pKTpuLnNob3dMb2FkaW5nKGkoKSh7fSx0KSl9LGhpZGVMb2FkaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIG4uaGlkZUxvYWRpbmcuYXBwbHkobixhcmd1bWVudHMpfX19fV0pOyIsIm1vZHVsZS5leHBvcnRzID0gc2VsZi5BRkFwcFg7Il0sInNvdXJjZVJvb3QiOiIifQ== |
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function (exports, require, module, __filename, __dirname, process, global, Buffer) { return function (exports, require, module, __filename, __dirname) { /******/ (function(modules) { // webpackBootstrap | |
| /******/ // The module cache | |
| /******/ var installedModules = {}; | |
| /******/ | |
| /******/ // The require function | |
| /******/ function __we |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment