react-carbon-checkout
Version:
React component for Carbon payment checkout.
283 lines (262 loc) • 34.1 kB
JavaScript
module.exports = function (e) {
var r = {};
function t(n) {
if (r[n]) return r[n].exports;
var o = r[n] = {
i: n,
l: !1,
exports: {}
};
return e[n].call(o.exports, o, o.exports, t), o.l = !0, o.exports;
}
return t.m = e, t.c = r, t.d = function (e, r, n) {
t.o(e, r) || Object.defineProperty(e, r, {
enumerable: !0,
get: n
});
}, t.r = function (e) {
"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
value: "Module"
}), Object.defineProperty(e, "__esModule", {
value: !0
});
}, t.t = function (e, r) {
if (1 & r && (e = t(e)), 8 & r) return e;
if (4 & r && "object" == typeof e && e && e.__esModule) return e;
var n = Object.create(null);
if (t.r(n), Object.defineProperty(n, "default", {
enumerable: !0,
value: e
}), 2 & r && "string" != typeof e) for (var o in e) t.d(n, o, function (r) {
return e[r];
}.bind(null, o));
return n;
}, t.n = function (e) {
var r = e && e.__esModule ? function () {
return e.default;
} : function () {
return e;
};
return t.d(r, "a", r), r;
}, t.o = function (e, r) {
return Object.prototype.hasOwnProperty.call(e, r);
}, t.p = "", t(t.s = 3);
}([function (e, r, t) {
e.exports = t(4)();
}, function (e, r) {
e.exports = require("react");
}, function (e, r, t) {
"use strict";
Object.defineProperty(r, "__esModule", {
value: !0
});
var n,
o = function () {
function e(e, r) {
for (var t = 0; t < r.length; t++) {
var n = r[t];
n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
}
}
return function (r, t, n) {
return t && e(r.prototype, t), n && e(r, n), r;
};
}(),
i = (n = t(1)) && n.__esModule ? n : {
default: n
},
c = t(0),
u = function (e) {
function r(e) {
!function (e, r) {
if (!(e instanceof r)) throw new TypeError("Cannot call a class as a function");
}(this, r);
var t = function (e, r) {
if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
return !r || "object" != typeof r && "function" != typeof r ? e : r;
}(this, (r.__proto__ || Object.getPrototypeOf(r)).call(this, e));
return t.scriptLoaderId = "id" + t.constructor.idCount++, t;
}
return function (e, r) {
if ("function" != typeof r && null !== r) throw new TypeError("Super expression must either be null or a function, not " + typeof r);
e.prototype = Object.create(r && r.prototype, {
constructor: {
value: e,
enumerable: !1,
writable: !0,
configurable: !0
}
}), r && (Object.setPrototypeOf ? Object.setPrototypeOf(e, r) : e.__proto__ = r);
}(r, e), o(r, [{
key: "componentDidMount",
value: function () {
var e = this.props,
r = e.onError,
t = e.onLoad,
n = e.url;
this.constructor.loadedScripts[n] ? t() : this.constructor.erroredScripts[n] ? r() : this.constructor.scriptObservers[n] ? this.constructor.scriptObservers[n][this.scriptLoaderId] = this.props : (this.constructor.scriptObservers[n] = function (e, r, t) {
return r in e ? Object.defineProperty(e, r, {
value: t,
enumerable: !0,
configurable: !0,
writable: !0
}) : e[r] = t, e;
}({}, this.scriptLoaderId, this.props), this.createScript());
}
}, {
key: "componentWillUnmount",
value: function () {
var e = this.props.url,
r = this.constructor.scriptObservers[e];
r && delete r[this.scriptLoaderId];
}
}, {
key: "createScript",
value: function () {
var e = this,
r = this.props,
t = r.onCreate,
n = r.url,
o = r.attributes,
i = document.createElement("script");
t(), o && Object.keys(o).forEach(function (e) {
return i.setAttribute(e, o[e]);
}), i.src = n, i.hasAttribute("async") || (i.async = 1);
var c = function (r) {
var t = e.constructor.scriptObservers[n];
Object.keys(t).forEach(function (o) {
r(t[o]) && delete e.constructor.scriptObservers[n][e.scriptLoaderId];
});
};
i.onload = function () {
e.constructor.loadedScripts[n] = !0, c(function (e) {
return e.onLoad(), !0;
});
}, i.onerror = function () {
e.constructor.erroredScripts[n] = !0, c(function (e) {
return e.onError(), !0;
});
}, document.body.appendChild(i);
}
}, {
key: "render",
value: function () {
return null;
}
}]), r;
}(i.default.Component);
u.propTypes = {
attributes: c.PropTypes.object,
onCreate: c.PropTypes.func,
onError: c.PropTypes.func.isRequired,
onLoad: c.PropTypes.func.isRequired,
url: c.PropTypes.string.isRequired
}, u.defaultProps = {
attributes: {},
onCreate: function () {},
onError: function () {},
onLoad: function () {}
}, u.scriptObservers = {}, u.loadedScripts = {}, u.erroredScripts = {}, u.idCount = 0, r.default = u, e.exports = r.default;
}, function (e, r, t) {
"use strict";
t.r(r);
var n = t(1),
o = t.n(n),
i = t(2),
c = t.n(i),
u = t(0),
a = t.n(u),
s = function (e) {
var r = e.className,
t = e.clientName,
n = e.environment,
i = e.currency,
u = e.total,
a = e.apiKey,
s = e.c12Id,
p = e.paymentGateway,
f = e.onEvent,
l = e.onError,
d = e.onLoad;
return o.a.createElement("div", {
id: "carbon_fiber_checkout",
className: r
}, o.a.createElement(c.a, {
url: "https://d2xxy1rwbjzckp.cloudfront.net/carbonCheckout.js.min.gz",
onError: function () {
console.error("There was an issue loading the carbon fiber checkout script");
},
onLoad: function () {
window.CarbonCheckout && (window.CF = window.CarbonCheckout, window.CF.default.carbonCheckout.render({
clientName: t,
environment: n,
currency: i,
total: u,
apiKey: a,
c12Id: s,
paymentGateway: p,
onEvent: f,
onError: l,
targetContainerId: "carbon_fiber_checkout"
}), d && d());
}
}));
};
s.propTypes = {
apiKey: a.a.string.isRequired,
environment: a.a.oneOf(["sandbox", "production"]).isRequired,
clientName: a.a.string.isRequired,
currency: a.a.string.isRequired,
total: a.a.string.isRequired,
paymentGateway: a.a.bool,
c12Id: a.a.string.isRequired,
onEvent: a.a.func,
onError: a.a.func,
onLoad: a.a.func,
className: a.a.string
}, r.default = s;
}, function (e, r, t) {
"use strict";
var n = t(5);
function o() {}
function i() {}
i.resetWarningCache = o, e.exports = function () {
function e(e, r, t, o, i, c) {
if (c !== n) {
var u = new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");
throw u.name = "Invariant Violation", u;
}
}
function r() {
return e;
}
e.isRequired = e;
var t = {
array: e,
bool: e,
func: e,
number: e,
object: e,
string: e,
symbol: e,
any: e,
arrayOf: r,
element: e,
elementType: e,
instanceOf: r,
node: e,
objectOf: r,
oneOf: r,
oneOfType: r,
shape: r,
exact: r,
checkPropTypes: i,
resetWarningCache: o
};
return t.PropTypes = t, t;
};
}, function (e, r, t) {
"use strict";
e.exports = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";
}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2J1aWxkL2luZGV4LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJlIiwiciIsInQiLCJuIiwibyIsImkiLCJsIiwiY2FsbCIsIm0iLCJjIiwiZCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJfX2VzTW9kdWxlIiwiY3JlYXRlIiwiYmluZCIsImRlZmF1bHQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwicmVxdWlyZSIsImxlbmd0aCIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwia2V5IiwidSIsIlR5cGVFcnJvciIsIlJlZmVyZW5jZUVycm9yIiwiX19wcm90b19fIiwiZ2V0UHJvdG90eXBlT2YiLCJzY3JpcHRMb2FkZXJJZCIsImNvbnN0cnVjdG9yIiwiaWRDb3VudCIsInNldFByb3RvdHlwZU9mIiwicHJvcHMiLCJvbkVycm9yIiwib25Mb2FkIiwidXJsIiwibG9hZGVkU2NyaXB0cyIsImVycm9yZWRTY3JpcHRzIiwic2NyaXB0T2JzZXJ2ZXJzIiwiY3JlYXRlU2NyaXB0Iiwib25DcmVhdGUiLCJhdHRyaWJ1dGVzIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwia2V5cyIsImZvckVhY2giLCJzZXRBdHRyaWJ1dGUiLCJzcmMiLCJoYXNBdHRyaWJ1dGUiLCJhc3luYyIsIm9ubG9hZCIsIm9uZXJyb3IiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJDb21wb25lbnQiLCJwcm9wVHlwZXMiLCJQcm9wVHlwZXMiLCJvYmplY3QiLCJmdW5jIiwiaXNSZXF1aXJlZCIsInN0cmluZyIsImRlZmF1bHRQcm9wcyIsImEiLCJjbGFzc05hbWUiLCJjbGllbnROYW1lIiwiZW52aXJvbm1lbnQiLCJjdXJyZW5jeSIsInRvdGFsIiwiYXBpS2V5IiwiYzEySWQiLCJwYXltZW50R2F0ZXdheSIsImYiLCJvbkV2ZW50IiwiaWQiLCJjb25zb2xlIiwiZXJyb3IiLCJ3aW5kb3ciLCJDYXJib25DaGVja291dCIsIkNGIiwiY2FyYm9uQ2hlY2tvdXQiLCJyZW5kZXIiLCJ0YXJnZXRDb250YWluZXJJZCIsIm9uZU9mIiwiYm9vbCIsInJlc2V0V2FybmluZ0NhY2hlIiwiRXJyb3IiLCJuYW1lIiwiYXJyYXkiLCJudW1iZXIiLCJzeW1ib2wiLCJhbnkiLCJhcnJheU9mIiwiZWxlbWVudCIsImVsZW1lbnRUeXBlIiwiaW5zdGFuY2VPZiIsIm5vZGUiLCJvYmplY3RPZiIsIm9uZU9mVHlwZSIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFlLFVBQVNDLENBQVQsRUFBVztBQUFDLE1BQUlDLENBQUMsR0FBQyxFQUFOOztBQUFTLFdBQVNDLENBQVQsQ0FBV0MsQ0FBWCxFQUFhO0FBQUMsUUFBR0YsQ0FBQyxDQUFDRSxDQUFELENBQUosRUFBUSxPQUFPRixDQUFDLENBQUNFLENBQUQsQ0FBRCxDQUFLSixPQUFaO0FBQW9CLFFBQUlLLENBQUMsR0FBQ0gsQ0FBQyxDQUFDRSxDQUFELENBQUQsR0FBSztBQUFDRSxNQUFBQSxDQUFDLEVBQUNGLENBQUg7QUFBS0csTUFBQUEsQ0FBQyxFQUFDLENBQUMsQ0FBUjtBQUFVUCxNQUFBQSxPQUFPLEVBQUM7QUFBbEIsS0FBWDtBQUFpQyxXQUFPQyxDQUFDLENBQUNHLENBQUQsQ0FBRCxDQUFLSSxJQUFMLENBQVVILENBQUMsQ0FBQ0wsT0FBWixFQUFvQkssQ0FBcEIsRUFBc0JBLENBQUMsQ0FBQ0wsT0FBeEIsRUFBZ0NHLENBQWhDLEdBQW1DRSxDQUFDLENBQUNFLENBQUYsR0FBSSxDQUFDLENBQXhDLEVBQTBDRixDQUFDLENBQUNMLE9BQW5EO0FBQTJEOztBQUFBLFNBQU9HLENBQUMsQ0FBQ00sQ0FBRixHQUFJUixDQUFKLEVBQU1FLENBQUMsQ0FBQ08sQ0FBRixHQUFJUixDQUFWLEVBQVlDLENBQUMsQ0FBQ1EsQ0FBRixHQUFJLFVBQVNWLENBQVQsRUFBV0MsQ0FBWCxFQUFhRSxDQUFiLEVBQWU7QUFBQ0QsSUFBQUEsQ0FBQyxDQUFDRSxDQUFGLENBQUlKLENBQUosRUFBTUMsQ0FBTixLQUFVVSxNQUFNLENBQUNDLGNBQVAsQ0FBc0JaLENBQXRCLEVBQXdCQyxDQUF4QixFQUEwQjtBQUFDWSxNQUFBQSxVQUFVLEVBQUMsQ0FBQyxDQUFiO0FBQWVDLE1BQUFBLEdBQUcsRUFBQ1g7QUFBbkIsS0FBMUIsQ0FBVjtBQUEyRCxHQUEzRixFQUE0RkQsQ0FBQyxDQUFDRCxDQUFGLEdBQUksVUFBU0QsQ0FBVCxFQUFXO0FBQUMsbUJBQWEsT0FBT2UsTUFBcEIsSUFBNEJBLE1BQU0sQ0FBQ0MsV0FBbkMsSUFBZ0RMLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlosQ0FBdEIsRUFBd0JlLE1BQU0sQ0FBQ0MsV0FBL0IsRUFBMkM7QUFBQ0MsTUFBQUEsS0FBSyxFQUFDO0FBQVAsS0FBM0MsQ0FBaEQsRUFBNkdOLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlosQ0FBdEIsRUFBd0IsWUFBeEIsRUFBcUM7QUFBQ2lCLE1BQUFBLEtBQUssRUFBQyxDQUFDO0FBQVIsS0FBckMsQ0FBN0c7QUFBOEosR0FBMVEsRUFBMlFmLENBQUMsQ0FBQ0EsQ0FBRixHQUFJLFVBQVNGLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUMsUUFBRyxJQUFFQSxDQUFGLEtBQU1ELENBQUMsR0FBQ0UsQ0FBQyxDQUFDRixDQUFELENBQVQsR0FBYyxJQUFFQyxDQUFuQixFQUFxQixPQUFPRCxDQUFQO0FBQVMsUUFBRyxJQUFFQyxDQUFGLElBQUssWUFBVSxPQUFPRCxDQUF0QixJQUF5QkEsQ0FBekIsSUFBNEJBLENBQUMsQ0FBQ2tCLFVBQWpDLEVBQTRDLE9BQU9sQixDQUFQO0FBQVMsUUFBSUcsQ0FBQyxHQUFDUSxNQUFNLENBQUNRLE1BQVAsQ0FBYyxJQUFkLENBQU47QUFBMEIsUUFBR2pCLENBQUMsQ0FBQ0QsQ0FBRixDQUFJRSxDQUFKLEdBQU9RLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlQsQ0FBdEIsRUFBd0IsU0FBeEIsRUFBa0M7QUFBQ1UsTUFBQUEsVUFBVSxFQUFDLENBQUMsQ0FBYjtBQUFlSSxNQUFBQSxLQUFLLEVBQUNqQjtBQUFyQixLQUFsQyxDQUFQLEVBQWtFLElBQUVDLENBQUYsSUFBSyxZQUFVLE9BQU9ELENBQTNGLEVBQTZGLEtBQUksSUFBSUksQ0FBUixJQUFhSixDQUFiLEVBQWVFLENBQUMsQ0FBQ1EsQ0FBRixDQUFJUCxDQUFKLEVBQU1DLENBQU4sRUFBUSxVQUFTSCxDQUFULEVBQVc7QUFBQyxhQUFPRCxDQUFDLENBQUNDLENBQUQsQ0FBUjtBQUFZLEtBQXhCLENBQXlCbUIsSUFBekIsQ0FBOEIsSUFBOUIsRUFBbUNoQixDQUFuQyxDQUFSO0FBQStDLFdBQU9ELENBQVA7QUFBUyxHQUE5aUIsRUFBK2lCRCxDQUFDLENBQUNDLENBQUYsR0FBSSxVQUFTSCxDQUFULEVBQVc7QUFBQyxRQUFJQyxDQUFDLEdBQUNELENBQUMsSUFBRUEsQ0FBQyxDQUFDa0IsVUFBTCxHQUFnQixZQUFVO0FBQUMsYUFBT2xCLENBQUMsQ0FBQ3FCLE9BQVQ7QUFBaUIsS0FBNUMsR0FBNkMsWUFBVTtBQUFDLGFBQU9yQixDQUFQO0FBQVMsS0FBdkU7QUFBd0UsV0FBT0UsQ0FBQyxDQUFDUSxDQUFGLENBQUlULENBQUosRUFBTSxHQUFOLEVBQVVBLENBQVYsR0FBYUEsQ0FBcEI7QUFBc0IsR0FBN3BCLEVBQThwQkMsQ0FBQyxDQUFDRSxDQUFGLEdBQUksVUFBU0osQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxXQUFPVSxNQUFNLENBQUNXLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDaEIsSUFBaEMsQ0FBcUNQLENBQXJDLEVBQXVDQyxDQUF2QyxDQUFQO0FBQWlELEdBQWp1QixFQUFrdUJDLENBQUMsQ0FBQ3NCLENBQUYsR0FBSSxFQUF0dUIsRUFBeXVCdEIsQ0FBQyxDQUFDQSxDQUFDLENBQUN1QixDQUFGLEdBQUksQ0FBTCxDQUFqdkI7QUFBeXZCLENBQXA1QixDQUFxNUIsQ0FBQyxVQUFTekIsQ0FBVCxFQUFXQyxDQUFYLEVBQWFDLENBQWIsRUFBZTtBQUFDRixFQUFBQSxDQUFDLENBQUNELE9BQUYsR0FBVUcsQ0FBQyxDQUFDLENBQUQsQ0FBRCxFQUFWO0FBQWlCLENBQWxDLEVBQW1DLFVBQVNGLENBQVQsRUFBV0MsQ0FBWCxFQUFhO0FBQUNELEVBQUFBLENBQUMsQ0FBQ0QsT0FBRixHQUFVMkIsT0FBTyxDQUFDLE9BQUQsQ0FBakI7QUFBMkIsQ0FBNUUsRUFBNkUsVUFBUzFCLENBQVQsRUFBV0MsQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQzs7QUFBYVMsRUFBQUEsTUFBTSxDQUFDQyxjQUFQLENBQXNCWCxDQUF0QixFQUF3QixZQUF4QixFQUFxQztBQUFDZ0IsSUFBQUEsS0FBSyxFQUFDLENBQUM7QUFBUixHQUFyQzs7QUFBaUQsTUFBSWQsQ0FBSjtBQUFBLE1BQU1DLENBQUMsR0FBQyxZQUFVO0FBQUMsYUFBU0osQ0FBVCxDQUFXQSxDQUFYLEVBQWFDLENBQWIsRUFBZTtBQUFDLFdBQUksSUFBSUMsQ0FBQyxHQUFDLENBQVYsRUFBWUEsQ0FBQyxHQUFDRCxDQUFDLENBQUMwQixNQUFoQixFQUF1QnpCLENBQUMsRUFBeEIsRUFBMkI7QUFBQyxZQUFJQyxDQUFDLEdBQUNGLENBQUMsQ0FBQ0MsQ0FBRCxDQUFQO0FBQVdDLFFBQUFBLENBQUMsQ0FBQ1UsVUFBRixHQUFhVixDQUFDLENBQUNVLFVBQUYsSUFBYyxDQUFDLENBQTVCLEVBQThCVixDQUFDLENBQUN5QixZQUFGLEdBQWUsQ0FBQyxDQUE5QyxFQUFnRCxXQUFVekIsQ0FBVixLQUFjQSxDQUFDLENBQUMwQixRQUFGLEdBQVcsQ0FBQyxDQUExQixDQUFoRCxFQUE2RWxCLE1BQU0sQ0FBQ0MsY0FBUCxDQUFzQlosQ0FBdEIsRUFBd0JHLENBQUMsQ0FBQzJCLEdBQTFCLEVBQThCM0IsQ0FBOUIsQ0FBN0U7QUFBOEc7QUFBQzs7QUFBQSxXQUFPLFVBQVNGLENBQVQsRUFBV0MsQ0FBWCxFQUFhQyxDQUFiLEVBQWU7QUFBQyxhQUFPRCxDQUFDLElBQUVGLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDcUIsU0FBSCxFQUFhcEIsQ0FBYixDQUFKLEVBQW9CQyxDQUFDLElBQUVILENBQUMsQ0FBQ0MsQ0FBRCxFQUFHRSxDQUFILENBQXhCLEVBQThCRixDQUFyQztBQUF1QyxLQUE5RDtBQUErRCxHQUFoUCxFQUFSO0FBQUEsTUFBMlBJLENBQUMsR0FBQyxDQUFDRixDQUFDLEdBQUNELENBQUMsQ0FBQyxDQUFELENBQUosS0FBVUMsQ0FBQyxDQUFDZSxVQUFaLEdBQXVCZixDQUF2QixHQUF5QjtBQUFDa0IsSUFBQUEsT0FBTyxFQUFDbEI7QUFBVCxHQUF0UjtBQUFBLE1BQWtTTSxDQUFDLEdBQUNQLENBQUMsQ0FBQyxDQUFELENBQXJTO0FBQUEsTUFBeVM2QixDQUFDLEdBQUMsVUFBUy9CLENBQVQsRUFBVztBQUFDLGFBQVNDLENBQVQsQ0FBV0QsQ0FBWCxFQUFhO0FBQUMsT0FBQyxVQUFTQSxDQUFULEVBQVdDLENBQVgsRUFBYTtBQUFDLFlBQUcsRUFBRUQsQ0FBQyxZQUFZQyxDQUFmLENBQUgsRUFBcUIsTUFBTSxJQUFJK0IsU0FBSixDQUFjLG1DQUFkLENBQU47QUFBeUQsT0FBNUYsQ0FBNkYsSUFBN0YsRUFBa0cvQixDQUFsRyxDQUFEOztBQUFzRyxVQUFJQyxDQUFDLEdBQUMsVUFBU0YsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxZQUFHLENBQUNELENBQUosRUFBTSxNQUFNLElBQUlpQyxjQUFKLENBQW1CLDJEQUFuQixDQUFOO0FBQXNGLGVBQU0sQ0FBQ2hDLENBQUQsSUFBSSxZQUFVLE9BQU9BLENBQWpCLElBQW9CLGNBQVksT0FBT0EsQ0FBM0MsR0FBNkNELENBQTdDLEdBQStDQyxDQUFyRDtBQUF1RCxPQUFqSyxDQUFrSyxJQUFsSyxFQUF1SyxDQUFDQSxDQUFDLENBQUNpQyxTQUFGLElBQWF2QixNQUFNLENBQUN3QixjQUFQLENBQXNCbEMsQ0FBdEIsQ0FBZCxFQUF3Q00sSUFBeEMsQ0FBNkMsSUFBN0MsRUFBa0RQLENBQWxELENBQXZLLENBQU47O0FBQW1PLGFBQU9FLENBQUMsQ0FBQ2tDLGNBQUYsR0FBaUIsT0FBS2xDLENBQUMsQ0FBQ21DLFdBQUYsQ0FBY0MsT0FBZCxFQUF0QixFQUE4Q3BDLENBQXJEO0FBQXVEOztBQUFBLFdBQU8sVUFBU0YsQ0FBVCxFQUFXQyxDQUFYLEVBQWE7QUFBQyxVQUFHLGNBQVksT0FBT0EsQ0FBbkIsSUFBc0IsU0FBT0EsQ0FBaEMsRUFBa0MsTUFBTSxJQUFJK0IsU0FBSixDQUFjLDZEQUEyRCxPQUFPL0IsQ0FBaEYsQ0FBTjtBQUF5RkQsTUFBQUEsQ0FBQyxDQUFDc0IsU0FBRixHQUFZWCxNQUFNLENBQUNRLE1BQVAsQ0FBY2xCLENBQUMsSUFBRUEsQ0FBQyxDQUFDcUIsU0FBbkIsRUFBNkI7QUFBQ2UsUUFBQUEsV0FBVyxFQUFDO0FBQUNwQixVQUFBQSxLQUFLLEVBQUNqQixDQUFQO0FBQVNhLFVBQUFBLFVBQVUsRUFBQyxDQUFDLENBQXJCO0FBQXVCZ0IsVUFBQUEsUUFBUSxFQUFDLENBQUMsQ0FBakM7QUFBbUNELFVBQUFBLFlBQVksRUFBQyxDQUFDO0FBQWpEO0FBQWIsT0FBN0IsQ0FBWixFQUE0RzNCLENBQUMsS0FBR1UsTUFBTSxDQUFDNEIsY0FBUCxHQUFzQjVCLE1BQU0sQ0FBQzRCLGNBQVAsQ0FBc0J2QyxDQUF0QixFQUF3QkMsQ0FBeEIsQ0FBdEIsR0FBaURELENBQUMsQ0FBQ2tDLFNBQUYsR0FBWWpDLENBQWhFLENBQTdHO0FBQWdMLEtBQXpULENBQTBUQSxDQUExVCxFQUE0VEQsQ0FBNVQsR0FBK1RJLENBQUMsQ0FBQ0gsQ0FBRCxFQUFHLENBQUM7QUFBQzZCLE1BQUFBLEdBQUcsRUFBQyxtQkFBTDtBQUF5QmIsTUFBQUEsS0FBSyxFQUFDLFlBQVU7QUFBQyxZQUFJakIsQ0FBQyxHQUFDLEtBQUt3QyxLQUFYO0FBQUEsWUFBaUJ2QyxDQUFDLEdBQUNELENBQUMsQ0FBQ3lDLE9BQXJCO0FBQUEsWUFBNkJ2QyxDQUFDLEdBQUNGLENBQUMsQ0FBQzBDLE1BQWpDO0FBQUEsWUFBd0N2QyxDQUFDLEdBQUNILENBQUMsQ0FBQzJDLEdBQTVDO0FBQWdELGFBQUtOLFdBQUwsQ0FBaUJPLGFBQWpCLENBQStCekMsQ0FBL0IsSUFBa0NELENBQUMsRUFBbkMsR0FBc0MsS0FBS21DLFdBQUwsQ0FBaUJRLGNBQWpCLENBQWdDMUMsQ0FBaEMsSUFBbUNGLENBQUMsRUFBcEMsR0FBdUMsS0FBS29DLFdBQUwsQ0FBaUJTLGVBQWpCLENBQWlDM0MsQ0FBakMsSUFBb0MsS0FBS2tDLFdBQUwsQ0FBaUJTLGVBQWpCLENBQWlDM0MsQ0FBakMsRUFBb0MsS0FBS2lDLGNBQXpDLElBQXlELEtBQUtJLEtBQWxHLElBQXlHLEtBQUtILFdBQUwsQ0FBaUJTLGVBQWpCLENBQWlDM0MsQ0FBakMsSUFBb0MsVUFBU0gsQ0FBVCxFQUFXQyxDQUFYLEVBQWFDLENBQWIsRUFBZTtBQUFDLGlCQUFPRCxDQUFDLElBQUlELENBQUwsR0FBT1csTUFBTSxDQUFDQyxjQUFQLENBQXNCWixDQUF0QixFQUF3QkMsQ0FBeEIsRUFBMEI7QUFBQ2dCLFlBQUFBLEtBQUssRUFBQ2YsQ0FBUDtBQUFTVyxZQUFBQSxVQUFVLEVBQUMsQ0FBQyxDQUFyQjtBQUF1QmUsWUFBQUEsWUFBWSxFQUFDLENBQUMsQ0FBckM7QUFBdUNDLFlBQUFBLFFBQVEsRUFBQyxDQUFDO0FBQWpELFdBQTFCLENBQVAsR0FBc0Y3QixDQUFDLENBQUNDLENBQUQsQ0FBRCxHQUFLQyxDQUEzRixFQUE2RkYsQ0FBcEc7QUFBc0csU0FBdEgsQ0FBdUgsRUFBdkgsRUFBMEgsS0FBS29DLGNBQS9ILEVBQThJLEtBQUtJLEtBQW5KLENBQXBDLEVBQThMLEtBQUtPLFlBQUwsRUFBdlMsQ0FBN0U7QUFBeVk7QUFBbmUsS0FBRCxFQUFzZTtBQUFDakIsTUFBQUEsR0FBRyxFQUFDLHNCQUFMO0FBQTRCYixNQUFBQSxLQUFLLEVBQUMsWUFBVTtBQUFDLFlBQUlqQixDQUFDLEdBQUMsS0FBS3dDLEtBQUwsQ0FBV0csR0FBakI7QUFBQSxZQUFxQjFDLENBQUMsR0FBQyxLQUFLb0MsV0FBTCxDQUFpQlMsZUFBakIsQ0FBaUM5QyxDQUFqQyxDQUF2QjtBQUEyREMsUUFBQUEsQ0FBQyxJQUFFLE9BQU9BLENBQUMsQ0FBQyxLQUFLbUMsY0FBTixDQUFYO0FBQWlDO0FBQXpJLEtBQXRlLEVBQWluQjtBQUFDTixNQUFBQSxHQUFHLEVBQUMsY0FBTDtBQUFvQmIsTUFBQUEsS0FBSyxFQUFDLFlBQVU7QUFBQyxZQUFJakIsQ0FBQyxHQUFDLElBQU47QUFBQSxZQUFXQyxDQUFDLEdBQUMsS0FBS3VDLEtBQWxCO0FBQUEsWUFBd0J0QyxDQUFDLEdBQUNELENBQUMsQ0FBQytDLFFBQTVCO0FBQUEsWUFBcUM3QyxDQUFDLEdBQUNGLENBQUMsQ0FBQzBDLEdBQXpDO0FBQUEsWUFBNkN2QyxDQUFDLEdBQUNILENBQUMsQ0FBQ2dELFVBQWpEO0FBQUEsWUFBNEQ1QyxDQUFDLEdBQUM2QyxRQUFRLENBQUNDLGFBQVQsQ0FBdUIsUUFBdkIsQ0FBOUQ7QUFBK0ZqRCxRQUFBQSxDQUFDLElBQUdFLENBQUMsSUFBRU8sTUFBTSxDQUFDeUMsSUFBUCxDQUFZaEQsQ0FBWixFQUFlaUQsT0FBZixDQUF3QixVQUFTckQsQ0FBVCxFQUFXO0FBQUMsaUJBQU9LLENBQUMsQ0FBQ2lELFlBQUYsQ0FBZXRELENBQWYsRUFBaUJJLENBQUMsQ0FBQ0osQ0FBRCxDQUFsQixDQUFQO0FBQThCLFNBQWxFLENBQU4sRUFBMkVLLENBQUMsQ0FBQ2tELEdBQUYsR0FBTXBELENBQWpGLEVBQW1GRSxDQUFDLENBQUNtRCxZQUFGLENBQWUsT0FBZixNQUEwQm5ELENBQUMsQ0FBQ29ELEtBQUYsR0FBUSxDQUFsQyxDQUFwRjs7QUFBeUgsWUFBSWhELENBQUMsR0FBQyxVQUFTUixDQUFULEVBQVc7QUFBQyxjQUFJQyxDQUFDLEdBQUNGLENBQUMsQ0FBQ3FDLFdBQUYsQ0FBY1MsZUFBZCxDQUE4QjNDLENBQTlCLENBQU47QUFBdUNRLFVBQUFBLE1BQU0sQ0FBQ3lDLElBQVAsQ0FBWWxELENBQVosRUFBZW1ELE9BQWYsQ0FBd0IsVUFBU2pELENBQVQsRUFBVztBQUFDSCxZQUFBQSxDQUFDLENBQUNDLENBQUMsQ0FBQ0UsQ0FBRCxDQUFGLENBQUQsSUFBUyxPQUFPSixDQUFDLENBQUNxQyxXQUFGLENBQWNTLGVBQWQsQ0FBOEIzQyxDQUE5QixFQUFpQ0gsQ0FBQyxDQUFDb0MsY0FBbkMsQ0FBaEI7QUFBbUUsV0FBdkc7QUFBMEcsU0FBbks7O0FBQW9LL0IsUUFBQUEsQ0FBQyxDQUFDcUQsTUFBRixHQUFTLFlBQVU7QUFBQzFELFVBQUFBLENBQUMsQ0FBQ3FDLFdBQUYsQ0FBY08sYUFBZCxDQUE0QnpDLENBQTVCLElBQStCLENBQUMsQ0FBaEMsRUFBa0NNLENBQUMsQ0FBRSxVQUFTVCxDQUFULEVBQVc7QUFBQyxtQkFBT0EsQ0FBQyxDQUFDMEMsTUFBRixJQUFXLENBQUMsQ0FBbkI7QUFBcUIsV0FBbkMsQ0FBbkM7QUFBeUUsU0FBN0YsRUFBOEZyQyxDQUFDLENBQUNzRCxPQUFGLEdBQVUsWUFBVTtBQUFDM0QsVUFBQUEsQ0FBQyxDQUFDcUMsV0FBRixDQUFjUSxjQUFkLENBQTZCMUMsQ0FBN0IsSUFBZ0MsQ0FBQyxDQUFqQyxFQUFtQ00sQ0FBQyxDQUFFLFVBQVNULENBQVQsRUFBVztBQUFDLG1CQUFPQSxDQUFDLENBQUN5QyxPQUFGLElBQVksQ0FBQyxDQUFwQjtBQUFzQixXQUFwQyxDQUFwQztBQUEyRSxTQUE5TCxFQUErTFMsUUFBUSxDQUFDVSxJQUFULENBQWNDLFdBQWQsQ0FBMEJ4RCxDQUExQixDQUEvTDtBQUE0TjtBQUE3bkIsS0FBam5CLEVBQWd2QztBQUFDeUIsTUFBQUEsR0FBRyxFQUFDLFFBQUw7QUFBY2IsTUFBQUEsS0FBSyxFQUFDLFlBQVU7QUFBQyxlQUFPLElBQVA7QUFBWTtBQUEzQyxLQUFodkMsQ0FBSCxDQUFoVSxFQUFrbURoQixDQUF6bUQ7QUFBMm1ELEdBQXJnRSxDQUFzZ0VJLENBQUMsQ0FBQ2dCLE9BQUYsQ0FBVXlDLFNBQWhoRSxDQUEzUzs7QUFBczBFL0IsRUFBQUEsQ0FBQyxDQUFDZ0MsU0FBRixHQUFZO0FBQUNkLElBQUFBLFVBQVUsRUFBQ3hDLENBQUMsQ0FBQ3VELFNBQUYsQ0FBWUMsTUFBeEI7QUFBK0JqQixJQUFBQSxRQUFRLEVBQUN2QyxDQUFDLENBQUN1RCxTQUFGLENBQVlFLElBQXBEO0FBQXlEekIsSUFBQUEsT0FBTyxFQUFDaEMsQ0FBQyxDQUFDdUQsU0FBRixDQUFZRSxJQUFaLENBQWlCQyxVQUFsRjtBQUE2RnpCLElBQUFBLE1BQU0sRUFBQ2pDLENBQUMsQ0FBQ3VELFNBQUYsQ0FBWUUsSUFBWixDQUFpQkMsVUFBckg7QUFBZ0l4QixJQUFBQSxHQUFHLEVBQUNsQyxDQUFDLENBQUN1RCxTQUFGLENBQVlJLE1BQVosQ0FBbUJEO0FBQXZKLEdBQVosRUFBK0twQyxDQUFDLENBQUNzQyxZQUFGLEdBQWU7QUFBQ3BCLElBQUFBLFVBQVUsRUFBQyxFQUFaO0FBQWVELElBQUFBLFFBQVEsRUFBQyxZQUFVLENBQUUsQ0FBcEM7QUFBcUNQLElBQUFBLE9BQU8sRUFBQyxZQUFVLENBQUUsQ0FBekQ7QUFBMERDLElBQUFBLE1BQU0sRUFBQyxZQUFVLENBQUU7QUFBN0UsR0FBOUwsRUFBNlFYLENBQUMsQ0FBQ2UsZUFBRixHQUFrQixFQUEvUixFQUFrU2YsQ0FBQyxDQUFDYSxhQUFGLEdBQWdCLEVBQWxULEVBQXFUYixDQUFDLENBQUNjLGNBQUYsR0FBaUIsRUFBdFUsRUFBeVVkLENBQUMsQ0FBQ08sT0FBRixHQUFVLENBQW5WLEVBQXFWckMsQ0FBQyxDQUFDb0IsT0FBRixHQUFVVSxDQUEvVixFQUFpVy9CLENBQUMsQ0FBQ0QsT0FBRixHQUFVRSxDQUFDLENBQUNvQixPQUE3VztBQUFxWCxDQUF0MUYsRUFBdTFGLFVBQVNyQixDQUFULEVBQVdDLENBQVgsRUFBYUMsQ0FBYixFQUFlO0FBQUM7O0FBQWFBLEVBQUFBLENBQUMsQ0FBQ0QsQ0FBRixDQUFJQSxDQUFKOztBQUFPLE1BQUlFLENBQUMsR0FBQ0QsQ0FBQyxDQUFDLENBQUQsQ0FBUDtBQUFBLE1BQVdFLENBQUMsR0FBQ0YsQ0FBQyxDQUFDQyxDQUFGLENBQUlBLENBQUosQ0FBYjtBQUFBLE1BQW9CRSxDQUFDLEdBQUNILENBQUMsQ0FBQyxDQUFELENBQXZCO0FBQUEsTUFBMkJPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDQyxDQUFGLENBQUlFLENBQUosQ0FBN0I7QUFBQSxNQUFvQzBCLENBQUMsR0FBQzdCLENBQUMsQ0FBQyxDQUFELENBQXZDO0FBQUEsTUFBMkNvRSxDQUFDLEdBQUNwRSxDQUFDLENBQUNDLENBQUYsQ0FBSTRCLENBQUosQ0FBN0M7QUFBQSxNQUFvRE4sQ0FBQyxHQUFDLFVBQVN6QixDQUFULEVBQVc7QUFBQyxRQUFJQyxDQUFDLEdBQUNELENBQUMsQ0FBQ3VFLFNBQVI7QUFBQSxRQUFrQnJFLENBQUMsR0FBQ0YsQ0FBQyxDQUFDd0UsVUFBdEI7QUFBQSxRQUFpQ3JFLENBQUMsR0FBQ0gsQ0FBQyxDQUFDeUUsV0FBckM7QUFBQSxRQUFpRHBFLENBQUMsR0FBQ0wsQ0FBQyxDQUFDMEUsUUFBckQ7QUFBQSxRQUE4RDNDLENBQUMsR0FBQy9CLENBQUMsQ0FBQzJFLEtBQWxFO0FBQUEsUUFBd0VMLENBQUMsR0FBQ3RFLENBQUMsQ0FBQzRFLE1BQTVFO0FBQUEsUUFBbUZuRCxDQUFDLEdBQUN6QixDQUFDLENBQUM2RSxLQUF2RjtBQUFBLFFBQTZGckQsQ0FBQyxHQUFDeEIsQ0FBQyxDQUFDOEUsY0FBakc7QUFBQSxRQUFnSEMsQ0FBQyxHQUFDL0UsQ0FBQyxDQUFDZ0YsT0FBcEg7QUFBQSxRQUE0SDFFLENBQUMsR0FBQ04sQ0FBQyxDQUFDeUMsT0FBaEk7QUFBQSxRQUF3SS9CLENBQUMsR0FBQ1YsQ0FBQyxDQUFDMEMsTUFBNUk7QUFBbUosV0FBT3RDLENBQUMsQ0FBQ2tFLENBQUYsQ0FBSW5CLGFBQUosQ0FBa0IsS0FBbEIsRUFBd0I7QUFBQzhCLE1BQUFBLEVBQUUsRUFBQyx1QkFBSjtBQUE0QlYsTUFBQUEsU0FBUyxFQUFDdEU7QUFBdEMsS0FBeEIsRUFBaUVHLENBQUMsQ0FBQ2tFLENBQUYsQ0FBSW5CLGFBQUosQ0FBa0IxQyxDQUFDLENBQUM2RCxDQUFwQixFQUFzQjtBQUFDM0IsTUFBQUEsR0FBRyxFQUFDLGdFQUFMO0FBQXNFRixNQUFBQSxPQUFPLEVBQUMsWUFBVTtBQUFDeUMsUUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWMsNkRBQWQ7QUFBNkUsT0FBdEs7QUFBdUt6QyxNQUFBQSxNQUFNLEVBQUMsWUFBVTtBQUFDMEMsUUFBQUEsTUFBTSxDQUFDQyxjQUFQLEtBQXdCRCxNQUFNLENBQUNFLEVBQVAsR0FBVUYsTUFBTSxDQUFDQyxjQUFqQixFQUFnQ0QsTUFBTSxDQUFDRSxFQUFQLENBQVVqRSxPQUFWLENBQWtCa0UsY0FBbEIsQ0FBaUNDLE1BQWpDLENBQXdDO0FBQUNoQixVQUFBQSxVQUFVLEVBQUN0RSxDQUFaO0FBQWN1RSxVQUFBQSxXQUFXLEVBQUN0RSxDQUExQjtBQUE0QnVFLFVBQUFBLFFBQVEsRUFBQ3JFLENBQXJDO0FBQXVDc0UsVUFBQUEsS0FBSyxFQUFDNUMsQ0FBN0M7QUFBK0M2QyxVQUFBQSxNQUFNLEVBQUNOLENBQXREO0FBQXdETyxVQUFBQSxLQUFLLEVBQUNwRCxDQUE5RDtBQUFnRXFELFVBQUFBLGNBQWMsRUFBQ3RELENBQS9FO0FBQWlGd0QsVUFBQUEsT0FBTyxFQUFDRCxDQUF6RjtBQUEyRnRDLFVBQUFBLE9BQU8sRUFBQ25DLENBQW5HO0FBQXFHbUYsVUFBQUEsaUJBQWlCLEVBQUM7QUFBdkgsU0FBeEMsQ0FBaEMsRUFBeU4vRSxDQUFDLElBQUVBLENBQUMsRUFBclA7QUFBeVA7QUFBbGIsS0FBdEIsQ0FBakUsQ0FBUDtBQUFvaEIsR0FBenVCOztBQUEwdUJlLEVBQUFBLENBQUMsQ0FBQ3NDLFNBQUYsR0FBWTtBQUFDYSxJQUFBQSxNQUFNLEVBQUNOLENBQUMsQ0FBQ0EsQ0FBRixDQUFJRixNQUFKLENBQVdELFVBQW5CO0FBQThCTSxJQUFBQSxXQUFXLEVBQUNILENBQUMsQ0FBQ0EsQ0FBRixDQUFJb0IsS0FBSixDQUFVLENBQUMsU0FBRCxFQUFXLFlBQVgsQ0FBVixFQUFvQ3ZCLFVBQTlFO0FBQXlGSyxJQUFBQSxVQUFVLEVBQUNGLENBQUMsQ0FBQ0EsQ0FBRixDQUFJRixNQUFKLENBQVdELFVBQS9HO0FBQTBITyxJQUFBQSxRQUFRLEVBQUNKLENBQUMsQ0FBQ0EsQ0FBRixDQUFJRixNQUFKLENBQVdELFVBQTlJO0FBQXlKUSxJQUFBQSxLQUFLLEVBQUNMLENBQUMsQ0FBQ0EsQ0FBRixDQUFJRixNQUFKLENBQVdELFVBQTFLO0FBQXFMVyxJQUFBQSxjQUFjLEVBQUNSLENBQUMsQ0FBQ0EsQ0FBRixDQUFJcUIsSUFBeE07QUFBNk1kLElBQUFBLEtBQUssRUFBQ1AsQ0FBQyxDQUFDQSxDQUFGLENBQUlGLE1BQUosQ0FBV0QsVUFBOU47QUFBeU9hLElBQUFBLE9BQU8sRUFBQ1YsQ0FBQyxDQUFDQSxDQUFGLENBQUlKLElBQXJQO0FBQTBQekIsSUFBQUEsT0FBTyxFQUFDNkIsQ0FBQyxDQUFDQSxDQUFGLENBQUlKLElBQXRRO0FBQTJReEIsSUFBQUEsTUFBTSxFQUFDNEIsQ0FBQyxDQUFDQSxDQUFGLENBQUlKLElBQXRSO0FBQTJSSyxJQUFBQSxTQUFTLEVBQUNELENBQUMsQ0FBQ0EsQ0FBRixDQUFJRjtBQUF6UyxHQUFaLEVBQTZUbkUsQ0FBQyxDQUFDb0IsT0FBRixHQUFVSSxDQUF2VTtBQUF5VSxDQUE5NkgsRUFBKzZILFVBQVN6QixDQUFULEVBQVdDLENBQVgsRUFBYUMsQ0FBYixFQUFlO0FBQUM7O0FBQWEsTUFBSUMsQ0FBQyxHQUFDRCxDQUFDLENBQUMsQ0FBRCxDQUFQOztBQUFXLFdBQVNFLENBQVQsR0FBWSxDQUFFOztBQUFBLFdBQVNDLENBQVQsR0FBWSxDQUFFOztBQUFBQSxFQUFBQSxDQUFDLENBQUN1RixpQkFBRixHQUFvQnhGLENBQXBCLEVBQXNCSixDQUFDLENBQUNELE9BQUYsR0FBVSxZQUFVO0FBQUMsYUFBU0MsQ0FBVCxDQUFXQSxDQUFYLEVBQWFDLENBQWIsRUFBZUMsQ0FBZixFQUFpQkUsQ0FBakIsRUFBbUJDLENBQW5CLEVBQXFCSSxDQUFyQixFQUF1QjtBQUFDLFVBQUdBLENBQUMsS0FBR04sQ0FBUCxFQUFTO0FBQUMsWUFBSTRCLENBQUMsR0FBQyxJQUFJOEQsS0FBSixDQUFVLGlMQUFWLENBQU47QUFBbU0sY0FBTTlELENBQUMsQ0FBQytELElBQUYsR0FBTyxxQkFBUCxFQUE2Qi9ELENBQW5DO0FBQXFDO0FBQUM7O0FBQUEsYUFBUzlCLENBQVQsR0FBWTtBQUFDLGFBQU9ELENBQVA7QUFBUzs7QUFBQUEsSUFBQUEsQ0FBQyxDQUFDbUUsVUFBRixHQUFhbkUsQ0FBYjtBQUFlLFFBQUlFLENBQUMsR0FBQztBQUFDNkYsTUFBQUEsS0FBSyxFQUFDL0YsQ0FBUDtBQUFTMkYsTUFBQUEsSUFBSSxFQUFDM0YsQ0FBZDtBQUFnQmtFLE1BQUFBLElBQUksRUFBQ2xFLENBQXJCO0FBQXVCZ0csTUFBQUEsTUFBTSxFQUFDaEcsQ0FBOUI7QUFBZ0NpRSxNQUFBQSxNQUFNLEVBQUNqRSxDQUF2QztBQUF5Q29FLE1BQUFBLE1BQU0sRUFBQ3BFLENBQWhEO0FBQWtEaUcsTUFBQUEsTUFBTSxFQUFDakcsQ0FBekQ7QUFBMkRrRyxNQUFBQSxHQUFHLEVBQUNsRyxDQUEvRDtBQUFpRW1HLE1BQUFBLE9BQU8sRUFBQ2xHLENBQXpFO0FBQTJFbUcsTUFBQUEsT0FBTyxFQUFDcEcsQ0FBbkY7QUFBcUZxRyxNQUFBQSxXQUFXLEVBQUNyRyxDQUFqRztBQUFtR3NHLE1BQUFBLFVBQVUsRUFBQ3JHLENBQTlHO0FBQWdIc0csTUFBQUEsSUFBSSxFQUFDdkcsQ0FBckg7QUFBdUh3RyxNQUFBQSxRQUFRLEVBQUN2RyxDQUFoSTtBQUFrSXlGLE1BQUFBLEtBQUssRUFBQ3pGLENBQXhJO0FBQTBJd0csTUFBQUEsU0FBUyxFQUFDeEcsQ0FBcEo7QUFBc0p5RyxNQUFBQSxLQUFLLEVBQUN6RyxDQUE1SjtBQUE4SjBHLE1BQUFBLEtBQUssRUFBQzFHLENBQXBLO0FBQXNLMkcsTUFBQUEsY0FBYyxFQUFDdkcsQ0FBckw7QUFBdUx1RixNQUFBQSxpQkFBaUIsRUFBQ3hGO0FBQXpNLEtBQU47QUFBa04sV0FBT0YsQ0FBQyxDQUFDOEQsU0FBRixHQUFZOUQsQ0FBWixFQUFjQSxDQUFyQjtBQUF1QixHQUFwa0I7QUFBcWtCLENBQXhqSixFQUF5akosVUFBU0YsQ0FBVCxFQUFXQyxDQUFYLEVBQWFDLENBQWIsRUFBZTtBQUFDOztBQUFhRixFQUFBQSxDQUFDLENBQUNELE9BQUYsR0FBVSw4Q0FBVjtBQUF5RCxDQUEvb0osQ0FBcjVCLENBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cz1mdW5jdGlvbihlKXt2YXIgcj17fTtmdW5jdGlvbiB0KG4pe2lmKHJbbl0pcmV0dXJuIHJbbl0uZXhwb3J0czt2YXIgbz1yW25dPXtpOm4sbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gZVtuXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyx0KSxvLmw9ITAsby5leHBvcnRzfXJldHVybiB0Lm09ZSx0LmM9cix0LmQ9ZnVuY3Rpb24oZSxyLG4pe3QubyhlLHIpfHxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHtlbnVtZXJhYmxlOiEwLGdldDpufSl9LHQucj1mdW5jdGlvbihlKXtcInVuZGVmaW5lZFwiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wudG9TdHJpbmdUYWcmJk9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pfSx0LnQ9ZnVuY3Rpb24oZSxyKXtpZigxJnImJihlPXQoZSkpLDgmcilyZXR1cm4gZTtpZig0JnImJlwib2JqZWN0XCI9PXR5cGVvZiBlJiZlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZih0LnIobiksT2JqZWN0LmRlZmluZVByb3BlcnR5KG4sXCJkZWZhdWx0XCIse2VudW1lcmFibGU6ITAsdmFsdWU6ZX0pLDImciYmXCJzdHJpbmdcIiE9dHlwZW9mIGUpZm9yKHZhciBvIGluIGUpdC5kKG4sbyxmdW5jdGlvbihyKXtyZXR1cm4gZVtyXX0uYmluZChudWxsLG8pKTtyZXR1cm4gbn0sdC5uPWZ1bmN0aW9uKGUpe3ZhciByPWUmJmUuX19lc01vZHVsZT9mdW5jdGlvbigpe3JldHVybiBlLmRlZmF1bHR9OmZ1bmN0aW9uKCl7cmV0dXJuIGV9O3JldHVybiB0LmQocixcImFcIixyKSxyfSx0Lm89ZnVuY3Rpb24oZSxyKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscil9LHQucD1cIlwiLHQodC5zPTMpfShbZnVuY3Rpb24oZSxyLHQpe2UuZXhwb3J0cz10KDQpKCl9LGZ1bmN0aW9uKGUscil7ZS5leHBvcnRzPXJlcXVpcmUoXCJyZWFjdFwiKX0sZnVuY3Rpb24oZSxyLHQpe1widXNlIHN0cmljdFwiO09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiX19lc01vZHVsZVwiLHt2YWx1ZTohMH0pO3ZhciBuLG89ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUscil7Zm9yKHZhciB0PTA7dDxyLmxlbmd0aDt0Kyspe3ZhciBuPXJbdF07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsXCJ2YWx1ZVwiaW4gbiYmKG4ud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4ua2V5LG4pfX1yZXR1cm4gZnVuY3Rpb24ocix0LG4pe3JldHVybiB0JiZlKHIucHJvdG90eXBlLHQpLG4mJmUocixuKSxyfX0oKSxpPShuPXQoMSkpJiZuLl9fZXNNb2R1bGU/bjp7ZGVmYXVsdDpufSxjPXQoMCksdT1mdW5jdGlvbihlKXtmdW5jdGlvbiByKGUpeyFmdW5jdGlvbihlLHIpe2lmKCEoZSBpbnN0YW5jZW9mIHIpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIil9KHRoaXMscik7dmFyIHQ9ZnVuY3Rpb24oZSxyKXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7cmV0dXJuIXJ8fFwib2JqZWN0XCIhPXR5cGVvZiByJiZcImZ1bmN0aW9uXCIhPXR5cGVvZiByP2U6cn0odGhpcywoci5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZihyKSkuY2FsbCh0aGlzLGUpKTtyZXR1cm4gdC5zY3JpcHRMb2FkZXJJZD1cImlkXCIrdC5jb25zdHJ1Y3Rvci5pZENvdW50KyssdH1yZXR1cm4gZnVuY3Rpb24oZSxyKXtpZihcImZ1bmN0aW9uXCIhPXR5cGVvZiByJiZudWxsIT09cil0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIit0eXBlb2Ygcik7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZShyJiZyLnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksciYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSxyKTplLl9fcHJvdG9fXz1yKX0ocixlKSxvKHIsW3trZXk6XCJjb21wb25lbnREaWRNb3VudFwiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyxyPWUub25FcnJvcix0PWUub25Mb2FkLG49ZS51cmw7dGhpcy5jb25zdHJ1Y3Rvci5sb2FkZWRTY3JpcHRzW25dP3QoKTp0aGlzLmNvbnN0cnVjdG9yLmVycm9yZWRTY3JpcHRzW25dP3IoKTp0aGlzLmNvbnN0cnVjdG9yLnNjcmlwdE9ic2VydmVyc1tuXT90aGlzLmNvbnN0cnVjdG9yLnNjcmlwdE9ic2VydmVyc1tuXVt0aGlzLnNjcmlwdExvYWRlcklkXT10aGlzLnByb3BzOih0aGlzLmNvbnN0cnVjdG9yLnNjcmlwdE9ic2VydmVyc1tuXT1mdW5jdGlvbihlLHIsdCl7cmV0dXJuIHIgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLHt2YWx1ZTp0LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVtyXT10LGV9KHt9LHRoaXMuc2NyaXB0TG9hZGVySWQsdGhpcy5wcm9wcyksdGhpcy5jcmVhdGVTY3JpcHQoKSl9fSx7a2V5OlwiY29tcG9uZW50V2lsbFVubW91bnRcIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMudXJsLHI9dGhpcy5jb25zdHJ1Y3Rvci5zY3JpcHRPYnNlcnZlcnNbZV07ciYmZGVsZXRlIHJbdGhpcy5zY3JpcHRMb2FkZXJJZF19fSx7a2V5OlwiY3JlYXRlU2NyaXB0XCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHI9dGhpcy5wcm9wcyx0PXIub25DcmVhdGUsbj1yLnVybCxvPXIuYXR0cmlidXRlcyxpPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7dCgpLG8mJk9iamVjdC5rZXlzKG8pLmZvckVhY2goKGZ1bmN0aW9uKGUpe3JldHVybiBpLnNldEF0dHJpYnV0ZShlLG9bZV0pfSkpLGkuc3JjPW4saS5oYXNBdHRyaWJ1dGUoXCJhc3luY1wiKXx8KGkuYXN5bmM9MSk7dmFyIGM9ZnVuY3Rpb24ocil7dmFyIHQ9ZS5jb25zdHJ1Y3Rvci5zY3JpcHRPYnNlcnZlcnNbbl07T2JqZWN0LmtleXModCkuZm9yRWFjaCgoZnVuY3Rpb24obyl7cih0W29dKSYmZGVsZXRlIGUuY29uc3RydWN0b3Iuc2NyaXB0T2JzZXJ2ZXJzW25dW2Uuc2NyaXB0TG9hZGVySWRdfSkpfTtpLm9ubG9hZD1mdW5jdGlvbigpe2UuY29uc3RydWN0b3IubG9hZGVkU2NyaXB0c1tuXT0hMCxjKChmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkxvYWQoKSwhMH0pKX0saS5vbmVycm9yPWZ1bmN0aW9uKCl7ZS5jb25zdHJ1Y3Rvci5lcnJvcmVkU2NyaXB0c1tuXT0hMCxjKChmdW5jdGlvbihlKXtyZXR1cm4gZS5vbkVycm9yKCksITB9KSl9LGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaSl9fSx7a2V5OlwicmVuZGVyXCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19XSkscn0oaS5kZWZhdWx0LkNvbXBvbmVudCk7dS5wcm9wVHlwZXM9e2F0dHJpYnV0ZXM6Yy5Qcm9wVHlwZXMub2JqZWN0LG9uQ3JlYXRlOmMuUHJvcFR5cGVzLmZ1bmMsb25FcnJvcjpjLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsb25Mb2FkOmMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCx1cmw6Yy5Qcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWR9LHUuZGVmYXVsdFByb3BzPXthdHRyaWJ1dGVzOnt9LG9uQ3JlYXRlOmZ1bmN0aW9uKCl7fSxvbkVycm9yOmZ1bmN0aW9uKCl7fSxvbkxvYWQ6ZnVuY3Rpb24oKXt9fSx1LnNjcmlwdE9ic2VydmVycz17fSx1LmxvYWRlZFNjcmlwdHM9e30sdS5lcnJvcmVkU2NyaXB0cz17fSx1LmlkQ291bnQ9MCxyLmRlZmF1bHQ9dSxlLmV4cG9ydHM9ci5kZWZhdWx0fSxmdW5jdGlvbihlLHIsdCl7XCJ1c2Ugc3RyaWN0XCI7dC5yKHIpO3ZhciBuPXQoMSksbz10Lm4obiksaT10KDIpLGM9dC5uKGkpLHU9dCgwKSxhPXQubih1KSxzPWZ1bmN0aW9uKGUpe3ZhciByPWUuY2xhc3NOYW1lLHQ9ZS5jbGllbnROYW1lLG49ZS5lbnZpcm9ubWVudCxpPWUuY3VycmVuY3ksdT1lLnRvdGFsLGE9ZS5hcGlLZXkscz1lLmMxMklkLHA9ZS5wYXltZW50R2F0ZXdheSxmPWUub25FdmVudCxsPWUub25FcnJvcixkPWUub25Mb2FkO3JldHVybiBvLmEuY3JlYXRlRWxlbWVudChcImRpdlwiLHtpZDpcImNhcmJvbl9maWJlcl9jaGVja291dFwiLGNsYXNzTmFtZTpyfSxvLmEuY3JlYXRlRWxlbWVudChjLmEse3VybDpcImh0dHBzOi8vZDJ4eHkxcndianpja3AuY2xvdWRmcm9udC5uZXQvY2FyYm9uQ2hlY2tvdXQuanMubWluLmd6XCIsb25FcnJvcjpmdW5jdGlvbigpe2NvbnNvbGUuZXJyb3IoXCJUaGVyZSB3YXMgYW4gaXNzdWUgbG9hZGluZyB0aGUgY2FyYm9uIGZpYmVyIGNoZWNrb3V0IHNjcmlwdFwiKX0sb25Mb2FkOmZ1bmN0aW9uKCl7d2luZG93LkNhcmJvbkNoZWNrb3V0JiYod2luZG93LkNGPXdpbmRvdy5DYXJib25DaGVja291dCx3aW5kb3cuQ0YuZGVmYXVsdC5jYXJib25DaGVja291dC5yZW5kZXIoe2NsaWVudE5hbWU6dCxlbnZpcm9ubWVudDpuLGN1cnJlbmN5OmksdG90YWw6dSxhcGlLZXk6YSxjMTJJZDpzLHBheW1lbnRHYXRld2F5OnAsb25FdmVudDpmLG9uRXJyb3I6bCx0YXJnZXRDb250YWluZXJJZDpcImNhcmJvbl9maWJlcl9jaGVja291dFwifSksZCYmZCgpKX19KSl9O3MucHJvcFR5cGVzPXthcGlLZXk6YS5hLnN0cmluZy5pc1JlcXVpcmVkLGVudmlyb25tZW50OmEuYS5vbmVPZihbXCJzYW5kYm94XCIsXCJwcm9kdWN0aW9uXCJdKS5pc1JlcXVpcmVkLGNsaWVudE5hbWU6YS5hLnN0cmluZy5pc1JlcXVpcmVkLGN1cnJlbmN5OmEuYS5zdHJpbmcuaXNSZXF1aXJlZCx0b3RhbDphLmEuc3RyaW5nLmlzUmVxdWlyZWQscGF5bWVudEdhdGV3YXk6YS5hLmJvb2wsYzEySWQ6YS5hLnN0cmluZy5pc1JlcXVpcmVkLG9uRXZlbnQ6YS5hLmZ1bmMsb25FcnJvcjphLmEuZnVuYyxvbkxvYWQ6YS5hLmZ1bmMsY2xhc3NOYW1lOmEuYS5zdHJpbmd9LHIuZGVmYXVsdD1zfSxmdW5jdGlvbihlLHIsdCl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49dCg1KTtmdW5jdGlvbiBvKCl7fWZ1bmN0aW9uIGkoKXt9aS5yZXNldFdhcm5pbmdDYWNoZT1vLGUuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSxyLHQsbyxpLGMpe2lmKGMhPT1uKXt2YXIgdT1uZXcgRXJyb3IoXCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzXCIpO3Rocm93IHUubmFtZT1cIkludmFyaWFudCBWaW9sYXRpb25cIix1fX1mdW5jdGlvbiByKCl7cmV0dXJuIGV9ZS5pc1JlcXVpcmVkPWU7dmFyIHQ9e2FycmF5OmUsYm9vbDplLGZ1bmM6ZSxudW1iZXI6ZSxvYmplY3Q6ZSxzdHJpbmc6ZSxzeW1ib2w6ZSxhbnk6ZSxhcnJheU9mOnIsZWxlbWVudDplLGVsZW1lbnRUeXBlOmUsaW5zdGFuY2VPZjpyLG5vZGU6ZSxvYmplY3RPZjpyLG9uZU9mOnIsb25lT2ZUeXBlOnIsc2hhcGU6cixleGFjdDpyLGNoZWNrUHJvcFR5cGVzOmkscmVzZXRXYXJuaW5nQ2FjaGU6b307cmV0dXJuIHQuUHJvcFR5cGVzPXQsdH19LGZ1bmN0aW9uKGUscix0KXtcInVzZSBzdHJpY3RcIjtlLmV4cG9ydHM9XCJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRFwifV0pOyJdfQ==